ROOT logo
AliRoot » PHOS » AliPHOSGeoUtils

class AliPHOSGeoUtils: public TNamed

 Geometry class  for PHOS
 PHOS consists of the electromagnetic calorimeter (EMCA)
 and a charged particle veto (CPV)
 The EMCA/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:
AliPHOSGeoUtils()
AliPHOSGeoUtils(const AliPHOSGeoUtils& geom)
AliPHOSGeoUtils(const Text_t* name, const Text_t* title = "")
virtual~AliPHOSGeoUtils()
Bool_tAbsToRelNumbering(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
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
voidGetIncidentVector(const TVector3& vtx, Int_t module, Float_t x, Float_t z, TVector3& vInc) const
virtual const char*TNamed::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
voidGlobal2Local(TVector3& localPosition, const TVector3& globalPosition, Int_t module) const
Bool_tGlobalPos2RelId(TVector3& global, Int_t* relId)
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
Bool_tImpactOnEmc(const TParticle* particle, Int_t& ModuleNumber, Double_t& z, Double_t& x) const
Bool_tImpactOnEmc(const Double_t* vtx, const TVector3& vec, Int_t& ModuleNumber, Double_t& z, Double_t& x) const
Bool_tImpactOnEmc(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
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_tIsInEMC(Int_t id) const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
Bool_tTObject::IsZombie() const
voidLocal2Global(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)
AliPHOSGeoUtils&operator=(const AliPHOSGeoUtils& rvalue)
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)
voidRelPosInAlice(Int_t AbsId, TVector3& pos) const
voidRelPosInModule(const Int_t* relId, Float_t& y, Float_t& z) const
voidRelPosToAbsId(Int_t module, Double_t x, Double_t z, Int_t& AbsId) const
voidRelPosToRelId(Int_t module, Double_t x, Double_t z, Int_t* relId) const
Bool_tRelToAbsNumbering(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)
voidSetMisalMatrix(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:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
const TGeoHMatrix*GetMatrixForCPV(Int_t mod) const
const TGeoHMatrix*GetMatrixForModule(Int_t mod) const
const TGeoHMatrix*GetMatrixForPHOS(Int_t mod) const
const TGeoHMatrix*GetMatrixForStrip(Int_t mod, Int_t strip) const
voidTObject::MakeZombie()

Data Members

protected:
Float_tfCPVBoxSizeY
TGeoHMatrix*fCPVMatrix[5]Orientations of CPV
Float_tfCellStep
Float_tfCryCellShift
Float_tfCryStripShift
Float_tfCrystalShiftDistance between center of module and crystal surface
TGeoHMatrix*fEMCMatrix[5]Orientations of crystalls array in modules
AliPHOSCPVGeometry*fGeometryCPVGeometry object for CPV (IHEP)
AliPHOSEMCAGeometry*fGeometryEMCAGeometry object for Electromagnetic calorimeter
AliPHOSSupportGeometry*fGeometrySUPPGeometry object for PHOS support
TClonesArray*fMisalArray
Int_tfNCellsXInStripNumber of crystals in strip
Int_tfNCellsZInStripNumber of crystals in strip in Z direction
Int_tfNCristalsInModuleNumber of crystals in one module
Int_tfNModulesMaximal designed number of modules in PHOS
Int_tfNPhiNumber of crystals along Phi direction
Int_tfNStripZNumber of strips in Z direction
Int_tfNZNumber of crystals along Z direction
TStringTNamed::fNameobject identifier
Int_tfNumberOfCPVPadsPhiNumber of CPV pads along Phi direction
Int_tfNumberOfCPVPadsZNumber of CPV pads along Z direction
const TGeoHMatrix*fPHOSMatrix[5]Orientations of PHOS modules
Float_tfPadSizePhiSize of CPV pad in Phi direction
Float_tfPadSizeZSize of CPV pad in Z direction
TGeoHMatrix*fStripMatrix[5][224]Orientations of strip units
TStringTNamed::fTitleobject title
Float_tfXtlArrSize[3]Total size of cristals array

Class Charts

Inheritance Chart:
TNamed
AliPHOSGeoUtils
AliPHOSGeometry

Function documentation

AliPHOSGeoUtils()
 default ctor
 must be kept public for root persistency purposes, but should never be called by the outside world
AliPHOSGeoUtils(const AliPHOSGeoUtils& geom)
AliPHOSGeoUtils(const Text_t* name, const Text_t* title = "")
 ctor only for normal usage
~AliPHOSGeoUtils(void)
 dtor
Bool_t AbsToRelNumbering(Int_t AbsId, Int_t* RelId) const
 Converts the absolute numbering into the following array
  relid[0] = PHOS Module number 1:fNModules
  relid[1] = 0 if PbW04
           = -1 if CPV
  relid[2] = Row number inside a PHOS module
  relid[3] = Column number inside a PHOS module
Bool_t RelToAbsNumbering(const Int_t* RelId, Int_t& AbsId) const
 Converts the relative numbering into the absolute numbering
 EMCA crystals:
  absId = from 1 to fNModules * fNPhi * fNZ
 CPV pad:
  absId = from N(total PHOS crystals) + 1
          to NCPVModules * fNumberOfCPVPadsPhi * fNumberOfCPVPadsZ
void RelPosInModule(const Int_t* relId, Float_t& y, Float_t& z) const
 Converts the relative numbering into the local PHOS-module (x, z) coordinates
void RelPosToAbsId(Int_t module, Double_t x, Double_t z, Int_t& AbsId) const
 converts local PHOS-module (x, z) coordinates to absId
void RelPosToRelId(Int_t module, Double_t x, Double_t z, Int_t* relId) const
Evaluates RelId of the crystall with given coordinates
void RelPosInAlice(Int_t AbsId, TVector3& pos) const
 Converts the absolute numbering into the global ALICE coordinate system
void Local2Global(Int_t module, Float_t x, Float_t z, TVector3& globaPos) const
void Global2Local(TVector3& localPosition, const TVector3& globalPosition, Int_t module) const
 Transforms a global position to the local coordinate system
 of the module
Return to PHOS local system
Bool_t GlobalPos2RelId(TVector3& global, Int_t* relId)
Converts position in global ALICE coordinates to relId
returns false if x,z coordinates are beyond PHOS
distande to PHOS surface is NOT calculated
Bool_t ImpactOnEmc(const TParticle* particle, Int_t& ModuleNumber, Double_t& z, Double_t& x) const
 Tells if a particle enters PHOS and evaluates hit position
Bool_t ImpactOnEmc(const Double_t* vtx, const Double_t theta, const Double_t phi, Int_t& ModuleNumber, Double_t& z, Double_t& x) const
 calculates the impact coordinates on PHOS of a neutral particle
 emitted in the vertex vtx[3] with direction vec(p) in the ALICE global coordinate system
Bool_t ImpactOnEmc(const Double_t* vtx, const TVector3& vec, Int_t& ModuleNumber, Double_t& z, Double_t& x) const
 calculates the impact coordinates on PHOS of a neutral particle
 emitted in the vertex vtx[3] with direction theta and phi in the ALICE global coordinate system
void GetIncidentVector(const TVector3& vtx, Int_t module, Float_t x, Float_t z, TVector3& vInc) const
Calculates vector pointing from vertex to current poisition in module local frame
Note that PHOS local system and ALICE global have opposite z directions
const TGeoHMatrix * GetMatrixForModule(Int_t mod) const
Provides shift-rotation matrix for module mod
const TGeoHMatrix * GetMatrixForStrip(Int_t mod, Int_t strip) const
Provides shift-rotation matrix for strip unit of the module mod
const TGeoHMatrix * GetMatrixForCPV(Int_t mod) const
Provides shift-rotation matrix for CPV of the module mod
const TGeoHMatrix * GetMatrixForPHOS(Int_t mod) const
Provides shift-rotation matrix for PHOS (EMC+CPV)
void SetMisalMatrix(const TGeoHMatrix* m, Int_t mod)
Fills pointers to geo matrixes
Bool_t IsInEMC(Int_t id) const
calculates vector from vertex to current point in module local frame
{ if (id > fNModules * fNCristalsInModule ) return kFALSE; return kTRUE; }