ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4EmSaturation.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4EmSaturation.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 G4EmSaturation_h
29 #define G4EmSaturation_h 1
30 
31 // -------------------------------------------------------------
32 //
33 // GEANT4 Class header file
34 //
35 //
36 // File name: G4EmSaturation
37 //
38 // Author: Vladimir Ivanchenko
39 //
40 // Creation date: 18.02.2008
41 //
42 // Modifications:
43 //
44 //
45 // Class Description:
46 // Compution on saturation effect, which reduce visible energy
47 // deposition at the step. Default implementation takes into
48 // account Birks effect. Birks coefficients for some materials
49 // from G4 database on materials are provided
50 //
51 // This class assumed to be G4ThreadLocal, because it is using
52 // cache value for material
53 //
54 // -------------------------------------------------------------
55 
56 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
57 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
58 
59 #include "globals.hh"
60 #include "G4Step.hh"
61 #include "G4ParticleDefinition.hh"
62 #include <vector>
63 
64 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
65 
66 class G4NistManager;
68 class G4Material;
69 
71 {
72 public:
73 
74  explicit G4EmSaturation(G4int verb);
75  virtual ~G4EmSaturation();
76 
77  // this method may be overwritten in the derived class
78  // which implements alternative algorithm of saturation
80  const G4MaterialCutsCouple*,
82  G4double edepTotal,
83  G4double edepNIEL = 0.0) const;
84 
85  // activate default model
87 
88  // find and Birks coefficient
90 
91  // dump coeffitients used in run time
92  void DumpBirksCoefficients();
93 
94  // dump G4 list
96 
97  // this method should not be overwitten
98  inline G4double VisibleEnergyDepositionAtAStep(const G4Step*) const;
99 
100  inline void SetVerbose(G4int);
101 
102 private:
103 
104  // hide assignment operator
105  G4EmSaturation & operator=(const G4EmSaturation &right) = delete;
106  G4EmSaturation(const G4EmSaturation&) = delete;
107 
109 
110  void InitialiseG4materials();
111 
115 
119 
121 
122  // list of materials used in run time
123  static std::vector<G4double> massFactors;
124  static std::vector<G4double> effCharges;
125 
126  // list of G4 materials
127  static std::vector<G4double> g4MatData;
128  static std::vector<G4String> g4MatNames;
129 };
130 
131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
132 
134 {
135  verbose = val;
136 }
137 
138 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
139 
141  const G4Step* step) const
142 {
144  step->GetTrack()->GetMaterialCutsCouple(),
145  step->GetStepLength(),
146  step->GetTotalEnergyDeposit(),
148 }
149 
150 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
151 
152 #endif
153