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 BhabhaComb ;}
67 void save(int);
69 void set2DBhabhaThreshold(const std::vector<double>& i2DBhabhaThresholdFWD,
70 const std::vector<double>& i2DBhabhaThresholdBWD)
71 {
72 _2DBhabhaThresholdFWD = i2DBhabhaThresholdFWD;
73 _2DBhabhaThresholdBWD = i2DBhabhaThresholdBWD;
74 }
76 void set3DBhabhaSelectionThreshold(const std::vector<double>& i3DBhabhaSelectionThreshold)
77 {
78 _3DBhabhaSelectionThreshold = i3DBhabhaSelectionThreshold;
79 };
81 void set3DBhabhaVetoThreshold(const std::vector<double>& i3DBhabhaVetoThreshold)
82 {
83 _3DBhabhaVetoThreshold = i3DBhabhaVetoThreshold;
84 };
86 void set3DBhabhaSelectionAngle(const std::vector<double>& i3DBhabhaSelectionAngle)
87 {
88 _3DBhabhaSelectionAngle = i3DBhabhaSelectionAngle;
89 };
91 void set3DBhabhaVetoAngle(const std::vector<double>& i3DBhabhaVetoAngle)
92 {
93 _3DBhabhaVetoAngle = i3DBhabhaVetoAngle;
94 };
96 void setmumuThreshold(int mumuThreshold) {_mumuThreshold = mumuThreshold; }
98 void setmumuAngle(const std::vector<double>& imumuAngle) {_mumuAngle = imumuAngle; }
100 void set3DBhabhaAddAngleCut(const std::vector<double>& i3DBhabhaAddAngleCut)
101 {
102 m_3DBhabhaAddAngleCut = i3DBhabhaAddAngleCut;
103 }
105 void set3DBhabhaVetoInTrackThetaRegion(const std::vector<int>& i3DBhabhaVetoInTrackThetaRegion)
106 {
107 m_3DBhabhaVetoInTrackThetaRegion = i3DBhabhaVetoInTrackThetaRegion;
108 }
111 void setTaub2bAngleCut(const std::vector<int>& iTaub2bAngleCut)
112 {
113 m_taub2bAngleCut = iTaub2bAngleCut;
114 }
116 void setTaub2bEtotCut(const double iTaub2bEtotCut)
117 {
118 m_taub2bEtotCut = iTaub2bEtotCut;
119 }
121 void setTaub2bClusterECut(const double iTaub2bClusterECut1,
122 const double iTaub2bClusterECut2)
123 {
124 m_taub2bClusterECut1 = iTaub2bClusterECut1;
125 m_taub2bClusterECut2 = iTaub2bClusterECut2;
126 }
128 void setTaub2b2Cut(const std::vector<int>& iTaub2b2AngleCut,
129 const double iTaub2b2EtotCut,
130 const double iTaub2b2CLEEndcapCut,
131 const double iTaub2b2CLECut)
132 {
133 m_taub2b2AngleCut = iTaub2b2AngleCut;
134 m_taub2b2EtotCut = iTaub2b2EtotCut;
135 m_taub2b2CLEEndcapCut = iTaub2b2CLEEndcapCut;
136 m_taub2b2CLECut = iTaub2b2CLECut;
137 }
139 void setTaub2b3Cut(const std::vector<int>& iTaub2b3AngleCut,
140 const double iTaub2b3EtotCut,
141 const double iTaub2b3CLEb2bCut,
142 const double iTaub2b3CLELowCut,
143 const double iTaub2b3CLEHighCut)
144 {
145 m_taub2b3AngleCut = iTaub2b3AngleCut;
146 m_taub2b3EtotCut = iTaub2b3EtotCut;
147 m_taub2b3CLEb2bCut = iTaub2b3CLEb2bCut;
148 m_taub2b3CLELowCut = iTaub2b3CLELowCut;
149 m_taub2b3CLEHighCut = iTaub2b3CLEHighCut;
150 }
154 {
156 }
159 {
160 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaVetoClusterTCIds.size() != 2) {
161 return -10;
162 }
163 return m_3DBhabhaVetoClusterTCIds[cl_idx];
164 }
168 {
169 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaVetoClusterThetaIds.size() != 2) {
170 return -10;
171 }
172 return m_3DBhabhaVetoClusterThetaIds[cl_idx];
173 }
176 {
177 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaVetoClusterEnergies.size() != 2) {
178 return -10;
179 }
180 return m_3DBhabhaVetoClusterEnergies[cl_idx];
181 }
184 {
185 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaVetoClusterTimings.size() != 2) {
186 return -1000;
187 }
188 return m_3DBhabhaVetoClusterTimings[cl_idx];
189 }
199 {
201 }
204 {
205 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaSelectionClusterTCIds.size() != 2) {
206 return -10;
207 }
208 return m_3DBhabhaSelectionClusterTCIds[cl_idx];
209 }
213 {
214 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaSelectionClusterThetaIds.size() != 2) {
215 return -10;
216 }
218 }
221 {
222 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaSelectionClusterEnergies.size() != 2) {
223 return -10;
224 }
226 }
229 {
230 if (cl_idx < 0 || cl_idx > 1 || m_3DBhabhaSelectionClusterTimings.size() != 2) {
231 return -1000;
232 }
234 }
241
242 private:
248
250 void get2CLETP(int, int, int&, int&, int&, int&);
251
253 std::vector<double> BhabhaComb;
255 std::vector<double> MaxTCId;
257 std::vector<double> MaxTCThetaId;
259 std::vector<double> ClusterEnergy;
261 std::vector<double> ClusterTiming;
263 std::vector<ROOT::Math::XYZVector> ClusterPosition;
265 std::vector<double> _2DBhabhaThresholdFWD;
267 std::vector<double> _2DBhabhaThresholdBWD;
269 std::vector<double> _3DBhabhaSelectionThreshold;
271 std::vector<double> _3DBhabhaVetoThreshold;
273 std::vector<double> _3DBhabhaSelectionAngle;
275 std::vector<double> _3DBhabhaVetoAngle;
279 std::vector<double> _mumuAngle;
281 std::vector<double> m_3DBhabhaAddAngleCut;
283 std::vector<int> m_taub2bAngleCut;
299 std::vector<int> m_taub2b2AngleCut;
304
307 std::vector<int> m_taub2b3AngleCut;
316
325 std::vector<double> m_3DBhabhaVetoClusterEnergies;
327 std::vector<double> m_3DBhabhaVetoClusterTimings;
331 int m_3DBhabhaSelectionThetaFlag = std::numeric_limits<int>::quiet_NaN();
340 };
341//
342//
343//
345} // namespace Belle2
A Class of ECL Trigger clustering
Definition: TrgEclBhabha.h:32
double m_taub2b3CLELowCut
taub2b3 cluster energy cut2 (GeV)
Definition: TrgEclBhabha.h:313
int m_3DBhabhaSelectionThetaFlag
flag which shows theta position of clusters of 3DBhabha Selection.
Definition: TrgEclBhabha.h:331
int m_taub2bAngleFlag
taub2b 2 cluster angle cut flag
Definition: TrgEclBhabha.h:291
int getTaub2bAngleFlag(void)
get taub2b 2 cluster angle cut flag
Definition: TrgEclBhabha.h:236
double m_taub2bEtotCut
taub2b total energy(TC theta id=1-17) cut (GeV)
Definition: TrgEclBhabha.h:285
bool GetBhabha00(std::vector< double >)
Belle 2D Bhabha veto method.
double m_taub2b3CLEHighCut
taub2b3 cluster energy cut3 (GeV)
Definition: TrgEclBhabha.h:315
void save(int)
Save.
bool Getmumu()
MuMu selection for calibration.
int getTaub2bEtotFlag(void)
get total energy(TC theta id=1-17) flag for taub2b
Definition: TrgEclBhabha.h:238
std::vector< double > m_3DBhabhaSelectionClusterEnergies
Energies of two clusters used for 3D Bhabha selection (GeV)
Definition: TrgEclBhabha.h:337
std::vector< int > m_3DBhabhaSelectionClusterThetaIds
ThetaIDs of two clusters used for 3D Bhabha selection.
Definition: TrgEclBhabha.h:335
double get3DBhabhaVetoClusterTiming(int cl_idx)
get each cluster timing of two clusters of 3D Bhabha veto (ns)
Definition: TrgEclBhabha.h:183
TrgEclBhabha & operator=(TrgEclBhabha &)=delete
Assignement operator, deleted.
int GetBhabhaAddition(void)
Additional Bhabha veto.
std::vector< double > MaxTCId
Max TC Id.
Definition: TrgEclBhabha.h:255
std::vector< double > GetBhabhaComb()
Output 2D Bhabha combination.
Definition: TrgEclBhabha.h:65
TrgEclBhabha()
Constructor.
Definition: TrgEclBhabha.cc:67
std::vector< int > m_taub2bAngleCut
taub2b 2 Cluster angle cut (degree)
Definition: TrgEclBhabha.h:283
void get2CLETP(int, int, int &, int &, int &, int &)
2 cluster energies, phi difference and theta sum
void set3DBhabhaAddAngleCut(const std::vector< double > &i3DBhabhaAddAngleCut)
set 3D Bhabha addtion Angle selection
Definition: TrgEclBhabha.h:100
double get3DBhabhaSelectionClusterEnergy(int cl_idx)
get each cluster energy of two clusters of 3D Bhabha selection (GeV)
Definition: TrgEclBhabha.h:220
std::vector< double > m_3DBhabhaSelectionClusterTimings
Timings of two clusters used for 3D Bhabha selection (ns)
Definition: TrgEclBhabha.h:339
double _mumuThreshold
mumu bit Energy Threshold
Definition: TrgEclBhabha.h:277
std::vector< int > m_3DBhabhaVetoInTrackThetaRegion
theta region(low and high) of 3D Bhbabha veto InTrack
Definition: TrgEclBhabha.h:329
int get3DBhabhaSelectionThetaFlag(void)
get trigger bit(2bits) of flag which shows theta position of clusters of 3DBhabha Selection.
Definition: TrgEclBhabha.h:198
void setTaub2bAngleCut(const std::vector< int > &iTaub2bAngleCut)
set 2 Cluster angle selection for tau 1x1 decay [0], [1] for low and high of dphi,...
Definition: TrgEclBhabha.h:111
int m_3DBhabhaVetoInTrackFlag
trigger bit of flag(1bit) whether two clusters statisfy 3D Bhabha veto are in CDCTRG region in theta ...
Definition: TrgEclBhabha.h:319
TrgEclDataBase * _database
Object of Trigger ECL DataBase.
Definition: TrgEclBhabha.h:247
double get3DBhabhaSelectionClusterTiming(int cl_idx)
get each cluster timing of two clusters of 3D Bhabha selection (ns)
Definition: TrgEclBhabha.h:228
void setTaub2bClusterECut(const double iTaub2bClusterECut1, const double iTaub2bClusterECut2)
set cluster energy cut for taub2b
Definition: TrgEclBhabha.h:121
std::vector< double > m_3DBhabhaVetoClusterEnergies
Energies of two clusters of 3D Bhabha veto (GeV)
Definition: TrgEclBhabha.h:325
std::vector< int > m_3DBhabhaSelectionClusterTCIds
TCIDs of two clusters of 3D Bhabha selection.
Definition: TrgEclBhabha.h:333
int m_taub2bEtotFlag
taub2b total energy(TC theta id=1-17) flag
Definition: TrgEclBhabha.h:293
std::vector< double > _mumuAngle
mumu bit Angle
Definition: TrgEclBhabha.h:279
std::vector< double > m_3DBhabhaAddAngleCut
Angle selection of additional Bhabha veto in CM frame.
Definition: TrgEclBhabha.h:281
std::vector< double > _3DBhabhaVetoThreshold
3D Veto Bhabha Energy Threshold
Definition: TrgEclBhabha.h:271
double m_taub2b2EtotCut
taub2b2 total energy cut (GeV)
Definition: TrgEclBhabha.h:297
TrgEclBhabha(TrgEclBhabha &)=delete
Destructor.
std::vector< double > ClusterTiming
Cluster Timing.
Definition: TrgEclBhabha.h:261
int get3DBhabhaSelectionClusterThetaId(int cl_idx)
get each TC theta ID(most energetic TC in a cluster) of two clusters of 3D Bhabha selection
Definition: TrgEclBhabha.h:212
void setmumuThreshold(int mumuThreshold)
set mumu bit Threshold
Definition: TrgEclBhabha.h:96
void set2DBhabhaThreshold(const std::vector< double > &i2DBhabhaThresholdFWD, const std::vector< double > &i2DBhabhaThresholdBWD)
set 2D Bhabha Energy Threshold
Definition: TrgEclBhabha.h:69
int get3DBhabhaVetoClusterThetaId(int cl_idx)
get each TC theta ID(most energetic TC in a cluster) of two clusters of 3D Bhabha veto
Definition: TrgEclBhabha.h:167
int getTaub2bClusterEFlag(void)
taub2b Cluster energy flag
Definition: TrgEclBhabha.h:240
void set3DBhabhaVetoAngle(const std::vector< double > &i3DBhabhaVetoAngle)
set 3D veto Bhabha Energy Angle
Definition: TrgEclBhabha.h:91
void setTaub2b2Cut(const std::vector< int > &iTaub2b2AngleCut, const double iTaub2b2EtotCut, const double iTaub2b2CLEEndcapCut, const double iTaub2b2CLECut)
set taub2b2 cut
Definition: TrgEclBhabha.h:128
std::vector< int > m_3DBhabhaVetoClusterThetaIds
ThetaIds of two clusters of 3D Bhabha veto.
Definition: TrgEclBhabha.h:323
bool GetBhabha02()
Belle II 3D Bhabha method for selection.
void set3DBhabhaSelectionAngle(const std::vector< double > &i3DBhabhaSelectionAngle)
set 3D selection Bhabha Energy Angle
Definition: TrgEclBhabha.h:86
void set3DBhabhaSelectionThreshold(const std::vector< double > &i3DBhabhaSelectionThreshold)
set 3D selection Bhabha Energy Threshold
Definition: TrgEclBhabha.h:76
double get3DBhabhaVetoClusterEnergy(int cl_idx)
get each cluster energy of two clusters of 3D Bhabha veto (GeV)
Definition: TrgEclBhabha.h:175
void setTaub2bEtotCut(const double iTaub2bEtotCut)
set total energy cut for taub2b
Definition: TrgEclBhabha.h:116
std::vector< double > _3DBhabhaSelectionAngle
3D Selection Bhabha Energy Angle
Definition: TrgEclBhabha.h:273
std::vector< double > _2DBhabhaThresholdBWD
2D Bhabha Energy Threshold
Definition: TrgEclBhabha.h:267
std::vector< int > m_3DBhabhaVetoClusterTCIds
TCIDs of two clusters of 3D Bhabha veto.
Definition: TrgEclBhabha.h:321
double m_taub2bClusterECut2
taub2b Cluster one of energy cut in b2b in lab (GeV)
Definition: TrgEclBhabha.h:289
std::vector< double > BhabhaComb
Bhabha Combination.
Definition: TrgEclBhabha.h:253
int get3DBhabhaVetoInTrackFlag(void)
get trigger bit of flag(1bit) whether two clusters statisfy 3D Bhabha veto are in CDCTRG region in th...
Definition: TrgEclBhabha.h:153
std::vector< int > m_taub2b2AngleCut
taub2b2 two Cluster angle cut (degree)
Definition: TrgEclBhabha.h:299
double m_taub2b3EtotCut
taub2b3 total energy (TC theta ID =1-17) (GeV)
Definition: TrgEclBhabha.h:309
std::vector< double > _3DBhabhaSelectionThreshold
3D Selection Bhabha Energy Threshold
Definition: TrgEclBhabha.h:269
std::vector< double > m_3DBhabhaVetoClusterTimings
Timings of two clusters of 3D Bhabha veto (ns)
Definition: TrgEclBhabha.h:327
bool GetTaub2b3(double)
Taub2b3.
int m_taub2bClusterEFlag
taub2b Cluster energy flag
Definition: TrgEclBhabha.h:295
std::vector< double > MaxTCThetaId
Cluster ThetaId.
Definition: TrgEclBhabha.h:257
bool GetTaub2b(double)
Taub2b selection.
bool GetBhabha01()
Belle II 3D Bhabha method for veto.
double m_taub2b3CLEb2bCut
taub2b3 cluster energy cut (GeV)
Definition: TrgEclBhabha.h:311
int get3DBhabhaVetoClusterTCId(int cl_idx)
get each TCID(most energetic TC in a cluster) of two clusters of 3D Bhabha veto
Definition: TrgEclBhabha.h:158
std::vector< ROOT::Math::XYZVector > ClusterPosition
Cluster Timing.
Definition: TrgEclBhabha.h:263
void set3DBhabhaVetoInTrackThetaRegion(const std::vector< int > &i3DBhabhaVetoInTrackThetaRegion)
set ThetaID (low and high) for 3DBhabhaVetoInTrack
Definition: TrgEclBhabha.h:105
double m_taub2bClusterECut1
taub2b Cluster one of energy cut in b2b in lab (GeV)
Definition: TrgEclBhabha.h:287
void set3DBhabhaVetoThreshold(const std::vector< double > &i3DBhabhaVetoThreshold)
set 3D veto Bhabha Energy Threshold
Definition: TrgEclBhabha.h:81
void setmumuAngle(const std::vector< double > &imumuAngle)
set mumu bit Angle selection
Definition: TrgEclBhabha.h:98
virtual ~TrgEclBhabha()
Constructor.
std::vector< double > ClusterEnergy
Cluster Energy.
Definition: TrgEclBhabha.h:259
TrgEclMapping * _TCMap
Object of TC Mapping.
Definition: TrgEclBhabha.h:244
void setTaub2b3Cut(const std::vector< int > &iTaub2b3AngleCut, const double iTaub2b3EtotCut, const double iTaub2b3CLEb2bCut, const double iTaub2b3CLELowCut, const double iTaub2b3CLEHighCut)
set taub2b3 cut
Definition: TrgEclBhabha.h:139
double m_taub2b2CLECut
taub2b2 cluster energy cut (GeV)
Definition: TrgEclBhabha.h:303
std::vector< double > _2DBhabhaThresholdFWD
2D Bhabha Energy Threshold
Definition: TrgEclBhabha.h:265
std::vector< double > _3DBhabhaVetoAngle
3D Veto Bhabha Energy Angle
Definition: TrgEclBhabha.h:275
int get3DBhabhaSelectionClusterTCId(int cl_idx)
get each TCID(most energetic TC in a cluster) of two clusters of 3D Bhabha selection
Definition: TrgEclBhabha.h:203
double m_taub2b2CLEEndcapCut
taub2b2 cluster energy cut for endcap cluster (GeV)
Definition: TrgEclBhabha.h:301
bool GetTaub2b2(double)
Taub2b selection (tighter selection than Taub2b)
std::vector< int > m_taub2b3AngleCut
taub2b3 selection cuts (3,2,1,0) = (dphi low, dphi high, theta_sum low, theta_sum high)
Definition: TrgEclBhabha.h:307
class TrgEclDataBase;
A class of TC Mapping.
Definition: TrgEclMapping.h:26
Abstract base class for different kinds of events.