Belle II Software development
TrgEclBhabha.h
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#pragma once
10
11#include <vector>
12
13#include "trg/ecl/TrgEclMapping.h"
14#include "trg/ecl/TrgEclDataBase.h"
15
16#include <Math/Vector3D.h>
17
18//
19//
20//
21namespace Belle2 {
26//
27//
28//
29 //
31 //
33
34 public:
36 TrgEclBhabha();
37
39 virtual ~TrgEclBhabha();
40
43
46
47 public:
49 bool getBhabha00(std::vector<double>);
51 bool getBhabha01();
53 bool getBhabha02();
55 bool getmumu();
57 bool getTaub2b(double);
59 bool getTaub2b2(double);
61 bool getTaub2b3(double);
63 int getBhabhaAddition(void);
65 std::vector<double> getBhabhaComb() {return m_BhabhaComb ;}
67 void save(int);
69 void set2DBhabhaThreshold(const std::vector<double>& i2DBhabhaThresholdFWD,
70 const std::vector<double>& i2DBhabhaThresholdBWD)
71 {
72 m_2DBhabhaThresholdFWD = i2DBhabhaThresholdFWD;
73 m_2DBhabhaThresholdBWD = i2DBhabhaThresholdBWD;
74 }
75
76 void set3DBhabhaVetoAngle(const std::vector<int>& i3DBhabhaVetoAngle)
77 {
78 m_3DBhabhaVetoAngle = i3DBhabhaVetoAngle;
79 };
80
81 void set3DBhabhaVetoThreshold(const std::vector<double>& i3DBhabhaVetoThreshold)
82 {
83 m_3DBhabhaVetoThreshold = i3DBhabhaVetoThreshold;
84 };
85
86 void set3DBhabhaSelectionThreshold(const std::vector<double>& i3DBhabhaSelectionThreshold)
87 {
88 m_3DBhabhaSelectionThreshold = i3DBhabhaSelectionThreshold;
89 };
90
91 void set3DBhabhaSelectionAngle(const std::vector<int>& i3DBhabhaSelectionAngle)
92 {
93 m_3DBhabhaSelectionAngle = i3DBhabhaSelectionAngle;
94 };
95
96 void set3DBhabhaSelectionPreScale(const std::vector<int>& i3DBhabhaSelectionPreScale)
97 {
98 m_3DBhabhaSelectionPreScale = i3DBhabhaSelectionPreScale;
99 };
100
101 void setmumuThreshold(double mumuThreshold) { m_mumuThreshold = mumuThreshold; }
103 void setmumuAngle(const std::vector<int>& imumuAngle) { m_mumuAngle = imumuAngle; }
105 void sethie12BhabhaVetoAngle(const std::vector<int>& ihie12BhabhaVetoAngle)
106 {
107 m_hie12BhabhaVetoAngle = ihie12BhabhaVetoAngle;
108 }
109
110 void set3DBhabhaVetoInTrackThetaRegion(const std::vector<int>& i3DBhabhaVetoInTrackThetaRegion)
111 {
112 m_3DBhabhaVetoInTrackThetaRegion = i3DBhabhaVetoInTrackThetaRegion;
113 }
114
116 void setTaub2bAngleCut(const std::vector<int>& iTaub2bAngleCut)
117 {
118 m_taub2bAngleCut = iTaub2bAngleCut;
119 }
120
121 void setTaub2bEtotCut(const double iTaub2bEtotCut)
122 {
123 m_taub2bEtotCut = iTaub2bEtotCut;
124 }
125
126 void setTaub2bCLELabCut(const double iTaub2bCLELabCut)
127 {
128 m_taub2bCLELabCut = iTaub2bCLELabCut;
129 }
130
131 void setTaub2b2Cut(const std::vector<int>& iTaub2b2AngleCut,
132 const double iTaub2b2EtotCut,
133 const std::vector<double>& iTaub2b2CLELabCut)
134 {
135 m_taub2b2AngleCut = iTaub2b2AngleCut;
136 m_taub2b2EtotCut = iTaub2b2EtotCut;
137 m_taub2b2CLELabCut = iTaub2b2CLELabCut;
138 }
139
140 void setTaub2b3Cut(const std::vector<int>& iTaub2b3AngleCut,
141 const double iTaub2b3EtotCut,
142 const double iTaub2b3CLEb2bLabCut,
143 const std::vector<double>& iTaub2b3CLELabCut)
144 {
145 m_taub2b3AngleCut = iTaub2b3AngleCut;
146 m_taub2b3EtotCut = iTaub2b3EtotCut;
147 m_taub2b3CLEb2bLabCut = iTaub2b3CLEb2bLabCut;
148 m_taub2b3CLELabCut = iTaub2b3CLELabCut;
149 }
150
151 void sethie4LowCLELabCut(const double hie4LowCLELabCut)
152 {
153 m_hie4LowCLELabCut = hie4LowCLELabCut;
154 }
155
158 {
160 }
161
163 {
164 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaVetoClusterTCIds.size() != 2) {
165 return -10;
166 }
167 return m_3DBhabhaVetoClusterTCIds[cl_idx];
168 }
169
172 {
173 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaVetoClusterThetaIds.size() != 2) {
174 return -10;
175 }
176 return m_3DBhabhaVetoClusterThetaIds[cl_idx];
177 }
178
180 {
181 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaVetoClusterEnergies.size() != 2) {
182 return -10;
183 }
184 return m_3DBhabhaVetoClusterEnergies[cl_idx];
185 }
186
188 {
189 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaVetoClusterTimings.size() != 2) {
190 return -1000;
191 }
192 return m_3DBhabhaVetoClusterTimings[cl_idx];
193 }
194
206
208 {
209 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaSelectionClusterTCIds.size() != 2) {
210 return -10;
211 }
212 return m_3DBhabhaSelectionClusterTCIds[cl_idx];
213 }
214
217 {
218 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaSelectionClusterThetaIds.size() != 2) {
219 return -10;
220 }
222 }
223
225 {
226 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaSelectionClusterEnergies.size() != 2) {
227 return -10;
228 }
230 }
231
233 {
234 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaSelectionClusterTimings.size() != 2) {
235 return -1000;
236 }
238 }
239
245
246 private:
252
254 void get2CLETP(int, int, int&, int&, int&, int&);
255
257 std::vector<double> m_BhabhaComb;
259 std::vector<double> m_MaxTCId;
261 std::vector<double> m_MaxTCThetaId;
263 std::vector<double> m_ClusterEnergyLab;
265 std::vector<double> m_ClusterTiming;
267 std::vector<double> m_2DBhabhaThresholdFWD;
269 std::vector<double> m_2DBhabhaThresholdBWD;
271 std::vector<double> m_3DBhabhaVetoThreshold;
273 std::vector<int> m_3DBhabhaVetoAngle;
275 std::vector<double> m_3DBhabhaSelectionThreshold;
277 std::vector<int> m_3DBhabhaSelectionAngle;
283 std::vector<int> m_mumuAngle;
285 std::vector<int> m_hie12BhabhaVetoAngle;
286
287
289 std::vector<int> m_taub2bAngleCut;
294
295
305 std::vector<int> m_taub2b2AngleCut;
307 std::vector<double> m_taub2b2CLELabCut;
310 std::vector<int> m_taub2b3AngleCut;
316 std::vector<double> m_taub2b3CLELabCut;
327 std::vector<double> m_3DBhabhaVetoClusterEnergies;
329 std::vector<double> m_3DBhabhaVetoClusterTimings;
333 int m_3DBhabhaSelectionThetaFlag = std::numeric_limits<int>::quiet_NaN();
342 };
343//
344//
345//
347} // namespace Belle2
int m_3DBhabhaSelectionThetaFlag
flag which shows theta position of clusters of 3DBhabha Selection.
int m_taub2bAngleFlag
taub2b 2 cluster angle cut flag
int getTaub2bAngleFlag(void)
get taub2b 2 cluster angle cut flag
double m_taub2bEtotCut
taub2b total energy(TC theta id=1-17) cut (GeV)
std::vector< int > m_hie12BhabhaVetoAngle
hie12 bit, Angle selection of additional Bhabha veto in CMS in degree
void setTaub2b2Cut(const std::vector< int > &iTaub2b2AngleCut, const double iTaub2b2EtotCut, const std::vector< double > &iTaub2b2CLELabCut)
set taub2b2 cut
void save(int)
Save.
int getTaub2bEtotFlag(void)
get total energy(TC theta id=1-17) flag for taub2b
std::vector< double > m_3DBhabhaSelectionClusterEnergies
Energies of two clusters used for 3D Bhabha selection (GeV)
std::vector< int > m_3DBhabhaSelectionClusterThetaIds
ThetaIDs of two clusters used for 3D Bhabha selection.
std::vector< int > m_3DBhabhaSelectionPreScale
3D Selection Bhabha pre-scale
std::vector< double > m_2DBhabhaThresholdBWD
2D Bhabha Energy Threshold
double get3DBhabhaVetoClusterTiming(int cl_idx)
get each cluster timing of two clusters of 3D Bhabha veto (ns)
TrgEclBhabha & operator=(TrgEclBhabha &)=delete
Assignment operator, deleted.
TrgEclBhabha()
Constructor.
std::vector< int > m_taub2bAngleCut
taub2b 2 Cluster angle cut (degree)
void get2CLETP(int, int, int &, int &, int &, int &)
2 cluster energies, phi difference and theta sum
double get3DBhabhaSelectionClusterEnergy(int cl_idx)
get each cluster energy of two clusters of 3D Bhabha selection (GeV)
std::vector< double > m_3DBhabhaSelectionClusterTimings
Timings of two clusters used for 3D Bhabha selection (ns)
std::vector< int > m_mumuAngle
mumu bit Angle
std::vector< int > m_3DBhabhaVetoInTrackThetaRegion
theta region(low and high) of 3D Bhbabha veto InTrack
bool getmumu()
MuMu selection for calibration.
int get3DBhabhaSelectionThetaFlag(void)
get trigger bit(2bits) of flag which shows theta position of clusters of 3DBhabha Selection.
void setTaub2bAngleCut(const std::vector< int > &iTaub2bAngleCut)
set 2 Cluster angle selection for tau 1x1 decay [0], [1] for low and high of dphi,...
int m_3DBhabhaVetoInTrackFlag
trigger bit of flag(1bit) whether two clusters satisfy 3D Bhabha veto are in CDCTRG region in theta (...
double m_hie4LowCLELabCut
(hie4) CL E cut for minimum energy cluster in Lab in GeV
double get3DBhabhaSelectionClusterTiming(int cl_idx)
get each cluster timing of two clusters of 3D Bhabha selection (ns)
void setTaub2bCLELabCut(const double iTaub2bCLELabCut)
set cluster energy cut for taub2b
std::vector< double > m_3DBhabhaVetoClusterEnergies
Energies of two clusters of 3D Bhabha veto (GeV)
std::vector< int > m_3DBhabhaSelectionClusterTCIds
TCIDs of two clusters of 3D Bhabha selection.
void set3DBhabhaVetoAngle(const std::vector< int > &i3DBhabhaVetoAngle)
set 3D veto Bhabha Energy Angle
int m_taub2bEtotFlag
taub2b total energy(TC theta id=1-17) flag
std::vector< int > m_3DBhabhaVetoAngle
3D Veto Bhabha Energy Angle
std::vector< double > m_BhabhaComb
Bhabha Combination.
bool getBhabha02()
Belle II 3D Bhabha method for selection.
void sethie4LowCLELabCut(const double hie4LowCLELabCut)
(hie4) CL E cut for miniimum energy cluster in Lab in GeV
std::vector< double > m_3DBhabhaVetoThreshold
3D Veto Bhabha Energy Threshold
double m_taub2b2EtotCut
taub2b2 total energy cut (GeV)
TrgEclBhabha(TrgEclBhabha &)=delete
Destructor.
bool getTaub2b3(double)
Taub2b3.
int get3DBhabhaSelectionClusterThetaId(int cl_idx)
get each TC theta ID(most energetic TC in a cluster) of two clusters of 3D Bhabha selection
void set2DBhabhaThreshold(const std::vector< double > &i2DBhabhaThresholdFWD, const std::vector< double > &i2DBhabhaThresholdBWD)
set 2D Bhabha Energy Threshold
std::vector< double > m_taub2b2CLELabCut
taub2b2 cluster energy cut(high, low) (GeV) in lab
std::vector< double > m_ClusterTiming
Cluster Timing.
void setmumuAngle(const std::vector< int > &imumuAngle)
set mumu bit Angle selection
int get3DBhabhaVetoClusterThetaId(int cl_idx)
get each TC theta ID(most energetic TC in a cluster) of two clusters of 3D Bhabha veto
int getTaub2bClusterEFlag(void)
taub2b Cluster energy flag
bool getBhabha00(std::vector< double >)
Belle 2D Bhabha veto method.
void set3DBhabhaSelectionAngle(const std::vector< int > &i3DBhabhaSelectionAngle)
set 3D selection Bhabha Energy Angle
std::vector< int > m_3DBhabhaVetoClusterThetaIds
ThetaIds of two clusters of 3D Bhabha veto.
void sethie12BhabhaVetoAngle(const std::vector< int > &ihie12BhabhaVetoAngle)
set hie12 3D Bhabha addition Angle selection
std::vector< double > m_3DBhabhaSelectionThreshold
3D Selection Bhabha Energy Threshold
void setmumuThreshold(double mumuThreshold)
set mumu bit Threshold
void set3DBhabhaSelectionThreshold(const std::vector< double > &i3DBhabhaSelectionThreshold)
set 3D selection Bhabha Energy Threshold
std::vector< double > m_ClusterEnergyLab
Cluster Energy.
bool getBhabha01()
Belle II 3D Bhabha method for veto.
double get3DBhabhaVetoClusterEnergy(int cl_idx)
get each cluster energy of two clusters of 3D Bhabha veto (GeV)
void setTaub2bEtotCut(const double iTaub2bEtotCut)
set total energy cut for taub2b
bool getTaub2b(double)
Taub2b selection.
void set3DBhabhaSelectionPreScale(const std::vector< int > &i3DBhabhaSelectionPreScale)
set 3D selection pre-scale
std::vector< double > m_MaxTCId
Max TC Id.
std::vector< int > m_3DBhabhaVetoClusterTCIds
TCIDs of two clusters of 3D Bhabha veto.
double m_taub2bCLELabCut
taub2b Cluster one of energy cut in b2b in lab (GeV)
double m_mumuThreshold
mumu bit Energy Threshold
std::vector< int > m_3DBhabhaSelectionAngle
3D Selection Bhabha Energy Angle
int get3DBhabhaVetoInTrackFlag(void)
get trigger bit of flag(1bit) whether two clusters satisfy 3D Bhabha veto are in CDCTRG region in the...
std::vector< int > m_taub2b2AngleCut
taub2b2 two Cluster angle cut (degree)
double m_taub2b3EtotCut
taub2b3 total energy (TC theta ID =1-17) (GeV)
std::vector< double > m_3DBhabhaVetoClusterTimings
Timings of two clusters of 3D Bhabha veto (ns)
int m_taub2bClusterEFlag
taub2b Cluster energy flag
std::vector< double > m_MaxTCThetaId
Cluster ThetaId.
double m_taub2b3CLEb2bLabCut
taub2b3 cluster energy cut (GeV) with b2b cluster condition in lab
bool getTaub2b2(double)
Taub2b selection (tighter selection than Taub2b)
TrgEclDataBase * m_database
Object of Trigger ECL DataBase.
std::vector< double > getBhabhaComb()
Output 2D Bhabha combination.
void setTaub2b3Cut(const std::vector< int > &iTaub2b3AngleCut, const double iTaub2b3EtotCut, const double iTaub2b3CLEb2bLabCut, const std::vector< double > &iTaub2b3CLELabCut)
set taub2b3 cut
int get3DBhabhaVetoClusterTCId(int cl_idx)
get each TCID(most energetic TC in a cluster) of two clusters of 3D Bhabha veto
void set3DBhabhaVetoInTrackThetaRegion(const std::vector< int > &i3DBhabhaVetoInTrackThetaRegion)
set ThetaID (low and high) for 3DBhabhaVetoInTrack
int getBhabhaAddition(void)
Additional Bhabha veto.
void set3DBhabhaVetoThreshold(const std::vector< double > &i3DBhabhaVetoThreshold)
set 3D veto Bhabha Energy Threshold
virtual ~TrgEclBhabha()
Constructor.
std::vector< double > m_2DBhabhaThresholdFWD
2D Bhabha Energy Threshold
TrgEclMapping * m_TCMap
Object of TC Mapping.
std::vector< double > m_taub2b3CLELabCut
taub2b3 cluster energy cut (GeV) for all clusters in lab
int get3DBhabhaSelectionClusterTCId(int cl_idx)
get each TCID(most energetic TC in a cluster) of two clusters of 3D Bhabha selection
std::vector< int > m_taub2b3AngleCut
taub2b3 selection cuts (3,2,1,0) = (dphi low, dphi high, theta_sum low, theta_sum high)
class TrgEclDataBase;
A class of TC Mapping.
Abstract base class for different kinds of events.