From 28734919913eb6023575bca0e9ccf19b0512e69f Mon Sep 17 00:00:00 2001
From: Heather Russell <heather.russell@cern.ch>
Date: Wed, 29 Mar 2017 12:02:52 +0200
Subject: [PATCH] ATR-16017, menu implementation of trkmht chains. Four test
 chains added to physics_pp_v7.

---
 .../TriggerMenu/python/menu/Physics_pp_v7.py  |  8 ++++
 .../TriggerMenu/python/menu/SignatureDicts.py |  4 +-
 .../TriggerMenu/python/met/MissingETDef.py    | 46 ++++++++++++++++++-
 3 files changed, 55 insertions(+), 3 deletions(-)

diff --git a/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7.py b/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7.py
index 7b1a6b2e1ef9..2514e63299c3 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/menu/Physics_pp_v7.py
@@ -1224,6 +1224,14 @@ def setupMenu():
         ['xe250_mht_xe200_L1XE60','L1_XE60', [], [PhysicsStream], ['RATE:MET', 'BW:MET' ], -1, ['serial',-1,['xe250_mht','xe200'] ]], 
         ['xe300_mht_xe250_L1XE60','L1_XE60', [], [PhysicsStream], ['RATE:MET', 'BW:MET' ], -1, ['serial',-1,['xe300_mht','xe250'] ]], 
     
