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 24 of file RestOfEvent.cc.

25{
26 StoreArray<Particle> allParticles;
27 for (auto* particleToAdd : particlesToAdd) {
28 std::vector<const Particle*> daughters = particleToAdd->getFinalStateDaughters();
29 for (auto* daughter : daughters) {
30 bool toAdd = true;
31 for (auto& myIndex : m_particleIndices) {
32 if (allParticles[myIndex]->isCopyOf(daughter, true)) {
33 toAdd = false;
34 break;
35 }
36 }
37 if (toAdd) {
38 B2DEBUG(10, "\t\tAdding particle with PDG " << daughter->getPDGCode());
39 m_particleIndices.insert(daughter->getArrayIndex());
40 }
41 }
42 }
43}
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:492
static DataStore & Instance()
Instance of singleton Store.
Definition: DataStore.cc:54
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 268 of file RestOfEvent.cc.

269{
270 if (name == RestOfEvent::c_defaultMaskName) {
271 B2FATAL("ROE Mask name '" << RestOfEvent::c_defaultMaskName << "' is reserved for no mask case! " <<
272 "Please check your inputs.");
273 }
274 Mask* mask = findMask(name);
275 if (!mask) {
276 B2FATAL("ROE Mask '" << name << "' does not exist!");
277 }
278 if (!mask->isValid()) {
279 return false; //We should have particles here!
280 }
281 if (particleV0->getParticleSource() != Particle::EParticleSourceObject::c_Composite and
282 particleV0->getParticleSource() != Particle::EParticleSourceObject::c_V0) {
283 return false;
284 }
285 std::vector<const Particle*> daughtersV0 = particleV0->getFinalStateDaughters();
286 for (auto* daughter : daughtersV0) {
287 if (daughter->getParticleSource() != Particle::EParticleSourceObject::c_Track) {
288 return false; // Non tracks are not supported yet
289 }
290 }
291 if (mask->hasV0(particleV0)) {
292 return false; // We are not going to add another one
293 }
294 return true;
295}
std::vector< const Belle2::Particle * > getFinalStateDaughters() const
Returns a vector of pointers to Final State daughter particles.
Definition: Particle.cc:649
EParticleSourceObject getParticleSource() const
Returns particle source as defined with enum EParticleSourceObject.
Definition: Particle.h:478
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:322

◆ 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 443 of file RestOfEvent.cc.

444{
445 StoreArray<Particle> particles;
446 std::set<int> source;
447 if (maskName == RestOfEvent::c_defaultMaskName) {
448 // if no mask provided work with internal source
449 source = m_particleIndices;
450 } else {
451 bool maskFound = false;
452 for (auto& mask : m_masks) {
453 if (mask.getName() == maskName) {
454 maskFound = true;
455 source = mask.getParticles();
456 break;
457 }
458 }
459 if (!maskFound) {
460 B2FATAL("No '" << maskName << "' mask defined in current ROE!");
461 }
462 }
463 int particlePDG = (pdgCode == 0) ? getPDGCode() : pdgCode;
464 auto isFlavored = (isSelfConjugated) ? Particle::EFlavorType::c_Unflavored : Particle::EFlavorType::c_Flavored;
465 // By default, the ROE-based particles should have unspecified property to simplify the MC-matching
467 // Same properties as for "->" usage in DecayDescriptor
470 return particles.appendNew(get4Vector(maskName), particlePDG, isFlavored, std::vector(source.begin(),
471 source.end()), propertyFlags);
472}
@ c_Unflavored
Is its own antiparticle or we don't know whether it is a particle/antiparticle.
Definition: Particle.h:95
@ c_Flavored
Is either particle or antiparticle.
Definition: Particle.h:96
@ c_IsIgnoreRadiatedPhotons
Is the particle MC matched with the ignore radiated photon flag set?
Definition: Particle.h:119
@ c_IsUnspecified
Ordinary particles.
Definition: Particle.h:118
@ c_IsIgnoreIntermediate
Is the particle MC matched with the ignore intermediate resonances flag set?
Definition: Particle.h:120
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:306
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 154 of file RestOfEvent.cc.

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

◆ findMask()

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

Helper method to find ROE mask.

Definition at line 322 of file RestOfEvent.cc.

323{
324 for (auto& mask : m_masks) {
325 if (mask.getName() == name) {
326 return &mask;
327 }
328 }
329 return nullptr;
330
331}

◆ 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 306 of file RestOfEvent.cc.

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

◆ 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 356 of file RestOfEvent.cc.

357{
358 auto roeClusters = getPhotons(maskName);
359 ROOT::Math::PxPyPzEVector roe4VectorECLClusters;
360
361 // Add all momenta from neutral ECLClusters which have the nPhotons hypothesis
362 for (auto& roeCluster : roeClusters) {
363 if (roeCluster->getECLClusterEHypothesisBit() == ECLCluster::EHypothesisBit::c_nPhotons)
364 roe4VectorECLClusters += roeCluster->get4Vector();
365 }
366
367 return roe4VectorECLClusters;
368}
@ 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:84

