4 // Author: I. Hrivnacova
8 // G4UserLimits derived class extended with the
9 // vectors of kinetic energy cuts and control process flags
15 #include "TG4Globals.h"
17 #include "TG4G3Control.h"
18 #include "TG4G3CutVector.h"
19 #include "TG4G3ControlVector.h"
21 #include <G4UserLimits.hh>
25 class TG4Limits: public G4UserLimits
28 TG4Limits(const TG4G3CutVector& cuts, const TG4G3ControlVector& controls);
29 TG4Limits(const G4String& name,
30 const TG4G3CutVector& cuts, const TG4G3ControlVector& controls);
31 TG4Limits(const TG4Limits& right);
35 TG4Limits& operator=(const TG4Limits& right);
38 static G4int GetNofLimits();
41 void SetName(const G4String& name);
42 void SetG3Cut(TG4G3Cut cut, G4double cutValue);
43 void SetG3Control(TG4G3Control control, TG4G3ControlValue controlValue);
44 G4bool Update(const TG4G3ControlVector& controls);
45 void SetG3DefaultCuts();
46 void SetG3DefaultControls();
52 G4String GetName() const;
53 const TG4G3CutVector* GetCutVector() const;
54 const TG4G3ControlVector* GetControlVector() const;
56 G4bool IsControl() const;
57 virtual G4double GetUserMinEkine(const G4Track& track);
58 G4double GetMinEkineForGamma(const G4Track& track) const;
59 G4double GetMinEkineForElectron(const G4Track& track) const;
60 G4double GetMinEkineForEplus(const G4Track& track) const;
61 G4double GetMinEkineForChargedHadron(const G4Track& track) const;
62 G4double GetMinEkineForNeutralHadron(const G4Track& track) const;
63 G4double GetMinEkineForMuon(const G4Track& track) const;
64 G4double GetMinEkineForOther(const G4Track& track) const;
65 TG4G3ControlValue GetControl(G4VProcess* process) const;
72 void Initialize(const TG4G3CutVector& cuts,
73 const TG4G3ControlVector& controls);
75 // static data members
76 static const G4double fgkDefaultMaxStep; // default max step value
77 static G4int fgCounter; // counter
80 G4String fName; //name
81 G4bool fIsCut; //true if any cut value is set
82 G4bool fIsControl; //true if any control value is set
83 TG4G3CutVector fCutVector; //TG4CutVector
84 TG4G3ControlVector fControlVector;//TG4ControlVector
89 inline G4int TG4Limits::GetNofLimits()
92 inline G4bool TG4Limits::IsCut() const
95 inline G4bool TG4Limits::IsControl() const
96 { return fIsControl; }
98 inline void TG4Limits::SetName(const G4String& name)
101 inline G4String TG4Limits::GetName() const
104 inline const TG4G3CutVector* TG4Limits::GetCutVector() const
105 { return &fCutVector; }
107 inline const TG4G3ControlVector* TG4Limits::GetControlVector() const
108 { return &fControlVector; }
110 #endif //TG4_USER_LIMITS_H