32#define TRG_SHORT_NAMES
33#define TRGECLCLUSTER_SHORT_NAMES
35#include <framework/datastore/StoreArray.h>
37#include <trg/ecl/TrgEclCluster.h>
38#include "trg/ecl/dataobjects/TRGECLCluster.h"
46 _BRICN(0), _FWDICN(0), _BWDICN(0),
47 _BRNofCluster(0), _FWDNofCluster(0), _BWDNofCluster(0),
48 _EventId(0), _Method(1), _LimitNCluster(6), _Position(1)
73 _Quadrant.resize(3, std::vector<int>(4, 0.0));
155 _Quadrant.resize(3, std::vector<int>(4, 0.0));
173 const std::vector<double>& tcenergy,
174 const std::vector<double>& tctiming)
200 for (
int iposition = 0; iposition < 3 ; iposition ++) {
202 for (
int icluster = 0; icluster < Ncluster; icluster++) {
214 ClusterArray[m_hitNum]->setEventId(m_nEvent);
215 ClusterArray[m_hitNum]->setClusterId(clusterId);
216 ClusterArray[m_hitNum]->setMaxTCId(
MaxTCId[iposition][icluster]);
219 ClusterArray[m_hitNum]->setNofTCinCluster(
NofTCinCluster[iposition][icluster]);
220 ClusterArray[m_hitNum]->setEnergyDep(
ClusterEnergy[iposition][icluster]);
221 ClusterArray[m_hitNum]->setTimeAve(
ClusterTiming[iposition][icluster]);
223 ClusterArray[m_hitNum]->setPositionX(
ClusterPositionX[iposition][icluster]);
224 ClusterArray[m_hitNum]->setPositionY(
ClusterPositionY[iposition][icluster]);
225 ClusterArray[m_hitNum]->setPositionZ(
ClusterPositionZ[iposition][icluster]);
238 std::vector<int> TCFire;
239 std::vector<double> TCFireEnergy;
240 std::vector<double> TCFireTiming;
241 std::vector<std::vector<double>> TCFirePosition;
244 TCFireEnergy.clear();
245 TCFireTiming.clear();
246 TCFirePosition.clear();
248 TCFire.resize(432, 0);
249 TCFireEnergy.resize(432, 0.);
250 TCFireTiming.resize(432, 0.);
251 TCFirePosition.resize(432, std::vector<double>(3, 0.));
253 const int hit_size =
TCId.size();
254 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
255 if (
TCId[ihit] >= 81 &&
TCId[ihit] <= 512) {
256 TCFire[
TCId[ihit] - 81] =
TCId[ihit];
268 int tc_upper_right = 0;
270 int tc_lower_right = 0;
272 int tc_lower_left = 0;
274 int tc_upper_left = 0;
276 for (
int iii = 0 ; iii < 432 ; iii++) {
278 if (TCFire[iii] == 0) {
continue; }
291 if (!(tc_upper != 0 || tc_left != 0)) {
292 if (!(tc_lower != 0 && tc_lower_left != 0)) {
297 double maxTCEnergy = 0;
298 for (
int iTC = 0; iTC < 9; iTC++) {
300 if (maxTCEnergy < TCFireEnergy[
TempCluster[iTC] - 81]) {
318 if ((maxTCid - 81) % 12 == 0) {
323 if ((maxTCid - 81) % 12 == 11) {
329 if (maxTCid > 92 && maxTCid < 501) {
341 if ((maxTCid - 81) % 12 == 0) {
346 if ((maxTCid - 81) % 12 == 11) {
362 if ((maxTCid - 81) % 12 == 0) {
367 if ((maxTCid - 81) % 12 == 11) {
375 for (
int iNearTC = 1; iNearTC < 9; iNearTC ++) {
376 for (
int jNearTC = 1; jNearTC < 9; jNearTC ++) {
378 if (iNearTC == jNearTC) {
continue;}
386 double clusterenergy = 0;
387 double clustertiming = 0;
388 double clusterpositionX = 0;
389 double clusterpositionY = 0;
390 double clusterpositionZ = 0;
391 int noftcincluster = 0;
392 for (
int iNearTC = 0; iNearTC < 9; iNearTC ++) {
394 else {noftcincluster++;}
395 clusterenergy += TCFireEnergy[
TempCluster[iNearTC] - 81];
397 clusterpositionX += TCFireEnergy[
TempCluster[iNearTC] - 81] * TCFirePosition[
TempCluster[iNearTC] - 81][0];
398 clusterpositionY += TCFireEnergy[
TempCluster[iNearTC] - 81] * TCFirePosition[
TempCluster[iNearTC] - 81][1];
399 clusterpositionZ += TCFireEnergy[
TempCluster[iNearTC] - 81] * TCFirePosition[
TempCluster[iNearTC] - 81][2];
404 clustertiming /= clusterenergy;
406 clusterpositionX /= clusterenergy;
407 clusterpositionY /= clusterenergy;
408 clusterpositionZ /= clusterenergy;
410 clustertiming = TCFireTiming[maxTCId - 81];
411 clusterpositionX = TCFirePosition[maxTCId - 81][0];
412 clusterpositionY = TCFirePosition[maxTCId - 81][1];
413 clusterpositionZ = TCFirePosition[maxTCId - 81][2];
415 if (clustertiming == 0 && clusterenergy == 0) {
continue;}
437 std::vector<int> TCFire;
438 std::vector<double> TCFireEnergy;
439 std::vector<double> TCFireTiming;
440 std::vector<std::vector<double>> TCFirePosition;
442 std::vector<double> TempClusterEnergy;
443 std::vector<double> TempClusterTiming;
444 std::vector<double> TempClusterPositionX;
445 std::vector<double> TempClusterPositionY;
446 std::vector<double> TempClusterPositionZ;
447 std::vector<double> Sort1D;
448 std::vector<std::vector<double>> Sort2D;
450 std::vector<int> TempNofTCinCluster;
451 std::vector<int> TempMaxTCId;
453 int TempICNTCId = 0;;
455 TempClusterEnergy.clear();
456 TempClusterTiming.clear();
457 TempClusterPositionX.clear();
458 TempClusterPositionY.clear();
459 TempClusterPositionZ.clear();
460 TempNofTCinCluster.clear();
467 TCFireEnergy.clear();
468 TCFireTiming.clear();
469 TCFirePosition.clear();
471 TCFire.resize(96, 0);
472 TCFireEnergy.resize(96, 0.);
473 TCFireTiming.resize(96, 0.);
475 TCFirePosition.resize(96, std::vector<double>(3, 0.));
478 const int hit_size =
TCId.size();
479 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
480 if (
TCId[ihit] > 80) {
continue;}
504 int iTCId0 =
TCId[ihit] - 1;
506 if (iTCId0 % 5 == 0) {
507 kkk = (iTCId0 / 5) * 2;
508 TCFire[kkk] =
TCId[ihit];
509 TCFire[kkk + 1] =
TCId[ihit];
512 switch (iTCId0 % 5) {
514 TCFire[32 + 2 * kkk] =
TCId[ihit];
break;
516 TCFire[64 + 2 * kkk] =
TCId[ihit];
break;
518 TCFire[64 + 2 * kkk + 1] =
TCId[ihit];
break;
520 TCFire[32 + 2 * kkk + 1] =
TCId[ihit];
break;
527 for (
int iii = 0 ; iii < 96 ; iii++) {
534 for (
int iinit = 0; iinit < 9; iinit ++)
536 if (TCFire[iii] == 0)
551 }
else if (iii == 30) {
582 }
else if (iii < 64) {
594 }
else if (iii == 33) {
608 else if (iii == 62) {
620 }
else if (iii == 63) {
667 }
else if (iii == 95) {
700 TempICNTCId = TCFire[iii];
704 double maxTCEnergy = 0;
705 for (
int iTC = 0; iTC < 9; iTC++) {
707 if (maxTCEnergy < TCFireEnergy[
TempCluster[iTC] - 1]) {
722 kkk = 64 + 1 + 2 * kkk;
724 kkk = 32 + 1 + 2 * kkk;
739 }
else if (kkk == 30) {
763 }
else if (kkk < 64) {
775 }
else if (kkk == 33) {
789 else if (kkk == 62) {
801 }
else if (kkk == 63) {
845 }
else if (kkk == 95) {
870 for (
int iNearTC = 1; iNearTC < 9; iNearTC ++) {
871 for (
int jNearTC = 1; jNearTC < 9; jNearTC ++) {
873 if (iNearTC == jNearTC)
continue;
881 double clusterenergy = 0;
882 double clustertiming = 0;
883 double clusterpositionX = 0;
884 double clusterpositionY = 0;
885 double clusterpositionZ = 0;
886 int noftcincluster = 0;
887 for (
int iNearTC = 0; iNearTC < 9; iNearTC ++) {
889 else {noftcincluster++;}
890 clusterenergy += TCFireEnergy[
TempCluster[iNearTC] - 1];
901 clustertiming /= clusterenergy;
903 clusterpositionX /= clusterenergy;
904 clusterpositionY /= clusterenergy;
905 clusterpositionZ /= clusterenergy;
907 clustertiming = TCFireTiming[maxTCId - 1];
908 clusterpositionX = TCFirePosition[maxTCId - 1][0];
909 clusterpositionY = TCFirePosition[maxTCId - 1][1];
910 clusterpositionZ = TCFirePosition[maxTCId - 1][2];
912 if (clustertiming == 0 && clusterenergy == 0) {
continue;}
914 TempClusterEnergy.push_back(clusterenergy);
915 TempClusterTiming.push_back(clustertiming);
916 TempClusterPositionX.push_back(clusterpositionX);
917 TempClusterPositionY.push_back(clusterpositionY);
918 TempClusterPositionZ.push_back(clusterpositionZ);
919 TempNofTCinCluster.push_back(noftcincluster);
920 TempMaxTCId.push_back(maxTCId);
922 Sort1D.push_back(TempICNTCId);
923 Sort1D.push_back(clusterenergy);
924 Sort1D.push_back(clustertiming);
925 Sort1D.push_back(clusterpositionX);
926 Sort1D.push_back(clusterpositionY);
927 Sort1D.push_back(clusterpositionZ);
928 Sort1D.push_back(noftcincluster);
929 Sort1D.push_back(maxTCId);
931 Sort2D.push_back(Sort1D);
940 sort(Sort2D.begin(), Sort2D.end(),
941 [](
const vector<double>& aa1,
const vector<double>& aa2) {return aa1[0] < aa2[0];});
943 const int clustersize = Sort2D.size();
944 for (
int jtc = 0; jtc < clustersize; jtc++) {
952 MaxTCId[1].push_back(Sort2D[jtc][7]);
962 std::vector<int> TCFire;
963 std::vector<double> TCFireEnergy;
964 std::vector<double> TCFireTiming;
965 std::vector<std::vector<double>> TCFirePosition;
968 std::vector<double> TempClusterEnergy;
969 std::vector<double> TempClusterTiming;
970 std::vector<double> TempClusterPositionX;
971 std::vector<double> TempClusterPositionY;
972 std::vector<double> TempClusterPositionZ;
973 std::vector<int> TempNofTCinCluster;
974 std::vector<int> TempMaxTCId;
976 std::vector<double> Sort1D;
977 std::vector<std::vector<double>> Sort2D;
981 TempClusterEnergy.clear();
982 TempClusterTiming.clear();
983 TempClusterPositionX.clear();
984 TempClusterPositionY.clear();
985 TempClusterPositionZ.clear();
986 TempNofTCinCluster.clear();
992 TCFireEnergy.clear();
993 TCFireTiming.clear();
994 TCFirePosition.clear();
996 TCFire.resize(64, 0);
997 TCFireEnergy.resize(64, 0.);
998 TCFireTiming.resize(64, 0.);
999 TCFirePosition.resize(64, std::vector<double>(3, 0.));
1001 const int hit_size =
TCId.size();
1002 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
1003 if (
TCId[ihit] < 513) {
continue;}
1004 TCFireEnergy[
TCId[ihit] - 513] =
Energy[ihit];
1005 TCFireTiming[
TCId[ihit] - 513] =
Timing[ihit];
1026 int iTCId0 =
TCId[ihit] - 1;
1028 if ((iTCId0 - 512) % 4 == 2) {
1029 kkk = (iTCId0 - 512) / 2 - 1;
1031 if ((iTCId0 - 512) % 4 == 1) {
1032 kkk = ((iTCId0 - 512) + 1) / 2;
1034 if ((iTCId0 - 512) % 4 == 3) {
1035 kkk = 32 + ((iTCId0 - 512) - 3) / 2;
1037 if ((iTCId0 - 512) % 4 == 0) {
1038 kkk = 33 + ((iTCId0 - 512)) / 2;
1041 TCFire[kkk] = iTCId0 + 1;
1046 for (
int iii = 0 ; iii < 64 ; iii ++) {
1048 if (TCFire[iii] == 0) {
continue; }
1050 for (
int iinit = 0; iinit < 9; iinit ++) {
TempCluster[iinit] = 0;}
1062 }
else if (iii == 31) {
1094 }
else if (iii == 63) {
1120 TempICNTCId = TCFire[iii];
1124 double maxTCEnergy = 0;
1125 for (
int iTC = 0; iTC < 9; iTC++) {
1127 if (maxTCEnergy < TCFireEnergy[
TempCluster[iTC] - 513]) {
1128 maxTCEnergy = TCFireEnergy[
TempCluster[iTC] - 513];
1158 }
else if (kkk == 31) {
1190 }
else if (kkk == 63) {
1215 for (
int iNearTC = 1; iNearTC < 9; iNearTC ++) {
1216 for (
int jNearTC = 1; jNearTC < 9; jNearTC ++) {
1218 if (iNearTC == jNearTC) {
continue;}
1226 double clusterenergy = 0;
1227 double clustertiming = 0;
1228 double clusterpositionX = 0;
1229 double clusterpositionY = 0;
1230 double clusterpositionZ = 0;
1231 int noftcincluster = 0;
1232 for (
int iNearTC = 0; iNearTC < 9; iNearTC ++) {
1234 else {noftcincluster++;}
1236 clusterenergy += TCFireEnergy[
TempCluster[iNearTC] - 513];
1238 clusterpositionX += TCFireEnergy[
TempCluster[iNearTC] - 513] * TCFirePosition[
TempCluster[iNearTC] - 513][0];
1239 clusterpositionY += TCFireEnergy[
TempCluster[iNearTC] - 513] * TCFirePosition[
TempCluster[iNearTC] - 513][1];
1240 clusterpositionZ += TCFireEnergy[
TempCluster[iNearTC] - 513] * TCFirePosition[
TempCluster[iNearTC] - 513][2];
1248 clustertiming /= clusterenergy;
1250 clusterpositionX /= clusterenergy;
1251 clusterpositionY /= clusterenergy;
1252 clusterpositionZ /= clusterenergy;
1254 clustertiming = TCFireTiming[maxTCId - 513];
1255 clusterpositionX = TCFirePosition[maxTCId - 513][0];
1256 clusterpositionY = TCFirePosition[maxTCId - 513][1];
1257 clusterpositionZ = TCFirePosition[maxTCId - 513][2];
1260 if (clustertiming == 0 && clusterenergy == 0) {
continue;}
1261 TempClusterEnergy.push_back(clusterenergy);
1262 TempClusterTiming.push_back(clustertiming);
1263 TempClusterPositionX.push_back(clusterpositionX);
1264 TempClusterPositionY.push_back(clusterpositionY);
1265 TempClusterPositionZ.push_back(clusterpositionZ);
1266 TempNofTCinCluster.push_back(noftcincluster);
1267 TempMaxTCId.push_back(maxTCId);
1270 Sort1D.push_back(TempICNTCId);
1271 Sort1D.push_back(clusterenergy);
1272 Sort1D.push_back(clustertiming);
1273 Sort1D.push_back(clusterpositionX);
1274 Sort1D.push_back(clusterpositionY);
1275 Sort1D.push_back(clusterpositionZ);
1276 Sort1D.push_back(noftcincluster);
1277 Sort1D.push_back(maxTCId);
1279 Sort2D.push_back(Sort1D);
1287 sort(Sort2D.begin(), Sort2D.end(),
1288 [](
const vector<double>& aa1,
const vector<double>& aa2) {return aa1[0] < aa2[0];});
1290 const int clustersize = Sort2D.size();
1291 for (
int jtc = 0; jtc < clustersize; jtc++) {
1298 MaxTCId[2].push_back(Sort2D[jtc][7]);
1310 std::vector<int> TCFire;
1314 TCFire.resize(432, 0);
1316 const int hit_size =
TCId.size();
1317 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
1318 if (
TCId[ihit] >= 81 &&
TCId[ihit] <= 512) {
1319 TCFire[
TCId[ihit] - 81] =
TCId[ihit];
1326 int tc_upper_right = 0;
1328 int tc_lower_right = 0;
1330 int tc_lower_left = 0;
1332 int tc_upper_left = 0;
1334 for (
int iii = 0 ; iii < 432 ; iii++) {
1335 if (TCFire[iii] == 0) {
continue; }
1348 if (!(tc_upper != 0 || tc_left != 0)) {
1349 if (!(tc_lower != 0 && tc_lower_left != 0)) {
1353 if (phiid == 36 || (phiid > 0 && phiid < 11)) {
1356 if (phiid > 8 && phiid < 20) {
1359 if (phiid > 17 && phiid < 29) {
1362 if ((phiid > 26 && phiid < 37) || phiid == 1) {
1377 std::vector<int> TCFire,
1379 int& tc_upper_right,
1381 int& tc_lower_right,
1388 int offset_upper = 0;
1389 int offset_lower = 0;
1394 }
else if (iii <= 419) {
1401 offset_lower = -432;
1405 if (iii % 12 == 0) {
1407 tc_upper = TCFire[iii - 12 + offset_upper];
1411 tc_lower = TCFire[iii + 12 + offset_lower];
1412 tc_lower_left = TCFire[iii + 13 + offset_lower];
1413 tc_left = TCFire[iii + 1];
1414 tc_upper_left = TCFire[iii - 11 + offset_upper];
1415 }
else if (iii % 12 == 11) {
1417 tc_upper = TCFire[iii - 12 + offset_upper];
1418 tc_upper_right = TCFire[iii - 13 + offset_upper];
1419 tc_right = TCFire[iii - 1];
1420 tc_lower_right = TCFire[iii + 11 + offset_lower];
1421 tc_lower = TCFire[iii + 12 + offset_lower];
1426 tc_upper = TCFire[iii - 12 + offset_upper];
1427 tc_upper_right = TCFire[iii - 13 + offset_upper];
1428 tc_right = TCFire[iii - 1];
1429 tc_lower_right = TCFire[iii + 11 + offset_lower];
1430 tc_lower = TCFire[iii + 12 + offset_lower];
1431 tc_lower_left = TCFire[iii + 13 + offset_lower];
1432 tc_left = TCFire[iii + 1];
1433 tc_upper_left = TCFire[iii - 11 + offset_upper];
1453 std::vector<int> TCFire;
1458 TCFire.resize(96, 0);
1461 const int hit_size =
TCId.size();
1462 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
1463 if (
TCId[ihit] > 80) {
continue;}
1482 int iTCId0 =
TCId[ihit] - 1;
1484 if (iTCId0 % 5 == 0) {
1485 kkk = (iTCId0 / 5) * 2;
1486 TCFire[kkk] =
TCId[ihit];
1487 TCFire[kkk + 1] =
TCId[ihit];
1490 switch (iTCId0 % 5) {
1492 TCFire[32 + 2 * kkk] =
TCId[ihit];
break;
1494 TCFire[64 + 2 * kkk] =
TCId[ihit];
break;
1496 TCFire[64 + 2 * kkk + 1] =
TCId[ihit];
break;
1498 TCFire[32 + 2 * kkk + 1] =
TCId[ihit];
break;
1506 for (
int iii = 32 ; iii < 96 ; iii++) {
1507 for (
int iinit = 0; iinit < 9; iinit ++) {
TempCluster[iinit] = 0;}
1508 if (TCFire[iii] == 0) {
continue; }
1520 }
else if (iii == 63) {
1552 }
else if (iii == 95) {
1581 if (phiid == 32 || (phiid > 0 && phiid < 10)) {
1584 if (phiid > 7 && phiid < 18) {
1587 if (phiid > 15 && phiid < 26) {
1590 if ((phiid > 22 && phiid < 33) || phiid == 1) {
1605 std::vector<int> TCFire;
1610 TCFire.resize(64, 0);
1614 const int hit_size =
TCId.size();
1615 for (
int ihit = 0 ; ihit < hit_size ; ihit++) {
1616 if (
TCId[ihit] < 513) {
continue;}
1635 int iTCId0 =
TCId[ihit] - 1;
1637 if ((iTCId0 - 512) % 4 == 2) {
1638 kkk = (iTCId0 - 512) / 2 - 1;
1640 if ((iTCId0 - 512) % 4 == 1) {
1641 kkk = ((iTCId0 - 512) + 1) / 2;
1643 if ((iTCId0 - 512) % 4 == 3) {
1644 kkk = 32 + ((iTCId0 - 512) - 3) / 2;
1646 if ((iTCId0 - 512) % 4 == 0) {
1647 kkk = 33 + ((iTCId0 - 512)) / 2;
1650 TCFire[kkk] = iTCId0 + 1;
1655 for (
int iii = 0 ; iii < 64 ; iii ++) {
1657 if (TCFire[iii] == 0) {
continue; }
1659 for (
int iinit = 0; iinit < 9; iinit ++) {
TempCluster[iinit] = 0;}
1671 }
else if (iii == 31) {
1703 }
else if (iii == 63) {
1732 if (phiid == 32 || (phiid > 0 && phiid < 10)) {
1735 if (phiid > 7 && phiid < 18) {
1738 if (phiid > 15 && phiid < 26) {
1741 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
void setBarrelICNsub(int, std::vector< int >, int &, int &, int &, int &, int &, int &, int &, int &)
calculate 3x3 TC hit map for ICN in Barrel
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.
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]
ROOT::Math::XYZVector getTCPosition(int)
TC position (cm)
int getTCPhiIdFromTCId(int)
get [TC Phi ID] from [TC ID]
Abstract base class for different kinds of events.