]>
Commit | Line | Data |
---|---|---|
29ad4146 | 1 | //RS: before running MakeITSUSimuParam call ".x LoadLibs.C" |
2 | ||
3 | AliITSUSimuParam* MakeITSUSimuParam_M32P26Func(); | |
4 | AliITSUSimuParam* MakeITSUSimuParam_M32P26Map(); | |
5 | AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map(); | |
6 | void SetPSFParams(TString pixType, AliITSUParamList* parData); | |
c92b1537 | 7 | |
29ad4146 | 8 | const char* inpPSFName = "$ALICE_ROOT/ITS/UPGRADE/testITSU/ITSU_pixel_response_PSFs.root"; |
9 | ||
10 | void MakeITSUSimuParam(const char* cdbURI="local://") { | |
11 | //======================================================================== | |
c92b1537 | 12 | // |
29ad4146 | 13 | // Steering macro for ITS simulation parameters |
14 | // | |
15 | // Author: L.Molnar | |
16 | // Contact: levente.molnar@cern.ch | |
17 | // | |
18 | //======================================================================== | |
19 | AliITSUSimuParam *param = 0; | |
20 | // | |
21 | // Select only one parameterziation... and don't forget to set 18 um thickness in Config.C !!! | |
22 | ||
23 | //____ MIMOSA32 P26 Response parameterzied by fit functions | |
24 | //param = MakeITSUSimuParam_M32P26Func(); | |
25 | ||
26 | //____ MIMOSA32 P26 Response parameterzied by map | |
27 | //param = MakeITSUSimuParam_M32P26Map(); | |
28 | ||
29 | //____ MIMOSA32ter P31 Response parameterzied by map //suggested!!! | |
30 | param = MakeITSUSimuParam_M32terP31Map(); | |
31 | param->Print(); | |
c92b1537 | 32 | // |
29ad4146 | 33 | // ---------------------------------------------------------- |
34 | // save in CDB storage | |
c92b1537 | 35 | AliCDBManager* cdb = AliCDBManager::Instance(); |
36 | cdb->SetDefaultStorage(cdbURI); | |
29ad4146 | 37 | // |
38 | AliCDBMetaData *md= new AliCDBMetaData(); | |
39 | md->SetResponsible("ITS Upgrade Project"); | |
40 | md->SetComment("Simulation parameters for ITS Upgrade."); | |
41 | md->SetAliRootVersion(gSystem->Getenv("ARVERSION")); | |
42 | md->SetBeamPeriod(0); | |
43 | AliCDBId id("ITS/Calib/SimuParam",0,AliCDBRunRange::Infinity()); | |
44 | cdb->GetDefaultStorage()->Put(param,id, md); | |
45 | // | |
46 | } | |
c92b1537 | 47 | |
29ad4146 | 48 | //__________________________________________________ |
49 | AliITSUSimuParam* MakeITSUSimuParam_M32P26Func() | |
50 | { | |
51 | //const char* macroname = "MakeITSUSimuParam.C"; | |
52 | // | |
c92b1537 | 53 | AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam(); |
54 | // | |
55 | // Add spread function parameterization data | |
29ad4146 | 56 | AliITSUParamList* parData = 0; |
57 | // | |
c92b1537 | 58 | //------------------------ parameterization data for segmentation 0 ---------------------- |
29ad4146 | 59 | parData = new AliITSUParamList(AliITSUSimulationPix::kNG2Par); // 4 common + 9 params for double gaussian |
c92b1537 | 60 | parData->SetUniqueID(0); // this is a function for detId=0 |
29ad4146 | 61 | // |
62 | // and uses double gaussian for charge spread parameterization | |
c92b1537 | 63 | parData->SetNameTitle("Monopix_seg0","double gaussian for segmentation 0"); |
29ad4146 | 64 | parData->SetParameter(AliITSUSimulationPix::kChargeSpreadType,AliITSUSimulationPix::kSpreadFunDoubleGauss2D,"ChargeSpread"); |
c92b1537 | 65 | // |
66 | // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around | |
67 | // injected one to consider | |
29ad4146 | 68 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX"); |
69 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); | |
70 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps"); | |
71 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,1.0,"globQscale"); | |
72 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); | |
73 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,-1,"pixNoiseIsOnInAllMod"); | |
74 | ||
75 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,5,"pixSNDisrcCut"); | |
76 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); | |
77 | // Noise | |
78 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,-1,"pixNoiseIsOn"); | |
79 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV"); | |
80 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma"); | |
81 | // and readout timing scheme | |
82 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); | |
0ebc85cf | 83 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); |
69e0f089 | 84 | // |
c92b1537 | 85 | // now set the parameters according selected function |
29ad4146 | 86 | parData->SetParameter(AliITSUSimulationPix::kG2MeanX0 , -5.63484e-01 * 1e-4, "G1 Mean_x"); |
87 | parData->SetParameter(AliITSUSimulationPix::kG2SigX0 , 2.49464e+01 * 1e-4, "G1 Sigma_x"); | |
88 | parData->SetParameter(AliITSUSimulationPix::kG2MeanZ0 , -2.76353e+00 * 1e-4, "G1 Mean_z"); | |
89 | parData->SetParameter(AliITSUSimulationPix::kG2SigZ0 , 2.59449e+01 * 1e-4, "G1 Sigma_z"); | |
90 | parData->SetParameter(AliITSUSimulationPix::kG2MeanX1 , 5.43664e-01 * 1e-4, "G2 Mean_x"); | |
91 | parData->SetParameter(AliITSUSimulationPix::kG2SigX1 , 7.97169e+00 * 1e-4, "G2 Sigma_x"); | |
92 | parData->SetParameter(AliITSUSimulationPix::kG2MeanZ1 , 1.76857e+00 * 1e-4, "G2 Mean_z"); | |
93 | parData->SetParameter(AliITSUSimulationPix::kG2SigZ1 , 1.01543e+01 * 1e-4, "G2 Sigma_z"); | |
69e0f089 | 94 | // scaling of 2nd gaussian amplitude wrt 1st one |
95 | parData->SetParameter(AliITSUSimulationPix::kG2ScaleG2 , 3.904037/59.468672, "G2 A2/A1"); | |
c92b1537 | 96 | // |
97 | itsSimuParam->AddRespFunParam(parData); | |
98 | // | |
99 | // | |
100 | //------------------------ parameterization data for segmentation 1 ---------------------- | |
29ad4146 | 101 | parData = new AliITSUParamList(AliITSUSimulationPix::kNG2Par); // 4 common + 9 params for double gaussian |
c92b1537 | 102 | parData->SetUniqueID(1); // this is a function for detId=1 |
29ad4146 | 103 | |
104 | // and uses double gaussian for charge spread parameterization | |
c92b1537 | 105 | parData->SetNameTitle("Monopix_seg1","double gaussian for segmentation 1"); |
29ad4146 | 106 | parData->SetParameter(AliITSUSimulationPix::kChargeSpreadType,AliITSUSimulationPix::kSpreadFunDoubleGauss2D,"ChargeSpread"); |
c92b1537 | 107 | // |
108 | // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around | |
109 | // injected one to consider | |
29ad4146 | 110 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX"); |
111 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); | |
112 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps"); | |
113 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,1.0,"globQscale"); | |
114 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); | |
115 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,5,"pixSNDisrcCut"); | |
116 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); | |
117 | // Noise | |
118 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,-1,"pixNoiseIsOn"); | |
119 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,-1,"pixNoiseIsOnInAllMod"); | |
120 | ||
121 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV"); | |
122 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma"); | |
123 | // and readout timing scheme | |
124 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); | |
0ebc85cf | 125 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); |
29ad4146 | 126 | // |
c92b1537 | 127 | // now set the parameters according selected function |
29ad4146 | 128 | parData->SetParameter(AliITSUSimulationPix::kG2MeanX0 , -5.63484e-01 * 1e-4, "G1 Mean_x"); |
129 | parData->SetParameter(AliITSUSimulationPix::kG2SigX0 , 2.49464e+01 * 1e-4, "G1 Sigma_x"); | |
130 | parData->SetParameter(AliITSUSimulationPix::kG2MeanZ0 , -2.76353e+00 * 1e-4, "G1 Mean_z"); | |
131 | parData->SetParameter(AliITSUSimulationPix::kG2SigZ0 , 2.59449e+01 * 1e-4, "G1 Sigma_z"); | |
132 | parData->SetParameter(AliITSUSimulationPix::kG2MeanX1 , 5.43664e-01 * 1e-4, "G2 Mean_x"); | |
133 | parData->SetParameter(AliITSUSimulationPix::kG2SigX1 , 7.97169e+00 * 1e-4, "G2 Sigma_x"); | |
134 | parData->SetParameter(AliITSUSimulationPix::kG2MeanZ1 , 1.76857e+00 * 1e-4, "G2 Mean_z"); | |
135 | parData->SetParameter(AliITSUSimulationPix::kG2SigZ1 , 1.01543e+01 * 1e-4, "G2 Sigma_z"); | |
69e0f089 | 136 | // scaling of 2nd gaussian amplitude wrt 1st one |
137 | parData->SetParameter(AliITSUSimulationPix::kG2ScaleG2 , 3.904037/59.468672, "G2 A2/A1"); | |
c92b1537 | 138 | // |
139 | itsSimuParam->AddRespFunParam(parData); | |
140 | // | |
141 | // | |
142 | //------------------------ parameterization data for segmentation 2 ---------------------- | |
29ad4146 | 143 | parData = new AliITSUParamList(AliITSUSimulationPix::kNG2Par); // 4 common + 9 params for double gaussian |
c92b1537 | 144 | parData->SetUniqueID(2); // this is a function for detId=2 |
29ad4146 | 145 | // |
146 | parData->SetNameTitle("Monopix_seg2","double gaussian for segmentation 2"); | |
147 | // and uses double gaussian for charge spread parameterization | |
148 | parData->SetParameter(AliITSUSimulationPix::kChargeSpreadType,AliITSUSimulationPix::kSpreadFunDoubleGauss2D,"ChargeSpread"); | |
c92b1537 | 149 | // |
150 | // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around | |
151 | // injected one to consider | |
29ad4146 | 152 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX"); |
153 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); | |
154 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps"); | |
155 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,1.0,"globQscale"); | |
156 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); | |
157 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,5,"pixSNDisrcCut"); | |
158 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); | |
159 | // Noise | |
160 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,-1,"pixNoiseIsOn"); | |
161 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,-1,"pixNoiseIsOnInAllMod"); | |
162 | ||
163 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV"); | |
164 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma"); | |
165 | // and readout timing scheme | |
166 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); | |
167 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); | |
168 | // | |
169 | // now set the parameters according selected function | |
170 | parData->SetParameter(AliITSUSimulationPix::kG2MeanX0 , -5.63484e-01 * 1e-4, "G1 Mean_x"); | |
171 | parData->SetParameter(AliITSUSimulationPix::kG2SigX0 , 2.49464e+01 * 1e-4, "G1 Sigma_x"); | |
172 | parData->SetParameter(AliITSUSimulationPix::kG2MeanZ0 , -2.76353e+00 * 1e-4, "G1 Mean_z"); | |
173 | parData->SetParameter(AliITSUSimulationPix::kG2SigZ0 , 2.59449e+01 * 1e-4, "G1 Sigma_z"); | |
174 | parData->SetParameter(AliITSUSimulationPix::kG2MeanX1 , 5.43664e-01 * 1e-4, "G2 Mean_x"); | |
175 | parData->SetParameter(AliITSUSimulationPix::kG2SigX1 , 7.97169e+00 * 1e-4, "G2 Sigma_x"); | |
176 | parData->SetParameter(AliITSUSimulationPix::kG2MeanZ1 , 1.76857e+00 * 1e-4, "G2 Mean_z"); | |
177 | parData->SetParameter(AliITSUSimulationPix::kG2SigZ1 , 1.01543e+01 * 1e-4, "G2 Sigma_z"); | |
178 | // scaling of 2nd gaussian amplitude wrt 1st one | |
179 | parData->SetParameter(AliITSUSimulationPix::kG2ScaleG2 , 3.904037/59.468672, "G2 A2/A1"); | |
180 | // | |
181 | itsSimuParam->AddRespFunParam(parData); | |
182 | // | |
183 | // | |
184 | return itsSimuParam; | |
185 | ||
186 | } | |
187 | ||
188 | //________________________________________________________________________________________ | |
189 | AliITSUSimuParam* MakeITSUSimuParam_M32P26Map() | |
190 | { | |
191 | //const char* macroname = "MakeITSUSimuParam.C"; | |
192 | // | |
193 | AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam(); | |
194 | // | |
195 | // Add spread function parameterization data | |
196 | AliITSUParamList* parData = 0; | |
197 | // | |
198 | //------------------------ parameterization data for segmentation 0 ---------------------- | |
199 | parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams); // no custom params are needed | |
200 | parData->SetUniqueID(0); // this is a function for detId=0 | |
201 | parData->SetNameTitle("Monopix_seg1","PSF map for M32P26"); | |
202 | SetPSFParams("hProfPSD_M32P26",parData); | |
203 | // | |
204 | // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around | |
205 | // injected one to consider | |
206 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX"); | |
207 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); | |
208 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps"); | |
209 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,1.0,"globQscale"); | |
210 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); | |
211 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,5,"pixSNDisrcCut"); | |
212 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); | |
213 | // Noise | |
214 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,-1,"pixNoiseIsOn"); | |
215 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,-1,"pixNoiseIsOnInAllMod"); | |
216 | ||
217 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV"); | |
218 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma"); | |
219 | // and readout timing scheme | |
220 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); | |
221 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); | |
222 | // | |
223 | itsSimuParam->AddRespFunParam(parData); | |
224 | // | |
225 | // | |
226 | //------------------------ parameterization data for segmentation 1 ---------------------- | |
227 | parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams); // no custom params are needed | |
228 | parData->SetUniqueID(1); // this is a function for detId=1 | |
229 | parData->SetNameTitle("Monopix_seg1","PSF map for M32P26"); | |
230 | SetPSFParams("hProfPSD_M32P26",parData); | |
231 | // | |
232 | // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around | |
233 | // injected one to consider | |
234 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX"); | |
235 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); | |
236 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps"); | |
237 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,1.0,"globQscale"); | |
238 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); | |
239 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,5,"pixSNDisrcCut"); | |
240 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); | |
241 | // Noise | |
242 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,-1,"pixNoiseIsOn"); | |
243 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,-1,"pixNoiseIsOnInAllMod"); | |
244 | ||
245 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV"); | |
246 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma"); | |
247 | // and readout timing scheme | |
248 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); | |
249 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); | |
250 | // | |
251 | itsSimuParam->AddRespFunParam(parData); | |
252 | // | |
253 | // | |
254 | //------------------------ parameterization data for segmentation 2 ---------------------- | |
255 | parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams); // no custom params are needed | |
256 | parData->SetUniqueID(2); // this is a function for detId=2 | |
257 | parData->SetNameTitle("Monopix_seg2","PSF map for M32P26"); | |
258 | SetPSFParams("hProfPSD_M32P26",parData); | |
259 | // | |
260 | // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around | |
261 | // injected one to consider | |
262 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX"); | |
263 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); | |
264 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps"); | |
265 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,1.0,"globQscale"); | |
266 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); | |
267 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,5,"pixSNDisrcCut"); | |
268 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); | |
269 | // Noise | |
270 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,-1,"pixNoiseIsOn"); | |
271 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,-1,"pixNoiseIsOnInAllMod"); | |
272 | ||
273 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV"); | |
274 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma"); | |
0ebc85cf | 275 | // and readout timing scheme |
29ad4146 | 276 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); |
0ebc85cf | 277 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); |
29ad4146 | 278 | // |
279 | itsSimuParam->AddRespFunParam(parData); | |
280 | // | |
281 | return itsSimuParam; | |
282 | } | |
283 | ||
284 | //________________________________________________________________________________________// | |
285 | ||
286 | AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map() | |
287 | { | |
288 | //const char* macroname = "MakeITSUSimuParam.C"; | |
289 | // | |
290 | AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam(); | |
291 | // | |
292 | // Add spread function parameterization data | |
293 | AliITSUParamList* parData = 0; | |
c92b1537 | 294 | // |
29ad4146 | 295 | //------------------------ parameterization data for segmentation 0 ---------------------- |
296 | parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams); // no custom params are needed | |
297 | parData->SetUniqueID(0); // this is a function for detId=0 | |
298 | parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31"); | |
299 | SetPSFParams("hProfPSD_M32terP31",parData); | |
300 | // | |
301 | // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around | |
302 | // injected one to consider | |
303 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX"); | |
304 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); | |
305 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps"); | |
306 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,1.0,"globQscale"); | |
307 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); | |
308 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,-1,"pixNoiseIsOnInAllMod"); | |
309 | ||
310 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,5,"pixSNDisrcCut"); | |
311 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); | |
312 | // Noise | |
313 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,-1,"pixNoiseIsOn"); | |
314 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,20.62,"pixNoiseMPV"); | |
315 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.55,"pixNoiseSigma"); | |
316 | // and readout timing scheme | |
317 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); | |
318 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); | |
c92b1537 | 319 | // |
320 | itsSimuParam->AddRespFunParam(parData); | |
321 | // | |
69e0f089 | 322 | // |
29ad4146 | 323 | // |
324 | //------------------------ parameterization data for segmentation 1 ---------------------- | |
325 | parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams); // no custom params are needed | |
326 | parData->SetUniqueID(1); // this is a function for detId=1 | |
327 | parData->SetNameTitle("Monopix_seg1","PSF map for M32terP31"); | |
328 | SetPSFParams("hProfPSD_M32terP31",parData); | |
329 | ||
330 | // | |
331 | // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around | |
332 | // injected one to consider | |
333 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX"); | |
334 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); | |
335 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps"); | |
336 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,1.0,"globQscale"); | |
337 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); | |
338 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,-1,"pixNoiseIsOnInAllMod"); | |
339 | ||
340 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,5,"pixSNDisrcCut"); | |
341 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); | |
342 | // Noise | |
343 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,-1,"pixNoiseIsOn"); | |
344 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,20.62,"pixNoiseMPV"); | |
345 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.55,"pixNoiseSigma"); | |
346 | // and readout timing scheme | |
347 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); | |
348 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); | |
349 | // | |
350 | // now set the parameters according selected function | |
351 | itsSimuParam->AddRespFunParam(parData); | |
c92b1537 | 352 | // |
29ad4146 | 353 | // |
354 | // | |
355 | //------------------------ parameterization data for segmentation 2 ---------------------- | |
356 | parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams); // no custom params are needed | |
357 | parData->SetUniqueID(2); // this is a function for detId=2 | |
358 | parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31"); | |
359 | SetPSFParams("hProfPSD_M32terP31", parData ); | |
360 | // | |
361 | // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around | |
362 | // injected one to consider | |
363 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX"); | |
364 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); | |
365 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps"); | |
366 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,1.0,"globQscale"); //980./1080. | |
367 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); | |
368 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,5,"pixSNDisrcCut"); | |
369 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); | |
370 | // Noise | |
371 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,-1,"pixNoiseIsOn"); | |
372 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,-1,"pixNoiseIsOnInAllMod"); | |
373 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,20.62,"pixNoiseMPV"); | |
374 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.55,"pixNoiseSigma"); | |
375 | // and readout timing scheme | |
376 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); | |
377 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); // cycle lenght is 10-30 us --> 10-30e-6 s | |
378 | // | |
379 | itsSimuParam->AddRespFunParam(parData); | |
380 | // | |
381 | return itsSimuParam; | |
c92b1537 | 382 | } |
383 | ||
29ad4146 | 384 | //_______________________________________________________________ |
385 | void SetPSFParams(TString pixType, AliITSUParamList* parData ) | |
386 | { | |
387 | // | |
388 | // Reads the PSF map and sets the parameters | |
389 | // | |
390 | printf("Loading charge spread histo %s from file %s\n",pixType.Data(),inpPSFName); | |
391 | TFile* fin = new TFile(inpPSFName); | |
392 | if (!fin) { | |
393 | printf("NO parameters are set! Input file %s doesn't exist\n",inpPSFName); | |
394 | exit(1); | |
395 | } | |
396 | // | |
397 | TH2* hProfWrk = 0; | |
398 | hProfWrk = dynamic_cast<TH2*> fin->Get(pixType.Data()); | |
399 | if(!hProfWrk) { | |
400 | printf("PSF map %s doesn't exist!!!\n",pixType.Data()); | |
401 | exit(1); | |
402 | } | |
403 | hProfWrk = (TH2*) hProfWrk->Clone(); | |
404 | hProfWrk->SetDirectory(0); | |
405 | fin->Close(); | |
406 | // | |
407 | parData->AddParamObject(hProfWrk); | |
408 | parData->SetParameter(AliITSUSimulationPix::kChargeSpreadType,AliITSUSimulationPix::kSpreadFunHisto,pixType.Data()); | |
409 | } |