f898e0f3 |
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 | private: |
75 | |
76 | AliPHOSSimParam(Int_t i); //True constructor which should be called by GetInstance() |
77 | |
78 | private: |
79 | |
80 | //Parameters used in conversion of deposited energy to APD response (AliPHOSv1) |
81 | Float_t fLightYieldMean ; //Average number of photoelectrons per GeV |
82 | Float_t fIntrinsicAPDEfficiency; //APD efficiency including geometric coverage |
83 | Float_t fLightFactor ; //Average number of photons collected by APD per GeV deposited energy |
84 | Float_t fAPDFactor ; //factor relating light yield and APD response |
85 | |
86 | //Parameters used in electronic noise calculation and thresholds for EMC (AliPHOSDigitizer) |
87 | Float_t fAPDNoise; //RMS of APD noise |
88 | Float_t fEMCDigitThreshold ; //minimal energy to keep digit |
89 | Float_t fEMCADCchannel ; //width of ADC channel in GeV |
90 | Float_t fTOFa ; //constant term of TOF resolution |
91 | Float_t fTOFb ; //stohastic term of TOF resolution |
92 | |
93 | //CPV parameters |
94 | Float_t fADCpedestalCpv ; //Pedestal value |
95 | Float_t fADCchanelCpv ; //ADC channel width |
96 | Float_t fCPVNoise ; //RMS of CPV noise |
97 | Float_t fCPVDigitThreshold ; //Minimal energy to keep digit |
98 | Int_t fNADCcpv ; //Max number of channels in CPV ADC |
99 | |
100 | Bool_t fDStream[10] ; //Mark mixing stream contains digits or SDigits |
101 | Bool_t fDigitizeE ; //Use energy digitization in simulation or left to Digits2Raw() |
102 | |
103 | static AliPHOSSimParam * fgSimParam ; // pointer to the unique instance of the class |
104 | |
105 | ClassDef(AliPHOSSimParam,1) |
106 | }; |
107 | |
108 | #endif |