]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/testITSU/MakeITSUSimuParam.C
1) Params for each sensor type gets can be configured individually
[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
29ad4146 8const char* inpPSFName = "$ALICE_ROOT/ITS/UPGRADE/testITSU/ITSU_pixel_response_PSFs.root";
9
10void 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//__________________________________________________
49AliITSUSimuParam* 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//________________________________________________________________________________________
189AliITSUSimuParam* 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
286AliITSUSimuParam* 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//_______________________________________________________________
385void 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}