]> git.uio.no Git - u/mrichter/AliRoot.git/blob - AliGeant4/AliTrackingAction.h
Updated class description: added class title, author;
[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 class AliTrackingActionMessenger;
14 class AliTrackInformation;
15
16 class G4Track;
17
18 class TClonesArray;
19
20 class AliTrackingAction : public TG4TrackingAction 
21 {
22   public:
23     AliTrackingAction();
24     // --> protected
25     // AliTrackingAction(const AliTrackingAction& right);
26     virtual ~AliTrackingAction();
27    
28     // static get method
29     static AliTrackingAction* Instance();
30
31     // methods
32     void PrepareNewEvent();
33     virtual void PreTrackingAction(const G4Track* aTrack);
34     virtual void PostTrackingAction(const G4Track* aTrack);
35     void FinishPrimaryTrack();
36     void SaveTrack(const G4Track* track);
37
38     // set methods
39     void SetVerboseLevel(G4int level);
40     void SetNewVerboseLevel(G4int level);
41     void SetNewVerboseTrackID(G4int trackID);
42     void SetSavePrimaries(G4bool savePrimaries);
43
44     // get methods
45     G4int GetVerboseLevel() const;
46     G4bool GetSavePrimaries() const;
47     G4int GetNofTracks() const;
48
49   protected:
50     AliTrackingAction(const AliTrackingAction& right);
51
52     // operators
53     AliTrackingAction& operator=(const AliTrackingAction& right);
54
55   private:
56     // methods
57     G4int GetParticleIndex(G4int trackID);
58     AliTrackInformation* GetTrackInformation(const G4Track* track,
59                                              const G4String& method) const;
60   
61     // static data members
62     static AliTrackingAction*    fgInstance; //this instance
63
64     // data members
65     AliTrackingActionMessenger*  fMessenger; //messenger
66     G4int   fPrimaryTrackID;   //current primary track ID 
67     G4bool  fSavePrimaries;    //control of saving primaries
68     G4int   fVerboseLevel;     //verbose level
69     G4int   fNewVerboseLevel;  //new /tracking/verbose level
70     G4int   fNewVerboseTrackID;//track ID for which new /tracking/verbose level is applied
71     G4int   fTrackCounter;     //tracks counter
72 };
73
74 // inline methods
75
76 inline AliTrackingAction* AliTrackingAction::Instance() 
77 { return fgInstance; }
78
79 inline void AliTrackingAction::SetVerboseLevel(G4int level)
80 { fVerboseLevel = level; }
81
82 inline void AliTrackingAction::SetSavePrimaries(G4bool savePrimaries)
83 { fSavePrimaries = savePrimaries; }
84
85 inline G4int AliTrackingAction::GetVerboseLevel() const
86 { return fVerboseLevel; }
87
88 inline G4bool AliTrackingAction::GetSavePrimaries() const
89 { return fSavePrimaries; }
90
91 inline G4int AliTrackingAction::GetNofTracks() const
92 { return fTrackCounter; }
93
94 #endif //ALI_TRACKING_ACTION_H