Belle II Software development
RestOfEvent Class Reference

This is a general purpose class for collecting reconstructed MDST data objects that are not used in reconstruction of given Particle – referred also as Rest Of the Event. More...

#include <RestOfEvent.h>

Inheritance diagram for RestOfEvent:
RelationsInterface< BASE >

Classes

struct  Mask
 Structure of Rest of Event mask. More...
 

Public Member Functions

 RestOfEvent (int pdgCode=0, bool isNested=false, bool isFromMC=false, bool useKLMEnergy=false, bool builtWithMostLikely=false)
 Default constructor.
 
void addParticles (const std::vector< const Particle * > &particle)
 Add StoreArray indices of given Particles to the list of unused particles in the event.
 
void setPDGCode (int pdgCode)
 Sets the PDG code of the rest of event.
 
ParticleconvertToParticle (const std::string &maskName=c_defaultMaskName, int pdgCode=0, bool isSelfConjugated=true)
 Converts ROE to Particle and adds it to StoreArray.
 
int getPDGCode () const
 Gets the PDG code of the rest of event.
 
bool hasParticle (const Particle *particle, const std::string &maskName=c_defaultMaskName) const
 Check if ROE has StoreArray index of given to the list of unused tracks in the event.
 
void initializeMask (const std::string &name, const std::string &origin="unknown")
 Initialize new mask.
 
void updateMaskWithCuts (const std::string &name, const std::shared_ptr< Variable::Cut > &trackCut=nullptr, const std::shared_ptr< Variable::Cut > &eclCut=nullptr, const std::shared_ptr< Variable::Cut > &klmCut=nullptr, bool updateExisting=false)
 Update mask with cuts.
 
void excludeParticlesFromMask (const std::string &maskName, const std::vector< const Particle * > &particles, Particle::EParticleSourceObject listType, bool discard)
 Update mask by keeping or excluding particles.
 
bool hasMask (const std::string &name) const
 True if this ROE object has mask.
 
void updateMaskWithV0 (const std::string &name, const Particle *particleV0)
 Update mask with composite particle.
 
bool checkCompatibilityOfMaskAndV0 (const std::string &name, const Particle *particleV0)
 Check if V0 can be added, maybe should be moved to private.
 
bool getIsNested () const
 Returns true if the ROE is nested.
 
bool isBuiltWithMostLikely () const
 Returns true if the ROE was built with most-likely particle lists.
 
std::vector< const Particle * > getParticles (const std::string &maskName=c_defaultMaskName, bool unpackComposite=true) const
 Get all Particles from ROE mask.
 
std::vector< const Particle * > getPhotons (const std::string &maskName=c_defaultMaskName, bool unpackComposite=true) const
 Get photons from ROE mask.
 
std::vector< const Particle * > getHadrons (const std::string &maskName=c_defaultMaskName, bool unpackComposite=true) const
 Get hadrons from ROE mask.
 
std::vector< const Particle * > getChargedParticles (const std::string &maskName=c_defaultMaskName, unsigned int pdg=0, bool unpackComposite=true) const
 Get charged particles from ROE mask.
 
ROOT::Math::PxPyPzEVector get4Vector (const std::string &maskName=c_defaultMaskName) const
 Get 4-momentum vector all (no mask) or a subset (use mask) of all Tracks and ECLClusters in ROE.
 
ROOT::Math::PxPyPzEVector get4VectorNeutralECLClusters (const std::string &maskName=c_defaultMaskName) const
 Get 4-momentum vector all (no mask) or a subset (use mask) of all ECLClusters in ROE.
 
int getNTracks (const std::string &maskName=c_defaultMaskName) const
 Get number of all (no mask) or a subset (use mask) of all Tracks in ROE.
 
int getNECLClusters (const std::string &maskName=c_defaultMaskName) const
 Get number of all (no mask) or a subset (use mask) of all ECLclusters in ROE.
 
int getNKLMClusters (const std::string &maskName=c_defaultMaskName) const
 Get number of all remaining KLM clusters.
 
std::vector< std::string > getMaskNames () const
 Get vector of all mask names of the ROE object.
 
void print (const std::string &maskName=c_defaultMaskName, bool unpackComposite=true) const
 Prints the contents of a RestOfEvent object to screen.
 
void addRelationTo (const RelationsInterface< BASE > *object, float weight=1.0, const std::string &namedRelation="") const
 Add a relation from this object to another object (with caching).
 
void addRelationTo (const TObject *object, float weight=1.0, const std::string &namedRelation="") const
 Add a relation from this object to another object (no caching, can be quite slow).
 
void copyRelations (const RelationsInterface< BASE > *sourceObj)
 Copies all relations of sourceObj (pointing from or to sourceObj) to this object (including weights).
 
template<class TO >
RelationVector< TO > getRelationsTo (const std::string &name="", const std::string &namedRelation="") const
 Get the relations that point from this object to another store array.
 
template<class FROM >
RelationVector< FROM > getRelationsFrom (const std::string &name="", const std::string &namedRelation="") const
 Get the relations that point from another store array to this object.
 
template<class T >
RelationVector< T > getRelationsWith (const std::string &name="", const std::string &namedRelation="") const
 Get the relations between this object and another store array.
 
template<class TO >
TO * getRelatedTo (const std::string &name="", const std::string &namedRelation="") const
 Get the object to which this object has a relation.
 
template<class FROM >
FROM * getRelatedFrom (const std::string &name="", const std::string &namedRelation="") const
 Get the object from which this object has a relation.
 
template<class T >
T * getRelated (const std::string &name="", const std::string &namedRelation="") const
 Get the object to or from which this object has a relation.
 
template<class TO >
std::pair< TO *, float > getRelatedToWithWeight (const std::string &name="", const std::string &namedRelation="") const
 Get first related object & weight of relation pointing to an array.
 
template<class FROM >
std::pair< FROM *, float > getRelatedFromWithWeight (const std::string &name="", const std::string &namedRelation="") const
 Get first related object & weight of relation pointing from an array.
 
template<class T >
std::pair< T *, float > getRelatedWithWeight (const std::string &name="", const std::string &namedRelation="") const
 Get first related object & weight of relation pointing from/to an array.
 
virtual std::string getName () const
 Return a short name that describes this object, e.g.
 
virtual std::string getInfoHTML () const
 Return a short summary of this object's contents in HTML format.
 
std::string getInfo () const
 Return a short summary of this object's contents in raw text format.
 
std::string getArrayName () const
 Get name of array this object is stored in, or "" if not found.
 
int getArrayIndex () const
 Returns this object's array index (in StoreArray), or -1 if not found.
 

Static Public Attributes

static constexpr const char * c_defaultMaskName = "all"
 Default mask name.
 

Protected Member Functions

TClonesArray * getArrayPointer () const
 Returns the pointer to the raw DataStore array holding this object (protected since these arrays are easy to misuse).
 

Private Member Functions

bool isInParticleList (const Particle *roeParticle, const std::vector< const Particle * > &particlesToUpdate) const
 Checks if a particle has its copy in the provided list.
 
MaskfindMask (const std::string &name)
 Helper method to find ROE mask.
 
void printIndices (const std::string &maskName=c_defaultMaskName, bool unpackComposite=true, const std::string &tab=" - ") const
 Prints indices in the given set in a single line.
 
 ClassDef (RelationsInterface, 0)
 defines interface for accessing relations of objects in StoreArray.
 

Private Attributes

std::set< int > m_particleIndices
 StoreArray indices to unused particles.
 
std::vector< Maskm_masks
 List of the ROE masks.
 
int m_pdgCode
 PDG code of the 'ROE particle' if we are going to create one.
 
bool m_isNested
 Nested ROE indicator.
 
bool m_isFromMC
 MC ROE indicator.
 
bool m_useKLMEnergy
 Include KLM energy into ROE 4-vector.
 
bool m_builtWithMostLikely
 indicates whether most-likely particle lists were used in build of ROE
 
DataStore::StoreEntrym_cacheDataStoreEntry
 Cache of the data store entry to which this object belongs.
 
int m_cacheArrayIndex
 Cache of the index in the TClonesArray to which this object belongs.
 

Detailed Description

This is a general purpose class for collecting reconstructed MDST data objects that are not used in reconstruction of given Particle – referred also as Rest Of the Event.

From remaining photons, K_L0 and charged particles, etc., we infer for example the decay vertex and flavor of the tagging B meson, which are needed in measurements of t-dependent CP violation, or we determine whether or not the rest of the event is consistent with some B decay that involves neutrinos after we have reconstructed Btag hadronically or semileptonically. Remaining charged tracks and unused energy deposits are for example also needed in calculation of continuum suppression variables, like Kakuno-Super-Fox-Wolfram moments. The RestOfEvent class should be used as an input in all these cases.

The RestOfEvent object is created for given existing Particle object by the RestOfEventBuilder module and are related between each other with the basf2 relation.

Internally, the RestOfEvent class holds only StoreArray indices of all unused MDST particles. Indices are stored in std::set and not std::vector, since the former ensures uniqueness of all its elements.

Definition at line 57 of file RestOfEvent.h.

Constructor & Destructor Documentation

◆ RestOfEvent()

RestOfEvent ( int  pdgCode = 0,
bool  isNested = false,
bool  isFromMC = false,
bool  useKLMEnergy = false,
bool  builtWithMostLikely = false 
)
inlineexplicit

Default constructor.

All private members are set to 0 (all vectors are empty).

Definition at line 179 of file RestOfEvent.h.

183 :
184 m_pdgCode(pdgCode), m_isNested(isNested), m_isFromMC(isFromMC), m_useKLMEnergy(useKLMEnergy),
185 m_builtWithMostLikely(builtWithMostLikely) { };
bool m_builtWithMostLikely
indicates whether most-likely particle lists were used in build of ROE
Definition: RestOfEvent.h:368
bool m_isFromMC
MC ROE indicator.
Definition: RestOfEvent.h:366
bool m_useKLMEnergy
Include KLM energy into ROE 4-vector.
Definition: RestOfEvent.h:367
int m_pdgCode
PDG code of the 'ROE particle' if we are going to create one.
Definition: RestOfEvent.h:364
bool m_isNested
Nested ROE indicator.
Definition: RestOfEvent.h:365

Member Function Documentation

◆ addParticles()

void addParticles ( const std::vector< const Particle * > &  particle)

Add StoreArray indices of given Particles to the list of unused particles in the event.

Parameters
particleReference to a vector of unused Particles

Definition at line 19 of file RestOfEvent.cc.

20{
21 StoreArray<Particle> allParticles;
22 for (auto* particleToAdd : particlesToAdd) {
23 std::vector<const Particle*> daughters = particleToAdd->getFinalStateDaughters();
24 for (auto* daughter : daughters) {
25 bool toAdd = true;
26 for (auto& myIndex : m_particleIndices) {
27 if (allParticles[myIndex]->isCopyOf(daughter, true)) {
28 toAdd = false;
29 break;
30 }
31 }
32 if (toAdd) {
33 B2DEBUG(10, "\t\tAdding particle with PDG " << daughter->getPDGCode());
34 m_particleIndices.insert(daughter->getArrayIndex());
35 }
36 }
37 }
38}
std::set< int > m_particleIndices
StoreArray indices to unused particles.
Definition: RestOfEvent.h:362
Accessor to arrays stored in the data store.
Definition: StoreArray.h:113

◆ addRelationTo() [1/2]

void addRelationTo ( const RelationsInterface< BASE > *  object,
float  weight = 1.0,
const std::string &  namedRelation = "" 
) const
inlineinherited

Add a relation from this object to another object (with caching).

Parameters
objectThe object to which the relation should point.
weightThe weight of the relation.
namedRelationAdditional name for the relation, or "" for the default naming

Definition at line 142 of file RelationsObject.h.

143 {
144 if (object)
146 object, object->m_cacheDataStoreEntry, object->m_cacheArrayIndex, weight, namedRelation);
147 }
void addRelation(const TObject *fromObject, StoreEntry *&fromEntry, int &fromIndex, const TObject *toObject, StoreEntry *&toEntry, int &toIndex, float weight, const std::string &namedRelation)
Add a relation from an object in a store array to another object in a store array.
Definition: DataStore.cc:491
static DataStore & Instance()
Instance of singleton Store.
Definition: DataStore.cc:53
DataStore::StoreEntry * m_cacheDataStoreEntry
Cache of the data store entry to which this object belongs.
int m_cacheArrayIndex
Cache of the index in the TClonesArray to which this object belongs.

◆ addRelationTo() [2/2]

void addRelationTo ( const TObject *  object,
float  weight = 1.0,
const std::string &  namedRelation = "" 
) const
inlineinherited

Add a relation from this object to another object (no caching, can be quite slow).

Parameters
objectThe object to which the relation should point.
weightThe weight of the relation.
namedRelationAdditional name for the relation, or "" for the default naming

Definition at line 155 of file RelationsObject.h.

156 {
157 StoreEntry* toEntry = nullptr;
158 int toIndex = -1;
159 DataStore::Instance().addRelation(this, m_cacheDataStoreEntry, m_cacheArrayIndex, object, toEntry, toIndex, weight, namedRelation);
160 }

◆ checkCompatibilityOfMaskAndV0()

bool checkCompatibilityOfMaskAndV0 ( const std::string &  name,
const Particle particleV0 
)

Check if V0 can be added, maybe should be moved to private.

Definition at line 263 of file RestOfEvent.cc.

264{
265 if (name == RestOfEvent::c_defaultMaskName) {
266 B2FATAL("ROE Mask name '" << RestOfEvent::c_defaultMaskName << "' is reserved for no mask case! " <<
267 "Please check your inputs.");
268 }
269 Mask* mask = findMask(name);
270 if (!mask) {
271 B2FATAL("ROE Mask '" << name << "' does not exist!");
272 }
273 if (!mask->isValid()) {
274 return false; //We should have particles here!
275 }
276 if (particleV0->getParticleSource() != Particle::EParticleSourceObject::c_Composite and
277 particleV0->getParticleSource() != Particle::EParticleSourceObject::c_V0) {
278 return false;
279 }
280 std::vector<const Particle*> daughtersV0 = particleV0->getFinalStateDaughters();
281 for (auto* daughter : daughtersV0) {
282 if (daughter->getParticleSource() != Particle::EParticleSourceObject::c_Track) {
283 return false; // Non tracks are not supported yet
284 }
285 }
286 if (mask->hasV0(particleV0)) {
287 return false; // We are not going to add another one
288 }
289 return true;
290}
std::vector< const Belle2::Particle * > getFinalStateDaughters() const
Returns a vector of pointers to Final State daughter particles.
Definition: Particle.cc:680
EParticleSourceObject getParticleSource() const
Returns particle source as defined with enum EParticleSourceObject.
Definition: Particle.h:489
static constexpr const char * c_defaultMaskName
Default mask name.
Definition: RestOfEvent.h:60
Mask * findMask(const std::string &name)
Helper method to find ROE mask.
Definition: RestOfEvent.cc:317

◆ convertToParticle()

Particle * convertToParticle ( const std::string &  maskName = c_defaultMaskName,
int  pdgCode = 0,
bool  isSelfConjugated = true 
)

Converts ROE to Particle and adds it to StoreArray.

Parameters
maskNameName of the ROE mask to use for 4-vector and daughters
pdgCodePDG code
isSelfConjugatedis the particle self-conjugated

Definition at line 438 of file RestOfEvent.cc.

439{
440 StoreArray<Particle> particles;
441 std::set<int> source;
442 if (maskName == RestOfEvent::c_defaultMaskName) {
443 // if no mask provided work with internal source
444 source = m_particleIndices;
445 } else {
446 bool maskFound = false;
447 for (auto& mask : m_masks) {
448 if (mask.getName() == maskName) {
449 maskFound = true;
450 source = mask.getParticles();
451 break;
452 }
453 }
454 if (!maskFound) {
455 B2FATAL("No '" << maskName << "' mask defined in current ROE!");
456 }
457 }
458 int particlePDG = (pdgCode == 0) ? getPDGCode() : pdgCode;
459 auto isFlavored = (isSelfConjugated) ? Particle::EFlavorType::c_Unflavored : Particle::EFlavorType::c_Flavored;
460 // By default, the ROE-based particles should have unspecified property to simplify the MC-matching
462 // Same properties as for "->" usage in DecayDescriptor
465 return particles.appendNew(get4Vector(maskName), particlePDG, isFlavored, std::vector(source.begin(),
466 source.end()), propertyFlags);
467}
@ c_Unflavored
Is its own antiparticle or we don't know whether it is a particle/antiparticle.
Definition: Particle.h:97
@ c_Flavored
Is either particle or antiparticle.
Definition: Particle.h:98
@ c_IsIgnoreRadiatedPhotons
Is the particle MC matched with the ignore radiated photon flag set?
Definition: Particle.h:121
@ c_IsUnspecified
Ordinary particles.
Definition: Particle.h:120
@ c_IsIgnoreIntermediate
Is the particle MC matched with the ignore intermediate resonances flag set?
Definition: Particle.h:122
ROOT::Math::PxPyPzEVector get4Vector(const std::string &maskName=c_defaultMaskName) const
Get 4-momentum vector all (no mask) or a subset (use mask) of all Tracks and ECLClusters in ROE.
Definition: RestOfEvent.cc:301
int getPDGCode() const
Gets the PDG code of the rest of event.
Definition: RestOfEvent.h:211
std::vector< Mask > m_masks
List of the ROE masks.
Definition: RestOfEvent.h:363

◆ copyRelations()

void copyRelations ( const RelationsInterface< BASE > *  sourceObj)
inlineinherited

Copies all relations of sourceObj (pointing from or to sourceObj) to this object (including weights).

Useful if you want to make a complete copy of a StoreArray object to make modifications to it, but retain all information on linked objects.

Note: this only works if sourceObj inherits from the same base (e.g. RelationsObject), and only for related objects that also inherit from the same base.

Definition at line 170 of file RelationsObject.h.

171 {
172 if (!sourceObj)
173 return;
174 auto fromRels = sourceObj->getRelationsFrom<RelationsInterface<BASE>>("ALL");
175 for (unsigned int iRel = 0; iRel < fromRels.size(); iRel++) {
176 fromRels.object(iRel)->addRelationTo(this, fromRels.weight(iRel));
177 }
178
179 auto toRels = sourceObj->getRelationsTo<RelationsInterface<BASE>>("ALL");
180 for (unsigned int iRel = 0; iRel < toRels.size(); iRel++) {
181 this->addRelationTo(toRels.object(iRel), toRels.weight(iRel));
182 }
183 }
void addRelationTo(const RelationsInterface< BASE > *object, float weight=1.0, const std::string &namedRelation="") const
Add a relation from this object to another object (with caching).

◆ excludeParticlesFromMask()

void excludeParticlesFromMask ( const std::string &  maskName,
const std::vector< const Particle * > &  particles,
Particle::EParticleSourceObject  listType,
bool  discard 
)

Update mask by keeping or excluding particles.

Parameters
maskNameName of the mask to work with
particlesReference to particle collection
listTypeParticleSourceObject of the collection
discardUpdate the ROE mask by passing or discarding particles in the provided particle list

Definition at line 149 of file RestOfEvent.cc.

151{
152 if (maskName == RestOfEvent::c_defaultMaskName) {
153 B2FATAL("ROE Mask name '" << RestOfEvent::c_defaultMaskName << "' is reserved for no mask case! " <<
154 "Please check your inputs.");
155 }
156 Mask* mask = findMask(maskName);
157 if (!mask) {
158 B2FATAL("No '" << maskName << "' mask defined in current ROE!");
159 }
160 std::string maskNameToGetParticles = maskName;
161 if (!mask->isValid()) {
162 maskNameToGetParticles = RestOfEvent::c_defaultMaskName;
163 }
164 std::vector<const Particle*> allROEParticles = getParticles(maskNameToGetParticles);
165 std::vector<const Particle*> toKeepinROE;
166 for (auto* roeParticle : allROEParticles) {
167 if (isInParticleList(roeParticle, particlesToUpdate)) {
168 if (!discard) {
169 // If keep particles option is on, take the equal particles
170 toKeepinROE.push_back(roeParticle);
171 }
172 } else {
173 // Keep all particles which has different type than provided list
174 if (listType != roeParticle->getParticleSource()) {
175 toKeepinROE.push_back(roeParticle);
176 } else if (discard) {
177 // If keep particles option is off, take not equal particles
178 toKeepinROE.push_back(roeParticle);
179 }
180 }
181 }
182 mask->clearParticles();
183 mask->addParticles(toKeepinROE);
184}
std::vector< const Particle * > getParticles(const std::string &maskName=c_defaultMaskName, bool unpackComposite=true) const
Get all Particles from ROE mask.
Definition: RestOfEvent.cc:40
bool isInParticleList(const Particle *roeParticle, const std::vector< const Particle * > &particlesToUpdate) const
Checks if a particle has its copy in the provided list.
Definition: RestOfEvent.cc:365

◆ findMask()

RestOfEvent::Mask * findMask ( const std::string &  name)
private

Helper method to find ROE mask.

Definition at line 317 of file RestOfEvent.cc.

318{
319 for (auto& mask : m_masks) {
320 if (mask.getName() == name) {
321 return &mask;
322 }
323 }
324 return nullptr;
325
326}

◆ get4Vector()

ROOT::Math::PxPyPzEVector get4Vector ( const std::string &  maskName = c_defaultMaskName) const

Get 4-momentum vector all (no mask) or a subset (use mask) of all Tracks and ECLClusters in ROE.

Parameters
maskNameName of mask
Returns
4-momentum of unused Tracks and ECLClusters in ROE

Definition at line 301 of file RestOfEvent.cc.

302{
303 ROOT::Math::PxPyPzEVector roe4Vector;
304 std::vector<const Particle*> myParticles = RestOfEvent::getParticles(maskName);
305 for (const Particle* particle : myParticles) {
306 // KLMClusters are discarded, because KLM energy estimation is based on hit numbers, therefore it is unreliable
307 // also, enable it as an experimental option:
308 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_KLMCluster and !m_useKLMEnergy) {
309 continue;
310 }
311 roe4Vector += particle->get4Vector();
312 }
313 return roe4Vector;
314}
Class to store reconstructed particles.
Definition: Particle.h:76

◆ get4VectorNeutralECLClusters()

ROOT::Math::PxPyPzEVector get4VectorNeutralECLClusters ( const std::string &  maskName = c_defaultMaskName) const

Get 4-momentum vector all (no mask) or a subset (use mask) of all ECLClusters in ROE.

Parameters
maskNameName of mask
Returns
4-momentum of unused Tracks and ECLClusters in ROE

Definition at line 351 of file RestOfEvent.cc.

352{
353 auto roeClusters = getPhotons(maskName);
354 ROOT::Math::PxPyPzEVector roe4VectorECLClusters;
355
356 // Add all momenta from neutral ECLClusters which have the nPhotons hypothesis
357 for (auto& roeCluster : roeClusters) {
358 if (roeCluster->getECLClusterEHypothesisBit() == ECLCluster::EHypothesisBit::c_nPhotons)
359 roe4VectorECLClusters += roeCluster->get4Vector();
360 }
361
362 return roe4VectorECLClusters;
363}
@ c_nPhotons
CR is split into n photons (N1)
std::vector< const Particle * > getPhotons(const std::string &maskName=c_defaultMaskName, bool unpackComposite=true) const
Get photons from ROE mask.
Definition: RestOfEvent.cc:79

◆ getArrayIndex()

int getArrayIndex ( ) const
inlineinherited

Returns this object's array index (in StoreArray), or -1 if not found.

Definition at line 385 of file RelationsObject.h.

386 {
388 return m_cacheArrayIndex;
389 }
bool findStoreEntry(const TObject *object, StoreEntry *&entry, int &index)
Find an object in an array in the data store.
Definition: DataStore.cc:397

◆ getArrayName()

std::string getArrayName ( ) const
inlineinherited

Get name of array this object is stored in, or "" if not found.

Definition at line 377 of file RelationsObject.h.

◆ getArrayPointer()

TClonesArray * getArrayPointer ( ) const
inlineprotectedinherited

Returns the pointer to the raw DataStore array holding this object (protected since these arrays are easy to misuse).

Definition at line 418 of file RelationsObject.h.

419 {
422 return nullptr;
424 }
TClonesArray * getPtrAsArray() const
Return ptr cast to TClonesArray.
Definition: StoreEntry.cc:83

◆ getChargedParticles()

std::vector< const Particle * > getChargedParticles ( const std::string &  maskName = c_defaultMaskName,
unsigned int  pdg = 0,
bool  unpackComposite = true 
) const

Get charged particles from ROE mask.

Parameters
maskNameName of mask
pdgabsolute value of PDG code of charged particle
unpackCompositereturn daughters of composite particles
Returns
vector of pointers to ROE Particles

Definition at line 103 of file RestOfEvent.cc.

105{
106 auto particles = getParticles(maskName, unpackComposite);
107 std::vector<const Particle*> charged;
108 for (auto* particle : particles) {
109 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_Track) {
110 if (pdg == 0 || pdg == abs(particle->getPDGCode())) {
111 charged.push_back(particle);
112 }
113 }
114 }
115 return charged;
116}

◆ getHadrons()

std::vector< const Particle * > getHadrons ( const std::string &  maskName = c_defaultMaskName,
bool  unpackComposite = true 
) const

Get hadrons from ROE mask.

Parameters
maskNameName of mask
unpackCompositereturn daughters of composite particles
Returns
vector of pointers to ROE Particles

Definition at line 91 of file RestOfEvent.cc.

