source: tags/Mars-V0.9.5/manalysisct1/MCT1Supercuts.cc

Last change on this file was 4457, checked in by tbretz, 20 years ago
*** empty log message ***
File size: 9.6 KB
Line 
1/* ======================================================================== *\
2!
3! *
4! * This file is part of MARS, the MAGIC Analysis and Reconstruction
5! * Software. It is distributed to you in the hope that it can be a useful
6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
7! * It is distributed WITHOUT ANY WARRANTY.
8! *
9! * Permission to use, copy, modify and distribute this software and its
10! * documentation for any purpose is hereby granted without fee,
11! * provided that the above copyright notice appear in all copies and
12! * that both that copyright notice and this permission notice appear
13! * in supporting documentation. It is provided "as is" without express
14! * or implied warranty.
15! *
16!
17!
18! Author(s): Wolfgang Wittek, 08/2003 <mailto:wittek@mppmu.mpg.de>
19! Author(s): Thomas Bretz, 08/2003 <mailto:tbretz@astro.uni-wuerzburg.de>
20!
21! Copyright: MAGIC Software Development, 2000-2003
22!
23!
24\* ======================================================================== */
25
26/////////////////////////////////////////////////////////////////////////////
27// //
28// MCT1Supercuts //
29// //
30// this is the container for the parameters of the supercuts //
31// //
32/////////////////////////////////////////////////////////////////////////////
33#include "MCT1Supercuts.h"
34
35#include <math.h>
36#include <fstream>
37
38#include "MParList.h"
39
40#include "MLog.h"
41#include "MLogManip.h"
42
43ClassImp(MCT1Supercuts);
44
45using namespace std;
46
47// --------------------------------------------------------------------------
48//
49// constructor
50//
51MCT1Supercuts::MCT1Supercuts(const char *name, const char *title)
52 : fParameters(104), fStepsizes(104),
53 fLengthUp(fParameters.GetArray()), fLengthLo(fParameters.GetArray()+8),
54 fWidthUp(fParameters.GetArray()+16), fWidthLo(fParameters.GetArray()+24),
55 fDistUp(fParameters.GetArray()+32), fDistLo(fParameters.GetArray()+40),
56 fAsymUp(fParameters.GetArray()+48), fAsymLo(fParameters.GetArray()+56),
57 fConcUp(fParameters.GetArray()+64), fConcLo(fParameters.GetArray()+72),
58 fLeakage1Up(fParameters.GetArray()+80), fLeakage1Lo(fParameters.GetArray()+88),
59 fAlphaUp(fParameters.GetArray()+96)
60{
61 fName = name ? name : "MCT1Supercuts";
62 fTitle = title ? title : "Container for the supercut parameters";
63
64 // set supercut parameters to their default values
65 InitParameters();
66}
67
68
69// --------------------------------------------------------------------------
70//
71// set default values for the supercut parameters
72//
73void MCT1Supercuts::InitParameters()
74{
75 //---------------------------------------------------
76 // these are Daniel's original values for Mkn 421
77
78 fLengthUp[0] = 0.315585;
79 fLengthUp[1] = 0.001455;
80 fLengthUp[2] = 0.203198;
81 fLengthUp[3] = 0.005532;
82 fLengthUp[4] = -0.001670;
83 fLengthUp[5] = -0.020362;
84 fLengthUp[6] = 0.007388;
85 fLengthUp[7] = -0.013463;
86
87 fLengthLo[0] = 0.151530;
88 fLengthLo[1] = 0.028323;
89 fLengthLo[2] = 0.510707;
90 fLengthLo[3] = 0.053089;
91 fLengthLo[4] = 0.013708;
92 fLengthLo[5] = 2.357993;
93 fLengthLo[6] = 0.000080;
94 fLengthLo[7] = -0.007157;
95
96 fWidthUp[0] = 0.145412;
97 fWidthUp[1] = -0.001771;
98 fWidthUp[2] = 0.054462;
99 fWidthUp[3] = 0.022280;
100 fWidthUp[4] = -0.009893;
101 fWidthUp[5] = 0.056353;
102 fWidthUp[6] = 0.020711;
103 fWidthUp[7] = -0.016703;
104
105 fWidthLo[0] = 0.089187;
106 fWidthLo[1] = -0.006430;
107 fWidthLo[2] = 0.074442;
108 fWidthLo[3] = 0.003738;
109 fWidthLo[4] = -0.004256;
110 fWidthLo[5] = -0.014101;
111 fWidthLo[6] = 0.006126;
112 fWidthLo[7] = -0.002849;
113
114 fDistUp[0] = 1.787943;
115 fDistUp[1] = 0;
116 fDistUp[2] = 2.942310;
117 fDistUp[3] = 0.199815;
118 fDistUp[4] = 0;
119 fDistUp[5] = 0.249909;
120 fDistUp[6] = 0.189697;
121 fDistUp[7] = 0;
122
123 fDistLo[0] = 0.589406;
124 fDistLo[1] = 0;
125 fDistLo[2] = -0.083964;
126 fDistLo[3] = -0.007975;
127 fDistLo[4] = 0;
128 fDistLo[5] = 0.045374;
129 fDistLo[6] = -0.001750;
130 fDistLo[7] = 0;
131
132
133 // dummy values
134
135 fAsymUp[0] = 1.e10;
136 fAsymUp[1] = 0.0;
137 fAsymUp[2] = 0.0;
138 fAsymUp[3] = 0.0;
139 fAsymUp[4] = 0.0;
140 fAsymUp[5] = 0.0;
141 fAsymUp[6] = 0.0;
142 fAsymUp[7] = 0.0;
143
144 fAsymLo[0] = -1.e10;
145 fAsymLo[1] = 0.0;
146 fAsymLo[2] = 0.0;
147 fAsymLo[3] = 0.0;
148 fAsymLo[4] = 0.0;
149 fAsymLo[5] = 0.0;
150 fAsymLo[6] = 0.0;
151 fAsymLo[7] = 0.0;
152
153 fConcUp[0] = 1.e10;
154 fConcUp[1] = 0.0;
155 fConcUp[2] = 0.0;
156 fConcUp[3] = 0.0;
157 fConcUp[4] = 0.0;
158 fConcUp[5] = 0.0;
159 fConcUp[6] = 0.0;
160 fConcUp[7] = 0.0;
161
162 fConcLo[0] = -1.e10;
163 fConcLo[1] = 0.0;
164 fConcLo[2] = 0.0;
165 fConcLo[3] = 0.0;
166 fConcLo[4] = 0.0;
167 fConcLo[5] = 0.0;
168 fConcLo[6] = 0.0;
169 fConcLo[7] = 0.0;
170
171 fLeakage1Up[0] = 1.e10;
172 fLeakage1Up[1] = 0.0;
173 fLeakage1Up[2] = 0.0;
174 fLeakage1Up[3] = 0.0;
175 fLeakage1Up[4] = 0.0;
176 fLeakage1Up[5] = 0.0;
177 fLeakage1Up[6] = 0.0;
178 fLeakage1Up[7] = 0.0;
179
180 fLeakage1Lo[0] = -1.e10;
181 fLeakage1Lo[1] = 0.0;
182 fLeakage1Lo[2] = 0.0;
183 fLeakage1Lo[3] = 0.0;
184 fLeakage1Lo[4] = 0.0;
185 fLeakage1Lo[5] = 0.0;
186 fLeakage1Lo[6] = 0.0;
187 fLeakage1Lo[7] = 0.0;
188
189 fAlphaUp[0] = 13.123440;
190 fAlphaUp[1] = 0;
191 fAlphaUp[2] = 0;
192 fAlphaUp[3] = 0;
193 fAlphaUp[4] = 0;
194 fAlphaUp[5] = 0;
195 fAlphaUp[6] = 0;
196 fAlphaUp[7] = 0;
197
198 //---------------------------------------------------
199 // fStepsizes
200 // if == 0.0 the parameter will be fixed in the minimization
201 // != 0.0 initial step sizes for the parameters
202
203 // LengthUp
204 fStepsizes[0] = 0.03;
205 fStepsizes[1] = 0.0002;
206 fStepsizes[2] = 0.02;
207 fStepsizes[3] = 0.0006;
208 fStepsizes[4] = 0.0002;
209 fStepsizes[5] = 0.002;
210 fStepsizes[6] = 0.0008;
211 fStepsizes[7] = 0.002;
212
213 // LengthLo
214 fStepsizes[8] = 0.02;
215 fStepsizes[9] = 0.003;
216 fStepsizes[10] = 0.05;
217 fStepsizes[11] = 0.006;
218 fStepsizes[12] = 0.002;
219 fStepsizes[13] = 0.3;
220 fStepsizes[14] = 0.0001;
221 fStepsizes[15] = 0.0008;
222
223 // WidthUp
224 fStepsizes[16] = 0.02;
225 fStepsizes[17] = 0.0002;
226 fStepsizes[18] = 0.006;
227 fStepsizes[19] = 0.003;
228 fStepsizes[20] = 0.002;
229 fStepsizes[21] = 0.006;
230 fStepsizes[22] = 0.002;
231 fStepsizes[23] = 0.002;
232
233 // WidthLo
234 fStepsizes[24] = 0.009;
235 fStepsizes[25] = 0.0007;
236 fStepsizes[26] = 0.008;
237 fStepsizes[27] = 0.0004;
238 fStepsizes[28] = 0.0005;
239 fStepsizes[29] = 0.002;
240 fStepsizes[30] = 0.0007;
241 fStepsizes[31] = 0.003;
242
243 // DistUp
244 fStepsizes[32] = 0.2;
245 fStepsizes[33] = 0.0;
246 fStepsizes[34] = 0.3;
247 fStepsizes[35] = 0.02;
248 fStepsizes[36] = 0.0;
249 fStepsizes[37] = 0.03;
250 fStepsizes[38] = 0.02;
251 fStepsizes[39] = 0.0;
252
253 // DistLo
254 fStepsizes[40] = 0.06;
255 fStepsizes[41] = 0.0;
256 fStepsizes[42] = 0.009;
257 fStepsizes[43] = 0.0008;
258 fStepsizes[44] = 0.0;
259 fStepsizes[45] = 0.005;
260 fStepsizes[46] = 0.0002;
261 fStepsizes[47] = 0.0;
262
263 // AsymUp
264 fStepsizes[48] = 0.0;
265 fStepsizes[49] = 0.0;
266 fStepsizes[50] = 0.0;
267 fStepsizes[51] = 0.0;
268 fStepsizes[52] = 0.0;
269 fStepsizes[53] = 0.0;
270 fStepsizes[54] = 0.0;
271 fStepsizes[55] = 0.0;
272
273 // AsymLo
274 fStepsizes[56] = 0.0;
275 fStepsizes[57] = 0.0;
276 fStepsizes[58] = 0.0;
277 fStepsizes[59] = 0.0;
278 fStepsizes[60] = 0.0;
279 fStepsizes[61] = 0.0;
280 fStepsizes[62] = 0.0;
281 fStepsizes[63] = 0.0;
282
283 // ConcUp
284 fStepsizes[64] = 0.0;
285 fStepsizes[65] = 0.0;
286 fStepsizes[66] = 0.0;
287 fStepsizes[67] = 0.0;
288 fStepsizes[68] = 0.0;
289 fStepsizes[69] = 0.0;
290 fStepsizes[70] = 0.0;
291 fStepsizes[71] = 0.0;
292
293 // ConcLo
294 fStepsizes[72] = 0.0;
295 fStepsizes[73] = 0.0;
296 fStepsizes[74] = 0.0;
297 fStepsizes[75] = 0.0;
298 fStepsizes[76] = 0.0;
299 fStepsizes[77] = 0.0;
300 fStepsizes[78] = 0.0;
301 fStepsizes[79] = 0.0;
302
303 // Leakage1Up
304 fStepsizes[80] = 0.0;
305 fStepsizes[81] = 0.0;
306 fStepsizes[82] = 0.0;
307 fStepsizes[83] = 0.0;
308 fStepsizes[84] = 0.0;
309 fStepsizes[85] = 0.0;
310 fStepsizes[86] = 0.0;
311 fStepsizes[87] = 0.0;
312
313 // Leakage1Lo
314 fStepsizes[88] = 0.0;
315 fStepsizes[89] = 0.0;
316 fStepsizes[90] = 0.0;
317 fStepsizes[91] = 0.0;
318 fStepsizes[92] = 0.0;
319 fStepsizes[93] = 0.0;
320 fStepsizes[94] = 0.0;
321 fStepsizes[95] = 0.0;
322
323 // AlphaUp
324 fStepsizes[96] = 0.0;
325 fStepsizes[97] = 0.0;
326 fStepsizes[98] = 0.0;
327 fStepsizes[99] = 0.0;
328 fStepsizes[100] = 0.0;
329 fStepsizes[101] = 0.0;
330 fStepsizes[102] = 0.0;
331 fStepsizes[103] = 0.0;
332}
333
334
335// --------------------------------------------------------------------------
336//
337// Set the parameter values from the array 'd'
338//
339//
340Bool_t MCT1Supercuts::SetParameters(const TArrayD &d)
341{
342 if (d.GetSize() != fParameters.GetSize())
343 {
344 *fLog << err << "Sizes of d and of fParameters are different : "
345 << d.GetSize() << ", " << fParameters.GetSize() << endl;
346 return kFALSE;
347 }
348
349 fParameters = d;
350
351 return kTRUE;
352}
353
354// --------------------------------------------------------------------------
355//
356// Set the step sizes from the array 'd'
357//
358//
359Bool_t MCT1Supercuts::SetStepsizes(const TArrayD &d)
360{
361 if (d.GetSize() != fStepsizes.GetSize())
362 {
363 *fLog << err << "Sizes of d and of fStepsizes are different : "
364 << d.GetSize() << ", " << fStepsizes.GetSize() << endl;
365 return kFALSE;
366 }
367
368 fStepsizes = d;
369
370 return kTRUE;
371}
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
Note: See TracBrowser for help on using the repository browser.