Belle II Software  release-05-02-19
KlongValidationModule.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Jo-Frederik Krohn *
7  * *
8  * This software is provided "as is" without any warranty. *
9  * **************************************************************************/
10 
11 #include <reconstruction/modules/KlId/KlongValidation/KlongValidationModule.h>
12 #include <mdst/dataobjects/KlId.h>
13 
14 #include <framework/datastore/StoreArray.h>
15 #include <framework/logging/Logger.h>
16 
17 // here's where the functions are hidden
18 #include <reconstruction/modules/KlId/KLMExpert/KlId.h>
19 #include <tracking/dataobjects/TrackClusterSeparation.h>
20 
21 #include <TFile.h>
22 #include <TGraph.h>
23 #include <cstring>
24 
25 using namespace Belle2;
26 using namespace KlId;
27 using namespace std;
28 
29 REG_MODULE(KlongValidation);
30 
32 {
33  setDescription("Module used by the validation server to generate root files for the K0L validation. It calculates fake rates and efficiencies.");
34  addParam("outputName", m_outputName,
35  "Name of the output root file (must end with .root)",
36  m_outputName);
37  addParam("KlIdCut", m_KlIdCut,
38  "If cut < 0, then only the neutral KLMClusters will be used. Otherwise, only the KLMClusters that satisfies the selection will be used.",
39  m_KlIdCut);
40 }
41 
43 {
44 }
45 
47 {
48  // require existence of necessary datastore obj
49  m_klmClusters.isRequired();
50  m_mcParticles.isRequired();
51 
52  // initialize root tree to write stuff into
53  m_f = new TFile(m_outputName.c_str(), "recreate");
55  m_Phi_Pass = new TH1F("Phi Passed", "Passed #Phi;#Phi;Count", 32, -3.2, 3.2);
56  m_Phi_all = new TH1F("Phi All", "All #Phi;#Phi;Count", 32, -3.2, 3.2);
57  m_effPhi = new TH1F("Phi Efficiency", "Efficiency #Phi;#Phi;Efficiency", 32, -3.2, 3.2);
58 
59  m_Theta_Pass = new TH1F("Theta Passed", "Passed #Theta;#Theta;Count", 32, 0, 3.2);
60  m_Theta_all = new TH1F("Theta All", "All #Theta;#Theta;Count", 32, 0, 3.2);
61  m_effTheta = new TH1F("Theta Efficiency", "Efficiency #Theta;#Theta;Efficiency", 32, 0, 3.2);
62 
63  m_Mom_Pass = new TH1F("Momentum Efficiency", "Efficiency Momentum;Momentum;Efficiency", 25, 0, 5);
64  m_Mom_all = new TH1F("Momentum Efficiency normalise", "Efficiency Momentum;Momentum;Count", 25, 0, 5);
65  m_Mom_all_plot = new TH1F("Momentum Efficiency all, obtained from clusters", "Efficiency Momentum;Momentum;Count", 25, 0, 5);
66  m_effMom = new TH1F("Momentum Efficiency obtained from cluster", "Efficiency Momentum;Momentum;Efficiency", 25, 0, 5);
67 
68  m_fakePhi_Pass = new TH1F("Phi Fake Passsed", "Fake Passed #Phi;#Phi;Count", 32, -3.2, 3.2);
69  m_fakePhi = new TH1F("Phi Fake Rate", "Fake Rate #Phi;#Phi;Fake Rate", 32, -3.2, 3.2);
70 
71  m_fakeTheta_Pass = new TH1F("Theta Fake Passed", "Fake Passed #Theta;#Theta;Count", 32, 0, 3.2);
72  m_fakeTheta = new TH1F("Theta Fake Rate", "Fake Rate #Theta;#Theta;Fake Rate", 32, 0, 3.2);
73 
74  m_fakeMom_Pass = new TH1F("Momentum Fake Passed", "Momentum Fake Passed;Momentum;Count", 25, 0, 5);
75  m_fakeMom = new TH1F("Momentum Fake Rate", "Momentum Fake Rate;Momentum;Fake Rate", 25, 0, 5);
76 
77  m_time = new TH1F("KLM Cluster Time", "Cluster Timing;Cluster time;Count", 20, -5, 15);
78  m_trackSep = new TH1F("KLM trackSeperation Distance", "KLM trackSeperation Distance;Distance;Count", 100, 0, 4000);
79  m_energy = new TH1F("KLM Energy", "KLM Energy;Energy;count", 25, 0, 5);
80  m_nLayer = new TH1F("KLM N-Layer", "N-layer;N-layer;count", 20, 0, 20);
81 
82  m_bkgPhi = new TH1F("Phi Beam BKG", "BeamBKG #Phi;#Phi;Background count", 32, -3.2, 3.2);
83  m_bkgTheta = new TH1F("Theta Beam BKG", "BeamBKG #Theta;#Theta;Background count", 32, 0, 3.2);
84  m_bkgMom = new TH1F("Momentum Beam BKG", "BeamBKG #Momentum;#Momentum;Background count", 25, 0, 5);
85 
86  m_innermostLayer = new TH1F("Innermost layer", "Innermost layer;Innermost layer; Count", 20, 0, 20);
87  m_trackFlag = new TH1F("Track flag", "TrackFlag;Flag; Count", 2, 0, 1);
88  m_ECLFlag = new TH1F("ECL flag", "ECLFlag;Flag; Count", 2, 0, 1);
89 
90  m_klidFake = new TH1F("Klid Fake", "klid Fake;klid; Count", m_xbins.size() - 1, m_xbins.data());
91  m_klidTrue = new TH1F("Klid True", "Klid True;klid; Count", m_xbins.size() - 1, m_xbins.data());
92  m_klidAll = new TH1F("Klid all", "klid all clusters;klid; Count", m_xbins.size() - 1, m_xbins.data());
93 }
94 
96 {
97 }
98 
100 {
101 }
102 
104 {
105  // the performance of the classifier depends on the cut on the classifier
106  // output. This is generally arbitrary as it depends on what the user wants.
107  // Finding K_L or rejecting?
108  // Therefore an arbitrary cut is chosen so that something happens and we can judge
109  // if the behavior changes.
110  for (const KLMCluster& cluster : m_klmClusters) {
111 
112  MCParticle* mcpart = NULL;
113 
114  auto klidObj = cluster.getRelatedTo<KlId>();
115 
116  if (m_KlIdCut >= 0) {
117  if (klidObj) {
118  if (klidObj->getKlId() > m_KlIdCut) {
119  m_reconstructedAsKl = true;
120  } else {
121  m_reconstructedAsKl = false;
122  }
123  }
124  } else {
125  if (!cluster.getAssociatedTrackFlag()) {
126  m_reconstructedAsKl = true;
127  }
128  }
129  mcpart = cluster.getRelatedTo<MCParticle>();
130  // find mc truth
131  // go thru all mcparts mothers up to highest particle and check if its a Klong
132  m_isKl = 0;
133  if (mcpart == nullptr) {
134  m_isKl = 0; // this is the case for beambkg
135  m_isBeamBKG = 1;
136  } else {
137  m_isBeamBKG = 0;
138  while (!(mcpart -> getMother() == nullptr)) {
139  if (mcpart -> getPDG() == 130) {
140  m_isKl = 1;
141  break;
142  }
143  mcpart = mcpart -> getMother();
144  }// while
145  }
146  // second param is cut on
147  m_isKl = isKLMClusterSignal(cluster, 0);
148 
149  double time = cluster.getTime();
150  double nLayer = cluster.getLayers();
151  double energy = cluster.getEnergy();
152  double trackSep = 1.0e20;
153  auto trackSeperations = cluster.getRelationsTo<TrackClusterSeparation>();
154  for (auto trackSeperation : trackSeperations) {
155  double dist = trackSeperation.getDistance();
156  if (dist < trackSep) {
157  trackSep = dist;
158  }
159  }
160  // only fill if cluster is correctly reconstructed Kl
161  if (m_reconstructedAsKl && m_isKl) {m_passed = true;}
162  else {m_passed = false;}
163 
164  // used for fake rate
165  if (m_reconstructedAsKl && (!m_isKl)) {m_faked = true;}
166  else {m_faked = false;}
167 
168  m_phi = cluster.getMomentum().Phi();
169  m_theta = cluster.getMomentum().Theta();
170  m_momentum = std::abs(cluster.getMomentumMag());
171 
172  if (m_passed) {
173  m_Phi_Pass -> Fill(m_phi);
174  m_Theta_Pass -> Fill(m_theta);
175  m_Mom_Pass -> Fill(m_momentum);
176  }
177 
178  if (m_faked) {
179  m_fakePhi_Pass -> Fill(m_phi);
180  m_fakeTheta_Pass -> Fill(m_theta);
181  m_fakeMom_Pass -> Fill(m_momentum);
182  }
183 
184  if (m_isBeamBKG) {
185  m_bkgPhi-> Fill(m_phi);
186  m_bkgTheta-> Fill(m_theta);
187  m_bkgMom-> Fill(m_momentum);
188  }
189 
190  m_klidAll->SetMinimum(0.);
191  m_Mom_all_plot->SetMinimum(0.);
192  m_effPhi->SetMinimum(0.);
193  m_effTheta->SetMinimum(0.);
194  m_effMom->SetMinimum(0.);
195  m_fakePhi->SetMinimum(0.);
196  m_fakeTheta->SetMinimum(0.);
197  m_fakeMom->SetMinimum(0.);
198  m_time->SetMinimum(0.);
199  m_trackSep->SetMinimum(0.);
200  m_energy->SetMinimum(0.);
201  m_nLayer->SetMinimum(0.);
202  m_bkgPhi->SetMinimum(0.);
203  m_bkgTheta->SetMinimum(0.);
204  m_bkgMom->SetMinimum(0.);
205  m_innermostLayer->SetMinimum(0.);
206  m_trackFlag->SetMinimum(0.);
207  m_ECLFlag->SetMinimum(0.);
208 
209  //fil all to normalise later
210  m_Phi_all -> Fill(m_phi);
211  m_Theta_all -> Fill(m_theta);
212  m_Mom_all -> Fill(m_momentum);
213  m_Mom_all_plot -> Fill(m_momentum);
214 
215  m_time ->Fill(time);
216  m_trackSep->Fill(trackSep);
217  m_energy->Fill(energy);
218  m_nLayer->Fill(nLayer);
219  m_innermostLayer->Fill(cluster.getInnermostLayer());
220  m_trackFlag->Fill(cluster.getAssociatedTrackFlag());
221  m_ECLFlag->Fill(cluster.getAssociatedEclClusterFlag());
222 
223  if (klidObj) {
224  if (!m_isKl) {
225  m_klidFake ->Fill(klidObj->getKlId());
226  }
227  if (m_isKl) {
228  m_klidTrue ->Fill(klidObj->getKlId());
229  }
230  m_klidAll ->Fill(klidObj->getKlId());
231  }
232  }// for klm clusters
233 
234 }
235 
237 {
238  // write TEff to root file ,
239  m_f -> cd();
240  // TH1F is not compatible with the validation server
241  m_effPhi->Divide(m_Phi_Pass, m_Phi_all);
243  m_effMom->Divide(m_Mom_Pass, m_Mom_all);
244 
248 
249  std::vector<double> efficiency(m_xbins.size());
250  std::vector<double> purity(m_xbins.size());
251  std::vector<double> backrej(m_xbins.size());
252  double NallKlong = m_klidTrue->GetEntries();
253  double NallFakes = m_klidFake->GetEntries();
254  for (unsigned int i = 0; i < m_xbins.size() - 1; ++i) {
255  double NtruePositive = m_klidTrue->Integral(i, m_xbins.size() - 1);
256  double NfalsePositive = m_klidFake->Integral(i, m_xbins.size() - 1);
257  if ((NtruePositive + NfalsePositive) <= 0) {
258  purity[i] = 0;
259  } else {
260  purity[i] = NtruePositive / (NtruePositive + NfalsePositive);
261  }
262  if (NallFakes) {
263  backrej[i] = 1 - NfalsePositive / NallFakes;
264  } else {
265  backrej[i] = 0;
266  }
267  if (NallKlong <= 0) {
268  B2WARNING("No Klongs found in ROC calculation.");
269  } else {
270  efficiency[i] = NtruePositive / NallKlong;
271  }
272  }
273 
274  m_ROC = new TGraph(m_xbins.size(), efficiency.data(), purity.data());
275  m_backRej = new TGraph(m_xbins.size(), efficiency.data(), backrej.data());
276 
277  m_ROC->SetMarkerStyle(3);
278  m_backRej->SetMarkerStyle(3);
279  m_ROC->SetLineColorAlpha(kBlue, 0.0);
280  m_backRej->SetLineColorAlpha(kBlue, 0.0);
281  m_ROC->GetXaxis()->SetTitle("Efficiency");
282  m_backRej->GetXaxis()->SetTitle("Efficiency");
283  m_ROC->GetYaxis()->SetTitle("Purity");
284  m_backRej->GetYaxis()->SetTitle("Background rejection");
285  m_ROC-> SetTitle("Klong Purity vs Efficiency");
286  m_backRej-> SetTitle("Klong background rejection vs Efficiency");
287  m_ROC-> GetListOfFunctions() -> Add(new TNamed("Description",
288  "Purity vs Efficiency each point represents a cut on the klong ID."));
289  m_ROC -> GetListOfFunctions() -> Add(new TNamed("Check", "Should be as high as possible"));
290  m_backRej -> GetListOfFunctions() -> Add(new TNamed("Check", "Should be as high as possible"));
291  m_ROC -> GetListOfFunctions() -> Add(new TNamed("Contact", "fnc@lnf.infn.it"));
292  m_backRej -> GetListOfFunctions() -> Add(new TNamed("Contact", "fnc@lnf.infn.it"));
293 
294  // tuple: pointer to the plot, name of the plot, true for shifter plots
295  std::vector<std::tuple<TH1F*, std::string, bool>> histograms;
296  histograms.push_back(make_tuple(m_klidAll, "KlId distribution", true));
297  histograms.push_back(make_tuple(m_Mom_all_plot, "All Momenta generated", false));
298  histograms.push_back(make_tuple(m_effPhi, "KlId efficiency in Phi", false));
299  histograms.push_back(make_tuple(m_effTheta, "KlId efficiency in Theta", true));
300  histograms.push_back(make_tuple(m_effMom, "KlId efficiency in Momentum", true));
301  histograms.push_back(make_tuple(m_fakePhi, "KlId fake rate in Phi", false));
302  histograms.push_back(make_tuple(m_fakeTheta, "KlId fake rate in Theta", true));
303  histograms.push_back(make_tuple(m_fakeMom, "KlId fake rate in Momentum", true));
304  histograms.push_back(make_tuple(m_time, "KLMClusters time", true));
305  histograms.push_back(make_tuple(m_trackSep, "Distance of KLMCluster to closest Track", true));
306  histograms.push_back(make_tuple(m_energy, "KLMClusters energy", false));
307  histograms.push_back(make_tuple(m_nLayer, "KLMClusters nLayer", false));
308  histograms.push_back(make_tuple(m_innermostLayer, "KLMClusters innermostLayer", false));
309  histograms.push_back(make_tuple(m_bkgPhi, "Beam bkg in Phi", false));
310  histograms.push_back(make_tuple(m_bkgTheta, "Beam bkg in Theta", false));
311  histograms.push_back(make_tuple(m_bkgMom, "Beam bkg in Momentum", false));
312  histograms.push_back(make_tuple(m_trackFlag, "Track flag", false));
313  histograms.push_back(make_tuple(m_ECLFlag, "ECLCluster flag", false));
314 
315  for (auto hist : histograms) {
316  std::get<0>(hist) -> SetTitle(std::get<1>(hist).c_str());
317  std::get<0>(hist) -> GetListOfFunctions() -> Add(new TNamed("Description", std::get<1>(hist)));
318  std::get<0>(hist) -> GetListOfFunctions() -> Add(new TNamed("Check", "Should not change"));
319  std::get<0>(hist) -> GetListOfFunctions() -> Add(new TNamed("Contact", "fnc@lnf.infn.it"));
320  if (std::get<2>(hist))
321  std::get<0>(hist) -> GetListOfFunctions() -> Add(new TNamed("MetaOptions", "shifter,pvalue-warn=0.99,pvalue-error=0.1"));
322  else
323  std::get<0>(hist) -> GetListOfFunctions() -> Add(new TNamed("MetaOptions", "pvalue-warn=0.99,pvalue-error=0.1"));
324  std::get<0>(hist) -> Write();
325  }
326 
327  //this guy is a tgraph
328  m_ROC -> Write();
329  m_backRej -> Write();
330  m_f -> Close();
331 }
Belle2::KlongValidationModule::m_nLayer
TH1F * m_nLayer
layer count plot
Definition: KlongValidationModule.h:131
Belle2::KlongValidationModule::m_mcParticles
StoreArray< MCParticle > m_mcParticles
storearrays
Definition: KlongValidationModule.h:159
Belle2::KlongValidationModule::m_Mom_all
TH1F * m_Mom_all
momentum efficiency
Definition: KlongValidationModule.h:115
Belle2::KlongValidationModule::m_f
TFile * m_f
root tree etc.
Definition: KlongValidationModule.h:169
Belle2::KlongValidationModule::m_fakePhi_Pass
TH1F * m_fakePhi_Pass
fake phi, angle in x-y
Definition: KlongValidationModule.h:119
Belle2::KlongValidationModule::m_effPhi
TH1F * m_effPhi
efficiency in x-y plane
Definition: KlongValidationModule.h:92
Belle2::Module::setDescription
void setDescription(const std::string &description)
Sets the description of the module.
Definition: Module.cc:216
Belle2::KlongValidationModule::m_klidTrue
TH1F * m_klidTrue
used for roc
Definition: KlongValidationModule.h:147
Belle2::KlongValidationModule::m_fakeTheta_Pass
TH1F * m_fakeTheta_Pass
fake theta, angle to z
Definition: KlongValidationModule.h:121
Belle2::KlongValidationModule::m_klmClusters
StoreArray< KLMCluster > m_klmClusters
storearrays
Definition: KlongValidationModule.h:157
KlId
Helper functions for all klid modules to improve readability of the code.
Definition: KlId.h:28
REG_MODULE
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Definition: Module.h:652
Belle2::KlongValidationModule::event
virtual void event() override
process event
Definition: KlongValidationModule.cc:103
Belle2::KlongValidationModule::m_fakeMom
TH1F * m_fakeMom
fake momentum plot
Definition: KlongValidationModule.h:102
Belle2::KlongValidationModule::beginRun
virtual void beginRun() override
beginn run
Definition: KlongValidationModule.cc:95
Belle2::KlongValidationModule::m_effMom
TH1F * m_effMom
momentum efficiency
Definition: KlongValidationModule.h:96
Belle2::KlongValidationModule::m_Phi_all
TH1F * m_Phi_all
efficiency in x-y plane
Definition: KlongValidationModule.h:111
Belle2::KlongValidationModule::m_phi
double m_phi
angle in x-y
Definition: KlongValidationModule.h:76
Belle2::KlongValidationModule::m_KlIdCut
float m_KlIdCut
of > 0 use Klid else use trackflag as reconstruction criterion
Definition: KlongValidationModule.h:86
Belle2::KlongValidationModule::m_ROC
TGraph * m_ROC
roc
Definition: KlongValidationModule.h:151
Belle2::KlongValidationModule::m_trackSep
TH1F * m_trackSep
track separation distance plot
Definition: KlongValidationModule.h:127
Belle2::KlongValidationModule::m_Theta_Pass
TH1F * m_Theta_Pass
efficiency in angle to z
Definition: KlongValidationModule.h:106
Belle2::Module
Base class for Modules.
Definition: Module.h:74
Belle2::KlongValidationModule::m_Mom_Pass
TH1F * m_Mom_Pass
momentum efficiency
Definition: KlongValidationModule.h:108
Belle2::KlongValidationModule::m_reconstructedAsKl
bool m_reconstructedAsKl
cluster reconstructed as K0L?
Definition: KlongValidationModule.h:84
Belle2::KlongValidationModule::m_bkgTheta
TH1F * m_bkgTheta
beambkg
Definition: KlongValidationModule.h:141
Belle2::KlongValidationModule::m_ECLFlag
TH1F * m_ECLFlag
ECL flag.
Definition: KlongValidationModule.h:137
Belle2::KlongValidationModule::m_klidAll
TH1F * m_klidAll
used for roc
Definition: KlongValidationModule.h:149
Belle2::KlongValidationModule::m_passed
bool m_passed
did cluster pass selection of algorythm?
Definition: KlongValidationModule.h:80
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::KlongValidationModule::m_Theta_all
TH1F * m_Theta_all
efficiency in angle to z
Definition: KlongValidationModule.h:113
Belle2::KlongValidationModule::m_faked
bool m_faked
cluster wrongly reconstructed as K0L?
Definition: KlongValidationModule.h:82
Belle2::KlongValidationModule::m_time
TH1F * m_time
cluster timing plot
Definition: KlongValidationModule.h:125
Belle2::KlongValidationModule::m_momentum
double m_momentum
momentum
Definition: KlongValidationModule.h:72
Belle2::KlongValidationModule::m_klidFake
TH1F * m_klidFake
used for roc
Definition: KlongValidationModule.h:145
Belle2::KlongValidationModule::m_trackFlag
TH1F * m_trackFlag
track flag
Definition: KlongValidationModule.h:135
Belle2::KlongValidationModule::endRun
virtual void endRun() override
end run
Definition: KlongValidationModule.cc:99
Belle2::KlongValidationModule::KlongValidationModule
KlongValidationModule()
Constructor
Definition: KlongValidationModule.cc:31
Belle2::KLMCluster
KLM cluster data.
Definition: KLMCluster.h:38
Belle2::KlongValidationModule::m_innermostLayer
TH1F * m_innermostLayer
innermostlayer
Definition: KlongValidationModule.h:133
Belle2::KlongValidationModule::m_Phi_Pass
TH1F * m_Phi_Pass
efficiency in x-y plane
Definition: KlongValidationModule.h:104
Belle2::KlongValidationModule::m_theta
double m_theta
angle in z-plane
Definition: KlongValidationModule.h:74
Belle2::KlongValidationModule::m_bkgPhi
TH1F * m_bkgPhi
beambkg
Definition: KlongValidationModule.h:139
Belle2::TrackClusterSeparation::getDistance
double getDistance() const
Definition: TrackClusterSeparation.h:41
Belle2::Module::addParam
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:562
Belle2::KlongValidationModule::m_Mom_all_plot
TH1F * m_Mom_all_plot
momentum efficiency
Definition: KlongValidationModule.h:117
Belle2::KlongValidationModule::m_bkgMom
TH1F * m_bkgMom
beambkg
Definition: KlongValidationModule.h:143
Belle2::KlongValidationModule::terminate
virtual void terminate() override
terminate
Definition: KlongValidationModule.cc:236
Belle2::MCParticle
A Class to store the Monte Carlo particle information.
Definition: MCParticle.h:43
Belle2::KlongValidationModule::m_energy
TH1F * m_energy
energy plot
Definition: KlongValidationModule.h:129
Belle2::KlongValidationModule::m_fakeTheta
TH1F * m_fakeTheta
fake theta, angle to z
Definition: KlongValidationModule.h:100
Belle2::TrackClusterSeparation
Store one Track-KLMCluster separation as a ROOT object.
Definition: TrackClusterSeparation.h:30
Belle2::KlongValidationModule::~KlongValidationModule
virtual ~KlongValidationModule()
Destructor
Definition: KlongValidationModule.cc:42
Belle2::KlongValidationModule::initialize
virtual void initialize() override
initialize
Definition: KlongValidationModule.cc:46
Belle2::KlongValidationModule::m_effTheta
TH1F * m_effTheta
efficiency in angle to z
Definition: KlongValidationModule.h:94
Belle2::KlongValidationModule::m_backRej
TGraph * m_backRej
background rejection
Definition: KlongValidationModule.h:153
Belle2::KlongValidationModule::m_isBeamBKG
bool m_isBeamBKG
is beam bkg
Definition: KlongValidationModule.h:89
Belle2::KlongValidationModule::m_outputName
std::string m_outputName
output file name
Definition: KlongValidationModule.h:166
Belle2::KlongValidationModule::m_isKl
double m_isKl
K0L truth
Definition: KlongValidationModule.h:78
KlId::isKLMClusterSignal
bool isKLMClusterSignal(const Belle2::KLMCluster &cluster, float mcWeigthCut=0.66)
checks if a cluster is signal under the mcWeightcondition (mcWeight = energy deposition)
Definition: KlId.h:107
Belle2::KlongValidationModule::m_fakePhi
TH1F * m_fakePhi
fake phi, angle in x-y
Definition: KlongValidationModule.h:98
Belle2::KlongValidationModule::m_xbins
const std::vector< double > m_xbins
bins used for the ROC plots
Definition: KlongValidationModule.h:162
Belle2::KlongValidationModule::m_fakeMom_Pass
TH1F * m_fakeMom_Pass
fake momentum plot
Definition: KlongValidationModule.h:123