8#include <gtest/gtest.h> 
   10#include <analysis/VariableManager/Manager.h> 
   12#include <analysis/dataobjects/Particle.h> 
   13#include <analysis/dataobjects/RestOfEvent.h> 
   15#include <mdst/dataobjects/Track.h> 
   16#include <mdst/dataobjects/ECLCluster.h> 
   17#include <mdst/dataobjects/KLMCluster.h> 
   19#include "utilities/TestParticleFactory.h" 
   22using namespace Belle2::Variable;
 
   27  class InclusiveVariablesTest : 
public ::testing::Test {
 
   34      StoreArray<ECLCluster> myECLClusters;
 
   35      StoreArray<KLMCluster> myKLMClusters;
 
   36      StoreArray<TrackFitResult> myTFRs;
 
   37      StoreArray<Track> myTracks;
 
   38      StoreArray<Particle> myParticles;
 
   39      StoreArray<RestOfEvent> myROEs;
 
   40      StoreArray<PIDLikelihood> myPIDLikelihoods;
 
   52      TestUtilities::TestParticleFactory factory;
 
   53      ROOT::Math::XYZVector ipposition(0, 0, 0);
 
   54      ROOT::Math::PxPyPzEVector b0momentum(3, 0, 0, 5);
 
   55      factory.
produceParticle(
string(
"^B0 -> [^K*0 -> [^K_S0 -> ^pi+ ^pi-] [^pi0 -> ^gamma ^gamma]] ^e+ ^e-"),
 
   56                              b0momentum, ipposition);
 
   60    void TearDown()
 override 
   65  TEST_F(InclusiveVariablesTest, nCompositeDaughters)
 
   69    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 1);
 
   71    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 1);
 
   73    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 0);
 
   75    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 0);
 
   77  TEST_F(InclusiveVariablesTest, nCompositeAllGenerationDaughters)
 
   81    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 3);
 
   83    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 1);
 
   85    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 1);
 
   87    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 1);
 
   89  TEST_F(InclusiveVariablesTest, nPhotonDaughters)
 
   93    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 2);
 
   95  TEST_F(InclusiveVariablesTest, nDaughterNeutralHadrons)
 
   99    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 0);
 
  101  TEST_F(InclusiveVariablesTest, nChargedDaughters)
 
  105    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 4);
 
  107    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 2);
 
  109    EXPECT_EQ(std::get<int>(var->function(myParticles[9])), 2);
 
  112  TEST_F(InclusiveVariablesTest, daughterAverageOf)
 
  116    EXPECT_FLOAT_EQ(std::get<double>(var->function(myParticles[9])), 
float(313 + 11 - 11) / 3);
 
static DataStore & Instance()
Instance of singleton Store.
void setInitializeActive(bool active)
Setter for m_initializeActive.
void reset(EDurability durability)
Frees memory occupied by data store items and removes all objects from the map.
bool registerInDataStore(DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut)
Register the object/array in the DataStore.
Accessor to arrays stored in the data store.
bool registerRelationTo(const StoreArray< TO > &toArray, DataStore::EDurability durability=DataStore::c_Event, DataStore::EStoreFlags storeFlags=DataStore::c_WriteOut, const std::string &namedRelation="") const
Register a relation to the given StoreArray.
const Var * getVariable(std::string name)
Get the variable belonging to the given key.
static Manager & Instance()
get singleton instance.
const Belle2::Particle * produceParticle(const std::string &decayString, const ROOT::Math::PxPyPzEVector &momentum, const ROOT::Math::XYZVector &vertex)
Main method to produce particles.
Abstract base class for different kinds of events.