a3dd75c9cc6aaaf6d2d127e7317eb0c1f417cacd
[u/mrichter/AliRoot.git] / PHOS / AliPHOSEMCAGeometry.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 //_________________________________________________________________________
19 // Geometry class  for PHOS : EMCA (Electromagnetic Calorimeter)  
20 // Its data members provide geometry parametrization of EMCA
21 // which can be changed in the constructor only.
22 // Author   : Yves Schutz (SUBATECH)
23 // Modified : Yuri Kharlov (IHEP, Protvino)
24 // 13 September 2000
25
26 // --- AliRoot header files ---
27
28 #include "AliPHOSEMCAGeometry.h"
29
30 ClassImp(AliPHOSEMCAGeometry) ;
31
32 //____________________________________________________________________________
33 AliPHOSEMCAGeometry::AliPHOSEMCAGeometry()
34 {
35
36   // Initializes the EMC parameters
37
38   fNPhi       = 64 ; 
39   fNZ         = 64 ; 
40
41   fXtlSize[0] =  2.2 ;
42   fXtlSize[1] = 18.0 ;
43   fXtlSize[2] =  2.2 ;
44
45   // all these numbers coming next are subject to changes
46
47   fOuterBoxThickness[0] = 2.5 ;
48   fOuterBoxThickness[1] = 5.0 ;      
49   fOuterBoxThickness[2] = 5.0 ;
50   
51   fUpperPlateThickness  = 4.0 ;
52   
53   fSecondUpperPlateThickness = 5.0 ; 
54   
55   fCrystalSupportHeight   = 6.95 ; 
56   fCrystalWrapThickness   = 0.01 ;
57   fCrystalHolderThickness = 0.005 ;
58   fModuleBoxThickness     = 2.0 ; 
59   fIPtoOuterCoverDistance = 447.0 ;      
60   fIPtoCrystalSurface     = 460.0 ;  
61   
62   //fPinDiodeSize[0] = 1.71 ;   //Values of ame PIN diode  
63   //fPinDiodeSize[1] = 0.0280 ; // OHO 0.0280 is the depth of active layer
64   //fPinDiodeSize[2] = 1.61 ;    
65  
66   fPinDiodeSize[0] = 0.5000 ;    // APD 5 mm side
67   //fPinDiodeSize[1] = 0.0200 ;  // APD bulk thickness
68   fPinDiodeSize[1] = 0.0100 ;    // APD bulk thickness
69   //According to Y. M. (cms) is it 50 micrometer I use 100 micrometers OHO
70   fPinDiodeSize[2] = 0.5000 ;    // APD 5 mm side 
71  
72   fUpperCoolingPlateThickness   = 0.06 ; 
73   fSupportPlateThickness        = 10.0 ;
74   fLowerThermoPlateThickness    =  3.0 ; 
75   fLowerTextolitPlateThickness  =  1.0 ;
76   fGapBetweenCrystals           = 0.03 ;
77   
78   fTextolitBoxThickness[0] = 1.5 ;  
79   fTextolitBoxThickness[1] = 0.0 ;   
80   fTextolitBoxThickness[2] = 3.0 ; 
81   
82   fAirThickness[0] =  0.4   ;
83   fAirThickness[1] = 20.5175 ;  
84   fAirThickness[2] =  2.48   ;  
85   
86   Float_t xtalModulePhiSize =  fNPhi * ( fXtlSize[0] + 2 * fGapBetweenCrystals ) ; 
87   Float_t xtalModuleZSize   =  fNZ   * ( fXtlSize[2] + 2 * fGapBetweenCrystals ) ;
88   
89   // The next dimensions are calculated from the above parameters
90   
91   fOuterBoxSize[0] =  xtalModulePhiSize + 2 * ( fAirThickness[0] + fModuleBoxThickness
92                                                 + fTextolitBoxThickness[0] + fOuterBoxThickness[0] ) ; 
93   fOuterBoxSize[1] = ( fXtlSize[1] + fCrystalSupportHeight + fCrystalWrapThickness + fCrystalHolderThickness )
94     + 2 * (fAirThickness[1] +  fModuleBoxThickness + fTextolitBoxThickness[1] + fOuterBoxThickness[1] ) ;
95   fOuterBoxSize[2] =  xtalModuleZSize   + 2 * ( fAirThickness[2] + fModuleBoxThickness 
96                                                 + fTextolitBoxThickness[2] + fOuterBoxThickness[2] ) ; 
97   
98   fTextolitBoxSize[0]  = fOuterBoxSize[0] - 2 * fOuterBoxThickness[0] ;
99   fTextolitBoxSize[1]  = fOuterBoxSize[1] -  fOuterBoxThickness[1] - fUpperPlateThickness ;
100   fTextolitBoxSize[2]  = fOuterBoxSize[2] - 2 * fOuterBoxThickness[2] ;
101   
102   fAirFilledBoxSize[0] =  fTextolitBoxSize[0] - 2 * fTextolitBoxThickness[0] ; 
103   fAirFilledBoxSize[1] =  fTextolitBoxSize[1] - fSecondUpperPlateThickness ; 
104   fAirFilledBoxSize[2] =  fTextolitBoxSize[2] - 2 * fTextolitBoxThickness[2] ; 
105   fRotMatrixArray = 0; 
106 }
107 //____________________________________________________________________________