32 #define TRG_SHORT_NAMES
33 #define TRGECLCLUSTER_SHORT_NAMES
35 #include <framework/datastore/StoreArray.h>
38 #include <trg/ecl/TrgEclCluster.h>
39 #include "trg/ecl/dataobjects/TRGECLCluster.h"
47 TrgEclCluster::TrgEclCluster():
48 _BRICN(0), _FWDICN(0), _BWDICN(0),
49 _BRNofCluster(0), _FWDNofCluster(0), _BWDNofCluster(0),
50 _EventId(0), _Method(1), _LimitNCluster(6), _Position(1)
75 _Quadrant.resize(3, std::vector<int>(4, 0.0));
159 _Quadrant.resize(3, std::vector<int>(4, 0.0));
175 const std::vector<double>& tcenergy,
176 const std::vector<double>& tctiming)
199 for (
int iposition = 0; iposition < 3 ; iposition ++) {
201 for (
int icluster = 0; icluster < Ncluster; icluster++) {
213 ClusterArray[m_hitNum]->setEventId(m_nEvent);
214 ClusterArray[m_hitNum]->setClusterId(clusterId);
215 ClusterArray[m_hitNum]->setMaxTCId(
MaxTCId[iposition][icluster]);
218 ClusterArray[m_hitNum]->setNofTCinCluster(
NofTCinCluster[iposition][icluster]);
219 ClusterArray[m_hitNum]->setEnergyDep(
ClusterEnergy[iposition][icluster]);
220 ClusterArray[m_hitNum]->setTimeAve(
ClusterTiming[iposition][icluster]);
222 ClusterArray[m_hitNum]->setPositionX(
ClusterPositionX[iposition][icluster]);
223 ClusterArray[m_hitNum]->setPositionY(
ClusterPositionY[iposition][icluster]);
224 ClusterArray[m_hitNum]->setPositionZ(
ClusterPositionZ[iposition][icluster]);
234 std::vector<int> TCFire;
235 std::vector<double> TCFireEnergy;
236 std::vector<double> TCFireTiming;
237 std::vector<std::vector<double>> TCFirePosition;
240 TCFireEnergy.clear();
241 TCFireTiming.clear();
242 TCFirePosition.clear();
244 TCFire.resize(432, 0);
245 TCFireEnergy.resize(432, 0.);
246 TCFireTiming.resize(432, 0.);
247 TCFirePosition.resize(432, std::vector<double>(3, 0.));
249 const int hit_size =
TCId.size();
250 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
251 if (
TCId[ihit] >= 81 &&
TCId[ihit] <= 512) {
252 TCFire[
TCId[ihit] - 81] =
TCId[ihit];
264 int tc_upper_right = 0;
266 int tc_lower_right = 0;
268 int tc_lower_left = 0;
270 int tc_upper_left = 0;
272 for (
int iii = 0 ; iii < 432 ; iii++) {
273 if (TCFire[iii] == 0) {
continue; }
276 tc_upper = TCFire[iii + 420] ;
277 tc_upper_right = TCFire[iii + 419] ;
278 tc_right = TCFire[iii - 1] ;
279 tc_lower_right = TCFire[iii + 11] ;
280 tc_lower = TCFire[iii + 12] ;
281 tc_lower_left = TCFire[iii + 13] ;
282 tc_left = TCFire[iii + 1] ;
283 tc_upper_left = TCFire[iii + 421] ;
290 if (iii % 12 == 11) {
297 if (iii > 11 && iii < 420) {
298 tc_upper = TCFire[iii - 12] ;
300 tc_upper_right = TCFire[iii - 13] ;
301 tc_right = TCFire[iii - 1] ;
302 tc_lower_right = TCFire[iii + 11] ;
303 tc_lower = TCFire[iii + 12] ;
304 tc_lower_left = TCFire[iii + 13] ;
305 tc_left = TCFire[iii + 1] ;
306 tc_upper_left = TCFire[iii - 11] ;
313 if (iii % 12 == 11) {
322 tc_upper = TCFire[iii - 12] ;
323 tc_upper_right = TCFire[iii - 13] ;
324 tc_right = TCFire[iii - 1] ;
326 tc_lower_right = TCFire[iii - 421] ;
327 tc_lower = TCFire[iii - 420] ;
328 tc_lower_left = TCFire[iii - 419];
329 tc_left = TCFire[iii + 1] ;
330 tc_upper_left = TCFire[iii - 11] ;
336 if (iii % 12 == 11) {
356 if (!(tc_upper != 0 || tc_left != 0)) {
357 if (!(tc_lower != 0 && tc_lower_left != 0)) {
362 double maxTCEnergy = 0;
363 for (
int iTC = 0; iTC < 9; iTC++) {
365 if (maxTCEnergy < TCFireEnergy[
TempCluster[iTC] - 81]) {
384 if ((maxTCid - 81) % 12 == 0) {
391 if ((maxTCid - 81) % 12 == 11) {
399 if (maxTCid > 92 && maxTCid < 501) {
411 if ((maxTCid - 81) % 12 == 0) {
417 if ((maxTCid - 81) % 12 == 11) {
439 if ((maxTCid - 81) % 12 == 0) {
445 if ((maxTCid - 81) % 12 == 11) {
458 for (
int iNearTC = 1; iNearTC < 9; iNearTC ++) {
459 for (
int jNearTC = 1; jNearTC < 9; jNearTC ++) {
461 if (iNearTC == jNearTC) {
continue;}
469 double clusterenergy = 0;
470 double clustertiming = 0;
471 double clusterpositionX = 0;
472 double clusterpositionY = 0;
473 double clusterpositionZ = 0;
474 int noftcincluster = 0;
475 for (
int iNearTC = 0; iNearTC < 9; iNearTC ++) {
477 else {noftcincluster++;}
478 clusterenergy += TCFireEnergy[
TempCluster[iNearTC] - 81];
480 clusterpositionX += TCFireEnergy[
TempCluster[iNearTC] - 81] * TCFirePosition[
TempCluster[iNearTC] - 81][0];
481 clusterpositionY += TCFireEnergy[
TempCluster[iNearTC] - 81] * TCFirePosition[
TempCluster[iNearTC] - 81][1];
482 clusterpositionZ += TCFireEnergy[
TempCluster[iNearTC] - 81] * TCFirePosition[
TempCluster[iNearTC] - 81][2];
490 clustertiming /= clusterenergy;
492 clusterpositionX /= clusterenergy;
493 clusterpositionY /= clusterenergy;
494 clusterpositionZ /= clusterenergy;
496 clustertiming = TCFireTiming[maxTCId - 81];
497 clusterpositionX = TCFirePosition[maxTCId - 81][0];
498 clusterpositionY = TCFirePosition[maxTCId - 81][1];
499 clusterpositionZ = TCFirePosition[maxTCId - 81][2];
501 if (clustertiming == 0 && clusterenergy == 0) {
continue;}
520 std::vector<int> TCFire;
521 std::vector<double> TCFireEnergy;
522 std::vector<double> TCFireTiming;
523 std::vector<std::vector<double>> TCFirePosition;
525 std::vector<double> TempClusterEnergy;
526 std::vector<double> TempClusterTiming;
527 std::vector<double> TempClusterPositionX;
528 std::vector<double> TempClusterPositionY;
529 std::vector<double> TempClusterPositionZ;
530 std::vector<double> Sort1D;
531 std::vector<std::vector<double>> Sort2D;
533 std::vector<int> TempNofTCinCluster;
534 std::vector<int> TempMaxTCId;
536 int TempICNTCId = 0;;
538 TempClusterEnergy.clear();
539 TempClusterTiming.clear();
540 TempClusterPositionX.clear();
541 TempClusterPositionY.clear();
542 TempClusterPositionZ.clear();
543 TempNofTCinCluster.clear();
554 TCFireEnergy.clear();
555 TCFireTiming.clear();
556 TCFirePosition.clear();
558 TCFire.resize(96, 0);
559 TCFireEnergy.resize(96, 0.);
560 TCFireTiming.resize(96, 0.);
562 TCFirePosition.resize(96, std::vector<double>(3, 0.));
565 const int hit_size =
TCId.size();
566 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
567 if (
TCId[ihit] > 80) {
continue;}
593 int iTCId0 =
TCId[ihit] - 1;
595 if (iTCId0 % 5 == 0) {
596 kkk = (iTCId0 / 5) * 2;
597 TCFire[kkk] =
TCId[ihit];
598 TCFire[kkk + 1] =
TCId[ihit];
601 switch (iTCId0 % 5) {
603 TCFire[32 + 2 * kkk] =
TCId[ihit];
break;
605 TCFire[64 + 2 * kkk] =
TCId[ihit];
break;
607 TCFire[64 + 2 * kkk + 1] =
TCId[ihit];
break;
609 TCFire[32 + 2 * kkk + 1] =
TCId[ihit];
break;
616 for (
int iii = 0 ; iii < 96 ; iii++) {
623 for (
int iinit = 0; iinit < 9; iinit ++) {
TempCluster[iinit] = 0;}
624 if (TCFire[iii] == 0) {
continue; }
637 }
else if (iii == 30) {
668 }
else if (iii < 64) {
680 }
else if (iii == 33) {
694 else if (iii == 62) {
706 }
else if (iii == 63) {
757 }
else if (iii == 95) {
790 TempICNTCId = TCFire[iii];
794 double maxTCEnergy = 0;
795 for (
int iTC = 0; iTC < 9; iTC++) {
797 if (maxTCEnergy < TCFireEnergy[
TempCluster[iTC] - 1]) {
812 kkk = 64 + 1 + 2 * kkk;
814 kkk = 32 + 1 + 2 * kkk;
829 }
else if (kkk == 30) {
853 }
else if (kkk < 64) {
865 }
else if (kkk == 33) {
879 else if (kkk == 62) {
891 }
else if (kkk == 63) {
935 }
else if (kkk == 95) {
960 for (
int iNearTC = 1; iNearTC < 9; iNearTC ++) {
961 for (
int jNearTC = 1; jNearTC < 9; jNearTC ++) {
963 if (iNearTC == jNearTC)
continue;
971 double clusterenergy = 0;
972 double clustertiming = 0;
973 double clusterpositionX = 0;
974 double clusterpositionY = 0;
975 double clusterpositionZ = 0;
976 int noftcincluster = 0;
977 for (
int iNearTC = 0; iNearTC < 9; iNearTC ++) {
979 else {noftcincluster++;}
980 clusterenergy += TCFireEnergy[
TempCluster[iNearTC] - 1];
991 clustertiming /= clusterenergy;
993 clusterpositionX /= clusterenergy;
994 clusterpositionY /= clusterenergy;
995 clusterpositionZ /= clusterenergy;
997 clustertiming = TCFireTiming[maxTCId - 1];
998 clusterpositionX = TCFirePosition[maxTCId - 1][0];
999 clusterpositionY = TCFirePosition[maxTCId - 1][1];
1000 clusterpositionZ = TCFirePosition[maxTCId - 1][2];
1002 if (clustertiming == 0 && clusterenergy == 0) {
continue;}
1004 TempClusterEnergy.push_back(clusterenergy);
1005 TempClusterTiming.push_back(clustertiming);
1006 TempClusterPositionX.push_back(clusterpositionX);
1007 TempClusterPositionY.push_back(clusterpositionY);
1008 TempClusterPositionZ.push_back(clusterpositionZ);
1009 TempNofTCinCluster.push_back(noftcincluster);
1010 TempMaxTCId.push_back(maxTCId);
1012 Sort1D.push_back(TempICNTCId);
1013 Sort1D.push_back(clusterenergy);
1014 Sort1D.push_back(clustertiming);
1015 Sort1D.push_back(clusterpositionX);
1016 Sort1D.push_back(clusterpositionY);
1017 Sort1D.push_back(clusterpositionZ);
1018 Sort1D.push_back(noftcincluster);
1019 Sort1D.push_back(maxTCId);
1021 Sort2D.push_back(Sort1D);
1030 sort(Sort2D.begin(), Sort2D.end(),
1031 [](
const vector<double>& aa1,
const vector<double>& aa2) {return aa1[0] < aa2[0];});
1033 const int clustersize = Sort2D.size();
1034 for (
int jtc = 0; jtc < clustersize; jtc++) {
1042 MaxTCId[1].push_back(Sort2D[jtc][7]);
1052 std::vector<int> TCFire;
1053 std::vector<double> TCFireEnergy;
1054 std::vector<double> TCFireTiming;
1055 std::vector<std::vector<double>> TCFirePosition;
1058 std::vector<double> TempClusterEnergy;
1059 std::vector<double> TempClusterTiming;
1060 std::vector<double> TempClusterPositionX;
1061 std::vector<double> TempClusterPositionY;
1062 std::vector<double> TempClusterPositionZ;
1063 std::vector<int> TempNofTCinCluster;
1064 std::vector<int> TempMaxTCId;
1066 std::vector<double> Sort1D;
1067 std::vector<std::vector<double>> Sort2D;
1069 int TempICNTCId = 0;
1071 TempClusterEnergy.clear();
1072 TempClusterTiming.clear();
1073 TempClusterPositionX.clear();
1074 TempClusterPositionY.clear();
1075 TempClusterPositionZ.clear();
1076 TempNofTCinCluster.clear();
1077 TempMaxTCId.clear();
1082 TCFireEnergy.clear();
1083 TCFireTiming.clear();
1084 TCFirePosition.clear();
1086 TCFire.resize(64, 0);
1087 TCFireEnergy.resize(64, 0.);
1088 TCFireTiming.resize(64, 0.);
1089 TCFirePosition.resize(64, std::vector<double>(3, 0.));
1091 const int hit_size =
TCId.size();
1092 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
1093 if (
TCId[ihit] < 513) {
continue;}
1094 TCFireEnergy[
TCId[ihit] - 513] =
Energy[ihit];
1095 TCFireTiming[
TCId[ihit] - 513] =
Timing[ihit];
1116 int iTCId0 =
TCId[ihit] - 1;
1118 if ((iTCId0 - 512) % 4 == 2) {
1119 kkk = (iTCId0 - 512) / 2 - 1;
1121 if ((iTCId0 - 512) % 4 == 1) {
1122 kkk = ((iTCId0 - 512) + 1) / 2;
1124 if ((iTCId0 - 512) % 4 == 3) {
1125 kkk = 32 + ((iTCId0 - 512) - 3) / 2;
1127 if ((iTCId0 - 512) % 4 == 0) {
1128 kkk = 33 + ((iTCId0 - 512)) / 2;
1131 TCFire[kkk] = iTCId0 + 1;
1136 for (
int iii = 0 ; iii < 64 ; iii ++) {
1138 if (TCFire[iii] == 0) {
continue; }
1140 for (
int iinit = 0; iinit < 9; iinit ++) {
TempCluster[iinit] = 0;}
1152 }
else if (iii == 31) {
1184 }
else if (iii == 63) {
1210 TempICNTCId = TCFire[iii];
1214 double maxTCEnergy = 0;
1215 for (
int iTC = 0; iTC < 9; iTC++) {
1217 if (maxTCEnergy < TCFireEnergy[
TempCluster[iTC] - 513]) {
1218 maxTCEnergy = TCFireEnergy[
TempCluster[iTC] - 513];
1248 }
else if (kkk == 31) {
1280 }
else if (kkk == 63) {
1305 for (
int iNearTC = 1; iNearTC < 9; iNearTC ++) {
1306 for (
int jNearTC = 1; jNearTC < 9; jNearTC ++) {
1308 if (iNearTC == jNearTC) {
continue;}
1316 double clusterenergy = 0;
1317 double clustertiming = 0;
1318 double clusterpositionX = 0;
1319 double clusterpositionY = 0;
1320 double clusterpositionZ = 0;
1321 int noftcincluster = 0;
1322 for (
int iNearTC = 0; iNearTC < 9; iNearTC ++) {
1324 else {noftcincluster++;}
1326 clusterenergy += TCFireEnergy[
TempCluster[iNearTC] - 513];
1328 clusterpositionX += TCFireEnergy[
TempCluster[iNearTC] - 513] * TCFirePosition[
TempCluster[iNearTC] - 513][0];
1329 clusterpositionY += TCFireEnergy[
TempCluster[iNearTC] - 513] * TCFirePosition[
TempCluster[iNearTC] - 513][1];
1330 clusterpositionZ += TCFireEnergy[
TempCluster[iNearTC] - 513] * TCFirePosition[
TempCluster[iNearTC] - 513][2];
1338 clustertiming /= clusterenergy;
1340 clusterpositionX /= clusterenergy;
1341 clusterpositionY /= clusterenergy;
1342 clusterpositionZ /= clusterenergy;
1344 clustertiming = TCFireTiming[maxTCId - 513];
1345 clusterpositionX = TCFirePosition[maxTCId - 513][0];
1346 clusterpositionY = TCFirePosition[maxTCId - 513][1];
1347 clusterpositionZ = TCFirePosition[maxTCId - 513][2];
1350 if (clustertiming == 0 && clusterenergy == 0) {
continue;}
1351 TempClusterEnergy.push_back(clusterenergy);
1352 TempClusterTiming.push_back(clustertiming);
1353 TempClusterPositionX.push_back(clusterpositionX);
1354 TempClusterPositionY.push_back(clusterpositionY);
1355 TempClusterPositionZ.push_back(clusterpositionZ);
1356 TempNofTCinCluster.push_back(noftcincluster);
1357 TempMaxTCId.push_back(maxTCId);
1360 Sort1D.push_back(TempICNTCId);
1361 Sort1D.push_back(clusterenergy);
1362 Sort1D.push_back(clustertiming);
1363 Sort1D.push_back(clusterpositionX);
1364 Sort1D.push_back(clusterpositionY);
1365 Sort1D.push_back(clusterpositionZ);
1366 Sort1D.push_back(noftcincluster);
1367 Sort1D.push_back(maxTCId);
1369 Sort2D.push_back(Sort1D);
1377 sort(Sort2D.begin(), Sort2D.end(),
1378 [](
const vector<double>& aa1,
const vector<double>& aa2) {return aa1[0] < aa2[0];});
1380 const int clustersize = Sort2D.size();
1381 for (
int jtc = 0; jtc < clustersize; jtc++) {
1388 MaxTCId[2].push_back(Sort2D[jtc][7]);
1401 std::vector<int> TCFire;
1405 TCFire.resize(432, 0);
1407 const int hit_size =
TCId.size();
1408 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
1409 if (
TCId[ihit] >= 81 &&
TCId[ihit] <= 512) {
1410 TCFire[
TCId[ihit] - 81] =
TCId[ihit];
1418 int tc_upper_right = 0;
1420 int tc_lower_right = 0;
1422 int tc_lower_left = 0;
1424 int tc_upper_left = 0;
1426 for (
int iii = 0 ; iii < 432 ; iii++) {
1427 if (TCFire[iii] == 0) {
continue; }
1430 tc_upper = TCFire[iii + 420] ;
1431 tc_upper_right = TCFire[iii + 419] ;
1432 tc_right = TCFire[iii - 1] ;
1433 tc_lower_right = TCFire[iii + 11] ;
1434 tc_lower = TCFire[iii + 12] ;
1435 tc_lower_left = TCFire[iii + 13] ;
1436 tc_left = TCFire[iii + 1] ;
1437 tc_upper_left = TCFire[iii + 421] ;
1438 if (iii % 12 == 0) {
1444 if (iii % 12 == 11) {
1451 if (iii > 11 && iii < 420) {
1452 tc_upper = TCFire[iii - 12] ;
1454 tc_upper_right = TCFire[iii - 13] ;
1455 tc_right = TCFire[iii - 1] ;
1456 tc_lower_right = TCFire[iii + 11] ;
1457 tc_lower = TCFire[iii + 12] ;
1458 tc_lower_left = TCFire[iii + 13] ;
1459 tc_left = TCFire[iii + 1] ;
1460 tc_upper_left = TCFire[iii - 11] ;
1461 if (iii % 12 == 0) {
1467 if (iii % 12 == 11) {
1476 tc_upper = TCFire[iii - 12] ;
1477 tc_upper_right = TCFire[iii - 13] ;
1478 tc_right = TCFire[iii - 1] ;
1480 tc_lower_right = TCFire[iii - 421] ;
1481 tc_lower = TCFire[iii - 420] ;
1482 tc_lower_left = TCFire[iii - 419];
1483 tc_left = TCFire[iii + 1] ;
1484 tc_upper_left = TCFire[iii - 11] ;
1485 if (iii % 12 == 0) {
1490 if (iii % 12 == 11) {
1508 if (!(tc_upper != 0 || tc_left != 0)) {
1509 if (!(tc_lower != 0 && tc_lower_left != 0)) {
1513 if (phiid == 36 || (phiid > 0 && phiid < 11)) {
1516 if (phiid > 8 && phiid < 20) {
1519 if (phiid > 17 && phiid < 29) {
1522 if ((phiid > 26 && phiid < 37) || phiid == 1) {
1539 std::vector<int> TCFire;
1544 TCFire.resize(96, 0);
1547 const int hit_size =
TCId.size();
1548 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
1549 if (
TCId[ihit] > 80) {
continue;}
1568 int iTCId0 =
TCId[ihit] - 1;
1570 if (iTCId0 % 5 == 0) {
1571 kkk = (iTCId0 / 5) * 2;
1572 TCFire[kkk] =
TCId[ihit];
1573 TCFire[kkk + 1] =
TCId[ihit];
1576 switch (iTCId0 % 5) {
1578 TCFire[32 + 2 * kkk] =
TCId[ihit];
break;
1580 TCFire[64 + 2 * kkk] =
TCId[ihit];
break;
1582 TCFire[64 + 2 * kkk + 1] =
TCId[ihit];
break;
1584 TCFire[32 + 2 * kkk + 1] =
TCId[ihit];
break;
1592 for (
int iii = 32 ; iii < 96 ; iii++) {
1593 for (
int iinit = 0; iinit < 9; iinit ++) {
TempCluster[iinit] = 0;}
1594 if (TCFire[iii] == 0) {
continue; }
1606 }
else if (iii == 63) {
1638 }
else if (iii == 95) {
1667 if (phiid == 32 || (phiid > 0 && phiid < 10)) {
1670 if (phiid > 7 && phiid < 18) {
1673 if (phiid > 15 && phiid < 26) {
1676 if ((phiid > 22 && phiid < 33) || phiid == 1) {
1691 std::vector<int> TCFire;
1696 TCFire.resize(64, 0);
1700 const int hit_size =
TCId.size();
1701 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
1702 if (
TCId[ihit] < 513) {
continue;}
1721 int iTCId0 =
TCId[ihit] - 1;
1723 if ((iTCId0 - 512) % 4 == 2) {
1724 kkk = (iTCId0 - 512) / 2 - 1;
1726 if ((iTCId0 - 512) % 4 == 1) {
1727 kkk = ((iTCId0 - 512) + 1) / 2;
1729 if ((iTCId0 - 512) % 4 == 3) {
1730 kkk = 32 + ((iTCId0 - 512) - 3) / 2;
1732 if ((iTCId0 - 512) % 4 == 0) {
1733 kkk = 33 + ((iTCId0 - 512)) / 2;
1736 TCFire[kkk] = iTCId0 + 1;
1741 for (
int iii = 0 ; iii < 64 ; iii ++) {
1743 if (TCFire[iii] == 0) {
continue; }
1745 for (
int iinit = 0; iinit < 9; iinit ++) {
TempCluster[iinit] = 0;}
1757 }
else if (iii == 31) {
1789 }
else if (iii == 63) {
1818 if (phiid == 32 || (phiid > 0 && phiid < 10)) {
1821 if (phiid > 7 && phiid < 18) {
1824 if (phiid > 15 && phiid < 26) {
1827 if ((phiid > 22 && phiid < 33) || phiid == 1) {
Accessor to arrays stored in the data store.
T * appendNew()
Construct a new T object at the end of the array.
int getEntries() const
Get the number of objects in the array.
void save(int)
Save Cluster information in TRGECLCluster Table.
int _Position
Position calculation method(0:Most energetic TC Postion, 1 : Energy weighted Postion)
void setICN(const std::vector< int > &)
set ICN for each part(Fw,Br,Bw)
std::vector< std::vector< int > > _Quadrant
Quadrant for Beam Backgournd veto.
int _BRNofCluster
Cluster in Barrel.
std::vector< std::vector< int > > NofTCinCluster
N of TC in Cluster
std::vector< int > TempCluster
Temporal Cluster.
int getICNSub(int)
get ICN in each region(Fw(0), Br(1), Bw(2))
int _BWDNofCluster
Cluster in Backward Endcap.
std::vector< std::vector< int > > _FwCluster
cluster in forward endcap
int getICNFwBr(void)
get ICN in Barrel and Forward
std::vector< std::vector< double > > ClusterPositionX
Cluster position in X-axis.
int getNofExceedCluster()
get # Cluster in case of exceeding limit
int setBarrelICN()
calculate Belle ICN in Barrel
int setBackwardICN()
calculate Belle ICN in Backward endcap
std::vector< std::vector< double > > ClusterPositionZ
Cluster position in Z-axis.
std::vector< int > _icnfwbrbw
icn
std::vector< std::vector< int > > _BwCluster
cluster in backward endcap
int getBrICNCluster(int ICNId, int)
get ICN in QuadrantId in Fw or Br or Bw.
int setForwardICN()
calculate Belle ICN in Foward endcap
int getFwICNCluster(int ICNId, int)
0 : center , 1; upper , 2: right , 3: lower , 4: lower right
int _Method
Clustering method.
int _BRICN
get Beam bkg veto flag.
std::vector< std::vector< double > > ClusterPositionY
Cluster position in Y-axis.
int _FWDNofCluster
Cluster in Forward Endcap.
virtual ~TrgEclCluster()
Constructor.
std::vector< std::vector< int > > MaxTCId
Maximum contribution TC Id in Cluster.
int _LimitNCluster
the Limit Number of Cluster
int getBwICNCluster(int ICNId, int)
0 : center , 1; upper , 2: right , 3: lower , 4: lower right
std::vector< std::vector< double > > ClusterTiming
Cluster timing.
std::vector< std::vector< double > > ClusterEnergy
Cluster enrgy
int _FWDICN
ICN in Forward Endcap.
TrgEclMapping * _TCMap
Object of TC Mapping.
int _BWDICN
ICN in Backward Endcap.
std::vector< int > TCId
TC Id.
std::vector< std::vector< int > > _BrCluster
cluster in barrel
std::vector< double > Energy
TC energy
std::vector< double > Timing
TC timing.
int getTCThetaIdFromTCId(int)
get [TC Theta ID] from [TC ID]
TVector3 getTCPosition(int)
TC position (cm)
int getTCPhiIdFromTCId(int)
get [TC Phi ID] from [TC ID]
Abstract base class for different kinds of events.