]>
Commit | Line | Data |
---|---|---|
676fb573 | 1 | // $Id$ |
2 | // Category: event | |
3 | // | |
4 | // Class that takes care of storing kinematics. | |
5 | ||
6 | #ifndef ALI_TRACKING_ACTION_H | |
7 | #define ALI_TRACKING_ACTION_H | |
8 | ||
9 | #include <G4UserTrackingAction.hh> | |
10 | #include <globals.hh> | |
11 | ||
12 | #include <TClonesArray.h> | |
13 | ||
14 | class AliTrackingActionMessenger; | |
15 | ||
16 | class G4Track; | |
17 | ||
18 | class AliTrackingAction : public G4UserTrackingAction | |
19 | { | |
20 | public: | |
21 | AliTrackingAction(); | |
22 | // --> protected | |
23 | // AliTrackingAction(const AliTrackingAction& right); | |
fdfe18c5 | 24 | virtual ~AliTrackingAction(); |
676fb573 | 25 | |
26 | // static get method | |
27 | static AliTrackingAction* Instance(); | |
28 | ||
29 | // methods | |
30 | void PrepareNewEvent(); | |
31 | virtual void PreUserTrackingAction(const G4Track* aTrack); | |
32 | virtual void PostUserTrackingAction(const G4Track* aTrack); | |
33 | void SaveParticle(const G4Track* track, G4String processName); | |
34 | void SaveAndDestroyTrack(); | |
35 | ||
36 | // set methods | |
37 | void SetVerboseLevel(G4int level); | |
38 | void SetSavePrimaries(G4bool savePrimaries); | |
39 | ||
40 | // get methods | |
41 | G4int GetVerboseLevel() const; | |
42 | G4bool GetSavePrimaries() const; | |
43 | G4int GetNofPrimaryTracks() const; | |
44 | G4int GetNofSavedTracks() const; | |
45 | ||
46 | protected: | |
47 | AliTrackingAction(const AliTrackingAction& right); | |
48 | ||
49 | // operators | |
50 | AliTrackingAction& operator=(const AliTrackingAction& right); | |
51 | ||
52 | private: | |
53 | // methods | |
54 | G4int GetParticleIndex(G4int trackID); | |
55 | ||
56 | // static data members | |
57 | static AliTrackingAction* fgInstance; //this instance | |
58 | ||
59 | // data members | |
60 | TClonesArray* fParticles; //AliRun::fParticles | |
61 | G4int fPrimaryTrackID; //primary track ID | |
62 | G4bool fSavePrimaries; //control of saving primaries | |
63 | G4int fVerboseLevel; //verbose level | |
64 | G4int fPrimariesCounter; //primary particles counter | |
65 | G4int fParticlesCounter; //particles counter | |
66 | G4int fLastParticleIndex; //index of the last particle in fParticles | |
67 | AliTrackingActionMessenger* fMessenger; //messenger | |
68 | }; | |
69 | ||
70 | // inline methods | |
71 | ||
72 | inline void AliTrackingAction::SetVerboseLevel(G4int level) | |
73 | { fVerboseLevel = level; } | |
74 | ||
75 | inline void AliTrackingAction::SetSavePrimaries(G4bool savePrimaries) | |
76 | { fSavePrimaries = savePrimaries; } | |
77 | ||
78 | inline G4int AliTrackingAction::GetVerboseLevel() const | |
79 | { return fVerboseLevel; } | |
80 | ||
81 | inline G4bool AliTrackingAction::GetSavePrimaries() const | |
82 | { return fSavePrimaries; } | |
83 | ||
84 | inline G4int AliTrackingAction::GetNofPrimaryTracks() const | |
85 | { return fPrimariesCounter; } | |
86 | ||
87 | inline G4int AliTrackingAction::GetNofSavedTracks() const | |
88 | { return fParticlesCounter; } | |
89 | ||
90 | #endif //ALI_TRACKING_ACTION_H |