Inheritance from TObject. Automatic streamers.
[u/mrichter/AliRoot.git] / PHOS / AliPHOSPPSDGeometry.h
1 #ifndef ALIPHOSPPSDGEOMETRY_H
2 #define ALIPHOSPPSDGEOMETRY_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 derived class for PHOS:PPSD (PHOS Preshower Detector)
10 // Its data members provide geometry parametrization of PPSD
11 // which can be changed in the constructor only.
12 // Author  : Yves Schutz
13 // Modified: Yuri Kharlov (IHEP, Protvino)
14 // 7 November 2000
15
16 #include <assert.h> 
17
18 #include "AliPHOSCPVBaseGeometry.h"
19
20 class AliPHOSPPSDGeometry : public AliPHOSCPVBaseGeometry {
21
22 public: 
23
24            AliPHOSPPSDGeometry();
25   virtual ~AliPHOSPPSDGeometry(void) {};
26
27   // PPSD functions
28
29   virtual Float_t GetAnodeThickness(void)          { return  fAnodeThickness ;          }
30   virtual Float_t GetAvalancheGap(void)            { return  fAvalancheGap ;            }
31   virtual Float_t GetCathodeThickness(void)        { return  fCathodeThickness ;        }
32   virtual Float_t GetCompositeThickness(void)      { return  fCompositeThickness ;      }
33   virtual Float_t GetConversionGap(void)           { return  fConversionGap ;           }
34   virtual Float_t GetLeadConverterThickness(void)  { return  fLeadConverterThickness ;  }
35   virtual Float_t GetLeadToMicro2Gap(void)         { return  fLeadToMicro2Gap ;         }
36   virtual Float_t GetLidThickness(void)            { return  fLidThickness ;            }
37   virtual Float_t GetMicromegas1Thickness(void)    { return  fMicromegas1Thickness ;    }
38   virtual Float_t GetMicromegas2Thickness(void)    { return  fMicromegas2Thickness ;    }
39   virtual Float_t GetMicromegasWallThickness(void) { return  fMicromegasWallThickness ; }
40   virtual Float_t GetMicro1ToLeadGap(void)         { return  fMicro1ToLeadGap ;         }
41   virtual Int_t   GetNumberOfPadsPhi(void)         { return  fNumberOfPadsPhi ;         }
42   virtual Int_t   GetNumberOfPadsZ(void)           { return  fNumberOfPadsZ ;           }
43   virtual Int_t   GetNumberOfModulesPhi(void)      { return  fNumberOfModulesPhi ;      }
44   virtual Int_t   GetNumberOfModulesZ(void)        { return  fNumberOfModulesZ ;        }
45   virtual Float_t GetPCThickness(void)             { return  fPCThickness ;             }
46   virtual Float_t GetPhiDisplacement(void)         { return  fPhiDisplacement ;         }
47   virtual Float_t GetCPVBoxSize(Int_t index)       { return  fPPSDBoxSize[index] ;      }
48   virtual Float_t GetPPSDModuleSize(Int_t index)   { return  fPPSDModuleSize[index] ;   }
49   virtual Float_t GetZDisplacement(void)           { return  fZDisplacement ;           }
50   virtual void    SetLeadConverterThickness(Float_t x) { fLeadConverterThickness = x;  }
51   
52   // CPV functions cannot be used for PPSD
53   
54   virtual Int_t   GetNumberOfCPVLayers(void)       { AssertCPV("GetNumberOfCPVLayers");     return 0; }
55   virtual Bool_t  IsLeadConverterExists(void)      { AssertCPV("IsLeadConverterExists");    return 0; }
56   virtual Float_t GetCPVActiveSize(Int_t index)    { AssertCPV("GetCPVActiveSize");         return 0; }
57   virtual Int_t   GetNumberOfCPVChipsPhi(void)     { AssertCPV("GetNumberOfCPVChipsPhi");   return 0; }
58   virtual Int_t   GetNumberOfCPVChipsZ(void)       { AssertCPV("GetNumberOfCPVChipsZ");     return 0; }
59   virtual Float_t GetGassiplexChipSize(Int_t index){ AssertCPV("GetGassiplexChipSize");     return 0; }
60   virtual Float_t GetCPVGasThickness(void)         { AssertCPV("GetCPVGasThickness");       return 0; }
61   virtual Float_t GetCPVTextoliteThickness(void)   { AssertCPV("GetCPVTextoliteThickness"); return 0; }
62   virtual Float_t GetCPVCuNiFoilThickness(void)    { AssertCPV("GetCPVCuNiFoilThickness");  return 0; }
63   virtual Float_t GetFTPosition(Int_t index)       { AssertCPV("GetFTPosition");            return 0; }
64   virtual Float_t GetCPVFrameSize(Int_t index)     { AssertCPV("GetCPVFrameSize");          return 0; }
65   virtual Float_t GetIPtoCPVDistance(void)         { AssertCPV("GetIPtoCPVDistance");       return 0; }
66
67 private:
68
69   Float_t fAnodeThickness ;          // Thickness of the copper layer which makes the anode 
70   Float_t fAvalancheGap ;            // Thickness of the gas in the avalanche stage
71   Float_t fCathodeThickness ;        // Thickness of composite material ensuring rigidity of cathode
72   Float_t fCompositeThickness ;      // Thickness of composite material ensuring rigidity of anode
73   Float_t fConversionGap ;           // Thickness of the gas in the conversion stage
74   Float_t fLeadConverterThickness ;  // Thickness of the Lead converter 
75   Float_t fLeadToMicro2Gap ;         // Thickness of the air gap between the Lead and Micromegas 2        
76   Float_t fLidThickness ;            // Thickness of top lid 
77   Float_t fMicromegas1Thickness ;    // Thickness of the first downstream Micromegas 
78   Float_t fMicromegas2Thickness ;    // Thickness of the second downstream Micromegas 
79   Float_t fMicromegasWallThickness ; // Thickness of the Micromegas leak tight box
80   Float_t fMicro1ToLeadGap ;         // Thickness of the air gap between Micromegas 1 and the Lead
81   Int_t   fNumberOfPadsPhi ;         // Number of pads on a micromegas module ;  
82   Int_t   fNumberOfPadsZ ;           // Number of pads on a micromegas module ;  
83   Int_t   fNumberOfModulesPhi ;      // Number of micromegas modules in phi
84   Int_t   fNumberOfModulesZ ;        // Number of micromegas modules in z
85   Float_t fPCThickness ;             // Thickness of the printed circuit board of the anode   
86   Float_t fPhiDisplacement ;         // Phi displacement of micromegas1 with respect to micromegas2  
87   Float_t fPPSDBoxSize[3] ;          // Size of large box which contains PPSD; matches PHOS module size
88   Float_t fPPSDModuleSize[3] ;       // Size of an individual micromegas module
89   Float_t fZDisplacement ;           // Z displacement of micromegas1 with respect to micromegas2  
90
91   Float_t fIPtoTopLidDistance ;      // Distance from interaction point to top lid of PPSD
92
93   void    AssertCPV(char* name) {
94     printf("Function AliPPSDGeometry::%s should not be called for PPSD geometry\n",name);
95     assert(0==1) ;
96   }
97
98   ClassDef(AliPHOSPPSDGeometry,1)        // PPSD geometry class 
99
100 } ;
101
102 #endif // AliPHOSPPSDGEOMETRY_H