00001 00002 // 00003 // GeoShieldGroup 00004 // 00005 // GeoShieldGroup is a helper class used by GeoGeometry to manage one 00006 // group of detector shield planes 00007 // 00008 // Author: S. Kasahara 10/05 00009 // 00011 00012 #ifndef GEOSHIELDGROUP_H 00013 #define GEOSHIELDGROUP_H 00014 00015 #include <list> 00016 #include "GeoShield.h" // for enumerated group type 00017 00018 class GeoGeometry; // stores reference to creator 00019 00020 class GeoShieldGroup : public TObject { 00021 00022 friend class GeoShield; // constructs GeoShieldGroup 00023 00024 public: 00025 00026 // Constructors/Destructors 00027 GeoShieldGroup():fGeoGeometry(0),fGroup(GeoShield::kUnknown), 00028 fPoints(),fVolumes(){} // def ctor 00029 virtual ~GeoShieldGroup(); 00030 00031 // State testing methods 00032 std::list<const TGeoVolume*> GetListOfVolumes() const { return fVolumes; } 00033 00034 virtual void Print(Option_t* option="") const; 00035 00036 // State changing methods 00037 00038 // add volume to group list, volume is NOT adopted 00039 void AddVolume(const TGeoVolume* volume, const UgliDbiSteelPln* stRow); 00040 00041 protected: 00042 00043 // Normal constructor 00044 GeoShieldGroup(GeoGeometry* geo, GeoShield::EGroupType grp); 00045 void BuildNode(TGeoVolume* hallVol); 00046 00047 private: 00048 00049 // Disable copy and assignment ctor by making them private and w/no imp 00050 GeoShieldGroup(const GeoShieldGroup& that); 00051 GeoShieldGroup& operator=(const GeoShieldGroup& that); 00052 00053 // data members 00054 GeoGeometry* fGeoGeometry; 00055 GeoShield::EGroupType fGroup; // group type 00056 Double_t fPoints[2][3]; // points defining cnrs of bounding box shape 00057 // volumes belonging to this grp, TGeoVolumes are not owned 00058 std::list<const TGeoVolume*> fVolumes; 00059 00060 ClassDef(GeoShieldGroup,1) 00061 }; 00062 00063 #endif // GEOSHIELDGROUP_H
1.3.9.1