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