10 #include <klm/dataobjects/KLMMuidLikelihood.h>
13 #include <analysis/dataobjects/Particle.h>
14 #include <analysis/VariableManager/Manager.h>
15 #include <mdst/dataobjects/Track.h>
27 KLMMuidLikelihood* getMuid(
const Particle* particle)
29 const Track* track = particle->getTrack();
32 return track->getRelatedTo<KLMMuidLikelihood>();
36 double muidMuonProbability(
const Particle* particle)
38 KLMMuidLikelihood* muid = getMuid(particle);
40 return std::numeric_limits<double>::quiet_NaN();
41 return muid->getMuonPDFValue();
45 double muidPionProbability(
const Particle* particle)
47 KLMMuidLikelihood* muid = getMuid(particle);
49 return std::numeric_limits<double>::quiet_NaN();
50 return muid->getPionPDFValue();
54 double muidKaonProbability(
const Particle* particle)
56 KLMMuidLikelihood* muid = getMuid(particle);
58 return std::numeric_limits<double>::quiet_NaN();
59 return muid->getKaonPDFValue();
63 double muidElectronProbability(
const Particle* particle)
65 KLMMuidLikelihood* muid = getMuid(particle);
67 return std::numeric_limits<double>::quiet_NaN();
68 return muid->getElectronPDFValue();
72 double muidProtonProbability(
const Particle* particle)
74 KLMMuidLikelihood* muid = getMuid(particle);
76 return std::numeric_limits<double>::quiet_NaN();
77 return muid->getProtonPDFValue();
81 double muidDeuteronProbability(
const Particle* particle)
83 KLMMuidLikelihood* muid = getMuid(particle);
85 return std::numeric_limits<double>::quiet_NaN();
86 return muid->getDeuteronPDFValue();
90 double muidMuonLogLikelihood(
const Particle* particle)
92 KLMMuidLikelihood* muid = getMuid(particle);
94 return std::numeric_limits<double>::quiet_NaN();
95 return muid->getLogL_mu();
99 double muidPionLogLikelihood(
const Particle* particle)
101 KLMMuidLikelihood* muid = getMuid(particle);
103 return std::numeric_limits<double>::quiet_NaN();
104 return muid->getLogL_pi();
108 double muidKaonLogLikelihood(
const Particle* particle)
110 KLMMuidLikelihood* muid = getMuid(particle);
112 return std::numeric_limits<double>::quiet_NaN();
113 return muid->getLogL_K();
117 double muidElectronLogLikelihood(
const Particle* particle)
119 KLMMuidLikelihood* muid = getMuid(particle);
121 return std::numeric_limits<double>::quiet_NaN();
122 return muid->getLogL_e();
126 double muidProtonLogLikelihood(
const Particle* particle)
128 KLMMuidLikelihood* muid = getMuid(particle);
130 return std::numeric_limits<double>::quiet_NaN();
131 return muid->getLogL_p();
135 double muidDeuteronLogLikelihood(
const Particle* particle)
137 KLMMuidLikelihood* muid = getMuid(particle);
139 return std::numeric_limits<double>::quiet_NaN();
140 return muid->getLogL_d();
144 double muidOutcomeExtTrack(
const Particle* particle)
146 KLMMuidLikelihood* muid = getMuid(particle);
148 return std::numeric_limits<double>::quiet_NaN();
149 return muid->getOutcome();
153 double muidChiSquared(
const Particle* particle)
155 KLMMuidLikelihood* muid = getMuid(particle);
157 return std::numeric_limits<double>::quiet_NaN();
158 return muid->getChiSquared();
162 double muidDegreesOfFreedom(
const Particle* particle)
164 KLMMuidLikelihood* muid = getMuid(particle);
166 return std::numeric_limits<double>::quiet_NaN();
167 return muid->getDegreesOfFreedom();
171 double muidEndcapExtLayer(
const Particle* particle)
173 KLMMuidLikelihood* muid = getMuid(particle);
175 return std::numeric_limits<double>::quiet_NaN();
176 return muid->getEndcapExtLayer();
180 double muidBarrelExtLayer(
const Particle* particle)
182 KLMMuidLikelihood* muid = getMuid(particle);
184 return std::numeric_limits<double>::quiet_NaN();
185 return muid->getBarrelExtLayer();
189 double muidExtLayer(
const Particle* particle)
191 KLMMuidLikelihood* muid = getMuid(particle);
193 return std::numeric_limits<double>::quiet_NaN();
194 return muid->getExtLayer();
198 double muidEndcapHitLayer(
const Particle* particle)
200 KLMMuidLikelihood* muid = getMuid(particle);
202 return std::numeric_limits<double>::quiet_NaN();
203 return muid->getEndcapHitLayer();
207 double muidBarrelHitLayer(
const Particle* particle)
209 KLMMuidLikelihood* muid = getMuid(particle);
211 return std::numeric_limits<double>::quiet_NaN();
212 return muid->getBarrelHitLayer();
216 double muidHitLayer(
const Particle* particle)
218 KLMMuidLikelihood* muid = getMuid(particle);
220 return std::numeric_limits<double>::quiet_NaN();
221 return muid->getHitLayer();
225 double muidExtLayerPattern(
const Particle* particle)
227 KLMMuidLikelihood* muid = getMuid(particle);
229 return std::numeric_limits<double>::quiet_NaN();
230 return muid->getExtLayerPattern();
234 double muidHitLayerPattern(
const Particle* particle)
236 KLMMuidLikelihood* muid = getMuid(particle);
238 return std::numeric_limits<double>::quiet_NaN();
239 return muid->getHitLayerPattern();
243 double muidTotalBarrelHits(
const Particle* particle)
245 KLMMuidLikelihood* muid = getMuid(particle);
247 return std::numeric_limits<double>::quiet_NaN();
248 return muid->getTotalBarrelHits();
252 double muidTotalEndcapHits(
const Particle* particle)
254 KLMMuidLikelihood* muid = getMuid(particle);
256 return std::numeric_limits<double>::quiet_NaN();
257 return muid->getTotalEndcapHits();
261 double muidTotalHits(
const Particle* particle)
263 return muidTotalBarrelHits(particle) + muidTotalEndcapHits(particle);
266 VARIABLE_GROUP(
"KLMMuidLikelihood calibration");
267 REGISTER_VARIABLE(
"muidMuonProbability", muidMuonProbability,
268 "[Calibration] Returns the muon probability stored in the KLMMuidLikelihood dataobject");
269 REGISTER_VARIABLE(
"muidPionProbability", muidPionProbability,
270 "[Calibration] Returns the pion probability stored in the KLMMuidLikelihood dataobject");
271 REGISTER_VARIABLE(
"muidKaonProbability", muidKaonProbability,
272 "[Calibration] Returns the kaon probability stored in the KLMMuidLikelihood dataobject");
273 REGISTER_VARIABLE(
"muidElectronProbability", muidElectronProbability,
274 "[Calibration] Returns the electron probability stored in the KLMMuidLikelihood dataobject");
275 REGISTER_VARIABLE(
"muidProtonProbability", muidProtonProbability,
276 "[Calibration] Returns the proton probability stored in the KLMMuidLikelihood dataobject");
277 REGISTER_VARIABLE(
"muidDeuteronProbability", muidDeuteronProbability,
278 "[Calibration] Returns the deuteron probability stored in the KLMMuidLikelihood dataobject");
279 REGISTER_VARIABLE(
"muidMuonLogLikelihood", muidMuonLogLikelihood,
280 "[Calibration] Returns the muon log-likelihood stored in the KLMMuidLikelihood dataobject");
281 REGISTER_VARIABLE(
"muidPionLogLikelihood", muidPionLogLikelihood,
282 "[Calibration] Returns the pion log-likelihood stored in the KLMMuidLikelihood dataobject");
283 REGISTER_VARIABLE(
"muidKaonLogLikelihood", muidKaonLogLikelihood,
284 "[Calibration] Returns the kaon log-likelihood stored in the KLMMuidLikelihood dataobject");
285 REGISTER_VARIABLE(
"muidElectronLogLikelihood", muidElectronLogLikelihood,
286 "[Calibration] Returns the electron log-likelihood stored in the KLMMuidLikelihood dataobject");
287 REGISTER_VARIABLE(
"muidProtonLogLikelihood", muidProtonLogLikelihood,
288 "[Calibration] Returns the proton log-likelihood stored in the KLMMuidLikelihood dataobject");
289 REGISTER_VARIABLE(
"muidDeuteronLogLikelihood", muidDeuteronLogLikelihood,
290 "[Calibration] Returns the deuteron log-likelihood stored in the KLMMuidLikelihood dataobject");
291 REGISTER_VARIABLE(
"muidOutcomeExtTrack", muidOutcomeExtTrack,
292 "[Calibration] Returns outcome of muon extrapolation (see MuidElementNumbers for the complete list of the outcome values)");
293 REGISTER_VARIABLE(
"muidChiSquared", muidChiSquared,
294 "[Calibration] Returns chi-squared for this extrapolation");
295 REGISTER_VARIABLE(
"muidDegreesOfFreedom", muidDegreesOfFreedom,
296 "[Calibration] Returns number of degrees of freedom in chi-squared calculation");
297 REGISTER_VARIABLE(
"muidEndcapExtLayer", muidEndcapExtLayer,
298 "[Calibration] Returns outermost EKLM layer crossed by track during extrapolation");
299 REGISTER_VARIABLE(
"muidBarrelExtLayer", muidBarrelExtLayer,
300 "[Calibration] Returns outermost BKLM layer crossed by track during extrapolation");
301 REGISTER_VARIABLE(
"muidExtLayer", muidExtLayer,
302 "[Calibration] Returns outermost BKLM or EKLM layer crossed by track during extrapolation");
303 REGISTER_VARIABLE(
"muidEndcapHitLayer", muidEndcapHitLayer,
"[Calibration] Returns outermost EKLM layer with a matching hit");
304 REGISTER_VARIABLE(
"muidBarrelHitLayer", muidBarrelHitLayer,
"[Calibration] Returns outermost BKLM layer with a matching hit");
305 REGISTER_VARIABLE(
"muidHitLayer", muidHitLayer,
"[Calibration] Return outermost BKLM or EKLM layer with a matching hit");
306 REGISTER_VARIABLE(
"muidExtLayerPattern", muidExtLayerPattern,
307 "[Calibration] Returns layer-crossing bit pattern during extrapolation");
308 REGISTER_VARIABLE(
"muidHitLayerPattern", muidHitLayerPattern,
"[Calibration] Returns matching-hit bit pattern");
309 REGISTER_VARIABLE(
"muidTotalBarrelHits", muidTotalBarrelHits,
"[Calibration] Returns total number of matching BKLM hits");
310 REGISTER_VARIABLE(
"muidTotalEndcapHits", muidTotalEndcapHits,
"[Calibration] Returns total number of matching EKLM hits");
311 REGISTER_VARIABLE(
"muidTotalHits", muidTotalHits,
"[Calibration] Returns total number of matching KLM hits");
Abstract base class for different kinds of events.