00001 00002 #ifndef VIS_G4_VOLUMES_IG_SO_MATERIAL_DETAILS_H 00003 # define VIS_G4_VOLUMES_IG_SO_MATERIAL_DETAILS_H 00004 00005 //<<<<<< INCLUDES >>>>>> 00006 00007 # include "VisGeant4/VisG4Volumes/interface/config.h" 00008 00009 # include <string> 00010 # include <functional> 00011 00012 //<<<<<< PUBLIC DEFINES >>>>>> 00013 //<<<<<< PUBLIC CONSTANTS >>>>>> 00014 //<<<<<< PUBLIC TYPES >>>>>> 00015 00016 class IgRep; 00017 class G4Material; 00018 class G4VPhysicalVolume; 00019 00020 class VisG4RepDetails; 00021 class VisG4MaterialDetails; 00022 class VisG4PVDetails; 00023 class VisG4PathDetails; 00024 00025 //<<<<<< PUBLIC VARIABLES >>>>>> 00026 //<<<<<< PUBLIC FUNCTIONS >>>>>> 00027 //<<<<<< CLASS DECLARATIONS >>>>>> 00028 00029 class VIS_G4_VOLUMES_API VisG4RepDetails 00030 { 00031 public: 00032 VisG4RepDetails (void); 00033 VisG4RepDetails (const IgRep *t); 00034 VisG4RepDetails (const VisG4RepDetails &t); 00035 00036 struct less 00037 { 00038 bool operator() (const VisG4RepDetails& x, 00039 const VisG4RepDetails& y) const; 00040 }; 00041 00042 bool operator== (const VisG4RepDetails &t) const; 00043 bool operator< (const VisG4RepDetails &t) const; 00044 }; 00045 00046 class VIS_G4_VOLUMES_API VisG4MaterialDetails 00047 { 00048 public: 00049 VisG4MaterialDetails (void); 00050 VisG4MaterialDetails (const G4Material *t); 00051 VisG4MaterialDetails (const VisG4MaterialDetails &t); 00052 00053 std::string name (void) const; 00054 float density (void) const; 00055 00056 struct less 00057 { 00058 bool operator () (const VisG4MaterialDetails& x, 00059 const VisG4MaterialDetails& y) const; 00060 }; 00061 00062 bool operator== (const VisG4MaterialDetails &t) const; 00063 bool operator< (const VisG4MaterialDetails &t) const; 00064 00065 private: 00066 std::string m_name; 00067 float m_density; 00068 }; 00069 00070 00071 class VIS_G4_VOLUMES_API VisG4PVDetails 00072 { 00073 public: 00074 VisG4PVDetails (void); 00075 VisG4PVDetails (const G4VPhysicalVolume *pv); 00076 VisG4PVDetails (const VisG4PVDetails &t); 00077 00078 bool sensitive () const; 00079 00080 struct less 00081 { 00082 bool operator() (const VisG4PVDetails& x, 00083 const VisG4PVDetails& y); 00084 }; 00085 00086 bool operator== (const VisG4PVDetails &t) const; 00087 bool operator< (const VisG4PVDetails &t) const; 00088 private: 00089 bool m_sensitive; 00090 }; 00091 00092 00093 class VIS_G4_VOLUMES_API VisG4PathDetails 00094 { 00095 public: 00096 VisG4PathDetails (void); 00097 VisG4PathDetails (const VisG4PathDetails &t); 00098 VisG4PathDetails (const std::string &path); 00099 00100 const std::string &path (void) const; 00101 00102 struct less 00103 { 00104 bool operator() (const VisG4PathDetails& x, 00105 const VisG4PathDetails& y); 00106 }; 00107 00108 bool operator== (const VisG4PathDetails &t) const; 00109 bool operator< (const VisG4PathDetails &t) const; 00110 private: 00111 std::string m_path; 00112 }; 00113 00114 00115 class VIS_G4_VOLUMES_API VisSoMaterialDetails 00116 { 00117 public: 00118 VisSoMaterialDetails (void); 00119 00120 VisSoMaterialDetails &operator<< (const VisG4RepDetails &detail); 00121 VisSoMaterialDetails &operator<< (const VisG4MaterialDetails &detail); 00122 VisSoMaterialDetails &operator<< (const VisG4PVDetails &detail); 00123 VisSoMaterialDetails &operator<< (const VisG4PathDetails &detail); 00124 00125 VisG4RepDetails repDetails (void) const; 00126 VisG4MaterialDetails g4MaterialDetails (void) const; 00127 VisG4PVDetails pvDetails (void) const; 00128 VisG4PathDetails pathDetails (void) const; 00129 00130 struct less 00131 { 00132 bool operator() (const VisSoMaterialDetails& x, 00133 const VisSoMaterialDetails& y); 00134 }; 00135 00136 bool operator== (const VisSoMaterialDetails &a) const; 00137 private: 00138 VisG4RepDetails m_repDetails; 00139 VisG4MaterialDetails m_g4MaterialDetails; 00140 VisG4PVDetails m_pvDetails; 00141 VisG4PathDetails m_pathDetails; 00142 00143 // implicit copy constructor 00144 // implicit assignment operator 00145 // implicit destructor 00146 }; 00147 00148 00149 //<<<<<< INLINE PUBLIC FUNCTIONS >>>>>> 00150 //<<<<<< INLINE MEMBER FUNCTIONS >>>>>> 00151 00152 #endif // VIS_G4_VOLUMES_IG_SO_MATERIAL_DETAILS_H