8d59156f5650a8a987d83c437028fb8fa18cca43
[u/mrichter/AliRoot.git] / AliGeant4 / AliSteppingAction.h
1 // $Id$
2 // Category: event
3 //
4 // Class for detecting and stopping looping particles
5
6 #ifndef ALI_STEPPING_ACTION_H
7 #define ALI_STEPPING_ACTION_H
8
9 #include <G4UserSteppingAction.hh>
10 #include <G4ThreeVector.hh>
11 #include <globals.hh>
12
13 class AliSteppingActionMessenger;
14
15 class G4Track;
16
17 class AliSteppingAction : public G4UserSteppingAction
18 {
19   enum { 
20     kCheckNofSteps = 100,
21     kMaxNofLoopSteps = 5
22   };
23
24   public:
25     AliSteppingAction();
26     // protected
27     // AliSteppingAction(const AliSteppingAction& right);
28     virtual ~AliSteppingAction();
29
30     // methods
31     virtual void UserSteppingAction(const G4Step* step);
32     
33     // set methods
34     void SetLoopVerboseLevel(G4int level);
35     
36     // get methods
37     G4int GetLoopVerboseLevel() const;
38
39   protected:
40     AliSteppingAction(const AliSteppingAction& right);
41
42     // operators
43     AliSteppingAction& operator=(const AliSteppingAction& right);
44
45   private:
46     // methods
47     void PrintTrackInfo(const G4Track* track) const;
48   
49     // static data members
50     static const G4double fgkTolerance;    //tolerance used in detecting 
51                                            //of looping particles
52
53     // data members
54     G4ThreeVector   fKeptStepPoint;        //kept step point
55     G4int           fLoopVerboseLevel;     //tracking verbose level
56                                            //for looping particles
57     G4int           fStandardVerboseLevel; //standard tracking verbose level
58     G4int           fLoopStepCounter;      //loop steps counter
59     AliSteppingActionMessenger*  fMessenger;  //messenger
60 };
61
62 // inline methods
63
64 inline void AliSteppingAction::SetLoopVerboseLevel(G4int level)
65 { fLoopVerboseLevel = level; }
66
67 inline G4int AliSteppingAction::GetLoopVerboseLevel() const
68 { return fLoopVerboseLevel; }
69
70 #endif //ALI_STEPPING_ACTION_H
71