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