Coding convention rules obeyed
[u/mrichter/AliRoot.git] / PHOS / AliPHOSEMCAGeometry.h
1 #ifndef ALIPHOSEMCAGEOMETRY_H
2 #define ALIPHOSEMCAGEOMETRY_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //_________________________________________________________________________
9 // Geometry class  for PHOS : EMCA (Electromagnetic Calirometer)
10 // Its data members provide geometry parametrization of EMCA
11 // which can be changed in the constructor only.
12 // Author:   Yves Schutz (Subatech)
13 // Modified: Yuri Kharlov (IHEP, Protvino)
14 // 15 September 2000
15
16 #include <assert.h> 
17
18 // --- ROOT system ---
19
20 #include "TObjArray.h"
21
22 // --- AliRoot header files ---
23
24 class AliPHOSEMCAGeometry : public TObject {
25
26 public: 
27
28            AliPHOSEMCAGeometry();
29            AliPHOSEMCAGeometry(const AliPHOSEMCAGeometry & cpv) {
30              // cpy ctor requested by Coding Convention but not yet needed
31              assert(0==1) ;
32            } 
33   virtual ~AliPHOSEMCAGeometry(void) {}
34
35   AliPHOSEMCAGeometry & operator = (const AliPHOSEMCAGeometry  & rvalue) {
36     // assignement operator requested by coding convention but not needed
37     assert(0==1) ;
38     return *this ; 
39   }
40   Float_t    GetAirFilledBoxSize(Int_t index)     const { 
41     return fAirFilledBoxSize[index] ;}
42   Float_t    GetCrystalHolderThickness(void)      const { 
43     return fCrystalHolderThickness ; } 
44   Float_t    GetCrystalSize(Int_t index)          const { 
45     return fXtlSize[index] ; }
46   Float_t    GetCrystalSupportHeight(void)        const { 
47     return fCrystalSupportHeight ; } 
48   Float_t    GetCrystalWrapThickness(void)        const { 
49     return fCrystalWrapThickness;}
50   Float_t    GetGapBetweenCrystals(void)          const { 
51     return fGapBetweenCrystals ; }
52   Float_t    GetIPtoCrystalSurface(void)          const { 
53     return fIPtoCrystalSurface ; }
54   Float_t    GetIPtoOuterCoverDistance(void)      const { 
55     return fIPtoOuterCoverDistance ; }
56   Float_t    GetLowerThermoPlateThickness(void)   const { 
57     return fLowerThermoPlateThickness ; }
58   Float_t    GetLowerTextolitPlateThickness(void) const { 
59     return fLowerTextolitPlateThickness ; }
60   Float_t    GetModuleBoxThickness(void)          const { 
61     return fModuleBoxThickness ; }
62   Int_t      GetNPhi(void)                        const { 
63     return fNPhi ; }
64   Int_t      GetNZ(void)                          const { 
65     return fNZ ; }
66   Float_t    GetOuterBoxSize(Int_t index)         const { 
67     return fOuterBoxSize[index] ;    }
68   Float_t    GetOuterBoxThickness(Int_t index)    const { 
69     return fOuterBoxThickness[index] ; } 
70   Float_t    GetPinDiodeSize(Int_t index)         const { 
71     return fPinDiodeSize[index] ; }
72   Float_t    GetSecondUpperPlateThickness(void)   const { 
73     return fSecondUpperPlateThickness ; }
74   Float_t    GetSupportPlateThickness(void)       const { 
75     return fSupportPlateThickness ; }    
76   Float_t    GetTextolitBoxSize(Int_t index)      const { 
77     return fTextolitBoxSize[index] ; }
78   Float_t    GetTextolitBoxThickness(Int_t index) const { 
79     return fTextolitBoxThickness[index]; } 
80   Float_t    GetUpperPlateThickness(void)         const { 
81     return fUpperPlateThickness ; }
82   Float_t    GetUpperCoolingPlateThickness(void)  const { 
83     return fUpperCoolingPlateThickness ; }
84  
85 private:
86
87   Float_t fAirFilledBoxSize[3] ;          // Air filled box containing one module
88   Float_t fAirThickness[3] ;              // Space filled with air between the module box and the Textolit box
89   Float_t fCrystalSupportHeight ;         // Height of the support of the crystal    
90   Float_t fCrystalWrapThickness ;         // Thickness of Tyvek wrapping the crystal
91   Float_t fCrystalHolderThickness ;       // Titanium holder of the crystal
92   Float_t fGapBetweenCrystals ;           // Total Gap between two adjacent crystals 
93   Float_t fIPtoOuterCoverDistance ;       // Distances from interaction point to outer cover 
94   Float_t fIPtoCrystalSurface ;           // Distances from interaction point to Xtal surface
95   Float_t fModuleBoxThickness ;           // Thickness of the thermo insulating box containing one crystals module 
96   Float_t fLowerTextolitPlateThickness ;  // Thickness of lower textolit plate
97   Float_t fLowerThermoPlateThickness ;    // Thickness of lower thermo insulating plate
98   Int_t   fNPhi ;                         // Number of crystal units in X (phi) direction
99   Int_t   fNZ ;                           // Number of crystal units in Z direction
100   Float_t fOuterBoxSize[3] ;              // Size of the outer  thermo insulating foam box
101   Float_t fOuterBoxThickness[3] ;         // Thickness of the outer thermo insulating foam box
102   Float_t fPinDiodeSize[3] ;              // Size of the PIN Diode 
103   Float_t fSecondUpperPlateThickness ;    // Thickness of  upper polystyrene foam plate
104   Float_t fSupportPlateThickness ;        // Thickness of the Aluminium support plate  
105   Float_t fUpperCoolingPlateThickness ;   // Thickness of the upper cooling plate 
106   Float_t fUpperPlateThickness ;          // Thickness of the uper thermo insulating foam plate 
107   Float_t fTextolitBoxSize[3] ;           // Size of the Textolit box inside the insulating foam box
108   Float_t fTextolitBoxThickness[3] ;      // Thicknesses of th Textolit box
109   Float_t fXtlSize[3] ;                   // PWO4 crystal dimensions
110   TObjArray *fRotMatrixArray ;            // List of rotation matrices (one per phos module)
111
112   ClassDef(AliPHOSEMCAGeometry,1)         // EMCA geometry class 
113
114 } ;
115
116 #endif // AliPHOSEMCAGEOMETRY_H