ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4DNAPTBIonisationModel.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4DNAPTBIonisationModel.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 // Authors: S. Meylan and C. Villagrasa (IRSN, France)
27 // Models come from
28 // M. Bug et al, Rad. Phys and Chem. 130, 459-479 (2017)
29 //
30 
31 #ifndef G4DNAPTBIONISATIONMODEL_h
32 #define G4DNAPTBIONISATIONMODEL_h 1
33 
34 #include "G4VDNAModel.hh"
36 #include "G4ProductionCutsTable.hh"
37 
39 #include "G4Electron.hh"
40 #include "G4Proton.hh"
42 
43 #include "G4LogLogInterpolation.hh"
44 
46 #include "G4DNAPTBAugerModel.hh"
47 #include "G4NistManager.hh"
48 
54 {
55 
56 public:
65  G4DNAPTBIonisationModel(const G4String &applyToMaterial = "all",
66  const G4ParticleDefinition* p = 0,
67  const G4String &nam = "DNAPTBIonisationModel",
68  const G4bool isAuger=true);
69 
74  virtual ~G4DNAPTBIonisationModel();
75 
81  virtual void Initialise(const G4ParticleDefinition* particle, const G4DataVector& = *(new G4DataVector()), G4ParticleChangeForGamma* fpChangeForGamme=nullptr);
82 
96  const G4String& materialName,
97  const G4ParticleDefinition* p,
98  G4double ekin,
99  G4double emin,
100  G4double emax);
101 
112  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
113  const G4MaterialCutsCouple*,
114  const G4String& materialName,
115  const G4DynamicParticle*,
116  G4ParticleChangeForGamma *particleChangeForGamma,
117  G4double tmin,
118  G4double tmax);
119 
120 protected:
121 
122 private:
123 
125 
127 
130  typedef std::map<G4String, std::map<G4String, std::map<double, std::map<double, std::map<double, double> > > > > TriDimensionMap;
133  std::map<G4String, std::map<G4String, std::vector<double> > > fTMapWithVec;
134  typedef std::map<G4String, std::map<G4String, std::map<double, std::vector<double> > > > VecMap;
136  typedef std::map<G4String, std::map<G4String, std::map<double, std::map<double, std::vector<double> > > > > VecMapWithShell;
138 
139  G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell, const G4String& materialName);
140  double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell, const G4String &materialName);
141 
151  G4double RandomizeEjectedElectronEnergyFromCumulated(G4ParticleDefinition *particleDefinition, G4double k, G4int shell, const G4String& materialName);
152 
162  void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double
163  outgoingParticleEnergy, G4double & cosTheta, G4double & phi );
172  void ReadDiffCSFile(const G4String &materialName, const G4String &particleName, const G4String &file, const G4double scaleFactor);
173 
201 
202  // copy constructor and hide assignment operator
203  G4DNAPTBIonisationModel(const G4DNAPTBIonisationModel&); // prevent copy-construction
204  G4DNAPTBIonisationModel & operator=(const G4DNAPTBIonisationModel &right); // prevent assignement
205 };
206 
207 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
208 
209 #endif