Project
Loading...
Searching...
No Matches
Geometry.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#ifndef ALICEO2_EMCAL_GEOMETRY_H_
13#define ALICEO2_EMCAL_GEOMETRY_H_
14
15#include <exception>
16#include <string>
17#include <tuple>
18#include <vector>
19
20#include <RStringView.h>
21#include <TGeoMatrix.h>
22#include <TNamed.h>
23#include <TParticle.h>
24#include <TVector3.h>
25
28#include "MathUtils/Cartesian.h"
29
30namespace o2
31{
32namespace emcal
33{
34class ShishKebabTrd1Module;
35
40{
41 public:
45 Geometry() = default;
46
60 Geometry(const std::string_view name, const std::string_view mcname = "", const std::string_view mctitle = "");
61
63 Geometry(const Geometry& geom);
64
66 ~Geometry();
67
69 Geometry& operator=(const Geometry& rvalue);
70
74 static Geometry* GetInstance();
75
85 static Geometry* GetInstance(const std::string_view name, const std::string_view mcname = "TGeant3",
86 const std::string_view mctitle = "");
87
94 static Geometry* GetInstanceFromRunNumber(Int_t runNumber, const std::string_view = "",
95 const std::string_view mcname = "TGeant3",
96 const std::string_view mctitle = "");
97
103 void DefineSamplingFraction(const std::string_view mcname = "", const std::string_view mctitle = "");
104
106 // General
107 //
108
109 const std::string& GetName() const { return mGeoName; }
110
111 static const std::string& GetDefaultGeometryName() { return DEFAULT_GEOMETRY; }
112
113 static Bool_t IsInitialized() { return Geometry::sGeom != nullptr; }
114
121
122 const std::vector<ShishKebabTrd1Module>& GetShishKebabTrd1Modules() const { return mShishKebabTrd1Modules; }
123
126 const ShishKebabTrd1Module& GetShishKebabModule(Int_t neta) const;
127
133 Bool_t Impact(const TParticle* particle) const;
134
145 void ImpactOnEmcal(const math_utils::Point3D<double>& vtx, Double_t theta, Double_t phi, Int_t& absId, math_utils::Point3D<double>& vimpact) const;
146
152 Bool_t IsInEMCAL(const math_utils::Point3D<double>& pnt) const;
153
159 Bool_t IsInDCAL(const math_utils::Point3D<double>& pnt) const;
160
170
172 // Return EMCAL geometrical parameters
173 //
174
175 const Char_t* GetNameOfEMCALEnvelope() const { return "XEN1"; }
181 Float_t GetEnvelop(Int_t index) const { return mEnvelop[index]; }
183 Float_t GetZLength() const { return mZLength; }
189 Int_t GetNECLayers() const { return mNECLayers; }
191
194 Int_t GetNZ() const { return mNZ; }
195
198 Int_t GetNEta() const { return mNZ; }
199
202 Int_t GetNPhi() const { return mNPhi; }
203
206 Float_t GetSampling() const { return mSampling; }
217 Int_t GetNPhiSuperModule() const { return mNPhiSuperModule; }
218 Int_t GetNPHIdiv() const { return mNPHIdiv; }
219 Int_t GetNETAdiv() const { return mNETAdiv; }
220 Int_t GetNCells() const { return mNCells; }
222 Float_t GetTrd1Angle() const { return mTrd1Angle; }
223 Float_t Get2Trd1Dx2() const { return m2Trd1Dx2; }
226 // --
227 Int_t GetNCellsInSupMod() const { return mNCellsInSupMod; }
228 Int_t GetNCellsInModule() const { return mNCellsInModule; }
229 Int_t GetKey110DEG() const { return mKey110DEG; }
230 Int_t GetnSupModInDCAL() const { return mnSupModInDCAL; }
231 Int_t GetILOSS() const { return mILOSS; }
232 Int_t GetIHADR() const { return mIHADR; }
233 // --
236 Int_t GetNTowers() const { return mNPhi * mNZ; }
237 //
238 Double_t GetPhiCenterOfSM(Int_t nsupmod) const;
239 Double_t GetPhiCenterOfSMSec(Int_t nsupmod) const;
240 Float_t GetSuperModulesPar(Int_t ipar) const { return mParSM[ipar]; }
241 //
242 EMCALSMType GetSMType(Int_t nSupMod) const
243 {
244 if (nSupMod >= mNumberOfSuperModules) {
246 }
247 return mEMCSMSystem[nSupMod];
248 }
249
253 Bool_t IsDCALSM(Int_t nSupMod) const;
254
258 Bool_t IsDCALExtSM(Int_t nSupMod) const;
259
260 // Methods needed for SM in extension, where center of SM != center of the SM-section.
261 // Used in AliEMCALv0 to calculate position.
262 std::tuple<double, double> GetPhiBoundariesOfSM(Int_t nSupMod) const;
263 std::tuple<double, double> GetPhiBoundariesOfSMGap(Int_t nPhiSec) const;
264
265 // Obsolete?
267
269 // Geometry data member setters
270 //
271 void SetNZ(Int_t nz) { mNZ = nz; }
272 void SetNPhi(Int_t nphi) { mNPhi = nphi; }
273 //
274 void SetSampling(Float_t samp) { mSampling = samp; }
275
277 // Global geometry methods
278 //
279
286 void GetGlobal(const Double_t* loc, Double_t* glob, int ind) const;
287
294 void GetGlobal(const TVector3& vloc, TVector3& vglob, int ind) const;
295
302 void GetGlobal(Int_t absId, Double_t glob[3]) const;
303
309 void GetGlobal(Int_t absId, TVector3& vglob) const;
310
312 // May 31, 2006; ALICE numbering scheme:
313 // see ALICE-INT-2003-038: ALICE Coordinate System and Software Numbering Convention
314 // All indexes are stared from zero now.
315 //
316 // abs id <-> indexes; Shish-kebab case, only TRD1 now.
317 // EMCAL -> Super Module -> module -> tower(or cell) - logic tree of EMCAL
318 //
319 //** Usual name of variable - Dec 18,2006 **
320 // nSupMod - index of super module (SM)
321 // nModule - index of module in SM
322 // nIphi - phi index of tower(cell) in module
323 // nIeta - eta index of tower(cell) in module
324 //
325 // Inside SM
326 // iphim - phi index of module in SM
327 // ietam - eta index of module in SM
328 //
329 // iphi - phi index of tower(cell) in SM
330 // ieta - eta index of tower(cell) in SM
331 //
332 // for a given tower index absId returns eta and phi of gravity center of tower.
333
339 std::tuple<double, double> EtaPhiFromIndex(Int_t absId) const;
340
347 int GetAbsCellIdFromEtaPhi(Double_t eta, Double_t phi) const;
348
353 std::tuple<int, int> GlobalRowColFromIndex(int cellID) const;
354
359 int GlobalCol(int cellID) const;
360
365 int GlobalRow(int cellID) const;
366
372 int GetCellAbsIDFromGlobalRowCol(int row, int col) const;
373
379 std::tuple<int, int, int> GetPositionInSupermoduleFromGlobalRowCol(int row, int col) const;
380
386 std::tuple<int, int, int, int> GetCellIndexFromGlobalRowCol(int row, int col) const;
387
393 int SuperModuleNumberFromEtaPhi(Double_t eta, Double_t phi) const;
394
403 int GetAbsCellId(int supermoduleID, int moduleID, int phiInModule, int etaInModule) const;
404
408 Bool_t CheckAbsCellId(Int_t absId) const;
409
414 std::tuple<int, int, int, int> GetCellIndex(Int_t absId) const;
415
420 std::tuple<int, int> GetModulePhiEtaIndexInSModule(int supermoduleID, int moduleID) const;
421
428 std::tuple<int, int> GetCellPhiEtaIndexInSModule(int supermoduleID, int moduleID, int phiInModule, int etaInModule) const;
429
443 std::tuple<int, int> ShiftOnlineToOfflineCellIndexes(Int_t supermoduleID, Int_t iphi, Int_t ieta) const;
444
456 std::tuple<int, int> ShiftOfflineToOnlineCellIndexes(Int_t supermoduleID, Int_t iphi, Int_t ieta) const;
457
461 Int_t GetSuperModuleNumber(Int_t absId) const;
462 Int_t GetNumberOfModuleInPhiDirection(Int_t nSupMod) const
463 {
464 if (GetSMType(nSupMod) == EMCAL_HALF) {
465 return mNPhi / 2;
466 } else if (GetSMType(nSupMod) == EMCAL_THIRD) {
467 return mNPhi / 3;
468 } else if (GetSMType(nSupMod) == DCAL_EXT) {
469 return mNPhi / 3;
470 } else {
471 return mNPhi;
472 }
473 }
474
484 std::tuple<int, int, int> GetModuleIndexesFromCellIndexesInSModule(int supermoduleID, int phiInSupermodule, int etaInSupermodule) const;
485
491 Int_t GetAbsCellIdFromCellIndexes(Int_t nSupMod, Int_t iphi, Int_t ieta) const;
492
501 math_utils::Point3D<double> RelPosCellInSModule(Int_t absId, Double_t distEf) const;
502
508
514 std::tuple<int, int, int> getOnlineID(int towerID);
515
522 std::tuple<int, int> getLinkAssignment(int ddlID) const { return std::make_tuple(mCRORCID[ddlID], mCRORCLink[ddlID]); };
523
524 std::vector<EMCALSMType> GetEMCSystem() const { return mEMCSMSystem; } // EMC System, SM type list
525 // Local Coordinates of SM
526 std::vector<Double_t> GetCentersOfCellsEtaDir() const
527 {
529 } // size fNEta*fNETAdiv (for TRD1 only) (eta or z in SM, in cm)
530 std::vector<Double_t> GetCentersOfCellsXDir() const
531 {
532 return mCentersOfCellsXDir;
533 } // size fNEta*fNETAdiv (for TRD1 only) ( x in SM, in cm)
534 std::vector<Double_t> GetCentersOfCellsPhiDir() const
535 {
537 } // size fNPhi*fNPHIdiv (for TRD1 only) (phi or y in SM, in cm)
538 //
539 std::vector<Double_t> GetEtaCentersOfCells() const
540 {
541 return mEtaCentersOfCells;
542 } // [fNEta*fNETAdiv*fNPhi*fNPHIdiv], positive direction (eta>0); eta depend from phi position;
543 std::vector<Double_t> GetPhiCentersOfCells() const
544 {
545 return mPhiCentersOfCells;
546 } // [fNPhi*fNPHIdiv] from center of SM (-10. < phi < +10.)
547
549 // useful utilities
550 //
552 { // returns theta in radians for a given pseudorapidity
553 return 2.0 * TMath::ATan(TMath::Exp(-eta));
554 }
556 { // returns z in for a given
557 // pseudorapidity and r=sqrt(x*x+y*y).
558 return r / TMath::Tan(AngleFromEta(eta));
559 }
560
565 void SetMisalMatrix(const TGeoHMatrix* m, Int_t smod) const;
566
576 void RecalculateTowerPosition(Float_t drow, Float_t dcol, const Int_t sm, const Float_t depth,
577 const Float_t misaligTransShifts[15], const Float_t misaligRotShifts[15],
578 Float_t global[3]) const;
579
584 const TGeoHMatrix* GetMatrixForSuperModule(Int_t smod) const;
585
589 const TGeoHMatrix* GetMatrixForSuperModuleFromGeoManager(Int_t smod) const;
590
597 const TGeoHMatrix* GetMatrixForSuperModuleFromArray(Int_t smod) const;
598
599 protected:
601 void Init();
602
604 void DefineEMC(std::string_view mcname, std::string_view mctitle);
605
612 std::tuple<int, int, int, int> CalculateCellIndex(Int_t absId) const;
613
614 std::string mGeoName;
618 Int_t mNETAdiv;
619 Int_t mNPHIdiv;
621 std::vector<Double_t> mPhiBoundariesOfSM;
622 std::vector<Double_t> mPhiCentersOfSM;
623 std::vector<Double_t> mPhiCentersOfSMSec;
624
625 // Local Coordinates of SM
626 std::vector<Double_t> mPhiCentersOfCells;
627 std::vector<Double_t> mCentersOfCellsEtaDir;
628 std::vector<Double_t> mCentersOfCellsPhiDir;
629 std::vector<Double_t>
631 Int_t mNCells;
632 Int_t mNPhi;
633 std::vector<Double_t> mCentersOfCellsXDir;
646 std::vector<ShishKebabTrd1Module> mShishKebabTrd1Modules;
652 Int_t mNZ;
655
656 // Geometry Parameters
660
661 // Members from the EMCGeometry class
665
666 // Shish-kebab option - 23-aug-04 by PAI; COMPACT, TWIST, TRD1 and TRD2
668
670 std::vector<EMCALSMType> mEMCSMSystem;
671
675
678
679 // TRD1 options - 30-sep-04
683
684 // Oct 26,2010
687
688 Int_t mILOSS;
689 Int_t mIHADR;
690
692
693 std::array<int, 46> mCRORCID = {110, 110, 112, 112, 110, 110, 112, 112, 110, 110, 112, 112, 111, 111, 113, 113, 111, 111, 113, 113, 111, 111, 113, 113, 114, 114, 116, 116, 114, 114, 116, 116, 115, 115, 117, 117, 115, 115, 117, 117, -1, -1, -1, -1, 111, 117}; // CRORC ID w.r.t SM
694 std::array<int, 46> mCRORCLink = {0, 1, 0, 1, 2, 3, 2, 3, 4, 5, 4, 5, 0, 1, 0, 1, 2, 3, 2, 3, 4, -1, 4, 5, 0, 1, 0, 1, 2, 3, 2, 3, 0, 1, 0, 1, 2, 3, 2, -1, -1, -1, -1, -1, 5, 3}; // CRORC limk w.r.t FEE ID
695
696 mutable const TGeoHMatrix* SMODULEMATRIX[EMCAL_MODULES];
697 std::vector<std::tuple<int, int, int, int>> mCellIndexLookup;
698
699 private:
700 static Geometry* sGeom;
701};
702
703inline Bool_t Geometry::CheckAbsCellId(Int_t absId) const
704{
705 if (absId < 0 || absId >= mNCells) {
706 return kFALSE;
707 } else {
708 return kTRUE;
709 }
710}
711} // namespace emcal
712} // namespace o2
713#endif
uint32_t col
Definition RawData.h:4
EMCAL geometry definition.
Definition Geometry.h:40
Float_t GetDCALInnerExtandedEta() const
Definition Geometry.h:190
std::tuple< int, int, int > GetModuleIndexesFromCellIndexesInSModule(int supermoduleID, int phiInSupermodule, int etaInSupermodule) const
Transition from cell indexes (iphi, ieta) to module indexes (iphim, ietam, nModule)
Definition Geometry.cxx:778
Float_t mFrontSteelStrip
13-may-05
Definition Geometry.h:672
static Geometry * GetInstanceFromRunNumber(Int_t runNumber, const std::string_view="", const std::string_view mcname="TGeant3", const std::string_view mctitle="")
Instanciate geometry depending on the run number. Mostly used in analysis and MC anchors.
Definition Geometry.cxx:219
Float_t mEtaMaxOfTRD1
Max eta in case of TRD1 geometry (see AliEMCALShishKebabTrd1Module)
Definition Geometry.h:639
Int_t GetSuperModuleNumber(Int_t absId) const
Get cell SM, from absolute ID number.
void RecalculateTowerPosition(Float_t drow, Float_t dcol, const Int_t sm, const Float_t depth, const Float_t misaligTransShifts[15], const Float_t misaligRotShifts[15], Float_t global[3]) const
Int_t GetNCells() const
Definition Geometry.h:220
std::tuple< int, int, int, int > CalculateCellIndex(Int_t absId) const
Calculate cell SM, module numbers from absolute ID number.
Float_t mIPDistance
Radial Distance of the inner surface of the EMCAL.
Definition Geometry.h:653
Float_t mDCALPhiMin
Minimum angular position of DCAL in Phi (degrees)
Definition Geometry.h:640
Float_t mPassiveScintThick
13-may-05
Definition Geometry.h:674
Float_t mPhiTileSize
Size of phi tile.
Definition Geometry.h:650
int GlobalRow(int cellID) const
Get row number of cell in global numbering scheme.
Definition Geometry.cxx:896
Float_t GetDCALPhiMax() const
Definition Geometry.h:186
Int_t mNZ
Number of Towers in the Z direction.
Definition Geometry.h:652
Float_t mECScintThick
cm, Thickness of the scintillators
Definition Geometry.h:663
const TGeoHMatrix * GetMatrixForSuperModuleFromGeoManager(Int_t smod) const
Provides shift-rotation matrix for EMCAL from the TGeoManager.
std::tuple< int, int > GetCellPhiEtaIndexInSModule(int supermoduleID, int moduleID, int phiInModule, int etaInModule) const
Get eta-phi indexes of cell in SM.
Float_t GetSampling() const
Definition Geometry.h:206
std::tuple< int, int, int, int > GetCellIndex(Int_t absId) const
Get cell SM, module numbers from absolute ID number.
Float_t GetArm1PhiMin() const
Definition Geometry.h:176
Int_t GetNCellsInSupMod() const
Definition Geometry.h:227
std::tuple< double, double > GetPhiBoundariesOfSM(Int_t nSupMod) const
Int_t mNECLayers
number of scintillator layers
Definition Geometry.h:664
Int_t GetNZ() const
Get the number of modules in supermodule in z- (beam) direction.
Definition Geometry.h:194
std::vector< Double_t > mPhiCentersOfCells
[fNPhi*fNPHIdiv] from center of SM (-10. < phi < +10.)
Definition Geometry.h:626
const TGeoHMatrix * GetMatrixForSuperModule(Int_t smod) const
Provides shift-rotation matrix for EMCAL from externally set matrix or from TGeoManager.
Geometry & operator=(const Geometry &rvalue)
Assignment operator.
Definition Geometry.cxx:170
Float_t GetDCALInnerEdge() const
Definition Geometry.h:184
static Bool_t IsInitialized()
Definition Geometry.h:113
std::tuple< int, int, int > getOnlineID(int towerID)
Get link ID, row and column from cell ID, have a look here: https://alice.its.cern....
Int_t GetNEta() const
Get the number of modules in supermodule in #eta direction.
Definition Geometry.h:198
Float_t GetLateralSteelStrip() const
Definition Geometry.h:212
void SetSampling(Float_t samp)
Definition Geometry.h:274
Float_t mEtaModuleSize
Eta -> Y.
Definition Geometry.h:649
Double_t GetPhiCenterOfSMSec(Int_t nsupmod) const
Float_t GetPhiModuleSize() const
Definition Geometry.h:209
Float_t GetSuperModulesPar(Int_t ipar) const
Definition Geometry.h:240
std::vector< Double_t > GetCentersOfCellsXDir() const
Definition Geometry.h:530
Bool_t CheckAbsCellId(Int_t absId) const
Check whether a cell number is valid.
Definition Geometry.h:703
Float_t Get2Trd1Dx2() const
Definition Geometry.h:223
const Char_t * GetNameOfEMCALEnvelope() const
Definition Geometry.h:175
Float_t GetFrontSteelStrip() const
Definition Geometry.h:211
Float_t mZLength
Total length in z direction.
Definition Geometry.h:658
Float_t mEnvelop[3]
The GEANT TUB for the detector.
Definition Geometry.h:634
Float_t mDCALInnerEdge
Inner edge for DCAL.
Definition Geometry.h:645
void CreateListOfTrd1Modules()
std::vector< Double_t > GetCentersOfCellsPhiDir() const
Definition Geometry.h:534
Float_t mParSM[3]
SM sizes as in GEANT (TRD1)
Definition Geometry.h:647
Float_t GetShellThickness() const
Definition Geometry.h:182
Int_t mNCellsInModule
Number cell in module.
Definition Geometry.h:620
std::vector< EMCALSMType > mEMCSMSystem
geometry structure
Definition Geometry.h:670
Bool_t IsDCALExtSM(Int_t nSupMod) const
Check if iSupMod is a valid DCal 1/3rd SM.
std::tuple< int, int, int, int > GetCellIndexFromGlobalRowCol(int row, int col) const
Get the cell indices from global position in the EMCAL.
Definition Geometry.cxx:880
Int_t mIHADR
Options for Geant (MIP business) - will call in AliEMCAL.
Definition Geometry.h:689
Double_t GetPhiCenterOfSM(Int_t nsupmod) const
Int_t GetKey110DEG() const
Definition Geometry.h:229
const TGeoHMatrix * SMODULEMATRIX[EMCAL_MODULES]
Orientations of EMCAL super modules.
Definition Geometry.h:696
std::tuple< int, int > GetModulePhiEtaIndexInSModule(int supermoduleID, int moduleID) const
Get eta-phi indexes of module in SM.
std::tuple< int, int, int > GetPositionInSupermoduleFromGlobalRowCol(int row, int col) const
Get the posision (row, col) of a global row-col position.
Definition Geometry.cxx:834
Float_t GetArm1EtaMin() const
Definition Geometry.h:178
const TGeoHMatrix * GetMatrixForSuperModuleFromArray(Int_t smod) const
Provides shift-rotation matrix for EMCAL from fkSModuleMatrix[smod].
Float_t GetPhiSuperModule() const
Definition Geometry.h:216
Float_t ZFromEtaR(Float_t r, Float_t eta) const
Definition Geometry.h:555
Float_t mTrd1AlFrontThick
Thickness of the Al front plate.
Definition Geometry.h:685
Float_t mSampling
Sampling factor.
Definition Geometry.h:659
Float_t mDCALPhiMax
Maximum angular position of DCAL in Phi (degrees)
Definition Geometry.h:641
Float_t mTrd1BondPaperThick
Thickness of the Bond Paper sheet.
Definition Geometry.h:686
Int_t GetNCellsInModule() const
Definition Geometry.h:228
Float_t GetPhiGapForSuperModules() const
Definition Geometry.h:208
Float_t GetEMCALPhiMax() const
Definition Geometry.h:187
Int_t mNCells
Number of cells in calo.
Definition Geometry.h:631
Float_t mArm1PhiMin
Minimum angular position of EMCAL in Phi (degrees)
Definition Geometry.h:637
void SetMisalMatrix(const TGeoHMatrix *m, Int_t smod) const
Float_t GetDeltaEta() const
Definition Geometry.h:234
const std::vector< ShishKebabTrd1Module > & GetShishKebabTrd1Modules() const
Definition Geometry.h:122
Int_t mNETAdiv
Number eta division of module.
Definition Geometry.h:618
std::vector< EMCALSMType > GetEMCSystem() const
Definition Geometry.h:524
Float_t mLateralSteelStrip
13-may-05
Definition Geometry.h:673
std::tuple< int, int > GlobalRowColFromIndex(int cellID) const
get (Column,Row) pair of cell in global numbering scheme
Definition Geometry.cxx:808
Float_t GetDCALPhiMin() const
Definition Geometry.h:185
Int_t GetnSupModInDCAL() const
Definition Geometry.h:230
Float_t mTrd1Angle
angle in x-z plane (in degree)
Definition Geometry.h:680
Float_t mECPbRadThickness
cm, Thickness of the Pb radiators
Definition Geometry.h:662
void GetGlobal(const Double_t *loc, Double_t *glob, int ind) const
Figure out the global coordinates from local coordinates on a supermodule.
Definition Geometry.cxx:681
std::vector< Double_t > mEtaCentersOfCells
[fNEta*fNETAdiv*fNPhi*fNPHIdiv], positive direction (eta>0); eta depend from phi position;
Definition Geometry.h:630
int GetAbsCellId(int supermoduleID, int moduleID, int phiInModule, int etaInModule) const
Get cell absolute ID number from location module (2 times 2 cells) of a super module.
Definition Geometry.cxx:738
Float_t mArm1PhiMax
Maximum angular position of EMCAL in Phi (degrees)
Definition Geometry.h:638
static Geometry * GetInstance()
Get geometry instance. It should have been set before.
Definition Geometry.cxx:190
std::array< int, 46 > mCRORCID
Definition Geometry.h:693
std::tuple< double, double > EtaPhiFromIndex(Int_t absId) const
Figure out the eta/phi coordinates of a cell.
Definition Geometry.cxx:731
Int_t mKey110DEG
For calculation abs cell id; 19-oct-05.
Definition Geometry.h:615
std::vector< Double_t > mPhiCentersOfSMSec
Phi of centers of section where SM lies; size is fNumberOfSuperModules/2.
Definition Geometry.h:623
std::vector< Double_t > mCentersOfCellsEtaDir
Size fNEta*fNETAdiv (for TRD1 only) (eta or z in SM, in cm)
Definition Geometry.h:627
std::string mGeoName
Geometry name string.
Definition Geometry.h:614
Int_t GetNPhiSuperModule() const
Definition Geometry.h:217
int GlobalCol(int cellID) const
Get column number of cell in global numbering scheme.
Definition Geometry.cxx:891
Float_t mShellThickness
Total thickness in (x,y) direction.
Definition Geometry.h:657
EMCALSMType GetSMType(Int_t nSupMod) const
Definition Geometry.h:242
std::vector< Double_t > mCentersOfCellsPhiDir
Size fNPhi*fNPHIdiv (for TRD1 only) (phi or y in SM, in cm)
Definition Geometry.h:628
std::vector< Double_t > GetPhiCentersOfCells() const
Definition Geometry.h:543
Int_t GetILOSS() const
Definition Geometry.h:231
Float_t GetSteelFrontThickness() const
Definition Geometry.h:266
Int_t mNPHIdiv
Number phi division of module.
Definition Geometry.h:619
Int_t mnSupModInDCAL
For calculation abs cell id; 06-nov-12.
Definition Geometry.h:616
Float_t mEtaTileSize
Size of eta tile.
Definition Geometry.h:651
std::tuple< int, int > getLinkAssignment(int ddlID) const
Temporary link assignment (till final link assignment is known -.
Definition Geometry.h:522
Float_t GetDeltaPhi() const
Definition Geometry.h:235
Float_t GetLongModuleSize() const
Definition Geometry.h:221
std::array< int, 46 > mCRORCLink
Definition Geometry.h:694
Float_t GetPhiTileSize() const
Definition Geometry.h:214
int SuperModuleNumberFromEtaPhi(Double_t eta, Double_t phi) const
Given a global eta/phi point check if it belongs to a supermodule covered region.
Definition Geometry.cxx:901
void DefineEMC(std::string_view mcname, std::string_view mctitle)
Init function of previous class EMCGeometry.
Definition Geometry.cxx:343
Bool_t IsDCALSM(Int_t nSupMod) const
Check if iSupMod is a valid DCal standard SM.
void Init()
initializes the parameters of EMCAL
Int_t GetNTowers() const
Definition Geometry.h:236
Bool_t Impact(const TParticle *particle) const
Check if particle falls in the EMCal/DCal geometry.
std::vector< ShishKebabTrd1Module > mShishKebabTrd1Modules
List of modules.
Definition Geometry.h:646
Float_t GetZLength() const
Definition Geometry.h:183
Bool_t IsInEMCAL(const math_utils::Point3D< double > &pnt) const
Checks whether point is inside the EMCal volume.
Float_t AngleFromEta(Float_t eta) const
Definition Geometry.h:551
math_utils::Point3D< double > RelPosCellInSModule(Int_t absId, Double_t distEf) const
Look to see what the relative position inside a given cell is for a recpoint.
void SetNZ(Int_t nz)
Definition Geometry.h:271
const std::string & GetName() const
Definition Geometry.h:109
Int_t GetIHADR() const
Definition Geometry.h:232
Float_t mEMCALPhiMax
Maximum angular position of EMCAL in Phi (degrees)
Definition Geometry.h:642
Bool_t IsInDCAL(const math_utils::Point3D< double > &pnt) const
Checks whether point is inside the DCal volume.
static const std::string & GetDefaultGeometryName()
Definition Geometry.h:111
Int_t GetNECLayers() const
Definition Geometry.h:189
Float_t GetIPDistance() const
Definition Geometry.h:180
Int_t mNPhiSuperModule
9 - number supermodule in phi direction
Definition Geometry.h:677
Float_t mPhiModuleSize
Phi -> X.
Definition Geometry.h:648
Float_t mPhiGapForSM
Gap betweeen supermodules in phi direction.
Definition Geometry.h:682
Geometry()=default
Default constructor. It must be kept public for root persistency purposes, but should never be called...
Float_t m2Trd1Dx2
2*dx2 for TRD1
Definition Geometry.h:681
Float_t GetDCALStandardPhiMax() const
Definition Geometry.h:188
AcceptanceType_t IsInEMCALOrDCAL(const math_utils::Point3D< double > &pnt) const
Checks whether point is inside the EMCal volume (included DCal)
Float_t GetTrd1Angle() const
Definition Geometry.h:222
std::vector< Double_t > GetEtaCentersOfCells() const
Definition Geometry.h:539
Int_t mILOSS
Options for Geant (MIP business) - will call in AliEMCAL.
Definition Geometry.h:688
Int_t GetNumberOfSuperModules() const
Definition Geometry.h:207
Float_t GetECScintThick() const
Definition Geometry.h:205
~Geometry()
Destructor.
Definition Geometry.cxx:176
Int_t GetNumberOfModuleInPhiDirection(Int_t nSupMod) const
Definition Geometry.h:462
std::tuple< int, int > ShiftOnlineToOfflineCellIndexes(Int_t supermoduleID, Int_t iphi, Int_t ieta) const
Adapt cell indices in supermodule to online indexing.
Float_t mPhiSuperModule
Phi of normal supermodule (20, in degree)
Definition Geometry.h:676
Float_t GetTrd1BondPaperThick() const
Definition Geometry.h:225
Float_t mArm1EtaMin
Minimum pseudorapidity position of EMCAL in Eta.
Definition Geometry.h:635
void ImpactOnEmcal(const math_utils::Point3D< double > &vtx, Double_t theta, Double_t phi, Int_t &absId, math_utils::Point3D< double > &vimpact) const
Get the impact coordinates on EMCAL.
Float_t GetArm1EtaMax() const
Definition Geometry.h:179
std::vector< Double_t > GetCentersOfCellsEtaDir() const
Definition Geometry.h:526
Int_t GetNPhi() const
Get the number of modules in supermodule in #phi direction.
Definition Geometry.h:202
Float_t mArm1EtaMax
Maximum pseudorapidity position of EMCAL in Eta.
Definition Geometry.h:636
Int_t GetAbsCellIdFromCellIndexes(Int_t nSupMod, Int_t iphi, Int_t ieta) const
Transition from super module number (nSupMod) and cell indexes (ieta,iphi) to cell absolute ID number...
Definition Geometry.cxx:791
std::vector< Double_t > mCentersOfCellsXDir
Size fNEta*fNETAdiv (for TRD1 only) ( x in SM, in cm)
Definition Geometry.h:633
void SetNPhi(Int_t nphi)
Definition Geometry.h:272
Float_t GetEtaModuleSize() const
Definition Geometry.h:210
Float_t GetTrd1AlFrontThick() const
Definition Geometry.h:224
Int_t mNPhi
Number of Towers in the PHI direction.
Definition Geometry.h:632
const ShishKebabTrd1Module & GetShishKebabModule(Int_t neta) const
Get the Module parameters for a eta.
Int_t mNumberOfSuperModules
default is 12 = 6 * 2
Definition Geometry.h:667
std::tuple< double, double > GetPhiBoundariesOfSMGap(Int_t nPhiSec) const
std::vector< Double_t > mPhiBoundariesOfSM
Phi boundaries of SM in rad; size is fNumberOfSuperModules;.
Definition Geometry.h:621
std::vector< std::tuple< int, int, int, int > > mCellIndexLookup
Lookup table for cell indices.
Definition Geometry.h:697
void DefineSamplingFraction(const std::string_view mcname="", const std::string_view mctitle="")
Set the value of the Sampling used to calibrate the MC hits energy (check)
Definition Geometry.cxx:285
Int_t GetNPHIdiv() const
Definition Geometry.h:218
Float_t mDCALStandardPhiMax
Special edge for the case that DCAL contian extension.
Definition Geometry.h:643
Float_t mLongModuleSize
Size of long module.
Definition Geometry.h:654
Float_t GetEnvelop(Int_t index) const
Definition Geometry.h:181
Float_t mSteelFrontThick
Thickness of the front stell face of the support box - 9-sep-04; obsolete?
Definition Geometry.h:691
Float_t GetECPbRadThick() const
Definition Geometry.h:204
Float_t GetArm1PhiMax() const
Definition Geometry.h:177
int GetAbsCellIdFromEtaPhi(Double_t eta, Double_t phi) const
Get cell absolute ID number from eta and phi location.
Definition Geometry.cxx:932
Int_t mNCellsInSupMod
Number cell in super module.
Definition Geometry.h:617
int GetCellAbsIDFromGlobalRowCol(int row, int col) const
Get the absolute cell ID from global position in the EMCAL.
Definition Geometry.cxx:874
std::tuple< int, int > ShiftOfflineToOnlineCellIndexes(Int_t supermoduleID, Int_t iphi, Int_t ieta) const
Adapt cell indices in supermodule to offline indexing.
std::vector< Double_t > mPhiCentersOfSM
Phi of centers of SM; size is fNumberOfSuperModules/2.
Definition Geometry.h:622
Float_t GetPassiveScintThick() const
Definition Geometry.h:213
Float_t mDCALInnerExtandedEta
DCAL inner edge in Eta (with some extension)
Definition Geometry.h:644
Float_t GetEtaTileSize() const
Definition Geometry.h:215
Int_t GetNETAdiv() const
Definition Geometry.h:219
Main class for TRD1 geometry of Shish-Kebab case.
Handling error due to invalid supermodule.
const GLfloat * m
Definition glcorearb.h:4066
GLuint index
Definition glcorearb.h:781
GLuint const GLchar * name
Definition glcorearb.h:781
GLint GLint GLsizei GLsizei GLsizei depth
Definition glcorearb.h:470
GLboolean r
Definition glcorearb.h:1233
const std::string DEFAULT_GEOMETRY
@ EMCAL_MODULES
Number of modules, 12 for EMCal + 8 for DCAL.
Definition Constants.h:24
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::vector< int > row