92{
93 auto particles = getParticles(maskName, unpackComposite);
94 std::vector<const Particle*> hadrons;
95 for (auto* particle : particles) {
96 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_KLMCluster) {
97 hadrons.push_back(particle);
98 }
99 }
100 return hadrons;
101}

◆ getInfo()

std::string getInfo ( ) const
inlineinherited

Return a short summary of this object's contents in raw text format.

Returns the contents of getInfoHTML() while translating line-breaks etc.

Note
: You don't need to implement this function (it's not virtual), getInfoHTML() is enough.

Definition at line 370 of file RelationsObject.h.

371 {
373 }
virtual std::string getInfoHTML() const
Return a short summary of this object's contents in HTML format.
std::string htmlToPlainText(const std::string &html)
See RelationsObject::getInfo()

◆ getInfoHTML()

virtual std::string getInfoHTML ( ) const
inlinevirtualinherited

Return a short summary of this object's contents in HTML format.

Reimplement this in your own class to provide useful output for display or debugging purposes. For example, you might do something like:

std::stringstream out;
out << "<b>PDG</b>: " << m_pdg << "<br>";
out << "<b>Covariance Matrix</b>: " << HTML::getString(getCovariance5()) << "<br>";
return out.str();
std::string getString(const TMatrixFBase &matrix, int precision=2, bool color=true)
get HTML table representing a matrix.
Definition: HTML.cc:24
See also
Particle::getInfoHTML() for a more complex example.
HTML for some utility functions.
Use getInfo() to get a raw text version of this output.

Reimplemented in Particle, Cluster, MCParticle, PIDLikelihood, SoftwareTriggerResult, Track, TrackFitResult, TRGSummary, and RecoTrack.

Definition at line 362 of file RelationsObject.h.

362{ return ""; }

◆ getIsNested()

bool getIsNested ( ) const
inline

Returns true if the ROE is nested.

Definition at line 266 of file RestOfEvent.h.

266{return m_isNested;}

◆ getMaskNames()

std::vector< std::string > getMaskNames ( ) const

Get vector of all mask names of the ROE object.

Returns
list of all mask names

Definition at line 375 of file RestOfEvent.cc.

376{
377 std::vector<std::string> maskNames;
378
379 for (auto& mask : m_masks) {
380 maskNames.push_back(mask.getName());
381 }
382
383 return maskNames;
384}

◆ getName()

virtual std::string getName ( ) const
inlinevirtualinherited

Return a short name that describes this object, e.g.

pi+ for an MCParticle.

Reimplemented in Particle, MCParticle, and SpacePoint.

Definition at line 344 of file RelationsObject.h.

344{ return ""; }

◆ getNECLClusters()

int getNECLClusters ( const std::string &  maskName = c_defaultMaskName) const

Get number of all (no mask) or a subset (use mask) of all ECLclusters in ROE.

Parameters
maskNameName of mask
Returns
number of all remaining ECL clusters

Definition at line 334 of file RestOfEvent.cc.

335{
336 int nROEneutralECLClusters = getPhotons(maskName).size();
337 int nROEchargedECLClusters = 0;
338 for (auto& roeParticle : getChargedParticles(maskName)) {
339 if (roeParticle->getECLCluster()) ++nROEchargedECLClusters;
340 }
341
342 return nROEneutralECLClusters + nROEchargedECLClusters;
343}
std::vector< const Particle * > getChargedParticles(const std::string &maskName=c_defaultMaskName, unsigned int pdg=0, bool unpackComposite=true) const
Get charged particles from ROE mask.
Definition: RestOfEvent.cc:103

◆ getNKLMClusters()

int getNKLMClusters ( const std::string &  maskName = c_defaultMaskName) const

Get number of all remaining KLM clusters.

Parameters
maskNameName of mask
Returns
number of all remaining KLM clusters

Definition at line 345 of file RestOfEvent.cc.

346{
347 int nROEKLMClusters = getHadrons(maskName).size();
348 return nROEKLMClusters;
349}
std::vector< const Particle * > getHadrons(const std::string &maskName=c_defaultMaskName, bool unpackComposite=true) const
Get hadrons from ROE mask.
Definition: RestOfEvent.cc:91

◆ getNTracks()

int getNTracks ( const std::string &  maskName = c_defaultMaskName) const

Get number of all (no mask) or a subset (use mask) of all Tracks in ROE.

Parameters
maskNameName of mask
Returns
number of all remaining tracks

Definition at line 328 of file RestOfEvent.cc.

329{
330 int nTracks = getChargedParticles(maskName).size();
331 return nTracks;
332}

◆ getParticles()

std::vector< const Particle * > getParticles ( const std::string &  maskName = c_defaultMaskName,
bool  unpackComposite = true 
) const

Get all Particles from ROE mask.

Parameters
maskNameName of mask
unpackCompositereturn daughters of composite particles
Returns
vector of pointers to ROE Particles

Definition at line 40 of file RestOfEvent.cc.

41{
42 std::vector<const Particle*> result;
43 StoreArray<Particle> allParticles;
44 std::set<int> source;
45 if (m_particleIndices.size() == 0) {
46 B2DEBUG(10, "ROE contains no particles, masks are empty too");
47 return result;
48 }
49 if (maskName == RestOfEvent::c_defaultMaskName or maskName.empty()) {
50 // if no mask provided work with internal source
51 source = m_particleIndices;
52 } else {
53 bool maskFound = false;
54 for (auto& mask : m_masks) {
55 if (mask.getName() == maskName) {
56 maskFound = true;
57 source = mask.getParticles();
58 break;
59 }
60 }
61 if (!maskFound) {
62 B2FATAL("No '" << maskName << "' mask defined in current ROE!");
63 }
64 }
65 for (const int index : source) {
66 if ((allParticles[index]->getParticleSource() == Particle::EParticleSourceObject::c_Composite or
67 allParticles[index]->getParticleSource() == Particle::EParticleSourceObject::c_V0) && unpackComposite) {
68 auto fsdaughters = allParticles[index]->getFinalStateDaughters();
69 for (auto* daughter : fsdaughters) {
70 result.push_back(daughter);
71 }
72 continue;
73 }
74 result.push_back(allParticles[index]);
75 }
76 return result;
77}

◆ getPDGCode()

int getPDGCode ( ) const
inline

Gets the PDG code of the rest of event.

Definition at line 211 of file RestOfEvent.h.

212 {
213 return m_pdgCode;
214 }

◆ getPhotons()

std::vector< const Particle * > getPhotons ( const std::string &  maskName = c_defaultMaskName,
bool  unpackComposite = true 
) const

