Belle II Software  release-05-01-25
inclusive_variables.cc
1 #include <gtest/gtest.h>
2 
3 #include <TMatrixFSym.h>
4 #include <TRandom3.h>
5 #include <TLorentzVector.h>
6 #include <TMath.h>
7 
8 #include <analysis/VariableManager/Manager.h>
9 #include <analysis/VariableManager/Utility.h>
10 
11 #include <analysis/dataobjects/Particle.h>
12 #include <analysis/dataobjects/ParticleExtraInfoMap.h>
13 #include <analysis/dataobjects/ParticleList.h>
14 #include <analysis/dataobjects/EventExtraInfo.h>
15 #include <analysis/dataobjects/RestOfEvent.h>
16 #include <analysis/utility/ReferenceFrame.h>
17 #include <framework/datastore/StoreArray.h>
18 #include <framework/datastore/StoreObjPtr.h>
19 #include <framework/utilities/TestHelpers.h>
20 #include <framework/logging/Logger.h>
21 #include <framework/gearbox/Gearbox.h>
22 
23 #include <mdst/dataobjects/Track.h>
24 #include <mdst/dataobjects/ECLCluster.h>
25 #include <mdst/dataobjects/KLMCluster.h>
26 
27 #include <analysis/variables/Variables.h>
28 
29 #include "utilities/TestParticleFactory.h"
30 using namespace std;
31 using namespace Belle2;
32 using namespace Belle2::Variable;
33 
34 namespace {
35 
36 
37  class InclusiveVariablesTest : public ::testing::Test {
38  protected:
40  void SetUp() override
41  {
42 
43  DataStore::Instance().setInitializeActive(true);
44  StoreArray<ECLCluster> myECLClusters;
45  StoreArray<KLMCluster> myKLMClusters;
47  StoreArray<Track> myTracks;
48  StoreArray<Particle> myParticles;
50  StoreArray<PIDLikelihood> myPIDLikelihoods;
51  myECLClusters.registerInDataStore();
52  myKLMClusters.registerInDataStore();
53  myTFRs.registerInDataStore();
54  myTracks.registerInDataStore();
55  myParticles.registerInDataStore();
56  myROEs.registerInDataStore();
57  myPIDLikelihoods.registerInDataStore();
58  myParticles.registerRelationTo(myROEs);
59  myTracks.registerRelationTo(myPIDLikelihoods);
60  DataStore::Instance().setInitializeActive(false);
61 
63  TVector3 ipposition(0, 0, 0);
64  TLorentzVector b0momentum(3, 0, 0, 5);
65  factory.produceParticle(string("^B0 -> [^K_S0 -> ^pi+ ^pi-] [^pi0 -> ^gamma ^gamma] ^e+ ^e-"), b0momentum, ipposition);
66  }
67 
69  void TearDown() override
70  {
71  DataStore::Instance().reset();
72  }
73  };
74  TEST_F(InclusiveVariablesTest, nCompositeDaughters)
75  {
76  StoreArray<Particle> myParticles;
77  auto* var = Manager::Instance().getVariable("nCompositeDaughters");
78  EXPECT_FLOAT_EQ(var->function(myParticles[8]), 2.0);
79  }
80  TEST_F(InclusiveVariablesTest, nPhotonDaughters)
81  {
82  StoreArray<Particle> myParticles;
83  auto* var = Manager::Instance().getVariable("nDaughterPhotons");
84  EXPECT_FLOAT_EQ(var->function(myParticles[8]), 2.0);
85  }
86  TEST_F(InclusiveVariablesTest, nDaughterNeutralHadrons)
87  {
88  StoreArray<Particle> myParticles;
89  auto* var = Manager::Instance().getVariable("nDaughterNeutralHadrons");
90  EXPECT_FLOAT_EQ(var->function(myParticles[8]), 0.0);
91  }
92  TEST_F(InclusiveVariablesTest, nChargedDaughters)
93  {
94  StoreArray<Particle> myParticles;
95  auto* var = Manager::Instance().getVariable("nDaughterCharged()");
96  EXPECT_FLOAT_EQ(var->function(myParticles[8]), 4.0);
97  var = Manager::Instance().getVariable("nDaughterCharged(11)");
98  EXPECT_FLOAT_EQ(var->function(myParticles[8]), 2.0);
99  var = Manager::Instance().getVariable("nDaughterCharged(211)");
100  EXPECT_FLOAT_EQ(var->function(myParticles[8]), 2.0);
101 
102  }
103  TEST_F(InclusiveVariablesTest, daughterAverageOf)
104  {
105  StoreArray<Particle> myParticles;
106  auto* var = Manager::Instance().getVariable("daughterAverageOf(PDG)");
107  EXPECT_FLOAT_EQ(var->function(myParticles[8]), 105.25);
108  }
109 
110 }
111 
Belle2::StoreArray::registerRelationTo
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.
Definition: StoreArray.h:150
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
TestUtilities::TestParticleFactory
This is a class, which generates DataStore particles, according to the provided decay string e....
Definition: TestParticleFactory.h:39
Belle2::TEST_F
TEST_F(GlobalLabelTest, LargeNumberOfTimeDependentParameters)
Test large number of time-dep params for registration and retrieval.
Definition: globalLabel.cc:65
TestUtilities::TestParticleFactory::produceParticle
const Belle2::Particle * produceParticle(const std::string &decayString, const TLorentzVector &momentum, const TVector3 &vertex)
Main method to produce particles.
Definition: TestParticleFactory.h:61
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33