//
// Temporarily added to define part of the EMCal geometry
// necessary for the jet finder
-// Author: Magali Estienne
// Magali.Estienne@cern.ch
-
-
+//
#include <TObject.h>
#include <TArrayD.h>
#include <TMath.h>
#include <TVector3.h>
class TGeoMatrix;
+class AliJetDummyShishKebabTrd1Module;
class AliJetDummyGeo : public TObject
{
AliJetDummyGeo(const AliJetDummyGeo& geom);
virtual ~AliJetDummyGeo();
static AliJetDummyGeo* GetInstance() {return new AliJetDummyGeo();}
- static AliJetDummyGeo* GetInstance(char* /*name*/, char* /*title*/)
+ static AliJetDummyGeo* GetInstance(const char* /*name*/, const char* /*title*/)
{return new AliJetDummyGeo();}
- Char_t* GetNameOfEMCALEnvelope() const {return "XEN1";}
+ const Char_t* GetNameOfEMCALEnvelope() const {return "XEN1";}
Float_t GetEnvelop(Int_t index) const { return fEnvelop[index];}
Float_t AngleFromEta(Float_t eta) const {
// returns theta in radians for a given pseudorapidity
// pseudorapidity and r=sqrt(x*x+y*y).
return r/TMath::Tan(AngleFromEta(eta));
}
- Int_t GetNCells() const {return fNCells;}
- Float_t GetPhiModuleSize() const {return fPhiModuleSize;}
- Float_t GetEtaModuleSize() const {return fEtaModuleSize;}
- Float_t GetShellThickness() const {return fShellThickness;}
- Int_t GetNPhi() const {return fNPhi;}
- Int_t GetNumberOfSuperModules() const {return fNumberOfSuperModules;}
- Float_t GetArm1EtaMin() const {return fArm1EtaMin;}
- Float_t GetArm1EtaMax() const {return fArm1EtaMax;}
- Float_t GetArm1PhiMin() const {return fArm1PhiMin;}
- Float_t GetArm1PhiMax() const {return fArm1PhiMax;}
- void EtaPhiFromIndex(Int_t id, Float_t& eta, Float_t& phi);
- void GetGlobal(const Double_t *loc, Double_t *glob, int ind) const;
+ Int_t GetNCells() const {return fNCells;}
+ Float_t GetPhiModuleSize() const {return fPhiModuleSize;}
+ Float_t GetEtaModuleSize() const {return fEtaModuleSize;}
+ Float_t GetShellThickness() const {return fShellThickness;}
+ Float_t GetSteelFrontThickness() const {return fSteelFrontThick;}
+ Float_t GetLongModuleSize() const {return fLongModuleSize;}
+ Float_t GetTrd1Angle() const {return fTrd1Angle;}
+ Float_t Get2Trd1Dx2() const {return f2Trd1Dx2;}
+ Int_t GetNPhi() const {return fNPhi;}
+ Int_t GetNZ() const {return fNZ ;}
+ Int_t GetNumberOfSuperModules() const {return fNumberOfSuperModules;}
+ Float_t GetArm1EtaMin() const {return fArm1EtaMin;}
+ Float_t GetArm1EtaMax() const {return fArm1EtaMax;}
+ Float_t GetArm1PhiMin() const {return fArm1PhiMin;}
+ Float_t GetArm1PhiMax() const {return fArm1PhiMax;}
+ Float_t GetIPDistance() const {return fIPDistance;}
+ void EtaPhiFromIndex(Int_t id, Float_t& eta, Float_t& phi) const;
+ void GetGlobal(const Double_t *loc, Double_t *glob, Int_t ind) const;
void GetGlobal(Int_t absId, Double_t glob[3]) const;
void GetGlobal(Int_t absId, TVector3 &vglob) const;
Bool_t RelPosCellInSModule(Int_t absId, Double_t loc[3]) const;
Bool_t RelPosCellInSModule(Int_t absId, Double_t &xr, Double_t &yr, Double_t &zr) const;
Bool_t CheckAbsCellId(Int_t absId) const;
Bool_t GetCellIndex(Int_t absId,Int_t &nSupMod,Int_t &nModule,Int_t &nIphi,Int_t &nIeta) const;
- void GetCellPhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta, int &iphi, int &ieta) const;
- void GetModulePhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, int &iphim, int &ietam) const;
+ void GetCellPhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t nIphi, Int_t nIeta, Int_t &iphi, Int_t &ieta) const;
+ void GetModulePhiEtaIndexInSModule(Int_t nSupMod, Int_t nModule, Int_t &iphim, Int_t &ietam) const;
Bool_t GetAbsCellIdFromEtaPhi(Double_t eta,Double_t phi, Int_t &absId) const;
Bool_t SuperModuleNumberFromEtaPhi(Double_t eta, Double_t phi, Int_t &nSupMod) const;
Int_t GetAbsCellIdFromCellIndexes(Int_t nSupMod, Int_t iphi, Int_t ieta) const;
if(nSupMod>=10) return fNPhi/2;
else return fNPhi;
}
+
+ void CreateListOfTrd1Modules();
+ TList *GetShishKebabTrd1Modules() const {return fShishKebabTrd1Modules;}
+ AliJetDummyShishKebabTrd1Module *GetShishKebabModule(Int_t neta);
+
Bool_t GetPhiBoundariesOfSMGap(Int_t nPhiSec, Double_t &phiMin, Double_t &phiMax) const;
void GetTransformationForSM();
Float_t GetSampling() const {return fSampling;}
-
+ private:
+ AliJetDummyGeo &operator=(const AliJetDummyGeo &det);
+
protected:
- Float_t fArm1PhiMin; // Minimum angular position of EMCAL in Phi (degrees)
- Float_t fArm1PhiMax; // Maximum angular position of EMCAL in Phi (degrees)
Float_t fArm1EtaMin; // Minimum pseudorapidity position of EMCAL in Eta
Float_t fArm1EtaMax; // Maximum pseudorapidity position of EMCAL in Eta
- Int_t fNumberOfSuperModules; // Number of super modules
+ Float_t fArm1PhiMin; // Minimum angular position of EMCAL in Phi (degrees)
+ Float_t fArm1PhiMax; // Maximum angular position of EMCAL in Phi (degrees)
+ Int_t fNumberOfSuperModules; // Number of supermodules
Float_t fSteelFrontThick; // Thickness of the front stell face of the support box - 9-sep-04
+ Float_t fLateralSteelStrip; // 13-may-05
Float_t fEnvelop[3]; // the GEANT TUB for the detector
Float_t fIPDistance; // Radial Distance of the inner surface of the EMCAL
- Float_t fZLength; // Total length in z direction
Float_t fPhiGapForSM; // Gap betweeen supermodules in phi direction
Int_t fNPhi; // Number of Towers in the PHI direction
Int_t fNZ; // Number of Towers in the Z direction
Float_t fEtaModuleSize; // Eta -> Y
Int_t fNPHIdiv; // number phi divizion of module
Int_t fNETAdiv; // number eta divizion of module
+ Float_t fPhiTileSize; // Size of phi tile
+ Float_t fEtaTileSize; // Size of eta tile
Int_t fNECLayers; // number of scintillator layers
Float_t fECScintThick; // cm, Thickness of the scintillators
Float_t fECPbRadThickness; // cm, Thickness of the Pb radiators
Float_t fLongModuleSize; // Size of long module
Float_t f2Trd1Dx2; // 2*dx2 for TRD1
Float_t fShellThickness; // Total thickness in (x,y) direction
+ Float_t fZLength; // Total length in z direction
Float_t fEtaMaxOfTRD1; // max eta in case of TRD1 geometry (see AliEMCALShishKebabTrd1Module)
Float_t fParSM[3]; // SM sizes as in GEANT (TRD1)
TArrayD fPhiBoundariesOfSM; // phi boundaries of SM in rad; size is fNumberOfSuperModules;
TArrayD fEtaCentersOfCells; // [fNEta*fNETAdiv*fNPhi*fNPHIdiv], positive direction (eta>0);
// eta depend from phi position;
TArrayD fPhiCentersOfCells; // [fNPhi*fNPHIdiv] from center of SM (-10. < phi < +10.)
-
+ TList *fShishKebabTrd1Modules; // List of modules
+ Int_t fDebug; // Debug flag
ClassDef(AliJetDummyGeo,1)
};