Belle II Software development
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
31using namespace Belle2;
32
33REG_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:631
double getMass() const
Returns invariant mass (= nominal for FS particles)
Definition: Particle.h:507
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
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
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:650
@ c_accept
Accept this event.
Abstract base class for different kinds of events.