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