diff --git a/Trigger/TrigSteer/DecisionHandling/DecisionHandling/InputMakerBase.h b/Trigger/TrigSteer/DecisionHandling/DecisionHandling/InputMakerBase.h index 5e035f2263ab864a2b44a6546068db6cff0e60df..e56db192ed1eddd5bddd9449c52397cc7f67249f 100644 --- a/Trigger/TrigSteer/DecisionHandling/DecisionHandling/InputMakerBase.h +++ b/Trigger/TrigSteer/DecisionHandling/DecisionHandling/InputMakerBase.h @@ -49,6 +49,10 @@ This is a base class for HLT InputMakers to reduce boilerplate and enforce the c /// counts valid input decisions size_t countInputHandles( const EventContext& context ) const; + + // setting strategy for output creation: merged means one decision per ROI + Gaudi::Property<bool> m_mergeOutputs { this, "mergeOutputs", true, "true=outputs are merged, false=one output per input" }; + private: @@ -58,8 +62,6 @@ This is a base class for HLT InputMakers to reduce boilerplate and enforce the c /// output decisions SG::WriteHandleKeyArray<TrigCompositeUtils::DecisionContainer> m_outputs { this, "InputMakerOutputDecisions", {}, "Ouput Decisions" }; - // setting strategy for output creation: merged means one decision per ROI - Gaudi::Property<bool> m_mergeOutputs { this, "mergeOutputs", true, "true=outputs are merged, false=one output per input" }; }; diff --git a/Trigger/TrigSteer/DecisionHandling/DecisionHandling/TrigCompositeUtils.h b/Trigger/TrigSteer/DecisionHandling/DecisionHandling/TrigCompositeUtils.h index a9f0d31b0dab6a0e109afe7713660c08bc290a33..e13aed6d8aa174250edebb76f8af27bd97bb09a1 100644 --- a/Trigger/TrigSteer/DecisionHandling/DecisionHandling/TrigCompositeUtils.h +++ b/Trigger/TrigSteer/DecisionHandling/DecisionHandling/TrigCompositeUtils.h @@ -184,6 +184,21 @@ namespace TrigCompositeUtils { **/ HLT::Identifier createLegName(const HLT::Identifier& chainIdentifier, size_t counter); + /** + * @brief Generate the HLT::Identifier which corresponds to the chain name from the leg name. This can be queried for its DecisionID. + * @param chainIdentifier The HLT::Identifier corresponding to the specifci leg. + * @return HLT::Identifier corresponding to the chain. Call .numeric() on this to get the DecisionID. + **/ + HLT::Identifier getIDFromLeg(const HLT::Identifier& legIdentifier); + +/** + * @brief Recognise whether the chain ID is a leg ID + * @param chainIdentifier The HLT::Identifier corresponding to the specifci ID. + * @return True if leg-ID, else false + **/ + bool isLegId(const HLT::Identifier& legIdentifier); + + /** * @brief traverses TC links for another TC fufilling the prerequisite specified by the filter * @return matching TC or nullptr @@ -368,6 +383,8 @@ namespace TrigCompositeUtils { std::string dump( const xAOD::TrigComposite* tc, std::function< std::string( const xAOD::TrigComposite* )> printerFnc ); + + } diff --git a/Trigger/TrigSteer/DecisionHandling/python/TrigCompositeUtils.py b/Trigger/TrigSteer/DecisionHandling/python/TrigCompositeUtils.py index 5ab28a0ba5ffc2e9bc0bf85e8c05345d18c69900..b8f63918a5cfd65dc462e397c5a4b00fbe801a0a 100644 --- a/Trigger/TrigSteer/DecisionHandling/python/TrigCompositeUtils.py +++ b/Trigger/TrigSteer/DecisionHandling/python/TrigCompositeUtils.py @@ -8,3 +8,10 @@ ROI_STRING = "roi" VIEW_STRING = "view" FEATURE_STRING = "feature" SEED_STRING = "seed" + +def legName(chainName, legCounter): + return ("leg{:03d}_{}".format(legCounter, chainName)) + +def isLegId(chainName): + return chainName.startswith("leg") + diff --git a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx index 1c52ba93e2db06f795e5712ebde9c28e4141ed48..3ed647b165c5192e460f5f6bb0875426e4cef976 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx @@ -7,6 +7,7 @@ #include "DecisionHandling/HLTIdentifier.h" #include "TrigSteeringEvent/TrigRoiDescriptorCollection.h" #include "AthViews/View.h" +#include <sstream> using namespace TrigCompositeUtils; ComboHypo::ComboHypo(const std::string& name, ISvcLocator* pSvcLocator) @@ -17,18 +18,12 @@ ComboHypo::~ComboHypo() {} StatusCode ComboHypo::initialize() { - //ATH_MSG_DEBUG("Use macros for logging!"); ATH_CHECK( m_outputs.initialize() ); ATH_CHECK( m_inputs.initialize() ); ATH_CHECK( m_inputs.size() == m_outputs.size() ); ATH_MSG_INFO( "with these inputs: "); for (auto inp:m_inputs){ - ATH_MSG_INFO("-- "<< inp.key()); - } - - - ATH_CHECK( m_multiplicitiesReqMap.size() != 0 ); - + ATH_MSG_INFO("-- "<< inp.key()); } // find max inputs size @@ -38,14 +33,22 @@ StatusCode ComboHypo::initialize() { const size_t maxMult = maxMultEl->second.size(); - ATH_MSG_INFO( "with this multiplicity map: "); - for ( auto m: m_multiplicitiesReqMap ) { - ATH_MSG_INFO("-- "<< m.first<<" multiplicities of size "<<m.second.size()); - for (auto mult: m.second){ - ATH_MSG_INFO("-- "<< mult<<", "); + if (msgLvl(MSG::INFO)){ + ATH_MSG_INFO( "with this multiplicity map: "); + for ( auto m: m_multiplicitiesReqMap ) { + std::ostringstream msg; + std::string mms = "["; + msg<<"["; + for (auto mult: m.second){ + msg<< mult<<", "; + mms+= mult + ","; + } + msg<<"]"; + ATH_MSG_INFO("-- "<< m.first<<" multiplicities: "<<msg.str() <<" "<<mms); } } + ATH_CHECK( m_multiplicitiesReqMap.size() != 0 ); bool errorOccured = false; for ( auto m: m_multiplicitiesReqMap ) { if ( m.second.size() != maxMult ) { @@ -70,7 +73,7 @@ StatusCode ComboHypo::copyDecisions( const DecisionIDContainer& passing, const E // new output decisions SG::WriteHandle<DecisionContainer> outputHandle = createAndStore(m_outputs[input_counter], context ); auto outDecisions = outputHandle.ptr(); - + int decCounter = 0; auto inputHandle = SG::makeHandle( m_inputs[input_counter], context ); if ( inputHandle.isValid() ) { @@ -84,12 +87,23 @@ StatusCode ComboHypo::copyDecisions( const DecisionIDContainer& passing, const E std::set_intersection( inputDecisionIDs.begin(), inputDecisionIDs.end(), passing.begin(), passing.end(), std::inserter( common, common.end() ) ); + // collect only chain name from leg name: do not propagate the legdIds? + DecisionIDContainer finalIds; + for (auto c: common){ + finalIds.insert(c); // all Ids used by the Filter, including legs + if (TrigCompositeUtils::isLegId ( HLT::Identifier(c) )){ + auto mainChain = TrigCompositeUtils::getIDFromLeg ( HLT::Identifier(c) ); + finalIds.insert( mainChain.numeric() ); + } + } + Decision* newDec = newDecisionIn( outDecisions ); linkToPrevious( newDec, inputDecision, context ); - ATH_MSG_DEBUG("New decision has "<< (TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>( newDec, "initialRoI")).isValid() - << " valid initialRoI and "<< TrigCompositeUtils::getLinkToPrevious(newDec).size() <<" previous decisions"); + ATH_MSG_DEBUG("New decision ("<< input_counter<<", "<<decCounter<<") has " + << (TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>( newDec, "initialRoI")).isValid() + << " valid initialRoI and "<< TrigCompositeUtils::getLinkToPrevious(newDec).size() <<" previous decisions; valid Ids="<<finalIds.size()) ; - insertDecisionIDs( common, newDec ); + insertDecisionIDs( finalIds, newDec ); // add View? if ( inputDecision->hasObjectLink( "view" ) ) { @@ -97,10 +111,11 @@ StatusCode ComboHypo::copyDecisions( const DecisionIDContainer& passing, const E CHECK( viewEL.isValid() ); newDec->setObjectLink( "view", viewEL ); } + decCounter++; } } - // debug printout: + if ( msgLvl(MSG::DEBUG) ) { ATH_MSG_DEBUG(outputHandle.key() <<" with "<< outputHandle->size() <<" decisions:"); for (auto outdecision: *outputHandle){ @@ -117,27 +132,115 @@ StatusCode ComboHypo::copyDecisions( const DecisionIDContainer& passing, const E return StatusCode::SUCCESS; } -void ComboHypo::fillDecisionsMap( std::vector< MultiplicityMap >& dmap, std::map<TrigCompositeUtils::DecisionID,std::map<int,int>>& featureMap, const EventContext& context) const { + +StatusCode ComboHypo::execute(const EventContext& context ) const { + ATH_MSG_DEBUG( "Executing " << name() << "..." ); + + DecisionIDContainer passing; + // this map is filled with the count of positive decisions from each input + CombinationMap dmap; + std::map<TrigCompositeUtils::DecisionID,std::map<int, int>> dmapFeatures; + uint nRequiredUnique; + fillDecisionsMap( dmap, dmapFeatures, context ); + + int nmaps=0; + for ( auto m: m_multiplicitiesReqMap ) { + nRequiredUnique=0; + const DecisionID requiredDecisionID = HLT::Identifier( m.first ).numeric(); + DecisionIDContainer allDecisionIds; + allDecisionIds.insert(requiredDecisionID); + + bool overallDecision = true; + + std::set< int> uniqueDecisions; + for ( size_t legIndex = 0; legIndex < m.second.size(); ++legIndex ) { + const size_t requiredMultiplicity = m.second[ legIndex ]; + nRequiredUnique += requiredMultiplicity; + + auto legId = TrigCompositeUtils::createLegName(HLT::Identifier(m.first), legIndex); + if (m.second.size()==1) legId = HLT::Identifier(m.first); // if one part in the menu name, do not use leg00 in name + const DecisionID requiredDecisionIDLeg = legId.numeric(); + ATH_MSG_DEBUG("Container "<< legIndex<<" Looking at leg : "<<legId ); + + //check each leg of the chain passes with required multiplicity + size_t observedMultiplicity = 0; + if ( dmap.count(requiredDecisionIDLeg) != 0 ){ + observedMultiplicity = dmap[ requiredDecisionIDLeg ].size(); + ATH_MSG_DEBUG( "Required multiplicity " << requiredMultiplicity << " for leg " << legId.name() << ": observed multiplicity " << observedMultiplicity << " in leg " << legIndex ); + } + if ( observedMultiplicity < requiredMultiplicity ) { + overallDecision = false; + break; + } + + + const size_t uniqueDecisionsInLeg = dmapFeatures[requiredDecisionIDLeg].size(); + + //check that the multiplicity of unique features is high enough + ATH_MSG_DEBUG("Number of unique decisions per Leg: "<<uniqueDecisionsInLeg<<", number of required decisions: "<<requiredMultiplicity); + if(uniqueDecisionsInLeg<requiredMultiplicity) overallDecision=false; + else + allDecisionIds.insert(requiredDecisionIDLeg); + for (auto feat: dmapFeatures[requiredDecisionIDLeg]){ + uniqueDecisions.insert( feat.first ); + } + } + + //check that the multiplicity of unique features is high enough + ATH_MSG_DEBUG("Number of unique decisions: "<<uniqueDecisions.size()<<", number of required unique decisions: "<<nRequiredUnique); + if (uniqueDecisions.size()<nRequiredUnique) overallDecision=false; + + //Overall chain decision + ATH_MSG_DEBUG( "Chain " << m.first << ( overallDecision ? " is accepted" : " is rejected") ); + if ( overallDecision == true ) { + for (auto decID: allDecisionIds) + passing.insert( passing.end(), decID ); + } + nmaps++; + } + + if (msgLvl(MSG::DEBUG)){ + for (auto p: passing) + ATH_MSG_DEBUG("Passing "<<HLT::Identifier(p)); + } + ATH_CHECK( copyDecisions( passing, context ) ); + + return StatusCode::SUCCESS; +} + +void ComboHypo::fillDecisionsMap( CombinationMap & dmap, std::map<TrigCompositeUtils::DecisionID,std::map<int,int>> & featureMap, const EventContext& context) const { + /* pair<index_of_input, index_of_decision> + map <decision_id, vector<pairs<>> list of all decisions of that leg-decID + vector < map<> > = list of all leg-decID, one element per legID + leg0 leg1 + */ for ( size_t i = 0; i < m_inputs.size(); ++i ) { auto inputHandle = SG::makeHandle( m_inputs.at(i), context ); if ( inputHandle.isValid() ) { ATH_MSG_DEBUG( "Found implicit RH from " << inputHandle.key() <<" with "<< inputHandle->size() << " elements:" ); - MultiplicityMap thisInputDmap; + std::map<TrigCompositeUtils::DecisionID,std::map<int,int>> thisFeatureMap; + int decCounter = 0; for ( const Decision* decision : *inputHandle.cptr() ) { - ATH_MSG_DEBUG( "Decision with "<< decisionIDs( decision ).size() << " chains passed:" ); + ATH_MSG_DEBUG( "Input Decision "<<decCounter <<" with "<< decisionIDs( decision ).size() << " active chains IDs" ); for ( DecisionID id: decisionIDs( decision ) ) { - ATH_MSG_DEBUG( " +++ " << HLT::Identifier( id ) ); - thisInputDmap[id] ++; + for ( auto m: m_multiplicitiesReqMap ) { + // search for the chain name in the list of active ones (including legs) + if (HLT::Identifier(id).name().find(m.first) != std::string::npos){ + ATH_MSG_DEBUG( " +++ " << HLT::Identifier( id ) ); + std::pair <int,int> combinationIndex = std::make_pair(i, decCounter); + dmap[id].push_back(combinationIndex); + ATH_MSG_DEBUG("Added in map: "<<dmap[id]); + //Map features to make sure we are considering unique objects. decision->linkColKeys()[idx] //is the feature collection's name-hash, which is unique per-RoI. Adding the object index //allows to correctly identify different objects within the same RoI (example: EF muons) //or different objects produced per event (example: MET) as being unique auto features = decision->linkColNames(); int idx=-1; - for(uint i=0; i<features.size(); i++){ - if(features[i]==featureString()){ - idx=i; + for(uint f=0; f<features.size(); f++){ + if(features[f]==featureString()){ + idx=f; break; } } @@ -145,9 +248,10 @@ void ComboHypo::fillDecisionsMap( std::vector< MultiplicityMap >& dmap, std::ma featureMap[id][decision->linkColKeys()[idx]+decision->linkColIndices()[idx]] ++; } else ATH_MSG_DEBUG("Did not find "<<featureString()); - } + } + }} + decCounter ++; } - dmap[i]= thisInputDmap; } else { ATH_MSG_DEBUG( "No implicit RH from " << inputHandle.key() ); @@ -155,60 +259,24 @@ void ComboHypo::fillDecisionsMap( std::vector< MultiplicityMap >& dmap, std::ma } } - //debug - ATH_MSG_DEBUG( "Decision map filled :" ); - int i=0; - for (auto onemap: dmap){ - ATH_MSG_DEBUG("map ["<<i<<"]: "); - for (auto m: onemap){ - ATH_MSG_DEBUG(" +++ " << HLT::Identifier( m.first ) <<" mult: "<<m.second); - } - i++; - } -} - -StatusCode ComboHypo::execute(const EventContext& context ) const { - ATH_MSG_DEBUG( "Executing " << name() << "..." ); - - DecisionIDContainer passing; - // this map is filled with the count of positive decisions from each input - - std::vector< MultiplicityMap > dmap( m_inputs.size() ); - std::map<TrigCompositeUtils::DecisionID,std::map<int, int>> dmapFeatures; - uint nRequiredUnique; - fillDecisionsMap( dmap, dmapFeatures, context ); - - for ( auto m: m_multiplicitiesReqMap ) { - nRequiredUnique=0; - const DecisionID requiredDecisionID = HLT::Identifier( m.first ).numeric(); - bool overallDecision = true; - - for ( size_t inputContainerIndex = 0; inputContainerIndex < m.second.size(); ++inputContainerIndex ) { - const int requiredMultiplicity = m.second[ inputContainerIndex ]; - nRequiredUnique += requiredMultiplicity; - //check each leg of the chain passes with required multiplicity - const int observedMultiplicity = dmap[ inputContainerIndex ][ requiredDecisionID ]; - ATH_MSG_DEBUG( "Required multiplicity " << requiredMultiplicity << " for chain " << m.first<< ": observed multiplicity " << observedMultiplicity << " in container " << inputContainerIndex ); - if ( observedMultiplicity < requiredMultiplicity ) { - overallDecision = false; - break; + if (msgLvl(MSG::DEBUG)){ + ATH_MSG_DEBUG( "Decision map filled :" ); + int legcount=0; + for (auto m: dmap){ + ATH_MSG_DEBUG("leg ["<<legcount<<"]: "); + std::vector<std::pair<int,int>> combinations = m.second; + ATH_MSG_DEBUG(" +++ " << HLT::Identifier( m.first ) <<" mult: "<<combinations.size()); + for (auto comb: combinations){ + ATH_MSG_DEBUG(" Comb: ("<<comb.first<<", "<<comb.second<<")"); } - } - - //check that the multiplicity of unique features is high enough - ATH_MSG_DEBUG("Number of unique decisions: "<<(dmapFeatures[HLT::Identifier(m.first)]).size()<<", number of required unique decisions: "<<nRequiredUnique); - if((dmapFeatures[HLT::Identifier(m.first)]).size()<nRequiredUnique) overallDecision=false; - //Overall chain decision - ATH_MSG_DEBUG( "Chain " << m.first << ( overallDecision ? " is accepted" : " is rejected") ); - if ( overallDecision == true ) { - passing.insert( requiredDecisionID ); - } + ATH_MSG_DEBUG("FeatureMap: found "<<featureMap[m.first].size()<<" entries"); + for (auto feat:featureMap[m.first]) + ATH_MSG_DEBUG(" Feature Id "<<feat.first<<", mult "<<feat.second); + legcount++; + } } + - ATH_CHECK( copyDecisions( passing, context ) ); - - return StatusCode::SUCCESS; } - diff --git a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.h b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.h index d1049152811755317baaf7e9f9793da4a9559425..c36140fcbb38b7f4847e358c8ff1a94f412b9341 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.h +++ b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.h @@ -10,6 +10,7 @@ // STL includes #include <string> +#include <utility> /** * @class ComboHypo for combined hypotheses required only counting (multiplicity requirements) @@ -30,9 +31,9 @@ public: virtual StatusCode execute(const EventContext& context) const override; virtual StatusCode finalize() override; + private: SG::ReadHandleKeyArray<TrigCompositeUtils::DecisionContainer> m_inputs { this, "HypoInputDecisions", {}, "Input Decisions" }; - /// output decisions SG::WriteHandleKeyArray<TrigCompositeUtils::DecisionContainer> m_outputs { this, "HypoOutputDecisions", {}, "Ouput Decisions" }; typedef std::map<std::string, std::vector<int>> MultiplicityReqMap; @@ -43,7 +44,8 @@ private: //!< iterates over all inputs filling the multiplicity map for each input collection typedef std::map<TrigCompositeUtils::DecisionID, int> MultiplicityMap; - void fillDecisionsMap( std::vector< MultiplicityMap >& dmap, std::map<TrigCompositeUtils::DecisionID,std::map<int,int>>& featureMap, const EventContext& context) const; + typedef std::map<TrigCompositeUtils::DecisionID, std::vector<std::pair<int,int>>> CombinationMap; + void fillDecisionsMap( CombinationMap & dmap, std::map<TrigCompositeUtils::DecisionID,std::map<int,int>> & featureMap, const EventContext& context) const; }; diff --git a/Trigger/TrigSteer/DecisionHandling/src/HypoBase.cxx b/Trigger/TrigSteer/DecisionHandling/src/HypoBase.cxx index e8d72166b15baf343a3b44a2aff21c898efbb68e..89a1f4d476abb9458f87bc37bbac3cbdcc0d23ef 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/HypoBase.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/HypoBase.cxx @@ -145,7 +145,7 @@ StatusCode HypoBase::validateLogicalFlow(const ElementLink<DecisionContainer>& d const ElementLinkVector<DecisionContainer> seeds = (*dEL)->objectCollectionLinks<DecisionContainer>(seedString()); for (const DecisionID id : decisionIDSet) { // For each chain that I'm passing, check how many of my parents were also passing the chain - size_t parentsWithDecision = 0; + size_t parentsWithDecision = 0; for (const ElementLink<DecisionContainer>& seed : seeds) { ATH_CHECK( seed.isValid() ); DecisionIDContainer seedIDSet; @@ -153,6 +153,14 @@ StatusCode HypoBase::validateLogicalFlow(const ElementLink<DecisionContainer>& d if (passed(id, seedIDSet)) { ++parentsWithDecision; } + else{ //adding also Ids from the legs + for (auto sid: seedIDSet){ + if (TrigCompositeUtils::getIDFromLeg(sid).numeric() == id){ + ++parentsWithDecision; + break; + } + } + } } if (mode == kRequireOne && parentsWithDecision == 0) { // InputMakers may merge multiple of their input collections in order to run reconstruction on a common set of ROI (for example) diff --git a/Trigger/TrigSteer/DecisionHandling/src/InputMakerBase.cxx b/Trigger/TrigSteer/DecisionHandling/src/InputMakerBase.cxx index 68564df306e46366792b3459d31fb69d60e3818a..249351a5aee0141f979ccc5f330107ae790ff5d6 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/InputMakerBase.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/InputMakerBase.cxx @@ -50,6 +50,16 @@ StatusCode InputMakerBase::decisionInputToOutput(const EventContext& context, st outputHandles = decisionOutputs().makeHandles(context); //size_t tot_inputs = countInputHandles( context ); size_t outputIndex = 0; + TrigCompositeUtils::DecisionContainer* outDecisions = nullptr; + if (m_mergeOutputs){ + TrigCompositeUtils::createAndStore(outputHandles[outputIndex]); // one only + outDecisions = outputHandles[outputIndex].ptr(); + } + + // If using m_mergeOutputs, then collate all RoIs that are stored in this input container + ElementLinkVector<TrigRoiDescriptorCollection> RoIsFromDecision; + + for ( auto inputKey: decisionInputs() ) { auto inputHandle = SG::makeHandle( inputKey, context ); @@ -65,20 +75,18 @@ StatusCode InputMakerBase::decisionInputToOutput(const EventContext& context, st } ATH_MSG_DEBUG( "Running on input "<< inputKey.key()<<" with " << inputHandle->size() << " elements" ); - // We have an input container with >= 1 Decision objects. Create an output container with the same index. - TrigCompositeUtils::createAndStore(outputHandles[outputIndex]); - - - TrigCompositeUtils::DecisionContainer* outDecisions = outputHandles[outputIndex].ptr(); + // We have an input container with >= 1 Decision objects. Create an output container with the same index. + if (! m_mergeOutputs){ + TrigCompositeUtils::createAndStore(outputHandles[outputIndex]); + outDecisions = outputHandles[outputIndex].ptr(); + } - // If using m_mergeOutputs, then collate all RoIs that are stored in this input container - ElementLinkVector<TrigRoiDescriptorCollection> RoIsFromDecision; // loop over decisions retrieved from this input size_t input_counter =0; - size_t output_counter =0; + for (const TrigCompositeUtils::Decision* inputDecision : *inputHandle){ - ATH_MSG_DEBUG( "Input Decision "<<input_counter <<" has " <<TrigCompositeUtils::getLinkToPrevious(inputDecision).size()<<" previous links"); + ATH_MSG_DEBUG( " - Input Decision "<<input_counter <<": has " <<TrigCompositeUtils::getLinkToPrevious(inputDecision).size()<<" previous links"); TrigCompositeUtils::Decision* newDec = nullptr; bool addDecision = false; ElementLink<TrigRoiDescriptorCollection> roiEL = ElementLink<TrigRoiDescriptorCollection>(); @@ -93,8 +101,11 @@ StatusCode InputMakerBase::decisionInputToOutput(const EventContext& context, st // addDecision is positive here if we have *not* before encountered this RoI within this input collection. if (addDecision) { RoIsFromDecision.push_back(roiEL); // To keep track of which we have used - ATH_MSG_DEBUG( "Found RoI:" << **roiEL <<" FS="<< (*roiEL)->isFullscan()); + ATH_MSG_DEBUG( " -- Found new RoI:" << **roiEL <<": creating new decision"); } + else{ + ATH_MSG_DEBUG( " -- Found old RoI:" << **roiEL <<": merging to this one"); + } } else { // Not merging, keep a 1-to-1 mapping of Decisions in Input & Output containers addDecision=true; } @@ -102,7 +113,6 @@ StatusCode InputMakerBase::decisionInputToOutput(const EventContext& context, st if ( addDecision ){ // Create a new Decision in the Output container to mirror one in the Input container newDec = TrigCompositeUtils::newDecisionIn( outDecisions ); - output_counter++; } else{ // addDecision can only be false if m_mergeOutputs was true and roiEL was found within RoIsFromDecision // Re-use a Decision already added to the Output container @@ -113,15 +123,20 @@ StatusCode InputMakerBase::decisionInputToOutput(const EventContext& context, st } const size_t roiCounter = std::distance( RoIsFromDecision.begin(), roiIt ); newDec = outDecisions->at(roiCounter); + ATH_MSG_DEBUG("Merging with output decision n. "<< roiCounter); } + // if merged output, there are more than one seed: is it ok? TrigCompositeUtils::linkToPrevious( newDec, inputDecision, context ); // Link inputDecision object as the 'seed' of newDec TrigCompositeUtils::insertDecisionIDs( inputDecision, newDec ); // Copy decision IDs from inputDecision into newDec - ATH_MSG_DEBUG("New decision has "<< (TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>( newDec, m_roisLink.value())).isValid() <<" valid "<<m_roisLink.value() <<" and "<< TrigCompositeUtils::getLinkToPrevious(newDec).size() <<" previous decisions"); + TrigCompositeUtils::DecisionIDContainer objDecisions; + TrigCompositeUtils::decisionIDs( newDec, objDecisions ); + ATH_MSG_DEBUG(" -- This output decision has now "<< (TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>( newDec, m_roisLink.value())).isValid() <<" valid "<<m_roisLink.value() <<", "<< TrigCompositeUtils::getLinkToPrevious(newDec).size() <<" seeds and "<<objDecisions.size()<<" decisionIds"); input_counter++; } // loop over input decisions - ATH_MSG_DEBUG( "Filled output key " << decisionOutputs()[ outputIndex ].key() <<" of size "<<outDecisions->size() <<" at index "<< outputIndex); + if (! m_mergeOutputs) + ATH_MSG_DEBUG( "Filled output key " << decisionOutputs()[ outputIndex ].key() <<" of size "<<outDecisions->size() <<" at index "<< outputIndex); outputIndex++; } // end of first loop over input keys @@ -151,8 +166,10 @@ void InputMakerBase::debugPrintOut(const EventContext& context, const std::vecto validOutput++; } ATH_MSG_DEBUG("Produced " << validOutput << " valid/notempty output decisions containers"); - if(validInput != validOutput) { - ATH_MSG_ERROR("Found valid/notempty: " << validInput << " inputs and " << validOutput << " outputs"); + if (! m_mergeOutputs){ + if(validInput != validOutput) { + ATH_MSG_ERROR("Found valid/notempty: " << validInput << " inputs and " << validOutput << " outputs"); + } } for ( auto outHandle: outputHandles ) { diff --git a/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.cxx b/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.cxx index ad4758466c85e567cc0322d93503c139f033ed03..28d0ebf66dc52f0dfbc59523ab18d596b162a0fe 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/RoRSeqFilter.cxx @@ -38,27 +38,31 @@ StatusCode RoRSeqFilter::initialize() CHECK( m_outputKeys.initialize() ); renounceArray(m_inputKeys); - // is this needed? renounceArray(m_outputKeys); // TimM - I don't think so - ATH_MSG_DEBUG("Will consume implicit ReadDH:" ); - for (auto& input: m_inputKeys){ - ATH_MSG_DEBUG(" - "<<input.key()); - } - ATH_MSG_DEBUG("Will produce implicit WriteDH: "); - for (auto& output: m_outputKeys){ - ATH_MSG_DEBUG(" - "<<output.key()); + if (msgLvl(MSG::DEBUG)){ + ATH_MSG_DEBUG("Will consume implicit ReadDH:" ); + for (auto& input: m_inputKeys){ + ATH_MSG_DEBUG(" - "<<input.key()); + } + ATH_MSG_DEBUG("Will produce WriteDH: "); + for (auto& output: m_outputKeys){ + ATH_MSG_DEBUG(" - "<<output.key()); + } } - + CHECK( not m_chainsProperty.empty() ); for ( const std::string& el: m_chainsProperty ) m_chains.insert( HLT::Identifier( el ).numeric() ); - for ( const HLT::Identifier& id: m_chains ) - ATH_MSG_DEBUG( "Configured to require chain " << id ); + if (msgLvl(MSG::DEBUG)){ + ATH_MSG_DEBUG( "Configured to require these chains: "); + for ( const HLT::Identifier& id: m_chains ) + ATH_MSG_DEBUG( " - " << id ); + + ATH_MSG_DEBUG( "mergeInputs is " << m_mergeInputs); + } - ATH_MSG_DEBUG( "mergeInputs is " << m_mergeInputs); - if ( not m_monTool.name().empty() ) { ATH_CHECK( m_monTool.retrieve() ); } @@ -75,9 +79,6 @@ StatusCode RoRSeqFilter::execute() { mon.fill(); auto inputHandles = m_inputKeys.makeHandles(); auto outputHandles = m_outputKeys.makeHandles(); - //std::vector<SG::ReadHandle<DecisionContainer>> inputHandles; - //std::vector<SG::WriteHandle<DecisionContainer>> outputHandles; - bool validInputs=false; int counter = 1; // entries from 2 (note ++ below) used for inputs for ( auto inputHandle: inputHandles ) { @@ -128,7 +129,7 @@ StatusCode RoRSeqFilter::execute() { } else if ( inputHandle->empty() ) { ATH_MSG_DEBUG( "InputHandle "<< inputKey.key() <<" contains all rejected decisions, skipping" ); } else { - ATH_MSG_DEBUG( "Checking inputHandle "<< inputKey.key() <<" with " << inputHandle->size() <<" elements"); + ATH_MSG_DEBUG( "Checking inputHandle: "<< inputKey.key() <<" has " << inputHandle->size() <<" elements"); createAndStore(outputHandles[outputIndex]); DecisionContainer* output = outputHandles[outputIndex].ptr(); passCounter += copyPassing( *inputHandle, *output ); @@ -141,8 +142,10 @@ StatusCode RoRSeqFilter::execute() { setFilterPassed( passCounter != 0 ); ATH_MSG_DEBUG( "Filter " << ( filterPassed() ? "passed" : "rejected") <<"; creating "<< outputIndex<<" valid outDecisions DH:"); - for (auto output: outputHandles){ - if( output.isValid() ) ATH_MSG_DEBUG(" "<<output.key()); + if (msgLvl(MSG::DEBUG)){ + for (auto output: outputHandles){ + if( output.isValid() ) ATH_MSG_DEBUG(" "<<output.key()); + } } @@ -152,18 +155,13 @@ StatusCode RoRSeqFilter::execute() { size_t RoRSeqFilter::copyPassing( const DecisionContainer& input, DecisionContainer& output ) const { size_t passCounter = 0; - ATH_MSG_DEBUG( "Input size " << input.size() ); for (size_t i = 0; i < input.size(); ++i) { const Decision* inputDecision = input.at(i); DecisionIDContainer objDecisions; decisionIDs( inputDecision, objDecisions ); - ATH_MSG_DEBUG("Number of positive decisions for this input: " << objDecisions.size() ); - - for ( DecisionID id : objDecisions ) { - ATH_MSG_DEBUG( " -- Positive decision " << HLT::Identifier( id ) ); - } + ATH_MSG_DEBUG("Number of positive decisions for this input is " << objDecisions.size() <<". Now Filtering...." ); DecisionIDContainer intersection; std::set_intersection( m_chains.begin(), m_chains.end(), @@ -177,14 +175,18 @@ size_t RoRSeqFilter::copyPassing( const DecisionContainer& input, // Copy accross only the DecisionIDs which have passed through this Filter for this Decision object. // WARNING: Still need to 100% confirm if the correct set to propagate forward is objDecisions or intersection. // Tim M changing this from objDecisions (all IDs) -> intersection (only passed IDs) Feb 19 - insertDecisionIDs(intersection, decisionCopy); - + insertDecisionIDs(intersection, decisionCopy); passCounter ++; - ATH_MSG_DEBUG("Input satisfied at least one active chain"); + ATH_MSG_DEBUG("Input satisfied at least one filtering chain. Chain(s) passing:"); + if (msgLvl(MSG::DEBUG)){ + for ( DecisionID id : intersection ) { + ATH_MSG_DEBUG( " -- " << HLT::Identifier( id ) ); + } + } + } else { - ATH_MSG_DEBUG("No Input decisions requested by active chains"); + ATH_MSG_DEBUG("No Input decisions requested by filtering chains"); } } - ATH_MSG_DEBUG( "Output size " << output.size() ); return passCounter; } diff --git a/Trigger/TrigSteer/DecisionHandling/src/TrigCompositeUtils.cxx b/Trigger/TrigSteer/DecisionHandling/src/TrigCompositeUtils.cxx index 79a07c596b17663893ecbaa6c4b14583bb9111d4..ae360acca74f8b683a7a6125220edf8b1dcbef26 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/TrigCompositeUtils.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/TrigCompositeUtils.cxx @@ -11,6 +11,7 @@ #include "DecisionHandling/TrigCompositeUtils.h" #include <unordered_map> +#include <regex> static const SG::AuxElement::Accessor< std::vector<TrigCompositeUtils::DecisionID> > readWriteAccessor("decisions"); static const SG::AuxElement::ConstAccessor< std::vector<TrigCompositeUtils::DecisionID> > readOnlyAccessor("decisions"); @@ -156,7 +157,24 @@ namespace TrigCompositeUtils { legStringStream << "leg" << std::setfill('0') << std::setw(3) << counter << "_" << chainIdentifier.name(); return HLT::Identifier( legStringStream.str() ); } - + + + HLT::Identifier getIDFromLeg(const HLT::Identifier& legIdentifier) { + if (legIdentifier.name().find("HLT_",0)==0 ){ + return legIdentifier; + } else if (isLegId(legIdentifier)){ + return HLT::Identifier(legIdentifier.name().substr(7)); + } else{ + throw GaudiException("legIdentifier '"+legIdentifier.name()+"' does not start with 'HLT_' or 'leg' ", + "TrigCompositeUtils::getIDFromLeg", StatusCode::FAILURE); + } + } + + + bool isLegId(const HLT::Identifier& legIdentifier) { + return (legIdentifier.name().find("leg",0)==0); + } + const Decision* find( const Decision* start, const std::function<bool( const Decision* )>& filter ) { if ( filter( start ) ) return start; @@ -356,6 +374,7 @@ namespace TrigCompositeUtils { return ret; } + const std::string& initialRoIString() { return Decision::s_initialRoIString; } diff --git a/Trigger/TrigSteer/L1Decoder/src/METRoIsUnpackingTool.cxx b/Trigger/TrigSteer/L1Decoder/src/METRoIsUnpackingTool.cxx index b600e5d2c64b86ece7664d3a8471c7c38fde4fba..2f8d3d9cbfff69765f8e971e7531ec8c061f0673 100644 --- a/Trigger/TrigSteer/L1Decoder/src/METRoIsUnpackingTool.cxx +++ b/Trigger/TrigSteer/L1Decoder/src/METRoIsUnpackingTool.cxx @@ -82,10 +82,12 @@ StatusCode METRoIsUnpackingTool::unpack( const EventContext& ctx, m_allMETChains.begin(), m_allMETChains.end(), std::inserter(activeMETchains, activeMETchains.end() ) ); + ATH_MSG_DEBUG("Unpacking MET RoI for " << activeMETchains.size() << " chains"); + auto decision = TrigCompositeUtils::newDecisionIn( decisionOutput, "L1" ); // This "L1" denotes an initial node with no parents - for ( auto c: activeMETchains ) addDecisionID( c, decision ); + for ( auto th: m_thresholds ) + addChainsToDecision( HLT::Identifier( th->name() ), decision, activeChains ); - ATH_MSG_DEBUG("Unpacking MET RoI for " << activeMETchains.size() << " chains"); ATH_MSG_DEBUG("Linking to FS RoI descriptor"); decision->setObjectLink( "initialRoI", ElementLink<TrigRoiDescriptorCollection>( m_fsRoIKey, 0 ) ); diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx index d0400ff2c874c3f0a52c16d8236803c39cf4b7e8..9086c0d2533f2602b4ebef7c54edf43254401caa 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/StreamTagMakerTool.cxx @@ -119,7 +119,15 @@ StatusCode StreamTagMakerTool::fill( HLT::HLTResultMT& resultToFill, const Event } } + if (TrigCompositeUtils::isLegId(HLT::Identifier(chain)) ) + continue; + auto mappingIter = m_mapping.find( chain ); + if( mappingIter == m_mapping.end() ) { + ATH_MSG_ERROR("Each chain has to have the StreamTag associated whereas the " << HLT::Identifier( chain ) << " does not" ); + return StatusCode::FAILURE; + } + const std::vector<StreamTagInfo>& streams = mappingIter->second; for (const StreamTagInfo& streamTagInfo : streams) { auto [st_name, st_type, obeysLB, forceFullEvent] = streamTagInfo; diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx index 26ce8f3d9adfa65e2a7228f50dbb674715f5d541..4ced78eba4acf9d5536d21908bd65ba6b26b4be3 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx @@ -177,6 +177,10 @@ StatusCode TriggerBitsMakerTool::setBit(const TrigCompositeUtils::DecisionID cha const BitCategory category, boost::dynamic_bitset<uint32_t>& resultToFill) const { + // FP TMP chain ID manipulation for leg Identifiers/ to be checked by Tim + if (TrigCompositeUtils::isLegId(HLT::Identifier(chain)) ) + return StatusCode::SUCCESS; + auto mappingIter = m_mapping.find( chain ); // each chain has to have the counter if( mappingIter == m_mapping.end() ) { diff --git a/Trigger/TrigSteer/ViewAlgs/src/EventViewCreatorAlgorithm.cxx b/Trigger/TrigSteer/ViewAlgs/src/EventViewCreatorAlgorithm.cxx index 84213a934339d9ac5edd78b4782a0724fb3bf7fd..890f938a56f4b67bb5f81ad0b972ec295de5fb5f 100644 --- a/Trigger/TrigSteer/ViewAlgs/src/EventViewCreatorAlgorithm.cxx +++ b/Trigger/TrigSteer/ViewAlgs/src/EventViewCreatorAlgorithm.cxx @@ -27,19 +27,20 @@ StatusCode EventViewCreatorAlgorithm::initialize() { StatusCode EventViewCreatorAlgorithm::execute( const EventContext& context ) const { + if (m_mergeOutputs) + return executeMerged(context); + // create the output decisions, similar to inputs (copy basic links) std::vector< SG::WriteHandle<TrigCompositeUtils::DecisionContainer> > outputHandles; ATH_CHECK (decisionInputToOutput(context, outputHandles)); + // make the views auto viewsHandle = SG::makeHandle( m_viewsKey, context ); auto viewVector1 = std::make_unique< ViewContainer >(); ATH_CHECK( viewsHandle.record( std::move( viewVector1 ) ) ); auto viewVector = viewsHandle.ptr(); - - - // auto viewVector = std::make_unique< ViewContainer >(); auto contexts = std::vector<EventContext>( ); unsigned int viewCounter = 0; unsigned int conditionsRun = Atlas::getExtendedEventContext(context).conditionsRun(); @@ -75,10 +76,8 @@ StatusCode EventViewCreatorAlgorithm::execute( const EventContext& context ) con if ( roiIt == RoIsFromDecision.end() ){ RoIsFromDecision.push_back(roiEL); // just to keep track of which we have used ATH_MSG_DEBUG("Found RoI:" <<**roiEL<<" FS="<<(*roiEL)->isFullscan()); - ATH_MSG_DEBUG("Positive decisions on RoI, preparing view" ); - - // make the view - ATH_MSG_DEBUG( "Making the View" ); + ATH_MSG_DEBUG("Positive decisions on RoI, making view" ); + // make the view auto newView = ViewHelper::makeView( name()+"_view", viewCounter++, m_viewFallThrough ); //pointer to the view // Use a fall-through filter if one is provided @@ -99,10 +98,20 @@ StatusCode EventViewCreatorAlgorithm::execute( const EventContext& context ) con } else { int iview = roiIt - RoIsFromDecision.begin(); - outputDecision->setObjectLink( TrigCompositeUtils::viewString(), ElementLink< ViewContainer >(m_viewsKey.key(), iview ) ); //adding view to TC - ATH_MSG_DEBUG( "Adding already mapped view " << iview << " in ViewVector , to new decision"); auto theview = viewVector->at(iview); - ATH_CHECK( linkViewToParent( inputDecision, theview ) ); + // check that this view is not already linked to this decision (this is true if the mergerd output is enabled) + const auto existView = TrigCompositeUtils::findLink<ViewContainer> (outputDecision, TrigCompositeUtils::viewString()); + const auto existViewLink= existView.link; + if (existViewLink.isValid() && existViewLink == ElementLink< ViewContainer >(m_viewsKey.key(), iview )){ + ATH_MSG_DEBUG( "View already linked, doing nothing"); + } else if (existViewLink.isValid()){ + ATH_MSG_ERROR( "View already linked, but it is the wrong view! Configuration problem. Got " << existViewLink.index() << ", expected " << iview); + return StatusCode::FAILURE; + } else { + outputDecision->setObjectLink( TrigCompositeUtils::viewString(), ElementLink< ViewContainer >(m_viewsKey.key(), iview ) ); //adding view to TC + ATH_MSG_DEBUG( "Adding already mapped view " << iview << " in ViewVector , to new decision"); + ATH_CHECK( linkViewToParent( inputDecision, theview ) ); + } } }// loop over previous inputs } // loop over decisions @@ -127,6 +136,87 @@ StatusCode EventViewCreatorAlgorithm::execute( const EventContext& context ) con +StatusCode EventViewCreatorAlgorithm::executeMerged( const EventContext& context ) const { + + // create the output decisions, similar to inputs (copy basic links) + std::vector< SG::WriteHandle<TrigCompositeUtils::DecisionContainer> > outputHandles; + ATH_CHECK (decisionInputToOutput(context, outputHandles)); + + // make the views + auto viewsHandle = SG::makeHandle( m_viewsKey, context ); + auto viewVector1 = std::make_unique< ViewContainer >(); + ATH_CHECK( viewsHandle.record( std::move( viewVector1 ) ) ); + auto viewVector = viewsHandle.ptr(); + + + auto contexts = std::vector<EventContext>( ); + unsigned int viewCounter = 0; + unsigned int conditionsRun = Atlas::getExtendedEventContext(context).conditionsRun(); + + //map all RoIs that are stored + ElementLinkVector<TrigRoiDescriptorCollection> RoIsFromDecision; + + // loop over decisions + for (auto outputHandle: outputHandles) { + if( not outputHandle.isValid() ) { + ATH_MSG_DEBUG( "Got no decisions from output "<< outputHandle.key() << " because handle not valid"); + continue; + } + + if( outputHandle->size() == 0){ // input filtered out + ATH_MSG_DEBUG( "Got no decisions from output "<< outputHandle.key()<<": handle is valid but container is empty."); + continue; + } + ATH_MSG_DEBUG( "Got output "<< outputHandle.key()<<" with " << outputHandle->size() << " elements" ); + // loop over output decisions in container of outputHandle, follow link to inputDecision + for ( auto outputDecision : *outputHandle){ + const auto roiELInfo = TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>( outputDecision, m_roisLink.value() ); + const auto roiEL = roiELInfo.link; + ATH_CHECK( roiEL.isValid() ); + // check if already found + auto roiIt=find(RoIsFromDecision.begin(), RoIsFromDecision.end(), roiEL); + if ( roiIt == RoIsFromDecision.end() ){ + RoIsFromDecision.push_back(roiEL); // just to keep track of which we have used + ATH_MSG_DEBUG("Found RoI:" <<**roiEL<<" FS="<<(*roiEL)->isFullscan()); + ATH_MSG_DEBUG("Positive decisions on RoI, making view" ); + // make the view + auto newView = ViewHelper::makeView( name()+"_view", viewCounter++, m_viewFallThrough ); //pointer to the view + viewVector->push_back( newView ); + contexts.emplace_back( context ); + Atlas::setExtendedEventContext (contexts.back(), + Atlas::ExtendedEventContext( viewVector->back(), conditionsRun, *roiEL ) ); + + // link decision to this view + outputDecision->setObjectLink( TrigCompositeUtils::viewString(), ElementLink< ViewContainer >(m_viewsKey.key(), viewVector->size()-1 ));//adding view to TC + ATH_MSG_DEBUG( "Adding new view to new decision; storing view in viewVector component " << viewVector->size()-1 ); + ATH_CHECK( placeRoIInView( roiEL, viewVector->back(), contexts.back() ) ); + ElementLinkVector<DecisionContainer> inputLinks = getLinkToPrevious(outputDecision); + ATH_MSG_DEBUG( "Got inputLinks with " << inputLinks.size() << " elements" ); + for (auto input: inputLinks){ + const Decision* inputDecision = *input; + ATH_CHECK( linkViewToParent( inputDecision, viewVector->back() ) ); + } + } + else { + ATH_MSG_DEBUG( "View already linked, doing nothing"); + } + } // loop over decisions + }// loop over output keys + + // launch view execution + ATH_MSG_DEBUG( "Launching execution in " << viewVector->size() << " views" ); + ATH_CHECK( ViewHelper::ScheduleViews( viewVector, // Vector containing views + m_viewNodeName, // CF node to attach views to + context, // Source context + getScheduler(), + m_reverseViews ) ); + + if (msgLvl(MSG::DEBUG)) debugPrintOut(context, outputHandles); + return StatusCode::SUCCESS; +} + + + StatusCode EventViewCreatorAlgorithm::linkViewToParent( const TrigCompositeUtils::Decision* inputDecision, SG::View* newView ) const { if ( m_requireParentView ) { // see if there is a view linked to the decision object, if so link it to the view that is just made diff --git a/Trigger/TrigSteer/ViewAlgs/src/EventViewCreatorAlgorithm.h b/Trigger/TrigSteer/ViewAlgs/src/EventViewCreatorAlgorithm.h index 0706b8dfce56378c2194191e4d66613ad576324c..ef230e5c700238022d9e365205803dd7224baa7e 100644 --- a/Trigger/TrigSteer/ViewAlgs/src/EventViewCreatorAlgorithm.h +++ b/Trigger/TrigSteer/ViewAlgs/src/EventViewCreatorAlgorithm.h @@ -39,6 +39,10 @@ class EventViewCreatorAlgorithm : public ::InputMakerBase protected: EventViewCreatorAlgorithm(); + + // Used instead of execute, when mergeOutputs is true + // Note: if we enforce the merging beahviour this will become the default execute() + StatusCode executeMerged(const EventContext&) const; //Output views for merging SG::WriteHandleKey< ViewContainer > m_viewsKey{ this, "Views", "Unspecified", "The key of views collection produced" }; diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref index ffbebde66d2070755a0d5cde9a9cd4cab374810a..acce5fb7572624325dd66d61badfb92f1a6ba511 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/q221_RDOtoRDOTrig_mt1_build.ref @@ -1,176 +1,174 @@ -TrigSignatureMoniMT INFO HLT_2e17_etcut_L12EM15VH 2 2 2 2 2 0 0 0 2 -TrigSignatureMoniMT INFO HLT_2e17_etcut_L12EM15VH decisions 6 826 7 0 0 0 -TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 20 20 20 20 20 0 0 0 20 -TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 decisions 172 8889 387 0 0 0 -TrigSignatureMoniMT INFO HLT_2g20_tight_L12EM20VH 2 2 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g20_tight_L12EM20VH decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g35_etcut_L12EM20VH 2 2 1 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g35_etcut_L12EM20VH decisions 2 2 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g35_medium_L12EM20VH 2 2 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g35_medium_L12EM20VH decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J1003 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 3 3 3 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 decisions 18 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 3 3 3 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 decisions 18 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 3 3 3 1 1 1 0 0 1 -TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 decisions 18 6 4 4 0 0 -TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 4 4 4 2 1 1 1 0 1 -TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 decisions 24 4 6 6 1 0 -TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 4 4 4 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 decisions 24 1 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 4 4 4 1 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 decisions 24 6 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 10 10 4 1 1 1 1 0 1 -TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 decisions 24 6 4 4 1 0 -TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 4 4 4 1 1 1 0 0 1 -TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 decisions 24 6 4 4 0 0 -TrigSignatureMoniMT INFO HLT_3j200_L1J100 3 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3j200_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3j200_L1J20 19 19 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3j200_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 0 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 0 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 0 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 7 7 1 0 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 decisions 5 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_e26_etcut_L1EM22VHI 6 6 6 6 6 0 0 0 6 -TrigSignatureMoniMT INFO HLT_e26_etcut_L1EM22VHI decisions 7 645 7 0 0 0 -TrigSignatureMoniMT INFO HLT_e3_etcut1step_mu6fast_L1EM8I_MU105 5 5 0 0 0 0 0 5 -TrigSignatureMoniMT INFO HLT_e3_etcut1step_mu6fast_L1EM8I_MU10 decisions 17 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_e3_etcut_L1EM3 20 20 20 20 20 0 0 0 20 -TrigSignatureMoniMT INFO HLT_e3_etcut_L1EM3 decisions 172 8889 387 0 0 0 -TrigSignatureMoniMT INFO HLT_e5_etcut_L1EM3 20 20 20 20 20 0 0 0 20 -TrigSignatureMoniMT INFO HLT_e5_etcut_L1EM3 decisions 140 7892 185 0 0 0 -TrigSignatureMoniMT INFO HLT_e7_etcut_L1EM3 20 20 20 20 20 0 0 0 20 -TrigSignatureMoniMT INFO HLT_e7_etcut_L1EM3 decisions 89 5506 108 0 0 0 -TrigSignatureMoniMT INFO HLT_g140_etcut_L1EM24VHI 6 6 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_g140_etcut_L1EM24VHI decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_g140_loose_L1EM24VHI 6 6 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_g140_loose_L1EM24VHI decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_g20_etcut_LArPEB_L1EM15 14 14 14 14 11 11 0 0 11 -TrigSignatureMoniMT INFO HLT_g20_etcut_LArPEB_L1EM15 decisions 24 24 21 21 0 0 -TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 20 20 20 20 20 0 0 0 20 -TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 decisions 140 140 185 0 0 0 -TrigSignatureMoniMT INFO HLT_g5_etcut_LArPEB_L1EM3 20 20 20 20 20 20 0 0 20 -TrigSignatureMoniMT INFO HLT_g5_etcut_LArPEB_L1EM3 decisions 140 140 185 185 0 0 -TrigSignatureMoniMT INFO HLT_g5_loose_L1EM3 20 20 17 17 17 9 0 0 9 -TrigSignatureMoniMT INFO HLT_g5_loose_L1EM3 decisions 57 57 116 14 0 0 -TrigSignatureMoniMT INFO HLT_g5_medium_L1EM3 20 20 16 16 16 9 0 0 9 -TrigSignatureMoniMT INFO HLT_g5_medium_L1EM3 decisions 48 48 92 14 0 0 -TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 20 20 16 16 16 9 0 0 9 -TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 decisions 45 45 84 9 0 0 -TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J2019 19 15 0 0 0 0 0 15 -TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20 decisions 39 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j225_ftf_subjesgscIS_bmv2c1040_split_L1J1003 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j225_ftf_subjesgscIS_bmv2c1040_split_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 19 19 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA492 2 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA49 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j275_ftf_subjesgscIS_bmv2c1060_split_L1J1003 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j275_ftf_subjesgscIS_bmv2c1060_split_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j300_ftf_subjesgscIS_bmv2c1070_split_L1J1003 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j300_ftf_subjesgscIS_bmv2c1070_split_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j360_ftf_subjesgscIS_bmv2c1077_split_L1J1003 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j360_ftf_subjesgscIS_bmv2c1077_split_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_L1J100 3 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_L1J20 19 19 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_ftf_subjesgscIS_L1J2019 19 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_ftf_subjesgscIS_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_L1J15 20 20 18 0 0 0 0 0 18 -TrigSignatureMoniMT INFO HLT_j45_L1J15 decisions 18 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 20 20 18 0 0 0 0 0 18 -TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 decisions 18 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_pf_L1J20 19 19 16 0 0 0 0 0 16 -TrigSignatureMoniMT INFO HLT_j45_ftf_pf_L1J20 decisions 16 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_L1J15 20 20 18 0 0 0 0 0 18 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_L1J15 decisions 18 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J2019 19 18 18 18 18 0 0 18 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J20 decisions 18 49 49 49 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_boffperf_split_L1J2019 19 18 18 18 18 0 0 18 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20 decisions 18 49 49 49 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J1003 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 19 19 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 3 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 19 19 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J1003 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 3 3 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J2019 19 11 0 0 0 0 0 11 -TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20 decisions 11 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 20 20 13 0 0 0 0 0 13 -TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 decisions 13 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j85_L1J20 19 19 13 0 0 0 0 0 13 -TrigSignatureMoniMT INFO HLT_j85_L1J20 decisions 13 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 19 19 13 0 0 0 0 0 13 -TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 decisions 13 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j85_ftf_pf_L1J20 19 19 10 0 0 0 0 0 10 -TrigSignatureMoniMT INFO HLT_j85_ftf_pf_L1J20 decisions 10 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 10 10 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu20_ivar_L1MU6 10 10 10 5 3 0 0 0 3 -TrigSignatureMoniMT INFO HLT_mu20_ivar_L1MU6 decisions 14 6 3 0 0 0 -TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 8 8 6 6 5 5 0 0 5 -TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 decisions 7 7 6 6 0 0 -TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 8 8 8 5 4 3 3 0 3 -TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 decisions 10 6 5 4 4 0 -TrigSignatureMoniMT INFO HLT_mu50_L1MU20 8 8 8 5 1 1 0 0 1 -TrigSignatureMoniMT INFO HLT_mu50_L1MU20 decisions 10 6 1 1 0 0 -TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU208 8 8 5 1 1 1 0 1 -TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU20 decisions 10 6 1 1 1 0 -TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU208 8 1 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU20 decisions 2 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu6Comb_L1MU6 10 10 10 5 0 0 0 0 5 -TrigSignatureMoniMT INFO HLT_mu6Comb_L1MU6 decisions 14 6 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu6_L1MU6 10 10 10 5 5 5 0 0 5 -TrigSignatureMoniMT INFO HLT_mu6_L1MU6 decisions 14 6 6 6 0 0 -TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 10 10 10 10 10 10 0 0 10 -TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 decisions 14 14 17 20 0 0 -TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 10 10 10 5 5 5 5 0 5 -TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 decisions 14 6 6 6 6 0 -TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 10 10 10 0 10 0 0 0 10 -TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 decisions 14 0 17 0 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 4 4 4 3 1 1 0 0 1 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 40 18 6 6 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu6noL1_L1MU6 10 10 10 5 5 5 3 1 1 -TrigSignatureMoniMT INFO HLT_mu6_mu6noL1_L1MU6 decisions 14 6 6 6 8 2 -TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 10 10 10 0 0 0 0 0 10 -TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 decisions 14 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU208 8 8 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU20 decisions 10 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 18 18 18 18 0 0 0 0 18 -TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 decisions 39 29 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU1000 0 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM14 14 14 0 0 0 0 0 14 -TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM decisions 24 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM14 14 14 12 11 0 0 0 11 -TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM decisions 24 19 12 0 0 0 -TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM14 14 12 10 9 0 0 0 9 -TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM decisions 21 16 9 0 0 0 -TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM14 14 11 0 0 0 0 0 11 -TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM decisions 19 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 19 19 17 0 0 0 0 0 17 -TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 decisions 17 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE1019 19 18 0 0 0 0 0 14 -TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE10 decisions 46 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 19 19 19 0 0 0 0 0 19 -TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 decisions 19 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 19 19 15 0 0 0 0 0 15 -TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 decisions 15 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 19 19 17 0 0 0 0 0 17 -TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 decisions 17 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 10 10 7 0 0 0 0 0 7 -TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 decisions 7 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2e17_etcut_L12EM15VH 2 2 2 2 2 0 0 2 +TrigSignatureMoniMT INFO HLT_2e17_etcut_L12EM15VH decisions 6 826 7 0 0 +TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 20 20 20 20 20 0 0 20 +TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 decisions 172 8889 387 0 0 +TrigSignatureMoniMT INFO HLT_2g20_tight_L12EM20VH 2 2 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2g20_tight_L12EM20VH decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2g35_etcut_L12EM20VH 2 2 1 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2g35_etcut_L12EM20VH decisions 2 2 0 0 0 +TrigSignatureMoniMT INFO HLT_2g35_medium_L12EM20VH 2 2 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2g35_medium_L12EM20VH decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J1003 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 3 3 3 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 decisions 12 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 3 3 3 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 decisions 12 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 3 3 3 1 1 1 0 1 +TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 decisions 12 4 4 4 0 +TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 4 4 4 2 1 1 1 1 +TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 decisions 16 4 6 6 1 +TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 4 4 4 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 decisions 16 1 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 4 4 4 1 0 0 0 1 +TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 decisions 16 4 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 10 10 4 1 1 1 1 0 +TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 decisions 16 4 4 4 1 +TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 4 4 4 1 1 1 0 1 +TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 decisions 16 4 4 4 0 +TrigSignatureMoniMT INFO HLT_3j200_L1J100 3 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3j200_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3j200_L1J20 19 19 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3j200_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 0 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 0 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 0 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 7 7 1 0 0 0 0 1 +TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 decisions 5 0 0 0 0 +TrigSignatureMoniMT INFO HLT_e26_etcut_L1EM22VHI 6 6 6 6 6 0 0 6 +TrigSignatureMoniMT INFO HLT_e26_etcut_L1EM22VHI decisions 7 645 7 0 0 +TrigSignatureMoniMT INFO HLT_e3_etcut1step_mu6fast_L1EM8I_MU105 5 5 0 0 0 0 5 +TrigSignatureMoniMT INFO HLT_e3_etcut1step_mu6fast_L1EM8I_MU10 decisions 5 0 0 0 0 +TrigSignatureMoniMT INFO HLT_e3_etcut_L1EM3 20 20 20 20 20 0 0 20 +TrigSignatureMoniMT INFO HLT_e3_etcut_L1EM3 decisions 172 8889 387 0 0 +TrigSignatureMoniMT INFO HLT_e5_etcut_L1EM3 20 20 20 20 20 0 0 20 +TrigSignatureMoniMT INFO HLT_e5_etcut_L1EM3 decisions 140 7892 185 0 0 +TrigSignatureMoniMT INFO HLT_e7_etcut_L1EM3 20 20 20 20 20 0 0 20 +TrigSignatureMoniMT INFO HLT_e7_etcut_L1EM3 decisions 89 5506 108 0 0 +TrigSignatureMoniMT INFO HLT_g140_etcut_L1EM24VHI 6 6 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_g140_etcut_L1EM24VHI decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_g140_loose_L1EM24VHI 6 6 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_g140_loose_L1EM24VHI decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_g20_etcut_LArPEB_L1EM15 14 14 14 14 11 11 0 11 +TrigSignatureMoniMT INFO HLT_g20_etcut_LArPEB_L1EM15 decisions 24 24 21 21 0 +TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 20 20 20 20 20 0 0 20 +TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 decisions 140 140 185 0 0 +TrigSignatureMoniMT INFO HLT_g5_etcut_LArPEB_L1EM3 20 20 20 20 20 20 0 20 +TrigSignatureMoniMT INFO HLT_g5_etcut_LArPEB_L1EM3 decisions 140 140 185 185 0 +TrigSignatureMoniMT INFO HLT_g5_loose_L1EM3 20 20 17 17 17 9 0 9 +TrigSignatureMoniMT INFO HLT_g5_loose_L1EM3 decisions 57 57 116 14 0 +TrigSignatureMoniMT INFO HLT_g5_medium_L1EM3 20 20 16 16 16 9 0 9 +TrigSignatureMoniMT INFO HLT_g5_medium_L1EM3 decisions 48 48 92 14 0 +TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 20 20 16 16 16 9 0 9 +TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 decisions 45 45 84 9 0 +TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J2019 19 15 0 0 0 0 15 +TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20 decisions 39 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j225_ftf_subjesgscIS_bmv2c1040_split_L1J1003 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j225_ftf_subjesgscIS_bmv2c1040_split_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 19 19 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA492 2 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA49 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j275_ftf_subjesgscIS_bmv2c1060_split_L1J1003 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j275_ftf_subjesgscIS_bmv2c1060_split_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j300_ftf_subjesgscIS_bmv2c1070_split_L1J1003 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j300_ftf_subjesgscIS_bmv2c1070_split_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j360_ftf_subjesgscIS_bmv2c1077_split_L1J1003 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j360_ftf_subjesgscIS_bmv2c1077_split_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_L1J100 3 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_L1J20 19 19 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_ftf_subjesgscIS_L1J2019 19 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_ftf_subjesgscIS_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_L1J15 20 20 18 0 0 0 0 18 +TrigSignatureMoniMT INFO HLT_j45_L1J15 decisions 18 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 20 20 18 0 0 0 0 18 +TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 decisions 18 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_pf_L1J20 19 19 16 0 0 0 0 16 +TrigSignatureMoniMT INFO HLT_j45_ftf_pf_L1J20 decisions 16 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_L1J15 20 20 18 0 0 0 0 18 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_L1J15 decisions 18 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J2019 19 18 18 18 18 0 18 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J20 decisions 18 49 49 49 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_boffperf_split_L1J2019 19 18 18 18 18 0 18 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20 decisions 18 49 49 49 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J1003 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 19 19 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 3 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 19 19 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J1003 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 3 3 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J2019 19 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j85_L1J20 19 19 13 0 0 0 0 13 +TrigSignatureMoniMT INFO HLT_j85_L1J20 decisions 13 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 19 19 13 0 0 0 0 13 +TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 decisions 13 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j85_ftf_pf_L1J20 19 19 10 0 0 0 0 10 +TrigSignatureMoniMT INFO HLT_j85_ftf_pf_L1J20 decisions 10 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 10 10 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu20_ivar_L1MU6 10 10 10 5 3 0 0 3 +TrigSignatureMoniMT INFO HLT_mu20_ivar_L1MU6 decisions 14 6 3 0 0 +TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 8 8 6 6 5 5 0 5 +TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 decisions 7 7 6 6 0 +TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 8 8 8 5 4 3 3 3 +TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 decisions 10 6 5 4 4 +TrigSignatureMoniMT INFO HLT_mu50_L1MU20 8 8 8 5 1 1 0 1 +TrigSignatureMoniMT INFO HLT_mu50_L1MU20 decisions 10 6 1 1 0 +TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU208 8 8 5 1 1 1 1 +TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU20 decisions 10 6 1 1 1 +TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU208 8 1 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU20 decisions 2 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu6Comb_L1MU6 10 10 10 5 0 0 0 5 +TrigSignatureMoniMT INFO HLT_mu6Comb_L1MU6 decisions 14 6 0 0 0 +TrigSignatureMoniMT INFO HLT_mu6_L1MU6 10 10 10 5 5 5 0 5 +TrigSignatureMoniMT INFO HLT_mu6_L1MU6 decisions 14 6 6 6 0 +TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 10 10 10 10 10 10 0 10 +TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 decisions 14 14 17 20 0 +TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 10 10 10 5 5 5 5 5 +TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 decisions 14 6 6 6 6 +TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 10 10 10 0 10 0 0 10 +TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 decisions 14 0 17 0 0 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 4 4 4 1 1 1 0 1 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 8 2 2 2 0 +TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 10 10 10 0 0 0 0 10 +TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 decisions 14 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU208 8 8 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU20 decisions 10 0 0 0 0 +TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 18 18 18 18 0 0 0 18 +TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 decisions 39 29 0 0 0 +TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU1000 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM14 14 14 0 0 0 0 14 +TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM decisions 24 0 0 0 0 +TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM14 14 14 12 11 0 0 11 +TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM decisions 24 19 12 0 0 +TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM14 14 12 10 9 0 0 9 +TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM decisions 21 16 9 0 0 +TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM14 14 11 0 0 0 0 11 +TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM decisions 19 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 19 19 17 0 0 0 0 17 +TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 decisions 17 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE1019 19 14 0 0 0 0 14 +TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE10 decisions 14 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 19 19 19 0 0 0 0 19 +TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 decisions 19 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 19 19 15 0 0 0 0 15 +TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 decisions 15 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 19 19 17 0 0 0 0 17 +TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 decisions 17 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 10 10 7 0 0 0 0 7 +TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 decisions 7 0 0 0 0 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt index 50d11bca97b6108760177a33e9e5368551390b9f..8c9a1cc48152bb08ade75a2f3a35125717542277 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt +++ b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt @@ -50,7 +50,7 @@ function( _add_test name ) endfunction( _add_test ) -_add_test( emu_step_processing EXTRA_PATTERNS "-s TrigSignatureMoniMT.*INFO HLT_.*|TriggerSummaryStep.* chains passed:|TriggerSummaryStep.*+++ HLT_.*") # should be moved to TriggerMenuMT +_add_test( emu_step_processing EXTRA_PATTERNS "-s TrigSignatureMoniMT.*INFO HLT_.*|TriggerSummaryStep.* chains passed:|TriggerSummaryStep.*+++ HLT_.*|TriggerSummaryStep.*+++ leg.*") # should be moved to TriggerMenuMT # Unit tests of the test scripts atlas_add_test( flake8_test_dir diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/EmuStepProcessingConfig.py b/Trigger/TrigValidation/TrigUpgradeTest/python/EmuStepProcessingConfig.py index bede0453102a8054a53dafffaf61e9e4de974bcd..412cd97d5ebd7095c7aefc09129384daa5db2a07 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/python/EmuStepProcessingConfig.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/python/EmuStepProcessingConfig.py @@ -24,34 +24,48 @@ def generateL1DecoderAndChains(): AlgScheduler.ShowDataFlow( True ) # 4 events - data = {'noreco': [';', ';', ';',';']} # in the lists there are the events + data = { + 'noreco': [';', ';', ';',';'], + 'emclusters': [';', ';', ';',';'], + 'msmu': [';', ';', ';',';'], + 'ctp': [';', ';', ';',';'], + 'l1emroi': [';', ';', ';',';'], + 'l1muroi': [';', ';', ';',';'] + } # in the lists there are the events - data['emclusters'] = [ ';', - 'eta:1,phi:1,et:180000; eta:1,phi:-1.2,et:35000;', - 'eta:0.5,phi:0,et:120000; eta:1,phi:-1.2,et:65000;', - 'eta:-0.6,phi:1.7,et:9000;'] - data['msmu'] = [';', - ';', - 'eta:-1.2,phi:0.7,pt:6500,pt2:8500; eta:-1.1,phi:0.6,pt:8500,pt2:8500;', - 'eta:-1.7,phi:-0.2,pt:29500,pt2:8500;'] - - #data['ctp'] = [ 'HLT_e20 HLT_e5_e8 HLT_e5 HLT_e8 HLT_e5v22 HLT_g5', - data['ctp'] = [ 'HLT_e20_L1EM10 HLT_e5_e8_L1EM3_EM5 HLT_e5_L1EM7 HLT_e8_L1EM7 HLT_g5_EM7', - 'HLT_e20_L1EM10 HLT_e5_e8_L1EM3_EM5 HLT_e5_L1EM7 HLT_e8_L1EM7 HLT_g5_L1EM7 HLT_e5_v3_L1EM7', - 'HLT_mu6_L1MU6 HLT_mu8_L1MU10 HLT_mu10_L1MU10 HLT_mu8_1step_L1MU6 HLT_e20_L1EM10 HLT_e8_L1EM7 HLT_mu8_e8_L1MU6_EM7 HLT_e3_e5_L1EM3_EM5 HLT_2mu6_L12MU6 HLT_2mu6Comb_L12MU6 HLT_2mu4_bDimu_L12MU4', - 'HLT_mu20_L1MU10 HLT_mu10_L1MU10 HLT_mu8_L1MU10 HLT_mu8_1step_L1MU6 HLT_2mu8 HLT_e8_L1EM7' ] - - - data['l1emroi'] = [ ';', - '1,1,0,EM3,EM7,EM15,EM20,EM50,EM100; 1,-1.2,0,EM3,EM7', - '-0.6,0.2,0,EM3,EM7,EM15,EM20,EM50,EM100; 1,-1.1,0,EM3,EM7,EM15,EM20,EM50', - '-0.6,1.5,0,EM3,EM7,EM7'] - - data['l1muroi'] = [';', - '0,0,0,MU0;', - '-1,0.5,0,MU6,MU8; 1,0.5,0,MU6,MU8,MU10', - '-1.5,-0.1,0,MU6,MU8,MU10'] + + # event 0: empty + data['ctp'] [0] = 'HLT_e20_L1EM10 HLT_e5_e8_L1EM3_EM5 HLT_e5_L1EM7 HLT_e8_L1EM7 HLT_g5_EM7' + data['l1emroi'][0] = ';' + data['emclusters'][0]= ';' + data['l1muroi'][0] = ';' + data['msmu'][0] = ';' + + + #event 1: 3e (1 not passing at L1, 1 not passing at step1) + 2mu (2 not passing) - HLT_e5_e8_L1EM3_EM5 HLT_2mu6_L12MU6 + data['ctp'] [1] = 'HLT_e20_L1EM10 HLT_e5_L1EM7 HLT_e8_L1EM7 HLT_g5_L1EM7 HLT_e5_v3_L1EM7 HLT_e5_e8_L1EM3_EM5 HLT_mu8_e8_L1MU6_EM7 HLT_2mu6_L12MU6' + data['l1emroi'][1] = '1,1,0,EM3,EM5,EM7,EM20,EM50,EM100; 2.,-1.2,0,EM3,EM5; 3.,0.2,0,EM3;' + data['emclusters'][1]= 'eta:1,phi:1,et:180000; eta:1,phi:-1.2,et:6000; eta:0.5,phi:-1.2,et:3000;' + data['l1muroi'][1] = '2,0.5,0,MU6; 3,0.5,0,MU6;' + #data['l1muroi'][1] = '0,0,0,MU0;' + data['msmu'][1] = 'eta:-1.2,phi:0.7,pt:1500,pt2:1500; eta:-1.1,phi:0.6,pt:1500,pt2:1500;' + + # event 2: 2e+ 2mu : HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6, HLT_mu6_e8_L1MU6_EM5 + data['ctp'] [2] = 'HLT_mu6_L1MU6 HLT_mu8_L1MU10 HLT_mu10_L1MU10 HLT_mu8_1step_L1MU6 HLT_e20_L1EM10 HLT_e8_L1EM7 HLT_mu6_e8_L1MU6_EM5 HLT_mu6Comb_e8_L1MU6_EM5 HLT_e3_e5_L1EM3_EM5 HLT_2mu6_L12MU6 HLT_2mu6Comb_L12MU6 HLT_2mu4_bDimu_L12MU4 HLT_e5_e8_L1EM3_EM5 HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 HLT_mu6_mu6noL1_L1MU6' + data['l1emroi'][2] = '1,0.2,0,EM3,EM5, EM7,EM15,EM20,EM50,EM100; 1,-1.1,0,EM3,EM5,EM7,EM15,EM20,EM50;' + data['emclusters'][2]= 'eta:0.5,phi:0,et:120000; eta:1,phi:-1.2,et:65000;' + data['l1muroi'][2] = '2,0.5,0,MU6,MU8; 3,0.5,0,MU6,MU8,MU10;' + data['msmu'][2] = 'eta:-1.2,phi:0.7,pt:6500,pt2:8500; eta:-1.1,phi:0.6,pt:8500,pt2:8500;' + + #event 3: 1e + 1mu - HLT_mu6_e8_L1MU6_EM5 + data['ctp'] [3] = 'HLT_mu20_L1MU10 HLT_mu10_L1MU10 HLT_mu8_L1MU10 HLT_mu8_1step_L1MU6 HLT_2mu8 HLT_e8_L1EM7 HLT_mu6_e8_L1MU6_EM5 HLT_mu6Comb_e8_L1MU6_EM5' + data['l1emroi'][3] = '1,1.5,0,EM3,EM5,EM7;' + data['emclusters'][3]= 'eta:-0.6,phi:1.7,et:9000;' + data['l1muroi'][3] = '2,-0.1,0,MU6,MU8,MU10;' + data['msmu'][3] = 'eta:-1.7,phi:-0.2,pt:29500,pt2:8500;' + + # otehr vectors data['tracks'] = ['eta:1,phi:1,pt:120000; eta:1,phi:-1.2,et:32000;', 'eta:1,phi:1,pt:120000; eta:1,phi:-1.2,et:32000;', @@ -80,21 +94,19 @@ def generateL1DecoderAndChains(): from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import ChainStep - doMuon=True - doElectron=True - doCombo=True + doMuon = True + doElectron = True + doCombo = True HLTChains = [] - #EnabledElChains = [] - #EnabledMuChains = [] - #EnabledMuComboChains = [] - #EnabledElComboChains = [] # muon chains if doMuon: from TrigUpgradeTest.HLTSignatureConfig import muMenuSequence #step1 mu11 = muMenuSequence(step="1",reconame="v1", hyponame="v1") + mu12 = muMenuSequence(step="1",reconame="v2", hyponame="v2") + #step2 mu21 = muMenuSequence(step="2",reconame="v1", hyponame="v1") mu22 = muMenuSequence(step="2",reconame="v2", hyponame="v2") @@ -104,12 +116,12 @@ def generateL1DecoderAndChains(): #step4 mu41 = muMenuSequence(step="4",reconame="v1", hyponame="v1") - step_mu11 = ChainStep("Step_mu11", [mu11]) - step_mu21 = ChainStep("Step_mu21", [mu21] ) - step_mu22 = ChainStep("Step_mu22", [mu22] ) - step_mu31 = ChainStep("Step_mu31", [mu31] ) - step_mu32 = ChainStep("Step_mu32", [mu32] ) - step_mu41 = ChainStep("Step_mu41", [mu41] ) + step_mu11 = ChainStep("Step1_mu11", [mu11]) + step_mu21 = ChainStep("Step2_mu21", [mu21] ) + step_mu22 = ChainStep("Step2_mu22", [mu22] ) + step_mu31 = ChainStep("Step3_mu31", [mu31] ) + step_mu32 = ChainStep("Step3_mu32", [mu32] ) + step_mu41 = ChainStep("Step4_mu41", [mu41] ) step_empy= ChainStep("Step_empty") @@ -164,6 +176,7 @@ def generateL1DecoderAndChains(): from TrigUpgradeTest.HLTSignatureConfig import muMenuSequence #step1 mu11 = muMenuSequence(step="1",reconame="v1", hyponame="v1") + mu12 = muMenuSequence(step="1",reconame="v2", hyponame="v2") #step2 mu21 = muMenuSequence(step="2",reconame="v1", hyponame="v1") mu22 = muMenuSequence(step="2",reconame="v2", hyponame="v2") @@ -174,7 +187,7 @@ def generateL1DecoderAndChains(): mu41 = muMenuSequence(step="4",reconame="v1", hyponame="v1") - step_mu22 = ChainStep("Step_mu22", [mu22] ) + @@ -182,19 +195,35 @@ def generateL1DecoderAndChains(): # multiplicity here indicates the number of objects to be combined: # for the chain dictionary, get the sum of the multiplicity in the multiplicy array # in symmetric chains, multiplicity=2 but only one sequence is used - + + + CombChains =[ - makeChain(name='HLT_mu8_e8_L1MU6_EM7', L1Thresholds=["MU6","EM7"], ChainSteps=[ ChainStep("Step1_mu_em", [mu11, el11], multiplicity=[1,1]), - ChainStep("Step2_mu_em", [mu21, el21], multiplicity=[1,1])] ), - makeChain(name='HLT_e5_e8_L1EM3_EM5', L1Thresholds=["EM3","EM5"], ChainSteps=[ ChainStep("Step1_2em", [el11, el11], multiplicity=[1,1]), - ChainStep("Step2_2em", [el21, el21], multiplicity=[1,1]) ]), + + makeChain(name='HLT_mu6_e8_L1MU6_EM5', L1Thresholds=["MU6","EM5"], ChainSteps=[ ChainStep("Step1_mu_em", [mu11, el11], multiplicity=[1,1]), + ChainStep("Step2_mu_em", [mu21, el21], multiplicity=[1,1])] ), + + makeChain(name='HLT_mu6Comb_e8_L1MU6_EM5', L1Thresholds=["MU6","EM5"], ChainSteps=[ ChainStep("Step1_mu2_em", [mu12, el11], multiplicity=[1,1]), + ChainStep("Step2_mu_em", [mu21, el21], multiplicity=[1,1])] ), + + makeChain(name='HLT_e5_e8_L1EM3_EM5', L1Thresholds=["EM3","EM5"], ChainSteps=[ ChainStep("Step1_2emAs", [el11, el11], multiplicity=[1,1]), + ChainStep("Step2_2emAs", [el21, el21], multiplicity=[1,1]) ]), + makeChain(name='HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6', L1Thresholds=["EM3","EM5","MU6"], + ChainSteps=[ChainStep("Step1_2em_2mu", [el11,el11,mu11], multiplicity=[1,1,2]), + ChainStep("Step2_2em_2mu", [el21,el21,mu21], multiplicity=[1,1,2]) ]), makeChain(name='HLT_2mu6_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ ChainStep("Step1_2mu", [mu11], multiplicity=[2]), - ChainStep("Step2_2mu", [mu21], multiplicity=[2]) ]), - makeChain(name='HLT_2mu6Comb_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ ChainStep("Step1_2mu_empty", multiplicity=[2]), - ChainStep("Step2_2mu", [mu21], multiplicity=[2]) ]), - makeChain(name='HLT_2mu4_bDimu_L12MU4', L1Thresholds=["MU4"], ChainSteps=[ ChainStep("Step1_2mu", [mu11], multiplicity=[2]), - step_mu22, - ChainStep("Step3_2mu", [mu31], multiplicity=[2])] ) + ChainStep("Step2_2mu", [mu21], multiplicity=[2]) ]), + + makeChain(name='HLT_2mu6Comb_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ ChainStep("Step1_2mu_empty", multiplicity=[2]), + ChainStep("Step2_2mu", [mu21], multiplicity=[2]) ]), + + makeChain(name='HLT_2mu4_bDimu_L12MU4', L1Thresholds=["MU6"], ChainSteps=[ ChainStep("Step1_2mu", [mu11], multiplicity=[2]), + ChainStep("Step2_2mu22",[mu22], multiplicity=[2]), + ChainStep("Step3_2mu", [mu31], multiplicity=[2])] ), + + makeChain(name='HLT_mu6_mu6noL1_L1MU6', L1Thresholds=["MU6", ""], ChainSteps=[ ChainStep("Step1_2muAs", [mu11, mu11], multiplicity=[1,1]), + ChainStep("Step2_2muAs", [mu21, mu21], multiplicity=[1,1]) ]) + ] diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureHypoTools.py b/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureHypoTools.py index f4e656d5724a6df3142271be8b27b58d4cb54354..b318d82a30f67b778ed712f41954b60a16024173 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureHypoTools.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/python/HLTSignatureHypoTools.py @@ -10,31 +10,33 @@ def TestHypoTool(name, prop, threshold_value): def MuTestHypoTool(chainDict): name = chainDict['chainName'] - threshold = getThreshold(name, 'mu') + threshold = getThreshold(chainDict, 'mu') return TestHypoTool(name,prop="pt", threshold_value=threshold) def ElTestHypoTool(chainDict): name = chainDict['chainName'] - threshold = getThreshold(name, 'e') + threshold = getThreshold(chainDict, 'e') return TestHypoTool(name,prop="et", threshold_value=threshold) def GammTestHypoTool(chainDict): name = chainDict['chainName'] - threshold = getThreshold(name, 'g') + threshold = getThreshold(chainDict, 'g') return TestHypoTool(name,prop="et", threshold_value=threshold) def MuTest2HypoTool(chainDict): name = chainDict['chainName'] - threshold = getThreshold(name, 'mu') + threshold = getThreshold(chainDict, 'mu') return TestHypoTool(name,prop="pt2", threshold_value=threshold) def ElTest2HypoTool(chainDict): name = chainDict['chainName'] - threshold = getThreshold(name, 'e') + threshold = getThreshold(chainDict, 'e') return TestHypoTool(name,prop="et", threshold_value=threshold) -def getThreshold(name, signature): +def getThreshold(chainDict, signature): + name = chainDict['chainParts'][0]['chainPartName'] from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import getChainThresholdFromName return getChainThresholdFromName( name.split("_"), signature) + diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/emu_step_processing.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/emu_step_processing.ref index 4e4014f7209154a468abe9399d853015ca6b88cd..15ffcbd5937374230d22ceca85e02d610a40d1b9 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/emu_step_processing.ref +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/emu_step_processing.ref @@ -1,79 +1,130 @@ -TriggerSummaryStep1 1 0 DEBUG In summary 5 chains passed: -TriggerSummaryStep1 1 0 DEBUG +++ HLT_e5_v3_L1EM7 ID#1502850332 -TriggerSummaryStep1 1 0 DEBUG +++ HLT_e5_e8_L1EM3_EM5 ID#1658488232 -TriggerSummaryStep1 1 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 -TriggerSummaryStep1 1 0 DEBUG +++ HLT_e5_L1EM7 ID#3386155124 -TriggerSummaryStep1 1 0 DEBUG +++ HLT_g5_L1EM7 ID#3537091008 -TriggerSummaryStep2 1 0 DEBUG In summary 4 chains passed: -TriggerSummaryStep2 1 0 DEBUG +++ HLT_e5_v3_L1EM7 ID#1502850332 -TriggerSummaryStep2 1 0 DEBUG +++ HLT_e5_e8_L1EM3_EM5 ID#1658488232 -TriggerSummaryStep2 1 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 -TriggerSummaryStep2 1 0 DEBUG +++ HLT_e5_L1EM7 ID#3386155124 -TriggerSummaryStep3 1 0 DEBUG In summary 1 chains passed: -TriggerSummaryStep3 1 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 -TriggerSummaryStep1 2 0 DEBUG In summary 7 chains passed: -TriggerSummaryStep1 2 0 DEBUG +++ HLT_mu8_e8_L1MU6_EM7 ID#813774658 -TriggerSummaryStep1 2 0 DEBUG +++ HLT_2mu6_L12MU6 ID#1747073535 -TriggerSummaryStep1 2 0 DEBUG +++ HLT_2mu6Comb_L12MU6 ID#2046267508 -TriggerSummaryStep1 2 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 -TriggerSummaryStep1 2 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 -TriggerSummaryStep1 2 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 -TriggerSummaryStep1 2 0 DEBUG +++ HLT_mu8_1step_L1MU6 ID#3380352717 -TriggerSummaryStep2 2 0 DEBUG In summary 4 chains passed: -TriggerSummaryStep2 2 0 DEBUG +++ HLT_2mu6_L12MU6 ID#1747073535 -TriggerSummaryStep2 2 0 DEBUG +++ HLT_2mu6Comb_L12MU6 ID#2046267508 -TriggerSummaryStep2 2 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 -TriggerSummaryStep2 2 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 -TriggerSummaryStep3 2 0 DEBUG In summary 2 chains passed: -TriggerSummaryStep3 2 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 -TriggerSummaryStep3 2 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 -TriggerSummaryStep4 2 0 DEBUG In summary 1 chains passed: -TriggerSummaryStep4 2 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 -TriggerSummaryStep1 3 0 DEBUG In summary 5 chains passed: -TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu10_L1MU10 ID#209090273 -TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu20_L1MU10 ID#361599135 -TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 -TriggerSummaryStep1 3 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 -TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu8_1step_L1MU6 ID#3380352717 -TriggerSummaryStep2 3 0 DEBUG In summary 4 chains passed: -TriggerSummaryStep2 3 0 DEBUG +++ HLT_mu10_L1MU10 ID#209090273 -TriggerSummaryStep2 3 0 DEBUG +++ HLT_mu20_L1MU10 ID#361599135 -TriggerSummaryStep2 3 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 -TriggerSummaryStep2 3 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 -TriggerSummaryStep3 3 0 DEBUG In summary 4 chains passed: -TriggerSummaryStep3 3 0 DEBUG +++ HLT_mu10_L1MU10 ID#209090273 -TriggerSummaryStep3 3 0 DEBUG +++ HLT_mu20_L1MU10 ID#361599135 -TriggerSummaryStep3 3 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 -TriggerSummaryStep3 3 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 -TriggerSummaryStep4 3 0 DEBUG In summary 1 chains passed: -TriggerSummaryStep4 3 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 -TrigSignatureMoniMT INFO HLT_2mu4_bDimu_L12MU4 1 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu4_bDimu_L12MU4 decisions 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 1 1 0 1 0 0 1 -TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 decisions 0 4 0 0 -TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 1 1 1 1 0 0 1 -TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 decisions 4 4 0 0 -TrigSignatureMoniMT INFO HLT_e5_L1EM7 2 2 1 1 0 0 1 -TrigSignatureMoniMT INFO HLT_e5_L1EM7 decisions 2 2 0 0 -TrigSignatureMoniMT INFO HLT_e5_e8_L1EM3_EM5 2 2 1 1 0 0 1 -TrigSignatureMoniMT INFO HLT_e5_e8_L1EM3_EM5 decisions 6 6 0 0 -TrigSignatureMoniMT INFO HLT_e5_v2_L1EM7 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_e5_v2_L1EM7 decisions 0 0 0 0 -TrigSignatureMoniMT INFO HLT_e5_v3_L1EM7 1 1 1 1 0 0 1 -TrigSignatureMoniMT INFO HLT_e5_v3_L1EM7 decisions 2 2 0 0 -TrigSignatureMoniMT INFO HLT_e8_L1EM7 4 4 3 3 3 0 3 -TrigSignatureMoniMT INFO HLT_e8_L1EM7 decisions 5 5 5 0 -TrigSignatureMoniMT INFO HLT_g5_L1EM7 1 1 1 0 0 0 1 -TrigSignatureMoniMT INFO HLT_g5_L1EM7 decisions 2 0 0 0 -TrigSignatureMoniMT INFO HLT_mu10_L1MU10 2 2 1 1 1 0 1 -TrigSignatureMoniMT INFO HLT_mu10_L1MU10 decisions 1 1 1 0 -TrigSignatureMoniMT INFO HLT_mu20_L1MU10 1 1 1 1 1 0 1 -TrigSignatureMoniMT INFO HLT_mu20_L1MU10 decisions 1 1 1 0 -TrigSignatureMoniMT INFO HLT_mu6_L1MU6 1 1 1 0 1 1 1 -TrigSignatureMoniMT INFO HLT_mu6_L1MU6 decisions 2 0 2 2 -TrigSignatureMoniMT INFO HLT_mu8_1step_L1MU6 2 2 2 0 0 0 2 -TrigSignatureMoniMT INFO HLT_mu8_1step_L1MU6 decisions 2 0 0 0 -TrigSignatureMoniMT INFO HLT_mu8_L1MU10 2 2 2 1 1 1 1 -TrigSignatureMoniMT INFO HLT_mu8_L1MU10 decisions 2 1 1 1 -TrigSignatureMoniMT INFO HLT_mu8_e8_L1MU6_EM7 1 1 1 1 0 0 0 -TrigSignatureMoniMT INFO HLT_mu8_e8_L1MU6_EM7 decisions 4 2 0 0 +TriggerSummaryStep1 1 0 DEBUG In summary 7 chains passed: +TriggerSummaryStep1 1 0 DEBUG +++ leg001_HLT_e5_e8_L1EM3_EM5 ID#959816505 +TriggerSummaryStep1 1 0 DEBUG +++ leg000_HLT_e5_e8_L1EM3_EM5 ID#1022379709 +TriggerSummaryStep1 1 0 DEBUG +++ HLT_e5_v3_L1EM7 ID#1502850332 +TriggerSummaryStep1 1 0 DEBUG +++ HLT_e5_e8_L1EM3_EM5 ID#1658488232 +TriggerSummaryStep1 1 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 +TriggerSummaryStep1 1 0 DEBUG +++ HLT_e5_L1EM7 ID#3386155124 +TriggerSummaryStep1 1 0 DEBUG +++ HLT_g5_L1EM7 ID#3537091008 +TriggerSummaryStep2 1 0 DEBUG In summary 6 chains passed: +TriggerSummaryStep2 1 0 DEBUG +++ leg001_HLT_e5_e8_L1EM3_EM5 ID#959816505 +TriggerSummaryStep2 1 0 DEBUG +++ leg000_HLT_e5_e8_L1EM3_EM5 ID#1022379709 +TriggerSummaryStep2 1 0 DEBUG +++ HLT_e5_v3_L1EM7 ID#1502850332 +TriggerSummaryStep2 1 0 DEBUG +++ HLT_e5_e8_L1EM3_EM5 ID#1658488232 +TriggerSummaryStep2 1 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 +TriggerSummaryStep2 1 0 DEBUG +++ HLT_e5_L1EM7 ID#3386155124 +TriggerSummaryStep3 1 0 DEBUG In summary 1 chains passed: +TriggerSummaryStep3 1 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 +TriggerSummaryStep1 2 0 DEBUG In summary 21 chains passed: +TriggerSummaryStep1 2 0 DEBUG +++ leg002_HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 ID#345317877 +TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_e5_e8_L1EM3_EM5 ID#959816505 +TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_e5_e8_L1EM3_EM5 ID#1022379709 +TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_mu6Comb_e8_L1MU6_EM5 ID#1248852240 +TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_mu6_e8_L1MU6_EM5 ID#1567806656 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_e5_e8_L1EM3_EM5 ID#1658488232 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_2mu4_bDimu_L12MU4 ID#1730084172 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_2mu6_L12MU6 ID#1747073535 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_mu6_e8_L1MU6_EM5 ID#2038386564 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_2mu6Comb_L12MU6 ID#2046267508 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_mu6Comb_e8_L1MU6_EM5 ID#2371747463 +TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 ID#2467396139 +TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_mu6_e8_L1MU6_EM5 ID#2542671571 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 +TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 ID#2627130263 +TriggerSummaryStep1 2 0 DEBUG +++ leg000_HLT_mu6_mu6noL1_L1MU6 ID#2893452617 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_mu8_1step_L1MU6 ID#3380352717 +TriggerSummaryStep1 2 0 DEBUG +++ leg001_HLT_mu6Comb_e8_L1MU6_EM5 ID#3495876895 +TriggerSummaryStep1 2 0 DEBUG +++ HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 ID#4130483534 +TriggerSummaryStep2 2 0 DEBUG In summary 18 chains passed: +TriggerSummaryStep2 2 0 DEBUG +++ leg002_HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 ID#345317877 +TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_e5_e8_L1EM3_EM5 ID#959816505 +TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_e5_e8_L1EM3_EM5 ID#1022379709 +TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_mu6Comb_e8_L1MU6_EM5 ID#1248852240 +TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_mu6_e8_L1MU6_EM5 ID#1567806656 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_e5_e8_L1EM3_EM5 ID#1658488232 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_2mu4_bDimu_L12MU4 ID#1730084172 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_2mu6_L12MU6 ID#1747073535 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_mu6_e8_L1MU6_EM5 ID#2038386564 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_2mu6Comb_L12MU6 ID#2046267508 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_mu6Comb_e8_L1MU6_EM5 ID#2371747463 +TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 ID#2467396139 +TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_mu6_e8_L1MU6_EM5 ID#2542671571 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 +TriggerSummaryStep2 2 0 DEBUG +++ leg000_HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 ID#2627130263 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 +TriggerSummaryStep2 2 0 DEBUG +++ leg001_HLT_mu6Comb_e8_L1MU6_EM5 ID#3495876895 +TriggerSummaryStep2 2 0 DEBUG +++ HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 ID#4130483534 +TriggerSummaryStep3 2 0 DEBUG In summary 3 chains passed: +TriggerSummaryStep3 2 0 DEBUG +++ HLT_2mu4_bDimu_L12MU4 ID#1730084172 +TriggerSummaryStep3 2 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 +TriggerSummaryStep3 2 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 +TriggerSummaryStep4 2 0 DEBUG In summary 1 chains passed: +TriggerSummaryStep4 2 0 DEBUG +++ HLT_mu6_L1MU6 ID#2560542253 +TriggerSummaryStep1 3 0 DEBUG In summary 11 chains passed: +TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu10_L1MU10 ID#209090273 +TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu20_L1MU10 ID#361599135 +TriggerSummaryStep1 3 0 DEBUG +++ leg000_HLT_mu6Comb_e8_L1MU6_EM5 ID#1248852240 +TriggerSummaryStep1 3 0 DEBUG +++ leg001_HLT_mu6_e8_L1MU6_EM5 ID#1567806656 +TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu6_e8_L1MU6_EM5 ID#2038386564 +TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 +TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu6Comb_e8_L1MU6_EM5 ID#2371747463 +TriggerSummaryStep1 3 0 DEBUG +++ leg000_HLT_mu6_e8_L1MU6_EM5 ID#2542671571 +TriggerSummaryStep1 3 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 +TriggerSummaryStep1 3 0 DEBUG +++ HLT_mu8_1step_L1MU6 ID#3380352717 +TriggerSummaryStep1 3 0 DEBUG +++ leg001_HLT_mu6Comb_e8_L1MU6_EM5 ID#3495876895 +TriggerSummaryStep2 3 0 DEBUG In summary 10 chains passed: +TriggerSummaryStep2 3 0 DEBUG +++ HLT_mu10_L1MU10 ID#209090273 +TriggerSummaryStep2 3 0 DEBUG +++ HLT_mu20_L1MU10 ID#361599135 +TriggerSummaryStep2 3 0 DEBUG +++ leg000_HLT_mu6Comb_e8_L1MU6_EM5 ID#1248852240 +TriggerSummaryStep2 3 0 DEBUG +++ leg001_HLT_mu6_e8_L1MU6_EM5 ID#1567806656 +TriggerSummaryStep2 3 0 DEBUG +++ HLT_mu6_e8_L1MU6_EM5 ID#2038386564 +TriggerSummaryStep2 3 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 +TriggerSummaryStep2 3 0 DEBUG +++ HLT_mu6Comb_e8_L1MU6_EM5 ID#2371747463 +TriggerSummaryStep2 3 0 DEBUG +++ leg000_HLT_mu6_e8_L1MU6_EM5 ID#2542671571 +TriggerSummaryStep2 3 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 +TriggerSummaryStep2 3 0 DEBUG +++ leg001_HLT_mu6Comb_e8_L1MU6_EM5 ID#3495876895 +TriggerSummaryStep3 3 0 DEBUG In summary 4 chains passed: +TriggerSummaryStep3 3 0 DEBUG +++ HLT_mu10_L1MU10 ID#209090273 +TriggerSummaryStep3 3 0 DEBUG +++ HLT_mu20_L1MU10 ID#361599135 +TriggerSummaryStep3 3 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 +TriggerSummaryStep3 3 0 DEBUG +++ HLT_e8_L1EM7 ID#2914644523 +TriggerSummaryStep4 3 0 DEBUG In summary 1 chains passed: +TriggerSummaryStep4 3 0 DEBUG +++ HLT_mu8_L1MU10 ID#2258266078 +TrigSignatureMoniMT INFO HLT_2mu4_bDimu_L12MU4 1 1 1 1 1 0 1 +TrigSignatureMoniMT INFO HLT_2mu4_bDimu_L12MU4 decisions 4 4 4 0 +TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 1 1 0 1 0 0 1 +TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 decisions 0 4 0 0 +TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 2 2 1 1 0 0 1 +TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 decisions 4 4 0 0 +TrigSignatureMoniMT INFO HLT_e5_L1EM7 2 2 1 1 0 0 1 +TrigSignatureMoniMT INFO HLT_e5_L1EM7 decisions 1 1 0 0 +TrigSignatureMoniMT INFO HLT_e5_e8_2mu6_L1EM3_EM5_L12MU61 1 1 1 0 0 1 +TrigSignatureMoniMT INFO HLT_e5_e8_2mu6_L1EM3_EM5_L12MU6 decisions 2 2 0 0 +TrigSignatureMoniMT INFO HLT_e5_e8_L1EM3_EM5 3 3 2 2 0 0 2 +TrigSignatureMoniMT INFO HLT_e5_e8_L1EM3_EM5 decisions 4 4 0 0 +TrigSignatureMoniMT INFO HLT_e5_v2_L1EM7 0 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_e5_v2_L1EM7 decisions 0 0 0 0 +TrigSignatureMoniMT INFO HLT_e5_v3_L1EM7 1 1 1 1 0 0 1 +TrigSignatureMoniMT INFO HLT_e5_v3_L1EM7 decisions 1 1 0 0 +TrigSignatureMoniMT INFO HLT_e8_L1EM7 4 4 3 3 3 0 3 +TrigSignatureMoniMT INFO HLT_e8_L1EM7 decisions 3 3 3 0 +TrigSignatureMoniMT INFO HLT_g5_L1EM7 1 1 1 0 0 0 1 +TrigSignatureMoniMT INFO HLT_g5_L1EM7 decisions 1 0 0 0 +TrigSignatureMoniMT INFO HLT_mu10_L1MU10 2 2 1 1 1 0 1 +TrigSignatureMoniMT INFO HLT_mu10_L1MU10 decisions 1 1 1 0 +TrigSignatureMoniMT INFO HLT_mu20_L1MU10 1 1 1 1 1 0 1 +TrigSignatureMoniMT INFO HLT_mu20_L1MU10 decisions 1 1 1 0 +TrigSignatureMoniMT INFO HLT_mu6Comb_e8_L1MU6_EM5 2 2 2 2 0 0 2 +TrigSignatureMoniMT INFO HLT_mu6Comb_e8_L1MU6_EM5 decisions 3 3 0 0 +TrigSignatureMoniMT INFO HLT_mu6_L1MU6 1 1 1 0 1 1 1 +TrigSignatureMoniMT INFO HLT_mu6_L1MU6 decisions 2 0 2 2 +TrigSignatureMoniMT INFO HLT_mu6_e8_L1MU6_EM5 2 2 2 2 0 0 2 +TrigSignatureMoniMT INFO HLT_mu6_e8_L1MU6_EM5 decisions 3 3 0 0 +TrigSignatureMoniMT INFO HLT_mu6_mu6noL1_L1MU6 1 1 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu6_mu6noL1_L1MU6 decisions 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu8_1step_L1MU6 2 2 2 0 0 0 2 +TrigSignatureMoniMT INFO HLT_mu8_1step_L1MU6 decisions 2 0 0 0 +TrigSignatureMoniMT INFO HLT_mu8_L1MU10 2 2 2 1 1 1 1 +TrigSignatureMoniMT INFO HLT_mu8_L1MU10 decisions 2 1 1 1 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref index b0b64089f144edc1030021376ca4a5bed8d0b0f5..58df312d945e1d609ce998093a3767c9ad2bb0b9 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_build.ref @@ -1,186 +1,184 @@ -TrigSignatureMoniMT INFO HLT_2e17_etcut_L12EM15VH 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2e17_etcut_L12EM15VH decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 20 20 13 12 12 0 0 0 12 -TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 decisions 49 210 89 0 0 0 -TrigSignatureMoniMT INFO HLT_2g20_tight_L12EM20VH 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g20_tight_L12EM20VH decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g35_etcut_L12EM20VH 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g35_etcut_L12EM20VH decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g35_medium_L12EM20VH 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2g35_medium_L12EM20VH decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J10020 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3j200_L1J100 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3j200_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3j200_L1J20 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3j200_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_beamspot_allTE_trkfast_BeamSpotPEB_L1J1520 20 20 20 0 0 0 0 20 -TrigSignatureMoniMT INFO HLT_beamspot_allTE_trkfast_BeamSpotPEB_L1J15 decisions 20 20 0 0 0 0 -TrigSignatureMoniMT INFO HLT_costmonitor_CostMonDS_L1All20 20 20 20 0 0 0 0 20 -TrigSignatureMoniMT INFO HLT_costmonitor_CostMonDS_L1All decisions 20 20 0 0 0 0 -TrigSignatureMoniMT INFO HLT_e26_etcut_L1EM22VHI 20 20 1 1 1 0 0 0 1 -TrigSignatureMoniMT INFO HLT_e26_etcut_L1EM22VHI decisions 1 6 1 0 0 0 -TrigSignatureMoniMT INFO HLT_e3_etcut1step_mu6fast_L1EM8I_MU1020 20 10 0 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_e3_etcut1step_mu6fast_L1EM8I_MU10 decisions 17 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_e3_etcut_L1EM3 20 20 18 18 18 0 0 0 18 -TrigSignatureMoniMT INFO HLT_e3_etcut_L1EM3 decisions 54 219 99 0 0 0 -TrigSignatureMoniMT INFO HLT_e5_etcut_L1EM3 20 20 17 16 16 0 0 0 16 -TrigSignatureMoniMT INFO HLT_e5_etcut_L1EM3 decisions 51 212 51 0 0 0 -TrigSignatureMoniMT INFO HLT_e7_etcut_L1EM3 20 20 14 13 12 0 0 0 12 -TrigSignatureMoniMT INFO HLT_e7_etcut_L1EM3 decisions 35 174 28 0 0 0 -TrigSignatureMoniMT INFO HLT_g140_etcut_L1EM24VHI 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_g140_etcut_L1EM24VHI decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_g140_loose_L1EM24VHI 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_g140_loose_L1EM24VHI decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_g20_etcut_LArPEB_L1EM15 20 20 5 5 3 3 0 0 3 -TrigSignatureMoniMT INFO HLT_g20_etcut_LArPEB_L1EM15 decisions 5 5 3 3 0 0 -TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 20 20 17 17 17 0 0 0 17 -TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 decisions 51 51 55 0 0 0 -TrigSignatureMoniMT INFO HLT_g5_etcut_LArPEB_L1EM3 20 20 17 17 17 17 0 0 17 -TrigSignatureMoniMT INFO HLT_g5_etcut_LArPEB_L1EM3 decisions 51 51 55 55 0 0 -TrigSignatureMoniMT INFO HLT_g5_loose_L1EM3 20 20 12 12 12 8 0 0 8 -TrigSignatureMoniMT INFO HLT_g5_loose_L1EM3 decisions 21 21 37 11 0 0 -TrigSignatureMoniMT INFO HLT_g5_medium_L1EM3 20 20 11 11 11 8 0 0 8 -TrigSignatureMoniMT INFO HLT_g5_medium_L1EM3 decisions 20 20 37 11 0 0 -TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 20 20 11 11 11 5 0 0 5 -TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 decisions 20 20 37 5 0 0 -TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J2020 20 1 0 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20 decisions 2 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j225_ftf_subjesgscIS_bmv2c1040_split_L1J10020 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j225_ftf_subjesgscIS_bmv2c1040_split_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA4920 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA49 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j275_ftf_subjesgscIS_bmv2c1060_split_L1J10020 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j275_ftf_subjesgscIS_bmv2c1060_split_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j300_ftf_subjesgscIS_bmv2c1070_split_L1J10020 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j300_ftf_subjesgscIS_bmv2c1070_split_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j360_ftf_subjesgscIS_bmv2c1077_split_L1J10020 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j360_ftf_subjesgscIS_bmv2c1077_split_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_L1J100 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_L1J20 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_ftf_subjesgscIS_L1J2020 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j420_ftf_subjesgscIS_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_L1J15 20 20 5 0 0 0 0 0 5 -TrigSignatureMoniMT INFO HLT_j45_L1J15 decisions 5 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 20 20 5 0 0 0 0 0 5 -TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 decisions 5 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_pf_L1J20 20 20 4 0 0 0 0 0 4 -TrigSignatureMoniMT INFO HLT_j45_ftf_pf_L1J20 decisions 4 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_L1J15 20 20 5 0 0 0 0 0 5 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_L1J15 decisions 5 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J2020 20 5 5 5 5 0 0 5 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J20 decisions 5 5 5 5 0 0 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_boffperf_split_L1J2020 20 5 5 5 5 0 0 5 -TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20 decisions 5 5 5 5 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J10020 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J10020 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J2020 20 1 0 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20 decisions 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 20 20 1 0 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 decisions 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j85_L1J20 20 20 1 0 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_j85_L1J20 decisions 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 20 20 1 0 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 decisions 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_j85_ftf_pf_L1J20 20 20 1 0 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_j85_ftf_pf_L1J20 decisions 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu20_ivar_L1MU6 20 20 3 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu20_ivar_L1MU6 decisions 3 1 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 20 20 2 2 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 decisions 2 2 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 20 20 2 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 decisions 2 1 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu50_L1MU20 20 20 2 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu50_L1MU20 decisions 2 1 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU2020 20 2 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU20 decisions 2 1 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU2020 20 1 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU20 decisions 1 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu6Comb_L1MU6 20 20 3 1 0 0 0 0 1 -TrigSignatureMoniMT INFO HLT_mu6Comb_L1MU6 decisions 3 1 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu6_L1MU6 20 20 3 1 1 1 0 0 1 -TrigSignatureMoniMT INFO HLT_mu6_L1MU6 decisions 3 1 1 1 0 0 -TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 20 20 3 3 2 2 0 0 2 -TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 decisions 3 3 2 2 0 0 -TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 20 20 3 1 1 1 1 0 1 -TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 decisions 3 1 1 1 1 0 -TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 20 20 3 0 2 0 0 0 2 -TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 decisions 3 0 2 0 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 20 20 3 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 12 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu6noL1_L1MU6 20 20 3 1 1 1 0 0 0 -TrigSignatureMoniMT INFO HLT_mu6_mu6noL1_L1MU6 decisions 3 1 1 1 0 0 -TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 20 20 3 0 0 0 0 0 3 -TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 decisions 3 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU2020 20 2 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU20 decisions 2 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_noalg_L1EM3 20 20 0 0 0 0 0 0 20 -TrigSignatureMoniMT INFO HLT_noalg_L1EM3 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_noalg_L1RD0_EMPTY 20 20 0 0 0 0 0 0 20 -TrigSignatureMoniMT INFO HLT_noalg_L1RD0_EMPTY decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_noalg_L1RD0_FILLED 20 20 0 0 0 0 0 0 20 -TrigSignatureMoniMT INFO HLT_noalg_L1RD0_FILLED decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 20 20 8 8 0 0 0 0 8 -TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 decisions 8 8 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU10020 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100 decisions 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM20 20 8 0 0 0 0 0 8 -TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM decisions 8 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM20 20 8 8 8 0 0 0 8 -TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM decisions 8 8 8 0 0 0 -TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM20 20 6 6 6 0 0 0 6 -TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM decisions 6 6 6 0 0 0 -TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM20 20 5 0 0 0 0 0 5 -TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM decisions 5 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 20 20 5 0 0 0 0 0 5 -TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 decisions 5 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE1020 20 6 0 0 0 0 0 2 -TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE10 decisions 10 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 20 20 17 0 0 0 0 0 17 -TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 decisions 17 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 20 20 3 0 0 0 0 0 3 -TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 decisions 3 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 20 20 9 0 0 0 0 0 9 -TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 decisions 9 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 20 20 0 0 0 0 0 0 0 -TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 decisions 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2e17_etcut_L12EM15VH 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2e17_etcut_L12EM15VH decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 20 20 13 12 12 0 0 12 +TrigSignatureMoniMT INFO HLT_2e3_etcut_L12EM3 decisions 49 210 89 0 0 +TrigSignatureMoniMT INFO HLT_2g20_tight_L12EM20VH 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2g20_tight_L12EM20VH decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2g35_etcut_L12EM20VH 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2g35_etcut_L12EM20VH decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2g35_medium_L12EM20VH 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2g35_medium_L12EM20VH decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J10020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu10_bJpsimumu_L12MU10 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu10_bUpsimumu_L12MU10 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu14_L12MU10 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu4_bJpsimumu_L12MU4 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu4_bUpsimumu_L12MU4 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu6Comb_L12MU6 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu6_10invm70_L1MU6 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_2mu6_L12MU6 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3j200_L1J100 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3j200_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3j200_L1J20 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3j200_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_3mu6_msonly_L13MU6 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_beamspot_allTE_trkfast_BeamSpotPEB_L1J1520 20 20 20 0 0 0 20 +TrigSignatureMoniMT INFO HLT_beamspot_allTE_trkfast_BeamSpotPEB_L1J15 decisions 20 20 0 0 0 +TrigSignatureMoniMT INFO HLT_costmonitor_CostMonDS_L1All20 20 20 20 0 0 0 20 +TrigSignatureMoniMT INFO HLT_costmonitor_CostMonDS_L1All decisions 20 20 0 0 0 +TrigSignatureMoniMT INFO HLT_e26_etcut_L1EM22VHI 20 20 1 1 1 0 0 1 +TrigSignatureMoniMT INFO HLT_e26_etcut_L1EM22VHI decisions 1 6 1 0 0 +TrigSignatureMoniMT INFO HLT_e3_etcut1step_mu6fast_L1EM8I_MU1020 20 1 0 0 0 0 1 +TrigSignatureMoniMT INFO HLT_e3_etcut1step_mu6fast_L1EM8I_MU10 decisions 2 0 0 0 0 +TrigSignatureMoniMT INFO HLT_e3_etcut_L1EM3 20 20 18 18 18 0 0 18 +TrigSignatureMoniMT INFO HLT_e3_etcut_L1EM3 decisions 54 219 99 0 0 +TrigSignatureMoniMT INFO HLT_e5_etcut_L1EM3 20 20 17 16 16 0 0 16 +TrigSignatureMoniMT INFO HLT_e5_etcut_L1EM3 decisions 51 212 51 0 0 +TrigSignatureMoniMT INFO HLT_e7_etcut_L1EM3 20 20 14 13 12 0 0 12 +TrigSignatureMoniMT INFO HLT_e7_etcut_L1EM3 decisions 35 174 28 0 0 +TrigSignatureMoniMT INFO HLT_g140_etcut_L1EM24VHI 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_g140_etcut_L1EM24VHI decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_g140_loose_L1EM24VHI 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_g140_loose_L1EM24VHI decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_g20_etcut_LArPEB_L1EM15 20 20 5 5 3 3 0 3 +TrigSignatureMoniMT INFO HLT_g20_etcut_LArPEB_L1EM15 decisions 5 5 3 3 0 +TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 20 20 17 17 17 0 0 17 +TrigSignatureMoniMT INFO HLT_g5_etcut_L1EM3 decisions 51 51 55 0 0 +TrigSignatureMoniMT INFO HLT_g5_etcut_LArPEB_L1EM3 20 20 17 17 17 17 0 17 +TrigSignatureMoniMT INFO HLT_g5_etcut_LArPEB_L1EM3 decisions 51 51 55 55 0 +TrigSignatureMoniMT INFO HLT_g5_loose_L1EM3 20 20 12 12 12 8 0 8 +TrigSignatureMoniMT INFO HLT_g5_loose_L1EM3 decisions 21 21 37 11 0 +TrigSignatureMoniMT INFO HLT_g5_medium_L1EM3 20 20 11 11 11 8 0 8 +TrigSignatureMoniMT INFO HLT_g5_medium_L1EM3 decisions 20 20 37 11 0 +TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 20 20 11 11 11 5 0 5 +TrigSignatureMoniMT INFO HLT_g5_tight_L1EM3 decisions 20 20 37 5 0 +TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J2020 20 1 0 0 0 0 1 +TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20 decisions 2 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j225_ftf_subjesgscIS_bmv2c1040_split_L1J10020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j225_ftf_subjesgscIS_bmv2c1040_split_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA4920 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J75_31ETA49 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j275_ftf_subjesgscIS_bmv2c1060_split_L1J10020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j275_ftf_subjesgscIS_bmv2c1060_split_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j300_ftf_subjesgscIS_bmv2c1070_split_L1J10020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j300_ftf_subjesgscIS_bmv2c1070_split_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j360_ftf_subjesgscIS_bmv2c1077_split_L1J10020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j360_ftf_subjesgscIS_bmv2c1077_split_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_L1J100 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_L1J20 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_ftf_subjesgscIS_L1J2020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j420_ftf_subjesgscIS_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_L1J15 20 20 5 0 0 0 0 5 +TrigSignatureMoniMT INFO HLT_j45_L1J15 decisions 5 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 20 20 5 0 0 0 0 5 +TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 decisions 5 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_pf_L1J20 20 20 4 0 0 0 0 4 +TrigSignatureMoniMT INFO HLT_j45_ftf_pf_L1J20 decisions 4 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_L1J15 20 20 5 0 0 0 0 5 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_L1J15 decisions 5 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J2020 20 5 5 5 5 0 5 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J20 decisions 5 5 5 5 0 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_boffperf_split_L1J2020 20 5 5 5 5 0 5 +TrigSignatureMoniMT INFO HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20 decisions 5 5 5 5 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J10020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J10020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_L1J100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J2020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j80_j60_L1J15 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j85_L1J20 20 20 1 0 0 0 0 1 +TrigSignatureMoniMT INFO HLT_j85_L1J20 decisions 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 20 20 1 0 0 0 0 1 +TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 decisions 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_j85_ftf_pf_L1J20 20 20 1 0 0 0 0 1 +TrigSignatureMoniMT INFO HLT_j85_ftf_pf_L1J20 decisions 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu10_lateMu_L1MU10 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu20_ivar_L1MU6 20 20 3 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu20_ivar_L1MU6 decisions 3 1 0 0 0 +TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 20 20 2 2 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu24_idperf_L1MU20 decisions 2 2 0 0 0 +TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 20 20 2 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu26_ivarmedium_L1MU20 decisions 2 1 0 0 0 +TrigSignatureMoniMT INFO HLT_mu50_L1MU20 20 20 2 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu50_L1MU20 decisions 2 1 0 0 0 +TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU2020 20 2 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu50_RPCPEBSecondaryReadout_L1MU20 decisions 2 1 0 0 0 +TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU2020 20 1 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu60_0eta105_msonly_L1MU20 decisions 1 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu6Comb_L1MU6 20 20 3 1 0 0 0 1 +TrigSignatureMoniMT INFO HLT_mu6Comb_L1MU6 decisions 3 1 0 0 0 +TrigSignatureMoniMT INFO HLT_mu6_L1MU6 20 20 3 1 1 1 0 1 +TrigSignatureMoniMT INFO HLT_mu6_L1MU6 decisions 3 1 1 1 0 +TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 20 20 3 3 2 2 0 2 +TrigSignatureMoniMT INFO HLT_mu6_idperf_L1MU6 decisions 3 3 2 2 0 +TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 20 20 3 1 1 1 1 1 +TrigSignatureMoniMT INFO HLT_mu6_ivarmedium_L1MU6 decisions 3 1 1 1 1 +TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 20 20 3 0 2 0 0 2 +TrigSignatureMoniMT INFO HLT_mu6_msonly_L1MU6 decisions 3 0 2 0 0 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu6_mu4_L12MU4 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 20 20 3 0 0 0 0 3 +TrigSignatureMoniMT INFO HLT_mu6fast_L1MU6 decisions 3 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU2020 20 2 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_mu80_msonly_3layersEC_L1MU20 decisions 2 0 0 0 0 +TrigSignatureMoniMT INFO HLT_noalg_L1EM3 20 20 0 0 0 0 0 20 +TrigSignatureMoniMT INFO HLT_noalg_L1EM3 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_noalg_L1RD0_EMPTY 20 20 0 0 0 0 0 20 +TrigSignatureMoniMT INFO HLT_noalg_L1RD0_EMPTY decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_noalg_L1RD0_FILLED 20 20 0 0 0 0 0 20 +TrigSignatureMoniMT INFO HLT_noalg_L1RD0_FILLED decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 20 20 8 8 0 0 0 8 +TrigSignatureMoniMT INFO HLT_tau0_perf_ptonly_L1TAU12 decisions 8 8 0 0 0 +TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU10020 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_tau160_mediumRNN_tracktwoMVA_L1TAU100 decisions 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM20 20 8 0 0 0 0 8 +TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwoMVA_L1TAU12IM decisions 8 0 0 0 0 +TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM20 20 8 8 8 0 0 8 +TrigSignatureMoniMT INFO HLT_tau25_idperf_tracktwo_L1TAU12IM decisions 8 8 8 0 0 +TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM20 20 6 6 6 0 0 6 +TrigSignatureMoniMT INFO HLT_tau25_medium1_tracktwo_L1TAU12IM decisions 6 6 6 0 0 +TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM20 20 5 0 0 0 0 5 +TrigSignatureMoniMT INFO HLT_tau35_mediumRNN_tracktwoMVA_L1TAU12IM decisions 5 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 20 20 5 0 0 0 0 5 +TrigSignatureMoniMT INFO HLT_xe30_cell_L1XE10 decisions 5 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE1020 20 2 0 0 0 0 2 +TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpufit_L1XE10 decisions 2 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 20 20 17 0 0 0 0 17 +TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 decisions 17 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 20 20 3 0 0 0 0 3 +TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 decisions 3 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 20 20 9 0 0 0 0 9 +TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 decisions 9 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 20 20 0 0 0 0 0 0 +TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 decisions 0 0 0 0 0 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py index 4a19b63d291f2b320ff87095e78cefc61cab26f2..1267fc4fe5e88c23ee3229e9ea4d8e9d3aff3c91 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu_cf.py @@ -72,15 +72,19 @@ if opt.doMuonSlice == True: MuonChains = [] # step1 - step1mufast=ChainStep("Step1_muFast", [ muFastSequence() ]) + mufastS= muFastSequence() + step1mufast=ChainStep("Step1_muFast", [ mufastS ]) # step2 - step2muComb=ChainStep("Step2_muComb", [ muCombSequence() ]) + mucombS = muCombSequence() + step2muComb=ChainStep("Step2_muComb", [ mucombS ]) # step3 - step3muEFSA=ChainStep("Step3_muEFSA", [ muEFSASequence() ]) + muEFSAS = muEFSASequence() + step3muEFSA=ChainStep("Step3_muEFSA", [ muEFSAS ]) step3muIso =ChainStep("Step3_muIso", [ muIsoSequence() ]) # step4 - step4muEFCB=ChainStep("Step4_muEFCB", [ muEFCBSequence() ]) + muEFCBS = muEFCBSequence() + step4muEFCB=ChainStep("Step4_muEFCB", [ muEFCBS ]) emptyStep=ChainStep("Step2_empty") @@ -93,20 +97,20 @@ if opt.doMuonSlice == True: # multi muon trigger # 2muons symmetric - step1_2mufast_sym= ChainStep("Step1_2muFast_sym", [ muFastSequence()], multiplicity=[2]) - step2_2muComb_sym= ChainStep("Step1_2muComb_sym", [ muCombSequence()], multiplicity=[2]) + step1_2mufast_sym= ChainStep("Step1_2muFast_sym", [ mufastS], multiplicity=[2]) + step2_2muComb_sym= ChainStep("Step2_2muComb_sym", [ mucombS], multiplicity=[2]) - step3_2muEFSA_sym= ChainStep("Step3_2muEFSA_sym", [ muEFSASequence()], multiplicity=[2]) - step4_2muEFCB_sym= ChainStep("Step4_2muEFCB_sym", [ muEFCBSequence()], multiplicity=[2]) + step3_2muEFSA_sym= ChainStep("Step3_2muEFSA_sym", [ muEFSAS], multiplicity=[2]) + step4_2muEFCB_sym= ChainStep("Step4_2muEFCB_sym", [ muEFCBS], multiplicity=[2]) MuonChains += [ makeChain(name='HLT_2mu6Comb_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ step1_2mufast_sym, step2_2muComb_sym ])] # 2muons asymmetric (this will change): 2 sequences, 2 seeds - step1_2mufast_asym= ChainStep("Step1_2muFast_asym", [ muFastSequence(), muFastSequence()], multiplicity=[2]) - step2_2muComb_asym= ChainStep("Step1_2muComb_asym", [ muCombSequence(), muCombSequence()], multiplicity=[2]) + step1_2mufast_asym= ChainStep("Step1_2muFast_asym", [ mufastS, mufastS], multiplicity=[1,1]) + step2_2muComb_asym= ChainStep("Step1_2muComb_asym", [ mucombS, mucombS], multiplicity=[1,1]) - step3_2muEFSA_asym= ChainStep("Step3_2muEFSA_asym", [ muEFSASequence(), muEFSASequence()], multiplicity=[2]) - step4_2muEFCB_asym= ChainStep("Step4_2muEFCB_asym", [ muEFCBSequence(), muEFCBSequence()], multiplicity=[2]) + step3_2muEFSA_asym= ChainStep("Step3_2muEFSA_asym", [ muEFSAS, muEFSAS], multiplicity=[1,1]) + step4_2muEFCB_asym= ChainStep("Step4_2muEFCB_asym", [ muEFCBS, muEFCBS], multiplicity=[1,1]) MuonChains += [ makeChain(name='HLT_mu6_mu4_L12MU4', @@ -150,8 +154,8 @@ if opt.doJetSlice == True: step_a10r=ChainStep("Step_jet_a10r", [jetSeq_a10r]) jetChains = [ - makeChain(name='HLT_j45_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), - makeChain(name='HLT_j85_L1J20', L1Thresholds=["J20"],ChainSteps=[step_a4_tc_em] ), + makeChain(name='HLT_j45_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), + makeChain(name='HLT_j85_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), makeChain(name='HLT_j420_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), makeChain(name='HLT_j260_320eta490_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), # makeChain(name='HLT_j225_gsc420_boffperf_split', ChainSteps=[step_a4_tc_em] ), diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/newJO_build.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/newJO_build.ref index f073351648fd086acd4bf5532a2d0f53e5a32c45..01a3396f7d9d987631f5de172f110dbdf606ed96 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/newJO_build.ref +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/newJO_build.ref @@ -2,7 +2,7 @@ Storing config in the config newJOtest.pkl Py:Athena INFO now loading newJOtest.pkl ... TrigSignatureMo... INFO Chains passing step (1st row events & 2nd row decision counts): TrigSignatureMo... INFO Chain name L1, AfterPS, step1 step2 Output -TrigSignatureMo... INFO All 20 20 0 0 9 +TrigSignatureMo... INFO All 20 20 0 0 2 TrigSignatureMo... INFO HLT_2j35_L1J20 20 20 0 0 0 TrigSignatureMo... INFO HLT_2j35_L1J20 decisions 0 0 TrigSignatureMo... INFO HLT_e3_etcut_L1EM3 20 20 15 0 0 @@ -11,10 +11,10 @@ TrigSignatureMo... INFO HLT_e5_etcut_L1EM3 20 20 13 TrigSignatureMo... INFO HLT_e5_etcut_L1EM3 decisions 41 0 TrigSignatureMo... INFO HLT_e7_etcut_L1EM7 20 20 8 0 0 TrigSignatureMo... INFO HLT_e7_etcut_L1EM7 decisions 14 0 -TrigSignatureMo... INFO HLT_g10_etcut_L1EM7 20 20 8 8 8 -TrigSignatureMo... INFO HLT_g10_etcut_L1EM7 decisions 12 12 -TrigSignatureMo... INFO HLT_g15_etcut_L1EM12 20 20 5 5 5 -TrigSignatureMo... INFO HLT_g15_etcut_L1EM12 decisions 6 6 +TrigSignatureMo... INFO HLT_g10_etcut_L1EM7 20 20 8 0 0 +TrigSignatureMo... INFO HLT_g10_etcut_L1EM7 decisions 12 0 +TrigSignatureMo... INFO HLT_g15_etcut_L1EM12 20 20 5 0 0 +TrigSignatureMo... INFO HLT_g15_etcut_L1EM12 decisions 6 0 TrigSignatureMo... INFO HLT_j45_L1J20 20 20 0 0 0 TrigSignatureMo... INFO HLT_j45_L1J20 decisions 0 0 TrigSignatureMo... INFO HLT_j85_L1J20 20 20 0 0 0 diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoAlg.cxx b/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoAlg.cxx index 7846a1a55e0cdc270fcf6c44572c81512d160fb8..59728a21beeea065a9d05b4c7ab290e415f0185b 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoAlg.cxx +++ b/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoAlg.cxx @@ -40,10 +40,10 @@ namespace HLTTest { return StatusCode::SUCCESS; } - ATH_MSG_DEBUG( "Running with "<< previousDecisionsHandle->size() <<" implicit ReadHandles for previous decisions"); + ATH_MSG_DEBUG( "Running with "<< previousDecisionsHandle->size() <<" decisions from the input implicit ReadHandle"); auto recoInput = SG::makeHandle(m_recoInput, context); - ATH_MSG_DEBUG( "and with "<< recoInput->size() <<" reco inputs"); + ATH_MSG_DEBUG( " and with "<< recoInput->size() <<" reco inputs"); // new output decisions SG::WriteHandle<DecisionContainer> outputHandle = createAndStore(decisionOutput(), context ); @@ -58,7 +58,7 @@ namespace HLTTest { const FeatureOBJ* feature = *featureLink; featureFromDecision.push_back( feature); } - ATH_MSG_DEBUG("Found "<<featureFromDecision.size()<<" features "<<m_linkName.value() <<" mapped from previous decisions"); + ATH_MSG_DEBUG("Found "<<featureFromDecision.size()<<" features "<<m_linkName.value() <<" mapped from input decisions"); //map reco object and decision: find in reco obejct the initial RoI and map it to the correct decision size_t reco_counter = 0; @@ -110,10 +110,10 @@ namespace HLTTest { TrigCompositeUtils::DecisionIDContainer objDecisions; TrigCompositeUtils::decisionIDs( outh, objDecisions ); - ATH_MSG_DEBUG("Number of positive decisions for this input: " << objDecisions.size() ); + ATH_MSG_DEBUG("Number of positive decisions for this output: " << objDecisions.size() ); for ( TrigCompositeUtils::DecisionID id : objDecisions ) { - ATH_MSG_DEBUG( " --- found new decision " << HLT::Identifier( id ) ); + ATH_MSG_DEBUG( " --- found decision " << HLT::Identifier( id ) ); } } diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoTool.cxx b/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoTool.cxx index e3f0bf919a51ab90d2b588afbd5acdf01411bb06..8471ab52fd78d8da961679efea9b64dfff5f6569 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoTool.cxx +++ b/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoTool.cxx @@ -32,44 +32,35 @@ namespace HLTTest { } StatusCode TestHypoTool::decide( DecisionContainer* decisions ) const { - ATH_MSG_DEBUG( "Making new decisions " << name() ); + ATH_MSG_DEBUG( "Add decisionIDs to " << decisions->size() <<" output decisions" ); size_t counter = 0; for ( const auto d: *decisions ) { //get previous decisions ElementLinkVector<DecisionContainer> inputLinks = getLinkToPrevious(d); - ATH_MSG_DEBUG("Got "<<inputLinks.size()<<" previous decisions"); + ATH_MSG_DEBUG("Decision "<< counter <<": Got "<<inputLinks.size()<<" input decisions"); for (const auto previousDecisions: inputLinks){ TrigCompositeUtils::DecisionIDContainer objDecisions; TrigCompositeUtils::decisionIDs( *previousDecisions, objDecisions ); - ATH_MSG_DEBUG("Number of previous decisions ID for input "<< counter <<"= " << objDecisions.size() ); + ATH_MSG_DEBUG("Number of decision-IDs for input "<< counter <<" is: " << objDecisions.size() ); - for ( TrigCompositeUtils::DecisionID id : objDecisions ) { - ATH_MSG_DEBUG( " -- found decision " << HLT::Identifier( id ) ); - } - - const auto it = find(objDecisions.begin(), objDecisions.end(), m_decisionId); - if (it != objDecisions.end()){ - - const auto feature = d->objectLink<xAOD::TrigCompositeContainer>( "feature" ); - // Used to fetch m_linkName.value() but this was refactored to "feature" + if ( TrigCompositeUtils::passed( m_decisionId.numeric(), objDecisions ) ) { + const auto feature = d->objectLink<xAOD::TrigCompositeContainer>( "feature" ); if ( not feature.isValid() ) { ATH_MSG_ERROR( " Can not find reference to the object from the decision" ); return StatusCode::FAILURE; } const float v = (*feature)->getDetail<float>( m_property ); if ( v > m_threshold ) { // actual cut will be more complex of course - ATH_MSG_DEBUG( " threshold " << m_threshold << " passed by value: " << v ); + ATH_MSG_DEBUG( m_threshold << " passed by value: " << v << ". Adding "<< m_decisionId <<" to output" ); addDecisionID( m_decisionId, d ); } else { - ATH_MSG_DEBUG( " threshold " << m_threshold << " not passed by value " << v ); + ATH_MSG_DEBUG( m_threshold << " not passed by value " << v ); } - } else { // it == objDecisions.end() - - ATH_MSG_DEBUG("No Input decisions requested by active chain "<< m_decisionId); - + } else { + ATH_MSG_DEBUG("No Input decisions matched"); } counter++; } diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.cxx b/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.cxx index 69c0835d28e55737af0b190356146eebcf10a8bc..4644a9421195cc7672f4e489a47c29d12a3ecd38 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.cxx +++ b/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.cxx @@ -50,20 +50,22 @@ namespace HLTTest { // loop over output decisions, navigate to inputs for (auto outputHandle: outputHandles) { if( not outputHandle.isValid() ) { - ATH_MSG_DEBUG( "Got no decisions from output "<< outputHandle.key() << " because handle not valid"); + ATH_MSG_DEBUG( "TestInputMaker: Got no decisions from output "<< outputHandle.key() << " because handle not valid"); continue; } if( outputHandle->size() == 0){ // input filtered out - ATH_MSG_ERROR( "Got no decisions from output "<< outputHandle.key()<<": handle is valid but container is empty. Is this expected?"); + ATH_MSG_ERROR( "TestInputMaker: Got no decisions from output "<< outputHandle.key()<<": handle is valid but container is empty. Is this expected?"); return StatusCode::FAILURE; } - ATH_MSG_DEBUG( "Got output "<< outputHandle.key()<<" with " << outputHandle->size() << " elements" ); + ATH_MSG_DEBUG( "TestInputMaker: Got output "<< outputHandle.key()<<" with " << outputHandle->size() << " elements" ); // loop over output decisions in container of outputHandle, follow link to inputDecision + int count =0; for (const auto outputDecision : *outputHandle){ const ElementLinkVector<DecisionContainer> inputLinks = getLinkToPrevious(outputDecision); + ATH_MSG_DEBUG("Element "<< count << " has " << inputLinks.size() <<" previous links"); for (const auto input: inputLinks){ - ATH_MSG_DEBUG( "followed seed link to input "<< input.key() ); + ATH_MSG_DEBUG( " -- Got seed link to input "<<input.dataID() <<" and index "<< input.index() ); const Decision* inputDecision = *input; const auto roiELInfo = TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>( inputDecision, m_roisLink.value()); CHECK( roiELInfo.isValid() ); @@ -75,7 +77,7 @@ namespace HLTTest { // link input reco object to outputDecision const auto featureLink = featureLinkInfo.link; const FeatureOBJ* feature = *featureLink; - ATH_MSG_DEBUG(" Found feature " <<m_linkName.value() ); + ATH_MSG_DEBUG(" -- Found feature " <<m_linkName.value() <<":" << **featureLink); // merge reco outputs that are linked to the same feature (RoI): this avoids processing the same RoI from TC decisions from different chains @@ -86,13 +88,14 @@ namespace HLTTest { auto newFeature = new xAOD::TrigComposite; reco_output->push_back(newFeature); newFeature->setObjectLink(m_linkName.value(), featureLink); - ATH_MSG_DEBUG(" Added " <<m_linkName.value() << " and " << m_roisLink.value() << " to reco object"); + ATH_MSG_DEBUG(" -- Added " <<m_linkName.value() << " and " << m_roisLink.value() << " to reco object"); } }//loop over previous inputs // For early tests, create TC, link to RoiD, push back onto TCC. // Later will output RoID collection directly via tool. - } // loop over decisions - } // loop over input keys + count++; + } // loop over decisions + } // loop over output keys // Finally, record output ATH_MSG_DEBUG("Produced "<<reco_output->size() <<" reco objects and stored in "<<m_recoOutput); diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py index a55d488511249d1a4bcfd3f9357b3a9c1896d480..fe313f6e534ca06ab86dc3892fc80bbf4425b854 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py @@ -33,14 +33,16 @@ def collectHypos( steps ): hypos[stepSeq.name()].append( alg ) else: __log.verbose("Not a hypo" + alg.name()) + return hypos def __decisionsFromHypo( hypo ): """ return all chains served by this hypo and the key of produced decision object """ + from DecisionHandling.TrigCompositeUtils import isLegId if hypo.getType() == 'ComboHypo': - return hypo.MultiplicitiesMap.keys(), hypo.HypoOutputDecisions[0] + return [key for key in hypo.MultiplicitiesMap.keys() if not isLegId(key)], hypo.HypoOutputDecisions[0] else: # regular hypos - return [ t.name() for t in hypo.HypoTools ], hypo.HypoOutputDecisions + return [ t.name() for t in hypo.HypoTools if not isLegId(t.name())], hypo.HypoOutputDecisions def collectViewMakers( steps ): @@ -65,7 +67,7 @@ def collectFilters( steps ): The logic is simpler as all filters are grouped in step filter sequences Returns map: step name -> list of all filters of that step """ - __log.info("Collecting hypos") + __log.info("Collecting filters") from collections import defaultdict filters = defaultdict( list ) @@ -164,9 +166,9 @@ def triggerSummaryCfg(flags, hypos): else: for chainName, chainDict in TriggerConfigHLT.dicts().iteritems(): if chainName not in allChains: - __log.debug("The chain %s is not mentiond in any step", chainName) + __log.warn("The chain %s is not mentiond in any step", chainName) # TODO once sequences available in the menu we need to crosscheck it here - assert len(chainDict['chainParts']) == 1, "Chains w/o the steps can not have mutiple parts in chainDict, it makes no sense" + assert len(chainDict['chainParts']) == 1, "Chains w/o the steps can not have mutiple parts in chainDict, it makes no sense: %s"%chainName allChains[chainName] = mapThresholdToL1DecisionCollection( chainDict['chainParts'][0]['L1threshold'] ) __log.info("The chain %s final decisions will be taken from %s", chainName, allChains[chainName] ) @@ -201,7 +203,7 @@ def triggerMonitoringCfg(flags, hypos, filters, l1Decoder): stepDecisionKeys.append( hypoOutputKey ) allChains.update( hypoChains ) - dcTool = DecisionCollectorTool( "DecisionCollector" + stepName, Decisions=stepDecisionKeys ) + dcTool = DecisionCollectorTool( "DecisionCollector" + stepName, Decisions=list(set(stepDecisionKeys)) ) __log.info( "The step monitoring decisions in " + dcTool.name() + " " +str( dcTool.Decisions ) ) mon.CollectorTools += [ dcTool ] @@ -395,8 +397,10 @@ def triggerPOOLOutputCfg(flags, decObj, decObjHypoOut, edmSet): # Produce the trigger bits from TrigOutputHandling.TrigOutputHandlingConfig import TriggerBitsMakerToolCfg from TrigDecisionMaker.TrigDecisionMakerConfig import TrigDecisionMakerMT + bitsmaker = TriggerBitsMakerToolCfg() decmaker = TrigDecisionMakerMT('TrigDecMakerMT') + decmaker.BitsMakerTool = bitsmaker acc.addEventAlgo( decmaker ) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bphysics/BphysicsDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bphysics/BphysicsDef.py index 906e7049b349eb7c55c8d1baabaff08eb5134f7e..23a25fa3fe65e8ca66711e7d07bc81316962bdcf 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bphysics/BphysicsDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bphysics/BphysicsDef.py @@ -57,7 +57,8 @@ class BphysicsChainConfiguration(MuonChainConfiguration): for mu_step_level, bphys_step_level in zip(muon_steps, bphys_steps): for step in mu_step_level: - chainSteps += [step] + chainstep = getattr(self, step)() + chainSteps += [chainstep] for step in bphys_step_level: chainSteps += [step] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/GenerateJetChainDefs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/GenerateJetChainDefs.py index 139dd586537e2a5cbfff5d2ea6159b2a1a888a17..79129bd54c1b60787237fcd7cf0c00764c813ec4 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/GenerateJetChainDefs.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/GenerateJetChainDefs.py @@ -30,13 +30,11 @@ def generateChainConfigs( chainDict ): # FIXME: Check that all jet reco configs are identical if len(listOfChainDefs)>1: # Add reco consistency checking between all - log.warning("Multiple jet chainParts detected; reco consistency checks not yet implemented") + log.warning("Multiple jet chainParts detected; reco consistency checks not yet implemented. Forcing chain to be single-object") theChainDef = listOfChainDefs[0] #needs to be implemented properly else: theChainDef = listOfChainDefs[0] - log.debug("theChainDef %s" , theChainDef) - return theChainDef diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py index c208dcaae0c7b32686ee0d77ab0d6b34471a4edb..ea041a5f4697fcea5bd606996e06e5fd51ffebab 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py @@ -23,7 +23,7 @@ class JetChainConfiguration(ChainConfigurationBase): # Assemble the chain depending on information from chainName # ---------------------- def assembleChain(self): - log.debug("Assembling chain for " + self.chainName) + log.debug("Assembling chain " + self.chainName) # -------------------- # define here the names of the steps and obtain the chainStep configuration diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainDictTools.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainDictTools.py index 3db77148645d8f7498a6af25164c56ff157b8969..764d1d5cdab9e163037781b28b286961afcdfa4c 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainDictTools.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainDictTools.py @@ -98,6 +98,22 @@ def splitChainDict(chainDict): +def splitChainInDict(chainName): + from TriggerMenuMT.HLTMenuConfig.Menu.TriggerConfigHLT import TriggerConfigHLT + from DecisionHandling.TrigCompositeUtils import legName + chainDict = TriggerConfigHLT.getChainDictFromChainName(chainName) + if len(chainDict['chainParts']) ==1: + return [chainDict] + + listOfChainDicts = [] + for count, chainDictPart in enumerate(chainDict['chainParts']): + onePartChainDict = deepcopy( chainDict ) + onePartChainDict['chainParts'] = [ chainDictPart ] + onePartChainDict['chainName'] = legName(chainName, count) + listOfChainDicts += [onePartChainDict] + return listOfChainDicts + + def setupTopoStartFrom(topoThresholds, theChainDef): from TrigGenericAlgs.TrigGenericAlgsConf import MergeTopoStarts diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py index 658f7694886e6aa592766da44593772b08bd1b70..c56c15b1824fbda8c072411aa6b7a97eebaa188c 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py @@ -64,8 +64,9 @@ def mergeParallel(chainDefList, offset): combinedChainDef = Chain(chainName, ChainSteps=combChainSteps, L1Thresholds=l1Thresholds) + log.debug("Merged chain %s with these steps:", chainName) for step in combinedChainDef.steps: - log.debug(' Step %s', step) + log.debug(' %s', step) return combinedChainDef @@ -83,12 +84,13 @@ def makeChainSteps(steps): if step is None: continue log.debug(" step %s, multiplicity = %s", step.name, str(step.multiplicity)) - log.debug(" with sequences = %s", ' '.join(map(str, [seq.name for seq in step.sequences]))) + if len(step.sequences): + log.debug(" with sequences = %s", ' '.join(map(str, [seq.name for seq in step.sequences]))) # this function only works if the input chains are single-object chains (one menu seuqnce) if len(step.sequences) > 1: log.error("More than one menu sequence found in combined chain!!") - seq = step.sequences[0] + currentStep = step.name stepNameParts = currentStep.split('_') @@ -96,8 +98,10 @@ def makeChainSteps(steps): stepNumber = stepNameParts[0] # the step naming for combined chains needs to be revisted!! - stepName += '_' +step.name - stepSeq.append(seq) + stepName += '_' +step.name + if len(step.sequences): + seq = step.sequences[0] + stepSeq.append(seq) # set the multiplicity of all the legs stepMult.append(sum(step.multiplicity)) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/DictFromChainName.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/DictFromChainName.py index 74740739e1147c6e747cbb7f390ba8fbba0a72bb..45c566fb4b3dc6e567d91ec5ac896419ba9973cc 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/DictFromChainName.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/DictFromChainName.py @@ -301,9 +301,6 @@ def analyseChainName(chainName, L1thresholds, L1item): chainpartsNoL1 = chainparts - - log.debug('chainparts %s', chainparts) - parts=chainpartsNoL1.split('_') parts=filter(None,parts) @@ -390,8 +387,8 @@ def analyseChainName(chainName, L1thresholds, L1item): # ---- remove properties that aren't allowed in the chain properties for a given siganture ---- forbiddenProperties = set(chainProperties.keys()) - set(allowedSignaturePropertiesAndValues.keys()) - log.debug('%s', set(chainProperties.keys())) - log.debug('%s', set(allowedSignaturePropertiesAndValues.keys())) + log.debug('chainPropertie:s %s', set(chainProperties.keys())) + log.debug('allowedSignaturePropertiesAndValues: %s', set(allowedSignaturePropertiesAndValues.keys())) for fb in forbiddenProperties: forbiddenValue = chainProperties.pop(fb) assert forbiddenValue == '', "Property {} not allowed for signature '{}', but specified '{}'".format (fb, chainProperties['signature'], forbiddenValue) @@ -410,8 +407,6 @@ def analyseChainName(chainName, L1thresholds, L1item): #genchainDict['signature'] = allChainProperties[0]['signature'] - log.debug('genchainDict that is passed as Final dict %s', genchainDict) - return genchainDict @@ -427,8 +422,6 @@ def dictFromChainName(chainInfo): but for nwo plain chain name is also supported """ - log.debug("chainInfo %s", chainInfo) - # these if/elif/else statements are due to temporary development from TrigConfHLTData.HLTUtils import string2hash @@ -471,14 +464,15 @@ def dictFromChainName(chainInfo): chainDict['topoStartFrom'] = topoStartFrom chainDict['chainNameHash'] = string2hash(chainDict['chainName']) - log.debug('Setting chain multiplicities') + allChainMultiplicities = getChainMultFromDict(chainDict) chainDict['chainMultiplicities'] = allChainMultiplicities - - if log.isEnabledFor(logging.DEBUG): - import pprint - pp = pprint.PrettyPrinter(indent=4, depth=8) - log.debug('SUPER FINAL dictionary: %s', pp.pformat(chainDict)) + log.debug('Setting chain multiplicities: %s ', allChainMultiplicities) + + ## if log.isEnabledFor(logging.DEBUG): + ## import pprint + ## pp = pprint.PrettyPrinter(indent=4, depth=8) + ## log.debug('SUPER FINAL dictionary: %s', pp.pformat(chainDict)) return chainDict diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py index e43f500f8a082ff69ea8025d846c593a7b8ba0c0..3396996a5886092fc067d76dab902bb97766c15f 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py @@ -164,16 +164,16 @@ class GenerateMenuMT(object): chainCounter = 0 for chain in chainsInMenu: - log.debug("Currently processing chain: %s ", chain) + log.debug("Now processing chain: %s ", chain) chainDict = dictFromChainName(chain) chainCounter += 1 chainDict['chainCounter'] = chainCounter - log.debug("Next: getting chain configuration for chain %s ", chain) + log.debug("Next: getting chain configuration for chain %s ", chain.name) chainConfig= self.__generateChainConfig(chainDict) - log.debug("Finished with retrieving chain configuration for chain %s", chain) + log.debug("Finished with retrieving chain configuration for chain %s", chain.name) TriggerConfigHLT.registerChain( chainDict, chainConfig ) @@ -200,7 +200,6 @@ class GenerateMenuMT(object): log.debug("Adding %s chains to the list of chains to be configured", sig) chains+= eval('TriggerFlags.' + sig + 'Slice.signatures()') self.signaturesToGenerate.append(sig) - log.debug('Signatures to generate %s', sig) else: log.debug('Signature %s is not switched on (no chains in menu or disabled by flag)', sig) @@ -209,10 +208,10 @@ class GenerateMenuMT(object): if len(chains) == 0: log.warning("There seem to be no chains in the menu - please check") else: - log.debug("The following chains were found in the menu %s", chains) - - return chains - + log.debug("The following chains were found in the menu: \n %s", '\n '.join(map(str,(chains) ))) + + return chains + def __generateChainConfig(self, mainChainDict): """ @@ -220,7 +219,6 @@ class GenerateMenuMT(object): """ # check if all the signature files can be imported files can be imported for sig in self.signaturesToGenerate: - log.debug("current sig %s", sig) try: if eval('self.do' + sig + 'Chains'): if sig == 'Egamma': @@ -265,7 +263,7 @@ class GenerateMenuMT(object): chainConfigs = None currentSig = chainDict['signature'] chainName = chainDict['chainName'] - log.debug('Checking chainDict for chain %s' , currentSig) + log.debug('Checking chainDict for chain %s in signature %s' , chainName, currentSig) sigFolder = '' if currentSig == 'Electron' or currentSig == 'Photon': @@ -276,23 +274,21 @@ class GenerateMenuMT(object): sigFolder = currentSig if currentSig in self.availableSignatures and currentSig != 'Combined': - try: - log.debug("Trying to get chain config for %s", currentSig) - functionToCall ='TriggerMenuMT.HLTMenuConfig.' + sigFolder + '.Generate' + currentSig + 'ChainDefs.generateChainConfigs(chainDict)' + try: + log.debug("Trying to get chain config for %s in folder %s", currentSig, sigFolder) + functionToCall ='TriggerMenuMT.HLTMenuConfig.' + sigFolder + '.Generate' + currentSig + 'ChainDefs.generateChainConfigs(chainDict)' chainConfigs = eval(functionToCall) except RuntimeError: log.exception( 'Problems creating ChainDef for chain\n %s ', chainName) continue else: log.error('Chain %s ignored - Signature not available', chainDict['chainName']) - - log.debug('ChainConfigs %s ', chainConfigs) listOfChainConfigs.append(chainConfigs) - if log.isEnabledFor(logging.DEBUG): - import pprint - pp = pprint.PrettyPrinter(indent=4, depth=8) - log.debug('mainChainDict dictionary: %s', pp.pformat(mainChainDict)) + ## if log.isEnabledFor(logging.DEBUG): + ## import pprint + ## pp = pprint.PrettyPrinter(indent=4, depth=8) + ## log.debug('mainChainDict dictionary: %s', pp.pformat(mainChainDict)) # This part is to deal with combined chains between different signatures @@ -319,6 +315,7 @@ class GenerateMenuMT(object): from TriggerMenuMT.HLTMenuConfig.CommonSequences.EventBuildingSequenceSetup import addEventBuildingSequence addEventBuildingSequence(theChainConfig, eventBuildType) + log.debug('ChainConfigs %s ', theChainConfig) return theChainConfig @memoize diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py index 17200e6cd20342a66f75dcdf30148804ac92196d..bdf7fc4cce891fa85b1672d6ee238f7047dd73cf 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py @@ -30,21 +30,19 @@ from AthenaCommon.CFElements import parOR, seqAND, seqOR from AthenaCommon.AlgSequence import dumpSequence from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import stepCF_DataFlow_to_dot, stepCF_ControlFlow_to_dot, all_DataFlow_to_dot from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming -from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import ChainStep +#from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import ChainStep + -import copy from AthenaCommon.Logging import logging log = logging.getLogger( __name__ ) - - #### Here functions to create the CF tree from CF configuration objects def makeSummary(name, flatDecisions): """ Returns a TriggerSummaryAlg connected to given decisions""" from DecisionHandling.DecisionHandlingConfig import TriggerSummaryAlg summary = TriggerSummaryAlg( name ) summary.InputDecision = "L1DecoderSummary" - summary.FinalDecisions = flatDecisions + summary.FinalDecisions = list(set(flatDecisions)) return summary @@ -100,6 +98,7 @@ def createCFTree(CFseq): name = ath_sequence.name() if name in already_connected: log.debug("AthSequencer %s already in the Tree, not added again",name) + continue else: already_connected.append(name) stepReco += ath_sequence @@ -163,7 +162,6 @@ def makeHLTTree(newJO=False, triggerConfigHLT = None): # TODO - check we are not running things twice. Once here and once in TriggerConfig.py - # add signature monitor from TriggerJobOpts.TriggerConfig import collectHypos, collectFilters, collectViewMakers, collectDecisionObjects,\ triggerMonitoringCfg, triggerSummaryCfg, triggerMergeViewsAndAddMissingEDMCfg, collectHypoDecisionObjects from AthenaConfiguration.AllConfigFlags import ConfigFlags @@ -337,24 +335,23 @@ def createDataFlow(chains, allDicts): lastCFseq = None for nstep in range(0,len(chain.steps)): -# stepCF_name = CFNaming.stepName(nstep) chain_step=chain.steps[nstep] log.debug("\n************* Start connecting step %d %s for chain %s", nstep+1, chain_step.name, chain.name) filter_input =[] if nstep == 0: # L1 seeding - seeds = chain.group_seed + seeds = chain.L1decisions filter_input.extend( seeds ) log.debug("Found these seeds from the chain: %s", seeds) log.debug("Seeds added; having in the filter now: %s", filter_input) else: for out in lastCFseq.decisions: filter_input.append(out) - log.debug("Connect to previous sequence through these filter inputs: %s", filter_input) + log.debug("Connect to previous sequence through these filter inputs: %s", filter_input) - if len(filter_input) == 0 or (len(filter_input) != 1 and not chain_step.isCombo): - log.error("ERROR: Filter for step %s has %d inputs! One is expected", chain_step.name, len(filter_input)) + if len(filter_input) == 0 : + log.error("ERROR: Filter for step %s has %d inputs! At least one is expected", chain_step.name, len(filter_input)) # make one filter per step: @@ -365,75 +362,34 @@ def createDataFlow(chains, allDicts): filter_output.append( CFNaming.filterOutName(filter_name, i)) (foundFilter, foundCFSeq) = findCFSequences(filter_name, CFseq_list[nstep]) - log.debug("Found %d CF sequences with base filter name %s", foundFilter, filter_name) + log.debug("Found %d CF sequences with filter name %s", foundFilter, filter_name) + # add error if more than one if not foundFilter: sfilter = buildFilter(filter_name, filter_input) - CF_seq = CFSequence( ChainStep=chain_step, FilterAlg=sfilter, connections=filter_output) + CF_seq = CFSequence( ChainStep=chain_step, FilterAlg=sfilter) + CF_seq.connect(filter_output) CFseq_list[nstep].append(CF_seq) lastCFseq=CF_seq else: - count_fil=0 - # find correspoding CFsequence - for cfseq in foundCFSeq: # all the CFseq using the same filter - sfilter=cfseq.filter - #exactly same filter with the same inputs (same gropu of chains); - already_connected = [x for x in filter_output if x in cfseq.connections] - if len(already_connected): - chain.steps[nstep] = cfseq.step # reuse the same step - chain_step=chain.steps[nstep] - lastCFseq=cfseq #reuse the CFseq - count_fil =0 - break - else: - count_fil+=1 - - # if we have the same filter, with differnt inputs: - # add inputs/output to filter - # deepcopy all the seqeunces - # duplicate the Hypo with differnt name - # create new ChainStep and replace in the list - # create a new CFsequence with different name - if (count_fil): - log.debug("Adding more inputs/outputs to filter %s", filter_name) - for i in filter_input: + if len(foundCFSeq) >1: + log.error("Found more than one seuqences containig this filter %s", filter_name) + + sfilter = foundCFSeq[0].filter + for i in filter_input: sfilter.addInput(i) - for i in filter_output: + for i in filter_output: sfilter.addOutput(i) - - log.debug("Duplicating the Step %s", chain_step.name) - new_sequences = [] - for sequence in chain_step.sequences: - new_sequence=copy.deepcopy(sequence) - new_sequence.resetConnections() - new_sequence.name = "%s_%d"%(sequence.name, count_fil) - if type(sequence.hypo) is list: - new_hypoAlg = [] - for hp in sequence.hypo: - oldhypo=hp.Alg - newHypoAlgName = "%s_%d"%(oldhypo.name(),count_fil) - new_hypoAlg.append( oldhypo.clone(newHypoAlgName) ) - new_sequence.replaceHypoForDuplication(new_hypoAlg) - new_sequences.append(new_sequence) - else: - oldhypo=sequence.hypo.Alg - newHypoAlgName = "%s_%d"%(oldhypo.name(),count_fil) - new_hypoAlg=oldhypo.clone(newHypoAlgName) - new_sequence.replaceHypoForDuplication(new_hypoAlg) - new_sequences.append(new_sequence) - - new_chain_step_name="%s_%d"%(chain_step.name, count_fil) - # making new ChainStep - new_chain_step = ChainStep(new_chain_step_name, Sequences=new_sequences, multiplicity=chain_step.multiplicity) - chain.steps[nstep] = new_chain_step # replace chain step - chain_step = chain.steps[nstep] - - new_CF_seq = CFSequence( ChainStep=new_chain_step, FilterAlg=sfilter, connections=filter_output) - CFseq_list[nstep].append(new_CF_seq) - lastCFseq=new_CF_seq - - - sfilter.setChains(chain.name) - log.debug("Adding chain %s to %s", chain.name,sfilter.Alg.name()) + + lastCFseq=foundCFSeq[0] + lastCFseq.connect(filter_output) + + + + # add chains to the filter: + chainLegs = chain.getChainLegs() + for leg in chainLegs: + sfilter.setChains(leg) + log.debug("Adding chain %s to %s", leg,sfilter.Alg.name()) log.debug("Now Filter has chains: %s", sfilter.getChains()) if chain_step.isCombo: @@ -444,21 +400,20 @@ def createDataFlow(chains, allDicts): if len(chain.steps) == nstep+1: log.debug("Adding finalDecisions for chain %s at step %d:", chain.name, nstep+1) - for seq in chain_step.sequences: - finalDecisions[nstep].extend(seq.outputs) - log.debug(seq.outputs) - + for dec in lastCFseq.decisions: + finalDecisions[nstep].append(dec) + log.debug(dec) + #end of loop over steps log.info("\n Built CF for chain %s with %d steps: \n - %s ", chain.name,len(chain.steps),'\n - '.join(map(str, [{step.name:step.multiplicity} for step in chain.steps]))) #end of loop over chains # decode and attach HypoTools: - #must be done after the creation of the CFsequences, since HypoAlgs are duplicated in the previous loop for chain in chains: - chain.decodeHypoToolConfs(allDicts) - + chain.decodeHypoToolConfs()#allDicts) + log.debug("End of createDataFlow for %d chains and total %d steps", len(chains), NSTEPS) return (finalDecisions, CFseq_list) @@ -516,7 +471,7 @@ def generateDecisionTreeOld(HLTNode, chains, allChainDicts): ## Fill chain steps matrix for chain in chains: - chain.decodeHypoToolConfs(allChainDicts) + chain.decodeHypoToolConfs()#allChainDicts) for stepNumber, chainStep in enumerate(chain.steps): chainName = chainStep.name.split('_')[0] chainStepsMatrix[stepNumber][chainName].append(chain) @@ -558,7 +513,7 @@ def generateDecisionTreeOld(HLTNode, chains, allChainDicts): firstChain = chainsInCell[0] if nstep == 0: - filter_input = firstChain.group_seed + filter_input = firstChain.L1decisions else: filter_input = [] for sequence in firstChain.steps[nstep - 1].sequences: @@ -615,7 +570,6 @@ def findFilter(filter_name, cfseqList): """ log.debug( "findFilter: filter name %s", filter_name ) foundFilters = [cfseq for cfseq in cfseqList if filter_name in cfseq.filter.Alg.name()] - #foundFilters = [cfseq.filter for cfseq in cfseqList if filter_name in cfseq.filter.Alg.name()] if len(foundFilters) > 1: log.error("found %d filters with name %s", len( foundFilters ), filter_name) @@ -630,9 +584,7 @@ def findCFSequences(filter_name, cfseqList): searches for a filter, with given name, in the CF sequence list of this step """ log.debug( "findCFSequences: filter base name %s", filter_name ) - foundFilters = [cfseq for cfseq in cfseqList if filter_name in cfseq.filter.Alg.name()] - #foundFilters = [cfseq.filter for cfseq in cfseqList if filter_name in cfseq.filter.Alg.name()] - + foundFilters = [cfseq for cfseq in cfseqList if filter_name == cfseq.filter.Alg.name()] log.debug("found %d filters with base name %s", len( foundFilters ), filter_name) found=len(foundFilters) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py index 600456a2936c00ee1680aa55b1a4174ea4fa45ae..447afb87b97177b977f8c091ae04a703248e7e6b 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py @@ -38,6 +38,7 @@ def generateDecisionTree(chains): printStepsMatrix(chainStepsMatrix) allCFSequences = [] + ## Matrix with steps lists generated. Creating filters for each cell for nstep in sorted(chainStepsMatrix.keys()): @@ -56,6 +57,7 @@ def generateDecisionTree(chains): CFSequences = [] + chainCounter=0 for chainName in chainStepsMatrix[nstep]: chainsInCell = chainStepsMatrix[nstep][chainName] @@ -65,9 +67,11 @@ def generateDecisionTree(chains): firstChain = chainsInCell[0] if nstep == 0: - filter_input = firstChain.group_seed + filter_input = firstChain.L1decisions else: - filter_input = [output for sequence in firstChain.steps[nstep - 1].sequences for output in sequence.outputs] + #tmp FP replacement, but it should not work properly + #filter_input = [output for sequence in firstChain.steps[nstep - 1].sequences for output in sequence.outputs] + filter_input = [output for output in allCFSequences[nstep - 1][chainCounter].decisions] chainStep = firstChain.steps[nstep] @@ -90,7 +94,8 @@ def generateDecisionTree(chains): for chain in chainsInCell: step = chain.steps[nstep] - CFSeq = CFSequence(step, sfilter, connections=filter_output) + CFSeq = CFSequence(step, sfilter) + CFSeq.connect(filter_output) if not CFSequenceAdded: CFSequences.append(CFSeq) CFSequenceAdded = True @@ -104,9 +109,12 @@ def generateDecisionTree(chains): sfilter.setChains(chain.name) recoAcc.merge(stepsAcc, sequenceName = viewWithFilter.getName()) + chainCounter+=1 + + for sequence in CFSequences: + stepDecisions += sequence.decisions + - for sequence in chainStep.sequences: - stepDecisions += sequence.outputs acc.merge(filterAcc, sequenceName = mainSequenceName) acc.merge(recoAcc, sequenceName = mainSequenceName) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py index 65ad231353f393c84adad62e8e812337243cb70c..01950d3d3ee67d6f5d5ad6a32805f8e27e00e950 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py @@ -5,6 +5,15 @@ from AthenaCommon.AlgSequence import AthSequencer from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import isHypoBase, isInputMakerBase, isFilterAlg import itertools +DrawHypoTools=True + +def drawHypoTools(file, all_hypos): + all_hypos=list(set(all_hypos)) + for hp in all_hypos: + for hypotool in hp.tools: + file.write(" %s[fillcolor=yellow,style=filled,shape= Mdiamond]\n"%(hypotool)) + file.write(" %s -> %s [style=dashed, color=grey]\n"%(hp.Alg.name(), hypotool)) + def algColor(alg): """ Set given color to Alg type""" if isHypoBase(alg): @@ -59,8 +68,8 @@ def stepCF_ControlFlow_to_dot(stepCF): with open('%s.CF.dot'%stepCF.name(), mode="wt") as file: #strict - file.write( 'digraph step {\n'\ - +'\n'\ + file.write( 'digraph step { \n'\ + +' concentrate=true;\n'\ +' rankdir="LR";\n' +' node [ shape=polygon, fontname=Helvetica ]\n'\ +' edge [ fontname=Helvetica ]\n' @@ -80,8 +89,8 @@ def stepCF_ControlFlow_to_dot(stepCF): def all_DataFlow_to_dot(name, step_list): with open('%s.dot'%(name), mode="wt") as file: - file.write( 'digraph step {\n'\ - +'\n'\ + file.write( 'digraph step { \n'\ + +' concentrate=true;\n'\ +' rankdir="LR";\n' +' node [ shape=polygon, fontname=Helvetica ]\n'\ +' edge [ fontname=Helvetica ]\n' @@ -89,6 +98,7 @@ def all_DataFlow_to_dot(name, step_list): nstep=1 last_step_hypoNodes=[] + all_hypos=[] for cfseq_list in step_list: # loop over steps step_connections = [] @@ -99,6 +109,7 @@ def all_DataFlow_to_dot(name, step_list): file.write(" %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.name(),algColor(cfseq.filter.Alg))) step_connections.append(cfseq.filter) file.write( '\n subgraph cluster_%s {\n'%(cfseq.step.name)\ + +' concentrate=true;\n' +' node [color=white style=filled]\n'\ +' style=filled\n'\ +' color=lightgrey\n'\ @@ -128,10 +139,12 @@ def all_DataFlow_to_dot(name, step_list): for hp in menuseq.hypo: cfseq_algs.append(hp) file.write(" %s[color=%s]\n"%(hp.Alg.name(), algColor(hp.Alg))) + all_hypos.append(hp) else: cfseq_algs.append(menuseq.hypo) file.write(" %s[color=%s]\n"%(menuseq.hypo.Alg.name(), algColor(menuseq.hypo.Alg))) - if not cfseq.step.isCombo: + all_hypos.append(menuseq.hypo) + if not cfseq.step.isCombo: if type(menuseq.hypo) is list: last_step_hypoNodes.append(menuseq.hypo[-1]) else: @@ -146,7 +159,7 @@ def all_DataFlow_to_dot(name, step_list): file.write(' }\n') file.write(findConnections(cfseq_algs)) file.write('\n') - + file.write(findConnections(step_connections)) nstep+=1 @@ -157,20 +170,22 @@ def all_DataFlow_to_dot(name, step_list): def stepCF_DataFlow_to_dot(name, cfseq_list): with open( '%s.DF.dot'%name, mode="wt" ) as file: #strict - file.write( 'digraph step {\n'\ - +'\n'\ + file.write( 'digraph step { \n'\ + +' concentrate=true; \n'\ +' rankdir="LR";\n' +' node [ shape=polygon, fontname=Helvetica ]\n'\ +' edge [ fontname=Helvetica ]\n' +' %s [shape=Mdiamond]\n'%name) + all_hypos = [] for cfseq in cfseq_list: file.write(" %s[fillcolor=%s style=filled]\n"%(cfseq.filter.Alg.name(),algColor(cfseq.filter.Alg))) for inp in cfseq.filter.getInputList(): file.write(addConnection(name, cfseq.filter.Alg.name(), inp)) file.write( '\n subgraph cluster_%s {\n'%(cfseq.step.name)\ + +' concentrate=true;\n' +' node [color=white style=filled]\n'\ +' style=filled\n'\ +' color=lightgrey\n'\ @@ -180,11 +195,11 @@ def stepCF_DataFlow_to_dot(name, cfseq_list): cfseq_algs = [] cfseq_algs.append(cfseq.filter) - for menuseq in cfseq.step.sequences: - if cfseq.step.isCombo: - menuseq.reuse=True # do not draw combo reco sequence - else: - menuseq.reuse=False + ## for menuseq in cfseq.step.sequences: + ## if cfseq.step.isCombo: + ## menuseq.reuse=True # do not draw combo reco sequence + ## else: + ## menuseq.reuse=False for menuseq in cfseq.step.sequences: cfseq_algs.append(menuseq.maker) @@ -197,10 +212,11 @@ def stepCF_DataFlow_to_dot(name, cfseq_list): for hp in menuseq.hypo: cfseq_algs.append(hp) file.write(" %s[color=%s]\n"%(hp.Alg.name(), algColor(hp.Alg))) + all_hypos.append(hp) else: cfseq_algs.append(menuseq.hypo) file.write(" %s[color=%s]\n"%(menuseq.hypo.Alg.name(), algColor(menuseq.hypo.Alg))) - + all_hypos.append(menuseq.hypo) #combo if cfseq.step.isCombo: @@ -211,6 +227,9 @@ def stepCF_DataFlow_to_dot(name, cfseq_list): file.write(findConnections(cfseq_algs)) file.write('\n') + + if DrawHypoTools: + drawHypoTools(file, all_hypos) file.write( '}') file.close() @@ -277,7 +296,6 @@ def getValuesProperties(node): values.append(cval) else: continue - #getattr(alg, prop)) return set(values) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py index 5160e876853568506064e9eb2779e2a50499aa5f..98fb46c6ecfe9947b6e29f7d1121350c423cd8e5 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py @@ -42,7 +42,7 @@ def setupMenu(): ChainProp(name='HLT_mu20_ivar_L1MU6', groups=SingleMuonGroup), ChainProp(name='HLT_mu6_ivarmedium_L1MU6', groups=SingleMuonGroup), - ChainProp(name='HLT_mu6_mu6noL1_L1MU6', l1SeedThresholds=['MU6',''], groups=MultiMuonGroup), +# ChainProp(name='HLT_mu6_mu6noL1_L1MU6', l1SeedThresholds=['MU6',''], groups=MultiMuonGroup), ChainProp(name='HLT_mu6_msonly_L1MU6', groups=SingleMuonGroup), ChainProp(name='HLT_2mu6_10invm70_L1MU6', groups=SingleMuonGroup), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py index c2f5b5843c669839cac27d0a873bb5f842eeb899..0a539a44eeb412356d5e8e42c2692613e368072a 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py @@ -1,7 +1,6 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -import copy from AthenaCommon.Logging import logging log = logging.getLogger( __name__ ) @@ -77,7 +76,7 @@ class AlgNode(Node): def addOutput(self, name): outputs = self.readOutputList() if name in outputs: - log.debug("Warning, output %s already set in %s, DH not added",name, self.name) + log.debug("Output DH not added in %s: %s already set!", self.name, name) else: if self.outputProp != '': self.setPar(self.outputProp,name) @@ -100,7 +99,7 @@ class AlgNode(Node): def addInput(self, name): inputs = self.readInputList() if name in inputs: - log.debug("Warning, input %s already set in %s, DH not added",name, self.name) + log.debug("Input DH not added in %s: %s already set!", self.name, name) else: if self.inputProp != '': self.setPar(self.inputProp,name) @@ -125,22 +124,17 @@ class AlgNode(Node): class HypoToolConf(object): - """ Class to group info on hypotools""" + """ Class to group info on hypotools for ChainDict""" def __init__(self, hypoToolGen): self.hypoToolGen = hypoToolGen self.name=hypoToolGen.__name__ if hypoToolGen else "None" - self.conf='' + def setConf( self, chainDict): if type(chainDict) is not dict: raise RuntimeError("Configuring hypo with %s, not good anymore, use chainDict" % str(chainDict) ) self.chainDict = chainDict - # def setName(self, name): - # self.name=name - - # def setConf(self, conf): - # self.conf=conf def create(self): """creates instance of the hypo tool""" @@ -149,13 +143,27 @@ class HypoToolConf(object): class HypoAlgNode(AlgNode): """Node for HypoAlgs""" + initialOutput= 'StoreGateSvc+UNSPECIFIED_OUTPUT' def __init__(self, Alg): assert isHypoBase(Alg), "Error in creating HypoAlgNode from Alg " + Alg.name() AlgNode.__init__(self, Alg, 'HypoInputDecisions', 'HypoOutputDecisions') self.tools = [] self.previous=[] + def addOutput(self, name): + outputs = self.readOutputList() + if name in outputs: + log.debug("Output DH not added in %s: %s already set!", self.name, name) + elif self.initialOutput in outputs: + AlgNode.addOutput(self, name) + else: + log.error("Hypo " + self.name +" has already %s as configured output: you may want to duplicate the Hypo!" + outputs[0]) + + + + def addHypoTool (self, hypoToolConf): + log.debug(" Adding HypoTool %s to %s", hypoToolConf.chainDict['chainName'], self.Alg.name()) if hypoToolConf.chainDict['chainName'] not in self.tools: ## HypoTools are private, so need to be created when added to the Alg ## this incantation may seem strange, however it is the only one which works @@ -209,18 +217,24 @@ class InputMakerNode(AlgNode): def __init__(self, Alg): assert isInputMakerBase(Alg), "Error in creating InputMakerNode from Alg " + Alg.name() AlgNode.__init__(self, Alg, 'InputMakerInputDecisions', 'InputMakerOutputDecisions') + input_maker_output = CFNaming.inputMakerOutName(self.Alg.name(),"out") + self.addOutput(input_maker_output) from DecisionHandling.DecisionHandlingConf import ComboHypo class ComboMaker(AlgNode): def __init__(self, name, multiplicity): + #Alg = RecoFragmentsPool.retrieve( self.create, name ) + log.debug("ComboMaker init: Alg %s", name) Alg = ComboHypo(name) - log.debug("Making combo Alg %s", name) AlgNode.__init__(self, Alg, 'HypoInputDecisions', 'HypoOutputDecisions') self.prop="MultiplicitiesMap" - self.mult=multiplicity - + self.mult=list(multiplicity) + def create (self, name): + log.debug("ComboMaker.create %s",name) + return ComboHypo(name) + def addChain(self, chainDict): chainName = chainDict['chainName'] log.debug("ComboMaker %s adding chain %s", self.Alg.name(),chainName) @@ -276,61 +290,17 @@ class MenuSequence(object): assert Maker.name().startswith("IM"), "The input maker {} name needs to start with letter: IM".format(Maker.name()) self.sequence = Node( Alg=Sequence) self._maker = InputMakerNode( Alg = Maker ) - self.inputs=[] - self.outputs=[] self.seed='' self.reuse = False # flag to draw dot diagrmas self.ca = CA - - if type(Hypo) is list: - log.warning("Sequence %s has more than one Hypo; correct your sequence for next develpments") - self.name=[] - self.hypoToolConf=[] - self._hypo=[] - for hp, hptool in zip(Hypo, HypoToolGen): - self.name.append( CFNaming.menuSequenceName(hp.name()) ) - self.hypoToolConf.append( HypoToolConf( hptool ) ) - self._hypo.append( HypoAlgNode( Alg = hp ) ) - else: - self.name = CFNaming.menuSequenceName(Hypo.name()) - self.hypoToolConf = HypoToolConf( HypoToolGen ) - self._hypo = HypoAlgNode( Alg = Hypo ) - - - - def replaceHypoForCombo(self, HypoAlg): - if type(HypoAlg) is list and type(self.name) is list: - self._hypo=[] - for hp, Name in zip(HypoAlg, self.name): - log.debug("set new Hypo %s for combo sequence %s ", hp.name(), Name) - self._hypo.append( HypoAlgNode( Alg=hp ) ) - else: - log.debug("set new Hypo %s for combo sequence %s ", HypoAlg.name(), self.name) - self._hypo = HypoAlgNode( Alg=HypoAlg ) - - def replaceHypoForDuplication(self, HypoAlg): - if type(HypoAlg) is list: - self._hypo = [] - for hp, Name in zip(HypoAlg, self.name): - log.debug("set new Hypo %s for duplicated sequence %s, resetting decisions ", hp.name(), Name) - self._hypo.append( HypoAlgNode( Alg=hp ) ) - else: - log.debug("set new Hypo %s for duplicated sequence %s, resetting decisions ", HypoAlg.name(), self.name) - self._hypo = HypoAlgNode( Alg=HypoAlg ) - # do we need this? - # self._hypo.resetInput() - # self._hypo.resetOutput() - - def resetConnections(self): - self.inputs=[] - self.outputs=[] + self.connect(Hypo, HypoToolGen) + @property def maker(self): if self.ca is not None: makerAlg = self.ca.getEventAlgo(self._maker.Alg.name()) self._maker.Alg = makerAlg - # return InputMakerNode(Alg=makerAlg) return self._maker @property @@ -338,43 +308,51 @@ class MenuSequence(object): if self.ca is not None: hypoAlg = self.ca.getEventAlgo(self._hypo.Alg.name()) self._hypo.Alg = hypoAlg - # return HypoAlgNode(Alg=hypoAlg) return self._hypo def connectToFilter(self, outfilter): + """ Connect filter to the InputMaker""" + self.maker.addInput(outfilter) + + + def connect(self, Hypo, HypoToolGen): """ Sets the input and output of the hypo, and links to the input maker """ + input_maker_output= self.maker.readOutputList()[0] # only one since it's merged - #### Connect filter to the InputMaker - self.maker.addInput(outfilter) - input_maker_output = CFNaming.inputMakerOutName(self.maker.Alg.name(),outfilter) - self.maker.addOutput(input_maker_output) + #### Add input/output Decision to Hypo + if type(Hypo) is list: + self.name=[] + self.hypoToolConf=[] + self._hypo=[] + hypo_input_total=[] + hypo_output_total=[] + hypo_input = input_maker_output + for hypo_alg, hptool in zip(Hypo, HypoToolGen): + self.name.append( CFNaming.menuSequenceName(hypo_alg.name()) ) + self.hypoToolConf.append( HypoToolConf( hptool ) ) - #### Add input/output Decision to Hypo - if type(self._hypo) is list: - hypo_input_total=[] - hypo_output_total=[] - hypo_input = input_maker_output - for hp in self._hypo: hypo_input_total.append(hypo_input) - hp.setPreviousDecision(hypo_input) - hypo_output = CFNaming.hypoAlgOutName(hp.Alg.name(), hypo_input) - if len(hp.getOutputList()): - log.error("Hypo " + hp.name() +" has already an output configured: you may want to duplicate the Hypo!") - hp.addOutput(hypo_output) + hypo_output = CFNaming.hypoAlgOutName(hypo_alg.name()) hypo_output_total.append(hypo_output) + + hypo_node = HypoAlgNode( Alg = hypo_alg ) + hypo_node.addOutput(hypo_output) + hypo_node.setPreviousDecision(hypo_input) + + self._hypo.append( hypo_node ) hypo_input = hypo_output + log.warning("Sequence %s has more than one Hypo; correct your sequence for next develpments", self.name) else: - self.hypo.setPreviousDecision( input_maker_output) - hypo_output = CFNaming.hypoAlgOutName(self.hypo.Alg.name(), input_maker_output) - if len(self.hypo.getOutputList()): - log.error("Hypo " + self.hypo.Alg.name() +" has already an output configured: you may want to duplicate the Hypo!") - self.hypo.addOutput(hypo_output) + self.name = CFNaming.menuSequenceName(Hypo.name()) + self.hypoToolConf = HypoToolConf( HypoToolGen ) + self._hypo = HypoAlgNode( Alg = Hypo ) + hypo_output = CFNaming.hypoAlgOutName(Hypo.name()) + self._hypo.addOutput(hypo_output) + self._hypo.setPreviousDecision( input_maker_output) - # needed for drawing - self.inputs.append(outfilter) - self.outputs.append(hypo_output) + - log.debug("MenuSequence.connectToFilter: connecting InputMaker and HypoAlg and OverlapRemoverAlg, adding: \n\ + log.debug("MenuSequence.connect: connecting InputMaker and HypoAlg and OverlapRemoverAlg, adding: \n\ InputMaker::%s.output=%s",\ self.maker.Alg.name(), input_maker_output) if type(self._hypo) is list: @@ -385,7 +363,7 @@ class MenuSequence(object): else: log.debug("HypoAlg::%s.previousDecision=%s, \n\ HypoAlg::%s.output=%s",\ - self.hypo.Alg.name(), input_maker_output, self.hypo.Alg.name(), hypo_output) + self.hypo.Alg.name(), input_maker_output, self.hypo.Alg.name(), self.hypo.readOutputList()[0]) def __repr__(self): @@ -410,9 +388,10 @@ class MenuSequence(object): #from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import getAllThresholdsFromItem, getUniqueThresholdsFromItem + class Chain(object): """Basic class to define the trigger menu """ - __slots__='name','steps','vseeds','group_seed' + __slots__='name','steps','vseeds','L1decisions' def __init__(self, name, ChainSteps, L1Thresholds): """ Construct the Chain from the steps @@ -422,214 +401,215 @@ class Chain(object): self.steps=ChainSteps self.vseeds=L1Thresholds - from L1Decoder.L1DecoderConfig import mapThresholdToL1DecisionCollection - # group_seed is used to set the seed type (EM, MU,JET), removing the actual threshold + # L1decisions are used to set the seed type (EM, MU,JET), removing the actual threshold # in practice it is the L1Decoder Decision output - self.group_seed = [ mapThresholdToL1DecisionCollection(stri) for stri in self.vseeds] - self.setSeedsToSequences() # save seed of each menuseq - + self.L1decisions = [ mapThresholdToL1DecisionCollection(stri) for stri in L1Thresholds] + log.debug("L1Decisions: %s", ' '.join(self.L1decisions)) + + self.setSeedsToSequences() isCombo=False + #TO DO: check that all the steps are combo for step in self.steps: if step.isCombo: isCombo=True - log.debug("Made %s Chain %s with seeds: %s ", "combo" if isCombo else "", name, self.vseeds) + log.debug("Made %s Chain %s with seeds: %s ", "combo" if isCombo else "", name, self.L1decisions) + + + def checkMultiplicity(self): + if len(self.steps) == 0: + return 0 + mult=[sum(step.multiplicity) for step in self.steps] # on mult per step + not_empty_mult = [m for m in mult if m!=0] + if len(not_empty_mult) == 0: #empty chain? + log.error("checkMultiplicity: Chain %s has all steps with multiplicity =0: what to do?", self.name) + return 0 + if not_empty_mult.count(not_empty_mult[0]) != len(not_empty_mult): + log.error("checkMultiplicity: Chain %s has steps with differnt multiplicities: %s", self.name, ' '.join(mult)) + return 0 + + if not_empty_mult[0] != len(self.vseeds): + log.error("checkMultiplicity: Chain %s has %d multiplicity per step, and %d L1Decisions", self.name, mult, len(self.vseeds)) + return 0 + return not_empty_mult[0] - def setSeedsToSequences(self): - """ Set the L1 seeds to the menu sequences """ - # check if the number of seeds is sufficient for all the seuqences, no action of no steps are configured + + def setSeedsToSequences(self): + """ Set the L1 seeds (L1Decisions) to the menu sequences """ if len(self.steps) == 0: return - max_seq = max(len(step.sequences) for step in self.steps) - tot_seed = len(self.vseeds) - if max_seq==tot_seed: - for step in self.steps: - if len(step.sequences) == 0: - continue - if len(step.sequences) != tot_seed: - log.warning ("setSeedsToSequences: Chain %s, step %s has %d sequences but %d seeds ", self.name, step.name, len(step.sequences), tot_seed) - continue - nseq=0 - for seed in self.vseeds: - seq=step.sequences[nseq] - seq.seed ="L1"+filter(lambda x: x.isalpha(), seed) - log.debug( "setSeedsToSequences: Chain %s adding seed %s to sequence %d in step %s", self.name, seq.seed, nseq, step.name ) - nseq+=1 - else: - log.error("setSeedsToSequences: found %d sequences in the chain %s and %d seeds %s. What to do??", max_seq, self.name, tot_seed, str(self.vseeds)) - - - - def decodeHypoToolConfs(self, allChainDicts): - """ This is extrapolating the hypotool configuration from the (combined) chain name""" - import copy - from TriggerMenuMT.HLTMenuConfig.Menu.TriggerConfigHLT import TriggerConfigHLT - chainDict = TriggerConfigHLT.getChainDictFromChainName(self.name) + # TODO: check if the number of seeds is sufficient for all the seuqences, no action of no steps are configured + for step in self.steps: + for seed, seq in zip(self.L1decisions, step.sequences): + seq.seed= seed + log.debug( "setSeedsToSequences: Chain %s adding seed %s to sequence in step %s", self.name, seq.seed, step.name ) + + def getChainLegs(self): + """ This is extrapolating the chain legs""" + from TriggerMenuMT.HLTMenuConfig.Menu.ChainDictTools import splitChainInDict + listOfChainDictsLegs = splitChainInDict(self.name) + legs = [part['chainName'] for part in listOfChainDictsLegs] + return legs + + + def decodeHypoToolConfs(self): + """ This is extrapolating the hypotool configuration from the chain name""" + log.debug("decodeHypoToolConfs for chain %s", self.name) + from TriggerMenuMT.HLTMenuConfig.Menu.ChainDictTools import splitChainInDict + listOfChainDictsLegs = splitChainInDict(self.name) for step in self.steps: if len(step.sequences) == 0: continue - for seq, chainDictPart in zip(step.sequences, chainDict['chainParts']): + step_mult = [str(m) for m in step.multiplicity] + menu_mult = [part['chainParts'][0]['multiplicity'] for part in listOfChainDictsLegs ] + if step_mult != menu_mult: + # need to agree on the procedure: if the jet code changes the chainparts accordingly, this will never happen + log.warning("Got multiplicty %s from chain parts, but have %s legs. This is expected now for jets, so this tmp fix is added:", menu_mult, step_mult) + chainDict = listOfChainDictsLegs[0] + chainDict['chainName']= self.name # rename the chaindict to remove the leg name + for seq in step.sequences: + seq.hypoToolConf.setConf( chainDict ) + seq.hypo.addHypoTool(seq.hypoToolConf) #this creates the HypoTools + continue + + # add one hypotool per sequence and chain part + for seq, onePartChainDict in zip(step.sequences, listOfChainDictsLegs): if seq.ca is not None: # The CA merging took care of everything continue - - onePartChainDict = copy.deepcopy( chainDict ) - onePartChainDict['chainParts'] = [ chainDictPart ] - if type(seq.hypoToolConf) is list: - for hp, hptoolConf in zip( seq.hypo, seq.hypoToolConf ): - hptoolConf.setConf( onePartChainDict ) - hp.addHypoTool(hptoolConf) #this creates tge HypoTools + log.warning ("This sequence %s has %d multiple HypoTools ",seq.sequence.name, len(seq.hypoToolConf)) + for hp, hptoolConf in zip( seq.hypo, seq.hypoToolConf ): + hptoolConf.setConf( onePartChainDict ) + hp.addHypoTool(hptoolConf) #this creates the HypoTools else: - seq.hypoToolConf.setConf( onePartChainDict ) - seq.hypo.addHypoTool(seq.hypoToolConf) #this creates the HypoTools - + seq.hypoToolConf.setConf( onePartChainDict ) + seq.hypo.addHypoTool(seq.hypoToolConf) #this creates the HypoTools + def __repr__(self): return "--- Chain %s --- \n + Seeds: %s \n + Steps: \n %s \n"%(\ - self.name, ' '.join(map(str, self.vseeds)), '\n '.join(map(str, self.steps))) + self.name, ' '.join(map(str, self.L1decisions)), '\n '.join(map(str, self.steps))) + class CFSequence(object): - """Class to describe the ChainStep + filter - One Filter can be included in many CF sequences, so the CF sequence is identified by the step name and the connections + """Class to describe the flow of decisions through ChainStep + filter with their connections (input, output) + A Filter can have more than one input/output if used in different chains, so this class stores and manages all of them (when doing the connect) """ - def __init__(self, ChainStep, FilterAlg, connections): - + def __init__(self, ChainStep, FilterAlg): self.filter = FilterAlg self.step = ChainStep - self.connections=connections - log.debug("CFSequence: creating new one with Filter %s, step %s and %d connections: %s",self.filter.Alg.name(), self.step.name, len(self.connections), self.connections) - self.connect() + if self.step.isCombo: + self.connectCombo() self.setDecisions() + log.debug("CFSequence.__init: created %s ",self) def setDecisions(self): + """ Set the output decision of this CFSequence as the hypo outputdecision; In case of combo, takes the Combo outputs""" self.decisions=[] - for sequence in self.step.sequences: - self.decisions.extend(sequence.outputs) if not len(self.step.sequences): - self.decisions.extend(self.filter.getOutputList()) + self.decisions.extend(self.filter.readOutputList()) + else: + if self.step.isCombo: + self.decisions.extend(self.step.combo.getOutputList()) + else: + for sequence in self.step.sequences: + hp=sequence.hypo + if type(hp) is list: + for hypo in hp: + self.decisions.append(hypo.readOutputList()[0]) + else: + self.decisions.append(hp.readOutputList()[0]) + + log.debug("CFSequence: set out decisions: %s", self.decisions) - def connect(self): - """Connect filter to ChainStep (all its sequences) + def connect(self, connections): + """Connect filter to ChainStep (and all its sequences) through these connections (which are sets of filter outputs) if a ChainStep contains the same sequence multiple times (for multi-object chains), the filter is connected only once (to avoid multiple DH links) """ - log.debug("CFSequence: Connect Filter %s with %d menuSequences of step %s", self.filter.Alg.name(), len(self.step.sequences), self.step.name) - if len(self.connections) == 0: + log.debug("CFSequence: connect Filter %s with %d menuSequences of step %s, using %d connections", self.filter.Alg.name(), len(self.step.sequences), self.step.name, len(connections)) + if len(connections) == 0: log.error("ERROR, no filter outputs are set!") #raise("CFSequence: Invalid Filter Configuration") if len(self.step.sequences): # check whether the number of filter outputs are the same as the number of sequences in the step - if len(self.connections) != len(self.step.sequences): - log.error("Found %d filter outputs and %d MenuSequences in Step %s", len(self.filter.getOutputList()), len(self.step.sequences), self.step.name) + if len(connections) != len(self.step.sequences): + log.error("Found %d connections and %d MenuSequences in Step %s", len(connections), len(self.step.sequences), self.step.name) #raise("CFSequence: Invalid Filter Configuration") nseq=0 for seq in self.step.sequences: - filter_out = self.connections[nseq] + filter_out = connections[nseq] log.debug("CFSequence: Found input %s to sequence::%s from Filter::%s (from seed %s)", filter_out, seq.name, self.filter.Alg.name(), seq.seed) seq.connectToFilter( filter_out ) nseq+=1 - - if self.step.isCombo: - self.connectCombo() - else: log.debug("This CFSequence has no sequences: outputs are the Filter outputs") - def connectCombo(self): - """ reset sequence outputs, they will be replaced by new combo outputs""" - - for seq in self.step.sequences: - seq.outputs=[] - + """ connect Combo to Hypos""" for seq in self.step.sequences: if type(seq.hypo) is list: - combo_input=seq.hypo[1].getOutputList()[0] + combo_input=seq.hypo[-1].readOutputList()[0] # last one? else: - combo_input=seq.hypo.getOutputList()[0] + combo_input=seq.hypo.readOutputList()[0] self.step.combo.addInput(combo_input) - log.debug("Adding inputs %s to combo %s", combo_input, self.step.combo.Alg.name()) + log.debug("CFSequence.connectCombo: adding input to %s: %s", self.step.combo.Alg.name(), combo_input) # inputs are the output decisions of the hypos of the sequences - # outputs are the modified name of input deciions that need to be connected to the next filter - combo_output=CFNaming.comboHypoOutputName (combo_input) + combo_output=CFNaming.comboHypoOutputName (self.step.combo.Alg.name(), combo_input) self.step.combo.addOutput(combo_output) - seq.outputs.append(combo_output) - log.debug("CFSequence: connectCombo: Adding outputs %s to combo %s", combo_output, self.step.combo.Alg.name()) + log.debug("CFSequence.connectCombo: adding output to %s: %s", self.step.combo.Alg.name(), combo_output) + def __repr__(self): - return "--- CFSequence ---\n + Filter: %s \n + %s \n + decisions: %s\n"%(\ - self.filter.Alg.name(), self.step, self.decisions) + return "--- CFSequence ---\n + Filter: %s \n + decisions: %s\n + %s \n"%(\ + self.filter.Alg.name(), self.decisions, self.step) +class StepComp(object): + """ Class to build hte ChainStep, for including empty sequences""" + def __init__(self, sequence, multiplicity,empty): + self.sequence=sequence + self.multiplicity=multiplicity + self.empty=empty + class ChainStep(object): """Class to describe one step of a chain; if multiplicity is greater than 1, the step is combo/combined. Set one multiplicity value per sequence""" def __init__(self, name, Sequences=[], multiplicity=[1]): self.name = name - self.sequences=[] + self.sequences=Sequences self.multiplicity = multiplicity self.isCombo=sum(multiplicity)>1 self.combo=None if self.isCombo: self.makeCombo(Sequences ) - else: - self.sequences = Sequences - + self.decisions = [] def makeCombo(self, Sequences): if len(Sequences)==0: return + hashableMult = tuple(self.multiplicity) + self.combo = RecoFragmentsPool.retrieve(createComboAlg, None, name=CFNaming.comboHypoName(self.name), multiplicity=hashableMult) - # For combo sequences, duplicate the sequence, the Hypo with differnt names and create the ComboHypoAlg - self.combo = ComboMaker(CFNaming.comboHypoName(self.name), self.multiplicity) - duplicatedHypos = [] - for sequence in Sequences: - if type(sequence.hypo) is list: - new_hypoAlg = [] - NewHypoAlgName = [] - for hp in sequence.hypo: - oldhypo=hp.Alg - duplicatedHypos.append(oldhypo.name()) - ncopy=duplicatedHypos.count(oldhypo.name()) - - new_sequence=copy.deepcopy(sequence) - new_sequence.name = CFNaming.comboSequenceCopyName(sequence.name,ncopy, self.name) - - newHypoAlgName = CFNaming.comboHypoCopyName(oldhypo.name(),ncopy, self.name) - new_hypoAlg.append( oldhypo.clone(newHypoAlgName) ) # need to reset decisions? - NewHypoAlgName.append( newHypoAlgName ) - new_sequence.replaceHypoForCombo(new_hypoAlg) - self.sequences.append(new_sequence) - - else: - oldhypo=sequence.hypo.Alg - duplicatedHypos.append(oldhypo.name()) - ncopy=duplicatedHypos.count(oldhypo.name()) - - new_sequence=copy.deepcopy(sequence) - new_sequence.name = CFNaming.comboSequenceCopyName(sequence.name,ncopy, self.name) - - newHypoAlgName = CFNaming.comboHypoCopyName(oldhypo.name(),ncopy, self.name) - new_hypoAlg=oldhypo.clone(newHypoAlgName) # need to reset decisions? - new_sequence.replaceHypoForCombo(new_hypoAlg) - self.sequences.append(new_sequence) def __repr__(self): - return "--- ChainStep %s ---\n + isCombo = %d, multiplicity = %d \n + MenuSequences = %s \n "%(self.name, self.isCombo,sum(self.multiplicity), ' '.join(map(str, [seq.name for seq in self.sequences]) )) + return "--- ChainStep %s ---\n + isCombo = %d, multiplicity = %d \n + MenuSequences = %s"%(self.name, self.isCombo,sum(self.multiplicity), ' '.join(map(str, [seq.name for seq in self.sequences]) )) +def createComboAlg(dummyFlags, name, multiplicity): + return ComboMaker(name, multiplicity) # this is fragment for New JO diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponentsNaming.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponentsNaming.py index 97ef86de8dad585314d02e811010704b6759770a..3c6fa5f46f04d524caa1fe645ac9821bcfc2c377 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponentsNaming.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponentsNaming.py @@ -35,11 +35,17 @@ class CFNaming(object): return CFNaming.simplifyOutName("HLTNav_" + IMname + "__" + filterOut) @staticmethod - def hypoAlgOutName(HypoName, HypoInput): + def hypoAlgOutNameOld(HypoName, HypoInput): name = CFNaming.simplifyOutName("HLTNav_" + HypoName + "__" + HypoInput) # remove the IM parts from hypos output return "__".join( filter(lambda frag: not (frag.startswith("IM") or frag.startswith("F")), name.split("__")) ) + @staticmethod + def hypoAlgOutName(HypoName): + name = CFNaming.simplifyOutName("HLTNav_" + HypoName) + return name + + @staticmethod def comboHypoName(HypoName): return "ComboHypo_" + HypoName @@ -59,8 +65,8 @@ class CFNaming(object): return "%s%d_for_%s"%(HypoName,ncopy,StepName) @staticmethod - def comboHypoOutputName(inputName): - return CFNaming.simplifyOutName("HLTNav_combo_" + inputName ) + def comboHypoOutputName(comboName, inputName): + return CFNaming.simplifyOutName("HLTNav_" + comboName+"_"+ inputName ) @staticmethod def stepRecoNodeName(HLTNodeName, StepCFName): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py index 574a3dfdea20a6bc5b0147be02b38b91651d015a..8ff2a4e7430daeddbff7a9c7808441c7d15e0334 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py @@ -78,8 +78,9 @@ def setupMenu(): ChainProp(name='HLT_2j330_a10t_lcw_jes_35smcINF_L1J100', groups=SingleJetGroup), ChainProp(name='HLT_5j70_0eta240_L14J20', groups=MultiJetGroup), # this chain is supposed to be seeded off L1_4J15 in principle, needs CF fix ChainProp(name='HLT_3j200_L1J100', groups=MultiJetGroup), - + # FP: workaround tmp for l1SeedThresholds ChainProp(name='HLT_j80_j60_L1J15', l1SeedThresholds=['']*2, groups=MultiJetGroup), + # FP: workaround tmp for l1SeedThresholds ChainProp(name='HLT_j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20', l1SeedThresholds=['']*3, groups=MultiJetGroup), ] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/TriggerConfigHLT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/TriggerConfigHLT.py index 4e45bcfe3d99f2e5310247c4dcff396f20705522..64b6a9697c703b73ba904d29e045f007463a32a1 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/TriggerConfigHLT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/TriggerConfigHLT.py @@ -110,3 +110,4 @@ if __name__ == "__main__": # selftest log.info("ok, unregistered chain handling works") else: log.error("unhandled missing chain") + diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/GenerateMuonChainDefs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/GenerateMuonChainDefs.py index b294b4a62119c9b0004d31049b0e9b91596fa71d..5f3cece4fab3d3f800491502b1163d5740888abc 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/GenerateMuonChainDefs.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/GenerateMuonChainDefs.py @@ -19,23 +19,21 @@ def generateChainConfigs(chainDict): listOfChainDefs=[] for subChainDict in listOfChainDicts: - + log.debug('Assembling subChainsDict %s for chain %s', len(listOfChainDefs), subChainDict['chainName'] ) Muon = MuonChainConfiguration(subChainDict).assembleChain() listOfChainDefs += [Muon] - log.debug('length of chaindefs %s', len(listOfChainDefs) ) + if len(listOfChainDefs)>1: - if 'noL1' in chainDict['chainName']: - theChainDef = mergeSerial(listOfChainDefs) - else: + ## if 'noL1' in chainDict['chainName']: + ## theChainDef = mergeSerial(listOfChainDefs) + ## else: theChainDef = mergeChainDefs(listOfChainDefs, chainDict) else: theChainDef = listOfChainDefs[0] - log.debug("theChainDef %s" , theChainDef) - return theChainDef def mergeSerial(listOfChainDefs): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonDef.py index 88e63d6d43fe05ac20f71bced427f50fa24d2c2b..c9ac3784947299a8ed66dc59bda8c8946a5c8565 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonDef.py @@ -9,8 +9,9 @@ from AthenaCommon.Logging import logging logging.getLogger().info("Importing %s",__name__) log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Muon.MuonDef") -from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import ChainConfigurationBase, RecoFragmentsPool -from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import ChainStep +from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import ChainConfigurationBase +#, RecoFragmentsPool +#from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import ChainStep from TriggerMenuMT.HLTMenuConfig.Muon.MuonSequenceSetup import muFastSequence, muFastOvlpRmSequence, muCombSequence, muCombOvlpRmSequence, muEFMSSequence, muEFSASequence, muIsoSequence, muEFCBSequence, muEFSAFSSequence, muEFCBFSSequence, muEFIsoSequence, muEFCBInvMassSequence, efLateMuRoISequence, efLateMuSequence @@ -76,7 +77,7 @@ class MuonChainConfiguration(ChainConfigurationBase): # ---------------------- def assembleChain(self): chainSteps = [] - log.debug("Assembling chain for " + self.chainName) + #log.debug("Assembling leg for chain " + self.chainName) stepDictionary = self.getStepDictionary() @@ -86,13 +87,15 @@ class MuonChainConfiguration(ChainConfigurationBase): for step_level in steps: for step in step_level: - chainSteps+=[step] + chainstep = getattr(self, step)() + chainSteps+=[chainstep] if 'invm' in self.chainPart['invMassInfo']: steps=stepDictionary['invM'] for step_level in steps: for step in step_level: - chainSteps+=[step] + chainstep = getattr(self, step)() + chainSteps+=[chainstep] myChain = self.buildChain(chainSteps) return myChain @@ -109,18 +112,19 @@ class MuonChainConfiguration(ChainConfigurationBase): # -------------------- stepDictionary = { - "":[[self.getmuFast(), self.getmuComb()], [self.getmuEFSA(), self.getmuEFCB()]], - "fast":[[self.getmuFast()]], - "Comb":[[self.getmuFast(), self.getmuComb()]], - "noL2Comb" : [[self.getmuFast()], [self.getmuEFSA(), self.getmuEFCB()]], - "ivar":[[self.getmuFast(), self.getmuComb(), self.getmuIso()]], - "noL1":[[],[self.getFSmuEFSA(), self.getFSmuEFCB()]], - "msonly":[[self.getmuFast(), self.getmuMSEmpty(1)], [self.getmuEFMS()]], - "ivarmedium":[[self.getmuFast(), self.getmuComb()], [self.getmuEFSA(), self.getmuEFCB(), self.getmuEFIso()]], - "invM":[[],[self.getmuInvM()]], - "lateMu":[[],[self.getLateMuRoI(),self.getLateMu()]] + "":[['getmuFast', 'getmuComb'], ['getmuEFSA', 'getmuEFCB']], + "fast":[['getmuFast']], + "Comb":[['getmuFast', 'getmuComb']], + "noL2Comb" : [['getmuFast'], ['getmuEFSA', 'getmuEFCB']], + "ivar":[['getmuFast', 'getmuComb', 'getmuIso']], + #FP: this is tmp config for noL1, waiting for serial merging: + "noL1":[['getmuFast', 'getmuComb', 'getmuIso'],['getFSmuEFSA', 'getFSmuEFCB', 'getEFCBEmpty']], + "msonly":[['getmuFast', 'getmuMSEmpty'], ['getmuEFMS']], + "ivarmedium":[['getmuFast', 'getmuComb'], ['getmuEFSA', 'getmuEFCB', 'getmuEFIso']], + "invM":[[],['getmuInvM']], + "lateMu":[[],['getLateMuRoI','getLateMu']] } - + return stepDictionary @@ -136,6 +140,12 @@ class MuonChainConfiguration(ChainConfigurationBase): else: doOvlpRm = False + + + # tmp comment out OverlapRm /FP: + doOvlpRm= False + + if doOvlpRm: return self.getStep(1,"mufast", [muFastOvlpRmSequenceCfg] ) else: @@ -153,6 +163,11 @@ class MuonChainConfiguration(ChainConfigurationBase): else: doOvlpRm = False + + # tmp comment out OverlapRm /FP: + doOvlpRm= False + + if doOvlpRm: return self.getStep(2, 'muComb', [muCombOvlpRmSequenceCfg] ) else: @@ -176,27 +191,35 @@ class MuonChainConfiguration(ChainConfigurationBase): # -------------------- def getFSmuEFSA(self): - return self.getStep(1,'FSmuEFSA', [FSmuEFSASequenceCfg]) + return self.getStep(4,'FSmuEFSA', [FSmuEFSASequenceCfg]) # -------------------- def getFSmuEFCB(self): - return self.getStep(2,'FSmuEFCB', [FSmuEFCBSequenceCfg]) + return self.getStep(5,'FSmuEFCB', [FSmuEFCBSequenceCfg]) #--------------------- def getmuEFIso(self): return self.getStep(5,'muEFIso',[ muEFIsoSequenceCfg]) #-------------------- - def getmuMSEmpty(self, stepID): + def getmuMSEmptyAll(self, stepID): return self.getStep(stepID,'muMS_empty',[]) + #-------------------- + def getmuMSEmpty(self): + return self.getmuMSEmptyAll(2) + + #-------------------- + def getmuFastEmpty(self): + return self.getStep(1,'muFast_empty',[]) + + + def getEFCBEmpty(self): + return self.getStep(6,'EFCBEmpty',[]) #-------------------- def getmuInvM(self): - stepName = 'Step5_muInvM' - log.debug("Configuring step " + stepName) - seq = RecoFragmentsPool.retrieve( muEFCBInvMSequenceCfg, None) - return ChainStep(stepName, [seq], multiplicity=[1]) - + return self.getStep(5,'muInvM',[muEFCBInvMSequenceCfg]) + #-------------------- def getLateMuRoI(self): return self.getStep(1,'muEFLateRoI',[muEFLateRoISequenceCfg])