TPC ALTRO mapping class
[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,
61 TGeoVolume* mother,
62 Double_t zmother,
63 TGeoVolume* inner,
64 TGeoVolume* outer=0);
65 /** Make FMD1 volume
66 @param d Detector geometry
67 @param inner Inner ring volume
68 @return FMD1 volume */
69 virtual TGeoVolume* FMD1Geometry(AliFMD1* d, TGeoVolume* inner);
70 /** Make FMD2 volume
71 @param d Detector geometry
72 @param inner Inner ring volume
73 @param outer Outer ring volume
74 @return FMD2 volume */
75 virtual TGeoVolume* FMD2Geometry(AliFMD2* d, TGeoVolume* inner,
76 TGeoVolume* outer);
77 /** Make FMD3 volume
78 @param d Detector geometry
79 @param inner Inner ring volume
80 @param outer Outer ring volume
81 @return FMD3 volume */
82 virtual TGeoVolume* FMD3Geometry(AliFMD3* d, TGeoVolume* inner,
83 TGeoVolume* outer);
84
85
86 TArrayI fActiveId; //! Active volume ID's
87 Bool_t fDetailed; // Whether to make a detailed simulation
88 Bool_t fUseAssembly; // Assembly volumes
89 Int_t fSectorOff; // Sector offset in volume tree
90 Int_t fModuleOff; // Module offset in volume tree
91 Int_t fRingOff; // Ring offset in the volume tree
92 Int_t fDetectorOff; // Detector offfset in the volume tree
93
94 TGeoMedium* fSi; //! Si Medium
95 TGeoMedium* fC; //! C Medium
96 TGeoMedium* fAl; //! Al Medium
97 TGeoMedium* fPCB; //! PCB Medium
98 TGeoMedium* fChip; //! Chip Medium
99 TGeoMedium* fAir; //! Air Medium
100 TGeoMedium* fPlastic; //! Plastic Medium
101 TGeoMedium* fCopper; //! Copper Medium
102
103 static const Char_t* fgkActiveName; // Name of Active volumes
104 static const Char_t* fgkSectorName; // Name of Sector volumes
105 static const Char_t* fgkStripName; // Name of Strip volumes
106 static const Char_t* fgkModuleName; // Name of Module volumes
107 static const Char_t* fgkPCBName; // Name of PCB volumes
108 static const Char_t* fgkLongLegName; // Name of LongLeg volumes
109 static const Char_t* fgkShortLegName; // Name of ShortLeg volumes
110 static const Char_t* fgkFrontVName; // Name of Front volumes
111 static const Char_t* fgkBackVName; // Name of Back volumes
112 static const Char_t* fgkRingName; // Name of Ring volumes
113 static const Char_t* fgkTopHCName; // Name of TopHC volumes
114 static const Char_t* fgkBotHCName; // Name of BotHC volumes
115 static const Char_t* fgkTopIHCName; // Name of TopIHC volumes
116 static const Char_t* fgkBotIHCName; // Name of BotIHC volumes
117 static const Char_t* fgkNoseName; // Name of Nose volumes
118 static const Char_t* fgkBackName; // Name of Back volumes
119 static const Char_t* fgkBeamName; // Name of Beam volumes
120 static const Char_t* fgkFlangeName; // Name of Flange volumes
121
122 ClassDef(AliFMDGeometryBuilder,1)
123};
124
125#endif
126//____________________________________________________________________
127//
128// Local Variables:
129// mode: C++
130// End:
131//
132// EOF
133//
134