]> git.uio.no Git - u/mrichter/AliRoot.git/blob - AliGeant4/AliTrackingAction.h
New Cluster finding macro. Used by new AliITStest.C macro.
[u/mrichter/AliRoot.git] / AliGeant4 / AliTrackingAction.h
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);
24     virtual ~AliTrackingAction();
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