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