//_________________________________________________________________________
// class for geometry transformations in PHOS
+// this class contains AiRoot-independent transformations,
+// AliRoot part is in AliPHOSGeometry
// PHOS consists of the electromagnetic calorimeter (EMCA)
-// and a charged particle veto (CPV)
+// charged particle veto (CPV) and support
//
//*-- Author: Dmitri Peressounko (RRC "KI")
// --- AliRoot header files ---
+class TGeoHMatrix ;
class TVector3;
class TParticle ;
+class AliPHOSEMCAGeometry;
+class AliPHOSCPVGeometry;
+class AliPHOSSupportGeometry;
class AliPHOSGeoUtils : public TNamed {
Bool_t IsInEMC(Int_t id) const { if (id > fNModules * fNCristalsInModule ) return kFALSE; return kTRUE; }
+ //Method to set shift-rotational matrixes from ESDHeader
+ void SetMisalMatrix(const TGeoHMatrix * m, Int_t mod) ;
-private:
-
- void Init(void) ; //Read all sizes etc. for EMC and CPV geometries
+protected:
+ //Returns shift-rotational matrixes for different volumes
+ const TGeoHMatrix * GetMatrixForModule(Int_t mod)const ;
+ const TGeoHMatrix * GetMatrixForStrip(Int_t mod, Int_t strip)const ;
+ const TGeoHMatrix * GetMatrixForCPV(Int_t mod)const ;
+ const TGeoHMatrix * GetMatrixForPHOS(Int_t mod)const ;
+
+protected:
-private:
+ AliPHOSEMCAGeometry *fGeometryEMCA ; // Geometry object for Electromagnetic calorimeter
+ AliPHOSCPVGeometry *fGeometryCPV ; // Geometry object for CPV (IHEP)
+ AliPHOSSupportGeometry *fGeometrySUPP ; // Geometry object for PHOS support
+
- Int_t fNModules ; // Maximal designed number of modules in PHOS
+ Int_t fNModules ; //Maximal designed number of modules in PHOS
Int_t fNCristalsInModule ; //Number of crystals in one module
Int_t fNPhi ; //Number of crystals along Phi direction
Int_t fNZ ; //Number of crystals along Z direction
Float_t fCrystalShift ; //Distance between center of module and crystal surface
Float_t fXtlArrSize[3] ; //Total size of cristals array
Float_t fCryCellShift ;
+ Float_t fCryStripShift ;
Float_t fCellStep ;
Float_t fPadSizePhi ; //Size of CPV pad in Phi direction
Float_t fPadSizeZ ; //Size of CPV pad in Z direction
Float_t fCPVBoxSizeY ;
- ClassDef(AliPHOSGeoUtils,1) // PHOS geometry class
+ TGeoHMatrix* fEMCMatrix[5] ; //Orientations of crystalls array in modules
+ TGeoHMatrix* fStripMatrix[5][224]; //Orientations of strip units
+ TGeoHMatrix* fCPVMatrix[5] ; //Orientations of CPV
+ const TGeoHMatrix* fPHOSMatrix[5] ; //Orientations of PHOS modules
+
+ TClonesArray * fMisalArray ;
+
+ ClassDef(AliPHOSGeoUtils,2) // PHOS geometry class
} ;