Access to the headers from RAW
[u/mrichter/AliRoot.git] / FMD / AliFMDGeometryBuilder.h
CommitLineData
54e415a8 1#ifndef ALIFMDGEOMETRYBUILDER_H
2#define ALIFMDGEOMETRYBUILDER_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4 * reserved.
5 *
6 * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
7 *
8 * See cxx source for full Copyright notice
9 */
10#ifndef ROOT_TTask
11# include <TTask.h>
12#endif
13#ifndef ROOT_TArrayI
14# include <TArrayI.h>
15#endif
16class TGeoVolume;
17class TGeoMedium;
18class AliFMD;
19class AliFMDRing;
20class AliFMDDetector;
21class AliFMD1;
22class AliFMD2;
23class AliFMD3;
24
25//____________________________________________________________________
26class AliFMDGeometryBuilder : public TTask
27{
28public:
29 AliFMDGeometryBuilder();
30 /** CTOR */
31 AliFMDGeometryBuilder(Bool_t detailed);
32 virtual ~AliFMDGeometryBuilder() {}
33 /** Register */
34 virtual void Exec(Option_t* option="");
35 /** @param use Wheher to assemblies in the geometry definition */
36 virtual void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
37 /** Whether to make a detailed geometry or not.
38 @param use If true, make a detailed geometry */
39 virtual void SetDetailed(Bool_t use) { fDetailed = use; }
40 /** @return Sector offset in volume tree */
41 Int_t GetSectorOff() const { return fSectorOff; }
42 /** @return Module offset in volume tree */
43 Int_t GetModuleOff() const { return fModuleOff; }
44 /** @return Ring offset in the volume tree */
45 Int_t GetRingOff() const { return fRingOff; }
46 /** @return Detector offfset in the volume tree */
47 Int_t GetDetectorOff() const { return fDetectorOff; }
48protected:
49 /** Make a ring volume
50 @param r Ring geometry
51 @return Ring volume */
52 virtual TGeoVolume* RingGeometry(AliFMDRing* r);
53 /** Make a detector volume
54 @param d Detector geometry
55 @param mother Mother volume (detector volume)
56 @param zmother Z position of mother
57 @param inner Inner ring volume
58 @param outer Outer ring volume
59 @return Detector volume */
60 virtual TGeoVolume* DetectorGeometry(AliFMDDetector* d,
bf000c32 61 TGeoVolume* motherTop,
62 TGeoVolume* motherBot,
63 Double_t zmother,
64 TGeoVolume* innerTop,
65 TGeoVolume* innerBot,
66 TGeoVolume* outerTop=0,
67 TGeoVolume* outerBot=0);
54e415a8 68 /** Make FMD1 volume
69 @param d Detector geometry
70 @param inner Inner ring volume
71 @return FMD1 volume */
bf000c32 72 virtual TGeoVolume* FMD1Geometry(AliFMD1* d,
73 TGeoVolume* innerTop,
74 TGeoVolume* innerBot);
54e415a8 75 /** Make FMD2 volume
76 @param d Detector geometry
77 @param inner Inner ring volume
78 @param outer Outer ring volume
79 @return FMD2 volume */
bf000c32 80 virtual TGeoVolume* FMD2Geometry(AliFMD2* d,
81 TGeoVolume* innerTop,
82 TGeoVolume* innerBot,
83 TGeoVolume* outerTop,
84 TGeoVolume* outerBot);
54e415a8 85 /** Make FMD3 volume
86 @param d Detector geometry
87 @param inner Inner ring volume
88 @param outer Outer ring volume
89 @return FMD3 volume */
bf000c32 90 virtual TGeoVolume* FMD3Geometry(AliFMD3* d,
91 TGeoVolume* innerTop,
92 TGeoVolume* innerBot,
93 TGeoVolume* outerTop,
94 TGeoVolume* outerBot);
54e415a8 95
96
97 TArrayI fActiveId; //! Active volume ID's
98 Bool_t fDetailed; // Whether to make a detailed simulation
99 Bool_t fUseAssembly; // Assembly volumes
100 Int_t fSectorOff; // Sector offset in volume tree
101 Int_t fModuleOff; // Module offset in volume tree
102 Int_t fRingOff; // Ring offset in the volume tree
103 Int_t fDetectorOff; // Detector offfset in the volume tree
104
105 TGeoMedium* fSi; //! Si Medium
106 TGeoMedium* fC; //! C Medium
107 TGeoMedium* fAl; //! Al Medium
108 TGeoMedium* fPCB; //! PCB Medium
109 TGeoMedium* fChip; //! Chip Medium
110 TGeoMedium* fAir; //! Air Medium
111 TGeoMedium* fPlastic; //! Plastic Medium
112 TGeoMedium* fCopper; //! Copper Medium
113
114 static const Char_t* fgkActiveName; // Name of Active volumes
115 static const Char_t* fgkSectorName; // Name of Sector volumes
116 static const Char_t* fgkStripName; // Name of Strip volumes
bf000c32 117 static const Char_t* fgkSensorName; // Name of Sensor volumes
54e415a8 118 static const Char_t* fgkPCBName; // Name of PCB volumes
bf000c32 119 static const Char_t* fgkCuName; // Name of copper volumes
120 static const Char_t* fgkChipName; // Name of chip volumes
54e415a8 121 static const Char_t* fgkLongLegName; // Name of LongLeg volumes
122 static const Char_t* fgkShortLegName; // Name of ShortLeg volumes
123 static const Char_t* fgkFrontVName; // Name of Front volumes
124 static const Char_t* fgkBackVName; // Name of Back volumes
bf000c32 125 static const Char_t* fgkRingTopName; // Name of Top ring volumes
126 static const Char_t* fgkRingBotName; // Name of Bottom ring volumes
127 static const Char_t* fgkHCName; // Name of Honeycomb volumes
128 static const Char_t* fgkIHCName; // Name of Inner honeycomb volumes
54e415a8 129 static const Char_t* fgkNoseName; // Name of Nose volumes
130 static const Char_t* fgkBackName; // Name of Back volumes
131 static const Char_t* fgkBeamName; // Name of Beam volumes
132 static const Char_t* fgkFlangeName; // Name of Flange volumes
bf000c32 133 static const Char_t* fgkFMDName; // Name of Half FMD volumes
54e415a8 134
135 ClassDef(AliFMDGeometryBuilder,1)
136};
137
138#endif
139//____________________________________________________________________
140//
141// Local Variables:
142// mode: C++
143// End:
144//
145// EOF
146//
147