]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIEMCALGEOMETRY_H | |
2 | #define ALIEMCALGEOMETRY_H | |
3 | /* Copyright(c) 1998-2004, 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 layers of scintillator, and lead. | |
11 | // | |
12 | //*-- Author: Sahal Yacoob (LBL / UCT) | |
13 | //*-- and : Yves Schutz (Subatech) | |
14 | //*-- and : Alexei Pavlinov (WSU) - shashlyk staff | |
15 | //*-- and : Gustavo Conesa: Add TRU mapping. TRU parameters still not fixed. | |
16 | ||
17 | // --- ROOT system --- | |
18 | #include <Riostream.h> | |
19 | #include <TMath.h> | |
20 | #include <TArrayD.h> | |
21 | #include <TMatrixF.h> | |
22 | class TVector3; | |
23 | ||
24 | // --- AliRoot header files --- | |
25 | #include "AliEMCALGeoUtils.h" | |
26 | #include "AliEMCALEMCGeometry.h" | |
27 | //class AliRecPoint; | |
28 | //class AliEMCALRecPoint; | |
29 | ||
30 | class AliEMCALGeometry : public AliEMCALGeoUtils { | |
31 | ||
32 | public: | |
33 | ||
34 | AliEMCALGeometry(); // default ctor only for internal usage (singleton) | |
35 | AliEMCALGeometry(const AliEMCALGeometry& geom); | |
36 | virtual ~AliEMCALGeometry(void); | |
37 | ||
38 | static AliEMCALGeometry * GetInstance(const Text_t* name, | |
39 | const Text_t* title="") ; | |
40 | static AliEMCALGeometry * GetInstance(); | |
41 | AliEMCALGeometry & operator = (const AliEMCALGeometry & /*rvalue*/) { | |
42 | // assignement operator requested by coding convention but not needed | |
43 | Fatal("operator =", "not implemented"); | |
44 | return *this; | |
45 | }; | |
46 | ||
47 | ||
48 | ////////// | |
49 | // General | |
50 | // | |
51 | Bool_t IsInitialized(void) const { return AliEMCALEMCGeometry::fgInit ; } | |
52 | static const Char_t* GetDefaultGeometryName() {return AliEMCALEMCGeometry::fgkDefaultGeometryName;} | |
53 | ||
54 | ////////////////////////// | |
55 | // Global geometry methods | |
56 | // | |
57 | using AliEMCALGeoUtils::GetGlobal; | |
58 | ||
59 | // virtual void GetGlobal(const AliRecPoint *rp, TVector3 & gpos, TMatrixF & /* gmat */) | |
60 | // const {GetGlobal(rp,gpos); } | |
61 | // virtual void GetGlobalEMCAL(const AliEMCALRecPoint *rp, TVector3 &vglob) const; | |
62 | // virtual void GetGlobalEMCAL(const AliEMCALRecPoint *rp, TVector3 & gpos, TMatrixF & /* gmat */) | |
63 | // const {GetGlobalEMCAL(rp,gpos); } | |
64 | ||
65 | // Return EMC geometry parameters | |
66 | AliEMCALEMCGeometry * GetEMCGeometry() const {return fEMCGeometry ;} | |
67 | ||
68 | ////////////////////////////////////// | |
69 | // Return EMCAL geometrical parameters | |
70 | // | |
71 | const Char_t* GetNameOfEMCALEnvelope(void) const {return fEMCGeometry->GetNameOfEMCALEnvelope();} | |
72 | Float_t GetArm1PhiMin(void) const { return fEMCGeometry->GetArm1PhiMin(); } | |
73 | Float_t GetArm1PhiMax(void) const { return fEMCGeometry->GetArm1PhiMax(); } | |
74 | Float_t GetArm1EtaMin(void) const { return fEMCGeometry->GetArm1EtaMin();} | |
75 | Float_t GetArm1EtaMax(void) const { return fEMCGeometry->GetArm1EtaMax();} | |
76 | Float_t GetIPDistance(void) const { return fEMCGeometry->GetIPDistance();} | |
77 | Float_t GetEnvelop(Int_t index) const { return fEMCGeometry->GetEnvelop(index); } | |
78 | Float_t GetShellThickness(void) const { return fEMCGeometry->GetShellThickness(); } | |
79 | Float_t GetZLength(void) const { return fEMCGeometry->GetZLength(); } | |
80 | Int_t GetNECLayers(void) const {return fEMCGeometry->GetNECLayers();} | |
81 | Int_t GetNZ(void) const {return fEMCGeometry->GetNZ();} | |
82 | Int_t GetNEta(void) const {return fEMCGeometry->GetNEta();} | |
83 | Int_t GetNPhi(void) const {return fEMCGeometry->GetNPhi();} | |
84 | Float_t GetECPbRadThick(void)const {return fEMCGeometry->GetECPbRadThick();} | |
85 | Float_t GetECScintThick(void) const {return fEMCGeometry->GetECScintThick();} | |
86 | Float_t GetSampling(void) const {return fEMCGeometry->GetSampling(); } | |
87 | Int_t GetNumberOfSuperModules(void) const {return fEMCGeometry->GetNumberOfSuperModules();} | |
88 | Float_t GetfPhiGapForSuperModules(void) const {return fEMCGeometry->GetfPhiGapForSuperModules();} | |
89 | Float_t GetPhiModuleSize(void) const {return fEMCGeometry->GetPhiModuleSize();} | |
90 | Float_t GetEtaModuleSize(void) const {return fEMCGeometry->GetEtaModuleSize();} | |
91 | Float_t GetFrontSteelStrip(void) const {return fEMCGeometry->GetFrontSteelStrip();} | |
92 | Float_t GetLateralSteelStrip(void) const {return fEMCGeometry->GetLateralSteelStrip();} | |
93 | Float_t GetPassiveScintThick(void) const {return fEMCGeometry->GetPassiveScintThick();} | |
94 | Float_t GetPhiTileSize(void) const {return fEMCGeometry->GetPhiTileSize();} | |
95 | Float_t GetEtaTileSize(void) const {return fEMCGeometry->GetEtaTileSize();} | |
96 | Int_t GetNPhiSuperModule(void) const {return fEMCGeometry->GetNPhiSuperModule();} | |
97 | Int_t GetNPHIdiv(void) const {return fEMCGeometry->GetNPHIdiv();} | |
98 | Int_t GetNETAdiv(void) const {return fEMCGeometry->GetNETAdiv();} | |
99 | Int_t GetNCells(void) const {return fEMCGeometry->GetNCells();} | |
100 | Float_t GetLongModuleSize(void) const {return fEMCGeometry->GetLongModuleSize();} | |
101 | Float_t GetTrd1Angle(void) const {return fEMCGeometry->GetTrd1Angle();} | |
102 | Float_t Get2Trd1Dx2(void) const {return fEMCGeometry->Get2Trd1Dx2();} | |
103 | Float_t GetTrd1AlFrontThick() const {return fEMCGeometry->GetTrd1AlFrontThick();} | |
104 | Float_t GetTrd1BondPaperThick() const {return fEMCGeometry->GetTrd1BondPaperThick();} | |
105 | // -- | |
106 | Int_t GetNCellsInSupMod(void) const {return fEMCGeometry->GetNCellsInSupMod();} | |
107 | Int_t GetNCellsInModule(void) const {return fEMCGeometry->GetNCellsInModule(); } | |
108 | Int_t GetKey110DEG(void) const {return fEMCGeometry->GetKey110DEG();} | |
109 | Int_t GetILOSS(void) const {return fEMCGeometry->GetILOSS();} | |
110 | Int_t GetIHADR(void) const {return fEMCGeometry->GetIHADR();} | |
111 | // For gamma(Jet) trigger simulations | |
112 | Int_t GetNTRU() const {return fEMCGeometry->GetNTRU(); } | |
113 | Int_t GetNTRUEta() const {return fEMCGeometry->GetNTRUEta(); } | |
114 | Int_t GetNTRUPhi() const {return fEMCGeometry->GetNTRUPhi(); } | |
115 | Int_t GetNEtaSubOfTRU() const {return fEMCGeometry->GetNEtaSubOfTRU();} | |
116 | Int_t GetNModulesInTRU() const {return fEMCGeometry->GetNModulesInTRU(); } | |
117 | Int_t GetNModulesInTRUEta() const {return fEMCGeometry->GetNModulesInTRUEta(); } | |
118 | Int_t GetNModulesInTRUPhi() const {return fEMCGeometry->GetNModulesInTRUPhi(); } | |
119 | ||
120 | // -- | |
121 | Float_t GetDeltaEta(void) const {return fEMCGeometry->GetDeltaEta();} | |
122 | Float_t GetDeltaPhi(void) const {return fEMCGeometry->GetDeltaPhi();} | |
123 | Int_t GetNTowers(void) const {return fEMCGeometry->GetNTowers();} | |
124 | // | |
125 | Double_t GetPhiCenterOfSM(Int_t nsupmod) const {return fEMCGeometry->GetPhiCenterOfSM(nsupmod);} | |
126 | Float_t GetSuperModulesPar(Int_t ipar) const {return fEMCGeometry->GetSuperModulesPar(ipar);} | |
127 | // | |
128 | Bool_t GetPhiBoundariesOfSM(Int_t nSupMod, Double_t &phiMin, Double_t &phiMax) const {return fEMCGeometry->GetPhiBoundariesOfSM(nSupMod, phiMin, phiMax);} | |
129 | Bool_t GetPhiBoundariesOfSMGap(Int_t nPhiSec, Double_t &phiMin, Double_t &phiMax) const {return fEMCGeometry->GetPhiBoundariesOfSMGap(nPhiSec, phiMin, phiMax);} | |
130 | // | |
131 | ||
132 | // Methods for AliEMCALRecPoint with taking into account energy of rec.point - Jul 30. 2007 | |
133 | using AliEMCALGeoUtils::RelPosCellInSModule; | |
134 | Bool_t RelPosCellInSModule(Int_t absId,Double_t distEff,Double_t &xr,Double_t &yr, | |
135 | Double_t & zr) const; | |
136 | ||
137 | //Not in use, comment for the moment | |
138 | //Bool_t RelPosCellInSModule(Int_t absId,Int_t maxAbsId,Double_t distEff,Double_t &xr, | |
139 | // Double_t &yr,Double_t &zr) const; | |
140 | ||
141 | /////////////////////////////// | |
142 | //Geometry data member setters | |
143 | // | |
144 | void SetNZ(Int_t nz) { fEMCGeometry->SetNZ(nz);} | |
145 | void SetNPhi(Int_t nphi) { fEMCGeometry->SetNPhi(nphi);} | |
146 | ||
147 | void SetNTRUEta(Int_t ntru) { fEMCGeometry->SetNTRUEta(ntru);} | |
148 | void SetNTRUPhi(Int_t ntru) { fEMCGeometry->SetNTRUPhi(ntru);} | |
149 | void SetSampling(Float_t samp) { fEMCGeometry->SetSampling(samp);} | |
150 | ||
151 | void PrintGeometry() {fEMCGeometry->PrintGeometry();} //*MENU* | |
152 | ||
153 | ////////////////////////////////////////////////// | |
154 | // Obsolete methods to be thrown out when feasible | |
155 | Float_t GetGap2Active(void) const {return fEMCGeometry->GetGap2Active();} | |
156 | Float_t GetSteelFrontThickness(void) const { return fEMCGeometry->GetSteelFrontThickness();} | |
157 | Float_t GetTrd2AngleY(void) const {return fEMCGeometry->GetTrd2AngleY();} | |
158 | Float_t Get2Trd2Dy2(void) const {return fEMCGeometry->Get2Trd2Dy2();} | |
159 | Float_t GetTubsR(void) const {return fEMCGeometry->GetTubsR();} | |
160 | Float_t GetTubsTurnAngle(void) const {return fEMCGeometry->GetTubsTurnAngle();} | |
161 | //Float_t GetAlFrontThickness(void) const { return fEMCGeometry->GetAlFrontThickness();} | |
162 | // Float_t GetIP2ECASection(void) const { return fEMCGeometry->GetIP2ECASection(); } | |
163 | ////////////////////////////////////////////////// | |
164 | ||
165 | protected: | |
166 | ||
167 | // ctor only for internal usage (singleton) | |
168 | AliEMCALGeometry(const Text_t* name, const Text_t* title); | |
169 | ||
170 | void Init(void); // initializes the parameters of EMCAL | |
171 | ||
172 | private: | |
173 | ||
174 | //Member data | |
175 | static AliEMCALGeometry * fgGeom; // pointer to the unique instance of the singleton | |
176 | // static Bool_t fgInit; // Tells if geometry has been succesfully set up. | |
177 | static const Char_t* fgkDefaultGeometryName; // Default name of geometry | |
178 | ||
179 | /////////////////////////////////////////////////////////// | |
180 | ||
181 | ClassDef(AliEMCALGeometry, 15) // EMCAL geometry class | |
182 | }; | |
183 | ||
184 | #endif // AliEMCALGEOMETRY_H |