]> git.uio.no Git - u/mrichter/AliRoot.git/blob - AliGeant4/AliTrackingAction.h
added Configure(); corrected Construct()
[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 GetNofTracks() const;
45     G4int GetNofPrimaryTracks() const;
46     G4int GetNofSavedTracks() const;
47
48   protected:
49     AliTrackingAction(const AliTrackingAction& right);
50
51     // operators
52     AliTrackingAction& operator=(const AliTrackingAction& right);
53
54   private:
55     // methods
56     G4int GetParticleIndex(G4int trackID);
57   
58     // static data members
59     static AliTrackingAction*    fgInstance; //this instance
60
61     // data members
62     TClonesArray*  fParticles;         //AliRun::fParticles
63     G4int          fPrimaryTrackID;    //primary track ID 
64     G4bool         fSavePrimaries;     //control of saving primaries
65     G4int          fVerboseLevel;      //verbose level
66     G4int          fPrimariesCounter;  //primary particles counter
67     G4int          fParticlesCounter;  //particles counter
68     G4int          fTrackCounter;      //tracks counter
69     G4int          fLastParticleIndex; //index of the last particle in fParticles
70     AliTrackingActionMessenger*  fMessenger; //messenger
71 };
72
73 // inline methods
74
75 inline void AliTrackingAction::SetVerboseLevel(G4int level)
76 { fVerboseLevel = level; }
77
78 inline void AliTrackingAction::SetSavePrimaries(G4bool savePrimaries)
79 { fSavePrimaries = savePrimaries; }
80
81 inline G4int AliTrackingAction::GetVerboseLevel() const
82 { return fVerboseLevel; }
83
84 inline G4bool AliTrackingAction::GetSavePrimaries() const
85 { return fSavePrimaries; }
86
87 inline G4int AliTrackingAction::GetNofTracks() const
88 { return fTrackCounter; }
89
90 inline G4int AliTrackingAction::GetNofPrimaryTracks() const
91 { return fPrimariesCounter; }
92
93 inline G4int AliTrackingAction::GetNofSavedTracks() const
94 { return fParticlesCounter; }
95
96 #endif //ALI_TRACKING_ACTION_H