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