ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4DNABornIonisationModel1.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4DNABornIonisationModel1.hh
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 #ifndef G4DNABornIonisationModel1_h
29 #define G4DNABornIonisationModel1_h 1
30 
31 #include "G4VEmModel.hh"
33 #include "G4ProductionCutsTable.hh"
34 
36 #include "G4Electron.hh"
37 #include "G4Proton.hh"
39 
40 #include "G4LogLogInterpolation.hh"
41 
43 #include "G4VAtomDeexcitation.hh"
44 #include "G4NistManager.hh"
45 
46 
48 {
49 
50 public:
51 
53  const G4String& nam = "DNABornIonisationModel");
54 
56 
57  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()));
58 
60  const G4ParticleDefinition* p,
61  G4double ekin,
62  G4double emin,
63  G4double emax);
64 
65  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
66  const G4MaterialCutsCouple*,
67  const G4DynamicParticle*,
68  G4double tmin,
69  G4double maxEnergy);
70 
72  G4int /*level*/,
73  const G4ParticleDefinition*,
74  G4double /*kineticEnergy*/);
75 
76  G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
77 
78  G4double TransferedEnergy(G4ParticleDefinition * aParticleDefinition,
79  G4double incomingParticleEnergy, G4int shell, G4double random) ;
80 
81  inline void SelectFasterComputation(G4bool input);
82 
83  inline void SelectStationary(G4bool input);
84 
85  inline void SelectSPScaling(G4bool input);
86 
87 protected:
88 
90 
91 private:
92 
96 
97  // Water density table
98  const std::vector<G4double>* fpMolWaterDensity;
99 
100  // Deexcitation manager to produce fluo photons and e-
102 
103  std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
104  std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
105 
106  // TODO :
107 // std::map<const G4ParticleDefinition*,std::pair<G4double,G4double> > fEnergyLimits;
108 
109 
112 
113  // Cross section
114 
115  typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
116  MapFile tableFile; // useful ?
117 
118  typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
120 
121  // Final state
122 
124 
125  G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell) ;
126 
127  G4double RandomizeEjectedElectronEnergyFromCumulatedDcs(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell) ;
128 
130 
132  G4double e12,
133  G4double e21,
134  G4double e22,
135  G4double x11,
136  G4double x12,
137  G4double x21,
138  G4double x22,
139  G4double t1,
140  G4double t2,
141  G4double t,
142  G4double e);
143 
144  typedef std::map<G4double, std::map<G4double, G4double> > TriDimensionMap;
145 
147  TriDimensionMap eNrjTransfData[6]; // for cumulated dcs
148 
150  TriDimensionMap pNrjTransfData[6]; // for cumulated dcs
151 
152  std::vector<G4double> eTdummyVec;
153  std::vector<G4double> pTdummyVec;
154 
155  typedef std::map<G4double, std::vector<G4double> > VecMap;
156 
159 
160  VecMap eProbaShellMap[6]; // for cumulated dcs
161  VecMap pProbaShellMap[6]; // for cumulated dcs
162 
163  // Partial cross section
164 
166 
167  //
168 
171 
172 };
173 
175 {
176  fasterCode = input;
177 }
178 
179 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
180 
182 {
183  statCode = input;
184 }
185 
186 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
187 
189 {
190  spScaling = input;
191 }
192 
193 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
194 
195 #endif