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 */
6 /* $Id: AliPHOSSimParam.h 23530 2008-01-25 06:46:13Z prsnko $ */
8 // Base class for the PHOS simulation parameters.
9 // Do not use in the reconstruction; use derivative classes instead.
14 class AliPHOSSimParam : public TNamed {
19 AliPHOSSimParam(const AliPHOSSimParam& recoParam);
20 AliPHOSSimParam& operator = (const AliPHOSSimParam& recoParam);
21 virtual ~AliPHOSSimParam() {}
23 static AliPHOSSimParam * GetInstance() ;
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 ;}
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; }
38 //Parameters to apply non-lineary on cell level
39 Bool_t IsCellNonlinearityOn() const {return fCellNonLineaityOn;}
40 void SetCellNonLinearity(Bool_t on=kTRUE){fCellNonLineaityOn=on;} //default: on=kFALSE
41 Double_t GetCellNonLineairyA(void) const {return fCellNonLineaityA; }
42 Double_t GetCellNonLineairyB(void) const {return fCellNonLineaityB; }
43 Double_t GetCellNonLineairyC(void) const {return fCellNonLineaityC; }
44 void SetCellNonLineairyA(Double_t a=0.30) {fCellNonLineaityA = a; }
45 void SetCellNonLineairyB(Double_t b=0.109){fCellNonLineaityB = b; }
46 void SetCellNonLineairyC(Double_t c=0.955){fCellNonLineaityC = c; }
50 Float_t GetEmcDigitsThreshold() const { return fEMCDigitThreshold ; } //Minimal energy to keep digit
51 void SetEMCDigitsThreshold(Float_t thresh=0.01){fEMCDigitThreshold=thresh;}
53 //Parameters for energy digitization [see AliPHOSDigitizer for details]
54 void SetADCchannelW(Float_t width=0.005){fEMCADCchannel=width ;} //EMC channel width
55 Float_t GetADCchannelW(void) const {return fEMCADCchannel; }
57 void SetEDigitizationOn(Bool_t on=kTRUE){fDigitizeE=on ;} //Use digitization in simulation or left it
58 Bool_t IsEDigitizationOn(void)const {return fDigitizeE ;} //for Digits2Raw->Digits procedure
60 //Parameters for EMC TOF resolution [see AliPHOSDigitizer::TimeResolution()]
61 Float_t GetTOFa()const{return fTOFa ;} //constant term
62 Float_t GetTOFb()const{return fTOFb ;} //stohastic term
63 void SetTOFparameters(Float_t a=0.5e-9, Float_t b=1.5e-9){fTOFa=a; fTOFb=b; }
65 //Parameters for CPV noise and digitization [see AliPHOSDigitizer for details]
66 Float_t GetCPVNoise() const {return fCPVNoise ;} //RMS of CPV noise in
67 void SetCPVNoise(Float_t noise=0.01){ fCPVNoise = noise ;} //CPV popugais
69 Float_t GetCpvDigitsThreshold() const {return fCPVDigitThreshold ;} //Minimal energy to keep digit in
70 void SetCpvDigitsThreshold(Float_t thresh=0.09){fCPVDigitThreshold = thresh;} //CPV popugais
72 Float_t GetADCpedestalCpv() const {return fADCpedestalCpv ;} //CPV pedestal value
73 void SetADCpedestalCpv(Float_t ped=0.012){ fADCpedestalCpv=ped ;} //in CPV popugais
75 Float_t GetADCchanelCpv() const {return fADCchanelCpv;} //Price of one ADC channel
76 void SetADCchanelCpv(Float_t w=0.0012) {fADCchanelCpv=w; } //for CPV
78 Int_t GetNADCcpv() const {return fNADCcpv ;} //Max number of channels
79 void SettNADCcpv(Int_t n=12) { fNADCcpv=(Int_t)TMath::Power(2,n) ; } //in CPV ADC
81 //Mark streams for mixing as streams contaning Digits (true) or SDigits (false)
82 //Streamt numbering the same as in StreamManager
83 void SetStreamDigits(Int_t i){if(i<10)fDStream[i]=kTRUE;}
84 Bool_t IsStreamDigits(Int_t i){return fDStream[i]; }
86 //Parameters for RAW embedding
87 void SetEMCSubtractPedestals(Bool_t subtract) { fEMCSubtractPedestals = subtract;}
88 Bool_t EMCSubtractPedestals() const { return fEMCSubtractPedestals; }
90 void SetGlobalAltroOffset(Int_t offset) { fGlobalAltroOffset = offset ; }
91 Int_t GetGlobalAltroOffset() const { return fGlobalAltroOffset ; }
93 void SetGlobalAltroThreshold(Int_t ZSth) { fGlobalAltroThreshold = ZSth; }
94 Int_t GetGlobalAltroThreshold() const { return fGlobalAltroThreshold;}
96 void SetSampleQualityCut(Float_t qcut) { fEMCSampleQualityCut=qcut; }
97 Float_t GetEMCSampleQualityCut() const { return fEMCSampleQualityCut; }
101 AliPHOSSimParam(Int_t i); //True constructor which should be called by GetInstance()
105 //Parameters used in conversion of deposited energy to APD response (AliPHOSv1)
106 Float_t fLightYieldMean ; //Average number of photoelectrons per GeV
107 Float_t fIntrinsicAPDEfficiency; //APD efficiency including geometric coverage
108 Float_t fLightFactor ; //Average number of photons collected by APD per GeV deposited energy
109 Float_t fAPDFactor ; //factor relating light yield and APD response
111 //Parameters used in electronic noise calculation and thresholds for EMC (AliPHOSDigitizer)
112 Float_t fAPDNoise; //RMS of APD noise
113 Float_t fEMCDigitThreshold ; //minimal energy to keep digit
114 Float_t fEMCADCchannel ; //width of ADC channel in GeV
115 Float_t fTOFa ; //constant term of TOF resolution
116 Float_t fTOFb ; //stohastic term of TOF resolution
117 Float_t fCellNonLineaityA ; //Amp of cel non-linearity
118 Float_t fCellNonLineaityB ; //Energy scale of cel non-linearity
119 Float_t fCellNonLineaityC ; //Overall calibration
121 //Parameters used for RAW embedding
122 Bool_t fEMCSubtractPedestals; // true if pedestal should be subtracted (in non-ZS)
123 Int_t fGlobalAltroOffset ; // Offset used in ALTRO chips in SZ runs
124 Int_t fGlobalAltroThreshold ; // Threshold used in ALTRO chips in SZ runs
125 Float_t fEMCSampleQualityCut; // Cut on pulse shape fit quality
128 Float_t fADCpedestalCpv ; //Pedestal value
129 Float_t fADCchanelCpv ; //ADC channel width
130 Float_t fCPVNoise ; //RMS of CPV noise
131 Float_t fCPVDigitThreshold ; //Minimal energy to keep digit
132 Int_t fNADCcpv ; //Max number of channels in CPV ADC
134 Bool_t fDStream[10] ; //Mark mixing stream contains digits or SDigits
135 Bool_t fDigitizeE ; //Use energy digitization in simulation or left to Digits2Raw()
136 Bool_t fCellNonLineaityOn ; //Model scintillator non-linearity in AliPHOSDigitizer
138 static AliPHOSSimParam * fgSimParam ; // pointer to the unique instance of the class
140 ClassDef(AliPHOSSimParam,3)