ctau seeding
Implementation of ctau HLT seeding based on L1Topo ctau multiplicity class. The implementation is just a draft, need to check
- Granularity of the used coordinates and pTs
- Is overall this as expected for HLT? @rbielski
#ATR-25307, related to open issue here ATR-25462 (isolation cut is currently hard coded in the L1Topo sim)
Merge request reports
Activity
added L1Topo TriggerMenu labels
CI Result FAILURE (hash 28d22741)Athena AthSimulation AthGeneration AnalysisBase AthAnalysis DetCommon externals cmake make required tests optional tests Full details available on this CI monitor view. Check the JIRA CI status board for known problems
Athena: number of compilation errors 1, warnings 0
AthSimulation: number of compilation errors 0, warnings 0
AthGeneration: number of compilation errors 0, warnings 0
AnalysisBase: number of compilation errors 0, warnings 0
AthAnalysis: number of compilation errors 0, warnings 0
DetCommon: number of compilation errors 0, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST-CC7 52211]- Resolved by Nicola Orlando
- Resolved by Nicola Orlando
Thanks @orlando !
- Resolved by Nicola Orlando
20 20 virtual uint64_t getPattern(const xAOD::eFexTauRoI& eTau, 21 21 const ThrVec& menuThresholds, 22 22 const TrigConf::L1ThrExtraInfoBase& menuExtraInfo) const override; 23 24 // Simple function used to apply the isolation score cut 25 inline bool isocut(const std::string& threshold, const unsigned int bit) const { changed this line in version 3 of the diff
33 unsigned int eFexEt = eTau.etTOB(); 34 unsigned int jFexIso = jTau->iso(); 35 ATH_MSG_DEBUG("eFex et = " << eFexEt << ", jFex iso = " << jFexIso); 41 // Found a matched tau, not check for isolation and thresholds that are passed 42 43 if( isMatched ) { 44 45 // Iterate through thresholds and see which ones are passed 46 for (const std::shared_ptr<TrigConf::L1Threshold>& thrBase : menuThresholds) { 47 48 std::shared_ptr<TrigConf::L1Threshold_cTAU> thr = std::static_pointer_cast<TrigConf::L1Threshold_cTAU>(thrBase); 49 //const auto& thr = dynamic_cast<const TrigConf::L1Threshold_cTAU &>(thrBase); 50 // Checking et and isolation thresholds 51 unsigned int isolation_score = TCS::cTauMultiplicity::convertIsoToBit( float(jFexIso) , float(eFexEt) ); 52 //float isolation = static_cast<float>(jTau->tobIso()) / static_cast<float>(eTau.etTOB()); 53 isIsolated = isocut( TrigConf::Selection::wpToString(thr->isolation()), isolation_score ); Does checking the isolation threshold really require converting WP to string and then converting the string to int? Why not compare the
TrigConf::Selection::WP
enum directly? Faster and much less error-prone.Edited by Rafal Bielskichanged this line in version 3 of the diff
This comment wasn't addressed. This code is still allocating a string O(100) times per event and doing a few string comparisons for each of them.
The ideal solution would be for
TCS::cTauMultiplicity
to provide conversion toTrigConf::Selection::WP
directly. If you want to postpone / avoid this change, you could at least do enum comparisons instead of string comparisons in thisisocut
function. This requires simple changes in only six lines in this file and nothing else.
34 unsigned int jFexIso = jTau->iso(); 35 ATH_MSG_DEBUG("eFex et = " << eFexEt << ", jFex iso = " << jFexIso); 41 // Found a matched tau, not check for isolation and thresholds that are passed 42 43 if( isMatched ) { 44 45 // Iterate through thresholds and see which ones are passed 46 for (const std::shared_ptr<TrigConf::L1Threshold>& thrBase : menuThresholds) { 47 48 std::shared_ptr<TrigConf::L1Threshold_cTAU> thr = std::static_pointer_cast<TrigConf::L1Threshold_cTAU>(thrBase); 49 //const auto& thr = dynamic_cast<const TrigConf::L1Threshold_cTAU &>(thrBase); 50 // Checking et and isolation thresholds 51 unsigned int isolation_score = TCS::cTauMultiplicity::convertIsoToBit( float(jFexIso) , float(eFexEt) ); 52 //float isolation = static_cast<float>(jTau->tobIso()) / static_cast<float>(eTau.etTOB()); 53 isIsolated = isocut( TrigConf::Selection::wpToString(thr->isolation()), isolation_score ); 54 bool passPt = eFexEt > thr->thrValue100MeV(eFexEta/4); changed this line in version 3 of the diff
- Resolved by Nicola Orlando
removed master label
added 22.0 label