]> git.uio.no Git - u/mrichter/AliRoot.git/blob - AliGeant4/AliTrackingAction.h
updated for major upgrade of TG4StepManager (more in doc/history/g4mc_event_History)
[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 "TG4TrackingAction.h"
10
11 #include <globals.hh>
12
13 #include <TClonesArray.h>
14
15 class AliTrackingActionMessenger;
16
17 class G4Track;
18
19 class AliTrackingAction : public TG4TrackingAction 
20 {
21   public:
22     AliTrackingAction();
23     // --> protected
24     // AliTrackingAction(const AliTrackingAction& right);
25     virtual ~AliTrackingAction();
26    
27     // static get method
28     static AliTrackingAction* Instance();
29
30     // methods
31     void PrepareNewEvent();
32     virtual void PreTrackingAction(const G4Track* aTrack);
33     virtual void PostTrackingAction(const G4Track* aTrack);
34     void SaveParticle(const G4Track* track, G4String processName);
35     void SaveAndDestroyTrack();
36
37     // set methods
38     void SetVerboseLevel(G4int level);
39     void SetSavePrimaries(G4bool savePrimaries);
40
41     // get methods
42     G4int GetVerboseLevel() const;
43     G4bool GetSavePrimaries() const;
44     G4int GetNofPrimaryTracks() const;
45     G4int GetNofSavedTracks() const;
46
47   protected:
48     AliTrackingAction(const AliTrackingAction& right);
49
50     // operators
51     AliTrackingAction& operator=(const AliTrackingAction& right);
52
53   private:
54     // methods
55     G4int GetParticleIndex(G4int trackID);
56   
57     // static data members
58     static AliTrackingAction*    fgInstance; //this instance
59
60     // data members
61     TClonesArray*  fParticles;         //AliRun::fParticles
62     G4int          fPrimaryTrackID;    //primary track ID 
63     G4bool         fSavePrimaries;     //control of saving primaries
64     G4int          fVerboseLevel;      //verbose level
65     G4int          fPrimariesCounter;  //primary particles counter
66     G4int          fParticlesCounter;  //particles counter
67     G4int          fLastParticleIndex; //index of the last particle in fParticles
68     AliTrackingActionMessenger*  fMessenger; //messenger
69 };
70
71 // inline methods
72
73 inline void AliTrackingAction::SetVerboseLevel(G4int level)
74 { fVerboseLevel = level; }
75
76 inline void AliTrackingAction::SetSavePrimaries(G4bool savePrimaries)
77 { fSavePrimaries = savePrimaries; }
78
79 inline G4int AliTrackingAction::GetVerboseLevel() const
80 { return fVerboseLevel; }
81
82 inline G4bool AliTrackingAction::GetSavePrimaries() const
83 { return fSavePrimaries; }
84
85 inline G4int AliTrackingAction::GetNofPrimaryTracks() const
86 { return fPrimariesCounter; }
87
88 inline G4int AliTrackingAction::GetNofSavedTracks() const
89 { return fParticlesCounter; }
90
91 #endif //ALI_TRACKING_ACTION_H