]>
Commit | Line | Data |
---|---|---|
5ad5f558 | 1 | #ifndef ALIJETDUMMYGEO_H |
2 | #define ALIJETDUMMYGEO_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
ee7de0dd | 7 | // |
8 | // Temporarily added to define part of the EMCal geometry | |
9 | // necessary for the jet finder | |
6b22f7f4 | 10 | // Magali.Estienne@cern.ch |
3e147bc8 | 11 | // |
5ad5f558 | 12 | #include <TObject.h> |
ee7de0dd | 13 | #include <TArrayD.h> |
14 | #include <TMath.h> | |
15 | #include <TVector3.h> | |
16 | ||
17 | class TGeoMatrix; | |
3e147bc8 | 18 | class AliJetDummyShishKebabTrd1Module; |
5ad5f558 | 19 | |
20 | class AliJetDummyGeo : public TObject | |
21 | { | |
22 | public: | |
ee7de0dd | 23 | AliJetDummyGeo(); |
24 | AliJetDummyGeo(const AliJetDummyGeo& geom); | |
25 | virtual ~AliJetDummyGeo(); | |
26 | static AliJetDummyGeo* GetInstance() {return new AliJetDummyGeo();} | |
27 | static AliJetDummyGeo* GetInstance(char* /*name*/, char* /*title*/) | |
28 | {return new AliJetDummyGeo();} | |
29 | Char_t* GetNameOfEMCALEnvelope() const {return "XEN1";} | |
30 | Float_t GetEnvelop(Int_t index) const { return fEnvelop[index];} | |
31 | Float_t AngleFromEta(Float_t eta) const { | |
32 | // returns theta in radians for a given pseudorapidity | |
33 | return 2.0*TMath::ATan(TMath::Exp(-eta)); | |
34 | } | |
35 | Float_t ZFromEtaR(Float_t r,Float_t eta) const { | |
36 | // returns z in for a given | |
37 | // pseudorapidity and r=sqrt(x*x+y*y). | |
38 | return r/TMath::Tan(AngleFromEta(eta)); | |
39 | } | |
6b22f7f4 | 40 | Int_t GetNCells() const {return fNCells;} |
41 | Float_t GetPhiModuleSize() const {return fPhiModuleSize;} | |
42 | Float_t GetEtaModuleSize() const {return fEtaModuleSize;} | |
43 | Float_t GetShellThickness() const {return fShellThickness;} | |
44 | Float_t GetSteelFrontThickness() const {return fSteelFrontThick;} | |
45 | Float_t GetLongModuleSize() const {return fLongModuleSize;} | |
46 | Float_t GetTrd1Angle() const {return fTrd1Angle;} | |
47 | Float_t Get2Trd1Dx2() const {return f2Trd1Dx2;} | |
48 | Int_t GetNPhi() const {return fNPhi;} | |
49 | Int_t GetNZ() const {return fNZ ;} | |
50 | Int_t GetNumberOfSuperModules() const {return fNumberOfSuperModules;} | |
51 | Float_t GetArm1EtaMin() const {return fArm1EtaMin;} | |
52 | Float_t GetArm1EtaMax() const {return fArm1EtaMax;} | |
53 | Float_t GetArm1PhiMin() const {return fArm1PhiMin;} | |
54 | Float_t GetArm1PhiMax() const {return fArm1PhiMax;} | |
55 | Float_t GetIPDistance() const {return fIPDistance;} | |
56 | void EtaPhiFromIndex(Int_t id, Float_t& eta, Float_t& phi); | |
3e147bc8 | 57 | void GetGlobal(const Double_t *loc, Double_t *glob, Int_t ind) const; |
ee7de0dd | 58 | void GetGlobal(Int_t absId, Double_t glob[3]) const; |
59 | void GetGlobal(Int_t absId, TVector3 &vglob) const; | |
60 | Bool_t RelPosCellInSModule(Int_t absId, Double_t loc[3]) const; | |
61 | Bool_t RelPosCellInSModule(Int_t absId, Double_t &xr, Double_t &yr, Double_t &zr) const; | |
62 | Bool_t CheckAbsCellId(Int_t absId) const; | |
63 | Bool_t GetCellIndex(Int_t absId,Int_t &nSupMod,Int_t &nModule,Int_t &nIphi,Int_t &nIeta) const; | |
3e147bc8 | 64 | void GetCellPhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta, Int_t &iphi, Int_t &ieta) const; |
65 | void GetModulePhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t &iphim, Int_t &ietam) const; | |
ee7de0dd | 66 | Bool_t GetAbsCellIdFromEtaPhi(Double_t eta,Double_t phi, Int_t &absId) const; |
67 | Bool_t SuperModuleNumberFromEtaPhi(Double_t eta, Double_t phi, Int_t &nSupMod) const; | |
68 | Int_t GetAbsCellIdFromCellIndexes(Int_t nSupMod, Int_t iphi, Int_t ieta) const; | |
69 | void GetModuleIndexesFromCellIndexesInSModule(Int_t nSupMod, Int_t iphi, Int_t ieta, | |
70 | Int_t &iphim, Int_t &ietam, Int_t &nModule) const; | |
71 | Int_t GetAbsCellId(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta) const; | |
72 | Int_t GetNumberOfModuleInPhiDirection(Int_t nSupMod) const | |
73 | { | |
74 | // inline function | |
75 | if(nSupMod>=10) return fNPhi/2; | |
76 | else return fNPhi; | |
77 | } | |
3e147bc8 | 78 | |
79 | void CreateListOfTrd1Modules(); | |
80 | TList *GetShishKebabTrd1Modules() const {return fShishKebabTrd1Modules;} | |
81 | AliJetDummyShishKebabTrd1Module *GetShishKebabModule(Int_t neta); | |
82 | ||
ee7de0dd | 83 | Bool_t GetPhiBoundariesOfSMGap(Int_t nPhiSec, Double_t &phiMin, Double_t &phiMax) const; |
84 | void GetTransformationForSM(); | |
6b22f7f4 | 85 | Float_t GetSampling() const {return fSampling;} |
9e4cc50d | 86 | private: |
87 | AliJetDummyGeo &operator=(const AliJetDummyGeo &det); | |
88 | ||
ee7de0dd | 89 | protected: |
ee7de0dd | 90 | Float_t fArm1EtaMin; // Minimum pseudorapidity position of EMCAL in Eta |
91 | Float_t fArm1EtaMax; // Maximum pseudorapidity position of EMCAL in Eta | |
3e147bc8 | 92 | Float_t fArm1PhiMin; // Minimum angular position of EMCAL in Phi (degrees) |
93 | Float_t fArm1PhiMax; // Maximum angular position of EMCAL in Phi (degrees) | |
6b22f7f4 | 94 | Int_t fNumberOfSuperModules; // Number of supermodules |
ee7de0dd | 95 | Float_t fSteelFrontThick; // Thickness of the front stell face of the support box - 9-sep-04 |
3e147bc8 | 96 | Float_t fLateralSteelStrip; // 13-may-05 |
ee7de0dd | 97 | Float_t fEnvelop[3]; // the GEANT TUB for the detector |
98 | Float_t fIPDistance; // Radial Distance of the inner surface of the EMCAL | |
ee7de0dd | 99 | Float_t fPhiGapForSM; // Gap betweeen supermodules in phi direction |
100 | Int_t fNPhi; // Number of Towers in the PHI direction | |
101 | Int_t fNZ; // Number of Towers in the Z direction | |
102 | Float_t fPhiModuleSize; // Phi -> X | |
103 | Float_t fEtaModuleSize; // Eta -> Y | |
104 | Int_t fNPHIdiv; // number phi divizion of module | |
105 | Int_t fNETAdiv; // number eta divizion of module | |
3e147bc8 | 106 | Float_t fPhiTileSize; // Size of phi tile |
107 | Float_t fEtaTileSize; // Size of eta tile | |
ee7de0dd | 108 | Int_t fNECLayers; // number of scintillator layers |
109 | Float_t fECScintThick; // cm, Thickness of the scintillators | |
110 | Float_t fECPbRadThickness; // cm, Thickness of the Pb radiators | |
111 | Float_t fSampling; // Sampling factor | |
112 | Float_t fTrd1Angle; // angle in x-z plane (in degree) | |
113 | Int_t fNCellsInModule; // number cell in module | |
114 | Int_t fNCellsInSupMod; // number cell in super module | |
115 | Int_t fNCells; // number of cells in calo | |
116 | Float_t fLongModuleSize; // Size of long module | |
117 | Float_t f2Trd1Dx2; // 2*dx2 for TRD1 | |
118 | Float_t fShellThickness; // Total thickness in (x,y) direction | |
3e147bc8 | 119 | Float_t fZLength; // Total length in z direction |
ee7de0dd | 120 | Float_t fEtaMaxOfTRD1; // max eta in case of TRD1 geometry (see AliEMCALShishKebabTrd1Module) |
121 | Float_t fParSM[3]; // SM sizes as in GEANT (TRD1) | |
122 | TArrayD fPhiBoundariesOfSM; // phi boundaries of SM in rad; size is fNumberOfSuperModules; | |
123 | TArrayD fPhiCentersOfSM; // phi of centers of SMl size is fNumberOfSuperModules/2 | |
124 | TGeoMatrix* fMatrixOfSM[12]; //![fNumberOfSuperModules]; get from gGeoManager; | |
125 | TArrayD fCentersOfCellsEtaDir; // size fNEta*fNETAdiv (for TRD1 only) (eta or z in SM, in cm) | |
126 | TArrayD fCentersOfCellsXDir; // size fNEta*fNETAdiv (for TRD1 only) ( x in SM, in cm) | |
127 | TArrayD fCentersOfCellsPhiDir; // size fNPhi*fNPHIdiv (for TRD1 only) (phi or y in SM, in cm) | |
128 | TArrayD fEtaCentersOfCells; // [fNEta*fNETAdiv*fNPhi*fNPHIdiv], positive direction (eta>0); | |
129 | // eta depend from phi position; | |
130 | TArrayD fPhiCentersOfCells; // [fNPhi*fNPHIdiv] from center of SM (-10. < phi < +10.) | |
6b22f7f4 | 131 | TList *fShishKebabTrd1Modules; // List of modules |
3e147bc8 | 132 | Int_t fDebug; // Debug flag |
ee7de0dd | 133 | ClassDef(AliJetDummyGeo,1) |
5ad5f558 | 134 | }; |
135 | ||
136 | #endif |