ROOT logo
AliRoot » PHOS » AliPHOSGeometry

class AliPHOSGeometry: public AliPHOSGeoUtils

 Geometry class  for PHOS : singleton
 PHOS consists of the electromagnetic calorimeter (EMCA)
 and a charged particle veto either in the Subatech's version (PPSD)
 or in the IHEP's one (CPV).
 The EMCA/PPSD/CPV modules are parametrized so that any configuration
 can be easily implemented
 The title is used to identify the version of CPV used.

 -- Author: Yves Schutz (SUBATECH) & Dmitri Peressounko (RRC "KI" & SUBATECH)

Function Members (Methods)

public:
AliPHOSGeometry()
AliPHOSGeometry(const AliPHOSGeometry& geom)
virtual~AliPHOSGeometry()
Bool_tAliPHOSGeoUtils::AbsToRelNumbering(Int_t AbsId, Int_t* RelId) const
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Float_tGetCellStep() const
Float_tGetCPVActiveSize(Int_t index) const
Float_tGetCPVBoxSize(Int_t index) const
Float_tGetCPVCuNiFoilThickness() const
Float_tGetCPVFrameSize(Int_t index) const
Float_tGetCPVGasThickness() const
Float_tGetCPVTextoliteThickness() const
Float_tGetCradleWall(Int_t index) const
Float_tGetCradleWallThickness() const
Float_tGetCradleWheel(Int_t index) const
Float_tGetCrystalSize(Int_t index) const
Float_tGetDistanceBetwRails() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
AliPHOSEMCAGeometry*GetEMCAGeometry() const
Float_tGetFTPosition(Int_t index) const
Float_tGetGassiplexChipSize(Int_t index) const
virtual voidGetGlobal(const AliRecPoint* RecPoint, TVector3& gpos) const
virtual voidGetGlobal(const AliRecPoint* RecPoint, TVector3& gpos, TMatrixF&) const
virtual voidGetGlobalPHOS(const AliPHOSRecPoint* RecPoint, TVector3& gpos) const
virtual voidGetGlobalPHOS(const AliPHOSRecPoint* RecPoint, TVector3& gpos, TMatrixF&) const
virtual const char*TObject::GetIconName() const
voidAliPHOSGeoUtils::GetIncidentVector(const TVector3& vtx, Int_t module, Float_t x, Float_t z, TVector3& vInc) const
static AliPHOSGeometry*GetInstance()
static AliPHOSGeometry*GetInstance(const Text_t* name, const Text_t* title = "")
Float_tGetIPtoCPVDistance() const
Float_tGetIPtoCrystalSurface() const
Float_tGetIPtoOuterCoverDistance() const
Float_tGetIPtoUpperCPVsurface() const
Float_tGetModuleAngle(Int_t module, Int_t axis, Int_t angle) const
Float_tGetModuleCenter(Int_t module, Int_t axis) const
voidGetModuleCenter(TVector3& center, const char* det, Int_t module) const
virtual const char*TNamed::GetName() const
Int_tGetNCristalsInModule() const
Int_tGetNModules() const
Int_tGetNPhi() const
Int_tGetNumberOfCPVChipsPhi() const
Int_tGetNumberOfCPVChipsZ() const
Int_tGetNumberOfCPVLayers() const
Int_tGetNumberOfCPVPadsPhi() const
Int_tGetNumberOfCPVPadsZ() const
Int_tGetNZ() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
Float_tGetOuterBoxSize(Int_t index) const
Float_tGetPadSizePhi() const
Float_tGetPadSizeZ() const
Float_tGetPHOSAngle(Int_t index) const
Float_t*GetPHOSParams()
Float_tGetRailLength() const
Float_tGetRailOuterSize(Int_t index) const
Float_tGetRailPart1(Int_t index) const
Float_tGetRailPart2(Int_t index) const
Float_tGetRailPart3(Int_t index) const
Float_tGetRailPos(Int_t index) const
Float_tGetRailRoadSize(Int_t index) const
Float_tGetRailsDistanceFromIP() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
voidAliPHOSGeoUtils::Global2Local(TVector3& localPosition, const TVector3& globalPosition, Int_t module) const
Bool_tAliPHOSGeoUtils::GlobalPos2RelId(TVector3& global, Int_t* relId)
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
Bool_tAliPHOSGeoUtils::ImpactOnEmc(const TParticle* particle, Int_t& ModuleNumber, Double_t& z, Double_t& x) const
Bool_tAliPHOSGeoUtils::ImpactOnEmc(const Double_t* vtx, const TVector3& vec, Int_t& ModuleNumber, Double_t& z, Double_t& x) const
Bool_tAliPHOSGeoUtils::ImpactOnEmc(const Double_t* vtx, const Double_t theta, const Double_t phi, Int_t& ModuleNumber, Double_t& z, Double_t& x) const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidInit()
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tAliPHOSGeoUtils::IsInEMC(Int_t id) const
Bool_tIsInitialized() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
voidAliPHOSGeoUtils::Local2Global(Int_t module, Float_t x, Float_t z, TVector3& globaPos) const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
AliPHOSGeometry&operator=(const AliPHOSGeometry&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidAliPHOSGeoUtils::RelPosInAlice(Int_t AbsId, TVector3& pos) const
voidAliPHOSGeoUtils::RelPosInModule(const Int_t* relId, Float_t& y, Float_t& z) const
voidAliPHOSGeoUtils::RelPosToAbsId(Int_t module, Double_t x, Double_t z, Int_t& AbsId) const
voidAliPHOSGeoUtils::RelPosToRelId(Int_t module, Double_t x, Double_t z, Int_t* relId) const
Bool_tAliPHOSGeoUtils::RelToAbsNumbering(const Int_t* RelId, Int_t& AbsId) const
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAliPHOSGeoUtils::SetMisalMatrix(const TGeoHMatrix* m, Int_t mod)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
AliPHOSGeometry(const Text_t* name, const Text_t* title = "")
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
const TGeoHMatrix*AliPHOSGeoUtils::GetMatrixForCPV(Int_t mod) const
const TGeoHMatrix*AliPHOSGeoUtils::GetMatrixForModule(Int_t mod) const
const TGeoHMatrix*AliPHOSGeoUtils::GetMatrixForPHOS(Int_t mod) const
const TGeoHMatrix*AliPHOSGeoUtils::GetMatrixForStrip(Int_t mod, Int_t strip) const
voidTObject::MakeZombie()
private:
voidSetPHOSAngles()

Data Members

protected:
Float_tAliPHOSGeoUtils::fCPVBoxSizeY
TGeoHMatrix*AliPHOSGeoUtils::fCPVMatrix[5]Orientations of CPV
Float_tAliPHOSGeoUtils::fCellStep
Float_tAliPHOSGeoUtils::fCryCellShift
Float_tAliPHOSGeoUtils::fCryStripShift
Float_tAliPHOSGeoUtils::fCrystalShiftDistance between center of module and crystal surface
TGeoHMatrix*AliPHOSGeoUtils::fEMCMatrix[5]Orientations of crystalls array in modules
AliPHOSCPVGeometry*AliPHOSGeoUtils::fGeometryCPVGeometry object for CPV (IHEP)
AliPHOSEMCAGeometry*AliPHOSGeoUtils::fGeometryEMCAGeometry object for Electromagnetic calorimeter
AliPHOSSupportGeometry*AliPHOSGeoUtils::fGeometrySUPPGeometry object for PHOS support
TClonesArray*AliPHOSGeoUtils::fMisalArray
Int_tAliPHOSGeoUtils::fNCellsXInStripNumber of crystals in strip
Int_tAliPHOSGeoUtils::fNCellsZInStripNumber of crystals in strip in Z direction
Int_tAliPHOSGeoUtils::fNCristalsInModuleNumber of crystals in one module
Int_tAliPHOSGeoUtils::fNModulesMaximal designed number of modules in PHOS
Int_tAliPHOSGeoUtils::fNPhiNumber of crystals along Phi direction
Int_tAliPHOSGeoUtils::fNStripZNumber of strips in Z direction
Int_tAliPHOSGeoUtils::fNZNumber of crystals along Z direction
TStringTNamed::fNameobject identifier
Int_tAliPHOSGeoUtils::fNumberOfCPVPadsPhiNumber of CPV pads along Phi direction
Int_tAliPHOSGeoUtils::fNumberOfCPVPadsZNumber of CPV pads along Z direction
const TGeoHMatrix*AliPHOSGeoUtils::fPHOSMatrix[5]Orientations of PHOS modules
Float_tAliPHOSGeoUtils::fPadSizePhiSize of CPV pad in Phi direction
Float_tAliPHOSGeoUtils::fPadSizeZSize of CPV pad in Z direction
TGeoHMatrix*AliPHOSGeoUtils::fStripMatrix[5][224]Orientations of strip units
TStringTNamed::fTitleobject title
Float_tAliPHOSGeoUtils::fXtlArrSize[3]Total size of cristals array
private:
Float_tfAnglePosition angles between modules
Float_tfCryCellShiftDistance from crystal center to front surface
Float_tfCrystalShiftDistance from crystal center to front surface
Float_tfIPtoUpperCPVsurfaceMinimal distance from IP to PHOS
Float_tfModuleAngle[5][3][2]polar and azymuth angles for 3 axes of modules
Float_tfModuleCenter[5][3]xyz-position of the module center
Float_t*fPHOSAngle[fNModules] Position angles of modules
Float_tfPHOSParams[4]Half-sizes of PHOS trapecoid
TObjArray*fRotMatrixArrayListe of rotation matrices (one per phos module)
static AliPHOSGeometry*fgGeompointer to the unique instance of the singleton
static Bool_tfgInitTells if geometry has been succesfully set up

Class Charts

Inheritance Chart:
TNamed
AliPHOSGeoUtils
AliPHOSGeometry

Function documentation

AliPHOSGeometry()
 default ctor
 must be kept public for root persistency purposes, but should never be called by the outside world
AliPHOSGeometry(const AliPHOSGeometry& geom)
AliPHOSGeometry(const Text_t* name, const Text_t* title = "")
 ctor only for internal usage (singleton)
~AliPHOSGeometry(void)
 dtor
void Init(void)
 Initializes the PHOS parameters :
  IHEP is the Protvino CPV (cathode pad chambers)
AliPHOSGeometry * GetInstance()
 Returns the pointer of the unique instance; singleton specific
AliPHOSGeometry * GetInstance(const Text_t* name, const Text_t* title = "")
 Returns the pointer of the unique instance
 Creates it with the specified options (name, title) if it does not exist yet
void SetPHOSAngles()
 Calculates the position of the PHOS modules in ALICE global coordinate system
 in ideal geometry
void GetGlobal(const AliRecPoint* RecPoint, TVector3& gpos) const
void GetGlobalPHOS(const AliPHOSRecPoint* RecPoint, TVector3& gpos) const
 Calculates the coordinates of a RecPoint and the error matrix in the ALICE global coordinate system
void GetModuleCenter(TVector3& center, const char* det, Int_t module) const
 Returns a position of the center of the CPV or EMC module
 in ideal (not misaligned) geometry
void GetGlobal(const AliRecPoint* RecPoint, TVector3& gpos, TMatrixF& ) const
{GetGlobal(RecPoint,gpos); }
void GetGlobalPHOS(const AliPHOSRecPoint* RecPoint, TVector3& gpos) const
Bool_t IsInitialized(void)
{ return fgInit ; }
Int_t GetNModules(void)
 Return general PHOS parameters
{ return fNModules ; }
Float_t GetPHOSAngle(Int_t index) const
{ return fPHOSAngle[index-1] ; }
Float_t* GetPHOSParams(void)
{ return fPHOSParams;}
Float_t GetIPtoUpperCPVsurface(void)
Float_t GetOuterBoxSize(Int_t index) const
{ return 2.*fPHOSParams[index]; }
Float_t GetCrystalSize(Int_t index) const
{ return fGeometryEMCA->GetCrystalSize(index) ; }
Float_t GetCellStep(void)
{ return 2.*fGeometryEMCA->GetAirCellHalfSize()[0];}
Float_t GetModuleCenter(Int_t module, Int_t axis) const
Float_t GetModuleAngle(Int_t module, Int_t axis, Int_t angle) const
AliPHOSEMCAGeometry * GetEMCAGeometry() const
 Return ideal EMCA geometry parameters
{return fGeometryEMCA ;}
Float_t GetIPtoCrystalSurface(void)
{ return fGeometryEMCA->GetIPtoCrystalSurface() ; }
Float_t GetIPtoOuterCoverDistance(void)
{ return fGeometryEMCA->GetIPtoOuterCoverDistance() ; }
Int_t GetNPhi(void)
{ return fGeometryEMCA->GetNPhi() ; }
Int_t GetNZ(void)
{ return fGeometryEMCA->GetNZ() ; }
Int_t GetNCristalsInModule(void)
{ return fGeometryEMCA->GetNPhi() * fGeometryEMCA->GetNZ() ; }
Int_t GetNumberOfCPVLayers(void)
 Return ideal CPV geometry parameters
{ return fGeometryCPV ->GetNumberOfCPVLayers(); }
Float_t GetCPVActiveSize(Int_t index) const
{ return fGeometryCPV->GetCPVActiveSize(index); }
Int_t GetNumberOfCPVChipsPhi(void)
{ return fGeometryCPV->GetNumberOfCPVChipsPhi(); }
Int_t GetNumberOfCPVChipsZ(void)
{ return fGeometryCPV->GetNumberOfCPVChipsZ(); }
Int_t GetNumberOfCPVPadsPhi(void)
{ return fGeometryCPV->GetNumberOfCPVPadsPhi(); }
Int_t GetNumberOfCPVPadsZ(void)
{ return fGeometryCPV->GetNumberOfCPVPadsZ(); }
Float_t GetPadSizePhi(void)
{ return fGeometryCPV->GetCPVPadSizePhi(); }
Float_t GetPadSizeZ(void)
{ return fGeometryCPV->GetCPVPadSizeZ(); }
Float_t GetGassiplexChipSize(Int_t index) const
{ return fGeometryCPV->GetGassiplexChipSize(index); }
Float_t GetCPVGasThickness(void)
{ return fGeometryCPV->GetCPVGasThickness(); }
Float_t GetCPVTextoliteThickness(void)
{ return fGeometryCPV->GetCPVTextoliteThickness(); }
Float_t GetCPVCuNiFoilThickness(void)
{ return fGeometryCPV->GetCPVCuNiFoilThickness(); }
Float_t GetFTPosition(Int_t index) const
{ return fGeometryCPV->GetFTPosition(index); }
Float_t GetCPVFrameSize(Int_t index) const
{ return fGeometryCPV->GetCPVFrameSize(index); }
Float_t GetCPVBoxSize(Int_t index) const
{ return fGeometryCPV ->GetCPVBoxSize(index); }
Float_t GetIPtoCPVDistance(void)
Float_t GetRailOuterSize(Int_t index) const
 Return PHOS' support geometry parameters
{ return fGeometrySUPP->GetRailOuterSize(index); }
Float_t GetRailPart1(Int_t index) const
{ return fGeometrySUPP->GetRailPart1 (index); }
Float_t GetRailPart2(Int_t index) const
{ return fGeometrySUPP->GetRailPart2 (index); }
Float_t GetRailPart3(Int_t index) const
{ return fGeometrySUPP->GetRailPart3 (index); }
Float_t GetRailPos(Int_t index) const
{ return fGeometrySUPP->GetRailPos (index); }
Float_t GetRailLength(void)
{ return fGeometrySUPP->GetRailLength (); }
Float_t GetDistanceBetwRails(void)
{ return fGeometrySUPP->GetDistanceBetwRails(); }
Float_t GetRailsDistanceFromIP(void)
{ return fGeometrySUPP->GetRailsDistanceFromIP();}
Float_t GetRailRoadSize(Int_t index) const
{ return fGeometrySUPP->GetRailRoadSize (index); }
Float_t GetCradleWallThickness(void)
{ return fGeometrySUPP->GetCradleWallThickness();}
Float_t GetCradleWall(Int_t index) const
{ return fGeometrySUPP->GetCradleWall (index); }
Float_t GetCradleWheel(Int_t index) const
{ return fGeometrySUPP->GetCradleWheel (index); }