]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIEMCALGEOMETRY_H | |
2 | #define ALIEMCALGEOMETRY_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | //_________________________________________________________________________ | |
9 | // Geometry class for EMCAL : singleton | |
10 | // EMCAL consists of a shell of Pb | |
11 | // | |
12 | //*-- Author: Yves Schutz (SUBATECH) | |
13 | ||
14 | #include <assert.h> | |
15 | ||
16 | // --- ROOT system --- | |
17 | ||
18 | class TObjArray ; | |
19 | class TVector3; | |
20 | class TMatrix ; | |
21 | ||
22 | // --- AliRoot header files --- | |
23 | ||
24 | #include "AliGeometry.h" | |
25 | ||
26 | ||
27 | class AliEMCALGeometry : public AliGeometry { | |
28 | ||
29 | public: | |
30 | ||
31 | AliEMCALGeometry() { | |
32 | // default ctor | |
33 | // must be kept public for root persistency purposes, but should never be called by the outside world | |
34 | } ; | |
35 | ||
36 | AliEMCALGeometry(const AliEMCALGeometry & geom) { | |
37 | // cpy ctor requested by Coding Convention but not yet needed | |
38 | assert(0==1) ; | |
39 | } | |
40 | ||
41 | virtual ~AliEMCALGeometry(void) ; | |
42 | static AliEMCALGeometry * GetInstance(const Text_t* name, const Text_t* title="") ; | |
43 | static AliEMCALGeometry * GetInstance() ; | |
44 | ||
45 | AliEMCALGeometry & operator = (const AliEMCALGeometry & rvalue) const { | |
46 | // assignement operator requested by coding convention but not needed | |
47 | assert(0==1) ; | |
48 | return *(GetInstance()) ; | |
49 | } | |
50 | virtual void GetGlobal(const AliRecPoint *, TVector3 &, TMatrix &) const {} | |
51 | virtual void GetGlobal(const AliRecPoint *, TVector3 &) const {} | |
52 | // General | |
53 | ||
54 | Bool_t IsInitialized(void) const { return fgInit ; } | |
55 | ||
56 | // Return EMCA geometrical parameters | |
57 | ||
58 | // geometry | |
59 | const Float_t GetAirGap() const { return fAirGap ; } | |
60 | const Float_t GetArm1PhiMin() const { return fArm1PhiMin ; } | |
61 | const Float_t GetArm1PhiMax() const { return fArm1PhiMax ; } | |
62 | const Float_t GetArm2PhiMin() const { return fArm2PhiMin ; } | |
63 | const Float_t GetArm2PhiMax() const { return fArm2PhiMax ; } | |
64 | const Float_t GetIPDistance() const { return fIPDistance ; } | |
65 | const Float_t GetEnvelop(Int_t index) const { return fEnvelop[index] ; } | |
66 | const Float_t GetShellThickness() const { return fShellThickness ; } | |
67 | const Float_t GetZLength() const { return fZLength ; } | |
68 | const Float_t GetGap2Active() const {return fGap2Active ; } | |
69 | // material | |
70 | const Float_t GetAmat() const { return fAmat ; } | |
71 | const Float_t GetZmat() const { return fZmat ; } | |
72 | const Float_t GetDmat() const { return fDmat ; } | |
73 | const Float_t GetRmat() const { return fRmat ; } | |
74 | const Float_t GetEmat() const { return fEmat ; } | |
75 | const Float_t GetLmat() const { return fEmat * fRmat ; } | |
76 | ||
77 | protected: | |
78 | ||
79 | AliEMCALGeometry(const Text_t* name, const Text_t* title="") : AliGeometry(name, title) { | |
80 | // ctor only for internal usage (singleton) | |
81 | Init() ; | |
82 | } | |
83 | void Init(void) ; // initializes the parameters of EMCAL | |
84 | ||
85 | private: | |
86 | ||
87 | static AliEMCALGeometry * fgGeom ; // pointer to the unique instance of the singleton | |
88 | static Bool_t fgInit ; // Tells if geometry has been succesfully set up | |
89 | ||
90 | // geometry | |
91 | Float_t fAirGap ; // Distance between envelop and active material | |
92 | Float_t fArm1PhiMin ; // Minimum phi angle covered by Arm 1 | |
93 | Float_t fArm1PhiMax ; // Maximum phi angle covered by Arm 1 | |
94 | Float_t fArm2PhiMin ; // Minimum phi angle covered by Arm 2 | |
95 | Float_t fArm2PhiMax ; // Maximum phi angle covered by Arm 2 | |
96 | // It is assumed that Arm1 and Arm2 have the same following parameters | |
97 | Float_t fEnvelop[3] ; // the GEANT TUB that contains the 2 arms | |
98 | Float_t fIPDistance ; // Distance of the inner surface to the interaction point | |
99 | Float_t fShellThickness ; // Total thickness in (x,y) direction | |
100 | Float_t fZLength ; // Total length in z direction | |
101 | Float_t fGap2Active ; // Gap between the envelop and the active material | |
102 | ||
103 | //material | |
104 | Float_t fAmat ; // average atomic weight of the active material | |
105 | Float_t fZmat ; // average atomic number of the active material | |
106 | Float_t fDmat ; // average density of the active material | |
107 | Float_t fRmat ; // average radiation length of the active material | |
108 | Float_t fEmat ; // thickness of the active material in radiation length units | |
109 | ||
110 | ClassDef(AliEMCALGeometry,1) // EMCAL geometry class | |
111 | ||
112 | } ; | |
113 | ||
114 | #endif // AliEMCALGEOMETRY_H |