ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VPrimitiveScorer.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VPrimitiveScorer.hh
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 //
28 
29 #ifndef G4VPrimitiveScorer_h
30 #define G4VPrimitiveScorer_h 1
31 
32 class G4Step;
33 class G4HCofThisEvent;
34 class G4TouchableHistory;
35 #include "globals.hh"
36 #include "G4VSDFilter.hh"
38 
39 // class description:
40 //
41 // This is the base class of the sensitive detector which owns
42 // only one hits collection.
43 // A concrete class object derived from this base class can be
44 // used either as a sensitive detector or to be registered to
45 // G4MultiFunctionalDetector to define multiple functionalities.
46 //
47 //
48 
50 {
52 
53  public: // with description
55  virtual ~G4VPrimitiveScorer();
56 
57  protected: // with description
59  // This is the method must be implemented in each concrete class.
60 
61  virtual G4int GetIndex(G4Step*);
62  // This is a function mapping from copy number(s) to an index of
63  // the hit collection. In the default implementation, just the
64  // copy number of the physical volume is taken.
65 
66  public: // with description
68  // This method returns the ID of its hitsCollection. This mehod
69  // gives valid value only after it is registered to G4MultiFunctionalDetector
70  // and the G4MultiFunctionalDetector is registered to G4SDManager.
71 
72  virtual void Initialize(G4HCofThisEvent*);
73  virtual void EndOfEvent(G4HCofThisEvent*);
74  virtual void clear();
75  virtual void DrawAll();
76  virtual void PrintAll();
77  // These five methods are exactly identical to those in G4VSensitiveDetector.
78  // These methods are invoked by G4SDManager through G4MultiFunctionalDetector.
79 
80  void SetUnit(const G4String& unit) { unitName = unit; }
81  const G4String& GetUnit() const { return unitName; }
82  G4double GetUnitValue() const { return unitValue; }
83 
84  protected:
85  void CheckAndSetUnit(const G4String& unit,const G4String& category);
86 
87  protected:
95 
96  public: // with description
97  // Set/Get methods
99  { detector = d; }
101  { return detector; }
102  inline G4String GetName() const
103  { return primitiveName; }
104  inline void SetFilter(G4VSDFilter* f)
105  { filter = f; }
106  inline G4VSDFilter* GetFilter() const
107  { return filter; }
108  inline void SetVerboseLevel(G4int vl)
109  { verboseLevel = vl; }
110  inline G4int GetVerboseLevel() const
111  { return verboseLevel; }
112 
113  private:
115  {
116  if(filter)
117  { if(!(filter->Accept(aStep))) return false; }
118  return ProcessHits(aStep,ROhis);
119  }
120 
121  protected:
122  G4int fNi, fNj, fNk; // used for 3D scorers
123  public:
124  inline void SetNijk(G4int i,G4int j,G4int k)
125  { fNi = i; fNj = j; fNk = k; }
126 };
127 
128 
129 
130 #endif
131