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