Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 << 25 // 26 //-------------------------------------------- 26 //--------------------------------------------------------------------------- 27 // 27 // 28 // ClassName: G4Material 28 // ClassName: G4Material 29 // 29 // 30 // Description: Contains material properties 30 // Description: Contains material properties 31 // 31 // 32 // Class description: 32 // Class description: 33 // 33 // 34 // Is used to define the material composition 34 // Is used to define the material composition of Geant4 volumes. 35 // A G4Material is always made of G4Elements. << 35 // A G4Material is always made of G4Elements. It should has the name, 36 // the list of G4Elements, material density, m << 36 // the list of G4Elements, material density, material state, temperature, 37 // pressure. Other parameters are optional and << 37 // pressure. Other parameters are optional and may be set by the user code 38 // or computed at initialisation. << 38 // or computed at initialisation. 39 // << 39 // 40 // There is several ways to construct G4Materi 40 // There is several ways to construct G4Material: 41 // - from single element; 41 // - from single element; 42 // - from a list of components (elements or 42 // - from a list of components (elements or other materials); 43 // - from internal Geant4 database of materi 43 // - from internal Geant4 database of materials 44 // 44 // 45 // A collection of constituent Elements/Materi << 45 // A collection of constituent Elements/Materials should be defined 46 // with specified weights by fractional mass o 46 // with specified weights by fractional mass or atom counts (only for Elements). 47 // 47 // 48 // Quantities, with physical meaning or not, w << 48 // Quantities, with physical meaning or not, which are constant in a given 49 // material are computed and stored here as De 49 // material are computed and stored here as Derived data members. 50 // 50 // 51 // The class contains as a private static memb 51 // The class contains as a private static member the Table of defined 52 // materials (an ordered vector of materials). 52 // materials (an ordered vector of materials). 53 // 53 // 54 // It is strongly not recommended to delete ma 54 // It is strongly not recommended to delete materials in user code. 55 // All materials will be deleted automatically 55 // All materials will be deleted automatically at the end of Geant4 session. 56 // 56 // >> 57 >> 58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... >> 59 57 // 10-07-96, new data members added by L.Urban 60 // 10-07-96, new data members added by L.Urban 58 // 12-12-96, new data members added by L.Urban 61 // 12-12-96, new data members added by L.Urban 59 // 20-01-97, aesthetic rearrangement. RadLengt 62 // 20-01-97, aesthetic rearrangement. RadLength calculation modified 60 // Data members Zeff and Aeff REMOVE 63 // Data members Zeff and Aeff REMOVED (i.e. passed to the Elements). 61 // (local definition of Zeff in Dens 64 // (local definition of Zeff in DensityEffect and FluctModel...) 62 // Vacuum defined as a G4State. Mixt << 65 // Vacuum defined as a G4State. Mixture flag removed, M.Maire 63 // 29-01-97, State=Vacuum automatically set de 66 // 29-01-97, State=Vacuum automatically set density=0 in the contructors. 64 // Subsequent protections have been << 67 // Subsequent protections have been put in the calculation of 65 // MeanExcEnergy, ShellCorrectionVec 68 // MeanExcEnergy, ShellCorrectionVector, DensityEffect, M.Maire 66 // 20-03-97, corrected initialization of point 69 // 20-03-97, corrected initialization of pointers, M.Maire 67 // 10-06-97, new data member added by V.Grichi 70 // 10-06-97, new data member added by V.Grichine (fSandiaPhotoAbsCof) 68 // 27-06-97, new function GetElement(int), M.M 71 // 27-06-97, new function GetElement(int), M.Maire 69 // 24-02-98, fFractionVector become fMassFract 72 // 24-02-98, fFractionVector become fMassFractionVector 70 // 28-05-98, kState=kVacuum removed: << 73 // 28-05-98, kState=kVacuum removed: 71 // The vacuum is an ordinary gas vit 74 // The vacuum is an ordinary gas vith very low density, M.Maire 72 // 12-06-98, new method AddMaterial() allowing 75 // 12-06-98, new method AddMaterial() allowing mixture of materials, M.Maire 73 // 09-07-98, Ionisation parameters removed fro 76 // 09-07-98, Ionisation parameters removed from the class, M.Maire 74 // 04-08-98, new method GetMaterial(materialNa 77 // 04-08-98, new method GetMaterial(materialName), M.Maire 75 // 05-10-98, change name: NumDensity -> NbOfAt 78 // 05-10-98, change name: NumDensity -> NbOfAtomsPerVolume 76 // 18-11-98, SandiaTable interface modified. 79 // 18-11-98, SandiaTable interface modified. 77 // 19-07-99, new data member (chemicalFormula) 80 // 19-07-99, new data member (chemicalFormula) added by V.Ivanchenko 78 // 12-03-01, G4bool fImplicitElement (mma) 81 // 12-03-01, G4bool fImplicitElement (mma) 79 // 30-03-01, suppression of the warning messag 82 // 30-03-01, suppression of the warning message in GetMaterial 80 // 17-07-01, migration to STL. M. Verderi. 83 // 17-07-01, migration to STL. M. Verderi. 81 // 14-09-01, Suppression of the data member fI 84 // 14-09-01, Suppression of the data member fIndexInTable 82 // 31-10-01, new function SetChemicalFormula() 85 // 31-10-01, new function SetChemicalFormula() (mma) 83 // 26-02-02, fIndexInTable renewed 86 // 26-02-02, fIndexInTable renewed 84 // 06-08-02, remove constructors with Chemical 87 // 06-08-02, remove constructors with ChemicalFormula (mma) 85 // 15-11-05, GetMaterial(materialName, G4bool 88 // 15-11-05, GetMaterial(materialName, G4bool warning=true) 86 // 13-04-12, std::map<G4Material*,G4double> fM 89 // 13-04-12, std::map<G4Material*,G4double> fMatComponents (mma) 87 // 21-04-12, fMassOfMolecule (mma) 90 // 21-04-12, fMassOfMolecule (mma) 88 91 >> 92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... >> 93 89 #ifndef G4MATERIAL_HH 94 #ifndef G4MATERIAL_HH 90 #define G4MATERIAL_HH 1 95 #define G4MATERIAL_HH 1 91 96 >> 97 #include <vector> >> 98 #include <map> >> 99 #include <CLHEP/Units/PhysicalConstants.h> >> 100 >> 101 #include "globals.hh" >> 102 #include "G4ios.hh" 92 #include "G4Element.hh" 103 #include "G4Element.hh" 93 #include "G4ElementVector.hh" << 94 #include "G4IonisParamMat.hh" << 95 #include "G4MaterialPropertiesTable.hh" 104 #include "G4MaterialPropertiesTable.hh" 96 #include "G4MaterialTable.hh" << 105 #include "G4IonisParamMat.hh" 97 #include "G4SandiaTable.hh" 106 #include "G4SandiaTable.hh" 98 #include "G4ios.hh" << 107 #include "G4ElementVector.hh" 99 #include "globals.hh" << 108 #include "G4MaterialTable.hh" >> 109 #include "G4Threading.hh" 100 110 101 #include <CLHEP/Units/PhysicalConstants.h> << 111 enum G4State { kStateUndefined = 0, kStateSolid, kStateLiquid, kStateGas }; 102 112 103 #include <map> << 113 static const G4double NTP_Temperature = 293.15*CLHEP::kelvin; 104 #include <vector> << 105 << 106 enum G4State << 107 { << 108 kStateUndefined = 0, << 109 kStateSolid, << 110 kStateLiquid, << 111 kStateGas << 112 }; << 113 114 114 static const G4double NTP_Temperature = 293.15 << 115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 115 116 116 class G4Material 117 class G4Material 117 { 118 { 118 public: // with description << 119 public: // with description >> 120 // 119 // Constructor to create a material from sin 121 // Constructor to create a material from single element 120 G4Material(const G4String& name, // its nam << 122 // 121 G4double z, // atomic number << 123 G4Material(const G4String& name, //its name 122 G4double a, // mass of mole << 124 G4double z, //atomic number 123 G4double density, // density << 125 G4double a, //mass of mole 124 G4State state = kStateUndefined, // solid << 126 G4double density, //density 125 G4double temp = NTP_Temperature, // tempe << 127 G4State state = kStateUndefined, //solid,gas 126 G4double pressure = CLHEP::STP_Pressure); << 128 G4double temp = NTP_Temperature, //temperature >> 129 G4double pressure = CLHEP::STP_Pressure); //pressure 127 130 >> 131 // 128 // Constructor to create a material from a c 132 // Constructor to create a material from a combination of elements 129 // and/or materials subsequently added via A 133 // and/or materials subsequently added via AddElement and/or AddMaterial 130 G4Material(const G4String& name, // its nam << 134 // 131 G4double density, // density << 135 G4Material(const G4String& name, //its name 132 G4int nComponents, // nbOfComponents << 136 G4double density, //density 133 G4State state = kStateUndefined, // solid << 137 G4int nComponents, //nbOfComponents 134 G4double temp = NTP_Temperature, // tempe << 138 G4State state = kStateUndefined, //solid,gas 135 G4double pressure = CLHEP::STP_Pressure); << 139 G4double temp = NTP_Temperature, //temperature >> 140 G4double pressure = CLHEP::STP_Pressure); //pressure 136 141 >> 142 // 137 // Constructor to create a material from the 143 // Constructor to create a material from the base material 138 G4Material(const G4String& name, // its nam << 144 // 139 G4double density, // density << 145 G4Material(const G4String& name, //its name 140 const G4Material* baseMaterial, // base m << 146 G4double density, //density 141 G4State state = kStateUndefined, // solid << 147 const G4Material* baseMaterial, //base material 142 G4double temp = NTP_Temperature, // tempe << 148 G4State state = kStateUndefined, //solid,gas 143 G4double pressure = CLHEP::STP_Pressure); << 149 G4double temp = NTP_Temperature, //temperature 144 << 150 G4double pressure = CLHEP::STP_Pressure); //pressure 145 virtual ~G4Material(); << 146 << 147 // These methods allow customisation of corr << 148 // computations. Free electron density above << 149 // is a conductor. Computation of density ef << 150 // may be more accurate but require extra co << 151 void SetChemicalFormula(const G4String& chF) << 152 void SetFreeElectronDensity(G4double val); << 153 void ComputeDensityEffectOnFly(G4bool val); << 154 << 155 G4Material(const G4Material&) = delete; << 156 const G4Material& operator=(const G4Material << 157 151 >> 152 // 158 // Add an element, giving number of atoms 153 // Add an element, giving number of atoms 159 void AddElementByNumberOfAtoms(const G4Eleme << 154 // 160 inline void AddElement(G4Element* elm, G4int << 155 void AddElement(G4Element* element, //the element >> 156 G4int nAtoms); //nb of atoms in a molecule >> 157 inline >> 158 void AddElementByNumberOfAtoms(G4Element* elm, G4int nAtoms) {AddElement(elm, nAtoms);} 161 159 >> 160 // 162 // Add an element or material, giving fracti 161 // Add an element or material, giving fraction of mass 163 void AddElementByMassFraction(const G4Elemen << 164 inline void AddElement(G4Element* elm, G4dou << 165 << 166 void AddMaterial(G4Material* material, G4dou << 167 << 168 // 162 // 169 // retrieval methods << 163 void AddElement (G4Element* element , //the element >> 164 G4double fraction); //fractionOfMass >> 165 inline >> 166 void AddElementByMassFraction(G4Element* elm, G4double frac) {AddElement(elm, frac);} >> 167 >> 168 void AddMaterial(G4Material* material, //the material >> 169 G4double fraction); //fractionOfMass >> 170 >> 171 virtual ~G4Material(); 170 // 172 // 171 inline const G4String& GetName() const { ret << 173 // retrieval methods 172 inline const G4String& GetChemicalFormula() << 174 // 173 inline G4double GetFreeElectronDensity() con << 175 inline const G4String& GetName() const {return fName;} 174 inline G4double GetDensity() const { return << 176 inline const G4String& GetChemicalFormula() const {return fChemicalFormula;} 175 inline G4State GetState() const { return fSt << 177 inline G4double GetFreeElectronDensity() const {return fFreeElecDensity;} 176 inline G4double GetTemperature() const { ret << 178 inline G4double GetDensity() const {return fDensity;} 177 inline G4double GetPressure() const { return << 179 inline G4State GetState() const {return fState;} 178 << 180 inline G4double GetTemperature() const {return fTemp;} 179 // number of elements constituing this mater << 181 inline G4double GetPressure() const {return fPressure;} 180 inline std::size_t GetNumberOfElements() con << 182 181 << 183 //number of elements constituing this material: 182 // vector of pointers to elements constituin << 184 inline size_t GetNumberOfElements() const {return fNumberOfElements;} 183 inline const G4ElementVector* GetElementVect << 185 184 << 186 //vector of pointers to elements constituing this material: 185 // vector of fractional mass of each element << 187 inline const 186 inline const G4double* GetFractionVector() c << 188 G4ElementVector* GetElementVector() const {return theElementVector;} 187 << 189 188 // vector of atom count of each element: << 190 //vector of fractional mass of each element: 189 inline const G4int* GetAtomsVector() const { << 191 inline const 190 << 192 G4double* GetFractionVector() const {return fMassFractionVector;} 191 // return a pointer to an element, given its << 193 192 inline const G4Element* GetElement(G4int iel << 194 //vector of atom count of each element: 193 << 195 inline const 194 // vector of nb of atoms per volume of each << 196 G4int* GetAtomsVector() const {return fAtomsVector;} 195 inline const G4double* GetVecNbOfAtomsPerVol << 197 196 // total number of atoms per volume: << 198 //return a pointer to an element, given its index in the material: 197 inline G4double GetTotNbOfAtomsPerVolume() c << 199 inline const 198 // total number of electrons per volume: << 200 G4Element* GetElement(G4int iel) const {return (*theElementVector)[iel];} 199 inline G4double GetTotNbOfElectPerVolume() c << 201 200 << 202 //vector of nb of atoms per volume of each element in this material: 201 // obsolete names (5-10-98) see the 2 functi << 203 inline const 202 inline const G4double* GetAtomicNumDensityVe << 204 G4double* GetVecNbOfAtomsPerVolume() const {return fVecNbOfAtomsPerVolume;} 203 inline G4double GetElectronDensity() const { << 205 //total number of atoms per volume: 204 << 206 inline 205 // Radiation length: << 207 G4double GetTotNbOfAtomsPerVolume() const {return fTotNbOfAtomsPerVolume;} 206 inline G4double GetRadlen() const { return f << 208 //total number of electrons per volume: 207 << 209 inline 208 // Nuclear interaction length << 210 G4double GetTotNbOfElectPerVolume() const {return fTotNbOfElectPerVolume;} 209 inline G4double GetNuclearInterLength() cons << 211 210 << 212 //obsolete names (5-10-98) see the 2 functions above >> 213 inline const >> 214 G4double* GetAtomicNumDensityVector() const {return fVecNbOfAtomsPerVolume;} >> 215 inline G4double GetElectronDensity() const {return fTotNbOfElectPerVolume;} >> 216 >> 217 // Radiation length: >> 218 inline G4double GetRadlen() const {return fRadlen;} >> 219 >> 220 // Nuclear interaction length >> 221 inline G4double GetNuclearInterLength() const {return fNuclInterLen;} >> 222 211 // ionisation parameters: 223 // ionisation parameters: 212 inline G4IonisParamMat* GetIonisation() cons << 224 inline G4IonisParamMat* GetIonisation() const {return fIonisation;} 213 225 214 // Sandia table: 226 // Sandia table: 215 inline G4SandiaTable* GetSandiaTable() const << 227 inline G4SandiaTable* GetSandiaTable() const {return fSandiaTable; } 216 << 228 217 // Base material: 229 // Base material: 218 inline const G4Material* GetBaseMaterial() c << 230 inline 219 << 231 const G4Material* GetBaseMaterial() const {return fBaseMaterial;} >> 232 220 // material components: 233 // material components: 221 inline const std::map<G4Material*, G4double> << 234 inline 222 << 235 const std::map<G4Material*,G4double>& GetMatComponents() const >> 236 {return fMatComponents;} >> 237 223 // for chemical compound 238 // for chemical compound 224 inline G4double GetMassOfMolecule() const { << 239 inline G4double GetMassOfMolecule() const {return fMassOfMolecule;} 225 240 >> 241 void SetChemicalFormula(const G4String& chF); >> 242 >> 243 void SetFreeElectronDensity(G4double); >> 244 >> 245 void ComputeDensityEffectOnFly(G4bool); >> 246 226 // meaningful only for single material: 247 // meaningful only for single material: 227 G4double GetZ() const; 248 G4double GetZ() const; 228 G4double GetA() const; 249 G4double GetA() const; 229 250 230 // the MaterialPropertiesTable (if any) atta << 251 //the MaterialPropertiesTable (if any) attached to this material: 231 void SetMaterialPropertiesTable(G4MaterialPr 252 void SetMaterialPropertiesTable(G4MaterialPropertiesTable* anMPT); 232 << 253 233 inline G4MaterialPropertiesTable* GetMateria 254 inline G4MaterialPropertiesTable* GetMaterialPropertiesTable() const 234 { << 255 {return fMaterialPropertiesTable;} 235 return fMaterialPropertiesTable; << 236 } << 237 256 238 // the index of this material in the Table: << 257 //the index of this material in the Table: 239 inline std::size_t GetIndex() const { return << 258 inline size_t GetIndex() const {return fIndexInTable;} 240 259 241 // the static Table of Materials: 260 // the static Table of Materials: >> 261 // 242 static G4MaterialTable* GetMaterialTable(); 262 static G4MaterialTable* GetMaterialTable(); >> 263 >> 264 static size_t GetNumberOfMaterials(); >> 265 >> 266 //return pointer to a material, given its name: >> 267 static G4Material* GetMaterial(const G4String& name, G4bool warning=true); 243 268 244 static std::size_t GetNumberOfMaterials(); << 269 //return pointer to a simple material, given its propeties: 245 << 246 // return pointer to a material, given its << 247 static G4Material* GetMaterial(const G4Strin << 248 << 249 // return pointer to a simple material, giv << 250 static G4Material* GetMaterial(G4double z, G 270 static G4Material* GetMaterial(G4double z, G4double a, G4double dens); 251 271 252 // return pointer to a composit material, g << 272 //return pointer to a composit material, given its propeties: 253 static G4Material* GetMaterial(std::size_t n << 273 static G4Material* GetMaterial(size_t nComp, G4double dens); 254 << 274 255 // printing methods << 275 // 256 friend std::ostream& operator<<(std::ostream << 276 //printing methods 257 friend std::ostream& operator<<(std::ostream << 277 // 258 friend std::ostream& operator<<(std::ostream << 278 friend std::ostream& operator<<(std::ostream&, const G4Material*); >> 279 friend std::ostream& operator<<(std::ostream&, const G4Material&); >> 280 friend std::ostream& operator<<(std::ostream&, G4MaterialTable); >> 281 >> 282 G4Material(__void__&); >> 283 // Fake default constructor for usage restricted to direct object >> 284 // persistency for clients requiring preallocation of memory for >> 285 // persistifiable objects. 259 286 260 inline void SetName(const G4String& name) { << 287 inline void SetName (const G4String& name) {fName=name;} 261 288 262 virtual G4bool IsExtended() const; 289 virtual G4bool IsExtended() const; 263 290 264 // operators << 291 private: 265 G4bool operator==(const G4Material&) const = << 266 G4bool operator!=(const G4Material&) const = << 267 292 268 private: << 293 // operators 269 void InitializePointers(); << 294 G4bool operator==(const G4Material&) const; >> 295 G4bool operator!=(const G4Material&) const; >> 296 G4Material(const G4Material&); >> 297 const G4Material& operator=(const G4Material&); 270 298 >> 299 void InitializePointers(); >> 300 271 // Header routine for all derived quantities 301 // Header routine for all derived quantities 272 void ComputeDerivedQuantities(); 302 void ComputeDerivedQuantities(); 273 303 274 // Compute Radiation length 304 // Compute Radiation length 275 void ComputeRadiationLength(); 305 void ComputeRadiationLength(); 276 << 306 277 // Compute Nuclear interaction length 307 // Compute Nuclear interaction length 278 void ComputeNuclearInterLength(); 308 void ComputeNuclearInterLength(); 279 309 280 // Copy pointers of base material 310 // Copy pointers of base material 281 void CopyPointersOfBaseMaterial(); 311 void CopyPointersOfBaseMaterial(); >> 312 >> 313 private: 282 314 283 void FillVectors(); << 315 const G4Material* fBaseMaterial; // Pointer to the base material 284 << 285 G4bool IsLocked(); << 286 << 287 const G4Material* fBaseMaterial; // Pointer << 288 G4MaterialPropertiesTable* fMaterialProperti 316 G4MaterialPropertiesTable* fMaterialPropertiesTable; >> 317 >> 318 G4ElementVector* theElementVector; // vector of constituent Elements >> 319 G4double* fMassFractionVector; // composition by fractional mass >> 320 G4int* fAtomsVector; // composition by atom count >> 321 >> 322 static >> 323 G4MaterialTable theMaterialTable; // the material table 289 324 290 // 325 // 291 // General atomic properties defined in cons << 326 // Derived data members (computed from the basic data members) 292 // computed from the basic data members << 293 // 327 // 294 << 328 // some general atomic properties 295 G4ElementVector* theElementVector; // vecto << 329 296 G4int* fAtomsVector; // composition by atom << 330 G4double* fVecNbOfAtomsPerVolume; // vector of nb of atoms per volume 297 G4double* fMassFractionVector; // compositi << 331 298 G4double* fVecNbOfAtomsPerVolume; // number << 332 G4IonisParamMat* fIonisation; // ionisation parameters 299 << 333 G4SandiaTable* fSandiaTable; // Sandia table 300 G4IonisParamMat* fIonisation; // ionisation << 334 301 G4SandiaTable* fSandiaTable; // Sandia tabl << 335 G4double fDensity; // Material density 302 << 336 G4double fFreeElecDensity; // Free electron density 303 G4double fDensity; // Material density << 337 G4double fTemp; // Temperature (defaults: STP) 304 G4double fFreeElecDensity; // Free electron << 338 G4double fPressure; // Pressure (defaults: STP) 305 G4double fTemp; // Temperature (defaults: S << 339 306 G4double fPressure; // Pressure (default << 340 G4double fTotNbOfAtomsPerVolume; // total nb of atoms per volume 307 << 341 G4double fTotNbOfElectPerVolume; // total nb of electrons per volume 308 G4double fTotNbOfAtomsPerVolume; // Total n << 342 G4double fRadlen; // Radiation length 309 G4double fTotNbOfElectPerVolume; // Total n << 343 G4double fNuclInterLen; // Nuclear interaction length 310 G4double fRadlen; // Radiation length << 344 G4double fMassOfMolecule; // for materials built by atoms count 311 G4double fNuclInterLen; // Nuclear interact << 345 312 G4double fMassOfMolecule; // Correct for ma << 346 G4State fState; // Material state (determined 313 << 347 // internally based on density) 314 G4State fState; // Material state << 348 size_t fIndexInTable; // the position in the material table 315 std::size_t fIndexInTable; // Index in the << 349 316 G4int fNumberOfElements; // Number of G4Ele << 350 G4int maxNbComponents; // totalNbOfComponentsInTheMaterial 317 << 351 G4int fArrayLength; // the length of fAtomsVector 318 // Class members used only at initialisation << 352 G4int fNumberOfComponents; // Nb of components declared so far 319 G4int fNbComponents; // Number of component << 353 320 G4int fIdxComponent; // Index of a new comp << 354 G4int fNumberOfElements; // Nb of Elements in the material 321 G4bool fMassFraction; // Flag of the method << 355 322 << 356 std::map<G4Material*,G4double> fMatComponents; // for composites built via 323 // For composites built << 357 // AddMaterial() 324 std::vector<G4int>* fAtoms = nullptr; << 358 325 std::vector<G4double>* fElmFrac = nullptr; << 359 G4String fName; // Material name 326 std::vector<const G4Element*>* fElm = nullpt << 360 G4String fChemicalFormula; // Material chemical formula 327 << 361 328 // For composites built via AddMaterial() << 362 #ifdef G4MULTITHREADED 329 std::map<G4Material*, G4double> fMatComponen << 363 static G4Mutex materialMutex; 330 << 364 #endif 331 G4String fName; // Material name << 332 G4String fChemicalFormula; // Material chem << 333 }; 365 }; >> 366 >> 367 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 334 368 335 #endif 369 #endif 336 370