DD4hep - The AIDA detector description toolkit for high energy physics experiments
DD4hep  Rev:Unversioneddirectory
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IMaterial.h
Go to the documentation of this file.
1 #ifndef DDSurfaces_IMaterial_H_
2 #define DDSurfaces_IMaterial_H_
3 
4 #include <string>
5 #include <ostream>
6 
7 namespace DDSurfaces {
8 
16  class IMaterial {
17 
18  protected:
20  IMaterial& operator=(const IMaterial&) { return *this; }
21 
22  public:
23 
25  virtual ~IMaterial() {}
26 
28  virtual std::string name() const =0 ;
29 
31  virtual double A() const =0 ;
32 
34  virtual double Z() const =0 ;
35 
37  virtual double density() const =0 ;
38 
40  virtual double radiationLength() const =0 ;
41 
43  virtual double interactionLength() const =0 ;
44 
45  };
46 
48  inline std::ostream& operator<<( std::ostream& os , const IMaterial& m ) {
49 
50  os << " " << m.name() << ", A: " << m.A() << ", Z: " << m.Z() << ", density: " << m.density() << ", radiationLength: " << m.radiationLength()
51  << ", interactionLength: " << m.interactionLength() ;
52 
53  return os ;
54  }
55 
56 } /* namespace DDSurfaces */
57 
58 #endif /* DDSurfaces_MATERIAL_H_ */
virtual ~IMaterial()
Destructor.
Definition: IMaterial.h:25
virtual double A() const =0
averaged atomic number
virtual std::string name() const =0
material name
virtual double density() const =0
density - units ?
IMaterial & operator=(const IMaterial &)
Assignment operator.
Definition: IMaterial.h:20
virtual double Z() const =0
averaged proton number
std::ostream & operator<<(std::ostream &os, const IMaterial &m)
dump IMaterial operator
Definition: IMaterial.h:48
virtual double interactionLength() const =0
interaction length - units ?
virtual double radiationLength() const =0
radiation length - units ?
TGeoShape TGeoMedium * m
Definition: Volumes.cpp:294