ATLAS Offline Software
SonnenscheinEngine.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3  */
4 
6 
7 #include "TopEvent/Event.h" //for TLorentzVector <<
8 
9 #include <iostream>
10 #include <iomanip>
11 #include <cmath>
12 
13 namespace top {
15  }
16 
18  }
19 
20  std::vector<std::pair<TLorentzVector, TLorentzVector> > SonnenscheinEngine::solve(const TLorentzVector& me_t_lp,
21  const TLorentzVector& me_t_b,
22  double mass_t, double mass_wp,
23  const TLorentzVector& me_tbar_lm,
24  const TLorentzVector& me_tbar_bbar,
25  double mass_tbar, double mass_wm,
26  double me_mex,
27  double me_mey) const {
28  std::vector<std::pair<TLorentzVector, TLorentzVector> > lvs;
29 
30  if (m_debug) {
31  std::cout << "Starting SOLVE\n";
32  std::cout << "lp " << me_t_lp << "\n";
33  std::cout << "lm " << me_tbar_lm << "\n";
34  std::cout << "b " << me_t_b << "\n";
35  std::cout << "bbar " << me_tbar_bbar << "\n";
36  std::cout << "met_ex " << me_mex << "\n";
37  std::cout << "met_ey " << me_mey << "\n";
38  std::cout << "mt " << mass_t << "\n";
39  std::cout << "mtbar " << mass_tbar << "\n";
40  std::cout << "mWp " << mass_wp << "\n";
41  std::cout << "mWm " << mass_wm << "\n";
42  }
43 
44  const double Elp = me_t_lp.E();
45  const double mlp = me_t_lp.M();
46  const double plpx = me_t_lp.Px();
47  const double plpy = me_t_lp.Py();
48  const double plpz = me_t_lp.Pz();
49  const TVector3 plp = 1. * me_t_lp.Vect();
50 
51  const double Eb = me_t_b.E();
52  const double pbx = me_t_b.Px();
53  const double pby = me_t_b.Py();
54  const double pbz = me_t_b.Pz();
55  const double mb = me_t_b.M();
56  const TVector3 pb = 1. * me_t_b.Vect();
57 
58 
59  const double Elm = me_tbar_lm.E();
60  const double mlm = me_tbar_lm.M();
61  const double plmx = me_tbar_lm.Px();
62  const double plmy = me_tbar_lm.Py();
63  const double plmz = me_tbar_lm.Pz();
64  const TVector3 plm = me_tbar_lm.Vect();
65 
66  const double Ebbar = me_tbar_bbar.E();
67  const double pbbarx = me_tbar_bbar.Px();
68  const double pbbary = me_tbar_bbar.Py();
69  const double pbbarz = me_tbar_bbar.Pz();
70  const double mbbar = me_tbar_bbar.M();
71  const TVector3 pbbar = me_tbar_bbar.Vect();
72 
73  if (m_debug) {
74  std::cout << "mex and mey " << me_mex << " " << me_mey << "\n";
75  std::cout << "Starting Calculation\n";
76  std::cout << "Calculating a\n";
77  }
78 
79  double a1 = (Eb + Elp) * (mass_wp * mass_wp - mlp * mlp)
80  - Elp * (mass_t * mass_t - mb * mb - mlp * mlp)
81  + 2 * Eb * Elp * Elp - 2 * Elp * pb * plp;
82 
83  double a2 = 2 * (Eb * plpx - Elp * pbx);
84  double a3 = 2 * (Eb * plpy - Elp * pby);
85  double a4 = 2 * (Eb * plpz - Elp * pbz);
86 
87  if (m_debug) {
88  std::cout << "a1 : " << a1 << "\n";
89  std::cout << "a2 : " << a2 << "\n";
90  std::cout << "a3 : " << a3 << "\n";
91  std::cout << "a4 : " << a4 << "\n";
92 
93  //double pvx = nu->Px() ;
94  //double pvy = nu->Py() ;
95  //double pvz = nu->Pz() ;
96  //std::cout << a1 + a2 * pvx + a3 * pvy + a4 * pvz << "\n";
97  }
98 
99  double b1 = (Ebbar + Elm) * (mass_wm * mass_wm - mlm * mlm)
100  - Elm * (mass_tbar * mass_tbar - mbbar * mbbar - mlm * mlm)
101  + 2 * Ebbar * Elm * Elm - 2 * Elm * pbbar * plm;
102 
103  double b2 = 2 * (Ebbar * plmx - Elm * pbbarx);
104  double b3 = 2 * (Ebbar * plmy - Elm * pbbary);
105  double b4 = 2 * (Ebbar * plmz - Elm * pbbarz);
106 
107  if (m_debug) {
108  std::cout << "Calculating b\n";
109  std::cout << "b1 : " << b1 << "\n";
110  std::cout << "b2 : " << b2 << "\n";
111  std::cout << "b3 : " << b3 << "\n";
112  std::cout << "b4 : " << b4 << "\n";
113 
114  //std::cout << "Checking b" << "\n";
115 
116  //double pvbarx = nu2->Px() ;
117  //double pvbary = nu2->Py() ;
118  //double pvbarz = nu2->Pz() ;
119 
120  //std::cout << b1 + b2 * pvbarx + b3 * pvbary + b4 * pvbarz << "\n";
121 
122  std::cout << "Calculating c\n";
123  }
124 
125  double c22 = (mass_wp * mass_wp - mlp * mlp) * (mass_wp * mass_wp - mlp * mlp)
126  - 4 * (Elp * Elp - plpz * plpz) * (a1 / a4) * (a1 / a4)
127  - 4 * (mass_wp * mass_wp - mlp * mlp) * plpz * a1 / a4;
128 
129  double c21 = 4 * (mass_wp * mass_wp - mlp * mlp) * (plpx - plpz * a2 / a4) //?
130  - 8 * (Elp * Elp - plpz * plpz) * a1 * a2 / (a4 * a4)
131  - 8 * plpx * plpz * a1 / a4;
132 
133  double c20 = -4 * (Elp * Elp - plpx * plpx)
134  - 4 * (Elp * Elp - plpz * plpz) * (a2 / a4) * (a2 / a4)
135  - 8 * plpx * plpz * a2 / a4;
136 
137  double c11 = 4 * (mass_wp * mass_wp - mlp * mlp) * (plpy - plpz * a3 / a4)
138  - 8 * (Elp * Elp - plpz * plpz) * a1 * a3 / (a4 * a4)
139  - 8 * plpy * plpz * a1 / a4;
140 
141  double c10 = -8 * (Elp * Elp - plpz * plpz) * a2 * a3 / (a4 * a4)
142  + 8 * plpx * plpy
143  - 8 * plpx * plpz * a3 / a4
144  - 8 * plpy * plpz * a2 / a4;
145 
146  double c00 = -4 * (Elp * Elp - plpy * plpy)
147  - 4 * (Elp * Elp - plpz * plpz) * (a3 / a4) * (a3 / a4)
148  - 8 * plpy * plpz * a3 / a4;
149 
150  /*
151  for cross check - the original paper used these definitions.
152  similar for dp.
153  */
154  c22 = a4 * a4 * c22;
155  c21 = a4 * a4 * c21;
156  c20 = a4 * a4 * c20;
157  c11 = a4 * a4 * c11;
158  c10 = a4 * a4 * c10;
159  c00 = a4 * a4 * c00;
160 
161  if (m_debug) {
162  std::cout << "c22 : " << c22 << "\n";
163  std::cout << "c21 : " << c21 << "\n";
164  std::cout << "c20 : " << c20 << "\n";
165  std::cout << "c11 : " << c11 << "\n";
166  std::cout << "c10 : " << c10 << "\n";
167  std::cout << "c00 : " << c00 << "\n";
168 
169  //std::cout "c=0? " <<
170  //c22
171  //+ c21 * pvx
172  //+ c11 * pvy
173  //+ c20 * pvx * pvx
174  //+ c10 * pvx * pvy
175  //+ c00 * pvy * pvy
176  //<<"\n";
177 
178  std::cout << "Calculating d'\n";
179  }
180 
181  double dp22 = pow(mass_wm * mass_wm - mlm * mlm, 2)
182  - 4 * (Elm * Elm - plmz * plmz) * (b1 / b4) * (b1 / b4)
183  - 4 * (mass_wm * mass_wm - mlm * mlm) * plmz * b1 / b4;
184 
185  double dp21 = 4 * (mass_wm * mass_wm - mlm * mlm) * (plmx - plmz * b2 / b4)
186  - 8 * (Elm * Elm - plmz * plmz) * b1 * b2 / (b4 * b4)
187  - 8 * plmx * plmz * b1 / b4;
188 
189  double dp20 = -4 * (Elm * Elm - plmx * plmx)
190  - 4 * (Elm * Elm - plmz * plmz) * (b2 / b4) * (b2 / b4)
191  - 8 * plmx * plmz * b2 / b4;
192 
193  double dp11 = 4 * (mass_wm * mass_wm - mlm * mlm) * (plmy - plmz * b3 / b4)
194  - 8 * (Elm * Elm - plmz * plmz) * b1 * b3 / (b4 * b4)
195  - 8 * plmy * plmz * b1 / b4;
196 
197  double dp10 = -8 * (Elm * Elm - plmz * plmz) * b2 * b3 / (b4 * b4)
198  + 8 * plmx * plmy
199  - 8 * plmx * plmz * b3 / b4
200  - 8 * plmy * plmz * b2 / b4;
201 
202  double dp00 = -4 * (Elm * Elm - plmy * plmy)
203  - 4 * (Elm * Elm - plmz * plmz) * (b3 / b4) * (b3 / b4)
204  - 8 * plmy * plmz * b3 / b4;
205 
206  dp22 = b4 * b4 * dp22;
207  dp21 = b4 * b4 * dp21;
208  dp20 = b4 * b4 * dp20;
209  dp11 = b4 * b4 * dp11;
210  dp10 = b4 * b4 * dp10;
211  dp00 = b4 * b4 * dp00;
212 
213  if (m_debug) {
214  std::cout << "dp22 : " << dp22 << "\n";
215  std::cout << "dp21 : " << dp21 << "\n";
216  std::cout << "dp20 : " << dp20 << "\n";
217  std::cout << "dp11 : " << dp11 << "\n";
218  std::cout << "dp10 : " << dp10 << "\n";
219  std::cout << "dp00 : " << dp00 << "\n";
220 
221  //in the paper for c and dp c21 appears twice. is this right?
222  //std::cout << "dp=0? " <<
223  //dp22
224  //+ dp21 * pvbarx
225  //+ dp11 * pvbary
226  //+ dp20 * pvbarx * pvbarx
227  //+ dp10 * pvbarx * pvbary
228  //+ dp00 * pvbary * pvbary
229  //<<"\n";
230 
231  std::cout << "Calculating d\n";
232  }
233 
234  const double d22 = dp22
235  + me_mex * me_mex * dp20
236  + me_mey * me_mey * dp00
237  + me_mex * me_mey * dp10
238  + me_mex * dp21
239  + me_mey * dp11;
240 
241  const double d21 = -1 * dp21
242  - 2 * me_mex * dp20
243  - me_mey * dp10;
244 
245  const double d20 = dp20;
246  const double d11 = -1 * dp11
247  - 2 * me_mey * dp00
248  - me_mex * dp10;
249 
250  const double d10 = dp10;
251  const double d00 = dp00;
252 
253  if (m_debug) {
254  std::cout << "d22 : " << d22 << "\n";
255  std::cout << "d21 : " << d21 << "\n";
256  std::cout << "d20 : " << d20 << "\n";
257  std::cout << "d11 : " << d11 << "\n";
258  std::cout << "d10 : " << d10 << "\n";
259  std::cout << "d00 : " << d00 << "\n";
260 
261  //std::cout << "d " <<
262  //d22
263  //+d21 * pvx
264  //+d11 * pvy
265  //+d20 * pvx * pvx
266  //+d10 * pvx * pvy
267  //+d00 * pvy * pvy
268  //<< "\n";
269 
270  std::cout << "Calculating h\n";
271  }
272 
273  const double h4 = c00 * c00 * d22 * d22
274  + c11 * d22 * (c11 * d00 - c00 * d11)
275  + c00 * c22 * (d11 * d11 - 2 * d00 * d22)
276  + c22 * d00 * (c22 * d00 - c11 * d11);
277 
278  const double h3 = c00 * d21 * (2 * c00 * d22 - c11 * d11)
279  + c00 * d11 * (2 * c22 * d10 + c21 * d11)
280  + c22 * d00 * (2 * c21 * d00 - c11 * d10)
281  - c00 * d22 * (c11 * d10 + c10 * d11)
282  - 2 * c00 * d00 * (c22 * d21 + c21 * d22)
283  - d00 * d11 * (c11 * c21 + c10 * c22)
284  + c11 * d00 * (c11 * d21 + 2 * c10 * d22);
285 
286  const double h2 = c00 * c00 * (2 * d22 * d20 + d21 * d21)
287  - c00 * d21 * (c11 * d10 + c10 * d11)
288  + c11 * d20 * (c11 * d00 - c00 * d11)
289  + c00 * d10 * (c22 * d10 - c10 * d22)
290  + c00 * d11 * (2 * c21 * d10 + c20 * d11)
291  + (2 * c22 * c20 + c21 * c21) * d00 * d00
292  - 2 * c00 * d00 * (c22 * d20 + c21 * d21 + c20 * d22)
293  + c10 * d00 * (2 * c11 * d21 + c10 * d22)
294  - d00 * d10 * (c11 * c21 + c10 * c22)
295  - d00 * d11 * (c11 * c20 + c10 * c21);
296 
297  /*
298  * leave!
299  */
300  /*
301  double h1 = c00 * d21 * (2 * c00 * d20 - c10 * d10)
302  - c00 * d20 * (c11 * d10 + c10 * d11)
303  + c00 * d10 * (c21 * d10 + 2 * c20 * d11)
304  -2 * c00 * d00 * (c21 * d20 + c20 * d21)
305  + c10 * d00 * (2 * c11 * d20 + c10 * d21)
306  - c20 * d00 * (2 * c21 * d00 - c10 * d11)
307  - d00 * d10 * (c11 * c20 + c10 * c21);
308  */
309 
310  const double h1 = c00 * d21 * (2 * c00 * d20 - c10 * d10)
311  - c00 * d20 * (c11 * d10 + c10 * d11)
312  + c00 * d10 * (c21 * d10 + 2 * c20 * d11)
313  - 2 * c00 * d00 * (c21 * d20 + c20 * d21)
314  + c10 * d00 * (2 * c11 * d20 + c10 * d21)
315  + c20 * d00 * (2 * c21 * d00 - c10 * d11)
316  - d00 * d10 * (c11 * c20 + c10 * c21);
317 
318  const double h0 = c00 * c00 * d20 * d20
319  + c10 * d20 * (c10 * d00 - c00 * d10)
320  + c20 * d10 * (c00 * d10 - c10 * d00)
321  + c20 * d00 * (c20 * d00 - 2 * c00 * d20);
322 
323  if (m_debug) {
324  std::cout << "h4 : " << h4 << "\n";
325  std::cout << "h3 : " << h3 << "\n";
326  std::cout << "h2 : " << h2 << "\n";
327  std::cout << "h1 : " << h1 << "\n";
328  std::cout << "h0 : " << h0 << "\n";
329 
330  std::cout << "Messy Calculate Over\n";
331 
332  //function is h0 pvx ^4 + h1 pvx ^3 + h2 pvx ^2 + h3 pvx + h4
333 
334  std::cout << "gnuplot command\n";
335 
336  std::stringstream s;
337  s << h0 / h0 << "*x*x*x*x + " <<
338  h1 / h0 << "*x*x*x + " <<
339  h2 / h0 << "*x*x + " <<
340  h3 / h0 << "*x + " << h4 / h0;
341 
342  std::string fn = s.str();
343 
344  std::cout << "plot " << fn << "\n";
345  }
346 
347  std::vector<double> pvxs = solveQuartic(h0, h1, h2, h3, h4);
348 
349  if (m_debug) {
350  std::cout << "--------------------------\n";
351  std::cout << "Kinematic Solutions\n";
352  }
353 
354  int num = 0;
355 
356  for (std::vector<double>::const_iterator it = pvxs.begin(); it != pvxs.end(); ++it, ++num) {
357  double pvx = *it;
358 
359  double pvbarx = me_mex - *it;
360 
361  double c0 = c00;
362  double d0 = d00;
363 
364  double c1 = c10 * pvx + c11;
365  double c2 = c20 * pvx * pvx + c21 * pvx + c22;
366 
367  double d1 = d10 * pvx + d11;
368  double d2 = d20 * pvx * pvx + d21 * pvx + d22;
369 
370  double pvy = (c0 * d2 - c2 * d0) / (c1 * d0 - c0 * d1);
371  double pvbary = me_mey - pvy;
372 
373  double pvz = (a1 + a2 * pvx + a3 * pvy) / (-a4);
374  double pvbarz = (b1 + b2 * pvbarx + b3 * pvbary) / (-b4);
375 
376  double pvE = sqrt(pvx * pvx + pvy * pvy + pvz * pvz);
377  double pvbarE = sqrt(pvbarx * pvbarx + pvbary * pvbary + pvbarz * pvbarz);
378 
379  TLorentzVector tlv1(pvx, pvy, pvz, pvE);
380  TLorentzVector tlv2(pvbarx, pvbary, pvbarz, pvbarE);
381 
382  if (m_debug) {
383  std::cout << "Solution " << num << "\n";
384  std::cout << tlv1 << std::endl;
385  std::cout << tlv2 << std::endl;
386  std::cout << "----------" << "\n";
387  }
388 
389  std::pair<TLorentzVector, TLorentzVector> p(tlv1, tlv2);
390 
391  lvs.push_back(p);
392  }
393 
394  if (m_debug) std::cout << "Finished Kinematic Solution" << "\n";
395 
396  return lvs;
397  }
398 
399  std::vector<double> SonnenscheinEngine::solveQuartic(double h0, double h1, double h2, double h3, double h4) const {
400  if (m_debug) std::cout << "Solve Quartic\n";
401 
402  //normalise to coefficient of highest order.
403  const double nh1 = h1 / h0;
404  const double nh2 = h2 / h0;
405  const double nh3 = h3 / h0;
406  const double nh4 = h4 / h0;
407 
408  //calculate variables
409  const double k1 = nh2 - 3 * nh1 * nh1 / 8.;
410  const double k2 = nh3 + nh1 * nh1 * nh1 / 8. - nh1 * nh2 / 2.;
411  const double k3 = nh4 - 3 * pow(nh1, 4) / 256. + nh1 * nh1 * nh2 / 16. - nh1 * nh3 / 4.;
412 
413  if (m_debug) {
414  std::cout << "e " << k1 << "\n";
415  std::cout << "f " << k2 << "\n";
416  std::cout << "g " << k3 << "\n";
417  }
418 
419  std::vector<double> sols = solveCubic(2. * k1, k1 * k1 - 4. * k3, -k2 * k2);
420 
421  //using the solutions from above...
422  double t1 = -1.;
423 
424  for (std::vector<double>::const_iterator it = sols.begin(); it != sols.end(); ++it) {
425  if (*it > 0.) t1 = sqrt(*it);
426  }
427 
428  //we just need one positive root to get the other roots...
429 
430  double t2 = (k1 + t1 * t1 - k2 / t1) / 2.;
431 
432  if (m_debug) std::cout << "first quadratic\n";
433 
434  std::vector<double> s1 = solveQuadratic(1., t1, t2);
435 
436  std::vector<double> pvxs;
437 
438  for (std::vector<double>::const_iterator it = s1.begin(); it != s1.end(); ++it) {
439  if (m_debug) std::cout << "pvx " << *it - nh1 / 4. << "\n";
440 
441  pvxs.push_back(*it - nh1 / 4.);
442  }
443 
444  //now use the other quadratic
445  if (m_debug) std::cout << "second quadratic\n";
446 
447  std::vector<double> s2 = solveQuadratic(1., -t1, k3 / t2);
448 
449  for (std::vector<double>::const_iterator it = s2.begin(); it != s2.end(); ++it) {
450  if (m_debug) std::cout << "pvx " << *it - nh1 / 4. << "\n";
451 
452  pvxs.push_back(*it - nh1 / 4.);
453  }
454 
455  return pvxs;
456  }
457 
458  std::vector<double> SonnenscheinEngine::solveCubic(double s1, double s2, double s3) const {
459  std::vector<double> sols;
460 
461  const double q = (s1 * s1 - 3 * s2) / 9.;
462  const double r = (2 * s1 * s1 * s1 - 9 * s1 * s2 + 27 * s3) / 54.;
463 
464  if (m_debug) {
465  std::cout << "Solve Cubic\n";
466  std::cout << "q " << q << "\n";
467  std::cout << "r " << r << "\n";
468  }
469 
470  if (r * r < q * q * q) {
471  const double theta = acos(r / sqrt(q * q * q));
472  const double z1_1 = -2 * sqrt(q) * cos(theta / 3.) - s1 / 3.;
473  const double z1_2 = -2 * sqrt(q) * cos((theta + 2 * M_PI) / 3.) - s1 / 3.;
474  const double z1_3 = -2 * sqrt(q) * cos((theta - 2 * M_PI) / 3.) - s1 / 3.;
475 
476  if (m_debug) {
477  std::cout << "r^2 < q^3 -> 3 solutions\n";
478  std::cout << "z1_1 " << z1_1 << "\n";
479  std::cout << "z1_2 " << z1_2 << "\n";
480  std::cout << "z1_3 " << z1_3 << "\n";
481  }
482 
483  sols.push_back(z1_1);
484  sols.push_back(z1_2);
485  sols.push_back(z1_3);
486  } else {
487  if (m_debug) std::cout << "r^2 >= q^3 -> 1 solution" << "\n";
488 
489  const double radicant = -r + sqrt(r * r - q * q * q);
490  const double powthrd = pow(fabs(radicant), 1. / 3.);
491  const double a = sign(radicant) * powthrd; //sign??
492  //double b = (a!=0.) ? q/a : 0.;
493  const double b = q / a;
494 
495  const double z1_1 = a + b - s1 / 3.;
496  //std::cout << "z1_1 " << z1_1 << "\n";
497 
498  sols.push_back(z1_1);
499  }
500 
501  return sols;
502  }
503 
504  std::vector<double> SonnenscheinEngine::solveQuadratic(double a, double b, double c) const {
505  std::vector<double> sols;
506 
507  if (m_debug) std::cout << "Solve Quadratic\n";
508 
509  const double b2m4ac = b * b - 4. * a * c;
510 
511  if (b2m4ac > 0.) {
512  const double sol1 = (-b + sqrt(b2m4ac)) / 2. * a;
513  const double sol2 = (-b - sqrt(b2m4ac)) / 2. * a;
514 
515  if (m_debug) {
516  std::cout << "Quadratic sol1 : " << sol1 << "\n";
517  std::cout << "Quadratic sol2 : " << sol2 << "\n";
518  }
519 
520  sols.push_back(sol1);
521  sols.push_back(sol2);
522  } else if (m_debug) std::cout << "Quadratic has no solutions\n";
523 
524  return sols;
525  }
526 
527  double SonnenscheinEngine::sign(double a) const {
528  return (a < 0) ? -1 : (a > 0) ? 1 : 0;
529  }
530 }
beamspotman.r
def r
Definition: beamspotman.py:676
TileDCSDataPlotter.h0
h0
Definition: TileDCSDataPlotter.py:873
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
top
TopConfig A simple configuration that is NOT a singleton.
Definition: AnalysisTrackingHelper.cxx:58
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
keylayer_zslicemap.pb
pb
Definition: keylayer_zslicemap.py:188
top::SonnenscheinEngine::solveQuadratic
std::vector< double > solveQuadratic(double a, double b, double c) const
Another Ronseal (google it) of a function.
Definition: SonnenscheinEngine.cxx:504
top::SonnenscheinEngine::solve
std::vector< std::pair< TLorentzVector, TLorentzVector > > solve(const TLorentzVector &me_t_lp, const TLorentzVector &me_t_b, double mass_t, double mass_wp, const TLorentzVector &me_tbar_lm, const TLorentzVector &me_tbar_bbar, double mass_tbar, double mass_wm, double me_mex, double me_mey) const
Does the real work.
Definition: SonnenscheinEngine.cxx:20
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
extractSporadic.c1
c1
Definition: extractSporadic.py:134
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
ALFA_EventTPCnv_Dict::t1
std::vector< ALFA_RawDataCollection_p1 > t1
Definition: ALFA_EventTPCnvDict.h:43
skel.it
it
Definition: skel.GENtoEVGEN.py:423
M_PI
#define M_PI
Definition: ActiveFraction.h:11
SonnenscheinEngine.h
dq_defect_virtual_defect_validation.d1
d1
Definition: dq_defect_virtual_defect_validation.py:79
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
read_hist_ntuple.h1
h1
Definition: read_hist_ntuple.py:21
top::SonnenscheinEngine::solveQuartic
std::vector< double > solveQuartic(double h0, double h1, double h2, double h3, double h4) const
Solve a quartic.
Definition: SonnenscheinEngine.cxx:399
Powheg_tt_mtop_common.mass_t
mass_t
Definition: Powheg_tt_mtop_common.py:107
hotSpotInTAG.c0
c0
Definition: hotSpotInTAG.py:192
python.getCurrentFolderTag.fn
fn
Definition: getCurrentFolderTag.py:65
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
top::SonnenscheinEngine::m_debug
bool m_debug
Print a load of debug information (probably not by default, right)?
Definition: SonnenscheinEngine.h:94
Event.h
trigbs_pickEvents.num
num
Definition: trigbs_pickEvents.py:76
ReadCellNoiseFromCoolCompare.s3
s3
Definition: ReadCellNoiseFromCoolCompare.py:380
top::SonnenscheinEngine::SonnenscheinEngine
SonnenscheinEngine()
Does nothing except sets the default flag to false.
Definition: SonnenscheinEngine.cxx:14
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
compileRPVLLRates.c2
c2
Definition: compileRPVLLRates.py:361
top::SonnenscheinEngine::solveCubic
std::vector< double > solveCubic(double s1, double s2, double s3) const
Solves a cubic.
Definition: SonnenscheinEngine.cxx:458
top::SonnenscheinEngine::sign
double sign(double a) const
Is a number positive or negative.
Definition: SonnenscheinEngine.cxx:527
ALFA_EventTPCnv_Dict::t2
std::vector< ALFA_RawDataContainer_p1 > t2
Definition: ALFA_EventTPCnvDict.h:44
a
TList * a
Definition: liststreamerinfos.cxx:10
TRT_PAI_physicsConstants::mb
const double mb
1mb to cm2
Definition: TRT_PAI_physicsConstants.h:15
dq_defect_virtual_defect_validation.d2
d2
Definition: dq_defect_virtual_defect_validation.py:81
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
ReadNoiseFromCool.plp
plp
Definition: ReadNoiseFromCool.py:110
extractSporadic.q
list q
Definition: extractSporadic.py:98
top::SonnenscheinEngine::~SonnenscheinEngine
~SonnenscheinEngine()
Does nothing.
Definition: SonnenscheinEngine.cxx:17
python.compressB64.c
def c
Definition: compressB64.py:93