#include "AliEMCALEMCGeometry.h"
#include "AliEMCALGeoParams.h"
class AliEMCALShishKebabTrd1Module;
-#include "AliLog.h"
+class AliLog;
class AliEMCALGeometry : public TNamed {
public:
AliEMCALGeometry();
- AliEMCALGeometry(const Text_t* name, const Text_t* title="");
+ AliEMCALGeometry(const Text_t* name, const Text_t* title="",
+ const Text_t* mcname="", const Text_t* mctitle="");
AliEMCALGeometry(const AliEMCALGeometry & geom);
virtual ~AliEMCALGeometry(void);
AliEMCALGeometry & operator = (const AliEMCALGeometry & rvalue);
- static AliEMCALGeometry * GetInstance(const Text_t* name,
- const Text_t* title="") ;
+ static AliEMCALGeometry * GetInstance(const Text_t* name, const Text_t* title="",
+ const Text_t* mcname="TGeant3", const Text_t* mctitle="") ;
static AliEMCALGeometry * GetInstance();
//////////
// General
//
- Bool_t IsInitialized(void) const { return AliEMCALEMCGeometry::fgInit ; }
+ static Bool_t IsInitialized(void) {return AliEMCALEMCGeometry::fgInit; }
static const Char_t* GetDefaultGeometryName() {return AliEMCALEMCGeometry::fgkDefaultGeometryName;}
/////////////
virtual void Browse(TBrowser* b);
virtual Bool_t IsFolder() const;
- virtual Bool_t Impact(const TParticle *) const;
+ virtual Bool_t Impact(const TParticle *particle) const;
void ImpactOnEmcal(TVector3 vtx, Double_t theta, Double_t phi, Int_t & absId, TVector3 & vimpact) const;
Bool_t IsInEMCAL(Double_t x, Double_t y, Double_t z) const;
Int_t GetSuperModuleNumber(Int_t absId) const;
Int_t GetNumberOfModuleInPhiDirection(Int_t nSupMod) const
{
- if(fKey110DEG == 1 && nSupMod>=10) return fNPhi/2;
+ if(fKey110DEG == 1 && nSupMod>=10 && !fGeoName.Contains("12SMV1")) return fNPhi/2;
+ else if(fKey110DEG == 1 && nSupMod>=10 && fGeoName.Contains("12SMV1")) return fNPhi/3;
else return fNPhi;
}
// From cell indexes to abs cell id
Bool_t GetCellIndexFromFastORIndex(const Int_t id, Int_t idx[4]) const;
Bool_t GetTRUIndexFromSTUIndex(const Int_t id, Int_t& idx) const;
Int_t GetTRUIndexFromSTUIndex(const Int_t id) const;
+ Bool_t GetTRUIndexFromOnlineIndex(const Int_t id, Int_t& idx) const;
+ Int_t GetTRUIndexFromOnlineIndex(const Int_t id) const;
+ Bool_t GetOnlineIndexFromTRUIndex(const Int_t id, Int_t& idx) const;
+ Int_t GetOnlineIndexFromTRUIndex(const Int_t id) const;
Bool_t GetFastORIndexFromL0Index(const Int_t iTRU, const Int_t id, Int_t idx[], const Int_t size) const;
///////////////////
}
//Method to set shift-rotational matrixes from ESDHeader
- void SetMisalMatrix(const TGeoHMatrix * m, Int_t smod) {
- fUseExternalMatrices = kTRUE;
- if (smod >= 0 && smod < fEMCGeometry->GetNumberOfSuperModules()){
- if(!fkSModuleMatrix[smod]) fkSModuleMatrix[smod] = new TGeoHMatrix(*m) ; //Set only if not set yet
- }
- else AliFatal(Form("Wrong supermodule index -> %d",smod));
- }
+ void SetMisalMatrix(const TGeoHMatrix * m, Int_t smod);
//Alternate geometry that allows to calculate tower position for different particles and different alignments
void RecalculateTowerPosition(Float_t drow, Float_t dcol, const Int_t sm, const Float_t depth,
protected:
- void Init(void); // initializes the parameters of EMCAL
+ void Init(void); // initializes the parameters of EMCAL
- AliEMCALEMCGeometry * fEMCGeometry; // Geometry object for Electromagnetic calorimeter
+ AliEMCALEMCGeometry * fEMCGeometry;// Geometry object for Electromagnetic calorimeter
TString fGeoName; // geometry name
Int_t fKey110DEG; // for calculation abs cell id; 19-oct-05
Float_t fArm1PhiMin; // Minimum angular position of EMCAL in Phi (degrees)
Float_t fArm1PhiMax; // Maximum angular position of EMCAL in Phi (degrees)
Float_t fEtaMaxOfTRD1; // Max eta in case of TRD1 geometry (see AliEMCALShishKebabTrd1Module)
- TList *fShishKebabTrd1Modules; //! list of modules
+ TList *fShishKebabTrd1Modules; // list of modules
Float_t fParSM[3]; // SM sizes as in GEANT (TRD1)
Float_t fPhiModuleSize; // Phi -> X
Float_t fEtaModuleSize; // Eta -> Y
Float_t fPhiTileSize; // Size of phi tile
Float_t fEtaTileSize; // Size of eta tile
Int_t fNZ; // Number of Towers in the Z direction
- Float_t fIPDistance; // Radial Distance of the inner surface of the EMCAL
+ Float_t fIPDistance; // Radial Distance of the inner surface of the EMCAL
Float_t fLongModuleSize; // Size of long module
// Geometry Parameters
- Float_t fShellThickness; // Total thickness in (x,y) direction
- Float_t fZLength; // Total length in z direction
- Float_t fSampling; // Sampling factor
+ Float_t fShellThickness; // Total thickness in (x,y) direction
+ Float_t fZLength; // Total length in z direction
+ Float_t fSampling; // Sampling factor
- Int_t fFastOR2DMap[48][64]; // FastOR 2D Map over full EMCal
+ Int_t fFastOR2DMap[48][64]; // FastOR 2D Map over full EMCal
TGeoHMatrix* fkSModuleMatrix[AliEMCALGeoParams::fgkEMCALModules] ; //Orientations of EMCAL super modules
- Bool_t fUseExternalMatrices; // Use the matrices set in fkSModuleMatrix and not those in the geoManager
+ Bool_t fUseExternalMatrices; // Use the matrices set in fkSModuleMatrix and not those in the geoManager
private: