Belle II Software  release-05-02-19
SelectSubset.cc
1 #include <framework/datastore/SelectSubset.h>
2 
3 #include <framework/datastore/RelationArray.h>
4 
5 using namespace Belle2;
6 
8 {
9  StoreAccessorBase* set = getSet();
10  StoreAccessorBase* subset = getSubSet();
11 
12  //replace set with subset
13  DataStore::Instance().replaceData(*subset, *set);
14 
15  //swap relations
16  for (const std::string& fromArray : m_inheritFromArrays) {
17  RelationArray setRel(DataStore::relationName(fromArray, set->getName()));
18  RelationArray subsetRel(DataStore::relationName(fromArray, subset->getName()));
19  DataStore::Instance().replaceData(subsetRel, setRel);
20  }
21  for (const std::string& toArray : m_inheritToArrays) {
22  RelationArray setRel(DataStore::relationName(set->getName(), toArray));
23  RelationArray subsetRel(DataStore::relationName(subset->getName(), toArray));
24  DataStore::Instance().replaceData(subsetRel, setRel);
25  }
26 }
Belle2::RelationArray
Low-level class to create/modify relations between StoreArrays.
Definition: RelationArray.h:72
Belle2::DataStore::Instance
static DataStore & Instance()
Instance of singleton Store.
Definition: DataStore.cc:54
Belle2::StoreAccessorBase::getName
const std::string & getName() const
Return name under which the object is saved in the DataStore.
Definition: StoreAccessorBase.h:130
Belle2::DataStore::replaceData
void replaceData(const StoreAccessorBase &from, const StoreAccessorBase &to)
For two StoreAccessors of same type, move all data in 'from' into 'to', discarding previous contents ...
Definition: DataStore.cc:343
Belle2::StoreAccessorBase
Base class for StoreObjPtr and StoreArray for easier common treatment.
Definition: StoreAccessorBase.h:29
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::SelectSubsetBase::m_inheritToArrays
std::vector< std::string > m_inheritToArrays
array names we inherit relations to.
Definition: SelectSubset.h:66
Belle2::SelectSubsetBase::getSet
virtual StoreAccessorBase * getSet()=0
Get accessor for original set.
Belle2::DataStore::relationName
static std::string relationName(const std::string &fromName, const std::string &toName, std::string const &namedRelation="")
Return storage name for a relation between two arrays of the given names.
Definition: DataStore.h:182
Belle2::SelectSubsetBase::getSubSet
virtual StoreAccessorBase * getSubSet()=0
Get accessor for reduced set.
Belle2::SelectSubsetBase::swapSetsAndDestroyOriginal
void swapSetsAndDestroyOriginal()
Swap set and subset (+relations), and keep only the reduced set.
Definition: SelectSubset.cc:7
Belle2::SelectSubsetBase::m_inheritFromArrays
std::vector< std::string > m_inheritFromArrays
array names we inherit relations from.
Definition: SelectSubset.h:64