Belle II Software  release-08-01-10
PhysicsObjectsMiraBelleDst2Module.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #include <dqm/modules/PhysicsObjectsMiraBelle/PhysicsObjectsMiraBelleDst2Module.h>
10 #include <analysis/dataobjects/ParticleList.h>
11 #include <analysis/variables/ContinuumSuppressionVariables.h>
12 #include <analysis/variables/TrackVariables.h>
13 #include <analysis/utility/PCmsLabTransform.h>
14 #include <analysis/variables/Variables.h>
15 #include <framework/datastore/StoreObjPtr.h>
16 #include <framework/datastore/StoreArray.h>
17 #include <mdst/dataobjects/Track.h>
18 #include <mdst/dataobjects/TrackFitResult.h>
19 #include <mdst/dataobjects/KLMCluster.h>
20 #include <mdst/dataobjects/HitPatternCDC.h>
21 #include <mdst/dataobjects/HitPatternVXD.h>
22 #include <mdst/dataobjects/EventLevelTrackingInfo.h>
23 #include <mdst/dataobjects/PIDLikelihood.h>
24 #include <top/variables/TOPDigitVariables.h>
25 #include <arich/modules/arichDQM/ARICHDQMModule.h>
26 #include <arich/dataobjects/ARICHLikelihood.h>
27 #include <mdst/dataobjects/SoftwareTriggerResult.h>
28 #include <TDirectory.h>
29 #include <map>
30 
31 using namespace Belle2;
32 
33 REG_MODULE(PhysicsObjectsMiraBelleDst2);
34 
36 {
37  setDescription("Monitor Physics Objects Quality");
39 
40  addParam("TriggerIdentifier", m_triggerIdentifier,
41  "Trigger identifier string used to select events for the histograms", std::string("software_trigger_cut&skim&accept_hadron"));
42  addParam("DstListName", m_dstListName, "Name of the D*+ particle list", std::string("D*+:physMiraBelle"));
43 }
44 
46 {
47  TDirectory* oldDir = gDirectory;
48  oldDir->mkdir("PhysicsObjectsMiraBelleDst2");
49  oldDir->cd("PhysicsObjectsMiraBelleDst2");
50 
51  // Mass distributions
52  m_h_D0_pi0_InvM = new TH1F("hist_D0_pi0_InvM", "#pi^{0} mass of D^{*}#rightarrowK#pi#pi^{0};D0_pi0_InvM;", 50, 0.09, 0.17);
53 
54  oldDir->cd();
55 }
56 
57 
59 {
60  REG_HISTOGRAM
61 
63  result.isOptional();
64 }
65 
67 {
68  m_h_D0_pi0_InvM->Reset();
69 }
70 
72 {
73 
75  if (!result.isValid()) {
76  B2WARNING("SoftwareTriggerResult object not available but needed to select events for the histograms.");
77  return;
78  }
79 
80  const std::map<std::string, int>& results = result->getResults();
81  if (results.find(m_triggerIdentifier) == results.end()) {
82  B2WARNING("PhysicsObjectsMiraBelleDst2: Can't find trigger identifier: " << m_triggerIdentifier);
83  return;
84  }
85 
86  // apply software trigger
87  const bool accepted = (result->getResult(m_triggerIdentifier) == SoftwareTriggerCutResult::c_accept);
88  if (accepted == false) return;
89 
90  // get D* candidates
92 
93  for (unsigned int i = 0; i < dstParticles->getListSize(); i++) {
94  const Particle* dst = dstParticles->getParticle(i);
95  const Particle* d0 = dst->getDaughter(0);
96  float dst_mass = dst->getMass();
97  float d0_mass = d0->getMass();
98  float delta_m = dst_mass - d0_mass;
99  // Mass of Pi0
100  if (1.83 < d0_mass && d0_mass < 1.89 && 0.142 < delta_m && delta_m < 0.148) {
101  m_h_D0_pi0_InvM->Fill(Belle2::Variable::particleInvariantMassFromDaughters(d0->getDaughter(2)));
102  }
103  }
104 }
105 
106 // void PhysicsObjectsMiraBelleDst2Module::getPIDInformationMiraBelle(Particle* part, float pid[3][7])
107 // {
108 // PIDLikelihood* I_like_coffee = part->getPIDLikelihood();
109 // pid[0][0] = I_like_coffee->getProbability();
110 // }
111 
113 {
114 }
115 
117 {
118 }
119 
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
Definition: HistoModule.h:29
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:214
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
Definition: Module.cc:208
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
Definition: Module.h:80
Class to store reconstructed particles.
Definition: Particle.h:75
const Particle * getDaughter(unsigned i) const
Returns a pointer to the i-th daughter particle.
Definition: Particle.cc:635
double getMass() const
Returns invariant mass (= nominal for FS particles)
Definition: Particle.h:479
std::string m_dstListName
Name of the mu+ particle list.
void event() override
This method is called for each event.
void endRun() override
This method is called if the current run ends.
void terminate() override
This method is called at the end of the event processing.
std::string m_triggerIdentifier
Trigger identifier string used to select events for the histograms.
void beginRun() override
Called when entering a new run.
TH1F * m_h_D0_pi0_InvM
Pi0 invariant mass for D0->Kpipi0.
void defineHisto() override
Definition of the histograms.
Type-safe access to single objects in the data store.
Definition: StoreObjPtr.h:96
REG_MODULE(arichBtest)
Register the Module.
void addParam(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
Definition: Module.h:560
@ c_accept
Accept this event.
Abstract base class for different kinds of events.