8 #include <gtest/gtest.h>
10 #include <TMatrixFSym.h>
12 #include <TLorentzVector.h>
15 #include <analysis/VariableManager/Manager.h>
16 #include <analysis/VariableManager/Utility.h>
18 #include <analysis/dataobjects/Particle.h>
19 #include <analysis/dataobjects/ParticleExtraInfoMap.h>
20 #include <analysis/dataobjects/ParticleList.h>
21 #include <analysis/dataobjects/EventExtraInfo.h>
22 #include <analysis/dataobjects/RestOfEvent.h>
23 #include <analysis/utility/ReferenceFrame.h>
24 #include <framework/datastore/StoreArray.h>
25 #include <framework/datastore/StoreObjPtr.h>
26 #include <framework/utilities/TestHelpers.h>
27 #include <framework/logging/Logger.h>
28 #include <framework/gearbox/Gearbox.h>
30 #include <mdst/dataobjects/Track.h>
31 #include <mdst/dataobjects/ECLCluster.h>
32 #include <mdst/dataobjects/KLMCluster.h>
34 #include <analysis/variables/Variables.h>
36 #include "utilities/TestParticleFactory.h"
39 using namespace Belle2::Variable;
44 class InclusiveVariablesTest :
public ::testing::Test {
50 DataStore::Instance().setInitializeActive(
true);
67 DataStore::Instance().setInitializeActive(
false);
70 TVector3 ipposition(0, 0, 0);
71 TLorentzVector b0momentum(3, 0, 0, 5);
72 factory.
produceParticle(
string(
"^B0 -> [^K_S0 -> ^pi+ ^pi-] [^pi0 -> ^gamma ^gamma] ^e+ ^e-"), b0momentum, ipposition);
76 void TearDown()
override
78 DataStore::Instance().reset();
81 TEST_F(InclusiveVariablesTest, nCompositeDaughters)
84 auto* var = Manager::Instance().getVariable(
"nCompositeDaughters");
85 EXPECT_FLOAT_EQ(var->function(myParticles[8]), 2.0);
87 TEST_F(InclusiveVariablesTest, nPhotonDaughters)
90 auto* var = Manager::Instance().getVariable(
"nDaughterPhotons");
91 EXPECT_FLOAT_EQ(var->function(myParticles[8]), 2.0);
93 TEST_F(InclusiveVariablesTest, nDaughterNeutralHadrons)
96 auto* var = Manager::Instance().getVariable(
"nDaughterNeutralHadrons");
97 EXPECT_FLOAT_EQ(var->function(myParticles[8]), 0.0);
99 TEST_F(InclusiveVariablesTest, nChargedDaughters)
102 auto* var = Manager::Instance().getVariable(
"nDaughterCharged()");
103 EXPECT_FLOAT_EQ(var->function(myParticles[8]), 4.0);
104 var = Manager::Instance().getVariable(
"nDaughterCharged(11)");
105 EXPECT_FLOAT_EQ(var->function(myParticles[8]), 2.0);
106 var = Manager::Instance().getVariable(
"nDaughterCharged(211)");
107 EXPECT_FLOAT_EQ(var->function(myParticles[8]), 2.0);
110 TEST_F(InclusiveVariablesTest, daughterAverageOf)
113 auto* var = Manager::Instance().getVariable(
"daughterAverageOf(PDG)");
114 EXPECT_FLOAT_EQ(var->function(myParticles[8]), 105.25);
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.
This is a class, which generates DataStore particles, according to the provided decay string e....
const Belle2::Particle * produceParticle(const std::string &decayString, const TLorentzVector &momentum, const TVector3 &vertex)
Main method to produce particles.
TEST_F(GlobalLabelTest, LargeNumberOfTimeDependentParameters)
Test large number of time-dep params for registration and retrieval.
Abstract base class for different kinds of events.