Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 8 additions & 6 deletions DataFormats/HLTReco/interface/TriggerTypeDefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ namespace trigger {

/// enum start value shifted to 81 so as to avoid clashes with PDG codes

/// L1 - using cases as defined in enum L1GtObject, file:
/// L1 - using cases as defined in enum L1GtObject, legacy and stage 1 file:
/// DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"

TriggerL1Mu = -81,
Expand Down Expand Up @@ -72,11 +72,13 @@ namespace trigger {
TriggerL1PFMHT = -122,
TriggerL1PFTrack = -123,
TriggerL1Vertex = -124,
// Phase-1: MuonShower
TriggerL1MuShower = -125, // stage2 (introduced in Run 3)
// Phase-1: ZDC+ and ZDC-
TriggerL1ZDCP = -126, // stage2 (introduced in 2023 during Run 3)
TriggerL1ZDCM = -127, // stage2 (introduced in 2023 during Run 3)
// Phase-1: MuonShower triggers (Run 3 - 2022)
TriggerL1MuShower = -125, // stage2
// Phase-1: ZDC+ and ZDC- triggers for HI (Run 3 - 2023)
TriggerL1ZDCP = -126, // stage2
TriggerL1ZDCM = -127, // stage2
// Phase-1: MHTHF triggers
TriggerL1HTMHF = -128, // stage2

/// HLT
TriggerPhoton = +81,
Expand Down
2 changes: 2 additions & 0 deletions DataFormats/L1TGlobal/interface/GlobalObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ namespace l1t {
gtZDCP = 29,
gtZDCM = 30,
ObjNull = 31,
gtHTMHF = 32,
};

const std::vector<std::pair<GlobalObject, std::string>> kGlobalObjectEnumStringPairs = {
Expand Down Expand Up @@ -95,6 +96,7 @@ namespace l1t {
{gtZDCP, "ZDCP"}, // 29
{gtZDCM, "ZDCM"}, // 30
{ObjNull, "ObjNull"}, // 31
{gtHTMHF, "HTMHF"}, // 32
};

// utility functions to convert GlobalObject enum to std::string and viceversa
Expand Down
1 change: 1 addition & 0 deletions DataFormats/L1TGlobal/test/test_catch2_l1tGlobalObject.cc
Original file line number Diff line number Diff line change
Expand Up @@ -100,5 +100,6 @@ TEST_CASE("Test l1t::GlobalObject", "[l1tGlobalObject]") {
REQUIRE(isValidGlobalObject(29, l1t::gtZDCP, "ZDCP")); // 29
REQUIRE(isValidGlobalObject(30, l1t::gtZDCM, "ZDCM")); // 30
REQUIRE(isValidGlobalObject(31, l1t::ObjNull, "ObjNull")); // 31
REQUIRE(isValidGlobalObject(32, l1t::gtHTMHF, "HTMHF")); // 32
}
}
26 changes: 26 additions & 0 deletions HLTrigger/HLTfilters/plugins/HLTL1TSeed.cc
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,21 @@ void HLTL1TSeed::dumpTriggerFilterObjectWithRefs(trigger::TriggerFilterObjectWit
<< "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
}

vector<l1t::EtSumRef> seedsL1EtSumHTMHF;
filterproduct.getObjects(trigger::TriggerL1HTMHF, seedsL1EtSumHTMHF);
const size_t sizeSeedsL1EtSumHTMHF = seedsL1EtSumHTMHF.size();
LogTrace("HLTL1TSeed") << "\n L1EtSum HTMHF seeds: " << sizeSeedsL1EtSumHTMHF << endl << endl;

for (size_t i = 0; i != sizeSeedsL1EtSumHTMHF; i++) {
l1t::EtSumRef obj = l1t::EtSumRef(seedsL1EtSumHTMHF[i]);

LogTrace("HLTL1TSeed") << "\tL1EtSum HTMHF"
<< "\t"
<< "pt = " << obj->pt() << "\t"
<< "eta = " << obj->eta() << "\t"
<< "phi = " << obj->phi(); //<< "\t" << "BX = " << obj->bx();
}

vector<l1t::EtSumRef> seedsL1EtSumHTM;
filterproduct.getObjects(trigger::TriggerL1HTM, seedsL1EtSumHTM);
const size_t sizeSeedsL1EtSumHTM = seedsL1EtSumHTM.size();
Expand Down Expand Up @@ -485,6 +500,7 @@ bool HLTL1TSeed::seedsL1TriggerObjectMaps(edm::Event& iEvent, trigger::TriggerFi
std::list<int> listHTT;
std::list<int> listHTM;
std::list<int> listETMHF;
std::list<int> listHTMHF;

std::list<int> listJetCounts;

Expand Down Expand Up @@ -789,6 +805,9 @@ bool HLTL1TSeed::seedsL1TriggerObjectMaps(edm::Event& iEvent, trigger::TriggerFi
case l1t::gtETMHF: {
listETMHF.push_back(*itObject);
} break;
case l1t::gtHTMHF: {
listHTMHF.push_back(*itObject);
} break;
case l1t::gtTowerCount: {
listTowerCount.push_back(*itObject);
} break;
Expand Down Expand Up @@ -891,6 +910,9 @@ bool HLTL1TSeed::seedsL1TriggerObjectMaps(edm::Event& iEvent, trigger::TriggerFi
listETMHF.sort();
listETMHF.unique();

listHTMHF.sort();
listHTMHF.unique();

listJetCounts.sort();
listJetCounts.unique();

Expand Down Expand Up @@ -1112,6 +1134,10 @@ bool HLTL1TSeed::seedsL1TriggerObjectMaps(edm::Event& iEvent, trigger::TriggerFi
if (!listETMHF.empty())
filterproduct.addObject(trigger::TriggerL1ETMHF, myref);
break;
case l1t::EtSum::kMissingHtHF:
if (!listHTMHF.empty())
filterproduct.addObject(trigger::TriggerL1HTMHF, myref);
break;
case l1t::EtSum::kCentrality:
if (!listCentrality.empty())
filterproduct.addObject(trigger::TriggerL1Centrality, myref);
Expand Down
3 changes: 2 additions & 1 deletion L1Trigger/L1TGlobal/interface/GlobalDefinitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ namespace l1t {
/// Type2cor : two particles, different type, with spatial correlations among them
/// Type3s : three particles, same type
/// Type4s : four particles, same type
/// TypeETM, TypeETT, TypeHTT, TypeHTM : ETM, ETT, HTT, HTM
/// TypeETM, TypeETT, TypeHTT, TypeHTM, TypeETMHF, TypeHTMHF: ETM, ETT, HTT, HTM, ETMHF, HTMHF
/// TypeExternal: external conditions (logical result only; definition in L1 GT external systems)
enum GtConditionType {
TypeNull,
Expand All @@ -59,6 +59,7 @@ namespace l1t {
TypeHTT,
TypeHTM,
TypeETMHF,
TypeHTMHF,
TypeTowerCount,
TypeMinBiasHFP0,
TypeMinBiasHFM0,
Expand Down
3 changes: 3 additions & 0 deletions L1Trigger/L1TGlobal/interface/GlobalScales.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ namespace l1t {
inline void setHTTScales(ScaleParameters& scales) { m_httScales = scales; }
inline void setETMScales(ScaleParameters& scales) { m_etmScales = scales; }
inline void setETMHfScales(ScaleParameters& scales) { m_etmHfScales = scales; }
inline void setHTMHfScales(ScaleParameters& scales) { m_htmHfScales = scales; }
inline void setHTMScales(ScaleParameters& scales) { m_htmScales = scales; }

virtual void setLUT_CalMuEta(const std::string& lutName, std::vector<long long> lut);
Expand All @@ -91,6 +92,7 @@ namespace l1t {
inline const ScaleParameters& getETTEmScales() const { return m_ettEmScales; }
inline const ScaleParameters& getETMScales() const { return m_etmScales; }
inline const ScaleParameters& getETMHFScales() const { return m_etmHfScales; }
inline const ScaleParameters& getHTMHFScales() const { return m_htmHfScales; }
inline const ScaleParameters& getHTTScales() const { return m_httScales; }
inline const ScaleParameters& getHTMScales() const { return m_htmScales; }

Expand Down Expand Up @@ -134,6 +136,7 @@ namespace l1t {
ScaleParameters m_httScales;
ScaleParameters m_etmScales;
ScaleParameters m_etmHfScales;
ScaleParameters m_htmHfScales;
ScaleParameters m_htmScales;

//LUTs
Expand Down
3 changes: 2 additions & 1 deletion L1Trigger/L1TGlobal/plugins/GtRecordDump.cc
Original file line number Diff line number Diff line change
Expand Up @@ -544,7 +544,8 @@ namespace l1t {
<< std::setfill('0') << etsum->hwPt() << ")";
if (etsum->getType() == l1t::EtSum::EtSumType::kMissingEt ||
etsum->getType() == l1t::EtSum::EtSumType::kMissingHt ||
etsum->getType() == l1t::EtSum::EtSumType::kMissingEtHF)
etsum->getType() == l1t::EtSum::EtSumType::kMissingEtHF ||
etsum->getType() == l1t::EtSum::EtSumType::kMissingHtHF)
cout << " Phi " << std::dec << std::setw(3) << etsum->hwPhi() << " (0x" << std::hex << std::setw(2)
<< std::setfill('0') << etsum->hwPhi() << ")";
cout << endl;
Expand Down
39 changes: 36 additions & 3 deletions L1Trigger/L1TGlobal/plugins/TriggerMenuParser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
* - extended for Zero Degree Calorimeter triggers (used for Run 3 HI data-taking)
* \new features: Melissa Quinnan, Elisa Fontanesi
* - extended for AXOL1TL anomaly detection triggers (used for Run 3 data-taking)
* \new features: Elisa Fontanesi
* - extended for HTMHF triggers (introduced for the Run 3 2024 data-taking)
*
* $Date$
* $Revision$
Expand Down Expand Up @@ -297,6 +299,7 @@ void l1t::TriggerMenuParser::parseCondFormats(const L1TUtmTriggerMenu* utmMenu)
condition.getType() == esConditionType::MissingEt ||
condition.getType() == esConditionType::MissingHt ||
condition.getType() == esConditionType::MissingEtHF ||
condition.getType() == esConditionType::MissingHtHF ||
condition.getType() == esConditionType::TowerCount ||
condition.getType() == esConditionType::MinBiasHFP0 ||
condition.getType() == esConditionType::MinBiasHFM0 ||
Expand Down Expand Up @@ -578,6 +581,7 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
GlobalScales::ScaleParameters ettEmScales;
GlobalScales::ScaleParameters etmScales;
GlobalScales::ScaleParameters etmHfScales;
GlobalScales::ScaleParameters htmHfScales;
GlobalScales::ScaleParameters httScales;
GlobalScales::ScaleParameters htmScales;
GlobalScales::ScaleParameters zdcScales;
Expand All @@ -604,6 +608,8 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
scaleParam = &etmScales;
else if (scale.getObjectType() == esObjectType::ETMHF)
scaleParam = &etmHfScales;
else if (scale.getObjectType() == esObjectType::HTMHF)
scaleParam = &htmHfScales;
else if (scale.getObjectType() == esObjectType::HTT)
scaleParam = &httScales;
else if (scale.getObjectType() == esObjectType::HTM)
Expand Down Expand Up @@ -632,7 +638,8 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
// There are no scales for these in the XML so the other case statements will not be seen....do it here.
if (scale.getObjectType() == esObjectType::ETT || scale.getObjectType() == esObjectType::HTT ||
scale.getObjectType() == esObjectType::ETM || scale.getObjectType() == esObjectType::HTM ||
scale.getObjectType() == esObjectType::ETTEM || scale.getObjectType() == esObjectType::ETMHF) {
scale.getObjectType() == esObjectType::ETTEM || scale.getObjectType() == esObjectType::ETMHF ||
scale.getObjectType() == esObjectType::HTMHF) {
scaleParam->etaMin = -1.;
scaleParam->etaMax = -1.;
scaleParam->etaStep = -1.;
Expand Down Expand Up @@ -702,6 +709,7 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
m_gtScales.setETTEmScales(ettEmScales);
m_gtScales.setETMScales(etmScales);
m_gtScales.setETMHfScales(etmHfScales);
m_gtScales.setHTMHfScales(htmHfScales);
m_gtScales.setHTTScales(httScales);
m_gtScales.setHTMScales(htmScales);
m_gtScales.setHTMScales(zdcScales);
Expand Down Expand Up @@ -729,6 +737,7 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
parseCalMuPhi_LUTS(scaleMap, "HTM", "MU");
parseCalMuPhi_LUTS(scaleMap, "ETM", "MU");
parseCalMuPhi_LUTS(scaleMap, "ETMHF", "MU");
parseCalMuPhi_LUTS(scaleMap, "HTMHF", "MU");

// Now the Pt LUTs (??? more combinations needed ??)
// ---------------
Expand All @@ -739,6 +748,7 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
parsePt_LUTS(scaleMap, "Mass", "TAU", precisions["PRECISION-EG-TAU-MassPt"]);
parsePt_LUTS(scaleMap, "Mass", "ETM", precisions["PRECISION-EG-ETM-MassPt"]);
parsePt_LUTS(scaleMap, "Mass", "ETMHF", precisions["PRECISION-EG-ETMHF-MassPt"]);
parsePt_LUTS(scaleMap, "Mass", "HTMHF", precisions["PRECISION-EG-HTMHF-MassPt"]);
parsePt_LUTS(scaleMap, "Mass", "HTM", precisions["PRECISION-EG-HTM-MassPt"]);

// Now the Pt LUTs for TBPT calculation (??? CCLA following what was done for MASS pt LUTs for now ??)
Expand All @@ -749,6 +759,7 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
parsePt_LUTS(scaleMap, "TwoBody", "TAU", precisions["PRECISION-EG-TAU-TwoBodyPt"]);
parsePt_LUTS(scaleMap, "TwoBody", "ETM", precisions["PRECISION-EG-ETM-TwoBodyPt"]);
parsePt_LUTS(scaleMap, "TwoBody", "ETMHF", precisions["PRECISION-EG-ETMHF-TwoBodyPt"]);
parsePt_LUTS(scaleMap, "TwoBody", "HTMHF", precisions["PRECISION-EG-HTMHF-TwoBodyPt"]);
parsePt_LUTS(scaleMap, "TwoBody", "HTM", precisions["PRECISION-EG-HTM-TwoBodyPt"]);

// Now the Delta Eta/Cosh LUTs (must be done in groups)
Expand Down Expand Up @@ -789,6 +800,8 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
scaleMap, "EG", "ETM", precisions["PRECISION-EG-ETM-Delta"], precisions["PRECISION-EG-ETM-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "EG", "ETMHF", precisions["PRECISION-EG-ETMHF-Delta"], precisions["PRECISION-EG-ETMHF-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "EG", "HTMHF", precisions["PRECISION-EG-HTMHF-Delta"], precisions["PRECISION-EG-HTMHF-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "EG", "HTM", precisions["PRECISION-EG-HTM-Delta"], precisions["PRECISION-EG-HTM-Math"]);
parseDeltaPhi_Cos_LUTS(
Expand All @@ -802,6 +815,8 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
scaleMap, "JET", "ETM", precisions["PRECISION-JET-ETM-Delta"], precisions["PRECISION-JET-ETM-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "JET", "ETMHF", precisions["PRECISION-JET-ETMHF-Delta"], precisions["PRECISION-JET-ETMHF-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "JET", "HTMHF", precisions["PRECISION-JET-HTMHF-Delta"], precisions["PRECISION-JET-HTMHF-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "JET", "HTM", precisions["PRECISION-JET-HTM-Delta"], precisions["PRECISION-JET-HTM-Math"]);
parseDeltaPhi_Cos_LUTS(
Expand All @@ -813,6 +828,8 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
scaleMap, "TAU", "ETM", precisions["PRECISION-TAU-ETM-Delta"], precisions["PRECISION-TAU-ETM-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "TAU", "ETMHF", precisions["PRECISION-TAU-ETMHF-Delta"], precisions["PRECISION-TAU-ETMHF-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "TAU", "HTMHF", precisions["PRECISION-TAU-HTMHF-Delta"], precisions["PRECISION-TAU-HTMHF-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "TAU", "HTM", precisions["PRECISION-TAU-HTM-Delta"], precisions["PRECISION-TAU-HTM-Math"]);
parseDeltaPhi_Cos_LUTS(
Expand All @@ -822,6 +839,8 @@ bool l1t::TriggerMenuParser::parseScales(std::map<std::string, tmeventsetup::esS
scaleMap, "MU", "ETM", precisions["PRECISION-MU-ETM-Delta"], precisions["PRECISION-MU-ETM-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "MU", "ETMHF", precisions["PRECISION-MU-ETMHF-Delta"], precisions["PRECISION-MU-ETMHF-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "MU", "HTMHF", precisions["PRECISION-MU-HTMHF-Delta"], precisions["PRECISION-MU-HTMHF-Math"]);
parseDeltaPhi_Cos_LUTS(
scaleMap, "MU", "HTM", precisions["PRECISION-MU-HTM-Delta"], precisions["PRECISION-MU-HTM-Math"]);
parseDeltaPhi_Cos_LUTS(
Expand Down Expand Up @@ -2211,6 +2230,9 @@ bool l1t::TriggerMenuParser::parseEnergySum(L1TUtmCondition condEnergySum, unsig
} else if (condEnergySum.getType() == esConditionType::MissingEtHF) {
energySumObjType = GlobalObject::gtETMHF;
cType = TypeETMHF;
} else if (condEnergySum.getType() == esConditionType::MissingHtHF) {
energySumObjType = GlobalObject::gtHTMHF;
cType = TypeHTMHF;
} else if (condEnergySum.getType() == esConditionType::TowerCount) {
energySumObjType = GlobalObject::gtTowerCount;
cType = TypeTowerCount;
Expand Down Expand Up @@ -2576,6 +2598,9 @@ bool l1t::TriggerMenuParser::parseEnergySumCorr(const L1TUtmObject* corrESum, un
} else if (corrESum->getType() == esObjectType::ETMHF) {
energySumObjType = GlobalObject::gtETMHF;
cType = TypeETMHF;
} else if (corrESum->getType() == esObjectType::HTMHF) {
energySumObjType = GlobalObject::gtHTMHF;
cType = TypeHTMHF;
} else if (corrESum->getType() == esObjectType::TOWERCOUNT) {
energySumObjType = GlobalObject::gtTowerCount;
cType = TypeTowerCount;
Expand Down Expand Up @@ -3128,7 +3153,8 @@ bool l1t::TriggerMenuParser::parseCorrelation(L1TUtmCondition corrCond, unsigned
condCateg[jj] = CondCalo;

} else if (object.getType() == esObjectType::ETM || object.getType() == esObjectType::ETMHF ||
object.getType() == esObjectType::TOWERCOUNT || object.getType() == esObjectType::HTM) {
object.getType() == esObjectType::HTMHF || object.getType() == esObjectType::TOWERCOUNT ||
object.getType() == esObjectType::HTM) {
// we have Energy Sum
parseEnergySumCorr(&object, chipNr);
corrIndexVal[jj] = (m_corEnergySumTemplate[chipNr]).size() - 1;
Expand All @@ -3145,6 +3171,9 @@ bool l1t::TriggerMenuParser::parseCorrelation(L1TUtmCondition corrCond, unsigned
case esObjectType::ETMHF: {
objType[jj] = GlobalObject::gtETMHF;
} break;
case esObjectType::HTMHF: {
objType[jj] = GlobalObject::gtHTMHF;
} break;
case esObjectType::TOWERCOUNT: {
objType[jj] = GlobalObject::gtTowerCount;
} break;
Expand Down Expand Up @@ -3581,7 +3610,8 @@ bool l1t::TriggerMenuParser::parseCorrelationWithOverlapRemoval(const L1TUtmCond
condCateg[jj] = CondCalo;

} else if (object.getType() == esObjectType::ETM || object.getType() == esObjectType::ETMHF ||
object.getType() == esObjectType::TOWERCOUNT || object.getType() == esObjectType::HTM) {
object.getType() == esObjectType::HTMHF || object.getType() == esObjectType::TOWERCOUNT ||
object.getType() == esObjectType::HTM) {
// we have Energy Sum
parseEnergySumCorr(&object, chipNr);
corrIndexVal[jj] = (m_corEnergySumTemplate[chipNr]).size() - 1;
Expand All @@ -3598,6 +3628,9 @@ bool l1t::TriggerMenuParser::parseCorrelationWithOverlapRemoval(const L1TUtmCond
case esObjectType::ETMHF: {
objType[jj] = GlobalObject::gtETMHF;
} break;
case esObjectType::HTMHF: {
objType[jj] = GlobalObject::gtHTMHF;
} break;
case esObjectType::TOWERCOUNT: {
objType[jj] = GlobalObject::gtTowerCount;
} break;
Expand Down
Loading