Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 26 // 18-10-07, move definition of material index 27 // 13-08-08, do not use fixed size arrays (V.I 28 // 26-10-11, new scheme for G4Exception (mma) 29 // 13-04-12, map<G4Material*,G4double> fMatCom 30 // 21-04-12, fMassOfMolecule, computed for Ato 31 32 #include "G4ExtendedMaterial.hh" 33 34 #include "G4VMaterialExtension.hh" 35 36 // Constructor to create an extended material 37 38 G4ExtendedMaterial::G4ExtendedMaterial(const G 39 : G4Material(name, baseMaterial->GetDensity( 40 baseMaterial->GetTemperature(), baseMate 41 {} 42 43 // Constructor to create an extended material 44 45 G4ExtendedMaterial::G4ExtendedMaterial(const G 46 G4double density, G4State state, G4double te 47 : G4Material(name, z, a, density, state, tem 48 {} 49 50 // Constructor to create an extended material 51 // (elements and/or materials) added with Add 52 53 G4ExtendedMaterial::G4ExtendedMaterial(const G 54 G4State state, G4double temp, G4double press 55 : G4Material(name, density, nComponents, sta 56 {} 57 58 // Constructor to create an extended material 59 60 G4ExtendedMaterial::G4ExtendedMaterial(const G 61 const G4ExtendedMaterial* bmat, G4State stat 62 : G4Material(name, density, bmat, state, tem 63 {} 64 65 // register G4VMaterialExtension 66 67 void G4ExtendedMaterial::RegisterExtension(std 68 { 69 auto iter = fExtensionMap.find(extension->Ge 70 if (iter != fExtensionMap.end()) { 71 G4ExceptionDescription msg; 72 msg << "G4ExtendedMaterial <" << GetName() 73 << extension->GetName() << ". Extensio 74 G4Exception("G4ExtendedMaterial::RegisterE 75 } 76 fExtensionMap.insert(std::make_pair(extensio 77 } 78 79 // retrieve G4VMaterialExtension, null pointer 80 81 G4VMaterialExtension* G4ExtendedMaterial::Retr 82 { 83 const auto iter = fExtensionMap.find(name); 84 if (iter != fExtensionMap.end()) { 85 return iter->second.get(); 86 } 87 88 G4ExceptionDescription msg; 89 msg << "G4ExtendedMAterial <" << GetName() < 90 G4Exception("G4ExtendedMaterial::RetreiveExt 91 return nullptr; 92 } 93 94 G4bool G4ExtendedMaterial::IsExtended() const 95 96 void G4ExtendedMaterial::Print(std::ostream& f 97 { 98 flux << "\n Registered material extensions : 99 auto iter = fExtensionMap.begin(); 100 for (; iter != fExtensionMap.end(); iter++) 101 flux << " " << iter->first << "\n"; 102 } 103 } 104