Get photons from ROE mask.

Parameters
maskNameName of mask
unpackCompositereturn daughters of composite particles
Returns
vector of pointers to unused Particles

Definition at line 79 of file RestOfEvent.cc.

80{
81 auto particles = getParticles(maskName, unpackComposite);
82 std::vector<const Particle*> photons;
83 for (auto* particle : particles) {
84 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_ECLCluster) {
85 photons.push_back(particle);
86 }
87 }
88 return photons;
89}

◆ getRelated()

T * getRelated ( const std::string &  name = "",
const std::string &  namedRelation = "" 
) const
inlineinherited

Get the object to or from which this object has a relation.

Template Parameters
TThe class of objects to or from which the relation points.
Parameters
nameThe name of the store array to or from which the relation points. If empty the default store array name for class T will be used. If the special name "ALL" is given all store arrays containing objects of type T are considered.
namedRelationAdditional name for the relation, or "" for the default naming
Returns
The first related object or a null pointer.

Definition at line 278 of file RelationsObject.h.

279 {
281 T::Class(), name, namedRelation).object);
282 }
@ c_BothSides
Combination of c_FromSide and c_ToSide.
Definition: DataStore.h:79
Belle2::RelationEntry getRelationWith(ESearchSide searchSide, const TObject *object, StoreEntry *&entry, int &index, const TClass *withClass, const std::string &withName, const std::string &namedRelation)
Get the first relation between an object and another object in a store array.
Definition: DataStore.cc:596
TObject * object
Pointer to the object.
Definition: RelationEntry.h:32

◆ getRelatedFrom()

FROM * getRelatedFrom ( const std::string &  name = "",
const std::string &  namedRelation = "" 
) const
inlineinherited

Get the object from which this object has a relation.

Template Parameters
FROMThe class of objects from which the relation points.
Parameters
nameThe name of the store array from which the relation points. If empty the default store array name for class FROM will be used. If the special name "ALL" is given all store arrays containing objects of type FROM are considered.
namedRelationAdditional name for the relation, or "" for the default naming
Returns
The first related object or a null pointer.

Definition at line 263 of file RelationsObject.h.

264 {
266 m_cacheArrayIndex, FROM::Class(), name, namedRelation).object);
267 }
@ c_FromSide
Return relations/objects pointed from (to a given object).
Definition: DataStore.h:77

◆ getRelatedFromWithWeight()

std::pair< FROM *, float > getRelatedFromWithWeight ( const std::string &  name = "",
const std::string &  namedRelation = "" 
) const
inlineinherited

Get first related object & weight of relation pointing from an array.

Template Parameters
FROMThe class of objects from which the relation points.
Parameters
nameThe name of the store array from which the relation points. If empty the default store array name for class FROM will be used. If the special name "ALL" is given all store arrays containing objects of type FROM are considered.
namedRelationAdditional name for the relation, or "" for the default naming
Returns
Pair of first related object and the relation weight, or (NULL, 1.0) if none found.

Definition at line 314 of file RelationsObject.h.

316 {
318 FROM::Class(), name, namedRelation);
319 return std::make_pair(static_cast<FROM*>(entry.object), entry.weight);
320 }

◆ getRelatedTo()

TO * getRelatedTo ( const std::string &  name = "",
const std::string &  namedRelation = "" 
) const
inlineinherited

Get the object to which this object has a relation.

Template Parameters
TOThe class of objects to which the relation points.
Parameters
nameThe name of the store array to which the relation points. If empty the default store array name for class TO will be used. If the special name "ALL" is given all store arrays containing objects of type TO are considered.
namedRelationAdditional name for the relation, or "" for the default naming
Returns
The first related object or a null pointer.

Definition at line 248 of file RelationsObject.h.

249 {
251 TO::Class(), name, namedRelation).object);
252 }
@ c_ToSide
Return relations/objects pointed to (from a given object).
Definition: DataStore.h:78

◆ getRelatedToWithWeight()

std::pair< TO *, float > getRelatedToWithWeight ( const std::string &  name = "",
const std::string &  namedRelation = "" 
) const
inlineinherited

Get first related object & weight of relation pointing to an array.

Template Parameters
TOThe class of objects to which the relation points.
Parameters
nameThe name of the store array to which the relation points. If empty the default store array name for class TO will be used. If the special name "ALL" is given all store arrays containing objects of type TO are considered.
namedRelationAdditional name for the relation, or "" for the default naming
Returns
Pair of first related object and the relation weight, or (NULL, 1.0) if none found.

Definition at line 297 of file RelationsObject.h.

299 {
301 TO::Class(), name, namedRelation);
302 return std::make_pair(static_cast<TO*>(entry.object), entry.weight);
303 }

◆ getRelatedWithWeight()

std::pair< T *, float > getRelatedWithWeight ( const std::string &  name = "",
const std::string &  namedRelation = "" 
) const
inlineinherited

Get first related object & weight of relation pointing from/to an array.

Template Parameters
TThe class of objects to or from which the relation points.
Parameters
nameThe name of the store array to or from which the relation points. If empty the default store array name for class T will be used. If the special name "ALL" is given all store arrays containing objects of type T are considered.
namedRelationAdditional name for the relation, or "" for the default naming
Returns
Pair of first related object and the relation weight, or (NULL, 1.0) if none found.

Definition at line 331 of file RelationsObject.h.

333 {
335 T::Class(), name, namedRelation);
336 return std::make_pair(static_cast<T*>(entry.object), entry.weight);
337 }

◆ getRelationsFrom()

RelationVector< FROM > getRelationsFrom ( const std::string &  name = "",
const std::string &  namedRelation = "" 
) const
inlineinherited

Get the relations that point from another store array to this object.

Template Parameters
FROMThe class of objects from which the relations point.
Parameters
nameThe name of the store array from which the relations point. If empty the default store array name for class FROM will be used. If the special name "ALL" is given all store arrays containing objects of type FROM are considered.
namedRelationAdditional name for the relation, or "" for the default naming
Returns
A vector of relations.

Definition at line 212 of file RelationsObject.h.

214 {
216 m_cacheArrayIndex, FROM::Class(), name, namedRelation));
217 }
RelationVector< T > getRelationsWith(const std::string &name="", const std::string &namedRelation="") const
Get the relations between this object and another store array.

◆ getRelationsTo()

RelationVector< TO > getRelationsTo ( const std::string &  name = "",
const std::string &  namedRelation = "" 
) const
inlineinherited

Get the relations that point from this object to another store array.

