Belle II Software development
TrgEclBhabha.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//---------------------------------------------------------------
10// Description : A class to tag Bhabha Veto
11//
12// Belle type Bhabha (Bhbha00())
13//
14// Theta Id combination
15// bit id | combination(FWD|BWD) | Energy Threshold (FWD|BWD) GeV
16// 0 | 1+2+3 | 16+17 | 4.0 | 2.5
17// 1 | 3 | 15 | 4.0 | 2.5
18// 2 | 4 | 14+15 | 4.0 | 2.5
19// 3 | 5 | 14+15 | 4.0 | 2.5
20// 4 | 4+5 | 14 | 4.0 | 2.5
21// 5 | 5 | 13+14 | 4.0 | 2.5
22// 6 | 5 | 12+13 | 4.0 | 2.5
23// 7 | 5+6 | 13 | 4.0 | 2.5
24// 8 | 5+6 | 12 | 4.0 | 2.5
25// 9 | 6+7 | 12 | 4.0 | 2.5
26// 10 | 6+7 | 11 | 4.0 | 2.5
27// 11 | 7+8 | 11 | 4.0 | 2.5
28// 12 | 8 | 10+11 | 3.0 | 3.0
29// 13 | 8+9 | 9+10 | 3.5 | 3.0
30//
31// Belle 2 3D Bhabha (Bhabha01)
32//
33// - Cluster base Logic
34// - Compare all clusters satisfying following conditions
35// @ Bhabha for veto
36// 160 degree < (CM Phi_Cluster 1 - CM Phi_Cluster 2) < 200 degree
37// 165 degree < (CM Theta Cluster 1 + CM Theta Cluster 2 ) < 190 degree
38// Boths Cluster CM E > 3 GeV and One of cluster CM E > 4.5 GeV
39// @ Bhabha for calibration (selection bhabha)
40// 140 degree < (CM Phi_Cluster 1 - CM Phi_Cluster 2) < 220 degree
41// 160 degree < (CM Theta Cluster 1 + CM Theta Cluster 2 ) < 200 degree
42// Boths Cluster CM E > 2.5 GeV and One of cluster CM E > 4.0 GeV
43//
44// ee->mumu selection
45// 160 degree < (CM Phi_Cluster 1 - CM Phi_Cluster 2) < 200 degree
46// 165 degree < (CM Theta Cluster 1 + CM Theta Cluster 2 ) < 190 degree
47// Boths Cluster CM E < 2 GeV and One of cluster CM E < 2 GeV
48//
49//---------------------------------------------------------------
50
51#define TRG_SHORT_NAMES
52#define TRGECLCLUSTER_SHORT_NAMES
53#include <framework/gearbox/Unit.h>
54#include "framework/datastore/StoreArray.h"
55
56#include <trg/ecl/TrgEclBhabha.h>
57
58#include "trg/ecl/dataobjects/TRGECLCluster.h"
59
60#include <analysis/utility/PCmsLabTransform.h>
61
62using namespace std;
63using namespace Belle2;
64//
65//
66//
68 _mumuThreshold(20),
69 m_3DBhabhaVetoInTrackThetaRegion(3, 15)
70{
71 BhabhaComb.clear();
72 MaxTCId.clear();
73 ClusterEnergy.clear();
74 ClusterTiming.clear();
75 ClusterPosition.clear();
76
77 _TCMap = new TrgEclMapping();
78
80
86 _3DBhabhaVetoAngle.clear();
87 _mumuAngle.clear();
89
90 _2DBhabhaThresholdFWD = {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 35}; // (100 MeV)
91 _2DBhabhaThresholdBWD = {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 30, 30}; // (100 MeV)
92 _3DBhabhaVetoThreshold = {30, 45}; // (low, high) (100 MeV)
93 _3DBhabhaSelectionThreshold = {25, 40}; // (low, high) (100 MeV)
94 _3DBhabhaVetoAngle = {160, 200, 165, 190}; // (phi_low, phi_high, theta_low, theta_high) (degree)
95 _3DBhabhaSelectionAngle = {140, 220, 160, 200}; // (phi_low, phi_high, theta_low, theta_high) (degree)
96 _mumuAngle = {160, 200, 165, 190}; // (phi_low, phi_high, theta_low, theta_high) (degree)
97 m_3DBhabhaAddAngleCut = {150, 210, 160, 200}; // (phi_low, phi_high, theta_low, theta_high) (degree)
98
104
106
107 m_taub2bEtotCut = 7.0;
109 m_taub2bClusterECut2 = 999.0;
113
114 m_taub2b2EtotCut = 7.0;
116 m_taub2b2CLECut = 1.62;
117
118 //Taub2b3 by S.Ito
119 m_taub2b3EtotCut = 7.0;
120 m_taub2b3CLEb2bCut = 0.14;
121 m_taub2b3CLELowCut = 0.12;
123
124}
125//
126//
127//
129{
130 delete _TCMap;
131 delete _database;
132}
133//
134//
135//
136bool TrgEclBhabha::GetBhabha00(std::vector<double> PhiRingSum) //Belle 2D Bhabha veto method
137{
138 bool BtoBflag = false;
139
140
141 vector<int> k011 = {3, 1, 2, 3 }; // (1) F1+F2 + F3 + B1+B2
142 vector<int> k012 = {2, 16, 17}; // (1) F1+F2 + F3 + B1+B2
143
144 vector<int> k021 = {1, 3}; // (2) F3 + C12
145 vector<int> k022 = {1, 15}; // (2) F3 + C12
146
147 vector<int> k03 = {2, 2, 3}; // (3) F2 + F3
148
149 vector<int> k04 = {1, 4}; // (4) C1 + backward gap
150
151 vector<int> k051 = {1, 4 }; // (5) C1+C11+C12
152 vector<int> k052 = {2, 14, 15}; // (5) C1+C11+C12
153
154 vector<int> k061 = {1, 5}; // (6) C2+C11+C12
155 vector<int> k062 = {2, 14, 15}; // (6) C2+C11+C12
156
157 vector<int> k071 = {2, 4, 5}; // (7) C1+C2+C11
158 vector<int> k072 = {1, 14}; // (7) C1+C2+C11
159
160 vector<int> k081 = {1, 5}; // (8) C2+C10+C11
161 vector<int> k082 = {2, 13, 14}; // (8) C2+C10+C11
162
163 vector<int> k091 = {1, 5 }; // (9) C2+C9+C10
164 vector<int> k092 = {2, 12, 13}; // (9) C2+C9+C10
165
166 vector<int> k101 = {2, 5, 6}; // (10) C2+C3+C10
167 vector<int> k102 = {1, 13}; // (10) C2+C3+C10
168
169 vector<int> k111 = {2, 5, 6}; // (11) C2+C3+C9
170 vector<int> k112 = {1, 12}; // (11) C2+C3+C9
171
172 vector<int> k121 = {2, 6, 7}; // (9) C3+C4+C9
173 vector<int> k122 = {1, 12}; // (9) C3+C4+C9
174
175 vector<int> k131 = {2, 6, 7}; // (10) C3+C4+C8
176 vector<int> k132 = {1, 11}; // (10) C3+C4+C8
177
178 vector<int> k141 = {2, 7, 8}; // (11) C4+C5+C8
179 vector<int> k142 = {1, 11}; // (11) C4+C5+C8
180
181
182 vector<int> k151 = {1, 8}; // (9) C5+C7+C8
183 vector<int> k152 = {2, 10, 11}; // (9) C5+C7+C8
184
185 vector<int> k161 = {2, 8, 9}; // (10) C5+C6+C7
186 vector<int> k162 = {2, 9, 10}; // (10) C5+C6+C7
187
188 //vector<int> k17 = {2, 14, 15}; // (11) C11+C12 +forward gap
189
190 //vector<int> k18 = {1, 16}; // (11) B1 + forward gap
191
192 vector<int> kLOM1 = {2, 2, 3 }; // (1) F1+F2 + F3 + B1+B2
193 vector<int> kLOM2 = {2, 16, 17}; // (1) F1+F2 + F3 + B1+B2
194
195 BhabhaComb.clear();
196 BhabhaComb.resize(32, 0.0);
197 for (int iii = 1; iii <= k011[0]; iii++) { BhabhaComb[0] += PhiRingSum[k011[iii] - 1];}
198 for (int iii = 1; iii <= k012[0]; iii++) { BhabhaComb[1] += PhiRingSum[k012[iii] - 1];}
199 for (int iii = 1; iii <= k021[0]; iii++) { BhabhaComb[2] += PhiRingSum[k021[iii] - 1]; }
200 for (int iii = 1; iii <= k022[0]; iii++) { BhabhaComb[3] += PhiRingSum[k022[iii] - 1]; }
201 for (int iii = 1; iii <= k03[0]; iii++) { BhabhaComb[4] += PhiRingSum[k03[iii] - 1]; }
202 for (int iii = 1; iii <= k04[0]; iii++) { BhabhaComb[5] += PhiRingSum[k04[iii] - 1]; }
203 for (int iii = 1; iii <= k051[0]; iii++) { BhabhaComb[6] += PhiRingSum[k051[iii] - 1]; }
204 for (int iii = 1; iii <= k052[0]; iii++) { BhabhaComb[7] += PhiRingSum[k052[iii] - 1]; }
205 for (int iii = 1; iii <= k061[0]; iii++) { BhabhaComb[8] += PhiRingSum[k061[iii] - 1]; }
206 for (int iii = 1; iii <= k062[0]; iii++) { BhabhaComb[9] += PhiRingSum[k062[iii] - 1]; }
207 for (int iii = 1; iii <= k071[0]; iii++) { BhabhaComb[10] += PhiRingSum[k071[iii] - 1]; }
208 for (int iii = 1; iii <= k072[0]; iii++) { BhabhaComb[11] += PhiRingSum[k072[iii] - 1]; }
209 for (int iii = 1; iii <= k081[0]; iii++) { BhabhaComb[12] += PhiRingSum[k081[iii] - 1]; }
210 for (int iii = 1; iii <= k082[0]; iii++) { BhabhaComb[13] += PhiRingSum[k082[iii] - 1]; }
211 for (int iii = 1; iii <= k091[0]; iii++) { BhabhaComb[14] += PhiRingSum[k091[iii] - 1]; }
212 for (int iii = 1; iii <= k092[0]; iii++) { BhabhaComb[15] += PhiRingSum[k092[iii] - 1]; }
213 for (int iii = 1; iii <= k101[0]; iii++) { BhabhaComb[16] += PhiRingSum[k101[iii] - 1]; }
214 for (int iii = 1; iii <= k102[0]; iii++) { BhabhaComb[17] += PhiRingSum[k102[iii] - 1]; }
215 for (int iii = 1; iii <= k111[0]; iii++) { BhabhaComb[18] += PhiRingSum[k111[iii] - 1]; }
216 for (int iii = 1; iii <= k112[0]; iii++) { BhabhaComb[19] += PhiRingSum[k112[iii] - 1]; }
217 for (int iii = 1; iii <= k121[0]; iii++) { BhabhaComb[20] += PhiRingSum[k121[iii] - 1]; }
218 for (int iii = 1; iii <= k122[0]; iii++) { BhabhaComb[21] += PhiRingSum[k122[iii] - 1]; }
219 for (int iii = 1; iii <= k131[0]; iii++) { BhabhaComb[22] += PhiRingSum[k131[iii] - 1]; }
220 for (int iii = 1; iii <= k132[0]; iii++) { BhabhaComb[23] += PhiRingSum[k132[iii] - 1]; }
221 for (int iii = 1; iii <= k141[0]; iii++) { BhabhaComb[24] += PhiRingSum[k141[iii] - 1]; }
222 for (int iii = 1; iii <= k142[0]; iii++) { BhabhaComb[25] += PhiRingSum[k142[iii] - 1]; }
223 for (int iii = 1; iii <= k151[0]; iii++) { BhabhaComb[26] += PhiRingSum[k151[iii] - 1]; }
224 for (int iii = 1; iii <= k152[0]; iii++) { BhabhaComb[27] += PhiRingSum[k152[iii] - 1]; }
225 for (int iii = 1; iii <= k161[0]; iii++) { BhabhaComb[28] += PhiRingSum[k161[iii] - 1]; }
226 for (int iii = 1; iii <= k162[0]; iii++) { BhabhaComb[29] += PhiRingSum[k162[iii] - 1]; }
227 for (int iii = 1; iii <= kLOM1[0]; iii++) { BhabhaComb[30] += PhiRingSum[kLOM1[iii] - 1];}
228 for (int iii = 1; iii <= kLOM2[0]; iii++) { BhabhaComb[31] += PhiRingSum[kLOM2[iii] - 1];}
229
230
231 BtoBflag =
232 ((BhabhaComb[0] * 10 >= _2DBhabhaThresholdFWD[0] &&
233 BhabhaComb[1] * 10 >= _2DBhabhaThresholdBWD[0]) ||
234 (BhabhaComb[2] * 10 >= _2DBhabhaThresholdFWD[1] &&
235 BhabhaComb[3] * 10 >= _2DBhabhaThresholdBWD[1]) ||
236 (BhabhaComb[6] * 10 >= _2DBhabhaThresholdFWD[2] &&
237 BhabhaComb[7] * 10 >= _2DBhabhaThresholdBWD[2]) ||
238 (BhabhaComb[8] * 10 >= _2DBhabhaThresholdFWD[3] &&
239 BhabhaComb[9] * 10 >= _2DBhabhaThresholdBWD[3]) ||
240 (BhabhaComb[10] * 10 >= _2DBhabhaThresholdFWD[4] &&
241 BhabhaComb[11] * 10 >= _2DBhabhaThresholdBWD[4]) ||
242 (BhabhaComb[12] * 10 >= _2DBhabhaThresholdFWD[5] &&
243 BhabhaComb[13] * 10 >= _2DBhabhaThresholdBWD[5]) ||
244 (BhabhaComb[14] * 10 >= _2DBhabhaThresholdFWD[6] &&
245 BhabhaComb[15] * 10 >= _2DBhabhaThresholdBWD[6]) ||
246 (BhabhaComb[16] * 10 >= _2DBhabhaThresholdFWD[7] &&
247 BhabhaComb[17] * 10 >= _2DBhabhaThresholdBWD[7]) ||
248 (BhabhaComb[18] * 10 >= _2DBhabhaThresholdFWD[8] &&
249 BhabhaComb[19] * 10 >= _2DBhabhaThresholdBWD[8]) ||
250 (BhabhaComb[20] * 10 >= _2DBhabhaThresholdFWD[9] &&
251 BhabhaComb[21] * 10 >= _2DBhabhaThresholdBWD[9]) ||
252 (BhabhaComb[22] * 10 >= _2DBhabhaThresholdFWD[10] &&
253 BhabhaComb[23] * 10 >= _2DBhabhaThresholdBWD[10]) ||
254 (BhabhaComb[24] * 10 >= _2DBhabhaThresholdFWD[11] &&
255 BhabhaComb[25] * 10 >= _2DBhabhaThresholdBWD[11]) ||
256 (BhabhaComb[26] * 10 >= _2DBhabhaThresholdFWD[12] &&
257 BhabhaComb[27] * 10 >= _2DBhabhaThresholdBWD[12]) ||
258 (BhabhaComb[28] * 10 >= _2DBhabhaThresholdFWD[13] &&
259 BhabhaComb[29] * 10 >= _2DBhabhaThresholdBWD[13]));
260
261 int bhabha01 = 0;
262 int bhabha02 = 0;
263 int bhabha03 = 0;
264 int bhabha04 = 0;
265 int bhabha05 = 0;
266 int bhabha06 = 0;
267 int bhabha07 = 0;
268 int bhabha08 = 0;
269 int bhabha09 = 0;
270 int bhabha10 = 0;
271 int bhabha11 = 0;
272 int bhabha12 = 0;
273 int bhabha13 = 0;
274 int bhabha14 = 0;
275
276 if ((BhabhaComb[0] * 10 >= _2DBhabhaThresholdFWD[0] &&
277 BhabhaComb[1] * 10 >= _2DBhabhaThresholdBWD[0])) {bhabha01 = 1;}
278 if ((BhabhaComb[2] * 10 >= _2DBhabhaThresholdFWD[1] &&
279 BhabhaComb[3] * 10 >= _2DBhabhaThresholdBWD[1])) {bhabha02 = 1;}
280 if ((BhabhaComb[6] * 10 >= _2DBhabhaThresholdFWD[2] &&
281 BhabhaComb[7] * 10 >= _2DBhabhaThresholdBWD[2])) {bhabha03 = 1;}
282 if ((BhabhaComb[8] * 10 >= _2DBhabhaThresholdFWD[3] &&
283 BhabhaComb[9] * 10 >= _2DBhabhaThresholdBWD[3])) {bhabha04 = 1;}
284 if ((BhabhaComb[10] * 10 >= _2DBhabhaThresholdFWD[4] &&
285 BhabhaComb[11] * 10 >= _2DBhabhaThresholdBWD[4])) {bhabha05 = 1;}
286 if ((BhabhaComb[12] * 10 >= _2DBhabhaThresholdFWD[5] &&
287 BhabhaComb[13] * 10 >= _2DBhabhaThresholdBWD[5])) {bhabha06 = 1;}
288 if ((BhabhaComb[14] * 10 >= _2DBhabhaThresholdFWD[6] &&
289 BhabhaComb[15] * 10 >= _2DBhabhaThresholdBWD[6])) {bhabha07 = 1;}
290 if ((BhabhaComb[16] * 10 >= _2DBhabhaThresholdFWD[7] &&
291 BhabhaComb[17] * 10 >= _2DBhabhaThresholdBWD[7])) {bhabha08 = 1;}
292 if ((BhabhaComb[18] * 10 >= _2DBhabhaThresholdFWD[8] &&
293 BhabhaComb[19] * 10 >= _2DBhabhaThresholdBWD[8])) {bhabha09 = 1;}
294 if ((BhabhaComb[20] * 10 >= _2DBhabhaThresholdFWD[9] &&
295 BhabhaComb[21] * 10 >= _2DBhabhaThresholdBWD[9])) {bhabha10 = 1;}
296 if ((BhabhaComb[22] * 10 >= _2DBhabhaThresholdFWD[10] &&
297 BhabhaComb[23] * 10 >= _2DBhabhaThresholdBWD[10])) {bhabha11 = 1;}
298 if ((BhabhaComb[24] * 10 >= _2DBhabhaThresholdFWD[11] &&
299 BhabhaComb[25] * 10 >= _2DBhabhaThresholdBWD[11])) {bhabha12 = 1;}
300 if ((BhabhaComb[26] * 10 >= _2DBhabhaThresholdFWD[12] &&
301 BhabhaComb[27] * 10 >= _2DBhabhaThresholdBWD[12])) {bhabha13 = 1;}
302 if ((BhabhaComb[28] * 10 >= _2DBhabhaThresholdFWD[13] &&
303 BhabhaComb[29] * 10 >= _2DBhabhaThresholdBWD[13])) {bhabha14 = 1;}
304
305 BhabhaComb.clear();
306 BhabhaComb.push_back(bhabha01);
307 BhabhaComb.push_back(bhabha02);
308 BhabhaComb.push_back(bhabha03);
309 BhabhaComb.push_back(bhabha04);
310 BhabhaComb.push_back(bhabha05);
311 BhabhaComb.push_back(bhabha06);
312 BhabhaComb.push_back(bhabha07);
313 BhabhaComb.push_back(bhabha08);
314 BhabhaComb.push_back(bhabha09);
315 BhabhaComb.push_back(bhabha10);
316 BhabhaComb.push_back(bhabha11);
317 BhabhaComb.push_back(bhabha12);
318 BhabhaComb.push_back(bhabha13);
319 BhabhaComb.push_back(bhabha14);
320 BhabhaComb.push_back(0);
321 BhabhaComb.push_back(0);
322 BhabhaComb.push_back(0);
323 BhabhaComb.push_back(0);
324
325 return BtoBflag;
326}
327//========================================================
328// 3D Bhabha veto
329//========================================================
331{
332 //
333 // Read Cluster Table
334 //
335 MaxTCId.clear();
336 ClusterEnergy.clear();
337 ClusterTiming.clear();
338 ClusterPosition.clear();
344 // int EventId = 0;
345 StoreArray<TRGECLCluster> trgeclClusterArray;
346 for (int ii = 0; ii < trgeclClusterArray.getEntries(); ii++) {
347 TRGECLCluster* aTRGECLCluster = trgeclClusterArray[ii];
348 // EventId = aTRGECLCluster->getEventId();
349 int maxTCId = aTRGECLCluster->getMaxTCId();
350 double clusterenergy = aTRGECLCluster->getEnergyDep();
351 double clustertiming = aTRGECLCluster->getTimeAve();
352 ROOT::Math::XYZVector clusterposition(aTRGECLCluster->getPositionX(),
353 aTRGECLCluster->getPositionY(),
354 aTRGECLCluster->getPositionZ());
355 ClusterTiming.push_back(clustertiming);
356 ClusterEnergy.push_back(clusterenergy);
357 ClusterPosition.push_back(clusterposition);
358 MaxTCId.push_back(maxTCId);
359 }
360 const int ncluster = ClusterEnergy.size();
361 //
362 //
363 //
364 BhabhaComb.clear();
365 BhabhaComb.resize(18, 0);
366
367 int cl_idx1 = -1;
368 int cl_idx2 = -1;
369 bool BhabhaFlag = false;
370 for (int icluster = 0; icluster < ncluster ; icluster++) {
371 for (int jcluster = icluster + 1; jcluster < ncluster; jcluster ++) {
372 bool BtoBFlag = false;
373
374 if (icluster == jcluster) {continue;}
375
376 int energy1 = 0;
377 int energy2 = 0;
378 int dphi = 0;
379 int thetaSum = 0;
380 get2CLETP(MaxTCId[icluster],
381 MaxTCId[jcluster],
382 energy1,
383 energy2,
384 dphi,
385 thetaSum);
386
387 if (dphi > _3DBhabhaVetoAngle[0] &&
388 thetaSum > _3DBhabhaVetoAngle[2] &&
389 thetaSum < _3DBhabhaVetoAngle[3]) {BtoBFlag = true;}
390 if ((ClusterEnergy[icluster] * 100. > _3DBhabhaVetoThreshold[0] * energy1 &&
391 ClusterEnergy[jcluster] * 100. > _3DBhabhaVetoThreshold[0] * energy2) &&
392 (ClusterEnergy[icluster] * 100. > _3DBhabhaVetoThreshold[1] * energy1 ||
393 ClusterEnergy[jcluster] * 100. > _3DBhabhaVetoThreshold[1] * energy2)) {
394 if (BtoBFlag) {
395 BhabhaFlag = true;
396 cl_idx1 = icluster;
397 cl_idx2 = jcluster;
398 }
399 }
400 }
401 }
402
403 if (BhabhaFlag) {
404 m_3DBhabhaVetoClusterTCIds.push_back(MaxTCId[cl_idx1]);
405 m_3DBhabhaVetoClusterTCIds.push_back(MaxTCId[cl_idx2]);
410 int cl_thetaid1 = _TCMap->getTCThetaIdFromTCId(MaxTCId[cl_idx1]);
411 int cl_thetaid2 = _TCMap->getTCThetaIdFromTCId(MaxTCId[cl_idx2]);
412 m_3DBhabhaVetoClusterThetaIds.push_back(cl_thetaid1);
413 m_3DBhabhaVetoClusterThetaIds.push_back(cl_thetaid2);
414 // set InTrack flag
415 if (cl_thetaid1 >= m_3DBhabhaVetoInTrackThetaRegion[0] &&
416 cl_thetaid1 <= m_3DBhabhaVetoInTrackThetaRegion[1] &&
417 cl_thetaid2 >= m_3DBhabhaVetoInTrackThetaRegion[0] &&
418 cl_thetaid2 <= m_3DBhabhaVetoInTrackThetaRegion[1]) {
420 } else {
422 }
423 }
424
425 return BhabhaFlag;
426}
427//========================================================
428// 3D Bhabha Selection
429//========================================================
431{
432 //
433 // Read Cluster Table
434 //
435 MaxTCId.clear();
436 ClusterEnergy.clear();
437 ClusterTiming.clear();
438 ClusterPosition.clear();
440 // int EventId = 0;
441 StoreArray<TRGECLCluster> trgeclClusterArray;
442 for (int ii = 0; ii < trgeclClusterArray.getEntries(); ii++) {
443 TRGECLCluster* aTRGECLCluster = trgeclClusterArray[ii];
444 // EventId = aTRGECLCluster->getEventId();
445 int maxTCId = aTRGECLCluster->getMaxTCId();
446 double clusterenergy = aTRGECLCluster->getEnergyDep();
447 double clustertiming = aTRGECLCluster->getTimeAve();
448 ROOT::Math::XYZVector clusterposition(aTRGECLCluster->getPositionX(),
449 aTRGECLCluster->getPositionY(),
450 aTRGECLCluster->getPositionZ());
451 ClusterTiming.push_back(clustertiming);
452 ClusterEnergy.push_back(clusterenergy);
453 ClusterPosition.push_back(clusterposition);
454 MaxTCId.push_back(maxTCId);
455 }
456 const int ncluster = ClusterEnergy.size();
457 //
458 //
459 //
460 BhabhaComb.clear();
461 BhabhaComb.resize(18, 0);
462
463 int cl_idx1 = -1;
464 int cl_idx2 = -1;
465 bool BhabhaFlag = false;
466 for (int icluster = 0; icluster < ncluster ; icluster++) {
467 for (int jcluster = icluster + 1; jcluster < ncluster; ++jcluster) {
468 bool BtoBFlag = false;
469
470 if (icluster == jcluster) {continue;}
471
472 int energy1 = 0;
473 int energy2 = 0;
474 int dphi = 0;
475 int thetaSum = 0;
476 get2CLETP(MaxTCId[icluster],
477 MaxTCId[jcluster],
478 energy1,
479 energy2,
480 dphi,
481 thetaSum);
482
483 if (dphi > _3DBhabhaSelectionAngle[0] &&
484 dphi < _3DBhabhaSelectionAngle[1] &&
485 thetaSum > _3DBhabhaSelectionAngle[2] &&
486 thetaSum < _3DBhabhaSelectionAngle[3]) {BtoBFlag = true;}
487 if ((ClusterEnergy[icluster] * 100. > _3DBhabhaSelectionThreshold[0] * energy1 &&
488 ClusterEnergy[jcluster] * 100. > _3DBhabhaSelectionThreshold[0] * energy2) &&
489 (ClusterEnergy[icluster] * 100. > _3DBhabhaSelectionThreshold[1] * energy1 ||
490 ClusterEnergy[jcluster] * 100. > _3DBhabhaSelectionThreshold[1] * energy2)) {
491 if (BtoBFlag) {
492 BhabhaFlag = true;
493 cl_idx1 = icluster;
494 cl_idx2 = jcluster;
495 }
496 }
497 }
498 }
499 if (BhabhaFlag) {
500 m_3DBhabhaSelectionClusterTCIds.push_back(MaxTCId[cl_idx1]);
501 m_3DBhabhaSelectionClusterTCIds.push_back(MaxTCId[cl_idx2]);
506 int cl_thetaid1 = _TCMap->getTCThetaIdFromTCId(MaxTCId[cl_idx1]);
507 int cl_thetaid2 = _TCMap->getTCThetaIdFromTCId(MaxTCId[cl_idx2]);
508 m_3DBhabhaSelectionClusterThetaIds.push_back(cl_thetaid1);
509 m_3DBhabhaSelectionClusterThetaIds.push_back(cl_thetaid2);
510 // set theta flag(2bits) for prescale in GDL
511 int cl_thetaid0 = (cl_thetaid1 < cl_thetaid2) ? cl_thetaid1 : cl_thetaid2;
512 if (cl_thetaid0 <= 0 || cl_thetaid0 >= 18) {
514 } else {
515 if (cl_thetaid0 == 1) { m_3DBhabhaSelectionThetaFlag = 0; }
516 else if (cl_thetaid0 == 2) { m_3DBhabhaSelectionThetaFlag = 1; }
517 else if (cl_thetaid0 == 3) { m_3DBhabhaSelectionThetaFlag = 2; }
518 else { m_3DBhabhaSelectionThetaFlag = 3; }
519 }
520 }
521
522 return BhabhaFlag;
523}
524//========================================================
525// mu pair trigger
526//========================================================
528{
529 bool BtoBFlag = false;
530 bool BhabhaFlag = false;
531 //
532 // Read Cluster Table
533 //
534 MaxTCId.clear();
535 ClusterEnergy.clear();
536 ClusterTiming.clear();
537 ClusterPosition.clear();
538 // int EventId = 0;
539 StoreArray<TRGECLCluster> trgeclClusterArray;
540 for (int ii = 0; ii < trgeclClusterArray.getEntries(); ii++) {
541 TRGECLCluster* aTRGECLCluster = trgeclClusterArray[ii];
542 // EventId = aTRGECLCluster->getEventId();
543 int maxTCId = aTRGECLCluster->getMaxTCId();
544 double clusterenergy = aTRGECLCluster->getEnergyDep();
545 double clustertiming = aTRGECLCluster->getTimeAve();
546 ROOT::Math::XYZVector clusterposition(aTRGECLCluster->getPositionX(),
547 aTRGECLCluster->getPositionY(),
548 aTRGECLCluster->getPositionZ());
549 ClusterTiming.push_back(clustertiming);
550 ClusterEnergy.push_back(clusterenergy);
551 ClusterPosition.push_back(clusterposition);
552 MaxTCId.push_back(maxTCId);
553 }
554 const int ncluster = ClusterEnergy.size();
555 //
556 //
557 //
558 BhabhaComb.clear();
559 BhabhaComb.resize(18, 0);
560
561 BtoBFlag = false;
562
563 for (int icluster = 0; icluster < ncluster ; icluster++) {
564 for (int jcluster = icluster + 1; jcluster < ncluster; jcluster ++) {
565
566 if (icluster == jcluster) {continue;}
567
568 int energy1 = 0;
569 int energy2 = 0;
570 int dphi = 0;
571 int thetaSum = 0;
572 get2CLETP(MaxTCId[icluster],
573 MaxTCId[jcluster],
574 energy1,
575 energy2,
576 dphi,
577 thetaSum);
578
579 if (dphi > _mumuAngle[0] &&
580 dphi < _mumuAngle[1] &&
581 thetaSum > _mumuAngle[2] &&
582 thetaSum < _mumuAngle[3]) {BtoBFlag = true;}
583 if (ClusterEnergy[icluster] * 10. < _mumuThreshold &&
584 ClusterEnergy[jcluster] * 10. < _mumuThreshold) {
585 if (BtoBFlag) {BhabhaFlag = true;}
586 }
587 }
588 }
589 return BhabhaFlag;
590}
591//========================================================
592// taub2b selection for tau 1x1 process
593//========================================================
594bool TrgEclBhabha::GetTaub2b(double E_total1to17)
595{
596 //
597 // Read Cluster Table
598 //
599 MaxTCId.clear();
600 ClusterEnergy.clear();
601 ClusterTiming.clear();
602 ClusterPosition.clear();
603
607
608 if (E_total1to17 < m_taub2bEtotCut) {
610 }
611
612 StoreArray<TRGECLCluster> trgeclClusterArray;
613 for (int ii = 0; ii < trgeclClusterArray.getEntries(); ii++) {
614 TRGECLCluster* aTRGECLCluster = trgeclClusterArray[ii];
615 int maxTCId = aTRGECLCluster->getMaxTCId();
616 double clusterenergy = aTRGECLCluster->getEnergyDep();
617 ClusterEnergy.push_back(clusterenergy);
618 MaxTCId.push_back(maxTCId);
619 }
620
621 const int ncluster = ClusterEnergy.size();
622
623 for (int icluster = 0; icluster < ncluster ; icluster++) {
624 for (int jcluster = icluster + 1; jcluster < ncluster; jcluster ++) {
625
626 if (icluster == jcluster) {continue;}
627
628 int energy1 = 0;
629 int energy2 = 0;
630 int dphi = 0;
631 int thetaSum = 0;
632 get2CLETP(MaxTCId[icluster],
633 MaxTCId[jcluster],
634 energy1,
635 energy2,
636 dphi,
637 thetaSum);
638
639 if (dphi > m_taub2bAngleCut[0] &&
640 dphi < m_taub2bAngleCut[1] &&
641 thetaSum > m_taub2bAngleCut[2] &&
642 thetaSum < m_taub2bAngleCut[3]) {
644 //
645 if ((ClusterEnergy[icluster] < m_taub2bClusterECut1 &&
646 ClusterEnergy[jcluster] < m_taub2bClusterECut2) ||
647 (ClusterEnergy[icluster] < m_taub2bClusterECut2 &&
648 ClusterEnergy[jcluster] < m_taub2bClusterECut1)) {
650 }
651 }
652 }
653 }
654
655 bool Taub2bFlag = false;
656 if (m_taub2bAngleFlag > 0 &&
657 m_taub2bEtotFlag > 0 &&
659 Taub2bFlag = true;
660 }
661
662 return Taub2bFlag;
663}
664//========================================================
665// taub2b selection for tau 1x1 process (tigher selection than taub2b
666//========================================================
667bool TrgEclBhabha::GetTaub2b2(double E_total1to17)
668{
669 //
670 // Read Cluster Table
671 //
672 MaxTCId.clear();
673 ClusterEnergy.clear();
674 ClusterTiming.clear();
675 ClusterPosition.clear();
676
677 int taub2b2EtotFlag = 0;
678 int taub2b2AngleFlag = 0;
679 int taub2b2NCLEndcapFlag = 0;
680 int taub2b2AngleCLEFlag = 0;
681
682 if (E_total1to17 < m_taub2b2EtotCut) {
683 taub2b2EtotFlag = 1;
684 }
685
686 // countor of cluster for E(cluster)>threshold in endcap
687 int ncl_clecut_endcap = 0;
688 // cluster array loop
689 StoreArray<TRGECLCluster> trgeclClusterArray;
690 for (int ii = 0; ii < trgeclClusterArray.getEntries(); ii++) {
691 TRGECLCluster* aTRGECLCluster = trgeclClusterArray[ii];
692 int maxTCId = aTRGECLCluster->getMaxTCId();
693 double clusterenergy = aTRGECLCluster->getEnergyDep();
694 double clusterthetaid = aTRGECLCluster->getMaxThetaId();
695 ClusterEnergy.push_back(clusterenergy);
696 MaxTCId.push_back(maxTCId);
697 // count N(cluster) of E(cluster) > threshold in endcap
698 if ((clusterthetaid <= 3 ||
699 clusterthetaid >= 16) &&
700 clusterenergy > m_taub2b2CLEEndcapCut) {
701 ncl_clecut_endcap++;
702 }
703 }
704
705 // bool for N(cluster) of E(cluster)>threshold in endcap
706 if (ncl_clecut_endcap < 2) {
707 taub2b2NCLEndcapFlag = 1;
708 }
709
710 // total number of cluster
711 const int ncluster = ClusterEnergy.size();
712
713 // 2 cluster combination
714 for (int icluster = 0; icluster < ncluster ; icluster++) {
715 for (int jcluster = icluster + 1; jcluster < ncluster; jcluster ++) {
716 if (icluster == jcluster) {continue;}
717 int energy1 = 0;
718 int energy2 = 0;
719 int dphi = 0;
720 int thetaSum = 0;
721 get2CLETP(MaxTCId[icluster],
722 MaxTCId[jcluster],
723 energy1,
724 energy2,
725 dphi,
726 thetaSum);
727 // delta phi and theta sum selection
728 if (dphi > m_taub2b2AngleCut[0] &&
729 dphi < m_taub2b2AngleCut[1] &&
730 thetaSum > m_taub2b2AngleCut[2] &&
731 thetaSum < m_taub2b2AngleCut[3]) {
732 taub2b2AngleFlag++;
733 if (ClusterEnergy[icluster] > m_taub2b2CLECut &&
734 ClusterEnergy[jcluster] > m_taub2b2CLECut) {
735 taub2b2AngleCLEFlag++;
736 }
737 }
738 }
739 }
740 //
741 bool taub2b2Flag = false;
742 if (taub2b2EtotFlag > 0 &&
743 taub2b2AngleFlag > 0 &&
744 taub2b2NCLEndcapFlag > 0 &&
745 taub2b2AngleCLEFlag > 0) {
746 taub2b2Flag = true;
747 }
748
749 return taub2b2Flag;
750}
751
752
753//========================================================
754// taub2b3 added by S.Ito
755//========================================================
756bool TrgEclBhabha::GetTaub2b3(double E_total1to17)
757{
758 //
759 // Read Cluster Table
760 //
761 MaxTCId.clear();
762 MaxTCThetaId.clear();
763 ClusterEnergy.clear();
764 ClusterTiming.clear();
765 ClusterPosition.clear();
766
767 int taub2b3EtotFlag = 0;
768 int taub2b3AngleCLEThetaIdFlag = 0;
769 int taub2b3CLELowCutFlag = 1;
770 int taub2b3CLEHighCutFlag = 1;
771
772 // Total Energy Etot < 7 GeV in lab
773 if (E_total1to17 < m_taub2b3EtotCut) {
774 taub2b3EtotFlag = 1;
775 }
776
777 // cluster array loop
778 StoreArray<TRGECLCluster> trgeclClusterArray;
779 for (int ii = 0; ii < trgeclClusterArray.getEntries(); ii++) {
780 TRGECLCluster* aTRGECLCluster = trgeclClusterArray[ii];
781 int maxTCId = aTRGECLCluster->getMaxTCId();
782 double clusterenergy = aTRGECLCluster->getEnergyDep();
783 ClusterEnergy.push_back(clusterenergy);
784 MaxTCId.push_back(maxTCId);
785 MaxTCThetaId.push_back(aTRGECLCluster->getMaxThetaId());
786
787 // All clusters in the event shoule be E > 0.12 GeV in lab.
788 if (clusterenergy <= m_taub2b3CLELowCut) {
789 taub2b3CLELowCutFlag = 0;
790 }
791 // The number of clusters with E > 4.5 GeV in lab should be 0.
792 if (clusterenergy > m_taub2b3CLEHighCut) {
793 taub2b3CLEHighCutFlag = 0;
794 }
795 }
796
797 // total number of cluster
798 const int ncluster = ClusterEnergy.size();
799
800 // 2 cluster combination
801 for (int icluster = 0; icluster < ncluster ; icluster++) {
802 for (int jcluster = icluster + 1; jcluster < ncluster; jcluster ++) {
803 if (icluster == jcluster) {continue;}
804 int energy1 = 0;
805 int energy2 = 0;
806 int dphi = 0;
807 int thetaSum = 0;
808 get2CLETP(MaxTCId[icluster],
809 MaxTCId[jcluster],
810 energy1,
811 energy2,
812 dphi,
813 thetaSum);
814
815 // delta phi and theta sum selection in cms
816 if (dphi > m_taub2b3AngleCut[0] &&
817 dphi < m_taub2b3AngleCut[1] &&
818 thetaSum > m_taub2b3AngleCut[2] &&
819 thetaSum < m_taub2b3AngleCut[3]) {
820 // Cluster ThetaID selection
821 if (MaxTCThetaId[icluster] >= 2 &&
822 MaxTCThetaId[icluster] <= 16 &&
823 MaxTCThetaId[jcluster] >= 2 &&
824 MaxTCThetaId[jcluster] <= 16) {
825 // Cluster energy selection in lab
826 if (ClusterEnergy[icluster] > m_taub2b3CLEb2bCut ||
827 ClusterEnergy[jcluster] > m_taub2b3CLEb2bCut) {
828 taub2b3AngleCLEThetaIdFlag++;
829 }
830 }
831 }
832 }
833 }
834 // all selections
835 bool taub2b3Flag = false;
836 if (taub2b3EtotFlag > 0 &&
837 taub2b3AngleCLEThetaIdFlag > 0 &&
838 taub2b3CLELowCutFlag > 0 &&
839 taub2b3CLEHighCutFlag > 0) {
840 taub2b3Flag = true;
841 }
842
843 return taub2b3Flag;
844}
845
846//========================================================
847// additional Bhabha veto
848//========================================================
850{
851
852 std::vector<int> MaxThetaId;
853 MaxThetaId.clear();
854 ClusterEnergy.clear();
855
856 int bit_bhabha_addition = 0;
857
858 StoreArray<TRGECLCluster> trgeclClusterArray;
859 for (int ii = 0; ii < trgeclClusterArray.getEntries(); ii++) {
860 TRGECLCluster* aTRGECLCluster = trgeclClusterArray[ii];
861 int maxTCId = aTRGECLCluster->getMaxTCId();
862 MaxTCId.push_back(maxTCId);
863 int maxThetaId = aTRGECLCluster->getMaxThetaId();
864 MaxThetaId.push_back(maxThetaId);
865 double clusterenergy = aTRGECLCluster->getEnergyDep();
866 ClusterEnergy.push_back(clusterenergy);
867 }
868 int NofCluster1to17 = MaxThetaId.size();
869
870 if (NofCluster1to17 == 1) {
871 if (MaxThetaId[0] <= 3) {
872 bit_bhabha_addition |= 0x01;
873 }
874 } else if (NofCluster1to17 == 2) {
875
876 int energy1 = 0;
877 int energy2 = 0;
878 int dphi = 0;
879 int thetaSum = 0;
881 MaxTCId[1],
882 energy1,
883 energy2,
884 dphi,
885 thetaSum);
886
887 // for hie1
888 if ((dphi > m_3DBhabhaAddAngleCut[0] &&
889 dphi < m_3DBhabhaAddAngleCut[1]) &&
890 (thetaSum > m_3DBhabhaAddAngleCut[2] &&
891 thetaSum < m_3DBhabhaAddAngleCut[3])) {
892 bit_bhabha_addition |= 0x02;
893 }
894 // for hie2
895 if ((dphi > m_3DBhabhaAddAngleCut[0] &&
896 dphi < m_3DBhabhaAddAngleCut[1]) ||
897 (thetaSum > m_3DBhabhaAddAngleCut[2] &&
898 thetaSum < m_3DBhabhaAddAngleCut[3])) {
899 bit_bhabha_addition |= 0x04;
900 }
901
902 // for hie3 and hie4
903 // get thetaID of lower energy cluster
904 int lowe_MaxThetaId = 0;
905 if (ClusterEnergy[0] < ClusterEnergy[1]) {
906 lowe_MaxThetaId = MaxThetaId[0];
907 } else {
908 lowe_MaxThetaId = MaxThetaId[1];
909 }
910 // select cluster in endcap region
911 if (lowe_MaxThetaId <= 3 ||
912 lowe_MaxThetaId >= 16) {
913 // for hie3
914 bit_bhabha_addition |= 0x08;
915 // for hie4
916 // require low energy bound for cluster
917 if (ClusterEnergy[0] > 0.5 &&
918 ClusterEnergy[1] > 0.5) {
919 bit_bhabha_addition |= 0x10;
920 }
921 }
922 }
923
924 return bit_bhabha_addition;
925}
926//========================================================
927// get cluster energy and angles(dphi and theta_sum) from LUT
928//========================================================
930 int TCId2,
931 int& energy1,
932 int& energy2,
933 int& dphi,
934 int& thetaSum)
935{
936 int lut1 = _database->Get3DBhabhaLUT(TCId1);
937 int lut2 = _database->Get3DBhabhaLUT(TCId2);
938 energy1 = 15 & lut1;
939 energy2 = 15 & lut2;
940 lut1 >>= 4;
941 lut2 >>= 4;
942 int phi1 = 511 & lut1;
943 int phi2 = 511 & lut2;
944 lut1 >>= 9;
945 lut2 >>= 9;
946 int theta1 = lut1;
947 int theta2 = lut2;
948 dphi = abs(phi1 - phi2);
949 if (dphi > 180) {dphi = 360 - dphi;}
950 thetaSum = theta1 + theta2;
951
952 return;
953}
954//========================================================
955//
956//========================================================
Accessor to arrays stored in the data store.
Definition: StoreArray.h:113
int getEntries() const
Get the number of objects in the array.
Definition: StoreArray.h:216
Example Detector.
Definition: TRGECLCluster.h:24
double getTimeAve() const
The method to get hit average time.
double getPositionZ() const
Get Energy weighted position Z.
int getMaxThetaId()
The method to set Theta Id of maximum TC in Cluster.
double getEnergyDep() const
The method to get deposited energy.
double getPositionX() const
The method to get hit average time Get Energy weighted position X.
double getPositionY() const
Get Energy weighted position Y.
int getMaxTCId() const
The method to get the Maximum(center) TC id.
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
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
bool Getmumu()
MuMu selection for calibration.
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
int GetBhabhaAddition(void)
Additional Bhabha veto.
std::vector< double > MaxTCId
Max TC Id.
Definition: TrgEclBhabha.h:255
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
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 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
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
std::vector< double > ClusterTiming
Cluster Timing.
Definition: TrgEclBhabha.h:261
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.
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
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
std::vector< ROOT::Math::XYZVector > ClusterPosition
Cluster Timing.
Definition: TrgEclBhabha.h:263
double m_taub2bClusterECut1
taub2b Cluster one of energy cut in b2b in lab (GeV)
Definition: TrgEclBhabha.h:287
virtual ~TrgEclBhabha()
Constructor.
std::vector< double > ClusterEnergy
Cluster Energy.
Definition: TrgEclBhabha.h:259
TrgEclMapping * _TCMap
Object of TC Mapping.
Definition: TrgEclBhabha.h:244
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
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;
int Get3DBhabhaLUT(int)
TC CM Phi
A class of TC Mapping.
Definition: TrgEclMapping.h:26
int getTCThetaIdFromTCId(int)
get [TC Theta ID] from [TC ID]
Abstract base class for different kinds of events.
STL namespace.