4 // Class for detecting and stopping looping particles
5 // or particles that reached maximal number of steps.
7 #ifndef ALI_STEPPING_ACTION_H
8 #define ALI_STEPPING_ACTION_H
10 #include "TG4SteppingAction.h"
12 #include <G4ThreeVector.hh>
15 class AliSteppingActionMessenger;
19 class AliSteppingAction : public TG4SteppingAction
30 // AliSteppingAction(const AliSteppingAction& right);
31 virtual ~AliSteppingAction();
34 virtual void SteppingAction(const G4Step* step);
37 void SetLoopVerboseLevel(G4int level);
40 G4int GetLoopVerboseLevel() const;
43 AliSteppingAction(const AliSteppingAction& right);
46 AliSteppingAction& operator=(const AliSteppingAction& right);
50 void PrintTrackInfo(const G4Track* track) const;
52 // static data members
53 static const G4double fgkTolerance; //tolerance used in detecting
54 //of looping particles
57 G4ThreeVector fKeptStepPoint; //kept step point
58 G4int fLoopVerboseLevel; //tracking verbose level
59 //for looping particles
60 G4int fStandardVerboseLevel; //standard tracking verbose level
61 G4int fLoopStepCounter; //loop steps counter
62 AliSteppingActionMessenger* fMessenger; //messenger
67 inline void AliSteppingAction::SetLoopVerboseLevel(G4int level)
68 { fLoopVerboseLevel = level; }
70 inline G4int AliSteppingAction::GetLoopVerboseLevel() const
71 { return fLoopVerboseLevel; }
73 #endif //ALI_STEPPING_ACTION_H