diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx index 89d66912cc6f4811394b5e05177e95af7c1e1a3a..b98f40be728b55ee414d06090634d5695f08c917 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx @@ -324,7 +324,6 @@ HLT::ErrorCode MuFastSteering::hltFinalize() { HLT::ErrorCode MuFastSteering::hltExecute(const HLT::TriggerElement* inputTE, HLT::TriggerElement* outputTE) { - StatusCode sc = StatusCode::SUCCESS; // Initialize monitored variables; m_inner_mdt_hits = -1; m_middle_mdt_hits = -1; @@ -380,6 +379,7 @@ HLT::ErrorCode MuFastSteering::hltExecute(const HLT::TriggerElement* inputTE, p_roids = roids.begin(); for (p_roi=muonRoIs.begin(); p_roi!=muonRoIs.end(); ++p_roi) { + StatusCode sc = StatusCode::SUCCESS; double roiEta = (*p_roi)->eta(); double roiPhi = (*p_roi)->phi(); diff --git a/Trigger/TrigAlgorithms/TrigmuRoI/src/TrigmuRoI.cxx b/Trigger/TrigAlgorithms/TrigmuRoI/src/TrigmuRoI.cxx index 217673e74bca492c46a3cc1b966fef72043e4bdf..df27cb9bd1c041d9c8060d483cc4156de8765496 100644 --- a/Trigger/TrigAlgorithms/TrigmuRoI/src/TrigmuRoI.cxx +++ b/Trigger/TrigAlgorithms/TrigmuRoI/src/TrigmuRoI.cxx @@ -223,12 +223,22 @@ HLT::ErrorCode TrigmuRoI::hltExecute(std::vector<std::vector<HLT::TriggerElement if ((*it).second >= m_minValueForOutOfTimeBC && (*it).second <= m_maxValueForOutOfTimeBC ) { + + // generic TrigRoiDescriptor HLT::TriggerElement* te; TrigRoiDescriptor* roiDescriptor = new TrigRoiDescriptor( ((*it).first).roIWord(), 0, roi_id, eta, etamin, etamax, phi, phimin, phimax,0,-255,255); te = addRoI(type_out, roiDescriptor); te->setActiveState(true); + + // MuFaststeering also requires a RecMuonRoI + std::vector< TrigConf::TriggerThreshold* > dummy_thresholds; + LVL1::RecMuonRoI* muonroi = + new LVL1::RecMuonRoI( ((*it).first).roIWord(), &( *m_recRPCRoiSvc ), &( *m_recTGCRoiSvc ), &dummy_thresholds ); + + if( attachFeature( te, muonroi, "L1MuRoI" ) != HLT::OK ) return HLT::ERROR; + if(m_log.level() <= MSG::DEBUG) { m_log << MSG::DEBUG << "New RoI descriptor for " << region << " created from word 0x" diff --git a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py index 274572428117b1c898e8fa549559eed123d989ba..95876bffccf4e79db13194610917c3631f1ca120 100755 --- a/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py +++ b/Trigger/TriggerCommon/TriggerMenu/python/muon/MuonDef.py @@ -2254,6 +2254,17 @@ class L2EFChain_mu(L2EFChainDef): from TrigInDetConf.TrigInDetSequence import TrigInDetSequence [trkfast, trkprec] = TrigInDetSequence("Muon", "muon", "IDTrig").getSequence() + L2AlgName = self.getL2AlgName() + muFastThresh = self.getMuFastThresh() + + #--- L2 algos --- + if "l2muonSA" in self.chainPart['L2SAAlg']: + theL2StandAloneAlg = TrigL2MuonSAConfig(L2AlgName) + theL2StandAloneHypo = MufastHypoConfig(L2AlgName, muFastThresh) + else: + log.error("Chain built with %s but so far only l2muonSA is supported." % (self.chainPart['L2SAAlg'])) + return False + ########### EF algos ################# print self.chainPart['EFAlg'] if 'SuperEF' in self.chainPart['EFAlg']: @@ -2273,30 +2284,40 @@ class L2EFChain_mu(L2EFChainDef): if "inTimeRoI" not in self.chainPart['addInfo']: from TrigmuRoI.TrigmuRoIConfig import TrigmuRoIConfig Roimaker = TrigmuRoIConfig("TrigMuRoIMGonly") - self.EFsequenceList += [[ '' , [Roimaker], 'EF_mu_step2a' ]] - self.EFsequenceList += [[ 'EF_mu_step2a' , trkfast+trkprec, 'EF_mu_step2b']] + self.L2sequenceList += [[ '', [Roimaker], 'L2_mu_step0']] + self.L2sequenceList += [[ 'L2_mu_step0', [theL2StandAloneAlg], 'L2_mu_step1']] else: - self.EFsequenceList += [[ self.L2InputTE , trkfast+trkprec, 'EF_mu_step2b']] - self.EFsequenceList += [[ 'EF_mu_step2b' , [theEFAlg], 'EF_mu_step2']] - self.EFsequenceList += [[ 'EF_mu_step2' , [theTrigMuonEFCombinerHypoConfig], 'EF_mu_step3']] + self.L2sequenceList += [[ self.L2InputTE, [theL2StandAloneAlg], 'L2_mu_step1']] + + self.L2sequenceList += [[ 'L2_mu_step1' , [theL2StandAloneHypo], 'L2_mu_hypo1']] + self.EFsequenceList += [[ 'L2_mu_hypo1' , trkfast+trkprec, 'EF_mu_step1']] + self.EFsequenceList += [[ 'EF_mu_step1' , [theEFAlg], 'EF_mu_step2']] + self.EFsequenceList += [[ 'EF_mu_step2' , [theTrigMuonEFCombinerHypoConfig], 'EF_mu_step3']] if "inTimeRoI" not in self.chainPart['addInfo']: - self.EFsignatureList += [ [['EF_mu_step2a']] ] - self.EFsignatureList += [ [['EF_mu_step2b']] ] + self.L2signatureList += [ [['L2_mu_step0']] ] + + self.L2signatureList += [ [['L2_mu_step1']] ] + self.L2signatureList += [ [['L2_mu_hypo1']] ] + self.EFsignatureList += [ [['EF_mu_step1']] ] self.EFsignatureList += [ [['EF_mu_step2']] ] self.EFsignatureList += [ [['EF_mu_step3']] ] if "inTimeRoI" not in self.chainPart['addInfo']: self.TErenamingDict = { - 'EF_mu_step2a': mergeRemovingOverlap('EF_SuperEF_MGOnly_L1x', self.L2InputTE ), - 'EF_mu_step2b': mergeRemovingOverlap('EF_SuperEF_MGOnly_', '2b' + self.L2InputTE ), - 'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_MGOnly', self.chainPartNameNoMult), + 'L2_mu_step0': mergeRemovingOverlap('L2_mu_SA_MGOnly_', "TrigMuRoIMGonly_L1x"+self.L2InputTE ), + 'L2_mu_step1': mergeRemovingOverlap('L2_mu_SA_MGOnly_', L2AlgName+"_L1x"+self.L2InputTE ), + 'L2_mu_hypo1': mergeRemovingOverlap('L2_mu_SA_MGOnly_', L2AlgName+"_"+muFastThresh+"_L1x"+self.L2InputTE ), + 'EF_mu_step1': mergeRemovingOverlap('EF_SuperEF_MGOnly_L1x', self.L2InputTE ), + 'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_MGOnly_L1x', self.chainPartNameNoMult), 'EF_mu_step3': mergeRemovingOverlap('EF_SuperEFHypo_MGOnly', self.chainPartNameNoMult) } else: self.TErenamingDict = { - 'EF_mu_step2b': mergeRemovingOverlap('EF_SuperEF_MGOnly_inTimeRoI_', '2b' + self.L2InputTE ), - 'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_MGOnly_inTimeRoI', self.chainPartNameNoMult), + 'L2_mu_step1': mergeRemovingOverlap('EF_SuperEF_MGOnly_inTimeRoI_', L2AlgName+"_L1x"+self.L2InputTE ), + 'L2_mu_hypo1': mergeRemovingOverlap('EF_SuperEF_MGOnly_inTimeRoI_', L2AlgName+"_"+muFastThresh+"_L1x"+self.L2InputTE ), + 'EF_mu_step1': mergeRemovingOverlap('EF_SuperEF_MGOnly_inTimeRoI_', self.L2InputTE ), + 'EF_mu_step2': mergeRemovingOverlap('EF_SuperEF_MGOnly_inTimeRoI_', self.chainPartNameNoMult), 'EF_mu_step3': mergeRemovingOverlap('EF_SuperEFHypo_MGOnly_inTimeRoI', self.chainPartNameNoMult) }