Belle II Software development
ROEVariables.h
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#pragma once
10
11#include <analysis/VariableManager/Manager.h>
12
13#include <analysis/dataobjects/RestOfEvent.h>
14
15#include <Math/Vector4D.h>
16
17#include <string>
18#include <vector>
19#include <set>
20
21namespace Belle2 {
26 class MCParticle;
27 class Particle;
28
29 namespace Variable {
30
35 bool isInRestOfEvent(const Particle* particle);
39 bool isCloneOfSignalSide(const Particle* particle);
40
44 bool hasAncestorFromSignalSide(const Particle* particle);
45
50 double printROE(const Particle* particle);
51
56 bool hasCorrectROECombination(const Particle* particle);
57
61 int nRemainingTracksInROE(const Particle* particle, const std::string& maskName = RestOfEvent::c_defaultMaskName);
62
66 Manager::FunctionPtr nROE_RemainingTracksWithMask(const std::vector<std::string>& arguments);
67
71 Manager::FunctionPtr useROERecoilFrame(const std::vector<std::string>& arguments);
72
76 int nROE_RemainingTracks(const Particle* particle);
77
81 int nROE_KLMClusters(const Particle* particle);
82
86 double ROE_MC_E(const Particle* particle);
87
91 double ROE_MC_M(const Particle* particle);
92
96 double ROE_MC_P(const Particle* particle);
97
101 double ROE_MC_Px(const Particle* particle);
102
106 double ROE_MC_Py(const Particle* particle);
107
111 double ROE_MC_Pz(const Particle* particle);
112
116 double ROE_MC_Pt(const Particle* particle);
117
121 double ROE_MC_PTheta(const Particle* particle);
122
126 Manager::FunctionPtr ROE_MC_MissingFlags(const std::vector<std::string>& arguments);
127
131 Manager::FunctionPtr nROE_Tracks(const std::vector<std::string>& arguments);
132
136 Manager::FunctionPtr nROE_ECLClusters(const std::vector<std::string>& arguments);
137
141 Manager::FunctionPtr nROE_NeutralECLClusters(const std::vector<std::string>& arguments);
142
146 Manager::FunctionPtr nROE_ChargedParticles(const std::vector<std::string>& arguments);
147
151 Manager::FunctionPtr nROE_Photons(const std::vector<std::string>& arguments);
152
156 Manager::FunctionPtr nROE_NeutralHadrons(const std::vector<std::string>& arguments);
157
161 Manager::FunctionPtr nROE_Composites(const std::vector<std::string>& arguments);
162
167 Manager::FunctionPtr nROE_ParticlesInList(const std::vector<std::string>& arguments);
168
172 Manager::FunctionPtr ROE_Charge(const std::vector<std::string>& arguments);
173
177 Manager::FunctionPtr ROE_ExtraEnergy(const std::vector<std::string>& arguments);
178
182 Manager::FunctionPtr ROE_NeutralExtraEnergy(const std::vector<std::string>& arguments);
183
187 Manager::FunctionPtr ROE_E(const std::vector<std::string>& arguments);
188
192 Manager::FunctionPtr ROE_M(const std::vector<std::string>& arguments);
193
197 Manager::FunctionPtr ROE_P(const std::vector<std::string>& arguments);
198
202 Manager::FunctionPtr ROE_Px(const std::vector<std::string>& arguments);
203
207 Manager::FunctionPtr ROE_Py(const std::vector<std::string>& arguments);
208
212 Manager::FunctionPtr ROE_Pz(const std::vector<std::string>& arguments);
213
217 Manager::FunctionPtr ROE_Pt(const std::vector<std::string>& arguments);
218
222 Manager::FunctionPtr ROE_PTheta(const std::vector<std::string>& arguments);
223
227 Manager::FunctionPtr ROE_DeltaE(const std::vector<std::string>& arguments);
228
232 Manager::FunctionPtr ROE_Mbc(const std::vector<std::string>& arguments);
233
239 Manager::FunctionPtr WE_DeltaE(const std::vector<std::string>& arguments);
240
246 Manager::FunctionPtr WE_Mbc(const std::vector<std::string>& arguments);
247
252 Manager::FunctionPtr WE_MissM2(const std::vector<std::string>& arguments);
253
258 Manager::FunctionPtr WE_MissPTheta(const std::vector<std::string>& arguments);
259
264 Manager::FunctionPtr WE_MissP(const std::vector<std::string>& arguments);
265
270 Manager::FunctionPtr WE_MissPx(const std::vector<std::string>& arguments);
271
276 Manager::FunctionPtr WE_MissPy(const std::vector<std::string>& arguments);
277
282 Manager::FunctionPtr WE_MissPz(const std::vector<std::string>& arguments);
283
288 Manager::FunctionPtr WE_MissE(const std::vector<std::string>& arguments);
289
293 Manager::FunctionPtr ROE_xiZ(const std::vector<std::string>& arguments);
294
301 Manager::FunctionPtr WE_cosThetaEll(const std::vector<std::string>& arguments);
302
306 Manager::FunctionPtr passesROEMask(const std::vector<std::string>& arguments);
307
312 Manager::FunctionPtr WE_MissM2OverMissE(const std::vector<std::string>& arguments);
313
319 Manager::FunctionPtr WE_q2lnuSimple(const std::vector<std::string>& arguments);
320
327 Manager::FunctionPtr WE_q2lnu(const std::vector<std::string>& arguments);
328
340 Manager::FunctionPtr pi0Prob(const std::vector<std::string>& arguments);
341
353 Manager::FunctionPtr etaProb(const std::vector<std::string>& arguments);
354
355
356 // ------------------------------------------------------------------------------
357 // Below are some functions for ease of usage, they are not a part of variables
358 // ------------------------------------------------------------------------------
359
372 ROOT::Math::PxPyPzEVector missing4Vector(const Particle* particle, const std::string& maskName, const std::string& opt);
373
377 void checkMCParticleMissingFlags(const MCParticle* mcp, std::set<const MCParticle*> ROE_MCObjects, int& missingFlags);
378
384 bool isInThisRestOfEvent(const Particle* particle, const RestOfEvent* roe,
385 const std::string& maskName = RestOfEvent::c_defaultMaskName);
386
387
391 Manager::FunctionPtr bssMassDifference(const std::vector<std::string>& arguments);
395 const RestOfEvent* getRelatedROEObject(const Particle* particle, bool returnHostOnly = false);
396 }
398} // Belle2 namespace
399
static constexpr const char * c_defaultMaskName
Default mask name.
Definition: RestOfEvent.h:60
std::function< VarVariant(const Particle *)> FunctionPtr
functions stored take a const Particle* and return VarVariant.
Definition: Manager.h:112
Abstract base class for different kinds of events.