ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4mplIonisation.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4mplIonisation.cc
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 // -------------------------------------------------------------------
28 //
29 // GEANT4 Class file
30 //
31 //
32 // File name: G4mplIonisation
33 //
34 // Author: Vladimir Ivanchenko
35 //
36 // Creation date: 25.08.2005
37 //
38 // Modifications:
39 //
40 //
41 // -------------------------------------------------------------------
42 //
43 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
44 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
45 
46 #include "G4mplIonisation.hh"
47 #include "G4PhysicalConstants.hh"
48 #include "G4SystemOfUnits.hh"
49 #include "G4Electron.hh"
50 #include "G4mplIonisationModel.hh"
52 #include "G4EmParameters.hh"
53 
54 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
55 
56 using namespace std;
57 
59  : G4VEnergyLossProcess(name),
60  magneticCharge(mCharge),
61  isInitialised(false)
62 {
63  // By default classical magnetic charge is used
65 
66  SetVerboseLevel(0);
68  SetStepFunction(0.2, 1*mm);
70 }
71 
72 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
73 
75 {}
76 
77 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
78 
80 {
81  return true;
82 }
83 
84 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
85 
87  const G4Material*,
88  G4double cut)
89 {
90  G4double x = 0.5*cut/electron_mass_c2;
91  G4double mass = mpl->GetPDGMass();
93  G4double gam = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio));
94  return mass*(gam - 1.0);
95 }
96 
97 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
98 
100  const G4ParticleDefinition*)
101 {
102  if(isInitialised) { return; }
103 
104  SetBaseParticle(0);
105 
106  // monopole model is responsible both for energy loss and fluctuations
109  ion->SetParticle(p);
110 
111  // define size of dedx and range tables
113  G4double emin = std::min(param->MinKinEnergy(),ion->LowEnergyLimit());
115  G4int bin = G4lrint(param->NumberOfBinsPerDecade()*std::log10(emax/emin));
116  ion->SetLowEnergyLimit(emin);
117  ion->SetHighEnergyLimit(emax);
118  SetMinKinEnergy(emin);
119  SetMaxKinEnergy(emax);
120  SetDEDXBinning(bin);
121 
122  SetEmModel(ion);
123  AddEmModel(1,ion,ion);
124 
125  isInitialised = true;
126 }
127 
128 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
129 
131 {}
132 
133 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
134 
135 void G4mplIonisation::ProcessDescription(std::ostream& out) const
136 {
137  out << "No description available." << G4endl;
139 }
140 
141 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
142