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