6cc15b3d66d931169f870299d0a3024fb6ae94ef
[u/mrichter/AliRoot.git] / PHOS / AliPHOSCPVGeometry.h
1 #ifndef ALIPHOSCPVGEOMETRY_H
2 #define ALIPHOSCPVGEOMETRY_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:CPV (Charged particle veto, IHEP version)
10 // Its data members provide geometry parametrization of CPV
11 // which can be changed in the constructor only.
12 // Author:  Yuri Kharlov (IHEP, Protvino)
13 // 7 November 2000
14
15 #include <assert.h> 
16
17 #include "AliPHOSCPVBaseGeometry.h"
18
19 class AliPHOSCPVGeometry : public AliPHOSCPVBaseGeometry {
20
21 public: 
22
23            AliPHOSCPVGeometry();
24   virtual ~AliPHOSCPVGeometry(void) {};
25
26   // CPV functions
27
28   virtual Int_t   GetNumberOfCPVLayers(void)        { return  fNumberOfCPVLayers;        }
29   virtual Bool_t  IsLeadConverterExists(void)       { return  fLeadConverterExists;      }
30   virtual Int_t   GetNumberOfCPVPadsPhi(void)       { return  fNumberOfCPVPadsPhi ;      }
31   virtual Int_t   GetNumberOfCPVPadsZ(void)         { return  fNumberOfCPVPadsZ ;        }
32   virtual Float_t GetCPVPadSizePhi(void)            { return  fCPVPadSizePhi;            }
33   virtual Float_t GetCPVPadSizeZ(void)              { return  fCPVPadSizeZ;              }
34   virtual Float_t GetCPVBoxSize(Int_t index)        { return  fCPVBoxSize[index];        }
35   virtual Float_t GetCPVActiveSize(Int_t index)     { return  fCPVActiveSize[index];     }
36   virtual Int_t   GetNumberOfCPVChipsPhi(void)      { return  fNumberOfCPVChipsPhi;      }
37   virtual Int_t   GetNumberOfCPVChipsZ(void)        { return  fNumberOfCPVChipsZ;        }
38   virtual Float_t GetGassiplexChipSize(Int_t index) { return  fGassiplexChipSize[index]; }
39   virtual Float_t GetCPVGasThickness(void)          { return  fCPVGasThickness;          }
40   virtual Float_t GetCPVTextoliteThickness(void)    { return  fCPVTextoliteThickness;    }
41   virtual Float_t GetCPVCuNiFoilThickness(void)     { return  fCPVCuNiFoilThickness;     }
42   virtual Float_t GetFTPosition(Int_t index)        { return  fFTPosition[index];        }
43   virtual Float_t GetCPVFrameSize(Int_t index)      { return  fCPVFrameSize[index];      }
44
45   // PPSD functions cannot be used for CPV
46
47   virtual Float_t GetAnodeThickness(void)          { AssertPPSD("GetAnodeThickness");          return 0; }
48   virtual Float_t GetAvalancheGap(void)            { AssertPPSD("GetAvalancheGap");            return 0; }
49   virtual Float_t GetCathodeThickness(void)        { AssertPPSD("GetCathodeThickness");        return 0; }
50   virtual Float_t GetCompositeThickness(void)      { AssertPPSD("GetCompositeThickness");      return 0; }
51   virtual Float_t GetConversionGap(void)           { AssertPPSD("GetConversionGap");           return 0; }
52   virtual Float_t GetLeadConverterThickness(void)  { AssertPPSD("GetLeadConverterThickness");  return 0; }
53   virtual Float_t GetLeadToMicro2Gap(void)         { AssertPPSD("GetLeadToMicro2Gap");         return 0; }
54   virtual Float_t GetLidThickness(void)            { AssertPPSD("GetLidThickness");            return 0; }
55   virtual Float_t GetMicromegas1Thickness(void)    { AssertPPSD("GetMicromegas1Thickness");    return 0; }
56   virtual Float_t GetMicromegas2Thickness(void)    { AssertPPSD("GetMicromegas2Thickness");    return 0; }
57   virtual Float_t GetMicromegasWallThickness(void) { AssertPPSD("GetMicromegasWallThickness"); return 0; }
58   virtual Float_t GetMicro1ToLeadGap(void)         { AssertPPSD("GetMicro1ToLeadGap");         return 0; }
59   virtual Float_t GetPCThickness(void)             { AssertPPSD("GetPCThickness");             return 0; }
60   virtual Float_t GetPhiDisplacement(void)         { AssertPPSD("GetPhiDisplacement");         return 0; }
61   virtual Float_t GetPPSDModuleSize(Int_t index)   { AssertPPSD("GetPPSDModuleSize");          return 0; }
62   virtual Float_t GetZDisplacement(void)           { AssertPPSD("GetZDisplacement");           return 0; }
63   virtual Int_t   GetNumberOfPadsPhi(void)         { AssertPPSD("GetNumberOfPadsPhi");         return 0; }
64   virtual Int_t   GetNumberOfPadsZ(void)           { AssertPPSD("GetNumberOfPadsZ");           return 0; }
65   virtual Int_t   GetNumberOfModulesPhi(void)      { AssertPPSD("GetNumberOfModulesPhi");      return 0; }
66   virtual Int_t   GetNumberOfModulesZ(void)        { AssertPPSD("GetNumberOfModulesZ");        return 0; }
67   virtual void    SetLeadConverterThickness(Float_t x) { AssertPPSD("SetLeadConverterThickness");       }
68  
69 private:
70
71   Int_t   fNumberOfCPVLayers;      // Number of CPV identical layers
72   Bool_t  fLeadConverterExists;    // kTRUE if the lead converter between CPV layers exists
73   Int_t   fNumberOfCPVPadsPhi;     // Number of CPV pads in phi
74   Int_t   fNumberOfCPVPadsZ;       // Number of CPV pads in z
75   Float_t fCPVPadSizePhi;          // CPV pad size in phi
76   Float_t fCPVPadSizeZ;            // CPV pad size in z
77   Float_t fCPVBoxSize[3];          // Outer size of CPV box
78   Float_t fCPVActiveSize[2];       // Active size of CPV box (x,z)
79   Int_t   fNumberOfCPVChipsPhi;    // Number of CPV Gassiplex chips in phi
80   Int_t   fNumberOfCPVChipsZ;      // Number of CPV Gassiplex chips in z
81   Float_t fGassiplexChipSize[3];   // Size of a Gassiplex chip (0 - in z, 1 - in phi, 2 - thickness (in ALICE radius))
82   Float_t fCPVGasThickness;        // Thickness of CPV gas volume
83   Float_t fCPVTextoliteThickness;  // Thickness of CPV textolite PCB (without foil)
84   Float_t fCPVCuNiFoilThickness;   // Thickness of CPV Copper-Nickel foil of PCB
85   Float_t fFTPosition[4];          // Positions of the 4 PCB vs the CPV box center
86   Float_t fCPVFrameSize[3];        // CPV frame size (0 - in phi, 1 - in z, 2 - thickness (along ALICE radius))
87
88   void    AssertPPSD(char* name) {
89     printf("Function AliCPVGeometry::%s should not be called for CPV geometry\n",name);
90     assert(0==1) ;
91   }
92
93   ClassDef(AliPHOSCPVGeometry,1)       // CPV geometry base class 
94
95 } ;
96
97 #endif // AliPHOSCPVGEOMETRY_H