CMS 3D CMS Logo

ElectronLimiter.h
Go to the documentation of this file.
1 #ifndef ElectronLimiter_h
2 #define ElectronLimiter_h 1
3 
4 // V.Ivanchenko 2013/10/19
5 // step limiter and killer for e+,e- and other charged particles
6 
8 
9 #include "globals.hh"
10 #include "G4VEmProcess.hh"
11 #include "G4ParticleChangeForGamma.hh"
12 #include <vector>
13 
14 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
15 
16 class G4Step;
17 class G4Track;
18 class G4Region;
19 class G4ParticleDefinition;
20 class G4VEnergyLossProcess;
22 
23 class ElectronLimiter : public G4VEmProcess {
24 public:
25  explicit ElectronLimiter(const edm::ParameterSet &, const G4ParticleDefinition *);
26 
27  ~ElectronLimiter() override;
28 
29  G4bool IsApplicable(const G4ParticleDefinition &) override;
30 
31  void InitialiseProcess(const G4ParticleDefinition *) override;
32 
33  void StartTracking(G4Track *) override;
34 
35  G4double PostStepGetPhysicalInteractionLength(const G4Track &track,
36  G4double previousStepSize,
37  G4ForceCondition *condition) override;
38 
39  G4VParticleChange *PostStepDoIt(const G4Track &, const G4Step &) override;
40 
41  void SetTrackingCutPerRegion(std::vector<const G4Region *> &,
42  std::vector<G4double> &,
43  std::vector<G4double> &,
44  std::vector<G4double> &);
45 
46  inline void SetRangeCheckFlag(G4bool);
47 
48  inline void SetFieldCheckFlag(G4bool);
49 
50 private:
51  G4VEnergyLossProcess *ionisation_;
53  const G4ParticleDefinition *particle_;
54 
55  std::vector<const G4Region *> regions_;
56  std::vector<G4double> energyLimits_;
57  std::vector<G4double> factors_;
58  std::vector<G4double> rms_;
59 
60  G4double minStepLimit_;
61 
62  G4int nRegions_;
65  G4bool killTrack_;
66 };
67 
69 
71 
72 #endif
ElectronLimiter
Definition: ElectronLimiter.h:23
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
CMSTrackingCutModel
Definition: CMSTrackingCutModel.h:14
ElectronLimiter::SetTrackingCutPerRegion
void SetTrackingCutPerRegion(std::vector< const G4Region * > &, std::vector< G4double > &, std::vector< G4double > &, std::vector< G4double > &)
Definition: ElectronLimiter.cc:111
ElectronLimiter::IsApplicable
G4bool IsApplicable(const G4ParticleDefinition &) override
Definition: ElectronLimiter.cc:107
ElectronLimiter::rms_
std::vector< G4double > rms_
Definition: ElectronLimiter.h:58
ElectronLimiter::regions_
std::vector< const G4Region * > regions_
Definition: ElectronLimiter.h:55
ElectronLimiter::~ElectronLimiter
~ElectronLimiter() override
Definition: ElectronLimiter.cc:33
ElectronLimiter::rangeCheckFlag_
G4bool rangeCheckFlag_
Definition: ElectronLimiter.h:63
ElectronLimiter::minStepLimit_
G4double minStepLimit_
Definition: ElectronLimiter.h:60
ElectronLimiter::energyLimits_
std::vector< G4double > energyLimits_
Definition: ElectronLimiter.h:56
ElectronLimiter::trcut_
CMSTrackingCutModel * trcut_
Definition: ElectronLimiter.h:52
ElectronLimiter::SetFieldCheckFlag
void SetFieldCheckFlag(G4bool)
Definition: ElectronLimiter.h:70
ElectronLimiter::factors_
std::vector< G4double > factors_
Definition: ElectronLimiter.h:57
edm::ParameterSet
Definition: ParameterSet.h:47
ElectronLimiter::StartTracking
void StartTracking(G4Track *) override
Definition: ElectronLimiter.cc:109
ElectronLimiter::PostStepGetPhysicalInteractionLength
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition) override
Definition: ElectronLimiter.cc:53
ElectronLimiter::PostStepDoIt
G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &) override
Definition: ElectronLimiter.cc:96
ElectronLimiter::SetRangeCheckFlag
void SetRangeCheckFlag(G4bool)
Definition: ElectronLimiter.h:68
ElectronLimiter::ElectronLimiter
ElectronLimiter(const edm::ParameterSet &, const G4ParticleDefinition *)
Definition: ElectronLimiter.cc:19
heppy_batch.val
val
Definition: heppy_batch.py:351
ElectronLimiter::ionisation_
G4VEnergyLossProcess * ionisation_
Definition: ElectronLimiter.h:51
ParameterSet.h
ElectronLimiter::particle_
const G4ParticleDefinition * particle_
Definition: ElectronLimiter.h:53
ElectronLimiter::killTrack_
G4bool killTrack_
Definition: ElectronLimiter.h:65
ElectronLimiter::nRegions_
G4int nRegions_
Definition: ElectronLimiter.h:62
ElectronLimiter::InitialiseProcess
void InitialiseProcess(const G4ParticleDefinition *) override
Definition: ElectronLimiter.cc:35
ElectronLimiter::fieldCheckFlag_
G4bool fieldCheckFlag_
Definition: ElectronLimiter.h:64