Belle II Software  release-08-01-10
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 
62 using namespace std;
63 using namespace Belle2;
64 //
65 //
66 //
67 TrgEclBhabha::TrgEclBhabha():
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 
79  _database = new TrgEclDataBase();
80 
81  _2DBhabhaThresholdFWD.clear();
82  _2DBhabhaThresholdBWD.clear();
84  _3DBhabhaVetoThreshold.clear();
86  _3DBhabhaVetoAngle.clear();
87  _mumuAngle.clear();
88  m_3DBhabhaAddAngleCut.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;
108  m_taub2bClusterECut1 = 1.9;
109  m_taub2bClusterECut2 = 999.0;
110  m_taub2bAngleFlag = 0;
111  m_taub2bEtotFlag = 0;
113 
114  m_taub2b2EtotCut = 7.0;
115  m_taub2b2CLEEndcapCut = 3.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;
122  m_taub2b3CLEHighCut = 4.5;
123 
124 }
125 //
126 //
127 //
129 {
130  delete _TCMap;
131  delete _database;
132 }
133 //
134 //
135 //
136 bool 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  TVector3 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]);
406  m_3DBhabhaVetoClusterEnergies.push_back(ClusterEnergy[cl_idx1]);
407  m_3DBhabhaVetoClusterEnergies.push_back(ClusterEnergy[cl_idx2]);
408  m_3DBhabhaVetoClusterTimings.push_back(ClusterTiming[cl_idx1]);
409  m_3DBhabhaVetoClusterTimings.push_back(ClusterTiming[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  TVector3 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  TVector3 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 //========================================================
594 bool 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 
604  m_taub2bAngleFlag = 0;
605  m_taub2bEtotFlag = 0;
607 
608  if (E_total1to17 < m_taub2bEtotCut) {
609  m_taub2bEtotFlag = 1;
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 &&
658  m_taub2bClusterEFlag > 0) {
659  Taub2bFlag = true;
660  }
661 
662  return Taub2bFlag;
663 }
664 //========================================================
665 // taub2b selection for tau 1x1 process (tigher selection than taub2b
666 //========================================================
667 bool 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 //========================================================
756 bool 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;
880  get2CLETP(MaxTCId[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 //========================================================
929 void TrgEclBhabha::get2CLETP(int TCId1,
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:312
int m_3DBhabhaSelectionThetaFlag
flag which shows theta position of clusters of 3DBhabha Selection.
Definition: TrgEclBhabha.h:330
int m_taub2bAngleFlag
taub2b 2 cluster angle cut flag
Definition: TrgEclBhabha.h:290
double m_taub2bEtotCut
taub2b total energy(TC theta id=1-17) cut (GeV)
Definition: TrgEclBhabha.h:284
bool GetBhabha00(std::vector< double >)
Belle 2D Bhabha veto method.
double m_taub2b3CLEHighCut
taub2b3 cluster energy cut3 (GeV)
Definition: TrgEclBhabha.h:314
bool Getmumu()
MuMu selection for calibration.
std::vector< double > m_3DBhabhaSelectionClusterEnergies
Energies of two clusters used for 3D Bhabha selection (GeV)
Definition: TrgEclBhabha.h:336
std::vector< int > m_3DBhabhaSelectionClusterThetaIds
ThetaIDs of two clusters used for 3D Bhabha selection.
Definition: TrgEclBhabha.h:334
int GetBhabhaAddition(void)
Additional Bhabha veto.
std::vector< double > MaxTCId
Max TC Id.
Definition: TrgEclBhabha.h:254
std::vector< int > m_taub2bAngleCut
taub2b 2 Cluster angle cut (degree)
Definition: TrgEclBhabha.h:282
void get2CLETP(int, int, int &, int &, int &, int &)
2 cluster energies, phi difference and theta sum
std::vector< TVector3 > ClusterPosition
Cluster Timing.
Definition: TrgEclBhabha.h:262
std::vector< double > m_3DBhabhaSelectionClusterTimings
Timings of two clusters used for 3D Bhabha selection (ns)
Definition: TrgEclBhabha.h:338
double _mumuThreshold
mumu bit Energy Threshold
Definition: TrgEclBhabha.h:276
std::vector< int > m_3DBhabhaVetoInTrackThetaRegion
theta region(low and high) of 3D Bhbabha veto InTrack
Definition: TrgEclBhabha.h:328
int m_3DBhabhaVetoInTrackFlag
trigger bit of flag(1bit) whether two clusters statisfy 3D Bhabha veto are in CDCTRG region in theta ...
Definition: TrgEclBhabha.h:318
TrgEclDataBase * _database
Object of Trigger ECL DataBase.
Definition: TrgEclBhabha.h:246
std::vector< double > m_3DBhabhaVetoClusterEnergies
Energies of two clusters of 3D Bhabha veto (GeV)
Definition: TrgEclBhabha.h:324
std::vector< int > m_3DBhabhaSelectionClusterTCIds
TCIDs of two clusters of 3D Bhabha selection.
Definition: TrgEclBhabha.h:332
int m_taub2bEtotFlag
taub2b total energy(TC theta id=1-17) flag
Definition: TrgEclBhabha.h:292
std::vector< double > _mumuAngle
mumu bit Angle
Definition: TrgEclBhabha.h:278
std::vector< double > m_3DBhabhaAddAngleCut
Angle selection of additional Bhabha veto in CM frame.
Definition: TrgEclBhabha.h:280
std::vector< double > _3DBhabhaVetoThreshold
3D Veto Bhabha Energy Threshold
Definition: TrgEclBhabha.h:270
double m_taub2b2EtotCut
taub2b2 total energy cut (GeV)
Definition: TrgEclBhabha.h:296
std::vector< double > ClusterTiming
Cluster Timing.
Definition: TrgEclBhabha.h:260
std::vector< int > m_3DBhabhaVetoClusterThetaIds
ThetaIds of two clusters of 3D Bhabha veto.
Definition: TrgEclBhabha.h:322
bool GetBhabha02()
Belle II 3D Bhabha method for selection.
std::vector< double > _3DBhabhaSelectionAngle
3D Selection Bhabha Energy Angle
Definition: TrgEclBhabha.h:272
std::vector< double > _2DBhabhaThresholdBWD
2D Bhabha Energy Threshold
Definition: TrgEclBhabha.h:266
std::vector< int > m_3DBhabhaVetoClusterTCIds
TCIDs of two clusters of 3D Bhabha veto.
Definition: TrgEclBhabha.h:320
double m_taub2bClusterECut2
taub2b Cluster one of energy cut in b2b in lab (GeV)
Definition: TrgEclBhabha.h:288
std::vector< double > BhabhaComb
Bhabha Combination.
Definition: TrgEclBhabha.h:252
std::vector< int > m_taub2b2AngleCut
taub2b2 two Cluster angle cut (degree)
Definition: TrgEclBhabha.h:298
double m_taub2b3EtotCut
taub2b3 total energy (TC theta ID =1-17) (GeV)
Definition: TrgEclBhabha.h:308
std::vector< double > _3DBhabhaSelectionThreshold
3D Selection Bhabha Energy Threshold
Definition: TrgEclBhabha.h:268
std::vector< double > m_3DBhabhaVetoClusterTimings
Timings of two clusters of 3D Bhabha veto (ns)
Definition: TrgEclBhabha.h:326
bool GetTaub2b3(double)
Taub2b3.
int m_taub2bClusterEFlag
taub2b Cluster energy flag
Definition: TrgEclBhabha.h:294
std::vector< double > MaxTCThetaId
Cluster ThetaId.
Definition: TrgEclBhabha.h:256
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:310
double m_taub2bClusterECut1
taub2b Cluster one of energy cut in b2b in lab (GeV)
Definition: TrgEclBhabha.h:286
virtual ~TrgEclBhabha()
Constructor.
std::vector< double > ClusterEnergy
Cluster Energy.
Definition: TrgEclBhabha.h:258
TrgEclMapping * _TCMap
Object of TC Mapping.
Definition: TrgEclBhabha.h:243
double m_taub2b2CLECut
taub2b2 cluster energy cut (GeV)
Definition: TrgEclBhabha.h:302
std::vector< double > _2DBhabhaThresholdFWD
2D Bhabha Energy Threshold
Definition: TrgEclBhabha.h:264
std::vector< double > _3DBhabhaVetoAngle
3D Veto Bhabha Energy Angle
Definition: TrgEclBhabha.h:274
double m_taub2b2CLEEndcapCut
taub2b2 cluster energy cut for endcap cluster (GeV)
Definition: TrgEclBhabha.h:300
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:306
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.