12 #include <klm/dataobjects/KLMMuidLikelihood.h>
15 #include <analysis/dataobjects/Particle.h>
16 #include <analysis/VariableManager/Manager.h>
17 #include <mdst/dataobjects/Track.h>
29 KLMMuidLikelihood* getMuid(
const Particle* particle)
31 const Track* track = particle->getTrack();
34 return track->getRelatedTo<KLMMuidLikelihood>();
38 double muidMuonProbability(
const Particle* particle)
40 KLMMuidLikelihood* muid = getMuid(particle);
42 return std::numeric_limits<double>::quiet_NaN();
43 return muid->getMuonPDFValue();
47 double muidPionProbability(
const Particle* particle)
49 KLMMuidLikelihood* muid = getMuid(particle);
51 return std::numeric_limits<double>::quiet_NaN();
52 return muid->getPionPDFValue();
56 double muidKaonProbability(
const Particle* particle)
58 KLMMuidLikelihood* muid = getMuid(particle);
60 return std::numeric_limits<double>::quiet_NaN();
61 return muid->getKaonPDFValue();
65 double muidElectronProbability(
const Particle* particle)
67 KLMMuidLikelihood* muid = getMuid(particle);
69 return std::numeric_limits<double>::quiet_NaN();
70 return muid->getElectronPDFValue();
74 double muidProtonProbability(
const Particle* particle)
76 KLMMuidLikelihood* muid = getMuid(particle);
78 return std::numeric_limits<double>::quiet_NaN();
79 return muid->getProtonPDFValue();
83 double muidDeuteronProbability(
const Particle* particle)
85 KLMMuidLikelihood* muid = getMuid(particle);
87 return std::numeric_limits<double>::quiet_NaN();
88 return muid->getDeuteronPDFValue();
92 double muidMuonLogLikelihood(
const Particle* particle)
94 KLMMuidLikelihood* muid = getMuid(particle);
96 return std::numeric_limits<double>::quiet_NaN();
97 return muid->getLogL_mu();
101 double muidPionLogLikelihood(
const Particle* particle)
103 KLMMuidLikelihood* muid = getMuid(particle);
105 return std::numeric_limits<double>::quiet_NaN();
106 return muid->getLogL_pi();
110 double muidKaonLogLikelihood(
const Particle* particle)
112 KLMMuidLikelihood* muid = getMuid(particle);
114 return std::numeric_limits<double>::quiet_NaN();
115 return muid->getLogL_K();
119 double muidElectronLogLikelihood(
const Particle* particle)
121 KLMMuidLikelihood* muid = getMuid(particle);
123 return std::numeric_limits<double>::quiet_NaN();
124 return muid->getLogL_e();
128 double muidProtonLogLikelihood(
const Particle* particle)
130 KLMMuidLikelihood* muid = getMuid(particle);
132 return std::numeric_limits<double>::quiet_NaN();
133 return muid->getLogL_p();
137 double muidDeuteronLogLikelihood(
const Particle* particle)
139 KLMMuidLikelihood* muid = getMuid(particle);
141 return std::numeric_limits<double>::quiet_NaN();
142 return muid->getLogL_d();
146 double muidOutcomeExtTrack(
const Particle* particle)
148 KLMMuidLikelihood* muid = getMuid(particle);
150 return std::numeric_limits<double>::quiet_NaN();
151 return muid->getOutcome();
155 double muidChiSquared(
const Particle* particle)
157 KLMMuidLikelihood* muid = getMuid(particle);
159 return std::numeric_limits<double>::quiet_NaN();
160 return muid->getChiSquared();
164 double muidDegreesOfFreedom(
const Particle* particle)
166 KLMMuidLikelihood* muid = getMuid(particle);
168 return std::numeric_limits<double>::quiet_NaN();
169 return muid->getDegreesOfFreedom();
173 double muidEndcapExtLayer(
const Particle* particle)
175 KLMMuidLikelihood* muid = getMuid(particle);
177 return std::numeric_limits<double>::quiet_NaN();
178 return muid->getEndcapExtLayer();
182 double muidBarrelExtLayer(
const Particle* particle)
184 KLMMuidLikelihood* muid = getMuid(particle);
186 return std::numeric_limits<double>::quiet_NaN();
187 return muid->getBarrelExtLayer();
191 double muidExtLayer(
const Particle* particle)
193 KLMMuidLikelihood* muid = getMuid(particle);
195 return std::numeric_limits<double>::quiet_NaN();
196 return muid->getExtLayer();
200 double muidEndcapHitLayer(
const Particle* particle)
202 KLMMuidLikelihood* muid = getMuid(particle);
204 return std::numeric_limits<double>::quiet_NaN();
205 return muid->getEndcapHitLayer();
209 double muidBarrelHitLayer(
const Particle* particle)
211 KLMMuidLikelihood* muid = getMuid(particle);
213 return std::numeric_limits<double>::quiet_NaN();
214 return muid->getBarrelHitLayer();
218 double muidHitLayer(
const Particle* particle)
220 KLMMuidLikelihood* muid = getMuid(particle);
222 return std::numeric_limits<double>::quiet_NaN();
223 return muid->getHitLayer();
227 double muidExtLayerPattern(
const Particle* particle)
229 KLMMuidLikelihood* muid = getMuid(particle);
231 return std::numeric_limits<double>::quiet_NaN();
232 return muid->getExtLayerPattern();
236 double muidHitLayerPattern(
const Particle* particle)
238 KLMMuidLikelihood* muid = getMuid(particle);
240 return std::numeric_limits<double>::quiet_NaN();
241 return muid->getHitLayerPattern();
245 double muidTotalBarrelHits(
const Particle* particle)
247 KLMMuidLikelihood* muid = getMuid(particle);
249 return std::numeric_limits<double>::quiet_NaN();
250 return muid->getTotalBarrelHits();
254 double muidTotalEndcapHits(
const Particle* particle)
256 KLMMuidLikelihood* muid = getMuid(particle);
258 return std::numeric_limits<double>::quiet_NaN();
259 return muid->getTotalEndcapHits();
263 double muidTotalHits(
const Particle* particle)
265 return muidTotalBarrelHits(particle) + muidTotalEndcapHits(particle);
268 VARIABLE_GROUP(
"KLMMuidLikelihood calibration");
269 REGISTER_VARIABLE(
"muidMuonProbability", muidMuonProbability,
270 "[Calibration] Returns the muon probability stored in the KLMMuidLikelihood dataobject");
271 REGISTER_VARIABLE(
"muidPionProbability", muidPionProbability,
272 "[Calibration] Returns the pion probability stored in the KLMMuidLikelihood dataobject");
273 REGISTER_VARIABLE(
"muidKaonProbability", muidKaonProbability,
274 "[Calibration] Returns the kaon probability stored in the KLMMuidLikelihood dataobject");
275 REGISTER_VARIABLE(
"muidElectronProbability", muidElectronProbability,
276 "[Calibration] Returns the electron probability stored in the KLMMuidLikelihood dataobject");
277 REGISTER_VARIABLE(
"muidProtonProbability", muidProtonProbability,
278 "[Calibration] Returns the proton probability stored in the KLMMuidLikelihood dataobject");
279 REGISTER_VARIABLE(
"muidDeuteronProbability", muidDeuteronProbability,
280 "[Calibration] Returns the deuteron probability stored in the KLMMuidLikelihood dataobject");
281 REGISTER_VARIABLE(
"muidMuonLogLikelihood", muidMuonLogLikelihood,
282 "[Calibration] Returns the muon log-likelihood stored in the KLMMuidLikelihood dataobject");
283 REGISTER_VARIABLE(
"muidPionLogLikelihood", muidPionLogLikelihood,
284 "[Calibration] Returns the pion log-likelihood stored in the KLMMuidLikelihood dataobject");
285 REGISTER_VARIABLE(
"muidKaonLogLikelihood", muidKaonLogLikelihood,
286 "[Calibration] Returns the kaon log-likelihood stored in the KLMMuidLikelihood dataobject");
287 REGISTER_VARIABLE(
"muidElectronLogLikelihood", muidElectronLogLikelihood,
288 "[Calibration] Returns the electron log-likelihood stored in the KLMMuidLikelihood dataobject");
289 REGISTER_VARIABLE(
"muidProtonLogLikelihood", muidProtonLogLikelihood,
290 "[Calibration] Returns the proton log-likelihood stored in the KLMMuidLikelihood dataobject");
291 REGISTER_VARIABLE(
"muidDeuteronLogLikelihood", muidDeuteronLogLikelihood,
292 "[Calibration] Returns the deuteron log-likelihood stored in the KLMMuidLikelihood dataobject");
293 REGISTER_VARIABLE(
"muidOutcomeExtTrack", muidOutcomeExtTrack,
294 "[Calibration] Returns outcome of muon extrapolation (see MuidElementNumbers for the complete list of the outcome values)");
295 REGISTER_VARIABLE(
"muidChiSquared", muidChiSquared,
296 "[Calibration] Returns chi-squared for this extrapolation");
297 REGISTER_VARIABLE(
"muidDegreesOfFreedom", muidDegreesOfFreedom,
298 "[Calibration] Returns number of degrees of freedom in chi-squared calculation");
299 REGISTER_VARIABLE(
"muidEndcapExtLayer", muidEndcapExtLayer,
300 "[Calibration] Returns outermost EKLM layer crossed by track during extrapolation");
301 REGISTER_VARIABLE(
"muidBarrelExtLayer", muidBarrelExtLayer,
302 "[Calibration] Returns outermost BKLM layer crossed by track during extrapolation");
303 REGISTER_VARIABLE(
"muidExtLayer", muidExtLayer,
304 "[Calibration] Returns outermost BKLM or EKLM layer crossed by track during extrapolation");
305 REGISTER_VARIABLE(
"muidEndcapHitLayer", muidEndcapHitLayer,
"[Calibration] Returns outermost EKLM layer with a matching hit");
306 REGISTER_VARIABLE(
"muidBarrelHitLayer", muidBarrelHitLayer,
"[Calibration] Returns outermost BKLM layer with a matching hit");
307 REGISTER_VARIABLE(
"muidHitLayer", muidHitLayer,
"[Calibration] Return outermost BKLM or EKLM layer with a matching hit");
308 REGISTER_VARIABLE(
"muidExtLayerPattern", muidExtLayerPattern,
309 "[Calibration] Returns layer-crossing bit pattern during extrapolation");
310 REGISTER_VARIABLE(
"muidHitLayerPattern", muidHitLayerPattern,
"[Calibration] Returns matching-hit bit pattern");
311 REGISTER_VARIABLE(
"muidTotalBarrelHits", muidTotalBarrelHits,
"[Calibration] Returns total number of matching BKLM hits");
312 REGISTER_VARIABLE(
"muidTotalEndcapHits", muidTotalEndcapHits,
"[Calibration] Returns total number of matching EKLM hits");
313 REGISTER_VARIABLE(
"muidTotalHits", muidTotalHits,
"[Calibration] Returns total number of matching KLM hits");