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;
54 G4bool IsControl() const;
55 virtual G4double GetUserMinEkine(const G4Track& track);
56 G4double GetMinEkineForGamma(const G4Track& track) const;
57 G4double GetMinEkineForElectron(const G4Track& track) const;
58 G4double GetMinEkineForEplus(const G4Track& track) const;
59 G4double GetMinEkineForChargedHadron(const G4Track& track) const;
60 G4double GetMinEkineForNeutralHadron(const G4Track& track) const;
61 G4double GetMinEkineForMuon(const G4Track& track) const;
62 G4double GetMinEkineForOther(const G4Track& track) const;
63 TG4G3ControlValue GetControl(G4VProcess* process) const;
70 void Initialize(const TG4G3CutVector& cuts,
71 const TG4G3ControlVector& controls);
73 // static data members
74 static const G4double fgkDefaultMaxStep; // default max step value
75 static G4int fgCounter; // counter
78 G4String fName; //name
79 G4bool fIsCut; //true if any cut value is set
80 G4bool fIsControl; //true if any control value is set
81 TG4G3CutVector fCutVector; //TG4CutVector
82 TG4G3ControlVector fControlVector;//TG4ControlVector
87 inline G4int TG4Limits::GetNofLimits()
90 inline G4bool TG4Limits::IsCut() const
93 inline G4bool TG4Limits::IsControl() const
94 { return fIsControl; }
96 inline void TG4Limits::SetName(const G4String& name)
99 inline G4String TG4Limits::GetName() const
102 #endif //TG4_USER_LIMITS_H