DDMaterial is used to define and access material information. More...
#include <DDMaterial.h>
Public Types | |
using | FractionV = std::vector< std::pair< DDMaterial, double > > |
Public Types inherited from DDBase< DDName, std::unique_ptr< DDI::Material > > | |
using | def_type = std::pair< const DDName *, bool > |
using | StoreT = DDI::Singleton< DDI::Store< DDName, std::unique_ptr< DDI::Material > > > |
Public Member Functions | |
double | a () const |
returns the atomic mass More... | |
int | addMaterial (const DDMaterial &m, double fm) |
adds a material to the mixture proportional to its fraction-mass fm. More... | |
FractionV::value_type | constituent (int i) const |
returns the i-th compound material and its fraction-mass More... | |
DDMaterial () | |
Creates a uninitialized reference-object (see DDLogicalPart documentation for details on reference objects) More... | |
DDMaterial (const DDName &name) | |
Creates a initialized reference-object or a reference to an allready defined material. More... | |
DDMaterial (const DDName &name, double z, double a, double d) | |
Constructor for construction of an elementary material. More... | |
DDMaterial (const DDName &name, double density) | |
Constructor for mixtures. More... | |
double | density () const |
returns the density More... | |
int | noOfConstituents () const |
returns the number of compound materials or 0 for elementary materials More... | |
double | z () const |
retruns the atomic number More... | |
Public Member Functions inherited from DDBase< DDName, std::unique_ptr< DDI::Material > > | |
void | create (const DDName &name, std::unique_ptr< DDI::Material > vals) |
void | create (const DDName &name) |
DDBase () | |
const DDName & | ddname () const |
def_type | isDefined () const |
bool | isValid () const |
true, if the wrapped pointer is valid More... | |
const DDName & | name () const |
operator bool () const | |
bool | operator< (const DDBase &b) const |
bool | operator== (const DDBase &b) const |
bool | operator> (const DDBase &b) const |
const DDI::rep_traits< DDName, std::unique_ptr< DDI::Material > >::reference | rep () const |
DDI::rep_traits< DDName, std::unique_ptr< DDI::Material > >::reference | rep () |
std::string | toString () const |
const DDI::rep_traits< DDName, std::unique_ptr< DDI::Material > >::reference | val () const |
const DDI::rep_traits< DDName, std::unique_ptr< DDI::Material > >::reference | val () |
virtual | ~DDBase () |
Friends | |
std::ostream & | operator<< (std::ostream &, const DDMaterial &) |
Additional Inherited Members | |
Static Public Member Functions inherited from DDBase< DDName, std::unique_ptr< DDI::Material > > | |
static auto | begin () |
static auto | end () |
DDMaterial is used to define and access material information.
An object of this class is a reference-object and thus leightweighted. It is uniquely identified by its DDName. Further details concerning reference-objects can be found in the documentation of DDLogicalPart.
A DDMaterial can recursively consist of compound materials (which are DDMaterials as well). Materials consisting of compound materials are called mixtures. Mixtures are defined by their Materials which do not consist of compound materials are called elementary materials.
To define an elementray material, use it like this:
To define a mixture:
Note the usage DDUnits replacing CLHEP/SystemOfUnits to specify the units of the quantities making up a material.
Definition at line 45 of file DDMaterial.h.
using DDMaterial::FractionV = std::vector<std::pair<DDMaterial, double> > |
Definition at line 49 of file DDMaterial.h.
DDMaterial::DDMaterial | ( | ) |
Creates a uninitialized reference-object (see DDLogicalPart documentation for details on reference objects)
Definition at line 15 of file DDMaterial.cc.
DDMaterial::DDMaterial | ( | const DDName & | name | ) |
Creates a initialized reference-object or a reference to an allready defined material.
If a DDMaterial with name was already defined, this constructor creates a reference object to the defined material. Otherwise it creates a (default) initialized reference-object to a material with DDName name.
For further details concerning the usage of reference-objects refere to the documentation of DDLogicalPart.
Definition at line 25 of file DDMaterial.cc.
References DDBase< DDName, std::unique_ptr< DDI::Material > >::create(), and DDBase< DDName, std::unique_ptr< DDI::Material > >::name().
DDMaterial::DDMaterial | ( | const DDName & | name, |
double | z, | ||
double | a, | ||
double | d | ||
) |
Constructor for construction of an elementary material.
z
atomic number a
atomic mass density
densityExample:
Definition at line 40 of file DDMaterial.cc.
References a(), DDBase< DDName, std::unique_ptr< DDI::Material > >::create(), ztail::d, DDBase< DDName, std::unique_ptr< DDI::Material > >::name(), and z().
DDMaterial::DDMaterial | ( | const DDName & | name, |
double | density | ||
) |
Constructor for mixtures.
For a mixture material it is sufficient to specify the density of the mixture (in addition to the name). The compounds are added by using the addMaterial(..) method.
The result of this constructor is a reference-object. One can use the mixture material immidiately (without specifying the compund materials). Compound materials can be added at any later stage.
For further details concerning the usage of reference-objects refere to the documentation of DDLogicalPart.
Definition at line 56 of file DDMaterial.cc.
References DDBase< DDName, std::unique_ptr< DDI::Material > >::create(), density(), and DDBase< DDName, std::unique_ptr< DDI::Material > >::name().
double DDMaterial::a | ( | ) | const |
returns the atomic mass
Definition at line 76 of file DDMaterial.cc.
References DDBase< DDName, std::unique_ptr< DDI::Material > >::rep().
Referenced by DDG4Builder::convertMaterial(), TGeoMgrFromDdd::createMaterial(), DDCheckMaterial(), DDMaterial(), DDHtmlMaDetails::details(), and DDCoreToDDXMLOutput::material().
int DDMaterial::addMaterial | ( | const DDMaterial & | m, |
double | fm | ||
) |
adds a material to the mixture proportional to its fraction-mass fm.
The fraction-masses of all compounds must sum up to 1
Definition at line 63 of file DDMaterial.cc.
References DDBase< DDName, std::unique_ptr< DDI::Material > >::ddname(), Exception, visualization-live-secondInstance_cfg::m, and DDBase< DDName, std::unique_ptr< DDI::Material > >::rep().
Referenced by DDLCompositeMaterial::processElement(), and regressionTest_setup().
DDMaterial::FractionV::value_type DDMaterial::constituent | ( | int | i | ) | const |
returns the i-th compound material and its fraction-mass
Definition at line 74 of file DDMaterial.cc.
References mps_fire::i, and DDBase< DDName, std::unique_ptr< DDI::Material > >::rep().
Referenced by OutputMagneticFieldDDToDDL::addToMatStore(), OutputDDToDDL::addToMatStore(), DDG4Builder::convertMaterial(), TGeoMgrFromDdd::createMaterial(), DDCheckMaterial(), DDHtmlMaDetails::details(), and DDCoreToDDXMLOutput::material().
double DDMaterial::density | ( | ) | const |
returns the density
Definition at line 80 of file DDMaterial.cc.
References DDBase< DDName, std::unique_ptr< DDI::Material > >::rep().
Referenced by DDG4Builder::convertMaterial(), TGeoMgrFromDdd::createMaterial(), DDCheckMaterial(), DDMaterial(), DDHtmlMaDetails::details(), and DDCoreToDDXMLOutput::material().
int DDMaterial::noOfConstituents | ( | ) | const |
returns the number of compound materials or 0 for elementary materials
Definition at line 72 of file DDMaterial.cc.
References DDBase< DDName, std::unique_ptr< DDI::Material > >::rep().
Referenced by OutputMagneticFieldDDToDDL::addToMatStore(), OutputDDToDDL::addToMatStore(), DDG4Builder::convertMaterial(), TGeoMgrFromDdd::createMaterial(), DDCheckMaterial(), DDHtmlMaDetails::details(), and DDCoreToDDXMLOutput::material().
double DDMaterial::z | ( | ) | const |
retruns the atomic number
Definition at line 78 of file DDMaterial.cc.
References DDBase< DDName, std::unique_ptr< DDI::Material > >::rep().
Referenced by DDG4Builder::convertMaterial(), TGeoMgrFromDdd::createMaterial(), DDCheckMaterial(), DDMaterial(), DDHtmlMaDetails::details(), DDCoreToDDXMLOutput::material(), geometryXMLparser.Alignable::pos(), and ntupleDataFormat._HitObject::r3D().
|
friend |
Definition at line 101 of file DDMaterial.cc.