Template Parameters
TOThe class of objects to which the relations point.
Parameters
nameThe name of the store array to which the relations point. If empty the default store array name for class TO will be used. If the special name "ALL" is given all store arrays containing objects of type TO are considered.
namedRelationAdditional name for the relation, or "" for the default naming
Returns
A vector of relations.

Definition at line 197 of file RelationsObject.h.

198 {
200 m_cacheArrayIndex, TO::Class(), name, namedRelation));
201 }

◆ getRelationsWith()

RelationVector< T > getRelationsWith ( const std::string &  name = "",
const std::string &  namedRelation = "" 
) const
inlineinherited

Get the relations between this object and another store array.

Relations in both directions are returned.

Template Parameters
TThe class of objects to or from which the relations point.
Parameters
nameThe name of the store array to or from which the relations point. If empty the default store array name for class T will be used. If the special name "ALL" is given all store arrays containing objects of type T are considered.
namedRelationAdditional name for the relation, or "" for the default naming
Returns
A vector of relations.

Definition at line 230 of file RelationsObject.h.

231 {
233 m_cacheArrayIndex, T::Class(), name, namedRelation));
234 }

◆ hasMask()

bool hasMask ( const std::string &  name) const

True if this ROE object has mask.

Parameters
nameName of the mask to work with

Definition at line 292 of file RestOfEvent.cc.

293{
294 for (auto& mask : m_masks) {
295 if (mask.getName() == name) {
296 return true;
297 }
298 }
299 return false;
300}

◆ hasParticle()

bool hasParticle ( const Particle particle,
const std::string &  maskName = c_defaultMaskName 
) const

Check if ROE has StoreArray index of given to the list of unused tracks in the event.

Parameters
particlePointer to the Particle
maskNameName of the mask to work with

Definition at line 119 of file RestOfEvent.cc.

120{
121 if (maskName != RestOfEvent::c_defaultMaskName && !hasMask(maskName) && !maskName.empty()) {
122 B2FATAL("No '" << maskName << "' mask defined in current ROE!");
123 }
124
125 std::vector<const Particle*> particlesROE = getParticles(maskName);
126 return isInParticleList(particle, particlesROE);
127}
bool hasMask(const std::string &name) const
True if this ROE object has mask.
Definition: RestOfEvent.cc:292

◆ initializeMask()

void initializeMask ( const std::string &  name,
const std::string &  origin = "unknown" 
)

Initialize new mask.

Parameters
nameName of the mask to work with
originorigin of the creator module

Definition at line 129 of file RestOfEvent.cc.

130{
131 if (name == "") {
132 B2FATAL("Creation of ROE Mask with an empty name is not allowed!");
133 }
134 if (name == RestOfEvent::c_defaultMaskName) {
135 B2FATAL("Creation of ROE Mask with a name " << RestOfEvent::c_defaultMaskName << " is not allowed!");
136 }
137 std::regex word_regex("^[a-zA-Z][a-zA-Z0-9_]*$");
138 if (!std::regex_match(name, word_regex)) {
139 B2FATAL("Mask name '" << name << "' contains forbidden characters or it does not start with a letter. "
140 "Only alphanumeric and underscore characters are allowed in ROE mask names.");
141 }
142 if (findMask(name)) {
143 B2FATAL("ROE Mask '" << name << "' already exists!");
144 }
145 Mask elon(name, origin);
146 m_masks.push_back(elon);
147}

◆ isBuiltWithMostLikely()

bool isBuiltWithMostLikely ( ) const
inline

Returns true if the ROE was built with most-likely particle lists.

Definition at line 271 of file RestOfEvent.h.

271{return m_builtWithMostLikely;}

◆ isInParticleList()

bool isInParticleList ( const Particle roeParticle,
const std::vector< const Particle * > &  particlesToUpdate 
) const
private

Checks if a particle has its copy in the provided list.

Definition at line 365 of file RestOfEvent.cc.

366{
367 for (auto* listParticle : particlesToUpdate) {
368 if (roeParticle->isCopyOf(listParticle, true)) {
369 return true;
370 }
371 }
372 return false;
373}
bool isCopyOf(const Particle *oParticle, bool doDetailedComparison=false) const
Returns true if this Particle and oParticle are copies of each other.
Definition: Particle.cc:783

◆ print()

void print ( const std::string &  maskName = c_defaultMaskName,
bool  unpackComposite = true 
) const

Prints the contents of a RestOfEvent object to screen.

Definition at line 386 of file RestOfEvent.cc.

387{
388 std::string tab = " - ";
389 if (maskName != RestOfEvent::c_defaultMaskName) {
390 // Disable possible B2FATAL in printing method, might be useful for tests
391 if (!hasMask(maskName)) {
392 B2WARNING("No mask with the name '" << maskName << "' exists in this ROE! Nothing else to print");
393 return;
394 }
395 tab = " - - ";
396 } else {
397 if (m_isNested) {
398 B2INFO(tab << "ROE is nested");
399 }
400 if (m_isFromMC) {
401 B2INFO(tab << "ROE is build from generated particles");
402 }
403 }
404 if (m_useKLMEnergy) {
405 B2WARNING("This ROE has KLM energy included into its 4-vector!");
406 }
407 if (!m_isFromMC) {
408 unsigned int nCharged = getChargedParticles(maskName, 0, unpackComposite).size();
409 unsigned int nPhotons = getPhotons(maskName, unpackComposite).size();
410 unsigned int nNeutralHadrons = getHadrons(maskName, unpackComposite).size();
411 B2INFO(tab << "No. of Charged particles in ROE: " << nCharged);
412 B2INFO(tab << "No. of Photons in ROE: " << nPhotons);
413 B2INFO(tab << "No. of K_L0 and neutrons in ROE: " << nNeutralHadrons);
414 } else {
415 unsigned int nParticles = getParticles(maskName, unpackComposite).size();
416 B2INFO(tab << "No. of generated particles in ROE: " << nParticles);
417 }
418 printIndices(maskName, unpackComposite, tab);
419}
void printIndices(const std::string &maskName=c_defaultMaskName, bool unpackComposite=true, const std::string &tab=" - ") const
Prints indices in the given set in a single line.
Definition: RestOfEvent.cc:421

◆ printIndices()

void printIndices ( const std::string &  maskName = c_defaultMaskName,
bool  unpackComposite = true,
const std::string &  tab = " - " 
) const
private

Prints indices in the given set in a single line.

Definition at line 421 of file RestOfEvent.cc.