◆ 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:398

◆ 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 108 of file RestOfEvent.cc.

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

◆ 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 96 of file RestOfEvent.cc.

97{
98 auto particles = getParticles(maskName, unpackComposite);
99 std::vector<const Particle*> hadrons;
100 for (auto* particle : particles) {
101 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_KLMCluster) {
102 hadrons.push_back(particle);
103 }
104 }
105 return hadrons;
106}

◆ 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 380 of file RestOfEvent.cc.

381{
382 std::vector<std::string> maskNames;
383
384 for (auto& mask : m_masks) {
385 maskNames.push_back(mask.getName());
386 }
387
388 return maskNames;
389}

◆ 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 339 of file RestOfEvent.cc.

340{
341 int nROEneutralECLClusters = getPhotons(maskName).size();
342 int nROEchargedECLClusters = 0;
343 for (auto& roeParticle : getChargedParticles(maskName)) {
344 if (roeParticle->getECLCluster()) ++nROEchargedECLClusters;
345 }
346
347 return nROEneutralECLClusters + nROEchargedECLClusters;
348}
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:108

◆ 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 350 of file RestOfEvent.cc.

351{
352 int nROEKLMClusters = getHadrons(maskName).size();
353 return nROEKLMClusters;
354}
std::vector< const Particle * > getHadrons(const std::string &maskName=c_defaultMaskName, bool unpackComposite=true) const
Get hadrons from ROE mask.
Definition: RestOfEvent.cc:96

◆ 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 333 of file RestOfEvent.cc.

334{
335 int nTracks = getChargedParticles(maskName).size();
336 return nTracks;
337}

◆ 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 45 of file RestOfEvent.cc.

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

◆ 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 84 of file RestOfEvent.cc.

85{
86 auto particles = getParticles(maskName, unpackComposite);
87 std::vector<const Particle*> photons;
88 for (auto* particle : particles) {
89 if (particle->getParticleSource() == Particle::EParticleSourceObject::c_ECLCluster) {
90 photons.push_back(particle);
91 }
92 }
93 return photons;
94}

◆ 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:597
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 297 of file RestOfEvent.cc.

298{
299 for (auto& mask : m_masks) {
300 if (mask.getName() == name) {
301 return true;
302 }
303 }
304 return false;
305}

◆ 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 124 of file RestOfEvent.cc.

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

◆ 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 134 of file RestOfEvent.cc.

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

◆ 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 370 of file RestOfEvent.cc.

371{
372 for (auto* listParticle : particlesToUpdate) {
373 if (roeParticle->isCopyOf(listParticle, true)) {
374 return true;
375 }
376 }
377 return false;
378}
bool isCopyOf(const Particle *oParticle, bool doDetailedComparison=false) const
Returns true if this Particle and oParticle are copies of each other.
Definition: Particle.cc:752

◆ 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 391 of file RestOfEvent.cc.

392{
393 std::string tab = " - ";
394 if (maskName != RestOfEvent::c_defaultMaskName) {
395 // Disable possible B2FATAL in printing method, might be useful for tests
396 if (!hasMask(maskName)) {
397 B2WARNING("No mask with the name '" << maskName << "' exists in this ROE! Nothing else to print");
398 return;
399 }
400 tab = " - - ";
401 } else {
402 if (m_isNested) {
403 B2INFO(tab << "ROE is nested");
404 }
405 if (m_isFromMC) {
406 B2INFO(tab << "ROE is build from generated particles");
407 }
408 }
409 if (m_useKLMEnergy) {
410 B2WARNING("This ROE has KLM energy included into its 4-vector!");
411 }
412 if (!m_isFromMC) {
413 unsigned int nCharged = getChargedParticles(maskName, 0, unpackComposite).size();
414 unsigned int nPhotons = getPhotons(maskName, unpackComposite).size();
415 unsigned int nNeutralHadrons = getHadrons(maskName, unpackComposite).size();
416 B2INFO(tab << "No. of Charged particles in ROE: " << nCharged);
417 B2INFO(tab << "No. of Photons in ROE: " << nPhotons);
418 B2INFO(tab << "No. of K_L0 and neutrons in ROE: " << nNeutralHadrons);
419 } else {
420 unsigned int nParticles = getParticles(maskName, unpackComposite).size();
421 B2INFO(tab << "No. of generated particles in ROE: " << nParticles);
422 }
423 printIndices(maskName, unpackComposite, tab);
424}
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:426

◆ 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 426 of file RestOfEvent.cc.

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

◆ 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 191 of file RestOfEvent.cc.

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

◆ 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 231 of file RestOfEvent.cc.

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

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: