]>
Commit | Line | Data |
---|---|---|
29ad4146 | 1 | //RS: before running MakeITSUSimuParam call ".x LoadLibs.C" |
2 | ||
91e6da40 | 3 | // Reference sensor parameterizations |
719ee73a | 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); | |
91e6da40 | 6 | // Irradiated sensor parameterizations P31 |
719ee73a | 7 | AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map1MRad( Double_t sncut); |
8 | AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map300kRad3e12( Double_t sncut); | |
9 | AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map1MRad1e13( Double_t sncut); | |
91e6da40 | 10 | // Irradiated sensor parameterizations P26 |
719ee73a | 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); | |
ae6ac39b | 15 | |
16 | // Reference sensor parameterizations with 2 2D Gaussian | |
17 | AliITSUSimuParam* MakeITSUSimuParam_M32P26MapRecenteredBroadened(Double_t broadening);// | |
18 | ||
19 | ||
20 | ||
29ad4146 | 21 | void SetPSFParams(TString pixType, AliITSUParamList* parData); |
c92b1537 | 22 | |
34d64d83 | 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"; | |
719ee73a | 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. | |
344d4ff3 | 33 | |
ae6ac39b | 34 | const double kBroadeningFactor = 1.0; // For the 2 2D Gaussian parameterization, allowed range [0.5,2.0] |
35 | ||
36 | ||
344d4ff3 | 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}; | |
29ad4146 | 45 | |
ae6ac39b | 46 | void MakeITSUSimuParam(Int_t simuType = 9, const char* cdbURI="local://") { |
29ad4146 | 47 | //======================================================================== |
c92b1537 | 48 | // |
29ad4146 | 49 | // Steering macro for ITS simulation parameters |
50 | // | |
51 | // Author: L.Molnar | |
52 | // Contact: levente.molnar@cern.ch | |
53 | // | |
41d6f3a5 | 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 | // | |
29ad4146 | 73 | //======================================================================== |
74 | AliITSUSimuParam *param = 0; | |
75 | // | |
76 | // Select only one parameterziation... and don't forget to set 18 um thickness in Config.C !!! | |
77 | ||
719ee73a | 78 | switch(simuType) { |
79 | ||
80 | case 0: | |
41d6f3a5 | 81 | //____ MIMOSA32 P26 Response parameterzied by map ---> selected for TDR |
719ee73a | 82 | param = MakeITSUSimuParam_M32P26Map(kSNcut); |
83 | break; | |
84 | // | |
85 | case 1: | |
41d6f3a5 | 86 | //____ MIMOSA32ter P31 Response parameterzied by map |
719ee73a | 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 | // | |
ae6ac39b | 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 | // | |
719ee73a | 132 | default: |
133 | break; | |
134 | } | |
91e6da40 | 135 | |
136 | ||
29ad4146 | 137 | param->Print(); |
c92b1537 | 138 | // |
29ad4146 | 139 | // ---------------------------------------------------------- |
140 | // save in CDB storage | |
c92b1537 | 141 | AliCDBManager* cdb = AliCDBManager::Instance(); |
142 | cdb->SetDefaultStorage(cdbURI); | |
29ad4146 | 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 | } | |
c92b1537 | 153 | |
29ad4146 | 154 | |
91e6da40 | 155 | //________________________________________________________________________________________________________// |
156 | // || // | |
157 | // || Paremeterization by charge spread map of the MIMOSA32 P26 chip, 30 C, no irradiation // | |
158 | // || // | |
159 | // \||/ // | |
160 | //___\/___________________________________________________________________________________________________// | |
719ee73a | 161 | AliITSUSimuParam* MakeITSUSimuParam_M32P26Map( Int_t sncut) |
29ad4146 | 162 | { |
163 | //const char* macroname = "MakeITSUSimuParam.C"; | |
164 | // | |
165 | AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam(); | |
166 | // | |
344d4ff3 | 167 | itsSimuParam->SetNLayers(kNLayers); |
168 | for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr); | |
169 | // | |
719ee73a | 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 | // | |
29ad4146 | 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"); | |
719ee73a | 187 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
29ad4146 | 188 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); |
91e6da40 | 189 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut"); |
29ad4146 | 190 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); |
191 | // Noise | |
34d64d83 | 192 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn"); |
193 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod"); | |
29ad4146 | 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"); | |
719ee73a | 215 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
29ad4146 | 216 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); |
91e6da40 | 217 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut"); |
29ad4146 | 218 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); |
219 | // Noise | |
34d64d83 | 220 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn"); |
221 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod"); | |
29ad4146 | 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"); | |
719ee73a | 243 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
29ad4146 | 244 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); |
91e6da40 | 245 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut"); |
29ad4146 | 246 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); |
247 | // Noise | |
34d64d83 | 248 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn"); |
249 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod"); | |
29ad4146 | 250 | |
251 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseMPV,17.53,"pixNoiseMPV"); | |
252 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseSigma,2.93,"pixNoiseSigma"); | |
0ebc85cf | 253 | // and readout timing scheme |
29ad4146 | 254 | parData->SetParameter(AliITSUSimulationPix::kReadOutSchemeType,AliITSUSimulationPix::kReadOutRollingShutter,"ROType"); |
0ebc85cf | 255 | parData->SetParameter(AliITSUSimulationPix::kReadOutCycleLength,25e-6,"ROCycle(s)"); |
29ad4146 | 256 | // |
257 | itsSimuParam->AddRespFunParam(parData); | |
258 | // | |
259 | return itsSimuParam; | |
260 | } | |
261 | ||
91e6da40 | 262 | //________________________________________________________________________________________________________// |
263 | // || // | |
264 | // || Paremeterization by charge spread map of the MIMOSA32ter P31 chip, 30 C, no irradiation // | |
265 | // || // | |
266 | // \||/ // | |
267 | //___\/___________________________________________________________________________________________________// | |
29ad4146 | 268 | |
719ee73a | 269 | AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map( Double_t sncut) |
29ad4146 | 270 | { |
271 | //const char* macroname = "MakeITSUSimuParam.C"; | |
272 | // | |
273 | AliITSUSimuParam* itsSimuParam = new AliITSUSimuParam(); | |
274 | // | |
344d4ff3 | 275 | itsSimuParam->SetNLayers(kNLayers); |
276 | for (int ilr=kNLayers;ilr--;) itsSimuParam->SetLrROCycleShift(kROShifts[ilr],ilr); | |
277 | // | |
719ee73a | 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 | // | |
29ad4146 | 282 | // Add spread function parameterization data |
283 | AliITSUParamList* parData = 0; | |
c92b1537 | 284 | // |
29ad4146 | 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"); | |
719ee73a | 296 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
29ad4146 | 297 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); |
34d64d83 | 298 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod"); |
29ad4146 | 299 | |
91e6da40 | 300 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut"); |
29ad4146 | 301 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); |
302 | // Noise | |
34d64d83 | 303 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn"); |
29ad4146 | 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)"); | |
c92b1537 | 309 | // |
310 | itsSimuParam->AddRespFunParam(parData); | |
311 | // | |
69e0f089 | 312 | // |
29ad4146 | 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"); | |
719ee73a | 326 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
29ad4146 | 327 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); |
34d64d83 | 328 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod"); |
29ad4146 | 329 | |
91e6da40 | 330 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut"); |
29ad4146 | 331 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); |
332 | // Noise | |
34d64d83 | 333 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn"); |
29ad4146 | 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); | |
c92b1537 | 342 | // |
29ad4146 | 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"); | |
719ee73a | 356 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); //980./1080. |
29ad4146 | 357 | parData->SetParameter(AliITSUSimulationPix::kPixFakeRate,1e-4,"pixFakeRate"); |
91e6da40 | 358 | parData->SetParameter(AliITSUSimulationPix::kPixSNDisrcCut,sncut,"pixSNDisrcCut"); |
29ad4146 | 359 | parData->SetParameter(AliITSUSimulationPix::kPixMinElToAdd,1,"pixMinElToAdd"); |
360 | // Noise | |
34d64d83 | 361 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseIsOn,kAddNoise,"pixNoiseIsOn"); |
362 | parData->SetParameter(AliITSUSimulationPix::kPixNoiseInAllMod,kAddNoiseInAllMod,"pixNoiseIsOnInAllMod"); | |
29ad4146 | 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; | |
c92b1537 | 372 | } |
373 | ||
91e6da40 | 374 | //________________________________________________________________________________________________________// |
375 | // || // | |
376 | // || Paremeterization by charge spread map of the MIMOSA32ter P31 chip, 30 C, 1 MRad irradiation // | |
377 | // || // | |
378 | // \||/ // | |
379 | //___\/___________________________________________________________________________________________________// | |
719ee73a | 380 | AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map1MRad( Double_t sncut) |
91e6da40 | 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 | // | |
719ee73a | 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 | // | |
91e6da40 | 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"); | |
719ee73a | 408 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 438 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 468 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); //980./1080. |
91e6da40 | 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 | ||
719ee73a | 492 | AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map300kRad3e12( Double_t sncut) |
91e6da40 | 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 | // | |
719ee73a | 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 | // | |
91e6da40 | 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"); | |
719ee73a | 519 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 549 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 579 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); //980./1080. |
91e6da40 | 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 | ||
719ee73a | 604 | AliITSUSimuParam* MakeITSUSimuParam_M32terP31Map1MRad1e13( Double_t sncut) |
91e6da40 | 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 | // | |
719ee73a | 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 | // | |
91e6da40 | 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"); | |
719ee73a | 631 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 661 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 691 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); //980./1080. |
91e6da40 | 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 | ||
719ee73a | 718 | AliITSUSimuParam* MakeITSUSimuParam_M32P26Map300kRad3e12( Double_t sncut) |
91e6da40 | 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 | // | |
719ee73a | 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 | // | |
91e6da40 | 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"); | |
719ee73a | 745 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 773 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 801 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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 | ||
719ee73a | 827 | AliITSUSimuParam* MakeITSUSimuParam_M32P26Map1MRad1e13( Double_t sncut) |
91e6da40 | 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 | // | |
719ee73a | 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 | // | |
91e6da40 | 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"); | |
719ee73a | 854 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 882 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 910 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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 | ||
719ee73a | 937 | AliITSUSimuParam* MakeITSUSimuParam_M32P26Map1MRad1e13_20deg( Double_t sncut) |
91e6da40 | 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 | // | |
719ee73a | 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 | // | |
91e6da40 | 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"); | |
719ee73a | 965 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 993 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 1021 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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 | ||
719ee73a | 1047 | AliITSUSimuParam* MakeITSUSimuParam_M32P26Map300kRad3e12_20deg( Double_t sncut) |
91e6da40 | 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 | // | |
719ee73a | 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 | // | |
91e6da40 | 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"); | |
719ee73a | 1075 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 1103 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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"); | |
719ee73a | 1131 | parData->SetParameter(AliITSUSimulationPix::kSpreadFunGlobalQScale,qscale[sncut-5],"globQscale"); |
91e6da40 | 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 | ||
ae6ac39b | 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"); | |
91e6da40 | 1256 | |
ae6ac39b | 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 | ||
91e6da40 | 1268 | |
1269 | ||
1270 | ||
1271 | ||
1272 | ||
1273 | ||
1274 | ||
29ad4146 | 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 | } |