00001 #ifndef ALIFMDGEOMETRYBUILDER_H
00002 #define ALIFMDGEOMETRYBUILDER_H
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ROOT_TTask
00011 # include <TTask.h>
00012 #endif
00013 #ifndef ROOT_TArrayI
00014 # include <TArrayI.h>
00015 #endif
00016 class TGeoVolume;
00017 class TGeoMedium;
00018 class AliFMD;
00019 class AliFMDRing;
00020 class AliFMDDetector;
00021 class AliFMD1;
00022 class AliFMD2;
00023 class AliFMD3;
00024
00025
00033 class AliFMDGeometryBuilder : public TTask
00034 {
00035 public:
00037 AliFMDGeometryBuilder();
00040 AliFMDGeometryBuilder(Bool_t detailed);
00041 virtual ~AliFMDGeometryBuilder() {}
00043 virtual void Exec(Option_t* option="");
00045 virtual void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
00048 virtual void SetDetailed(Bool_t use) { fDetailed = use; }
00050 Int_t GetSectorOff() const { return fSectorOff; }
00052 Int_t GetModuleOff() const { return fModuleOff; }
00054 Int_t GetRingOff() const { return fRingOff; }
00056 Int_t GetDetectorOff() const { return fDetectorOff; }
00057 protected:
00061 virtual TGeoVolume* RingGeometry(AliFMDRing* r);
00072 virtual TGeoVolume* DetectorGeometry(AliFMDDetector* d,
00073 TGeoVolume* motherTop,
00074 TGeoVolume* motherBot,
00075 Double_t zmother,
00076 TGeoVolume* innerTop,
00077 TGeoVolume* innerBot,
00078 TGeoVolume* outerTop=0,
00079 TGeoVolume* outerBot=0);
00085 virtual TGeoVolume* FMD1Geometry(AliFMD1* d,
00086 TGeoVolume* innerTop,
00087 TGeoVolume* innerBot);
00095 virtual TGeoVolume* FMD2Geometry(AliFMD2* d,
00096 TGeoVolume* innerTop,
00097 TGeoVolume* innerBot,
00098 TGeoVolume* outerTop,
00099 TGeoVolume* outerBot);
00107 virtual TGeoVolume* FMD3Geometry(AliFMD3* d,
00108 TGeoVolume* innerTop,
00109 TGeoVolume* innerBot,
00110 TGeoVolume* outerTop,
00111 TGeoVolume* outerBot);
00112
00113
00114 TArrayI fActiveId;
00115 Bool_t fDetailed;
00116 Bool_t fUseAssembly;
00117 Int_t fSectorOff;
00118 Int_t fModuleOff;
00119 Int_t fRingOff;
00120 Int_t fDetectorOff;
00121
00122 TGeoMedium* fSi;
00123 TGeoMedium* fC;
00124 TGeoMedium* fAl;
00125 TGeoMedium* fPCB;
00126 TGeoMedium* fChip;
00127 TGeoMedium* fAir;
00128 TGeoMedium* fPlastic;
00129 TGeoMedium* fCopper;
00130
00131 static const Char_t* fgkActiveName;
00132 static const Char_t* fgkSectorName;
00133 static const Char_t* fgkStripName;
00134 static const Char_t* fgkSensorName;
00135 static const Char_t* fgkPCBName;
00136 static const Char_t* fgkCuName;
00137 static const Char_t* fgkChipName;
00138 static const Char_t* fgkLongLegName;
00139 static const Char_t* fgkShortLegName;
00140 static const Char_t* fgkFrontVName;
00141 static const Char_t* fgkBackVName;
00142 static const Char_t* fgkRingTopName;
00143 static const Char_t* fgkRingBotName;
00144 static const Char_t* fgkHCName;
00145 static const Char_t* fgkIHCName;
00146 static const Char_t* fgkNoseName;
00147 static const Char_t* fgkBackName;
00148 static const Char_t* fgkBeamName;
00149 static const Char_t* fgkFlangeName;
00150 static const Char_t* fgkFMDName;
00151
00152 ClassDef(AliFMDGeometryBuilder,1)
00153 };
00154
00155 #endif
00156
00157
00158
00159
00160
00161
00162
00163
00164