CMS 3D CMS Logo

CMSmplIonisationWithDeltaModel.h
Go to the documentation of this file.
1 //
2 // -------------------------------------------------------------------
3 //
4 // GEANT4 Class header file
5 //
6 //
7 // File name: CMSmplIonisationWithDeltaModel
8 //
9 // Author: Vladimir Ivanchenko copied from Geant4 10.5p01
10 //
11 // Creation date: 02.03.2019
12 //
13 // Class Description:
14 //
15 // Implementation of model of energy loss of the magnetic monopole
16 
17 // -------------------------------------------------------------------
18 //
19 
20 #ifndef CMSmplIonisationWithDeltaModel_h
21 #define CMSmplIonisationWithDeltaModel_h 1
22 
23 #include "G4VEmModel.hh"
24 #include "G4VEmFluctuationModel.hh"
25 #include <vector>
26 
27 class G4ParticleChangeForLoss;
28 
29 class CMSmplIonisationWithDeltaModel : public G4VEmModel, public G4VEmFluctuationModel {
30 public:
31  explicit CMSmplIonisationWithDeltaModel(G4double mCharge, const G4String& nam = "mplIonisationWithDelta");
32 
34 
35  void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
36 
37  G4double ComputeDEDXPerVolume(const G4Material*,
38  const G4ParticleDefinition*,
39  G4double kineticEnergy,
40  G4double cutEnergy) override;
41 
42  virtual G4double ComputeCrossSectionPerElectron(const G4ParticleDefinition*,
43  G4double kineticEnergy,
44  G4double cutEnergy,
45  G4double maxEnergy);
46 
47  G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*,
48  G4double kineticEnergy,
49  G4double Z,
50  G4double A,
51  G4double cutEnergy,
52  G4double maxEnergy) override;
53 
54  void SampleSecondaries(std::vector<G4DynamicParticle*>*,
55  const G4MaterialCutsCouple*,
56  const G4DynamicParticle*,
57  G4double tmin,
58  G4double maxEnergy) override;
59 
60  G4double SampleFluctuations(const G4MaterialCutsCouple*,
61  const G4DynamicParticle*,
62  G4double tmax,
63  G4double length,
64  G4double meanLoss) override;
65 
66  G4double Dispersion(const G4Material*, const G4DynamicParticle*, G4double tmax, G4double length) override;
67 
68  G4double MinEnergyCut(const G4ParticleDefinition*, const G4MaterialCutsCouple* couple) override;
69 
70  void SetParticle(const G4ParticleDefinition* p);
71 
72 protected:
73  G4double MaxSecondaryEnergy(const G4ParticleDefinition*, G4double kinEnergy) override;
74 
75 private:
76  G4double ComputeDEDXAhlen(const G4Material* material, G4double bg2, G4double cut);
77 
78  const G4ParticleDefinition* monopole;
79  G4ParticleDefinition* theElectron;
80  G4ParticleChangeForLoss* fParticleChange;
81 
82  G4double mass;
83  G4double magCharge;
84  G4double twoln10;
85  G4double betalow;
86  G4double betalim;
87  G4double beta2lim;
88  G4double bg2lim;
89  G4double chargeSquare;
90  G4double dedxlim;
91  G4int nmpl;
93 
94  static std::vector<G4double>* dedx0;
95 };
96 
97 #endif
98 
99 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
CMSmplIonisationWithDeltaModel::magCharge
G4double magCharge
Definition: CMSmplIonisationWithDeltaModel.h:83
CMSmplIonisationWithDeltaModel::fParticleChange
G4ParticleChangeForLoss * fParticleChange
Definition: CMSmplIonisationWithDeltaModel.h:80
TkAlMuonSelectors_cfi.cut
cut
Definition: TkAlMuonSelectors_cfi.py:5
muonTiming_cfi.tmin
tmin
Definition: muonTiming_cfi.py:24
CMSmplIonisationWithDeltaModel::betalow
G4double betalow
Definition: CMSmplIonisationWithDeltaModel.h:85
CMSmplIonisationWithDeltaModel::ComputeDEDXPerVolume
G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy) override
Definition: CMSmplIonisationWithDeltaModel.cc:123
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
CMSmplIonisationWithDeltaModel::theElectron
G4ParticleDefinition * theElectron
Definition: CMSmplIonisationWithDeltaModel.h:79
CMSmplIonisationWithDeltaModel::pi_hbarc2_over_mc2
G4double pi_hbarc2_over_mc2
Definition: CMSmplIonisationWithDeltaModel.h:92
CMSmplIonisationWithDeltaModel::chargeSquare
G4double chargeSquare
Definition: CMSmplIonisationWithDeltaModel.h:89
CMSmplIonisationWithDeltaModel::dedxlim
G4double dedxlim
Definition: CMSmplIonisationWithDeltaModel.h:90
CMSmplIonisationWithDeltaModel::ComputeDEDXAhlen
G4double ComputeDEDXAhlen(const G4Material *material, G4double bg2, G4double cut)
Definition: CMSmplIonisationWithDeltaModel.cc:163
CMSmplIonisationWithDeltaModel::MinEnergyCut
G4double MinEnergyCut(const G4ParticleDefinition *, const G4MaterialCutsCouple *couple) override
Definition: CMSmplIonisationWithDeltaModel.cc:117
tmax
static const double tmax[3]
Definition: CastorTimeSlew.cc:7
CMSmplIonisationWithDeltaModel::ComputeCrossSectionPerAtom
G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kineticEnergy, G4double Z, G4double A, G4double cutEnergy, G4double maxEnergy) override
Definition: CMSmplIonisationWithDeltaModel.cc:213
CMSmplIonisationWithDeltaModel::Initialise
void Initialise(const G4ParticleDefinition *, const G4DataVector &) override
Definition: CMSmplIonisationWithDeltaModel.cc:86
CMSmplIonisationWithDeltaModel
Definition: CMSmplIonisationWithDeltaModel.h:29
CMSmplIonisationWithDeltaModel::bg2lim
G4double bg2lim
Definition: CMSmplIonisationWithDeltaModel.h:88
CMSmplIonisationWithDeltaModel::mass
G4double mass
Definition: CMSmplIonisationWithDeltaModel.h:82
CMSmplIonisationWithDeltaModel::Dispersion
G4double Dispersion(const G4Material *, const G4DynamicParticle *, G4double tmax, G4double length) override
Definition: CMSmplIonisationWithDeltaModel.cc:308
CMSmplIonisationWithDeltaModel::CMSmplIonisationWithDeltaModel
CMSmplIonisationWithDeltaModel(G4double mCharge, const G4String &nam="mplIonisationWithDelta")
Definition: CMSmplIonisationWithDeltaModel.cc:40
CMSmplIonisationWithDeltaModel::SampleFluctuations
G4double SampleFluctuations(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmax, G4double length, G4double meanLoss) override
Definition: CMSmplIonisationWithDeltaModel.cc:280
CMSmplIonisationWithDeltaModel::nmpl
G4int nmpl
Definition: CMSmplIonisationWithDeltaModel.h:91
CMSmplIonisationWithDeltaModel::ComputeCrossSectionPerElectron
virtual G4double ComputeCrossSectionPerElectron(const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy)
Definition: CMSmplIonisationWithDeltaModel.cc:196
CMSmplIonisationWithDeltaModel::~CMSmplIonisationWithDeltaModel
~CMSmplIonisationWithDeltaModel() override
Definition: CMSmplIonisationWithDeltaModel.cc:67
A
DOFs::Z
Definition: AlignPCLThresholdsWriter.cc:37
particleFlowClusterECALTimeSelected_cfi.maxEnergy
maxEnergy
Definition: particleFlowClusterECALTimeSelected_cfi.py:10
CMSmplIonisationWithDeltaModel::twoln10
G4double twoln10
Definition: CMSmplIonisationWithDeltaModel.h:84
CMSmplIonisationWithDeltaModel::beta2lim
G4double beta2lim
Definition: CMSmplIonisationWithDeltaModel.h:87
CMSmplIonisationWithDeltaModel::dedx0
static std::vector< G4double > * dedx0
Definition: CMSmplIonisationWithDeltaModel.h:94
CMSmplIonisationWithDeltaModel::betalim
G4double betalim
Definition: CMSmplIonisationWithDeltaModel.h:86
CMSmplIonisationWithDeltaModel::SetParticle
void SetParticle(const G4ParticleDefinition *p)
Definition: CMSmplIonisationWithDeltaModel.cc:75
CMSmplIonisationWithDeltaModel::monopole
const G4ParticleDefinition * monopole
Definition: CMSmplIonisationWithDeltaModel.h:78
CMSmplIonisationWithDeltaModel::MaxSecondaryEnergy
G4double MaxSecondaryEnergy(const G4ParticleDefinition *, G4double kinEnergy) override
Definition: CMSmplIonisationWithDeltaModel.cc:325
CMSmplIonisationWithDeltaModel::SampleSecondaries
void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) override
Definition: CMSmplIonisationWithDeltaModel.cc:225