57 xercesc::DOMElement* atomElement =
NewElement(
"atom");
58 atomElement->setAttributeNode(
NewAttribute(
"unit",
"g/mole"));
60 element->appendChild(atomElement);
66 xercesc::DOMElement* DElement =
NewElement(
"D");
67 DElement->setAttributeNode(
NewAttribute(
"unit",
"g/cm3"));
69 element->appendChild(DElement);
75 xercesc::DOMElement* PElement =
NewElement(
"P");
76 PElement->setAttributeNode(
NewAttribute(
"unit",
"pascal"));
78 element->appendChild(PElement);
84 xercesc::DOMElement* TElement =
NewElement(
"T");
87 element->appendChild(TElement);
93 xercesc::DOMElement* PElement =
NewElement(
"MEE");
96 element->appendChild(PElement);
104 xercesc::DOMElement* isotopeElement =
NewElement(
"isotope");
105 isotopeElement->setAttributeNode(
NewAttribute(
"name",name));
116 xercesc::DOMElement* elementElement =
NewElement(
"element");
117 elementElement->setAttributeNode(
NewAttribute(
"name",name));
121 if (NumberOfIsotopes>0)
123 const G4double* RelativeAbundanceVector =
125 for (
size_t i=0;i<NumberOfIsotopes;i++)
129 xercesc::DOMElement* fractionElement =
NewElement(
"fraction");
131 RelativeAbundanceVector[i]));
132 fractionElement->setAttributeNode(
NewAttribute(
"ref",fractionref));
133 elementElement->appendChild(fractionElement);
151 if (state==
kStateSolid) { state_str =
"solid"; }
else
153 if (state==
kStateGas) { state_str =
"gas"; }
157 xercesc::DOMElement* materialElement =
NewElement(
"material");
158 materialElement->setAttributeNode(
NewAttribute(
"name",name));
159 materialElement->setAttributeNode(
NewAttribute(
"state",state_str));
180 if ( (NumberOfElements>1)
186 for (
size_t i=0;i<NumberOfElements;i++)
191 xercesc::DOMElement* fractionElement =
NewElement(
"fraction");
193 MassFractionVector[i]));
194 fractionElement->setAttributeNode(
NewAttribute(
"ref",fractionref));
195 materialElement->appendChild(fractionElement);
214 xercesc::DOMElement* matrixElement =
NewElement(
"matrix");
215 matrixElement->setAttributeNode(
NewAttribute(
"name", matrixref));
216 matrixElement->setAttributeNode(
NewAttribute(
"coldim",
"2"));
217 std::ostringstream pvalues;
220 if (i!=0) { pvalues <<
" "; }
221 pvalues << pvec->
Energy(i) <<
" " << (*pvec)[i];
223 matrixElement->setAttributeNode(
NewAttribute(
"values", pvalues.str()));
231 xercesc::DOMElement* propElement;
237 std::map< G4String, G4PhysicsOrderedFreeVector*,
238 std::less<G4String> >::const_iterator mpos;
240 std::less<G4String> >::const_iterator cpos;
241 for (mpos=pmap->begin(); mpos!=pmap->end(); mpos++)
244 propElement->setAttributeNode(
NewAttribute(
"name", mpos->first));
250 matElement->appendChild(propElement);
254 G4String warn_message =
"Null pointer for material property -"
255 + mpos->first +
"- of material -" + mat->
GetName() +
"- !";
256 G4Exception(
"G4GDMLWriteMaterials::PropertyWrite()",
"NullPointer",
261 for (cpos=cmap->begin(); cpos!=cmap->end(); cpos++)
264 propElement->setAttributeNode(
NewAttribute(
"name", cpos->first));
265 propElement->setAttributeNode(
NewAttribute(
"ref", cpos->first));
266 xercesc::DOMElement* constElement =
NewElement(
"constant");
267 constElement->setAttributeNode(
NewAttribute(
"name", cpos->first));
268 constElement->setAttributeNode(
NewAttribute(
"value", cpos->second));
270 matElement->appendChild(propElement);
G4double GetPressure() const
size_t GetNumberOfIsotopes() const
G4IonisParamMat * GetIonisation() const
void MEEWrite(xercesc::DOMElement *, const G4double &)
const G4String & GetName() const
static constexpr double hep_pascal
void DWrite(xercesc::DOMElement *, const G4double &)
std::vector< ExP01TrackerHit * > a
const G4String & GetName() const
xercesc::DOMElement * materialsElement
G4double GetDensity() const
void AddMaterial(const G4Material *const)
xercesc::DOMElement * defineElement
size_t GetVectorLength() const
const std::map< G4String, G4MaterialPropertyVector *, std::less< G4String > > * GetPropertiesMap() const
const G4Element * GetElement(G4int iel) const
xercesc::DOMElement * NewElement(const G4String &)
void TWrite(xercesc::DOMElement *, const G4double &)
const std::map< G4String, G4double, std::less< G4String > > * GetPropertiesCMap() const
static constexpr double electronvolt
std::vector< const G4Element * > elementList
G4GLOB_DLL std::ostream G4cout
void PWrite(xercesc::DOMElement *, const G4double &)
G4double * GetRelativeAbundanceVector() const
G4String GenerateName(const G4String &, const void *const)
G4double Energy(size_t index) const
static constexpr double kelvin
static constexpr double cm3
void IsotopeWrite(const G4Isotope *const)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
void ElementWrite(const G4Element *const)
void PropertyVectorWrite(const G4String &, const G4PhysicsOrderedFreeVector *const)
virtual ~G4GDMLWriteMaterials()
virtual void MaterialsWrite(xercesc::DOMElement *)
xercesc::DOMAttr * NewAttribute(const G4String &, const G4String &)
void AddElement(const G4Element *const)
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
void AtomWrite(xercesc::DOMElement *, const G4double &)
const G4Isotope * GetIsotope(G4int iso) const
G4double GetMeanExcitationEnergy() const
G4double GetTemperature() const
size_t GetNumberOfElements() const
const G4String & GetName() const
std::vector< const G4Material * > materialList
void AddIsotope(const G4Isotope *const)
std::vector< const G4Isotope * > isotopeList
const G4double * GetFractionVector() const
static constexpr double mole
void PropertyWrite(xercesc::DOMElement *, const G4Material *const)
void MaterialWrite(const G4Material *const)