]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/UPGRADE/testITSU/MakeITSUSimuParam.C
Fixed alternative version, allows to access low pt's in the TPC
[u/mrichter/AliRoot.git] / ITS / UPGRADE / testITSU / MakeITSUSimuParam.C
1 //RS: before running MakeITSUSimuParam call ".x LoadLibs.C"
2
3 // Reference sensor parameterizations
4 AliITSUSimuParam*  MakeITSUSimuParam_M32P26Map(Double_t sncut);// don't forget to turn off diode shift for P26 in Config.C
5 AliITSUSimuParam*  MakeITSUSimuParam_M32terP31Map( Double_t sncut);
6 // Irradiated sensor parameterizations P31
7 AliITSUSimuParam*  MakeITSUSimuParam_M32terP31Map1MRad( Double_t sncut);
8 AliITSUSimuParam*  MakeITSUSimuParam_M32terP31Map300kRad3e12( Double_t sncut);
9 AliITSUSimuParam*  MakeITSUSimuParam_M32terP31Map1MRad1e13( Double_t sncut);
10 // Irradiated sensor parameterizations P26
11 AliITSUSimuParam*  MakeITSUSimuParam_M32P26Map300kRad3e12( Double_t sncut);
12 AliITSUSimuParam*  MakeITSUSimuParam_M32P26Map1MRad1e13( Double_t sncut);
13 AliITSUSimuParam*  MakeITSUSimuParam_M32P26Map300kRad3e12_20deg( Double_t sncut);
14 AliITSUSimuParam*  MakeITSUSimuParam_M32P26Map1MRad1e13_20deg( Double_t sncut);
15 void SetPSFParams(TString pixType, AliITSUParamList* parData);
16
17 // To turn noise generation ON set these values to 1
18 const int kAddNoise = -1;
19 const int kAddNoiseInAllMod = -1;
20
21 const char* inpPSFName = "$ALICE_ROOT/ITS/UPGRADE/misc/ITSU_pixel_response_PSFs.root";
22 const int kNLayers = 7;
23
24
25 const int kSNcut = 5;   // Threshold/Noise cut. CAN BE CHANGED IN THE RANGE [5,10] no other values are allowed.
26 const int knSNcut = 6 ; // Number of tuned SNcut fixed to 6.
27
28 /*
29   these are readout phases settings: 
30   the rule is: 
31   1) abs(kROShifts)<1: the modules of the layer are synchronized, the layer 
32      phase is set to kROShifts*ROCycleLength of the modules of this layer
33   2) abs(kROShifts)>1: each module within the layer will have random phase within its ROCycleLength
34 */
35 const float kROShifts[kNLayers] = {0.5,0.5,0.5, -0.5,-0.5, 0.5,0.5};
36
37 void MakeITSUSimuParam(Int_t simuType = 0, const char* cdbURI="local://") {
38   //========================================================================
39   //
40   // Steering macro for ITS simulation parameters
41   //
42   // Author: L.Molnar
43   // Contact: levente.molnar@cern.ch
44   //
45   //
46   //****** DO NOT FORGET TO SET THE RIGHT GEOMETRY IN THE Config.C *****
47   //
48   //****** P26 chips Config.C parameters *****
49   // col pitch 20 um
50   // row pitch 20 um
51   // sensor thickness 18 um
52   // SET diode staggering to:   kDiodShiftM32terP31X[][] = {0.0, 0.0};
53   // SET diode staggering to:   kDiodShiftM32terP31Z[][] = {0.0, 0.0};
54   //
55   //
56   //****** P31 chips Config.C parameters  *****
57   // col pitch 20 um
58   // row pitch 33 um
59   // sensor thickness 18 um
60   // SET diode staggering to:   kDiodShiftM32terP31X[][] = {0.30,-0.19};
61   // SET diode staggering to:   kDiodShiftM32terP31Z[][] = {0.0, 0.0};
62   //
63   //
64   //========================================================================
65   AliITSUSimuParam *param = 0;
66   //
67   // Select only one parameterziation... and don't forget to set 18 um thickness in Config.C !!!
68   
69     switch(simuType) {
70             
71         case 0:
72                 //____ MIMOSA32 P26 Response parameterzied by map ---> selected for TDR
73                 param = MakeITSUSimuParam_M32P26Map(kSNcut);
74         break;
75         //
76         case 1:
77                 //____ MIMOSA32ter P31 Response parameterzied by map
78                 param = MakeITSUSimuParam_M32terP31Map(kSNcut);
79         break;
80         //
81         case 2:
82                 //____ MIMOSA32ter P31 Response parameterzied by map 1MRad irradiation
83                 param = MakeITSUSimuParam_M32terP31Map1MRad(kSNcut);
84         break;
85         //
86         case 3:
87                 //____ MIMOSA32ter P31 Response parameterzied by map , 300kRad + 3e12 neq/cm2 irradiation
88                 param = MakeITSUSimuParam_M32terP31Map300kRad3e12(kSNcut);
89         break;
90         //
91         case 4:
92                 //____ MIMOSA32ter P31 Response parameterzied by map , 1MRad+ 1e13 neq/cm2 irradiation
93                 param = MakeITSUSimuParam_M32terP31Map1MRad1e13(kSNcut);
94         break;
95         //
96         case 5:
97                 //___ MIMOSA32 P26 , 300kRad + 3e12 neq/cm2 irradiation 30 deg
98                 param = MakeITSUSimuParam_M32P26Map300kRad3e12(kSNcut);
99         break;
100         //
101         case 6:
102                 //____ MIMOSA32 P26 , 300kRad + 3e12 neq/cm2 irradiation 20 deg
103                 param = MakeITSUSimuParam_M32P26Map300kRad3e12_20deg(kSNcut);
104         break;
105         //
106         case 7:
107                 //___ MIMOSA32 P26 ,  1MRad+ 1e13 neq/cm2 irradiation 30 deg
108                 param = MakeITSUSimuParam_M32P26Map1MRad1e13(kSNcut);
109         break;
110         //
111         case 8:
112                 //___ MIMOSA32 P26 ,  1MRad+ 1e13 neq/cm2 irradiation 20 deg
113                 param = MakeITSUSimuParam_M32P26Map1MRad1e13_20deg(kSNcut);
114         break;
115         //
116         default:
117         break;
118     }
119   
120   
121   param->Print();
122   //
123   // ----------------------------------------------------------
124   // save in CDB storage
125   AliCDBManager* cdb = AliCDBManager::Instance();
126   cdb->SetDefaultStorage(cdbURI);
127   //
128   AliCDBMetaData *md= new AliCDBMetaData();
129   md->SetResponsible("ITS Upgrade Project");
130   md->SetComment("Simulation parameters for ITS Upgrade.");
131   md->SetAliRootVersion(gSystem->Getenv("ARVERSION"));
132   md->SetBeamPeriod(0);
133   AliCDBId id("ITS/Calib/SimuParam",0,AliCDBRunRange::Infinity());
134   cdb->GetDefaultStorage()->Put(param,id, md);
135   //  
136 }
137
138       
139 //________________________________________________________________________________________________________//
140 //   ||                                                                                                   //
141 //   || Paremeterization by charge spread map of the MIMOSA32 P26 chip, 30 C, no irradiation              //
142 //   ||                                                                                                   //
143 //  \||/                                                                                                  //
144 //___\/___________________________________________________________________________________________________//
145 AliITSUSimuParam* MakeITSUSimuParam_M32P26Map( Int_t sncut)
146 {
147   //const char* macroname = "MakeITSUSimuParam.C";
148   //
149   AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam();
150   //
151   itsSimuParam->SetNLayers(kNLayers);
152   for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr);
153   //
154   Double_t qscale[knSNcut]={1.036868,   1.055369,       1.083679,       1.098877,       1.126203,       1.145552};
155   if(sncut < 5 || sncut > 10 ) {printf("---> ERROR ERROR ERROR requested SNcut: %d is not valid... Check the macro header! \n",sncut); return;}
156   //
157   // Add spread function parameterization data
158   AliITSUParamList* parData = 0;
159   //
160   //------------------------ parameterization data for segmentation 0 ----------------------
161   parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
162   parData->SetUniqueID(0);                                              // this is a function for detId=0
163   parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
164   SetPSFParams("hProfPSD_M32P26",parData);
165   //
166   // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
167   // injected one to consider
168   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
169   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); 
170   parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
171   parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
172   parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");  
173   parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
174   parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
175   // Noise
176   parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
177   parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
178
179   parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV");
180   parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma");  
181  // and readout timing scheme
182   parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
183   parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
184   // 
185   itsSimuParam->AddRespFunParam(parData);
186   //
187   //
188    //------------------------ parameterization data for segmentation 1 ----------------------
189   parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
190   parData->SetUniqueID(1);                                              // this is a function for detId=1
191   parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
192   SetPSFParams("hProfPSD_M32P26",parData);
193   //
194   // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
195   // injected one to consider
196   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
197   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); 
198   parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
199   parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
200   parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");  
201   parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
202   parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
203   // Noise
204   parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
205   parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
206
207   parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV");
208   parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma");  
209  // and readout timing scheme
210   parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
211   parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
212   //
213   itsSimuParam->AddRespFunParam(parData);
214   //
215   //     
216   //------------------------ parameterization data for segmentation 2 ----------------------
217   parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
218   parData->SetUniqueID(2);                                              // this is a function for detId=2
219   parData->SetNameTitle("Monopix_seg2","PSF map for M32P26");
220   SetPSFParams("hProfPSD_M32P26",parData);
221   //
222   // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
223   // injected one to consider
224   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
225   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); 
226   parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
227   parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
228   parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); 
229   parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
230   parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
231   // Noise
232   parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
233   parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
234
235   parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV");
236   parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma");  
237   // and readout timing scheme
238   parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
239   parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
240   //
241   itsSimuParam->AddRespFunParam(parData);
242   //
243   return itsSimuParam;
244 }
245     
246 //________________________________________________________________________________________________________//
247 //   ||                                                                                                   //
248 //   || Paremeterization by charge spread map of the MIMOSA32ter P31 chip, 30 C, no irradiation           //
249 //   ||                                                                                                   //
250 //  \||/                                                                                                  //
251 //___\/___________________________________________________________________________________________________//
252
253 AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map( Double_t sncut) 
254 {  
255   //const char* macroname = "MakeITSUSimuParam.C";
256   //
257   AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam();
258   //
259   itsSimuParam->SetNLayers(kNLayers);
260   for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr);
261   //
262   //
263   Double_t qscale[knSNcut]={1.396168,   1.439231,       1.484984,       1.534129,       1.570807,       1.600674};
264   if(sncut < 5 || sncut > 10 ) {printf("---> ERROR ERROR ERROR requested SNcut: %d is not valid... Check the macro header! \n",sncut); return;}
265   //
266   // Add spread function parameterization data
267   AliITSUParamList* parData = 0;
268   // 
269   //------------------------ parameterization data for segmentation 0 ----------------------
270   parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
271   parData->SetUniqueID(0);                                              // this is a function for detId=0
272   parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31");
273   SetPSFParams("hProfPSD_M32terP31",parData);
274   //
275   // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
276   // injected one to consider
277   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
278   parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ"); 
279   parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
280   parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
281   parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");  
282   parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
283
284   parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
285   parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
286   // Noise
287   parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
288   parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,20.62,"pixNoiseMPV");
289   parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.55,"pixNoiseSigma");  
290   // and readout timing scheme
291   parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
292   parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
293   // 
294   itsSimuParam->AddRespFunParam(parData);
295   //
296   //
297   // 
298   //------------------------ parameterization data for segmentation 1 ----------------------
299   parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
300   parData->SetUniqueID(1);                                              // this is a function for detId=1
301   parData->SetNameTitle("Monopix_seg1","PSF map for M32terP31");
302   SetPSFParams("hProfPSD_M32terP31",parData);
303
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,qscale[sncut-5],"globQscale");
311   parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
312   parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
313
314   parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"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   // now set the parameters according selected function
325   itsSimuParam->AddRespFunParam(parData);
326   //
327   //
328   // 
329   //------------------------ parameterization data for segmentation 2 ----------------------
330   parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
331   parData->SetUniqueID(2);                                              // this is a function for detId=2
332   parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31");
333   SetPSFParams("hProfPSD_M32terP31", parData );
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,qscale[sncut-5],"globQscale"); //980./1080.
341   parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
342   parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
343   parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
344    // Noise
345   parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
346   parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
347   parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,20.62,"pixNoiseMPV");
348   parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.55,"pixNoiseSigma");  
349 // and readout timing scheme
350   parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
351   parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); // cycle lenght is 10-30 us --> 10-30e-6 s
352   //
353   itsSimuParam->AddRespFunParam(parData);
354   //
355   return itsSimuParam;
356 }
357
358 //________________________________________________________________________________________________________//
359 //   ||                                                                                                   //
360 //   || Paremeterization by charge spread map of the MIMOSA32ter P31 chip, 30 C, 1 MRad irradiation       //
361 //   ||                                                                                                   //
362 //  \||/                                                                                                  //
363 //___\/___________________________________________________________________________________________________//
364 AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map1MRad( Double_t sncut)
365 {
366     //const char* macroname = "MakeITSUSimuParam.C";
367     //
368     AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam();
369     //
370     itsSimuParam->SetNLayers(kNLayers);
371     for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr);
372     //
373     //
374     printf(" ---> WARNING WARNING WARNING --- Parameterization is not final, it is set to the reference sensor!"); return;
375     Double_t qscale[knSNcut]={1.396168, 1.439231,       1.484984,       1.534129,       1.570807,       1.600674};
376     if(sncut < 5 || sncut > 10 ) {printf("---> ERROR ERROR ERROR requested SNcut: %d is not valid... Check the macro header! \n",sncut); return;}
377     //
378     // Add spread function parameterization data
379     AliITSUParamList* parData = 0;
380     //
381     //------------------------ parameterization data for segmentation 0 ----------------------
382     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
383     parData->SetUniqueID(0);                                              // this is a function for detId=0
384     parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31");
385     SetPSFParams("hProfPSD_M32terP31_1MRad",parData);
386     //
387     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
388     // injected one to consider
389     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
390     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
391     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
392     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
393     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
394     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
395     
396     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
397     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
398     // Noise
399     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
400     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,21.843706,"pixNoiseMPV");
401     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.417494,"pixNoiseSigma");
402     // and readout timing scheme
403     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
404     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
405     //
406     itsSimuParam->AddRespFunParam(parData);
407     //
408     //
409     //
410     //------------------------ parameterization data for segmentation 1 ----------------------
411     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
412     parData->SetUniqueID(1);                                              // this is a function for detId=1
413     parData->SetNameTitle("Monopix_seg1","PSF map for M32terP31");
414     SetPSFParams("hProfPSD_M32terP31_1MRad",parData);
415     
416     //
417     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
418     // injected one to consider
419     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
420     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
421     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
422     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
423     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
424     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
425     
426     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
427     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
428     // Noise
429     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
430     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,21.843706,"pixNoiseMPV");
431     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.417494,"pixNoiseSigma");
432     // and readout timing scheme
433     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
434     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
435     //
436     // now set the parameters according selected function
437     itsSimuParam->AddRespFunParam(parData);
438     //
439     //
440     //
441     //------------------------ parameterization data for segmentation 2 ----------------------
442     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
443     parData->SetUniqueID(2);                                              // this is a function for detId=2
444     parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31");
445     SetPSFParams("hProfPSD_M32terP31_1MRad", parData );
446     //
447     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
448     // injected one to consider
449     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
450     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
451     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
452     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); //980./1080.
453     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
454     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
455     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
456     // Noise
457     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
458     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
459     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,21.843706,"pixNoiseMPV");
460     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.417494,"pixNoiseSigma");
461     // and readout timing scheme
462     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
463     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); // cycle lenght is 10-30 us --> 10-30e-6 s
464     //
465     itsSimuParam->AddRespFunParam(parData);
466     //
467     return itsSimuParam;
468 }
469 //________________________________________________________________________________________________________//
470 //   ||                                                                                                   //
471 //   || Paremeterization by charge spread map of the MIMOSA32ter P31 chip, 30 C,                          //
472 //   ||          irradiation 300 kRad + 3e12 neq /cm2                                                     //  \||/                                                                                                  //
473 //___\/___________________________________________________________________________________________________//
474
475
476 AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map300kRad3e12( Double_t sncut)
477 {
478     //const char* macroname = "MakeITSUSimuParam.C";
479     //
480     AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam();
481     //
482     itsSimuParam->SetNLayers(kNLayers);
483     for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr);
484     //
485     //
486     Double_t qscale[knSNcut]={1.532517, 1.617223,       1.641962,       1.714945,       1.73809,        1.749223};
487     if(sncut < 5 || sncut > 10 ) {printf("---> ERROR ERROR ERROR requested SNcut: %d is not valid... Check the macro header! \n",sncut); return;}
488     //
489     // Add spread function parameterization data
490     AliITSUParamList* parData = 0;
491     //
492     //------------------------ parameterization data for segmentation 0 ----------------------
493     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
494     parData->SetUniqueID(0);                                              // this is a function for detId=0
495     parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31");
496     SetPSFParams("hProfPSD_M32terP31_300kRad3e12neq",parData);
497     //
498     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
499     // injected one to consider
500     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
501     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
502     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
503     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
504     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
505     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
506     
507     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
508     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
509     // Noise
510     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
511     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,27.274548,"pixNoiseMPV");
512     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.723949,"pixNoiseSigma");
513     // and readout timing scheme
514     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
515     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
516     //
517     itsSimuParam->AddRespFunParam(parData);
518     //
519     //
520     //
521     //------------------------ parameterization data for segmentation 1 ----------------------
522     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
523     parData->SetUniqueID(1);                                              // this is a function for detId=1
524     parData->SetNameTitle("Monopix_seg1","PSF map for M32terP31");
525     SetPSFParams("hProfPSD_M32terP31_300kRad3e12neq",parData);
526     
527     //
528     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
529     // injected one to consider
530     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
531     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
532     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
533     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
534     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
535     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
536     
537     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
538     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
539     // Noise
540     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
541     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,27.274548,"pixNoiseMPV");
542     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.723949,"pixNoiseSigma");
543     // and readout timing scheme
544     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
545     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
546     //
547     // now set the parameters according selected function
548     itsSimuParam->AddRespFunParam(parData);
549     //
550     //
551     //
552     //------------------------ parameterization data for segmentation 2 ----------------------
553     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
554     parData->SetUniqueID(2);                                              // this is a function for detId=2
555     parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31");
556     SetPSFParams("hProfPSD_M32terP31_300kRad3e12neq", parData );
557     //
558     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
559     // injected one to consider
560     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
561     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
562     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
563     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); //980./1080.
564     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
565     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
566     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
567     // Noise
568     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
569     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
570     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,27.274548,"pixNoiseMPV");
571     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.723949,"pixNoiseSigma");
572     // and readout timing scheme
573     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
574     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); // cycle lenght is 10-30 us --> 10-30e-6 s
575     //
576     itsSimuParam->AddRespFunParam(parData);
577     //
578     return itsSimuParam;
579 }
580
581 //________________________________________________________________________________________________________//
582 //   ||                                                                                                   //
583 //   || Paremeterization by charge spread map of the MIMOSA32ter P31 chip, 30 C,                          //
584 //   ||          irradiation 1MRad + 1e13 neq /cm2                                                        //  \||/                                                                                                  //
585 //___\/___________________________________________________________________________________________________//
586
587
588 AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map1MRad1e13( Double_t sncut)
589 {
590     //const char* macroname = "MakeITSUSimuParam.C";
591     //
592     AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam();
593     //
594     itsSimuParam->SetNLayers(kNLayers);
595     for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr);
596     //
597     //
598     Double_t qscale[knSNcut]={1.530764, 1.542968,       1.602497,       1.621188,       1.68353 ,1.639263};
599     if(sncut < 5 || sncut > 10 ) {printf("---> ERROR ERROR ERROR requested SNcut: %d is not valid... Check the macro header! \n",sncut); return;}
600     //
601     // Add spread function parameterization data
602     AliITSUParamList* parData = 0;
603     //
604     //------------------------ parameterization data for segmentation 0 ----------------------
605     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
606     parData->SetUniqueID(0);                                              // this is a function for detId=0
607     parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31");
608     SetPSFParams("hProfPSD_M32terP31_1MRad1e13neq",parData);
609     //
610     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
611     // injected one to consider
612     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
613     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
614     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
615     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
616     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
617     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
618     
619     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
620     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
621     // Noise
622     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
623     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,43.840798,"pixNoiseMPV");
624     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.187048,"pixNoiseSigma");
625     // and readout timing scheme
626     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
627     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
628     //
629     itsSimuParam->AddRespFunParam(parData);
630     //
631     //
632     //
633     //------------------------ parameterization data for segmentation 1 ----------------------
634     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
635     parData->SetUniqueID(1);                                              // this is a function for detId=1
636     parData->SetNameTitle("Monopix_seg1","PSF map for M32terP31");
637     SetPSFParams("hProfPSD_M32terP31_1MRad1e13neq",parData);
638     
639     //
640     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
641     // injected one to consider
642     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
643     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
644     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
645     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
646     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
647     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
648     
649     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
650     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
651     // Noise
652     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
653     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,43.840798,"pixNoiseMPV");
654     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.187048,"pixNoiseSigma");
655     // and readout timing scheme
656     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
657     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
658     //
659     // now set the parameters according selected function
660     itsSimuParam->AddRespFunParam(parData);
661     //
662     //
663     //
664     //------------------------ parameterization data for segmentation 2 ----------------------
665     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
666     parData->SetUniqueID(2);                                              // this is a function for detId=2
667     parData->SetNameTitle("Monopix_seg2","PSF map for M32terP31");
668     SetPSFParams("hProfPSD_M32terP31_1MRad1e13neq", parData );
669     //
670     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
671     // injected one to consider
672     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
673     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
674     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
675     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); //980./1080.
676     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
677     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
678     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
679     // Noise
680     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
681     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
682     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,43.840798,"pixNoiseMPV");
683     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,3.187048,"pixNoiseSigma");
684     // and readout timing scheme
685     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
686     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); // cycle lenght is 10-30 us --> 10-30e-6 s
687     //
688     itsSimuParam->AddRespFunParam(parData);
689     //
690     return itsSimuParam;
691 }
692
693
694
695 //________________________________________________________________________________________________________//
696 //   ||                                                                                                   //
697 //   || Paremeterization by charge spread map of the MIMOSA32 P26 chip, 30 C,                             //
698 //   ||    300kRad + 3e12 new/cm2                                                                         //
699 //  \||/                                                                                                  //
700 //___\/___________________________________________________________________________________________________//
701
702 AliITSUSimuParam* MakeITSUSimuParam_M32P26Map300kRad3e12( Double_t sncut)
703 {
704     //const char* macroname = "MakeITSUSimuParam.C";
705     //
706     AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam();
707     //
708     itsSimuParam->SetNLayers(kNLayers);
709     for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr);
710     //
711     //
712     Double_t qscale[knSNcut]={0.446298, 0.45217,        0.405819,       0.457178,       0.488428,       0.508903};
713     if(sncut < 5 || sncut > 10 ) {printf("---> ERROR ERROR ERROR requested SNcut: %d is not valid... Check the macro header! \n",sncut); return;}
714     //
715     // Add spread function parameterization data
716     AliITSUParamList* parData = 0;
717     //
718     //------------------------ parameterization data for segmentation 0 ----------------------
719     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
720     parData->SetUniqueID(0);                                              // this is a function for detId=0
721     parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
722     SetPSFParams("hProfPSD_M32P26_300kRad3e12neq",parData);
723     //
724     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
725     // injected one to consider
726     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
727     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
728     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
729     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
730     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
731     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
732     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
733     // Noise
734     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
735     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
736     
737     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,18.566901,"pixNoiseMPV");
738     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.665233,"pixNoiseSigma");
739     // and readout timing scheme
740     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
741     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
742     //
743     itsSimuParam->AddRespFunParam(parData);
744     //
745     //
746     //------------------------ parameterization data for segmentation 1 ----------------------
747     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
748     parData->SetUniqueID(1);                                              // this is a function for detId=1
749     parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
750     SetPSFParams("hProfPSD_M32P26_300kRad3e12neq",parData);
751     //
752     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
753     // injected one to consider
754     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
755     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
756     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
757     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
758     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
759     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
760     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
761     // Noise
762     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
763     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
764     
765     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,18.566901,"pixNoiseMPV");
766     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.665233,"pixNoiseSigma");
767     // and readout timing scheme
768     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
769     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
770     //
771     itsSimuParam->AddRespFunParam(parData);
772     //
773     //
774     //------------------------ parameterization data for segmentation 2 ----------------------
775     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
776     parData->SetUniqueID(2);                                              // this is a function for detId=2
777     parData->SetNameTitle("Monopix_seg2","PSF map for M32P26");
778     SetPSFParams("hProfPSD_M32P26_300kRad3e12neq",parData);
779     //
780     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
781     // injected one to consider
782     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
783     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
784     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
785     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
786     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
787     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
788     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
789     // Noise
790     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
791     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
792     
793     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,18.566901,"pixNoiseMPV");
794     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.665233,"pixNoiseSigma");
795     // and readout timing scheme
796     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
797     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
798     //
799     itsSimuParam->AddRespFunParam(parData);
800     //
801     return itsSimuParam;
802 }
803
804 //________________________________________________________________________________________________________//
805 //   ||                                                                                                   //
806 //   || Paremeterization by charge spread map of the MIMOSA32 P26 chip, 30 C,                             //
807 //   ||    1 MRad + 1e13 new/cm2                                                                         //
808 //  \||/                                                                                                  //
809 //___\/___________________________________________________________________________________________________//
810
811 AliITSUSimuParam* MakeITSUSimuParam_M32P26Map1MRad1e13( Double_t sncut)
812 {
813     //const char* macroname = "MakeITSUSimuParam.C";
814     //
815     AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam();
816     //
817     itsSimuParam->SetNLayers(kNLayers);
818     for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr);
819     //
820     //
821     Double_t qscale[knSNcut]={0.406783, 0.418178,       0.410906,  0.406477,    0.355895,       0.479006};
822     if(sncut < 5 || sncut > 10 ) {printf("---> ERROR ERROR ERROR requested SNcut: %d is not valid... Check the macro header! \n",sncut); return;}
823     //
824     // Add spread function parameterization data
825     AliITSUParamList* parData = 0;
826     //
827     //------------------------ parameterization data for segmentation 0 ----------------------
828     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
829     parData->SetUniqueID(0);                                              // this is a function for detId=0
830     parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
831     SetPSFParams("hProfPSD_M32P26_1MRad1e13neq",parData);
832     //
833     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
834     // injected one to consider
835     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
836     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
837     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
838     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
839     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
840     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
841     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
842     // Noise
843     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
844     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
845     
846     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,18.982178,"pixNoiseMPV");
847     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.067505,"pixNoiseSigma");
848     // and readout timing scheme
849     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
850     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
851     //
852     itsSimuParam->AddRespFunParam(parData);
853     //
854     //
855     //------------------------ parameterization data for segmentation 1 ----------------------
856     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
857     parData->SetUniqueID(1);                                              // this is a function for detId=1
858     parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
859     SetPSFParams("hProfPSD_M32P26_1MRad1e13neq",parData);
860     //
861     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
862     // injected one to consider
863     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
864     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
865     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
866     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
867     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
868     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
869     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
870     // Noise
871     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
872     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
873     
874     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,18.982178,"pixNoiseMPV");
875     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.067505,"pixNoiseSigma");
876     // and readout timing scheme
877     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
878     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
879     //
880     itsSimuParam->AddRespFunParam(parData);
881     //
882     //
883     //------------------------ parameterization data for segmentation 2 ----------------------
884     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
885     parData->SetUniqueID(2);                                              // this is a function for detId=2
886     parData->SetNameTitle("Monopix_seg2","PSF map for M32P26");
887     SetPSFParams("hProfPSD_M32P26_1MRad1e13neq",parData);
888     //
889     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
890     // injected one to consider
891     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
892     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
893     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
894     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
895     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
896     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
897     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
898     // Noise
899     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
900     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
901     
902     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,18.982178,"pixNoiseMPV");
903     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.067505,"pixNoiseSigma");
904     // and readout timing scheme
905     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
906     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
907     //
908     itsSimuParam->AddRespFunParam(parData);
909     //
910     return itsSimuParam;
911 }
912
913
914 //________________________________________________________________________________________________________//
915 //   ||                                                                                                   //
916 //   || Paremeterization by charge spread map of the MIMOSA32 P26 chip, 20 C,                             //
917 //   ||    1 MRad + 1e13 new/cm2                                                                         //
918 //  \||/                                                                                                  //
919 //___\/___________________________________________________________________________________________________//
920
921 AliITSUSimuParam* MakeITSUSimuParam_M32P26Map1MRad1e13_20deg( Double_t sncut)
922 {
923     //const char* macroname = "MakeITSUSimuParam.C";
924     //
925     AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam();
926     //
927     itsSimuParam->SetNLayers(kNLayers);
928     for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr);
929     //
930     //
931     printf(" ---> WARNING WARNING WARNING --- Parameterization is not final, it is set to the 30 deg irradiated sensor!"); return;
932     Double_t qscale[knSNcut]={0.446298, 0.45217,        0.405819,       0.457178,       0.488428,       0.508903};
933     if(sncut < 5 || sncut > 10 ) {printf("---> ERROR ERROR ERROR requested SNcut: %d is not valid... Check the macro header! \n",sncut); return;}
934     //
935     // Add spread function parameterization data
936     AliITSUParamList* parData = 0;
937     //
938     //------------------------ parameterization data for segmentation 0 ----------------------
939     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
940     parData->SetUniqueID(0);                                              // this is a function for detId=0
941     parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
942     SetPSFParams("hProfPSD_M32P26_1MRad1e13neq_20deg",parData);
943     //
944     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
945     // injected one to consider
946     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
947     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
948     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
949     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
950     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
951     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
952     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
953     // Noise
954     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
955     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
956     
957     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.980760,"pixNoiseMPV");
958     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.091568,"pixNoiseSigma");
959     // and readout timing scheme
960     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
961     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
962     //
963     itsSimuParam->AddRespFunParam(parData);
964     //
965     //
966     //------------------------ parameterization data for segmentation 1 ----------------------
967     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
968     parData->SetUniqueID(1);                                              // this is a function for detId=1
969     parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
970     SetPSFParams("hProfPSD_M32P26_1MRad1e13neq_20deg",parData);
971     //
972     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
973     // injected one to consider
974     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
975     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
976     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
977     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
978     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
979     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
980     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
981     // Noise
982     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
983     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
984     
985     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.980760,"pixNoiseMPV");
986     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.091568,"pixNoiseSigma");
987     // and readout timing scheme
988     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
989     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
990     //
991     itsSimuParam->AddRespFunParam(parData);
992     //
993     //
994     //------------------------ parameterization data for segmentation 2 ----------------------
995     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
996     parData->SetUniqueID(2);                                              // this is a function for detId=2
997     parData->SetNameTitle("Monopix_seg2","PSF map for M32P26");
998     SetPSFParams("hProfPSD_M32P26_1MRad1e13neq_20deg",parData);
999     //
1000     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
1001     // injected one to consider
1002     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
1003     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
1004     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
1005     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
1006     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
1007     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
1008     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
1009     // Noise
1010     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
1011     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
1012     
1013     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.980760,"pixNoiseMPV");
1014     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.091568,"pixNoiseSigma");
1015     // and readout timing scheme
1016     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
1017     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
1018     //
1019     itsSimuParam->AddRespFunParam(parData);
1020     //
1021     return itsSimuParam;
1022 }
1023
1024 //________________________________________________________________________________________________________//
1025 //   ||                                                                                                   //
1026 //   || Paremeterization by charge spread map of the MIMOSA32 P26 chip, 20 C,                             //
1027 //   ||    300kRad + 3e12 new/cm2                                                                         //
1028 //  \||/                                                                                                  //
1029 //___\/___________________________________________________________________________________________________//
1030
1031 AliITSUSimuParam* MakeITSUSimuParam_M32P26Map300kRad3e12_20deg( Double_t sncut)
1032 {
1033     //const char* macroname = "MakeITSUSimuParam.C";
1034     //
1035     AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam();
1036     //
1037     itsSimuParam->SetNLayers(kNLayers);
1038     for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr);
1039     //
1040     //
1041     printf(" ---> WARNING WARNING WARNING --- Parameterization is not final, it is set to the 30 deg irradiated sensor!"); return;
1042     Double_t qscale[knSNcut]={0.446298, 0.45217 ,0.405819,      0.457178,       0.488428,       0.508903};
1043     if(sncut < 5 || sncut > 10 ) {printf("---> ERROR ERROR ERROR requested SNcut: %d is not valid... Check the macro header! \n",sncut); return;}
1044     //
1045     // Add spread function parameterization data
1046     AliITSUParamList* parData = 0;
1047     //
1048     //------------------------ parameterization data for segmentation 0 ----------------------
1049     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
1050     parData->SetUniqueID(0);                                              // this is a function for detId=0
1051     parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
1052     SetPSFParams("hProfPSD_M32P26_300kRad3e12neq_20deg",parData);
1053     //
1054     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
1055     // injected one to consider
1056     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
1057     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
1058     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
1059     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
1060     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
1061     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
1062     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
1063     // Noise
1064     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
1065     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
1066     
1067     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,18.218402,"pixNoiseMPV");
1068     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.616870,"pixNoiseSigma");
1069     // and readout timing scheme
1070     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
1071     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
1072     //
1073     itsSimuParam->AddRespFunParam(parData);
1074     //
1075     //
1076     //------------------------ parameterization data for segmentation 1 ----------------------
1077     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
1078     parData->SetUniqueID(1);                                              // this is a function for detId=1
1079     parData->SetNameTitle("Monopix_seg1","PSF map for M32P26");
1080     SetPSFParams("hProfPSD_M32P26_300kRad3e12neq_20deg",parData);
1081     //
1082     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
1083     // injected one to consider
1084     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
1085     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
1086     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
1087     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
1088     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
1089     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
1090     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
1091     // Noise
1092     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
1093     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
1094     
1095     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,18.218402,"pixNoiseMPV");
1096     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.616870,"pixNoiseSigma");
1097     // and readout timing scheme
1098     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
1099     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
1100     //
1101     itsSimuParam->AddRespFunParam(parData);
1102     //
1103     //
1104     //------------------------ parameterization data for segmentation 2 ----------------------
1105     parData = new AliITSUParamList(AliITSUSimulationPix::kNReservedParams);   // no custom params are needed
1106     parData->SetUniqueID(2);                                              // this is a function for detId=2
1107     parData->SetNameTitle("Monopix_seg2","PSF map for M32P26");
1108     SetPSFParams("hProfPSD_M32P26_300kRad3e12neq_20deg",parData);
1109     //
1110     // obligatory params for all AliITSUSimulationPix functions: number of pixels in X,Z around
1111     // injected one to consider
1112     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNXoffs,2,"nPixX");
1113     parData->SetParameter(AliITSUSimulationPix::kSpreadFunParamNZoffs,2,"nPixZ");
1114     parData->SetParameter(AliITSUSimulationPix::kSpreadFunMinSteps,10,"nChargeSteps");
1115     parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale");
1116     parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate");
1117     parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut");
1118     parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd");
1119     // Noise
1120     parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn");
1121     parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod");
1122     
1123     parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,18.218402,"pixNoiseMPV");
1124     parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.616870,"pixNoiseSigma");
1125     // and readout timing scheme
1126     parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType");
1127     parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)");
1128     //
1129     itsSimuParam->AddRespFunParam(parData);
1130     //
1131     return itsSimuParam;
1132 }
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143 //_______________________________________________________________
1144 void SetPSFParams(TString pixType, AliITSUParamList* parData )
1145 {
1146   //
1147   // Reads the PSF map and sets the parameters
1148   //
1149   printf("Loading charge spread histo %s from file %s\n",pixType.Data(),inpPSFName);
1150   TFile* fin = new TFile(inpPSFName);
1151   if (!fin) { 
1152     printf("NO parameters are set! Input file %s doesn't exist\n",inpPSFName); 
1153     exit(1);
1154   }
1155   //
1156   TH2* hProfWrk = 0;
1157   hProfWrk =  dynamic_cast<TH2*> fin->Get(pixType.Data());
1158   if(!hProfWrk) {
1159     printf("PSF map %s doesn't exist!!!\n",pixType.Data()); 
1160     exit(1);
1161   }
1162   hProfWrk = (TH2*) hProfWrk->Clone();
1163   hProfWrk->SetDirectory(0);
1164   fin->Close();  
1165   //
1166   parData->AddParamObject(hProfWrk);
1167   parData->SetParameter(AliITSUSimulationPix::kChargeSpreadType,AliITSUSimulationPix::kSpreadFunHisto,pixType.Data());
1168 }