2012850d |
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 |
b13bbe81 |
10 | // EMCAL consists of a layers of scintillator, and lead. |
2012850d |
11 | // |
b13bbe81 |
12 | //*-- Author: Sahal Yacoob (LBL / UCT) |
13 | //*-- and : Yves Schutz (Subatech) |
14 | |
2012850d |
15 | #include <assert.h> |
16 | |
17 | // --- ROOT system --- |
b13bbe81 |
18 | #include "TString.h" |
19 | #include "TObjArray.h" |
20 | #include "TVector3.h" |
2012850d |
21 | |
b13bbe81 |
22 | //class TObjArray ; |
23 | //class TVector3; |
24 | //class TMatrix ; |
2012850d |
25 | |
26 | // --- AliRoot header files --- |
27 | |
28 | #include "AliGeometry.h" |
29 | |
30 | |
31 | class AliEMCALGeometry : public AliGeometry { |
32 | |
33 | public: |
34 | |
35 | AliEMCALGeometry() { |
36 | // default ctor |
37 | // must be kept public for root persistency purposes, but should never be called by the outside world |
38 | } ; |
39 | |
40 | AliEMCALGeometry(const AliEMCALGeometry & geom) { |
41 | // cpy ctor requested by Coding Convention but not yet needed |
42 | assert(0==1) ; |
43 | } |
44 | |
45 | virtual ~AliEMCALGeometry(void) ; |
46 | static AliEMCALGeometry * GetInstance(const Text_t* name, const Text_t* title="") ; |
47 | static AliEMCALGeometry * GetInstance() ; |
48 | |
49 | AliEMCALGeometry & operator = (const AliEMCALGeometry & rvalue) const { |
50 | // assignement operator requested by coding convention but not needed |
51 | assert(0==1) ; |
52 | return *(GetInstance()) ; |
53 | } |
54 | virtual void GetGlobal(const AliRecPoint *, TVector3 &, TMatrix &) const {} |
55 | virtual void GetGlobal(const AliRecPoint *, TVector3 &) const {} |
56 | // General |
57 | |
58 | Bool_t IsInitialized(void) const { return fgInit ; } |
59 | |
60 | // Return EMCA geometrical parameters |
61 | |
62 | // geometry |
63 | const Float_t GetAirGap() const { return fAirGap ; } |
64 | const Float_t GetArm1PhiMin() const { return fArm1PhiMin ; } |
65 | const Float_t GetArm1PhiMax() const { return fArm1PhiMax ; } |
2012850d |
66 | const Float_t GetIPDistance() const { return fIPDistance ; } |
67 | const Float_t GetEnvelop(Int_t index) const { return fEnvelop[index] ; } |
68 | const Float_t GetShellThickness() const { return fShellThickness ; } |
69 | const Float_t GetZLength() const { return fZLength ; } |
c23c27b1 |
70 | const Float_t GetGap2Active() const {return fGap2Active ; } |
b13bbe81 |
71 | const Int_t GetNLayers() const {return fNLayers ;} |
72 | const Int_t GetNZ() const {return fNZ ;} |
73 | const Int_t GetNPhi() const {return fNPhi ;} |
74 | |
2012850d |
75 | protected: |
76 | |
77 | AliEMCALGeometry(const Text_t* name, const Text_t* title="") : AliGeometry(name, title) { |
78 | // ctor only for internal usage (singleton) |
79 | Init() ; |
80 | } |
81 | void Init(void) ; // initializes the parameters of EMCAL |
82 | |
83 | private: |
84 | |
85 | static AliEMCALGeometry * fgGeom ; // pointer to the unique instance of the singleton |
86 | static Bool_t fgInit ; // Tells if geometry has been succesfully set up |
87 | |
88 | // geometry |
89 | Float_t fAirGap ; // Distance between envelop and active material |
ffa6d63b |
90 | Float_t fArm1PhiMin ; // Minimum angular position of EMCAL in Phi (degrees) |
91 | Float_t fArm1PhiMax ; // Maximum angular position of EMCAL in Phi (degrees) |
b13bbe81 |
92 | |
93 | // It is assumed that Arm1 and Arm2 have the same following parameters |
ffa6d63b |
94 | Float_t fEnvelop[3] ; // the GEANT TUB for the detector |
2012850d |
95 | Float_t fIPDistance ; // Distance of the inner surface to the interaction point |
96 | Float_t fShellThickness ; // Total thickness in (x,y) direction |
97 | Float_t fZLength ; // Total length in z direction |
c23c27b1 |
98 | Float_t fGap2Active ; // Gap between the envelop and the active material |
b13bbe81 |
99 | Int_t fNLayers ; // Number of layers of material in the R direction |
100 | Int_t fNZ ; // Number of Towers in the Z direction |
101 | Int_t fNPhi ; //Number of Towers in the Phi Direction |
2012850d |
102 | |
ffa6d63b |
103 | ClassDef(AliEMCALGeometry,2) // EMCAL geometry class |
2012850d |
104 | |
105 | } ; |
106 | |
107 | #endif // AliEMCALGEOMETRY_H |