167 bool condResult =
false;
168 bool reqObjResult =
false;
173 std::vector<GlobalObject> cndObjTypeVec(nObjInCond);
182 bool convertCaloScales =
false;
185 convertCaloScales =
true;
187 bool convertCaloScalesForOverlapRemovalFromLeg0 =
false;
190 convertCaloScalesForOverlapRemovalFromLeg0 =
true;
192 bool convertCaloScalesForOverlapRemovalFromLeg1 =
false;
195 convertCaloScalesForOverlapRemovalFromLeg1 =
true;
210 switch (cond0Categ) {
222 cndObjTypeVec[0] = (corrMuon->
objectType())[0];
225 std::ostringstream myCout;
226 muCondition.
print(myCout);
228 LogDebug(
"L1TGlobal") << myCout.str() << std::endl;
244 cndObjTypeVec[0] = (corrCalo->
objectType())[0];
247 std::ostringstream myCout;
248 caloCondition.
print(myCout);
250 LogDebug(
"L1TGlobal") << myCout.str() << std::endl;
265 cndObjTypeVec[0] = (corrEnergySum->
objectType())[0];
268 std::ostringstream myCout;
269 eSumCondition.
print(myCout);
271 LogDebug(
"L1TGlobal") << myCout.str() << std::endl;
285 <<
"\n First sub-condition false, second sub-condition not evaluated and not printed." 291 reqObjResult =
false;
293 switch (cond1Categ) {
304 cndObjTypeVec[1] = (corrMuon->
objectType())[0];
307 std::ostringstream myCout;
308 muCondition.
print(myCout);
310 LogDebug(
"L1TGlobal") << myCout.str() << std::endl;
325 cndObjTypeVec[1] = (corrCalo->
objectType())[0];
328 std::ostringstream myCout;
329 caloCondition.
print(myCout);
331 LogDebug(
"L1TGlobal") << myCout.str() << std::endl;
346 cndObjTypeVec[1] = (corrEnergySum->
objectType())[0];
349 std::ostringstream myCout;
350 eSumCondition.
print(myCout);
352 LogDebug(
"L1TGlobal") << myCout.str() << std::endl;
368 <<
" Both sub-conditions true for object requirements." 369 <<
" Evaluate correlation requirements.\n" << std::endl;
374 reqObjResult =
false;
376 switch (cond2Categ) {
387 cndObjTypeVec[2] = (corrMuon->
objectType())[0];
390 std::ostringstream myCout;
391 muCondition.
print(myCout);
393 LogDebug(
"L1TGlobal") << myCout.str() << std::endl;
407 cndObjTypeVec[2] = (corrCalo->
objectType())[0];
410 std::ostringstream myCout;
411 caloCondition.
print(myCout);
413 LogDebug(
"L1TGlobal") << myCout.str() << std::endl;
428 cndObjTypeVec[2] = (corrEnergySum->
objectType())[0];
431 std::ostringstream myCout;
432 eSumCondition.
print(myCout);
434 LogDebug(
"L1TGlobal") << myCout.str() << std::endl;
448 <<
" Third sub-condtion false for object requirements." 449 <<
" Algorithm returning false.\n" << std::endl;
453 <<
" All three sub-conditions true for object requirements." 454 <<
" Evaluate correlation requirements and overlap removal.\n" << std::endl;
464 objectsInComb.reserve(nObjInCond);
474 bool etSumCond =
false;
526 LogDebug(
"L1TGlobal") <<
"Phi Bound = " << phiBound << std::endl;
536 <<
" Sub-condition 0: std::vector<SingleCombInCond> size: " 537 << (cond0Comb.size()) << std::endl;
539 <<
" Sub-condition 1: std::vector<SingleCombInCond> size: " 540 << (cond1Comb.size()) << std::endl;
542 <<
" Sub-condition 2: std::vector<SingleCombInCond> size: " 543 << (cond2Comb.size()) << std::endl;
552 for (std::vector<SingleCombInCond>::const_iterator it0Comb = cond0Comb.begin(); it0Comb != cond0Comb.end(); it0Comb++) {
558 if (!(*it0Comb).empty()) {
559 obj0Index = (*it0Comb)[0];
562 <<
"\n SingleCombInCond (*it0Comb).size() " 563 << ((*it0Comb).size()) << std::endl;
568 switch (cond0Categ) {
572 phiIndex0 = (candMuVec->
at(cond0bx,obj0Index))->hwPhi();
573 etaIndex0 = (candMuVec->
at(cond0bx,obj0Index))->hwEta();
574 etIndex0 = (candMuVec->
at(cond0bx,obj0Index))->hwPt();
575 chrg0 = (candMuVec->
at(cond0bx,obj0Index))->hwCharge();
576 int etaBin0 = etaIndex0;
583 if (etBin0 >= ssize){
586 <<
"muon0 hw et" << etBin0 <<
" out of scale range. Setting to maximum.";
591 phi0Phy = 0.5*(binEdges.second + binEdges.first);
593 eta0Phy = 0.5*(binEdges.second + binEdges.first);
595 et0Phy = 0.5*(binEdges.second + binEdges.first);
597 LogDebug(
"L1TGlobal") <<
"Found all quantities for the muon 0" << std::endl;
603 switch(cndObjTypeVec[0]) {
607 phiIndex0 = (candCaloVec->
at(cond0bx,obj0Index))->hwPhi();
608 etaIndex0 = (candCaloVec->
at(cond0bx,obj0Index))->hwEta();
609 etIndex0 = (candCaloVec->
at(cond0bx,obj0Index))->hwPt();
616 if (etBin0 >= ssize){
619 <<
"EG0 hw et" << etBin0 <<
" out of scale range. Setting to maximum.";
624 phi0Phy = 0.5*(binEdges.second + binEdges.first);
626 eta0Phy = 0.5*(binEdges.second + binEdges.first);
628 et0Phy = 0.5*(binEdges.second + binEdges.first);
635 phiIndex0 = (candCaloVec->
at(cond0bx,obj0Index))->hwPhi();
636 etaIndex0 = (candCaloVec->
at(cond0bx,obj0Index))->hwEta();
637 etIndex0 = (candCaloVec->
at(cond0bx,obj0Index))->hwPt();
643 if (etBin0 >= ssize){
651 phi0Phy = 0.5*(binEdges.second + binEdges.first);
653 eta0Phy = 0.5*(binEdges.second + binEdges.first);
655 et0Phy = 0.5*(binEdges.second + binEdges.first);
661 phiIndex0 = (candCaloVec->
at(cond0bx,obj0Index))->hwPhi();
662 etaIndex0 = (candCaloVec->
at(cond0bx,obj0Index))->hwEta();
663 etIndex0 = (candCaloVec->
at(cond0bx,obj0Index))->hwPt();
669 if (etBin0 >= ssize){
672 <<
"tau0 hw et" << etBin0 <<
" out of scale range. Setting to maximum.";
677 phi0Phy = 0.5*(binEdges.second + binEdges.first);
679 eta0Phy = 0.5*(binEdges.second + binEdges.first);
681 et0Phy = 0.5*(binEdges.second + binEdges.first);
690 phiORIndex0 = phiIndex0;
691 etaORIndex0 = etaIndex0;
694 if(convertCaloScales) {
698 LogDebug(
"L1TGlobal") << lutName <<
" EtaCal = " << etaIndex0 <<
" etaBin0 = " << etaBin0 <<
" EtaMu = " << tst << std::endl;
701 LogDebug(
"L1TGlobal") << lutName <<
" PhiCal = " << phiIndex0 <<
" PhiMu = " << tst << std::endl;
706 if(convertCaloScalesForOverlapRemovalFromLeg0) {
707 phiORIndex0 = phiIndex0;
708 etaORIndex0 = etaIndex0;
722 switch( cndObjTypeVec[0] ){
757 <<
"Unmatched object type from template to EtSumType, cndObjTypeVec[0] = " 766 for(
int iEtSum=0; iEtSum < (
int)candEtSumVec->
size(cond0bx); iEtSum++) {
767 if( (candEtSumVec->
at(cond0bx,iEtSum))->getType() ==
type ) {
768 phiIndex0 = (candEtSumVec->
at(cond0bx,iEtSum))->hwPhi();
769 etaIndex0 = (candEtSumVec->
at(cond0bx,iEtSum))->hwEta();
770 etIndex0 = (candEtSumVec->
at(cond0bx,iEtSum))->hwPt();
773 if(cndObjTypeVec[0] ==
gtETM ) {
775 phi0Phy = 0.5*(binEdges.second + binEdges.first);
781 if (etBin0 >= ssize){ etBin0 = ssize-1; }
784 et0Phy = 0.5*(binEdges.second + binEdges.first);
785 }
else if (cndObjTypeVec[0] ==
gtHTM) {
787 phi0Phy = 0.5*(binEdges.second + binEdges.first);
793 if (etBin0 >= ssize){ etBin0 = ssize-1; }
796 et0Phy = 0.5*(binEdges.second + binEdges.first);
797 }
else if (cndObjTypeVec[0] ==
gtETMHF) {
799 phi0Phy = 0.5*(binEdges.second + binEdges.first);
805 if (etBin0 >= ssize){ etBin0 = ssize-1; }
808 et0Phy = 0.5*(binEdges.second + binEdges.first);
811 phiORIndex0 = phiIndex0;
812 etaORIndex0 = etaIndex0;
815 if(convertCaloScales) {
819 LogDebug(
"L1TGlobal") << lutName <<
" PhiCal = " << phiIndex0 <<
" PhiMu = " << tst << std::endl;
824 if(convertCaloScalesForOverlapRemovalFromLeg0) {
825 phiORIndex0 = phiIndex0;
838 LogDebug(
"L1TGlobal") <<
"Error could not find the Cond Category for Leg 0" << std::endl;
844 LogDebug(
"L1TGlobal") <<
"lutObj0 = " << lutObj0 << std::endl;
846 unsigned int overlapRemovalMatchLeg1 = 0x0;
851 for (std::vector<SingleCombInCond>::const_iterator it2Comb = cond2Comb.begin(); it2Comb != cond2Comb.end() && overlapRemovalMatchLeg1 != 0x1; it2Comb++) {
857 if (!(*it2Comb).empty()) {
858 obj2Index = (*it2Comb)[0];
861 <<
"\n SingleCombInCond (*it2Comb).size() " 862 << ((*it2Comb).size()) << std::endl;
867 switch (cond2Categ) {
873 phiIndex2 = (candMuVec->
at(cond2bx,obj2Index))->hwPhi();
874 etaIndex2 = (candMuVec->
at(cond2bx,obj2Index))->hwEta();
875 int etaBin2 = etaIndex2;
881 phi2Phy = 0.5*(binEdges.second + binEdges.first);
883 eta2Phy = 0.5*(binEdges.second + binEdges.first);
885 LogDebug(
"L1TGlobal") <<
"Found all quantities for the muon 0" << std::endl;
892 switch(cndObjTypeVec[2]) {
897 phiIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwPhi();
898 etaIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwEta();
904 phi2Phy = 0.5*(binEdges.second + binEdges.first);
906 eta2Phy = 0.5*(binEdges.second + binEdges.first);
913 phiIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwPhi();
914 etaIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwEta();
920 phi2Phy = 0.5*(binEdges.second + binEdges.first);
922 eta2Phy = 0.5*(binEdges.second + binEdges.first);
929 phiIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwPhi();
930 etaIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwEta();
935 phi2Phy = 0.5*(binEdges.second + binEdges.first);
937 eta2Phy = 0.5*(binEdges.second + binEdges.first);
948 if(convertCaloScales) {
953 LogDebug(
"L1TGlobal") << lutName <<
" EtaCal = " << etaIndex2 <<
" etaBin2 = " << etaBin2 <<
" EtaMu = " << tst << std::endl;
957 LogDebug(
"L1TGlobal") << lutName <<
" PhiCal = " << phiIndex2 <<
" PhiMu = " << tst << std::endl;
971 switch( cndObjTypeVec[2] ){
1001 lutObj2 =
"MinBias";
1006 <<
"Unmatched object type from template to EtSumType, cndObjTypeVec[2] = " 1015 for(
int iEtSum=0; iEtSum < (
int)candEtSumVec->
size(cond2bx); iEtSum++) {
1016 if( (candEtSumVec->
at(cond2bx,iEtSum))->getType() ==
type ) {
1017 phiIndex2 = (candEtSumVec->
at(cond2bx,iEtSum))->hwPhi();
1018 etaIndex2 = (candEtSumVec->
at(cond2bx,iEtSum))->hwEta();
1021 if(cndObjTypeVec[2] ==
gtETM ) {
1023 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1026 }
else if (cndObjTypeVec[2] ==
gtHTM) {
1028 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1031 }
else if (cndObjTypeVec[2] ==
gtETMHF) {
1033 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1039 if(convertCaloScales) {
1044 LogDebug(
"L1TGlobal") << lutName <<
" PhiCal = " << phiIndex2 <<
" PhiMu = " << tst << std::endl;
1057 LogDebug(
"L1TGlobal") <<
"Error could not find the Cond Category for Leg 3" << std::endl;
1063 LogDebug(
"L1TGlobal") <<
"lutObj2 = " << lutObj2 << std::endl;
1072 double deltaPhiPhy = fabs(phi2Phy - phi0Phy);
1073 if(deltaPhiPhy>
M_PI) deltaPhiPhy = 2.*
M_PI - deltaPhiPhy;
1074 double deltaEtaPhy = fabs(eta2Phy - eta0Phy);
1077 int deltaPhiFW =
abs(phiORIndex0 - phiIndex2);
1078 if(deltaPhiFW>=phiBound) deltaPhiFW = 2*phiBound - deltaPhiFW;
1085 int deltaEtaFW =
abs(etaORIndex0 - etaIndex2);
1086 long long deltaEtaLUT = 0;
1087 unsigned int precDeltaEtaLUT = 0;
1093 LogDebug(
"L1TGlobal") <<
"Obj0 phiFW = " << phiORIndex0 <<
" Obj2 phiFW = " << phiIndex2 <<
"\n" 1094 <<
" DeltaPhiFW = " << deltaPhiFW <<
"\n" 1095 <<
" LUT Name = " << lutName <<
" Prec = " << precDeltaPhiLUT <<
" DeltaPhiLUT = " << deltaPhiLUT <<
"\n" 1096 <<
"Obj0 etaFW = " << etaIndex0 <<
" Obj2 etaFW = " << etaIndex2 <<
"\n" 1097 <<
" DeltaEtaFW = " << deltaEtaFW <<
"\n" 1098 <<
" LUT Name = " << lutName <<
" Prec = " << precDeltaEtaLUT <<
" DeltaEtaLUT = " << deltaEtaLUT << std::endl;
1106 <<
" deltaEtaLUT = " << deltaEtaLUT <<
"\n" 1107 <<
" Precision Shift = " << preShift <<
"\n" 1109 <<
" deltaEtaPhy = " << deltaEtaPhy << std::endl;
1115 overlapRemovalMatchLeg1 |= 0x1;
1135 <<
" deltaPhiLUT = " << deltaPhiLUT <<
"\n" 1136 <<
" Precision Shift = " << preShift <<
"\n" 1138 <<
" deltaPhiPhy = " << deltaPhiPhy << std::endl;
1144 overlapRemovalMatchLeg1 |= 0x1;
1162 double deltaRSqPhy = deltaPhiPhy*deltaPhiPhy + deltaEtaPhy*deltaEtaPhy;
1163 long long deltaRSq = deltaEtaLUT*deltaEtaLUT + deltaPhiLUT*deltaPhiLUT;
1167 <<
" deltaPhiLUT = " << deltaPhiLUT <<
"\n" 1168 <<
" deltaEtaLUT = " << deltaEtaLUT <<
"\n" 1169 <<
" deltaRSqLUT = " << deltaRSq <<
"\n" 1170 <<
" Precision Shift = " << preShift <<
"\n" 1171 <<
" deltaRSqLUT (shift)= " << (deltaRSq/
pow(10,preShift+corrPar.
precDRCut)) <<
"\n" 1172 <<
" deltaRSqPhy = " << deltaRSqPhy << std::endl;
1178 overlapRemovalMatchLeg1 |= 0x1;
1197 if (overlapRemovalMatchLeg1 == 0
x1) {
1198 LogDebug(
"L1TGlobal") <<
" Remove Object of Leg1: Satisfied Overlap Removal Cuts " << std::endl;
1202 LogDebug(
"L1TGlobal") <<
" Keep Object of Leg1: Failed Overlap Removal Cuts " << std::endl;
1209 for (std::vector<SingleCombInCond>::const_iterator it1Comb = cond1Comb.begin(); it1Comb != cond1Comb.end(); it1Comb++) {
1211 LogDebug(
"L1TGlobal") <<
"Looking at second Condition" << std::endl;
1216 if (!(*it1Comb).empty()) {
1217 obj1Index = (*it1Comb)[0];
1220 <<
"\n SingleCombInCond (*it1Comb).size() " 1221 << ((*it1Comb).size()) << std::endl;
1227 if( cndObjTypeVec[0] == cndObjTypeVec[1] &&
1228 obj0Index == obj1Index &&
1229 cond0bx == cond1bx) {
1231 LogDebug(
"L1TGlobal") <<
"Corr Condition looking at same leg...skip" << std::endl;
1235 switch (cond1Categ) {
1239 phiIndex1 = (candMuVec->
at(cond1bx,obj1Index))->hwPhi();
1240 etaIndex1 = (candMuVec->
at(cond1bx,obj1Index))->hwEta();
1241 etIndex1 = (candMuVec->
at(cond1bx,obj1Index))->hwPt();
1242 chrg1 = (candMuVec->
at(cond1bx,obj1Index))->hwCharge();
1243 etaBin1 = etaIndex1;
1249 if (etBin1 >= ssize){
1251 <<
"muon2 hw et" << etBin1 <<
" out of scale range. Setting to maximum.";
1257 phi1Phy = 0.5*(binEdges.second + binEdges.first);
1259 eta1Phy = 0.5*(binEdges.second + binEdges.first);
1261 et1Phy = 0.5*(binEdges.second + binEdges.first);
1268 switch(cndObjTypeVec[1]) {
1273 phiIndex1 = (candCaloVec->
at(cond1bx,obj1Index))->hwPhi();
1274 etaIndex1 = (candCaloVec->
at(cond1bx,obj1Index))->hwEta();
1275 etIndex1 = (candCaloVec->
at(cond1bx,obj1Index))->hwPt();
1276 etaBin1 = etaIndex1;
1281 if (etBin1 >= ssize){
1283 <<
"EG1 hw et" << etBin1 <<
" out of scale range. Setting to maximum.";
1289 phi1Phy = 0.5*(binEdges.second + binEdges.first);
1291 eta1Phy = 0.5*(binEdges.second + binEdges.first);
1293 et1Phy = 0.5*(binEdges.second + binEdges.first);
1300 phiIndex1 = (candCaloVec->
at(cond1bx,obj1Index))->hwPhi();
1301 etaIndex1 = (candCaloVec->
at(cond1bx,obj1Index))->hwEta();
1302 etIndex1 = (candCaloVec->
at(cond1bx,obj1Index))->hwPt();
1303 etaBin1 = etaIndex1;
1308 if (etBin1 >= ssize){
1316 phi1Phy = 0.5*(binEdges.second + binEdges.first);
1318 eta1Phy = 0.5*(binEdges.second + binEdges.first);
1321 et1Phy = 0.5*(binEdges.second + binEdges.first);
1328 phiIndex1 = (candCaloVec->
at(cond1bx,obj1Index))->hwPhi();
1329 etaIndex1 = (candCaloVec->
at(cond1bx,obj1Index))->hwEta();
1330 etIndex1 = (candCaloVec->
at(cond1bx,obj1Index))->hwPt();
1331 etaBin1 = etaIndex1;
1335 if (etBin1 >= ssize){
1337 <<
"tau2 hw et" << etBin1 <<
" out of scale range. Setting to maximum.";
1343 phi1Phy = 0.5*(binEdges.second + binEdges.first);
1345 eta1Phy = 0.5*(binEdges.second + binEdges.first);
1347 et1Phy = 0.5*(binEdges.second + binEdges.first);
1358 phiORIndex1 = phiIndex1;
1359 etaORIndex1 = etaIndex1;
1362 if(convertCaloScales) {
1367 LogDebug(
"L1TGlobal") << lutName <<
" EtaCal = " << etaIndex1 <<
" EtaMu = " << tst << std::endl;
1370 LogDebug(
"L1TGlobal") << lutName <<
" PhiCal = " << phiIndex1 <<
" PhiMu = " << tst << std::endl;
1376 if(convertCaloScalesForOverlapRemovalFromLeg1) {
1377 phiORIndex1 = phiIndex1;
1378 etaORIndex1 = etaIndex1;
1387 LogDebug(
"L1TGlobal") <<
"Looking at second Condition as Energy Sum: " << cndObjTypeVec[1] << std::endl;
1393 switch( cndObjTypeVec[1] ){
1423 lutObj1 =
"MinBias";
1428 <<
"Unmatched object type from template to EtSumType, cndObjTypeVec[1] = " 1437 LogDebug(
"L1TGlobal") <<
"obj " << lutObj1 <<
" Vector Size " << candEtSumVec->
size(cond1bx) << std::endl;
1438 for(
int iEtSum=0; iEtSum < (
int)candEtSumVec->
size(cond1bx); iEtSum++) {
1439 if( (candEtSumVec->
at(cond1bx,iEtSum))->getType() ==
type ) {
1440 phiIndex1 = (candEtSumVec->
at(cond1bx,iEtSum))->hwPhi();
1441 etaIndex1 = (candEtSumVec->
at(cond1bx,iEtSum))->hwEta();
1442 etIndex1 = (candEtSumVec->
at(cond1bx,iEtSum))->hwPt();
1446 if(cndObjTypeVec[1] ==
gtETM) {
1448 phi1Phy = 0.5*(binEdges.second + binEdges.first);
1454 if (etBin1 >= ssize){ etBin1 = ssize-1; }
1457 et1Phy = 0.5*(binEdges.second + binEdges.first);
1458 }
else if(cndObjTypeVec[1] ==
gtHTM) {
1460 phi1Phy = 0.5*(binEdges.second + binEdges.first);
1466 if (etBin1 >= ssize){ etBin1 = ssize-1; }
1469 et1Phy = 0.5*(binEdges.second + binEdges.first);
1470 }
else if(cndObjTypeVec[1] ==
gtETMHF) {
1472 phi1Phy = 0.5*(binEdges.second + binEdges.first);
1477 if (etBin1 >= ssize){ etBin1 = ssize-1; }
1479 et1Phy = 0.5*(binEdges.second + binEdges.first);
1482 phiORIndex1 = phiIndex1;
1483 etaORIndex1 = etaIndex1;
1486 if(convertCaloScales) {
1491 LogDebug(
"L1TGlobal") << lutName <<
" PhiCal = " << phiIndex1 <<
" PhiMu = " << tst << std::endl;
1497 if(convertCaloScalesForOverlapRemovalFromLeg1) {
1498 phiORIndex1 = phiIndex1;
1508 LogDebug(
"L1TGlobal") <<
"Error could not find the Cond Category for Leg 0" << std::endl;
1514 unsigned int overlapRemovalMatchLeg2 = 0x0;
1519 for (std::vector<SingleCombInCond>::const_iterator it2Comb = cond2Comb.begin(); it2Comb != cond2Comb.end() && overlapRemovalMatchLeg2 != 0x1; it2Comb++) {
1525 if (!(*it2Comb).empty()) {
1526 obj2Index = (*it2Comb)[0];
1529 <<
"\n SingleCombInCond (*it2Comb).size() " 1530 << ((*it2Comb).size()) << std::endl;
1535 switch (cond2Categ) {
1539 phiIndex2 = (candMuVec->
at(cond2bx,obj2Index))->hwPhi();
1540 etaIndex2 = (candMuVec->
at(cond2bx,obj2Index))->hwEta();
1541 int etaBin2 = etaIndex2;
1547 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1549 eta2Phy = 0.5*(binEdges.second + binEdges.first);
1551 LogDebug(
"L1TGlobal") <<
"Found all quantities for the muon 0" << std::endl;
1558 switch(cndObjTypeVec[2]) {
1563 phiIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwPhi();
1564 etaIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwEta();
1570 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1572 eta2Phy = 0.5*(binEdges.second + binEdges.first);
1579 phiIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwPhi();
1580 etaIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwEta();
1581 etaBin2 = etaIndex2;
1585 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1587 eta2Phy = 0.5*(binEdges.second + binEdges.first);
1592 phiIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwPhi();
1593 etaIndex2 = (candCaloVec->
at(cond2bx,obj2Index))->hwEta();
1598 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1600 eta2Phy = 0.5*(binEdges.second + binEdges.first);
1611 if(convertCaloScales) {
1615 LogDebug(
"L1TGlobal") << lutName <<
" EtaCal = " << etaIndex2 <<
" etaBin2 = " << etaBin2 <<
" EtaMu = " << tst << std::endl;
1619 LogDebug(
"L1TGlobal") << lutName <<
" PhiCal = " << phiIndex2 <<
" PhiMu = " << tst << std::endl;
1633 switch( cndObjTypeVec[2] ){
1663 lutObj2 =
"MinBias";
1668 <<
"Unmatched object type from template to EtSumType, cndObjTypeVec[2] = " 1677 for(
int iEtSum=0; iEtSum < (
int)candEtSumVec->
size(cond2bx); iEtSum++) {
1678 if( (candEtSumVec->
at(cond2bx,iEtSum))->getType() ==
type ) {
1679 phiIndex2 = (candEtSumVec->
at(cond2bx,iEtSum))->hwPhi();
1680 etaIndex2 = (candEtSumVec->
at(cond2bx,iEtSum))->hwEta();
1683 if(cndObjTypeVec[2] ==
gtETM ) {
1685 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1688 }
else if (cndObjTypeVec[2] ==
gtHTM) {
1690 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1693 }
else if (cndObjTypeVec[2] ==
gtETMHF) {
1695 phi2Phy = 0.5*(binEdges.second + binEdges.first);
1701 if(convertCaloScales) {
1705 LogDebug(
"L1TGlobal") << lutName <<
" PhiCal = " << phiIndex2 <<
" PhiMu = " << tst << std::endl;
1716 LogDebug(
"L1TGlobal") <<
"Error could not find the Cond Category for Leg 3" << std::endl;
1729 double deltaPhiPhy = fabs(phi2Phy - phi1Phy);
1730 if(deltaPhiPhy>
M_PI) deltaPhiPhy = 2.*
M_PI - deltaPhiPhy;
1731 double deltaEtaPhy = fabs(eta2Phy - eta1Phy);
1734 int deltaPhiFW =
abs(phiORIndex1 - phiIndex2);
1735 if(deltaPhiFW>=phiBound) deltaPhiFW = 2*phiBound - deltaPhiFW;
1742 int deltaEtaFW =
abs(etaORIndex1 - etaIndex2);
1743 long long deltaEtaLUT = 0;
1744 unsigned int precDeltaEtaLUT = 0;
1750 LogDebug(
"L1TGlobal") <<
"Obj1 phiFW = " << phiORIndex1 <<
" Obj2 phiFW = " << phiIndex2 <<
"\n" 1751 <<
" DeltaPhiFW = " << deltaPhiFW <<
"\n" 1752 <<
" LUT Name = " << lutName <<
" Prec = " << precDeltaPhiLUT <<
" DeltaPhiLUT = " << deltaPhiLUT <<
"\n" 1753 <<
"Obj1 etaFW = " << etaIndex1 <<
" Obj1 etaFW = " << etaIndex1 <<
"\n" 1754 <<
" DeltaEtaFW = " << deltaEtaFW <<
"\n" 1755 <<
" LUT Name = " << lutName <<
" Prec = " << precDeltaEtaLUT <<
" DeltaEtaLUT = " << deltaEtaLUT << std::endl;
1764 <<
" deltaEtaLUT = " << deltaEtaLUT <<
"\n" 1765 <<
" Precision Shift = " << preShift <<
"\n" 1767 <<
" deltaEtaPhy = " << deltaEtaPhy << std::endl;
1773 overlapRemovalMatchLeg2 |= 0x1;
1792 <<
" deltaPhiLUT = " << deltaPhiLUT <<
"\n" 1793 <<
" Precision Shift = " << preShift <<
"\n" 1795 <<
" deltaPhiPhy = " << deltaPhiPhy << std::endl;
1801 overlapRemovalMatchLeg2 |= 0x1;
1820 double deltaRSqPhy = deltaPhiPhy*deltaPhiPhy + deltaEtaPhy*deltaEtaPhy;
1821 long long deltaRSq = deltaEtaLUT*deltaEtaLUT + deltaPhiLUT*deltaPhiLUT;
1825 <<
" deltaPhiLUT = " << deltaPhiLUT <<
"\n" 1826 <<
" deltaEtaLUT = " << deltaEtaLUT <<
"\n" 1827 <<
" deltaRSqLUT = " << deltaRSq <<
"\n" 1828 <<
" Precision Shift = " << preShift <<
"\n" 1829 <<
" deltaRSqLUT (shift)= " << (deltaRSq/
pow(10,preShift+corrPar.
precDRCut)) <<
"\n" 1830 <<
" deltaRSqPhy = " << deltaRSqPhy << std::endl;
1836 overlapRemovalMatchLeg2 |= 0x1;
1853 if (overlapRemovalMatchLeg2 == 0
x1) {
1854 LogDebug(
"L1TGlobal") <<
" Remove Object of Leg2: Satisfied Overlap Removal Cuts" << std::endl;
1858 LogDebug(
"L1TGlobal") <<
" Keep Object of Leg2: Failed Overlap Removal Cuts " << std::endl;
1867 LogDebug(
"L1TGlobal") <<
" Correlation pair [" 1870 <<
"] with collection indices [" << obj0Index <<
", " 1871 << obj1Index <<
"] " <<
" has: \n" 1872 <<
" Et value = ["<< etIndex0 <<
", " << etIndex1 <<
"]\n" 1873 <<
" phi indices = ["<< phiIndex0 <<
", " << phiIndex1 <<
"]\n" 1874 <<
" eta indices = ["<< etaIndex0 <<
", " << etaIndex1 <<
"]\n" 1875 <<
" chrg = ["<< chrg0 <<
", " << chrg1 <<
"]\n"<< std::endl;
1880 bool reqResult =
true;
1883 objectsInComb.clear();
1885 objectsInComb.push_back(obj0Index);
1886 objectsInComb.push_back(obj1Index);
1894 double deltaPhiPhy = fabs(phi1Phy - phi0Phy);
1895 if(deltaPhiPhy>
M_PI) deltaPhiPhy = 2.*
M_PI - deltaPhiPhy;
1896 double deltaEtaPhy = fabs(eta1Phy - eta0Phy);
1900 int deltaPhiFW =
abs(phiIndex0 - phiIndex1);
1901 if(deltaPhiFW>=phiBound) deltaPhiFW = 2*phiBound - deltaPhiFW;
1908 int deltaEtaFW =
abs(etaIndex0 - etaIndex1);
1909 long long deltaEtaLUT = 0;
1910 unsigned int precDeltaEtaLUT = 0;
1917 LogDebug(
"L1TGlobal") <<
"Obj0 phiFW = " << phiIndex0 <<
" Obj1 phiFW = " << phiIndex1 <<
"\n" 1918 <<
" DeltaPhiFW = " << deltaPhiFW <<
"\n" 1919 <<
" LUT Name = " << lutName <<
" Prec = " << precDeltaPhiLUT <<
" DeltaPhiLUT = " << deltaPhiLUT <<
"\n" 1920 <<
"Obj0 etaFW = " << etaIndex0 <<
" Obj1 etaFW = " << etaIndex1 <<
"\n" 1921 <<
" DeltaEtaFW = " << deltaEtaFW <<
"\n" 1922 <<
" LUT Name = " << lutName <<
" Prec = " << precDeltaEtaLUT <<
" DeltaEtaLUT = " << deltaEtaLUT << std::endl;
1928 unsigned int preShift = precDeltaEtaLUT - corrPar.
precEtaCut;
1929 LogDebug(
"L1TGlobal") <<
" Testing Delta Eta Cut (" << lutObj0 <<
"," << lutObj1 <<
") [" << (
long long)(corrPar.
minEtaCutValue*
pow(10,preShift))
1931 <<
" deltaEtaLUT = " << deltaEtaLUT <<
"\n" 1932 <<
" Precision Shift = " << preShift <<
"\n" 1933 <<
" deltaEta (shift)= " << (deltaEtaLUT/
pow(10,preShift+corrPar.
precEtaCut)) <<
"\n" 1934 <<
" deltaEtaPhy = " << deltaEtaPhy << std::endl;
1941 <<
"," << (
long long)(corrPar.
maxEtaCutValue*
pow(10,preShift)) <<
"]" << std::endl;
1946 <<
"," << (
long long)(corrPar.
maxEtaCutValue*
pow(10,preShift)) <<
"]" << std::endl;
1954 unsigned int preShift = precDeltaPhiLUT - corrPar.
precPhiCut;
1955 LogDebug(
"L1TGlobal") <<
" Testing Delta Phi Cut (" << lutObj0 <<
"," << lutObj1 <<
") [" << (
long long)(corrPar.
minPhiCutValue*
pow(10,preShift))
1957 <<
" deltaPhiLUT = " << deltaPhiLUT <<
"\n" 1958 <<
" Precision Shift = " << preShift <<
"\n" 1959 <<
" deltaPhi (shift)= " << (deltaPhiLUT/
pow(10,preShift+corrPar.
precPhiCut)) <<
"\n" 1960 <<
" deltaPhiPhy = " << deltaPhiPhy << std::endl;
1967 <<
"," << (
long long)(corrPar.
maxPhiCutValue*
pow(10,preShift)) <<
"]" << std::endl;
1972 <<
"," << (
long long)(corrPar.
maxPhiCutValue*
pow(10,preShift)) <<
"]" << std::endl;
1981 unsigned int preShift = 2*precDeltaPhiLUT - corrPar.
precDRCut;
1982 double deltaRSqPhy = deltaPhiPhy*deltaPhiPhy + deltaEtaPhy*deltaEtaPhy;
1983 long long deltaRSq = deltaEtaLUT*deltaEtaLUT + deltaPhiLUT*deltaPhiLUT;
1985 LogDebug(
"L1TGlobal") <<
" Testing Delta R Cut (" << lutObj0 <<
"," << lutObj1 <<
") [" << (
long long)(corrPar.
minDRCutValue*
pow(10,preShift))
1987 <<
" deltaPhiLUT = " << deltaPhiLUT <<
"\n" 1988 <<
" deltaEtaLUT = " << deltaEtaLUT <<
"\n" 1989 <<
" deltaRSqLUT = " << deltaRSq <<
"\n" 1990 <<
" Precision Shift = " << preShift <<
"\n" 1991 <<
" deltaRSqLUT (shift)= " << (deltaRSq/
pow(10,preShift+corrPar.
precDRCut)) <<
"\n" 1992 <<
" deltaRSqPhy = " << deltaRSqPhy << std::endl;
1999 <<
"," << (
long long)(corrPar.
maxDRCutValue*
pow(10,preShift)) <<
"]" << std::endl;
2004 <<
"," << (
long long)(corrPar.
maxDRCutValue*
pow(10,preShift)) <<
"]" << std::endl;
2016 double cosPhi1Phy =
cos(phi0Phy);
2017 double sinPhi1Phy =
sin(phi0Phy);
2018 double cosPhi2Phy =
cos(phi1Phy);
2019 double sinPhi2Phy =
sin(phi1Phy);
2021 double tbptSqPhy = et0Phy*et0Phy + et1Phy*et1Phy + 2*et0Phy*et1Phy*(cosPhi1Phy*cosPhi2Phy + sinPhi1Phy*sinPhi2Phy);
2032 if(precCosLUT0 - precCosLUT1 != 0)
LogDebug(
"L1TGlobal") <<
"Warning: Cos LUTs for TwoBodyPt on different Precision" << std::endl;
2033 if(precSinLUT0 - precSinLUT1 != 0)
LogDebug(
"L1TGlobal") <<
"Warning: Sin LUTs for TwoBodyPt on different Precision" << std::endl;
2034 if(precSinLUT0 - precCosLUT1 != 0)
LogDebug(
"L1TGlobal") <<
"Warning: Sin and Cos LUTs for TwoBodyPt on different Precision" << std::endl;
2035 if(precSinLUT1 - precCosLUT0 != 0)
LogDebug(
"L1TGlobal") <<
"Warning: Sin and Cos LUTs for TwoBodyPt on different Precision" << std::endl;
2055 LogTrace(
"L1TGlobal") <<
" TBPT Trig precisions:\t " << precCosLUT0 <<
"\t" << precCosLUT1 <<
"\t" << precSinLUT0 <<
"\t" << precSinLUT1;
2056 LogTrace(
"L1TGlobal") <<
" TBPT Pt precisions:\t " << precPtLUTObj0 <<
"\t" << precPtLUTObj1;
2058 LogTrace(
"L1TGlobal") <<
" TBPT Pt1*Pt1 -- Phys:\t " << et0Phy*et0Phy <<
"\tHW:\t" << ptObj0*ptObj0*(
pow(10,6));
2059 LogTrace(
"L1TGlobal") <<
" TBPT Pt2*Pt2 -- Phys:\t " << et1Phy*et1Phy <<
"\tHW:\t" << ptObj1*ptObj1*(
pow(10,6));
2060 LogTrace(
"L1TGlobal") <<
" TBPT 2Pt1*Pt2 -- Phys:\t " << 2*et0Phy*et1Phy <<
"\tHW:\t" << 2*(ptObj0*
pow(10,0))*(ptObj1*
pow(10,0));
2061 LogTrace(
"L1TGlobal") <<
" TBPT Trig -- Phys:\t " << cosPhi1Phy*cosPhi2Phy + sinPhi1Phy*sinPhi2Phy <<
"\tHW:\t" << cosPhi1LUT*cosPhi2LUT + sinPhi1LUT*sinPhi2LUT;
2064 long long tbptSqHW =
2065 ptObj0*ptObj0*(
pow(10,2*precCosLUT0)) +
2066 ptObj1*ptObj1*(
pow(10,2*precCosLUT0)) +
2067 2*ptObj0*ptObj1*(cosPhi1LUT*cosPhi2LUT + sinPhi1LUT*sinPhi2LUT);
2069 unsigned int preShift = precPtLUTObj0 + precPtLUTObj1 + 2*precCosLUT0;
2071 LogTrace(
"L1TGlobal") <<
"TBPT Result -- Phys: " << tbptSqPhy <<
"\tHW: " << tbptSqHW <<
"\tShifted\t" << tbptSqHW/
pow(10,preShift) << std::endl;
2076 LogDebug(
"L1TGlobal") <<
" Testing Two Body Pt Cut (" << lutObj0 <<
"," << lutObj1
2079 <<
" etIndex0 = " << etIndex0 <<
" pt0LUT = " << ptObj0 <<
" PhyEt0 = " << et0Phy <<
"\n" 2080 <<
" etIndex1 = " << etIndex1 <<
" pt1LUT = " << ptObj1 <<
" PhyEt1 = " << et1Phy <<
"\n" 2081 <<
" Precision Shift = " << preShift <<
"\n" 2082 <<
" Sin(phi1): LUT/Phys\t " << sinPhi1LUT <<
" / " << sinPhi1Phy <<
"\n" 2083 <<
" Sin(phi2): LUT/Phys\t " << sinPhi2LUT <<
" / " << sinPhi2Phy <<
"\n" 2084 <<
" Cos(phi1): LUT/Phys\t " << cosPhi1LUT <<
" / " << cosPhi1Phy <<
"\n" 2085 <<
" Cos(phi2): LUT/Phys\t " << cosPhi2LUT <<
" / " << cosPhi2Phy <<
"\n" 2095 if( tbptSqHW > 0. &&
2098 <<
"]" <<
"\twith value: " << tbptSqHW <<
"\n" 2105 <<
"]" <<
"\t with value: " << tbptSqHW <<
"\n" 2118 double cosDeltaPhiPhy =
cos(deltaPhiPhy);
2119 double coshDeltaEtaPhy = cosh(deltaEtaPhy);
2120 if (corrPar.
corrCutType & 0x10) coshDeltaEtaPhy=1.;
2121 double massSqPhy = et0Phy*et1Phy*(coshDeltaEtaPhy - cosDeltaPhiPhy);
2126 long long coshDeltaEtaLUT;
2128 coshDeltaEtaLUT=1*
pow(10,precCosLUT);
2132 if(precCoshLUT - precCosLUT != 0)
LogDebug(
"L1TGlobal") <<
"Warning: Cos and Cosh LUTs on different Precision" << std::endl;
2146 long long massSq = ptObj0*ptObj1*(coshDeltaEtaLUT - cosDeltaPhiLUT);
2149 unsigned int preShift = precPtLUTObj0 + precPtLUTObj1 + precCosLUT - corrPar.
precMassCut;
2151 LogDebug(
"L1TGlobal") <<
" Testing Invariant Mass (" << lutObj0 <<
"," << lutObj1 <<
") [" << (
long long)(corrPar.
minMassCutValue*
pow(10,preShift))
2153 <<
" deltaPhiLUT = " << deltaPhiLUT <<
" cosLUT = " << cosDeltaPhiLUT <<
"\n" 2154 <<
" deltaEtaLUT = " << deltaEtaLUT <<
" coshLUT = " << coshDeltaEtaLUT <<
"\n" 2155 <<
" etIndex0 = " << etIndex0 <<
" pt0LUT = " << ptObj0 <<
" PhyEt0 = " << et0Phy <<
"\n" 2156 <<
" etIndex1 = " << etIndex1 <<
" pt1LUT = " << ptObj1 <<
" PhyEt1 = " << et1Phy <<
"\n" 2157 <<
" massSq/2 = " << massSq <<
"\n" 2158 <<
" Precision Shift = " << preShift <<
"\n" 2159 <<
" massSq (shift)= " << (massSq/
pow(10,preShift+corrPar.
precMassCut)) <<
"\n" 2160 <<
" deltaPhiPhy = " << deltaPhiPhy <<
" cos() = " << cosDeltaPhiPhy <<
"\n" 2161 <<
" deltaEtaPhy = " << deltaEtaPhy <<
" cosh()= " << coshDeltaEtaPhy <<
"\n" 2162 <<
" massSqPhy/2 = " << massSqPhy <<
" sqrt(|massSq|) = "<<
sqrt(fabs(2.*massSqPhy)) << std::endl;
2182 bool chrgCorrel =
true;
2191 if (reqResult & chrgCorrel) {
2205 LogDebug(
"L1TGlobal") <<
" pass(es) the correlation condition.\n" << std::endl;
2255 myCout <<
"Dummy Print for CorrWithOverlapRemovalCondition" << std::endl;
unsigned int chargeCorrelation
unsigned int precOverlapRemovalPhiCut
void print(std::ostream &myCout) const override
print condition
long long maxOverlapRemovalEtaCutValue
const BXVector< const l1t::L1Candidate * > * getCandL1Tau() const
pointer to Tau data list
const ScaleParameters & getETMScales() const
unsigned int getPrec_Cos(const std::string &lutName) const
const BXVector< const l1t::L1Candidate * > * getCandL1Jet() const
pointer to Jet data list
unsigned int getPrec_Pt(const std::string &lutName) const
long long maxMassCutValue
unsigned size(int bx) const
CombinationsInCond const & getCombinationsInCond() const
get all the object combinations evaluated to true in the condition
void evaluateConditionStoreResult(const int bxEval)
call evaluateCondition and save last result
long long getLUT_Sin(const std::string &lutName, int element) const
void print(std::ostream &myCout) const override
print condition
void setGtCorrelationWithOverlapRemovalTemplate(const CorrelationWithOverlapRemovalTemplate *)
std::vector< std::pair< double, double > > etaBins
~CorrWithOverlapRemovalCondition() override
const CorrelationWithOverlapRemovalTemplate * gtCorrelationWithOverlapRemovalTemplate() const
get / set the pointer to a Condition
Sin< T >::type sin(const T &t)
std::vector< std::pair< double, double > > phiBins
const l1t::GtConditionCategory cond1Category() const
void print(std::ostream &myCout) const override
print the condition
const ScaleParameters & getJETScales() const
virtual void print(std::ostream &myCout) const
print condition
std::vector< int > SingleCombInCond
typedefs
unsigned int getPrec_DeltaEta_Cosh(const std::string &lutName) const
const ScaleParameters & getETMHFScales() const
const ScaleParameters & getEGScales() const
long long getLUT_DeltaEta(std::string lutName, int element) const
unsigned int getPrec_Sin(const std::string &lutName) const
CorrWithOverlapRemovalCondition()
void copy(const CorrWithOverlapRemovalCondition &cp)
copy function for copy constructor and operator=
const l1t::L1Candidate * getCandidate(const int bx, const int indexCand) const
load candidates
std::string l1TGtObjectEnumToString(const GlobalObject &)
bool condLastResult() const
get the latest result for the condition
const CorrelationWithOverlapRemovalTemplate * m_gtCorrelationWithOverlapRemovalTemplate
pointer to a CorrelationWithOverlapRemovalTemplate
GtConditionCategory
condition categories
const int & condRelativeBx() const
get / set the condition relative bx
const BXVector< const l1t::L1Candidate * > * getCandL1EG() const
pointer to EG data list
const GlobalScales * m_gtScales
long long getLUT_DeltaPhi_Cos(std::string lutName, int element) const
long long minOverlapRemovalEtaCutValue
const std::vector< l1t::GlobalObject > & objectType() const
get / set the trigger object type(s) in the condition
long long getLUT_Cos(const std::string &lutName, int element) const
void clear(CLHEP::HepGenMatrix &m)
Helper function: Reset all elements of a matrix to 0.
long long minMassCutValue
long long maxTBPTCutValue
long long getLUT_Pt(const std::string &lutName, int element) const
Cos< T >::type cos(const T &t)
unsigned int getPrec_DeltaEta(const std::string &lutName) const
const BXVector< const l1t::EtSum * > * getCandL1EtSum() const
pointer to Tau data list
Abs< T >::type abs(const T &t)
const GlobalBoard * m_uGtB
pointer to uGt GlobalBoard, to be able to get the trigger objects
const bool checkObjectParameter(const int iCondition, const l1t::L1Candidate &cand) const
function to check a single object if it matches a condition
unsigned int precOverlapRemovalEtaCut
long long minOverlapRemovalPhiCutValue
long long minTBPTCutValue
const ScaleParameters & getTAUScales() const
long long getLUT_CalMuPhi(const std::string &lutName, int element) const
CombinationsInCond m_combinationsInCond
store all the object combinations evaluated to true in the condition
long long getLUT_CalMuEta(const std::string &lutName, int element) const
const l1t::GtConditionCategory cond0Category() const
get / set the category of the thre sub-conditions
std::vector< std::pair< double, double > > etBins
long long getLUT_DeltaEta_Cosh(std::string lutName, int element) const
const BXVector< const l1t::Muon * > * getCandL1Mu() const
return global muon trigger candidate
int m_verbosity
verbosity level
long long maxOverlapRemovalDRCutValue
long long getLUT_DeltaPhi(std::string lutName, int element) const
int condMaxNumberObjects() const
void print(std::ostream &myCout) const override
print condition
const CorrelationWithOverlapRemovalParameter * correlationParameter() const
get / set correlation parameters
bool m_condLastResult
the last result of evaluateCondition()
const GlobalCondition * m_gtCond2
unsigned int precOverlapRemovalDRCut
typedef for a single object template
unsigned int getPrec_DeltaPhi(const std::string &lutName) const
long long maxOverlapRemovalPhiCutValue
const l1t::GtConditionCategory cond2Category() const
long long minOverlapRemovalDRCutValue
void setScales(const GlobalScales *)
CorrWithOverlapRemovalCondition & operator=(const CorrWithOverlapRemovalCondition &)
const GlobalCondition * m_gtCond0
int m_condMaxNumberObjects
typedef for correlation parameters
void print(std::ostream &myCout) const override
print condition
const GlobalCondition * m_gtCond1
const ScaleParameters & getMUScales() const
const GlobalBoard * getuGtB() const
get / set the pointer to uGt GlobalBoard
const bool evaluateCondition(const int bxEval) const override
the core function to check if the condition matches
const ScaleParameters & getHTMScales() const
std::vector< SingleCombInCond > CombinationsInCond
all the object combinations evaluated to true in the condition
unsigned int getPrec_DeltaPhi_Cos(const std::string &lutName) const
CombinationsInCond & combinationsInCond() const
get all the object combinations (to fill it...)
void setuGtB(const GlobalBoard *)
set the pointer to uGT GlobalBoard
Power< A, B >::type pow(const A &a, const B &b)
const T & at(int bx, unsigned i) const