Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/dna/models/include/G4DNAEmfietzoglouIonisationModel.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 // Based on the work described in
 27 // Rad Res 163, 98-111 (2005)
 28 // D. Emfietzoglou, H. Nikjoo
 29 // 
 30 // Authors of the class (2014):
 31 // I. Kyriakou (kyriak@cc.uoi.gr)
 32 // D. Emfietzoglou (demfietz@cc.uoi.gr)
 33 // S. Incerti (incerti@cenbg.in2p3.fr)
 34 //
 35 
 36 #ifndef G4DNAEmfietzoglouIonisationModel_h
 37 #define G4DNAEmfietzoglouIonisationModel_h 1
 38 
 39 #include "G4VEmModel.hh"
 40 #include "G4ParticleChangeForGamma.hh"
 41 #include "G4ProductionCutsTable.hh"
 42 #include "G4VAtomDeexcitation.hh"
 43 #include "G4NistManager.hh"
 44 #include "G4Electron.hh"
 45 #include "G4Proton.hh"
 46 
 47 #include "G4DNACrossSectionDataSet.hh"
 48 #include "G4DNAGenericIonsManager.hh"
 49 #include "G4LogLogInterpolation.hh"
 50 #include "G4DNAEmfietzoglouWaterIonisationStructure.hh"
 51 
 52 class G4DNAEmfietzoglouIonisationModel : public G4VEmModel
 53 {
 54 
 55 public:
 56 
 57   G4DNAEmfietzoglouIonisationModel(const G4ParticleDefinition* p = nullptr,
 58                                    const G4String& nam =
 59                                        "DNAEmfietzoglouIonisationModel");
 60 
 61   ~G4DNAEmfietzoglouIonisationModel() override;
 62 
 63   G4DNAEmfietzoglouIonisationModel & operator=(const G4DNAEmfietzoglouIonisationModel &right) = delete;
 64   G4DNAEmfietzoglouIonisationModel(const G4DNAEmfietzoglouIonisationModel&) = delete;
 65 
 66   void Initialise(const G4ParticleDefinition*,
 67                           const G4DataVector& = *(new G4DataVector())) override;
 68 
 69   G4double CrossSectionPerVolume(const G4Material* material,
 70                                          const G4ParticleDefinition* p,
 71                                          G4double ekin,
 72                                          G4double emin,
 73                                          G4double emax) override;
 74 
 75   void SampleSecondaries(std::vector<G4DynamicParticle*>*,
 76                                  const G4MaterialCutsCouple*,
 77                                  const G4DynamicParticle*,
 78                                  G4double tmin,
 79                                  G4double maxEnergy) override;
 80 
 81   G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition,
 82                                   G4double k,
 83                                   G4double energyTransfer,
 84                                   G4int shell);
 85 
 86   inline void SelectFasterComputation(G4bool input);
 87 
 88   inline void SelectStationary(G4bool input); 
 89 
 90 protected:
 91 
 92   G4ParticleChangeForGamma* fParticleChangeForGamma;
 93 
 94 private:
 95 
 96   G4bool fasterCode;
 97 
 98   G4bool statCode;
 99 
100   // Water density table
101   const std::vector<G4double>* fpMolWaterDensity;
102 
103   // Deexcitation manager to produce fluo photons and e-
104   G4VAtomDeexcitation* fAtomDeexcitation;
105 
106   std::map<G4String, G4double, std::less<G4String> > lowEnergyLimit;
107   std::map<G4String, G4double, std::less<G4String> > highEnergyLimit;
108 
109   G4bool isInitialised{false};
110   G4int verboseLevel;
111 
112   // Cross section
113 
114   using MapFile = std::map<G4String, G4String, std::less<G4String>>;
115   MapFile tableFile; // useful ?
116 
117   using MapData = std::map<G4String, G4DNACrossSectionDataSet *, std::less<G4String>>;
118   MapData tableData;
119 
120   // Final state
121 
122   G4DNAEmfietzoglouWaterIonisationStructure waterStructure;
123 
124   G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition,
125                                           G4double incomingParticleEnergy,
126                                           G4int shell);
127 
128   G4double RandomizeEjectedElectronEnergyFromCumulatedDcs(G4ParticleDefinition * aParticleDefinition,
129                                                           G4double incomingParticleEnergy,
130                                                           G4int shell);
131 
132   G4double RandomTransferedEnergy(G4ParticleDefinition * aParticleDefinition,
133                                   G4double incomingParticleEnergy,
134                                   G4int shell);
135 
136   G4double Interpolate(G4double e1,
137                        G4double e2,
138                        G4double e,
139                        G4double xs1,
140                        G4double xs2);
141 
142   G4double QuadInterpolator(G4double e11,
143                             G4double e12,
144                             G4double e21,
145                             G4double e22,
146                             G4double x11,
147                             G4double x12,
148                             G4double x21,
149                             G4double x22,
150                             G4double t1,
151                             G4double t2,
152                             G4double t,
153                             G4double e);
154 
155   using TriDimensionMap = std::map<G4double, std::map<G4double, G4double>>;
156 
157   TriDimensionMap eDiffCrossSectionData[6];
158   TriDimensionMap eNrjTransfData[6]; // for cumulated dcs
159 
160   TriDimensionMap pDiffCrossSectionData[6];
161 
162   std::vector<G4double> eTdummyVec;
163 
164   using VecMap = std::map<G4double, std::vector<G4double>>;
165 
166   VecMap eVecm;
167 
168   VecMap eProbaShellMap[6]; // for cumulated dcs
169 
170   // Partial cross section
171 
172   G4int RandomSelect(G4double energy, const G4String& particle);
173 
174 };
175 
176 inline void G4DNAEmfietzoglouIonisationModel::SelectFasterComputation(G4bool input)
177 {
178   fasterCode = input;
179 }
180 
181 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
182 
183 inline void G4DNAEmfietzoglouIonisationModel::SelectStationary (G4bool input)
184 { 
185     statCode = input; 
186 }    
187 
188 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
189 
190 #endif
191