+        ##trkmht
+        ['xe100_trkmht_L1XE50',           'L1_XE50',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1],
+        ['xe110_trkmht_wEFMu_L1XE50',           'L1_XE50',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1],
+
+        ['xe100_trkmht_L1XE60',           'L1_XE60',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1],
+        ['xe110_trkmht_wEFMu_L1XE60',           'L1_XE60',[], [PhysicsStream], ['RATE:MET', 'BW:MET'], -1],
+
+
 			 ]
     
     TriggerFlags.TauSlice.signatures = [
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenu/python/menu/SignatureDicts.py
index 87f31fce9cff..bc50f5127b7f 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/menu/SignatureDicts.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/menu/SignatureDicts.py
@@ -303,10 +303,10 @@ METChainParts = {
     'calib'        : ['lcw','had','em'],    
     'jetCalib'     : JetChainParts['jetCalib'],
     'L2recoAlg'    : ['','l2fsperf','L2FS'],
-    'EFrecoAlg'    : ['tc','cell','pueta','mht','pufit'],
+    'EFrecoAlg'    : ['tc','cell','pueta','mht','trkmht','pufit'],
     'L2muonCorr'   : ['','wL2MuFEB','wEFMuFEB'],
     'EFmuonCorr'   : ['','wEFMu'],
-    'addInfo'      : ['FStracks'],
+    'addInfo'      : ['FStracks','FTK'],
     }
 # ---- MetDictinary of default Values ----
 METChainParts_Default = {
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/met/MissingETDef.py b/Trigger/TriggerCommon/TriggerMenu/python/met/MissingETDef.py
index ed78de61662e..7143c2f1735b 100644
--- a/Trigger/TriggerCommon/TriggerMenu/python/met/MissingETDef.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/met/MissingETDef.py
@@ -14,6 +14,7 @@ log = logging.getLogger("TriggerMenu.met.MissingETDef")
 
 from TrigEFMissingET.TrigEFMissingETConfig import (EFMissingET_Fex_2sidednoiseSupp,
                                                    EFMissingET_Fex_Jets,
+                                                   EFMissingET_Fex_TrackAndJets,
                                                    EFMissingET_Fex_topoClusters,
                                                    EFMissingET_Fex_topoClustersPS, 
                                                    EFMissingET_Fex_topoClustersPUC)
@@ -22,6 +23,7 @@ from TrigL2MissingET.TrigL2MissingETConfig import (L2CaloMissingET_Fex_ReadL2L1,
                                                    L2MissingET_Fex)
 
 from TrigMissingETHypo.TrigMissingETHypoConfig import (EFMetHypoJetsXE,
+                                                       EFMetHypoTrackAndJetsXE,
                                                        EFMetHypoTCPSXE,
                                                        EFMetHypoTCPUCXE, 
                                                        EFMetHypoTCXE,
@@ -152,7 +154,7 @@ class L2EFChain_met(L2EFChainDef):
 
         mucorr=  '_wMu' if EFmuon else ''          
         ##MET with topo-cluster
-        if EFrecoAlg=='tc' or EFrecoAlg=='pueta' or EFrecoAlg=='pufit' or EFrecoAlg=='mht':
+        if EFrecoAlg=='tc' or EFrecoAlg=='pueta' or EFrecoAlg=='pufit' or EFrecoAlg=='mht' or EFrecoAlg=='trkmht':
 
             ##Topo-cluster
             if EFrecoAlg=='tc':
@@ -189,6 +191,18 @@ class L2EFChain_met(L2EFChainDef):
                 theEFMETMuonFex = EFTrigMissingETMuon_Fex_Jets("EFTrigMissingETMuon_Fex_Jets{0}".format(calibCorr) )
                 #mucorr= '_wMu' if EFmuon else ''
                 theEFMETHypo = EFMetHypoJetsXE('EFMetHypo_Jets_xe%s_tc%s%s%s'%(threshold,jetCalib,calibration,mucorr),ef_thr=float(threshold)*GeV)
+
+             ##MET based on trigger jets
+            if EFrecoAlg=='trkmht':
+                #MET fex                                                                                                                                                    
+                theEFMETFex = EFMissingET_Fex_TrackAndJets()                                                                                                                
+                #Muon correction fex                                                                                                                                        
+                ## this will be added later                                                                                                                                 
+                theEFMETMuonFex = EFTrigMissingETMuon_Fex_Jets()                                                                                                            
+                #mucorr= '_wMu' if EFmuon else ''                                                                                                                           
+                theEFMETHypo = EFMetHypoTrackAndJetsXE('EFMetHypo_TrackAndJets_xe%s_tc%s%s'%(threshold,calibration,mucorr),ef_thr=float(threshold)*GeV)                     
+ 
+
                 
         
             ##Topo-cluster with Pile-up suppression
@@ -345,6 +359,30 @@ class L2EFChain_met(L2EFChainDef):
                 dummyAlg = PESA__DummyUnseededAllTEAlgo("EF_DummyFEX_xe")
                 self.EFsequenceList +=[[ [''], [dummyAlg]+trk_algs[0], 'EF_xe_step3' ]]
 
+        elif EFrecoAlg=='trkmht':
+            self.EFsequenceList +=[[ input0,algo0,  output0 ]]
+            self.EFsequenceList +=[[ input1,algo1,  output1 ]]
+            self.EFsequenceList +=[[ input2,algo2,  output2 ]]
+            self.EFsequenceList +=[[ input3,algo3,  output3 ]]
+            self.EFsequenceList +=[[ input4,algo4,  output4 ]]
+
+            ##adding FTK tracks in the sequence,
+            ##if not, adding FullScan tracks
+            if "FTK" in addInfo:
+                from TrigInDetConf.TrigInDetFTKSequence import TrigInDetFTKSequence
+                trk_algs = TrigInDetFTKSequence("FullScan", "fullScan", sequenceFlavour=["FTKVtx"]).getSequence()
+                dummyAlg = PESA__DummyUnseededAllTEAlgo("EF_DummyFEX_xe")
+                self.EFsequenceList +=[[ [''], [dummyAlg]+trk_algs[0], 'EF_xe_step0' ]]
+
+            else:
+                from TrigInDetConf.TrigInDetSequence import TrigInDetSequence
+                trk_algs = TrigInDetSequence("FullScan", "fullScan", "IDTrig", "FTF").getSequence()
+                dummyAlg = PESA__DummyUnseededAllTEAlgo("EF_DummyFEX_xe")
+                self.EFsequenceList +=[[ [''], [dummyAlg]+trk_algs[0], 'EF_xe_step0' ]]
+
+            self.EFsequenceList +=[[ [output4,'EF_xe_step0'], [theEFMETFex], 'EF_xe_step1' ]]                                                                               
+            self.EFsequenceList +=[[ ['EF_xe_step1',muonSeed], [theEFMETMuonFex, theEFMETHypo], 'EF_xe_step2' ]]   
+
         #cell based MET
         elif EFrecoAlg=='cell':
             self.EFsequenceList +=[[ [''],          [theEFMETFex],  'EF_xe_step1' ]]  
@@ -358,6 +396,8 @@ class L2EFChain_met(L2EFChainDef):
 #            self.L2signatureList += [ [['L2_xe_step3']] ]
 #            self.L2signatureList += [ [['L2_xe_step4']] ]
 
+        if EFrecoAlg=="trkmht" :
+            self.EFsignatureList += [ [['EF_xe_step0']] ]   
 
         self.EFsignatureList += [ [['EF_xe_step1']] ]
         self.EFsignatureList += [ [['EF_xe_step2']] ]
@@ -373,6 +413,10 @@ class L2EFChain_met(L2EFChainDef):
             self.TErenamingDict['L2_xe_step2']= mergeRemovingOverlap('L2_', self.sig_id_noMult+'_step2')
 #            self.TErenamingDict['L2_xe_step3']= mergeRemovingOverlap('L2_', self.sig_id_noMult+'_step3')
 #            self.TErenamingDict['L2_xe_step4']= mergeRemovingOverlap('L2_', self.sig_id_noMult+'_step4')
+
+        if EFrecoAlg=='trkmht':
+            self.TErenamingDict['EF_xe_step0']= mergeRemovingOverlap('EF_', self.sig_id_noMult+"_step0")                                                                    
+  
             
         self.TErenamingDict['EF_xe_step1']= mergeRemovingOverlap('EF_', self.sig_id_noMult+'_step1')
         if "FStracks" in addInfo:
-- 
GitLab