00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #ifndef GEOSHIELD_H
00012 #define GEOSHIELD_H
00013
00014 #include <map>
00015 #include <list>
00016 #include "TObject.h"
00017 #include "Plex/PlexPlaneId.h"
00018
00019 class TGeoVolume;
00020 class UgliDbiSteelPln;
00021 class GeoShieldGroup;
00022 class GeoGeometry;
00023
00024 class GeoShield : public TObject {
00025
00026 friend class GeoGeometry;
00027
00028 public:
00029
00030
00031 enum EGroupType {
00032
00033
00034
00035 kFarInnerE,
00036 kFarInnerW,
00037 kFarOuterE,
00038 kFarOuterW,
00039 kFarTop,
00040 kUnknown
00041 };
00042
00043 typedef std::map<EGroupType,GeoShieldGroup*>::iterator GroupMapItr;
00044 typedef std::map<EGroupType,GeoShieldGroup*>::const_iterator
00045 GroupMapConstItr;
00046
00047
00048 GeoShield() : fGeoGeometry(0) {}
00049 virtual ~GeoShield();
00050
00051
00052 std::list<const TGeoVolume*> GetListOfVolumes(EGroupType group) const;
00053 virtual void Print(Option_t* option="") const;
00054 static const char* AsString(EGroupType group);
00055
00056
00057
00058 EGroupType AddVolume(const TGeoVolume* volume, PlexPlaneId steelId,
00059 const UgliDbiSteelPln* stRow);
00060
00061 protected:
00062
00063 GeoShield(GeoGeometry* geo);
00064
00065 void BuildGroupNodes(TGeoVolume* hallVol);
00066
00067 private:
00068
00069
00070 GeoShield(const GeoShield& that);
00071 GeoShield& operator=(const GeoShield& that);
00072
00073
00074 GeoGeometry* fGeoGeometry;
00075 std::map<EGroupType, GeoShieldGroup* > fGroupMap;
00076
00077 ClassDef(GeoShield,1)
00078 };
00079
00080 #endif // GEOSHIELD_H