f898e0f3 |
1 | /************************************************************************** |
2 | * Copyright(c) 2007, ALICE Experiment at CERN, All rights reserved. * |
3 | * * |
4 | * Author: The ALICE Off-line Project. * |
5 | * Contributors are mentioned in the code where appropriate. * |
6 | * * |
7 | * Permission to use, copy, modify and distribute this software and its * |
8 | * documentation strictly for non-commercial purposes is hereby granted * |
9 | * without fee, provided that the above copyright notice appears in all * |
10 | * copies and that both the copyright notice and this permission notice * |
11 | * appear in the supporting documentation. The authors make no claims * |
12 | * about the suitability of this software for any purpose. It is * |
13 | * provided "as is" without express or implied warranty. * |
14 | **************************************************************************/ |
15 | |
16 | // Base class for the PHOS simulation parameters. |
17 | // Do not use in the simulation; use derivative classes instead. |
18 | // Author: Dmitri Peressounko, RRC KI |
19 | |
20 | // --- AliRoot header files --- |
21 | #include "AliPHOSSimParam.h" |
22 | #include "AliLog.h" |
23 | |
24 | ClassImp(AliPHOSSimParam) |
25 | |
26 | AliPHOSSimParam * AliPHOSSimParam::fgSimParam = 0 ; |
27 | //----------------------------------------------------------------------------- |
28 | AliPHOSSimParam::AliPHOSSimParam() : |
29 | TNamed(), |
30 | fLightYieldMean(0.),fIntrinsicAPDEfficiency(0.), |
31 | fLightFactor(0.),fAPDFactor(0.), |
32 | fAPDNoise(0.),fEMCDigitThreshold(0.), |
33 | fEMCADCchannel(0.),fTOFa(0.),fTOFb(0.), |
9d68672f |
34 | fCellNonLineaityA(0.),fCellNonLineaityB(1.),fCellNonLineaityC(1.), |
c46b6a59 |
35 | fEMCSubtractPedestals(kFALSE), |
36 | fGlobalAltroOffset(0),fGlobalAltroThreshold(0),fEMCSampleQualityCut(0), |
f898e0f3 |
37 | fADCpedestalCpv(0.),fADCchanelCpv(0.), |
38 | fCPVNoise(0.),fCPVDigitThreshold(0.),fNADCcpv(0), |
9d68672f |
39 | fDigitizeE(0),fCellNonLineaityOn(1) |
f898e0f3 |
40 | { |
41 | //Default constructor. |
42 | for(Int_t i=0; i<10; i++) fDStream[i] = 0 ; |
43 | } |
44 | |
45 | //----------------------------------------------------------------------------- |
46 | AliPHOSSimParam::AliPHOSSimParam(Int_t) : |
47 | TNamed(), |
48 | fLightYieldMean(0.),fIntrinsicAPDEfficiency(0.), |
49 | fLightFactor(0.),fAPDFactor(0.), |
50 | fAPDNoise(0.),fEMCDigitThreshold(0.), |
51 | fEMCADCchannel(0.),fTOFa(0.),fTOFb(0.), |
9d68672f |
52 | fCellNonLineaityA(0.),fCellNonLineaityB(1.),fCellNonLineaityC(1.), |
c46b6a59 |
53 | fEMCSubtractPedestals(kFALSE), |
54 | fGlobalAltroOffset(0),fGlobalAltroThreshold(0),fEMCSampleQualityCut(0), |
f898e0f3 |
55 | fADCpedestalCpv(0.),fADCchanelCpv(0.), |
5024fc61 |
56 | fCPVNoise(0.),fCPVDigitThreshold(0.), |
57 | fNADCcpv(0), |
9d68672f |
58 | fDigitizeE(0),fCellNonLineaityOn(1) |
f898e0f3 |
59 | { |
60 | //Real (private) constructor |
61 | //Set default parameters |
62 | |
63 | //Parameters describing energy deposition and light collection by APD, used in AliPHOSv1 |
64 | //Photoelectron statistics: |
65 | // The light yield is a poissonian distribution of the number of |
66 | // photons created in the PbWo4 crystal, calculated using following formula |
67 | // NumberOfPhotons = EnergyLost * LightYieldMean* APDEfficiency |
68 | // LightYieldMean is parameter calculated to be over 47000 photons per GeV |
69 | // APDEfficiency is 0.02655 |
70 | // k_0 is 0.0045 from Valery Antonenko |
71 | // The number of electrons created in the APD is |
72 | // NumberOfElectrons = APDGain * LightYield |
73 | // The APD Gain is 300 |
74 | fLightYieldMean = 47000; //Average number of photoelectrons per GeV |
75 | fIntrinsicAPDEfficiency = 0.02655 ; //APD efficiency including geometric coverage |
76 | // fLightYieldAttenuation = 0.0045 ; //light attenuation in PWO. Last analysis shows no z-position dependence |
77 | // //so we removed this dependence from simulations |
78 | fLightFactor = fLightYieldMean * fIntrinsicAPDEfficiency ; //Average number of photons collected by |
79 | //APD per GeV deposited energy |
80 | fAPDFactor = (13.418/fLightYieldMean/100.) * 300. ; //factor relating light yield and APD response |
81 | //evaluated as (13.418/fLightYieldMean/100) * APDGain ; |
82 | |
83 | |
84 | //Parameters defining electronic noise calculation and Digits noise thresholds |
85 | //used in AliPHOSDigitizer |
86 | fAPDNoise = 0.004 ; // [GeV] |
5024fc61 |
87 | fEMCDigitThreshold = 2.5 ; // [ADC counts] |
f898e0f3 |
88 | fEMCADCchannel = 0.005 ; // [GeV] |
89 | fTOFa = 0.5e-9 ; // [sec] constant term |
90 | fTOFb = 1.e-9 ; // [sec/sqrt(GeV)]] stohastic term |
acfd3a6f |
91 | // fCellNonLineaityA = 0.18 ; //Amp of non-linearity of cell responce |
92 | // fCellNonLineaityB = 0.109; //Scale of non-linearity of cell responce |
93 | // fCellNonLineaityC = 0.976; //Overall calibration |
94 | fCellNonLineaityA = 0. ; //Amp of non-linearity of cell responce |
dde7e19f |
95 | fCellNonLineaityB = 0.109; //Scale of non-linearity of cell responce |
acfd3a6f |
96 | fCellNonLineaityC = 1.; //Overall calibration |
f898e0f3 |
97 | |
98 | fADCpedestalCpv = 0.012 ; // [aux units] |
99 | fADCchanelCpv = 0.0012; // [aux units] |
100 | fCPVNoise = 0.01; // [aux units] |
101 | fCPVDigitThreshold = 0.09 ; // [aux units] |
102 | fNADCcpv = (Int_t)TMath::Power(2,12) ; |
103 | |
c46b6a59 |
104 | fGlobalAltroOffset = 10; |
105 | fGlobalAltroThreshold = 5; |
106 | fEMCSampleQualityCut = 4.; |
107 | |
f898e0f3 |
108 | //Imput streams for merging. If true => this stream contains digits (and thus noise) and not SDigits. |
109 | for(Int_t i=0; i<10; i++){ |
110 | fDStream[i] = 0 ; |
111 | } |
112 | fgSimParam = this ; |
113 | } |
114 | |
115 | //----------------------------------------------------------------------------- |
116 | AliPHOSSimParam::AliPHOSSimParam(const AliPHOSSimParam& ): |
117 | TNamed(), |
118 | fLightYieldMean(0.),fIntrinsicAPDEfficiency(0.), |
119 | fLightFactor(0.),fAPDFactor(0.), |
120 | fAPDNoise(0.),fEMCDigitThreshold(0.), |
121 | fEMCADCchannel(0.),fTOFa(0.),fTOFb(0.), |
9d68672f |
122 | fCellNonLineaityA(0.),fCellNonLineaityB(1.),fCellNonLineaityC(1.), |
c46b6a59 |
123 | fEMCSubtractPedestals(kFALSE), |
124 | fGlobalAltroOffset(0),fGlobalAltroThreshold(0),fEMCSampleQualityCut(1.), |
f898e0f3 |
125 | fADCpedestalCpv(0.),fADCchanelCpv(0.), |
126 | fCPVNoise(0.),fCPVDigitThreshold(0.),fNADCcpv(0), |
9d68672f |
127 | fDigitizeE(0),fCellNonLineaityOn(1) |
f898e0f3 |
128 | { |
129 | //Copy constructor. |
130 | AliError("Should not use copy constructor for singleton") ; |
131 | for(Int_t i=0; i<10; i++){ |
132 | fDStream[i] = 0 ; |
133 | } |
134 | fgSimParam = this ; |
135 | } |
136 | //----------------------------------------------------------------------------- |
137 | AliPHOSSimParam * AliPHOSSimParam::GetInstance(){ |
138 | |
139 | if(!fgSimParam) |
140 | new AliPHOSSimParam(0) ; |
141 | return fgSimParam ; |
142 | } |
143 | //----------------------------------------------------------------------------- |
144 | AliPHOSSimParam& AliPHOSSimParam::operator = (const AliPHOSSimParam& simParam) |
145 | { |
146 | //Assignment operator. |
147 | |
148 | if(this != &simParam) { |
149 | AliError("Should not use operator= for singleton\n") ; |
150 | } |
151 | |
152 | return *this; |
153 | } |
154 | |