Belle II Software  release-06-01-15
OrcaKinFitVariables.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #include <analysis/variables/OrcaKinFitVariables.h>
10 
11 #include <analysis/VariableManager/Manager.h>
12 #include <analysis/dataobjects/Particle.h>
13 
14 #include <framework/logging/Logger.h>
15 
16 using namespace std;
17 
18 namespace Belle2 {
23  namespace Variable {
24 
25  // Chi2 and Prob -------------------------------------------
26  double OrcaKinFitChi2(const Particle* part)
27  {
28  if (part->hasExtraInfo("OrcaKinFitChi2")) return part->getExtraInfo("OrcaKinFitChi2");
29  else {
30  B2WARNING("The ExtraInfo 'OrcaKinFitChi2' not found!");
31  return std::numeric_limits<double>::quiet_NaN();
32  }
33  }
34 
35  double OrcaKinFitProb(const Particle* part)
36  {
37  if (part->hasExtraInfo("OrcaKinFitProb")) return part->getExtraInfo("OrcaKinFitProb");
38  else {
39  B2WARNING("The ExtraInfo 'OrcaKinFitProb' not found!");
40  return std::numeric_limits<double>::quiet_NaN();
41  }
42  }
43 
44  double ErrorCode(const Particle* part)
45  {
46  if (part->hasExtraInfo("OrcaKinFitErrorCode")) return part->getExtraInfo("OrcaKinFitErrorCode");
47  else {
48  B2WARNING("The ExtraInfo 'OrcaKinFitErrorCode' not found!");
49  return std::numeric_limits<double>::quiet_NaN();
50  }
51  }
52 
53 
54  // For 1C fit ------------------------------------------------------------
55  double UnmeasuredTheta(const Particle* part)
56  {
57  if (part->hasExtraInfo("OrcaKinFitUnmeasuredTheta")) return part->getExtraInfo("OrcaKinFitUnmeasuredTheta");
58  else {
59  B2WARNING("The ExtraInfo 'OrcaKinFitUnmeasuredTheta' not found!");
60  return std::numeric_limits<double>::quiet_NaN();
61  }
62  }
63 
64  double UnmeasuredPhi(const Particle* part)
65  {
66  if (part->hasExtraInfo("OrcaKinFitUnmeasuredPhi")) return part->getExtraInfo("OrcaKinFitUnmeasuredPhi");
67  else {
68  B2WARNING("The ExtraInfo 'OrcaKinFitUnmeasuredPhi' not found!");
69  return std::numeric_limits<double>::quiet_NaN();
70  }
71  }
72 
73  double UnmeasuredE(const Particle* part)
74  {
75  if (part->hasExtraInfo("OrcaKinFitUnmeasuredE")) return part->getExtraInfo("OrcaKinFitUnmeasuredE");
76  else {
77  B2WARNING("The ExtraInfo 'OrcaKinFitUnmeasuredE' not found!");
78  return std::numeric_limits<double>::quiet_NaN();
79  }
80  }
81 
82  double UnmeasuredErrorTheta(const Particle* part)
83  {
84  if (part->hasExtraInfo("OrcaKinFitUnmeasuredErrorTheta")) return part->getExtraInfo("OrcaKinFitUnmeasuredErrorTheta");
85  else {
86  B2WARNING("The ExtraInfo 'OrcaKinFitUnmeasuredErrorTheta' not found!");
87  return std::numeric_limits<double>::quiet_NaN();
88  }
89  }
90 
91  double UnmeasuredErrorPhi(const Particle* part)
92  {
93  if (part->hasExtraInfo("OrcaKinFitUnmeasuredErrorPhi")) return part->getExtraInfo("OrcaKinFitUnmeasuredErrorPhi");
94  else {
95  B2WARNING("The ExtraInfo 'OrcaKinFitUnmeasuredErrorPhi' not found!");
96  return std::numeric_limits<double>::quiet_NaN();
97  }
98  }
99 
100  double UnmeasuredErrorE(const Particle* part)
101  {
102  if (part->hasExtraInfo("OrcaKinFitUnmeasuredErrorE")) return part->getExtraInfo("OrcaKinFitUnmeasuredErrorE");
103  else {
104  B2WARNING("The ExtraInfo 'OrcaKinFitUnmeasuredErrorE' not found!");
105  return std::numeric_limits<double>::quiet_NaN();
106  }
107  }
108 
109 
110  VARIABLE_GROUP("OrcaKinFit");
111  REGISTER_VARIABLE("OrcaKinFitChi2", OrcaKinFitChi2, R"DOC(
112 The :math:`\chi^2` returned by the Orca kinematic fitter.
113 Returns NaN if Orca was not run.
114 
115 .. warning:: this is the raw :math:`\chi^2`, not over ndf.
116 
117 .. seealso:: :ref:`kinfit`
118  )DOC");
119  REGISTER_VARIABLE("OrcaKinFitProb", OrcaKinFitProb, R"DOC(
120 The p-value returned by the Orca kinematic fitter.
121 Returns NaN if Orca was not run.
122 
123 .. seealso:: :ref:`kinfit`
124  )DOC");
125  // TODO: explan the actual error codes
126  REGISTER_VARIABLE("OrcaKinFitErrorCode", ErrorCode, R"DOC(
127 The error code returned by the Orca kinematic fitter.
128 Returns NaN if Orca was not run.
129 
130 .. seealso:: :ref:`kinfit`
131  )DOC");
132  REGISTER_VARIABLE("OrcaKinFitUnmeasuredTheta", UnmeasuredTheta, R"DOC(
133 The polar angle of the "unmeasured photon" returned by Orca kinematic fitter for specific 1C fits with the ``addUnmeasuredPhoton`` parameter set.
134 I.e. for fits with sufficient constraints remaining to constrain a missing 3-vector.
135 Returns NaN if Orca was not run or if the ``addUnmeasuredPhoton`` parameter was not set.
136 
137 .. seealso:: :ref:`kinfit`
138  )DOC");
139  REGISTER_VARIABLE("OrcaKinFitUnmeasuredPhi", UnmeasuredPhi, R"DOC(
140 The azimuthal angle of the "unmeasured photon" returned by Orca kinematic fitter for specific 1C fits with the ``addUnmeasuredPhoton`` parameter set.
141 I.e. for fits with sufficient constraints remaining to constrain a missing 3-vector.
142 Returns NaN if Orca was not run or if the ``addUnmeasuredPhoton`` parameter was not set.
143 
144 .. seealso:: :ref:`kinfit`
145  )DOC");
146  REGISTER_VARIABLE("OrcaKinFitUnmeasuredE", UnmeasuredE, R"DOC(
147 The energy of the "unmeasured photon" returned by Orca kinematic fitter for specific 1C fits with the ``addUnmeasuredPhoton`` parameter set.
148 I.e. for fits with sufficient constraints remaining to constrain a missing 3-vector.
149 Returns NaN if Orca was not run or if the ``addUnmeasuredPhoton`` parameter was not set.
150 
151 .. seealso:: :ref:`kinfit`
152  )DOC");
153  REGISTER_VARIABLE("OrcaKinFitUnmeasuredErrorTheta", UnmeasuredErrorTheta,
154  "The uncertainty on :b2:var:`OrcaKinFitUnmeasuredTheta`.");
155  REGISTER_VARIABLE("OrcaKinFitUnmeasuredErrorPhi", UnmeasuredErrorPhi, "The uncertainty on :b2:var:`OrcaKinFitUnmeasuredPhi`.");
156  REGISTER_VARIABLE("OrcaKinFitUnmeasuredErrorE", UnmeasuredErrorE, "The uncertainty on :b2:var:`OrcaKinFitUnmeasuredE`.");
157  }
159 }
Abstract base class for different kinds of events.