422{
423 auto particles = getParticles(maskName, unpackComposite);
424 if (particles.size() == 0) {
425 B2INFO(tab << "No indices to print");
426 return;
427 }
428 std::string printoutIndex = tab + "|";
429 std::string printoutPDG = tab + "|";
430 for (const auto particle : particles) {
431 printoutIndex += std::to_string(particle->getArrayIndex()) + " | ";
432 printoutPDG += std::to_string(particle->getPDGCode()) + " | ";
433 }
434 B2INFO(printoutPDG);
435 B2INFO(printoutIndex);
436}

◆ setPDGCode()

void setPDGCode ( int  pdgCode)
inline

Sets the PDG code of the rest of event.

Definition at line 196 of file RestOfEvent.h.

197 {
198 m_pdgCode = pdgCode;
199 }

◆ updateMaskWithCuts()

void updateMaskWithCuts ( const std::string &  name,
const std::shared_ptr< Variable::Cut > &  trackCut = nullptr,
const std::shared_ptr< Variable::Cut > &  eclCut = nullptr,
const std::shared_ptr< Variable::Cut > &  klmCut = nullptr,
bool  updateExisting = false 
)

Update mask with cuts.

Parameters
nameName of the mask to work with
trackCutCut on Track particles
eclCutCut on ECL particles
klmCutCut on KLM particles
updateExistingUpdate existing mask if true or not if false

Definition at line 186 of file RestOfEvent.cc.

188{
189 if (maskName == RestOfEvent::c_defaultMaskName) {
190 B2FATAL("ROE Mask name '" << RestOfEvent::c_defaultMaskName << "' is reserved for no mask case! " <<
191 "Please check your inputs.");
192 }
193 Mask* mask = findMask(maskName);
194 if (!mask) {
195 B2FATAL("ROE Mask '" << maskName << "' does not exist!");
196 }
197 std::string sourceName = RestOfEvent::c_defaultMaskName;
198 if (updateExisting) {
199 // if mask already exists, take its particles to update
200 sourceName = maskName;
201 }
202 // get all initial ROE particles, don't touch the possible V0s, otherwise, some daughters may be excluded, and some not... This may be revisited if needed
203 std::vector<const Particle*> allROEParticles = getParticles(sourceName, false);
204 std::vector<const Particle*> maskedParticles;
205 // First check particle type, then check cuts, if no cuts provided, take all particles of this type
206 for (auto* particle : allROEParticles) {
207 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_Track && (!trackCut || trackCut->check(particle))) {
208 maskedParticles.push_back(particle);
209 }
210 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_ECLCluster && (!eclCut || eclCut->check(particle))) {
211 maskedParticles.push_back(particle);
212 }
213 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_KLMCluster && (!klmCut || klmCut->check(particle))) {
214 maskedParticles.push_back(particle);
215 }
216 // don't lose a possible V0 particle
217 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_Composite or
218 particle->getParticleSource() == Particle::EParticleSourceObject::c_V0) {
219 maskedParticles.push_back(particle);
220 }
221 }
222 mask->clearParticles();
223 mask->addParticles(maskedParticles);
224}

◆ updateMaskWithV0()

void updateMaskWithV0 ( const std::string &  name,
const Particle particleV0 
)

Update mask with composite particle.

Parameters
nameName of the mask to work with
particleV0Pointer to composite particle

Definition at line 226 of file RestOfEvent.cc.

227{
228 if (name == RestOfEvent::c_defaultMaskName) {
229 B2FATAL("ROE Mask name '" << RestOfEvent::c_defaultMaskName << "' is reserved for no mask case! " <<
230 "Please check your inputs.");
231 }
232 Mask* mask = findMask(name);
233 if (!mask) {
234 B2FATAL("ROE Mask '" << name << "' does not exist!");
235 }
236 std::vector<const Particle*> allROEParticles = getParticles(name, false);
237 std::vector<int> indicesToErase;
238 std::vector<const Particle*> daughtersV0 = particleV0->getFinalStateDaughters();
239 for (auto* maskParticle : allROEParticles) {
240 bool toKeep = true;
241 for (auto* daughterV0 : daughtersV0) {
242 if (daughterV0->isCopyOf(maskParticle, true)) {
243 toKeep = false;
244 }
245 }
246 if (!toKeep) {
247 indicesToErase.push_back(maskParticle->getArrayIndex());
248 }
249 }
250 if (daughtersV0.size() != indicesToErase.size()) {
251 B2DEBUG(10, "Only " << indicesToErase.size() << " daughters are excluded from mask particles. Abort");
252 return;
253 }
254 std::string toprint = "We will erase next indices from " + name + " mask: ";
255 for (auto& i : indicesToErase) {
256 toprint += std::to_string(i) + " ";
257 }
258 B2DEBUG(10, toprint);
259 // If everything is good, we add
260 mask->addV0(particleV0, indicesToErase);
261}

Member Data Documentation

◆ c_defaultMaskName

constexpr const char* c_defaultMaskName = "all"
staticconstexpr

Default mask name.

Definition at line 60 of file RestOfEvent.h.

◆ m_builtWithMostLikely

bool m_builtWithMostLikely
private

indicates whether most-likely particle lists were used in build of ROE

Definition at line 368 of file RestOfEvent.h.

◆ m_cacheArrayIndex

int m_cacheArrayIndex
mutableprivateinherited

Cache of the index in the TClonesArray to which this object belongs.

Definition at line 432 of file RelationsObject.h.

◆ m_cacheDataStoreEntry

DataStore::StoreEntry* m_cacheDataStoreEntry
mutableprivateinherited

Cache of the data store entry to which this object belongs.

Definition at line 429 of file RelationsObject.h.

◆ m_isFromMC

bool m_isFromMC
private

MC ROE indicator.

Definition at line 366 of file RestOfEvent.h.

◆ m_isNested

bool m_isNested
private

Nested ROE indicator.

Definition at line 365 of file RestOfEvent.h.

◆ m_masks

std::vector<Mask> m_masks
private

List of the ROE masks.

Definition at line 363 of file RestOfEvent.h.

◆ m_particleIndices

std::set<int> m_particleIndices
private

StoreArray indices to unused particles.

Definition at line 362 of file RestOfEvent.h.

◆ m_pdgCode

int m_pdgCode
private

PDG code of the 'ROE particle' if we are going to create one.

Definition at line 364 of file RestOfEvent.h.

◆ m_useKLMEnergy

bool m_useKLMEnergy
private

Include KLM energy into ROE 4-vector.

Definition at line 367 of file RestOfEvent.h.


The documentation for this class was generated from the following files: