Fixing ompilation warnings
[u/mrichter/AliRoot.git] / PHOS / AliPHOSSimParam.h
1 #ifndef ALIPHOSSIMPARAM_H
2 #define ALIPHOSSIMPARAM_H
3 /* Copyright(c) 2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                          */
5
6 /* $Id: AliPHOSSimParam.h 23530 2008-01-25 06:46:13Z prsnko $ */
7                                               
8 // Base class for the PHOS simulation parameters.
9 // Do not use in the reconstruction; use derivative classes instead.
10
11 #include "TNamed.h"
12 #include "TMath.h"
13
14 class AliPHOSSimParam : public TNamed {
15
16 public:
17
18   AliPHOSSimParam();
19   AliPHOSSimParam(const AliPHOSSimParam& recoParam);
20   AliPHOSSimParam& operator = (const AliPHOSSimParam& recoParam);
21   virtual ~AliPHOSSimParam() {}
22
23   static AliPHOSSimParam * GetInstance() ;
24
25   //Parameters used in conversion of deposited energy to APD response [see AliPHOSv1 for details]
26   void SetMeanLightYield(Float_t ly=47000.){fLightYieldMean=ly; //recalculate now dependencies
27                                             fLightFactor = fLightYieldMean * fIntrinsicAPDEfficiency ; 
28                                             fAPDFactor   = (13.418/fLightYieldMean/100.) * 300. ; }
29   void SetAPDEfficiency(Float_t eff=0.02655){fIntrinsicAPDEfficiency=eff;
30                                              fLightFactor = fLightYieldMean * fIntrinsicAPDEfficiency ;}
31   Float_t GetLightFactor(void) const { return fLightFactor ;}
32   Float_t GetAPDFactor(void) const { return fAPDFactor ;}
33
34   //Parameters use in EMC noise calculation [see AliPHOSDigitizer for details]
35   Float_t GetAPDNoise() const { return fAPDNoise;  }          //RMS of APD noise
36   void SetAPDNoise(Float_t noise=0.012){fAPDNoise = noise;  }
37
38   Float_t GetEmcDigitsThreshold() const { return fEMCDigitThreshold ; }  //Minimal energy to keep digit
39   void SetEMCDigitsThreshold(Float_t thresh=0.01){fEMCDigitThreshold=thresh;} 
40
41   //Parameters for energy digitization [see AliPHOSDigitizer for details]
42   void SetADCchannelW(Float_t width=0.005){fEMCADCchannel=width ;} //EMC channel width
43   Float_t GetADCchannelW(void) const {return fEMCADCchannel; }
44
45   void SetEDigitizationOn(Bool_t on=kTRUE){fDigitizeE=on ;}   //Use digitization in simulation or left it
46   Bool_t IsEDigitizationOn(void)const {return fDigitizeE ;}   //for Digits2Raw->Digits procedure
47
48   //Parameters for EMC TOF resolution [see AliPHOSDigitizer::TimeResolution()]
49   Float_t GetTOFa()const{return fTOFa ;}  //constant term
50   Float_t GetTOFb()const{return fTOFb ;}  //stohastic term
51   void SetTOFparameters(Float_t a=0.5e-9, Float_t b=1.5e-9){fTOFa=a; fTOFb=b; }
52
53   //Parameters for CPV noise and digitization  [see AliPHOSDigitizer for details] 
54   Float_t GetCPVNoise() const {return fCPVNoise ;}           //RMS of CPV noise in
55   void SetCPVNoise(Float_t noise=0.01){ fCPVNoise = noise ;} //CPV popugais
56
57   Float_t GetCpvDigitsThreshold() const {return fCPVDigitThreshold ;}           //Minimal energy to keep digit in
58   void SetCpvDigitsThreshold(Float_t thresh=0.09){fCPVDigitThreshold = thresh;} //CPV popugais
59
60   Float_t GetADCpedestalCpv() const {return fADCpedestalCpv ;}      //CPV pedestal value 
61   void SetADCpedestalCpv(Float_t ped=0.012){ fADCpedestalCpv=ped ;} //in CPV popugais
62
63   Float_t GetADCchanelCpv() const {return fADCchanelCpv;}     //Price of one ADC channel 
64   void SetADCchanelCpv(Float_t w=0.0012) {fADCchanelCpv=w; }  //for CPV
65
66   Int_t GetNADCcpv() const {return fNADCcpv ;}                         //Max number of channels
67   void SettNADCcpv(Int_t n=12) { fNADCcpv=(Int_t)TMath::Power(2,n) ; } //in CPV  ADC
68
69   //Mark streams for mixing as streams contaning Digits (true) or SDigits (false)
70   //Streamt numbering the same as in StreamManager
71   void    SetStreamDigits(Int_t i){if(i<10)fDStream[i]=kTRUE;}
72   Bool_t  IsStreamDigits(Int_t i){return fDStream[i]; }
73
74   //Parameters for RAW embedding
75   void SetEMCSubtractPedestals(Bool_t subtract) { fEMCSubtractPedestals = subtract;}
76   Bool_t  EMCSubtractPedestals()      const { return fEMCSubtractPedestals;    }
77
78   void SetGlobalAltroOffset(Int_t offset)  { fGlobalAltroOffset = offset ; }
79   Int_t   GetGlobalAltroOffset()      const { return fGlobalAltroOffset ;  }
80
81   void SetGlobalAltroThreshold(Int_t ZSth) { fGlobalAltroThreshold = ZSth; }
82   Int_t   GetGlobalAltroThreshold()   const { return fGlobalAltroThreshold;}
83
84   void SetSampleQualityCut(Float_t qcut) { fEMCSampleQualityCut=qcut; }
85   Float_t GetEMCSampleQualityCut()    const { return fEMCSampleQualityCut; }
86
87 private:
88
89   AliPHOSSimParam(Int_t i); //True constructor which should be called by GetInstance()
90
91 private:
92
93   //Parameters used in conversion of deposited energy to APD response (AliPHOSv1)
94   Float_t  fLightYieldMean ;        //Average number of photoelectrons per GeV
95   Float_t  fIntrinsicAPDEfficiency; //APD efficiency including geometric coverage
96   Float_t  fLightFactor ;           //Average number of photons collected by APD per GeV deposited energy
97   Float_t  fAPDFactor ;             //factor relating light yield and APD response 
98  
99   //Parameters used in electronic noise calculation and thresholds for EMC (AliPHOSDigitizer)
100   Float_t fAPDNoise;            //RMS of APD noise
101   Float_t fEMCDigitThreshold ;  //minimal energy to keep digit 
102   Float_t fEMCADCchannel ;      //width of ADC channel in GeV
103   Float_t fTOFa  ;              //constant term of TOF resolution 
104   Float_t fTOFb  ;              //stohastic term of TOF resolution 
105
106   //Parameters used for RAW embedding
107   Bool_t  fEMCSubtractPedestals;   // true if pedestal should be subtracted (in non-ZS)
108   Int_t   fGlobalAltroOffset ;     // Offset used in ALTRO chips in SZ runs
109   Int_t   fGlobalAltroThreshold ;  // Threshold used in ALTRO chips in SZ runs
110   Float_t fEMCSampleQualityCut;    // Cut on pulse shape fit quality
111
112   //CPV parameters
113   Float_t fADCpedestalCpv ;    //Pedestal value
114   Float_t fADCchanelCpv ;      //ADC channel width
115   Float_t fCPVNoise ;          //RMS of CPV noise 
116   Float_t fCPVDigitThreshold ; //Minimal energy to keep digit 
117   Int_t   fNADCcpv ;           //Max number of channels in CPV ADC
118  
119   Bool_t fDStream[10] ;   //Mark mixing stream contains digits or SDigits
120   Bool_t fDigitizeE ;     //Use energy digitization in simulation or left to Digits2Raw()
121
122   static AliPHOSSimParam * fgSimParam ; // pointer to the unique instance of the class
123
124   ClassDef(AliPHOSSimParam,2)
125 };
126
127 #endif