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