#ifndef ALIEMCALEMCGEOMETRY_H
#define ALIEMCALEMCGEOMETRY_H
#include <TMath.h>
#include <TArrayD.h>
#include <TNamed.h>
class TString ;
class TObjArray;
class Riostream;
class AliEMCALEMCGeometry;
class AliEMCALShishKebabTrd1Module;
class AliEMCALEMCGeometry : public TNamed {
public:
enum fEMCSMType { kEMCAL_Standard = 0, kEMCAL_Half = 1, kEMCAL_3rd = 2, kDCAL_Standard = 3, kDCAL_Ext= 4 };
AliEMCALEMCGeometry();
AliEMCALEMCGeometry(const AliEMCALEMCGeometry& geom);
AliEMCALEMCGeometry(const Text_t* name, const Text_t* title,
const Text_t* mcname="", const Text_t* mctitle="");
virtual ~AliEMCALEMCGeometry(void);
AliEMCALEMCGeometry & operator = (const AliEMCALEMCGeometry & ) {
Fatal("operator =", "not implemented");
return *this;
};
Bool_t IsInitialized(void) const { return fgInit ; }
static const Char_t* GetDefaultGeometryName() {return fgkDefaultGeometryName;}
void PrintGeometry();
void Init(const Text_t* mcname="", const Text_t* mctitle="");
void CheckAdditionalOptions();
void DefineSamplingFraction(const Text_t* mcname="", const Text_t* mctitle="");
TString GetGeoName() const {return fGeoName;}
Int_t * GetEMCSystem() const {return fEMCSMSystem;}
const Char_t* GetNameOfEMCALEnvelope() const { const Char_t* env = "XEN1"; return env ;}
Float_t GetArm1PhiMin() const { return fArm1PhiMin ; }
Float_t GetArm1PhiMax() const { return fArm1PhiMax ; }
Float_t GetArm1EtaMin() const { return fArm1EtaMin;}
Float_t GetArm1EtaMax() const { return fArm1EtaMax;}
Float_t GetIPDistance() const { return fIPDistance;}
Float_t GetEnvelop(Int_t index) const { return fEnvelop[index] ; }
Float_t GetShellThickness() const { return fShellThickness ; }
Float_t GetZLength() const { return fZLength ; }
Float_t GetDCALInnerEdge() const { return fDCALInnerEdge ; }
Float_t GetDCALPhiMin() const { return fDCALPhiMin ; }
Float_t GetDCALPhiMax() const { return fDCALPhiMax ; }
Float_t GetDCALInnerExtandedEta() const { return fDCALInnerExtandedEta ; }
Float_t GetEMCALPhiMax() const { return fEMCALPhiMax ; }
Float_t GetDCALStandardPhiMax() const { return fDCALStandardPhiMax ; }
Int_t GetNECLayers() const {return fNECLayers ;}
Int_t GetNZ() const {return fNZ ;}
Int_t GetNEta() const {return fNZ ;}
Int_t GetNPhi() const {return fNPhi ;}
Float_t GetECPbRadThick()const {return fECPbRadThickness;}
Float_t GetECScintThick() const {return fECScintThick;}
Float_t GetSampling() const {return fSampling ; }
Int_t GetNumberOfSuperModules() const {return fNumberOfSuperModules;}
Float_t GetPhiGapForSuperModules() const {return fPhiGapForSM;}
Float_t GetPhiModuleSize() const {return fPhiModuleSize;}
Float_t GetEtaModuleSize() const {return fEtaModuleSize;}
Float_t GetFrontSteelStrip() const {return fFrontSteelStrip;}
Float_t GetLateralSteelStrip() const {return fLateralSteelStrip;}
Float_t GetPassiveScintThick() const {return fPassiveScintThick;}
Float_t GetPhiTileSize() const {return fPhiTileSize;}
Float_t GetEtaTileSize() const {return fEtaTileSize;}
Float_t GetPhiSuperModule() const {return fPhiSuperModule;}
Int_t GetNPhiSuperModule() const {return fNPhiSuperModule;}
Int_t GetNPHIdiv() const {return fNPHIdiv ;}
Int_t GetNETAdiv() const {return fNETAdiv ;}
Int_t GetNCells() const {return fNCells;}
Float_t GetLongModuleSize() const {return fLongModuleSize;}
Float_t GetTrd1Angle() const {return fTrd1Angle;}
Float_t Get2Trd1Dx2() const {return f2Trd1Dx2;}
Float_t GetEtaMaxOfTRD1() const {return fEtaMaxOfTRD1;}
Float_t GetTrd1AlFrontThick() const { return fTrd1AlFrontThick;}
Float_t GetTrd1BondPaperThick() const {return fTrd1BondPaperThick;}
Int_t GetNCellsInSupMod() const {return fNCellsInSupMod;}
Int_t GetNCellsInModule() const {return fNCellsInModule; }
Int_t GetKey110DEG() const {return fKey110DEG;}
Int_t GetnSupModInDCAL() const {return fnSupModInDCAL;}
Int_t GetILOSS() const {return fILOSS;}
Int_t GetIHADR() const {return fIHADR;}
Int_t GetNTRU() const {return fNTRUEta*fNTRUPhi ; }
Int_t GetNTRUEta() const {return fNTRUEta ; }
Int_t GetNTRUPhi() const {return fNTRUPhi ; }
Int_t GetNEtaSubOfTRU() const {return fNEtaSubOfTRU;}
Int_t GetNTotalTRU() const {return fNTotalTRU ; }
Int_t GetNModulesInTRU() const {return fNModulesInTRUEta*fNModulesInTRUPhi; }
Int_t GetNModulesInTRUEta() const {return fNModulesInTRUEta ; }
Int_t GetNModulesInTRUPhi() const {return fNModulesInTRUPhi ; }
Float_t GetDeltaEta() const {return (fArm1EtaMax-fArm1EtaMin)/ ((Float_t)fNZ);}
Float_t GetDeltaPhi() const {return (fArm1PhiMax-fArm1PhiMin)/ ((Float_t)fNPhi);}
Int_t GetNTowers() const {return fNPhi * fNZ ;}
Double_t GetPhiCenterOfSM(Int_t nsupmod) const;
Double_t GetPhiCenterOfSMSec(Int_t nsupmod) const;
Float_t GetSuperModulesPar(Int_t ipar) const {return fParSM[ipar];}
Int_t GetSMType(Int_t nSupMod) const { if( nSupMod > GetNumberOfSuperModules() ) return -1;
return fEMCSMSystem[nSupMod] ; }
Bool_t GetPhiBoundariesOfSM (Int_t nSupMod, Double_t &phiMin, Double_t &phiMax) const;
Bool_t GetPhiBoundariesOfSMGap(Int_t nPhiSec, Double_t &phiMin, Double_t &phiMax) const;
static int ParseString(const TString &topt, TObjArray &Opt) ;
void SetNZ(Int_t nz) { fNZ= nz;
printf("SetNZ: Number of modules in Z set to %d", fNZ) ; }
void SetNPhi(Int_t nphi) { fNPhi= nphi;
printf("SetNPhi: Number of modules in Phi set to %d", fNPhi) ; }
void SetNTRUEta(Int_t ntru) {fNTRUEta = ntru;
printf("SetNTRU: Number of TRUs per SuperModule in Eta set to %d", fNTRUEta) ;}
void SetNTRUPhi(Int_t ntru) {fNTRUPhi = ntru;
printf("SetNTRU: Number of TRUs per SuperModule in Phi set to %d", fNTRUPhi) ;}
void SetSampling(Float_t samp) { fSampling = samp;
printf("SetSampling: Sampling factor set to %f", fSampling) ; }
Float_t AngleFromEta(Float_t eta) const {
return 2.0*TMath::ATan(TMath::Exp(-eta));
}
Float_t ZFromEtaR(Float_t r,Float_t eta) const {
return r/TMath::Tan(AngleFromEta(eta));
}
Float_t GetGap2Active() const {return fGap2Active ;}
Float_t GetSteelFrontThickness() const { return fSteelFrontThick;}
Float_t GetTrd2AngleY()const {return fTrd2AngleY;}
Float_t Get2Trd2Dy2() const {return f2Trd2Dy2;}
Float_t GetTubsR() const {return fTubsR;}
Float_t GetTubsTurnAngle() const {return fTubsTurnAngle;}
static const Char_t* fgkDefaultGeometryName;
static Bool_t fgInit;
private:
TString fGeoName;
Int_t *fEMCSMSystem;
TObjArray *fArrayOpts;
const char *fkAdditionalOpts[6];
int fNAdditionalOpts;
Float_t fECPbRadThickness;
Float_t fECScintThick;
Int_t fNECLayers;
Float_t fArm1PhiMin;
Float_t fArm1PhiMax;
Float_t fArm1EtaMin;
Float_t fArm1EtaMax;
Float_t fEnvelop[3];
Float_t fIPDistance;
Float_t fShellThickness;
Float_t fZLength;
Float_t fDCALInnerEdge;
Float_t fDCALPhiMin;
Float_t fDCALPhiMax;
Float_t fEMCALPhiMax;
Float_t fDCALStandardPhiMax;
Float_t fDCALInnerExtandedEta;
Int_t fNZ;
Int_t fNPhi;
Float_t fSampling;
Int_t fNumberOfSuperModules;
Float_t fFrontSteelStrip;
Float_t fLateralSteelStrip;
Float_t fPassiveScintThick;
Float_t fPhiModuleSize;
Float_t fEtaModuleSize;
Float_t fPhiTileSize;
Float_t fEtaTileSize;
Float_t fLongModuleSize;
Float_t fPhiSuperModule;
Int_t fNPhiSuperModule;
Int_t fNPHIdiv;
Int_t fNETAdiv;
Int_t fNCells;
Int_t fNCellsInSupMod;
Int_t fNCellsInModule;
Int_t fNTRUEta ;
Int_t fNTRUPhi ;
Int_t fNModulesInTRUEta;
Int_t fNModulesInTRUPhi;
Int_t fNEtaSubOfTRU;
Int_t fNTotalTRU;
Float_t fTrd1Angle;
Float_t f2Trd1Dx2;
Float_t fPhiGapForSM;
Int_t fKey110DEG;
Int_t fnSupModInDCAL;
TArrayD fPhiBoundariesOfSM;
TArrayD fPhiCentersOfSM;
TArrayD fPhiCentersOfSMSec;
Float_t fEtaMaxOfTRD1;
Float_t fTrd1AlFrontThick;
Float_t fTrd1BondPaperThick;
TArrayD fCentersOfCellsEtaDir;
TArrayD fCentersOfCellsXDir;
TArrayD fCentersOfCellsPhiDir;
TArrayD fEtaCentersOfCells;
TArrayD fPhiCentersOfCells;
TList *fShishKebabTrd1Modules;
Float_t fParSM[3];
Int_t fILOSS;
Int_t fIHADR;
Float_t fGap2Active;
Float_t fSteelFrontThick;
Float_t fTrd2AngleY;
Float_t f2Trd2Dy2;
Float_t fEmptySpace;
Float_t fTubsR;
Float_t fTubsTurnAngle;
ClassDef(AliEMCALEMCGeometry, 3)
};
#endif // AliEMCALEMCGEOMETRY_H
AliEMCALEMCGeometry.h:100 AliEMCALEMCGeometry.h:101 AliEMCALEMCGeometry.h:102 AliEMCALEMCGeometry.h:103 AliEMCALEMCGeometry.h:104 AliEMCALEMCGeometry.h:105 AliEMCALEMCGeometry.h:106 AliEMCALEMCGeometry.h:107 AliEMCALEMCGeometry.h:108 AliEMCALEMCGeometry.h:109 AliEMCALEMCGeometry.h:110 AliEMCALEMCGeometry.h:111 AliEMCALEMCGeometry.h:112 AliEMCALEMCGeometry.h:113 AliEMCALEMCGeometry.h:114 AliEMCALEMCGeometry.h:115 AliEMCALEMCGeometry.h:116 AliEMCALEMCGeometry.h:117 AliEMCALEMCGeometry.h:118 AliEMCALEMCGeometry.h:119 AliEMCALEMCGeometry.h:120 AliEMCALEMCGeometry.h:121 AliEMCALEMCGeometry.h:122 AliEMCALEMCGeometry.h:123 AliEMCALEMCGeometry.h:124 AliEMCALEMCGeometry.h:125 AliEMCALEMCGeometry.h:126 AliEMCALEMCGeometry.h:127 AliEMCALEMCGeometry.h:128 AliEMCALEMCGeometry.h:129 AliEMCALEMCGeometry.h:130 AliEMCALEMCGeometry.h:131 AliEMCALEMCGeometry.h:132 AliEMCALEMCGeometry.h:133 AliEMCALEMCGeometry.h:134 AliEMCALEMCGeometry.h:135 AliEMCALEMCGeometry.h:136 AliEMCALEMCGeometry.h:137 AliEMCALEMCGeometry.h:138 AliEMCALEMCGeometry.h:139 AliEMCALEMCGeometry.h:140 AliEMCALEMCGeometry.h:141 AliEMCALEMCGeometry.h:142 AliEMCALEMCGeometry.h:143 AliEMCALEMCGeometry.h:144 AliEMCALEMCGeometry.h:145 AliEMCALEMCGeometry.h:146 AliEMCALEMCGeometry.h:147 AliEMCALEMCGeometry.h:148 AliEMCALEMCGeometry.h:149 AliEMCALEMCGeometry.h:150 AliEMCALEMCGeometry.h:151 AliEMCALEMCGeometry.h:152 AliEMCALEMCGeometry.h:153 AliEMCALEMCGeometry.h:154 AliEMCALEMCGeometry.h:155 AliEMCALEMCGeometry.h:156 AliEMCALEMCGeometry.h:157 AliEMCALEMCGeometry.h:158 AliEMCALEMCGeometry.h:159 AliEMCALEMCGeometry.h:160 AliEMCALEMCGeometry.h:161 AliEMCALEMCGeometry.h:162 AliEMCALEMCGeometry.h:163 AliEMCALEMCGeometry.h:164 AliEMCALEMCGeometry.h:165 AliEMCALEMCGeometry.h:166 AliEMCALEMCGeometry.h:167 AliEMCALEMCGeometry.h:168 AliEMCALEMCGeometry.h:169 AliEMCALEMCGeometry.h:170 AliEMCALEMCGeometry.h:171 AliEMCALEMCGeometry.h:172 AliEMCALEMCGeometry.h:173 AliEMCALEMCGeometry.h:174 AliEMCALEMCGeometry.h:175 AliEMCALEMCGeometry.h:176 AliEMCALEMCGeometry.h:177 AliEMCALEMCGeometry.h:178 AliEMCALEMCGeometry.h:179 AliEMCALEMCGeometry.h:180 AliEMCALEMCGeometry.h:181 AliEMCALEMCGeometry.h:182 AliEMCALEMCGeometry.h:183 AliEMCALEMCGeometry.h:184 AliEMCALEMCGeometry.h:185 AliEMCALEMCGeometry.h:186 AliEMCALEMCGeometry.h:187 AliEMCALEMCGeometry.h:188 AliEMCALEMCGeometry.h:189 AliEMCALEMCGeometry.h:190 AliEMCALEMCGeometry.h:191 AliEMCALEMCGeometry.h:192 AliEMCALEMCGeometry.h:193 AliEMCALEMCGeometry.h:194 AliEMCALEMCGeometry.h:195 AliEMCALEMCGeometry.h:196 AliEMCALEMCGeometry.h:197 AliEMCALEMCGeometry.h:198 AliEMCALEMCGeometry.h:199 AliEMCALEMCGeometry.h:200 AliEMCALEMCGeometry.h:201 AliEMCALEMCGeometry.h:202 AliEMCALEMCGeometry.h:203 AliEMCALEMCGeometry.h:204 AliEMCALEMCGeometry.h:205 AliEMCALEMCGeometry.h:206 AliEMCALEMCGeometry.h:207 AliEMCALEMCGeometry.h:208 AliEMCALEMCGeometry.h:209 AliEMCALEMCGeometry.h:210 AliEMCALEMCGeometry.h:211 AliEMCALEMCGeometry.h:212 AliEMCALEMCGeometry.h:213 AliEMCALEMCGeometry.h:214 AliEMCALEMCGeometry.h:215 AliEMCALEMCGeometry.h:216 AliEMCALEMCGeometry.h:217 AliEMCALEMCGeometry.h:218 AliEMCALEMCGeometry.h:219 AliEMCALEMCGeometry.h:220 AliEMCALEMCGeometry.h:221 AliEMCALEMCGeometry.h:222 AliEMCALEMCGeometry.h:223 AliEMCALEMCGeometry.h:224 AliEMCALEMCGeometry.h:225 AliEMCALEMCGeometry.h:226 AliEMCALEMCGeometry.h:227 AliEMCALEMCGeometry.h:228 AliEMCALEMCGeometry.h:229 AliEMCALEMCGeometry.h:230 AliEMCALEMCGeometry.h:231 AliEMCALEMCGeometry.h:232 AliEMCALEMCGeometry.h:233 AliEMCALEMCGeometry.h:234 AliEMCALEMCGeometry.h:235 AliEMCALEMCGeometry.h:236 AliEMCALEMCGeometry.h:237 AliEMCALEMCGeometry.h:238 AliEMCALEMCGeometry.h:239 AliEMCALEMCGeometry.h:240 AliEMCALEMCGeometry.h:241 AliEMCALEMCGeometry.h:242 AliEMCALEMCGeometry.h:243 AliEMCALEMCGeometry.h:244 AliEMCALEMCGeometry.h:245 AliEMCALEMCGeometry.h:246 AliEMCALEMCGeometry.h:247 AliEMCALEMCGeometry.h:248 AliEMCALEMCGeometry.h:249 AliEMCALEMCGeometry.h:250 AliEMCALEMCGeometry.h:251 AliEMCALEMCGeometry.h:252 AliEMCALEMCGeometry.h:253 AliEMCALEMCGeometry.h:254 AliEMCALEMCGeometry.h:255 AliEMCALEMCGeometry.h:256 AliEMCALEMCGeometry.h:257 AliEMCALEMCGeometry.h:258 AliEMCALEMCGeometry.h:259 AliEMCALEMCGeometry.h:260 AliEMCALEMCGeometry.h:261 AliEMCALEMCGeometry.h:262 AliEMCALEMCGeometry.h:263 AliEMCALEMCGeometry.h:264 AliEMCALEMCGeometry.h:265 AliEMCALEMCGeometry.h:266 AliEMCALEMCGeometry.h:267 AliEMCALEMCGeometry.h:268 AliEMCALEMCGeometry.h:269 AliEMCALEMCGeometry.h:270 AliEMCALEMCGeometry.h:271 AliEMCALEMCGeometry.h:272 AliEMCALEMCGeometry.h:273 AliEMCALEMCGeometry.h:274 AliEMCALEMCGeometry.h:275 AliEMCALEMCGeometry.h:276 AliEMCALEMCGeometry.h:277 AliEMCALEMCGeometry.h:278 AliEMCALEMCGeometry.h:279 AliEMCALEMCGeometry.h:280 AliEMCALEMCGeometry.h:281 AliEMCALEMCGeometry.h:282 AliEMCALEMCGeometry.h:283 AliEMCALEMCGeometry.h:284 AliEMCALEMCGeometry.h:285 AliEMCALEMCGeometry.h:286 AliEMCALEMCGeometry.h:287 AliEMCALEMCGeometry.h:288 AliEMCALEMCGeometry.h:289 AliEMCALEMCGeometry.h:290 AliEMCALEMCGeometry.h:291 AliEMCALEMCGeometry.h:292 AliEMCALEMCGeometry.h:293 AliEMCALEMCGeometry.h:294