AliFMDGeometryBuilder.h

Go to the documentation of this file.
00001 #ifndef ALIFMDGEOMETRYBUILDER_H
00002 #define ALIFMDGEOMETRYBUILDER_H
00003 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
00004  * reserved. 
00005  *
00006  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
00007  *
00008  * See cxx source for full Copyright notice                               
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;      // Whether to make a detailed simulation 
00116   Bool_t      fUseAssembly;   // Assembly volumes
00117   Int_t       fSectorOff;     // Sector offset in volume tree 
00118   Int_t       fModuleOff;     // Module offset in volume tree
00119   Int_t       fRingOff;       // Ring offset in the volume tree 
00120   Int_t       fDetectorOff;   // Detector offfset in the volume tree 
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;   // Name of Active volumes
00132   static const Char_t* fgkSectorName;   // Name of Sector volumes
00133   static const Char_t* fgkStripName;    // Name of Strip volumes
00134   static const Char_t* fgkSensorName;   // Name of Sensor volumes
00135   static const Char_t* fgkPCBName;      // Name of PCB volumes
00136   static const Char_t* fgkCuName;       // Name of copper volumes
00137   static const Char_t* fgkChipName;     // Name of chip volumes
00138   static const Char_t* fgkLongLegName;  // Name of LongLeg volumes
00139   static const Char_t* fgkShortLegName; // Name of ShortLeg volumes
00140   static const Char_t* fgkFrontVName;   // Name of Front volumes
00141   static const Char_t* fgkBackVName;    // Name of Back volumes
00142   static const Char_t* fgkRingTopName;  // Name of Top ring volumes
00143   static const Char_t* fgkRingBotName;  // Name of Bottom ring volumes
00144   static const Char_t* fgkHCName;       // Name of Honeycomb volumes
00145   static const Char_t* fgkIHCName;      // Name of Inner honeycomb volumes
00146   static const Char_t* fgkNoseName;     // Name of Nose volumes
00147   static const Char_t* fgkBackName;     // Name of Back volumes
00148   static const Char_t* fgkBeamName;     // Name of Beam volumes
00149   static const Char_t* fgkFlangeName;   // Name of Flange volumes
00150   static const Char_t* fgkFMDName;      // Name of Half FMD volumes
00151 
00152   ClassDef(AliFMDGeometryBuilder,1)
00153 };
00154 
00155 #endif
00156 //____________________________________________________________________
00157 //
00158 // Local Variables:
00159 //   mode: C++
00160 // End:
00161 //
00162 // EOF
00163 //
00164 

Generated on Fri Mar 24 17:11:21 2006 for ALICE FMD Off-line by  doxygen 1.4.6