]>
Commit | Line | Data |
---|---|---|
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 | |
16 | class TGeoVolume; | |
17 | class TGeoMedium; | |
18 | class AliFMD; | |
19 | class AliFMDRing; | |
20 | class AliFMDDetector; | |
21 | class AliFMD1; | |
22 | class AliFMD2; | |
23 | class AliFMD3; | |
24 | ||
25 | //____________________________________________________________________ | |
26 | class AliFMDGeometryBuilder : public TTask | |
27 | { | |
28 | public: | |
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; } | |
48 | protected: | |
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 |