From 2246cb3855ae76400205ec14245cf8b675c69921 Mon Sep 17 00:00:00 2001
From: philten <philten@cern.ch>
Date: Sun, 24 Apr 2016 19:55:15 +0200
Subject: [PATCH] included new jet lines (single, low and hight pT)

---
 Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Inputs.py |   1 +
 Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Lines.py  | 135 +++++++++----
 Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Stages.py | 181 ++++++++++--------
 .../HltSettings/Jets/Jets_25ns_Draft2016.py   | 100 ++++++++--
 4 files changed, 281 insertions(+), 136 deletions(-)

diff --git a/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Inputs.py b/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Inputs.py
index 5c13a009c..be8a380d8 100644
--- a/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Inputs.py
+++ b/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Inputs.py
@@ -1 +1,2 @@
 from Hlt2SharedParticles.TrackFittedBasicParticles import BiKalmanFittedMuons as Hlt2Muons
+from Hlt2SharedParticles.TrackFittedBasicParticles import BiKalmanFittedPions as Hlt2Pions
diff --git a/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Lines.py b/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Lines.py
index 03bd28951..ed20484a3 100644
--- a/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Lines.py
+++ b/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Lines.py
@@ -1,72 +1,131 @@
-from GaudiKernel.SystemOfUnits import MeV, GeV, picosecond, mm
+from GaudiKernel.SystemOfUnits import MeV, GeV
 from Hlt2Lines.Utilities.Hlt2LinesConfigurableUser import Hlt2LinesConfigurableUser
 
 # Jet Lines written by Phil Ilten and Mike Williams (mwill@mit.edu),
 # with Roel Aaij's significant assistance.
 
 class JetsLines(Hlt2LinesConfigurableUser):
-    __slots__ = {'_stages' : {},
-                 'Prescale' : {'Hlt2JetsDiJet'                : 1.e-3,
-                               'Hlt2JetsDiJetSV'                : 1.e-2},
-                 'Postscale' : {},
-                 'Common' : {
-                     'GHOSTPROB' : 0.2,
-                     'DPHI'      : 1.5,
-                     'SV_VCHI2'  : 10,
-                     'SV_TRK_PT' : 500*MeV,
-                     'SV_TRK_IPCHI2' : 16,
-                     'SV_FDCHI2' : 25,
-                     'MU_PT'     : 1000*MeV,
-                     'MU_PROBNNMU'  : 0.5,
-                     'JET_PT': 17*GeV},
-                 
-                 'JetBuilder' : {
-                     'JetPtMin' : 5 * GeV,
-                     'JetInfo' : False,
-                     'JetEcPath' : ""
-                     }
-                 }
+    __slots__ = {
+        '_stages': {},
+        'Prescale': {
+            'Hlt2JetsDiJetLowPt'    : 1e-04,
+            'Hlt2JetsDiJetMVLowPt'  : 1e-02,
+            'Hlt2JetsDiJetMuMuLowPt': 1e-01,
+            'Hlt2JetsDiJetSVLowPt'  : 1e-03,
+            'Hlt2JetsDiJetSVMuLowPt': 1e-02,
+            'Hlt2JetsDiJetSVSVLowPt': 1e-01,
+            'Hlt2JetsJetLowPt'      : 1e-04,
+            'Hlt2JetsJetDHLowPt'    : 1e-02,
+            'Hlt2JetsJetMuLowPt'    : 1e-03,
+            'Hlt2JetsJetSVLowPt'    : 1e-03,
+            'Hlt2JetsDiJet'         : 1e-03,
+            'Hlt2JetsDiJetSV'       : 1e-02,
+            'Hlt2JetsJet'           : 1e-03,
+            'Hlt2JetsJetDH'         : 1e-02,
+            'Hlt2JetsJetMu'         : 1e-03,
+            'Hlt2JetsJetSV'         : 1e-03
+            },
+        'Postscale': {},
+        'Common': {
+            'D_TOS'        : 'Hlt1(Two)?Track(MVA)?(Muon)?Decision%TOS',
+            'D_MASS'       : 50*MeV,
+            'GHOSTPROB'    : 0.2,
+            'DPHI'         : 0,
+            'SV_VCHI2'     : 10,
+            'SV_TRK_PT'    : 500*MeV,
+            'SV_TRK_IPCHI2': 16,
+            'SV_FDCHI2'    : 25,
+            'MU_PT'        : 1000*MeV,
+            'MU_PROBNNMU'  : 0.5,
+            'JET_PT'       : 17*GeV,
+            },
+        'JetBuilder': {
+            'JetPtMin'  : 5*GeV,
+            'JetInfo'   : False,
+            'JetEcPath' : ''
+            },
+        'JetsDiJetLowPt'    : {'JET_PT': 10*GeV},
+        'JetsDiJetMVLowPt'  : {'JET_PT': 10*GeV},
+        'JetsDiJetMuMuLowPt': {'JET_PT': 10*GeV},
+        'JetsDiJetSVLowPt'  : {'JET_PT': 10*GeV},
+        'JetsDiJetSVMuLowPt': {'JET_PT': 10*GeV},
+        'JetsDiJetSVSVLowPt': {'JET_PT': 10*GeV},
+        'JetsJetLowPt'      : {'JET_PT': 10*GeV},
+        'JetsJetDHLowPt'    : {'JET_PT': 10*GeV},
+        'JetsJetMuLowPt'    : {'JET_PT': 10*GeV},
+        'JetsJetSVLowPt'    : {'JET_PT': 10*GeV},
+        'JetsDiJetHighPt'   : {'JET_PT': 60*GeV},
+        'JetsDiJetSVHighPt' : {'JET_PT': 50*GeV},
+        'JetsJetHighPt'     : {'JET_PT': 100*GeV},
+        'JetsJetDHHighPt'   : {'JET_PT': 40*GeV},
+        'JetsJetMuHighPt'   : {'JET_PT': 60*GeV},
+        'JetsJetSVHighPt'   : {'JET_PT': 70*GeV}
+        }
 
     def stages(self, nickname = ''):
         if hasattr(self, '_stages') and self._stages:
             if nickname: return self._stages[nickname]
             else: return self._stages
         else: self._stages = {}
-
+        
         # Import the topo lines for the 2-body SVs.
         from Hlt2Lines.Topo.Lines import TopoLines
         from Hlt2Lines.Utilities.Hlt2Stage import Hlt2ExternalStage
         from Hlt2Lines.Utilities.Hlt2JetBuilder import Hlt2JetBuilder
-
+        from Stages import (FilterSV, FilterMuon, SVSVCombiner, SVMuCombiner,
+                            MuMuCombiner, DHCombiner)
         topo_lines = TopoLines()
-        topo_sv = Hlt2ExternalStage(topo_lines,
-                                    topo_lines.stages('Topo2BodyCombos')[0])
-
+        topo_sv = Hlt2ExternalStage(
+            topo_lines, topo_lines.stages('Topo2BodyCombos')[0])
 
-        from Stages import (FilterSV, FilterMuon, SVSVCombiner, SVMuCombiner, 
-                            MuMuCombiner, DiJetCombiner)
 
         # Create the stage filters.
         sv = [FilterSV([topo_sv])]
         mu = [FilterMuon()]
+        dh = [DHCombiner()]
         svsv = [SVSVCombiner(sv)]
         svmu = [SVMuCombiner(sv + mu)]
         mumu = [MuMuCombiner(mu)]
 
-        # The input tags correspond to 9600 + index (9600 SV, 9601 mu).
-        jets = [Hlt2JetBuilder('DiJetsJetBuilder', sv + mu, shared = True,
-                               nickname = 'JetBuilder')]
+        # The input tags, 9600 + index (9600 SV, 9601 mu, 9602 charm).
+        jets = [Hlt2JetBuilder('DiJetsJetBuilder', sv + mu + dh,
+                               shared = True, nickname = 'JetBuilder')]
 
-        # Create the stages.
-        self._stages['JetsDiJetSVSV'] = [DiJetCombiner(svsv + jets, 'SVSV')]
-        self._stages['JetsDiJetSVMu'] = [DiJetCombiner(svmu + jets, 'SVMu')]
-        self._stages['JetsDiJetMuMu'] = [DiJetCombiner(mumu + jets, 'MuMu')]
-        self._stages['JetsDiJetSV']   = [DiJetCombiner(sv + jets, 'SV')]
-        self._stages['JetsDiJet']     = [DiJetCombiner(jets, '')]
+        # Create the di-jet stages.
+        self.diJetStage('JetsDiJetSVSV', svsv + jets, 'SVSV')
+        self.diJetStage('JetsDiJetSVMu', svmu + jets, 'SVMu')
+        self.diJetStage('JetsDiJetMuMu', mumu + jets, 'MuMu')
+        self.diJetStage('JetsDiJetSV', sv + jets, 'SV')
+        self.diJetStage('JetsDiJetMV', sv + mu + jets, 'MV')
+        self.diJetStage('JetsDiJet', jets, '')
+
+        # Create the single jet stages.
+        self.jetStage('JetsJetSV', sv + jets, 'SV')
+        self.jetStage('JetsJetMu', mu + jets, 'Mu')
+        self.jetStage('JetsJetDH', dh + jets, 'DH')
+        self.jetStage('JetsJet', jets, '')
 
         # Return the stages.
         if nickname: return self._stages[nickname]
         else: return {k : v for k, v in self._stages.iteritems()}
+    
+    def diJetStage(self, name, inputs, tag):
+        from Stages import DiJetCombiner
+        props = self.getProps()
+        self._stages[name] = [DiJetCombiner(inputs, tag, '')]
+        if name + 'LowPt' in props: self._stages[name + 'LowPt'] = [
+            DiJetCombiner(inputs, tag, 'LowPt')]
+        if name + 'HighPt' in props: self._stages[name + 'HighPt'] = [
+            DiJetCombiner(inputs, tag, 'HighPt')]
+
+    def jetStage(self, name, inputs, tag):
+        from Stages import FilterJet
+        props = self.getProps()
+        self._stages[name] = [FilterJet(inputs, tag, '')]
+        if name + 'LowPt' in props: self._stages[name + 'LowPt'] = [
+            FilterJet(inputs, tag, 'LowPt')]
+        if name + 'HighPt' in props: self._stages[name + 'HighPt'] = [
+            FilterJet(inputs, tag, 'HighPt')]
 
     def __apply_configuration__(self) :
         from HltLine.HltLine import Hlt2Line
diff --git a/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Stages.py b/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Stages.py
index 2d0cddc40..87e1de83d 100644
--- a/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Stages.py
+++ b/Hlt/Hlt2Lines/python/Hlt2Lines/Jets/Stages.py
@@ -2,92 +2,119 @@ from Hlt2Lines.Utilities.Hlt2Combiner import Hlt2Combiner
 from Hlt2Lines.Utilities.Hlt2Filter import Hlt2ParticleFilter
 from Hlt2Lines.Utilities.Hlt2JetBuilder import Hlt2JetBuilder
 from HltTracking.HltPVs import PV3D
-from Inputs import Hlt2Muons
+from Inputs import Hlt2Muons, Hlt2Pions
 
 class FilterSV(Hlt2ParticleFilter):
-  def __init__(self, inputs):
-
-      pid  = "((ABSID=='K+') | (ID=='KS0') | (ABSID=='Lambda0'))"
-
-      code = ("(MINTREE("+pid+",PT) > %(SV_TRK_PT)s)"
-              "& (MINTREE(ISBASIC,TRGHOSTPROB) < %(GHOSTPROB)s) "
-              "& (MINTREE((ABSID=='K+'),MIPCHI2DV(PRIMARY)) > %(SV_TRK_IPCHI2)s)"
-              "& (HASVERTEX) & (VFASPF(VCHI2PDOF) < %(SV_VCHI2)s)"
-              "& (BPVVDCHI2 > %(SV_FDCHI2)s)")
-      Hlt2ParticleFilter.__init__(self, 'JetsSV', code, inputs, shared=True,dependencies = [PV3D('Hlt2')])
-
+    def __init__(self, inputs):
+        pid  = "((ABSID=='K+') | (ID=='KS0') | (ABSID=='Lambda0'))"
+        code = ("(MINTREE(" + pid + ",PT) > %(SV_TRK_PT)s)"
+                "& (MINTREE(ISBASIC,TRGHOSTPROB) < %(GHOSTPROB)s) "
+                "& (MINTREE((ABSID=='K+'),MIPCHI2DV(PRIMARY)) > "
+                "%(SV_TRK_IPCHI2)s)"
+                "& (HASVERTEX) & (VFASPF(VCHI2PDOF) < %(SV_VCHI2)s)"
+                "& (BPVVDCHI2 > %(SV_FDCHI2)s)")
+        Hlt2ParticleFilter.__init__(self, 'JetsSV', code, inputs, shared = 
+                                    True, dependencies = [PV3D('Hlt2')])
 
 class FilterMuon(Hlt2ParticleFilter):
-  def __init__(self):
+    def __init__(self):
+        inputs = [Hlt2Muons]
+        code = ("(PT > %(MU_PT)s) &  (PROBNNmu > %(MU_PROBNNMU)s)"
+                "& (TRGHOSTPROB < %(GHOSTPROB)s)")
+        Hlt2ParticleFilter.__init__(self,'JetsMuon', code, inputs, shared = 
+                                    True, dependencies = [PV3D('Hlt2')])
 
-      inputs = [Hlt2Muons]
-      code = ("(PT > %(MU_PT)s) &  (PROBNNmu > %(MU_PROBNNMU)s)"
-              "& (TRGHOSTPROB < %(GHOSTPROB)s)")
-      Hlt2ParticleFilter.__init__(self,'JetsMuon', code, inputs,
-                                  shared = True, dependencies = [PV3D('Hlt2')])
+class FilterJet(Hlt2ParticleFilter):
+    def __init__(self, inputs, tag, pt):
+        tags = {'SV': 0, 'Mu': 1, 'DH': 2}
+        code = "(ABSID == 'CELLjet') & (PT > %(JET_PT)s)"
+        if tag in tags: code += ('& (INFO(%i, -1) != -1)' % (tags[tag] + 9600))
+        Hlt2ParticleFilter.__init__(self, 'JetsJet' + tag + pt,
+                                    code, inputs, shared = True,
+                                    dependencies = [PV3D('Hlt2')])
 
+class DHCombiner(Hlt2Combiner):
+    def __init__(self):
+        inputs = [Hlt2Pions]
+        cc = ("(AMINCHILD(PT) > %(SV_TRK_PT)s)"
+              "& (AMAXCHILD(TRGHOSTPROB) < %(GHOSTPROB)s)"
+              "& (AMINCHILD(MIPCHI2DV(PRIMARY)) > %(SV_TRK_IPCHI2)s)"
+              "& (((ANUM(ISBASIC) == 2) & " 
+              + self.wmass('1.865*GeV', ['pi+', 'K+']) + ")"
+              "| ((ANUM(ISBASIC) == 3) & ("
+              + self.wmass('1.87*GeV', ['pi+', 'pi+', 'K+']) + " | "
+              + self.wmass('1.968*GeV', ['pi+', 'K+', 'K+']) + " | "
+              + self.wmass('2.286*GeV', ['pi+', 'K+', 'p+']) + ")))")
+        mc = ("(HASVERTEX) & (VFASPF(VCHI2PDOF) < %(SV_VCHI2)s)"
+              "& (BPVVDCHI2 > %(SV_FDCHI2)s)")
+        Hlt2Combiner.__init__(self, 'JetsDH', ["[D0 -> pi- pi+]cc",
+                                               "[D+ -> pi- pi+ pi+]cc"],
+                              inputs, dependencies = [PV3D('Hlt2')],
+                              CombinationCut = cc, MotherCut = mc,
+                              Preambulo = [], shared = True,
+                              tistos = 'D_TOS')
+    def wmass(self, mass, pids):
+        from itertools import permutations
+        perms = list(permutations(pids)); cuts = []
+        for perm in perms:
+            cuts += ["in_range(%s - %%(D_MASS)s, AWM%s, %s + %%(D_MASS)s)" 
+                     % (mass, str(tuple(perm)), mass)]
+        return ' | '.join(cuts)
 
-class SVSVCombiner(Hlt2Combiner) :
-  def __init__(self, inputs):
-
-      cc = "(abs(ACHILD(BPVPHI,1)-ACHILD(BPVPHI,2)) > (%(DPHI)s-1.0))"
-
-      Hlt2Combiner.__init__(self, 'JetsSVSV', "D0  -> K*(892)0 K*(892)0", inputs,
-                            dependencies = [PV3D('Hlt2')],
-                            CombinationCut = cc,
-                            MotherCut = '(ALL)',
-                            Preambulo = [],
-                            shared = True,ParticleCombiners={ '' : 'ParticleAdder'})
+class SVSVCombiner(Hlt2Combiner):
+    def __init__(self, inputs):
+        cc = "(abs(ACHILD(BPVPHI,1)-ACHILD(BPVPHI,2)) > (%(DPHI)s-1.0))"
+        Hlt2Combiner.__init__(self, 'JetsSVSV', "D0  -> K*(892)0 K*(892)0",
+                              inputs, dependencies = [PV3D('Hlt2')],
+                              CombinationCut = cc, MotherCut = '(ALL)',
+                              Preambulo = [], shared = True,
+                              ParticleCombiners={'': 'ParticleAdder'})
 
 
-class SVMuCombiner(Hlt2Combiner) :
-  def __init__(self, inputs):
-    cc = ("(abs(ACHILD(BPVPHI, 1) - ACHILD(PHI, 2)) > (%(DPHI)s - 1.0))"
-          " & (ACHILD(ABSID, 1) == 313) & (ACHILD(ABSID, 2) == 13)")
-    Hlt2Combiner.__init__(self, 'JetsSVMu', 
-                          ["D0 -> K*(892)0 mu+","D0 -> K*(892)0 mu-"], inputs,
-                          dependencies = [PV3D('Hlt2')],
-                          CombinationCut = cc,
-                          MotherCut = '(ALL)',
-                          Preambulo = [],
-                          shared = True,ParticleCombiners = 
-                          { '' : 'ParticleAdder'})
+class SVMuCombiner(Hlt2Combiner):
+    def __init__(self, inputs):
+        cc = ("(abs(ACHILD(BPVPHI, 1) - ACHILD(PHI, 2)) > (%(DPHI)s - 1.0))"
+              " & (ACHILD(ABSID, 1) == 313) & (ACHILD(ABSID, 2) == 13)")
+        Hlt2Combiner.__init__(self, 'JetsSVMu', ["D0 -> K*(892)0 mu+",
+                                                 "D0 -> K*(892)0 mu-"], inputs,
+                              dependencies = [PV3D('Hlt2')], 
+                              CombinationCut = cc, MotherCut = '(ALL)',
+                              Preambulo = [], shared = True, 
+                              ParticleCombiners = {'': 'ParticleAdder'})
     
 class MuMuCombiner(Hlt2Combiner) :
-  def __init__(self, inputs):
-
-      cc = "(abs(ACHILD(PHI,1)-ACHILD(PHI,2)) > (%(DPHI)s-1.0))"
-      Hlt2Combiner.__init__(self, 'JetsMuMu', ["[D0 -> mu+ mu+]cc","D0 -> mu+ mu-"], inputs,
-                            dependencies = [PV3D('Hlt2')],
-                            CombinationCut = cc,
-                            MotherCut = '(ALL)',
-                            Preambulo = [],
-                            shared = True,ParticleCombiners={ '' : 'ParticleAdder'})
+    def __init__(self, inputs):
+        cc = "(abs(ACHILD(PHI,1)-ACHILD(PHI,2)) > (%(DPHI)s-1.0))"
+        Hlt2Combiner.__init__(self, 'JetsMuMu', ["[D0 -> mu+ mu+]cc", 
+                                                 "D0 -> mu+ mu-"], inputs,
+                              dependencies = [PV3D('Hlt2')],
+                              CombinationCut = cc, MotherCut = '(ALL)',
+                              Preambulo = [], shared = True,
+                              ParticleCombiners = {'': 'ParticleAdder'})
 
-# Combine two jets with optional tags.
-class DiJetCombiner(Hlt2Combiner) :
-  def __init__(self, inputs, tag = None):
-      cc = ("(AMINCHILD(PT) > %(JET_PT)s)"
-            " & (abs(ACHILD(PHI,1) - ACHILD(PHI,2)) > %(DPHI)s)")
-      if tag == 'SV':
-        cc += (" & ((ACHILD(INFO(9600, -1), 1) != -1)"
-               " | (ACHILD(INFO(9600, -1), 2) != -1))")
-      elif tag == 'SVSV':
-        cc += (" & (ACHILD(INFO(9600, -1), 1) != -1)"
-               " & (ACHILD(INFO(9600, -1), 2) != -1)")
-      elif tag == 'MuMu':
-        cc += (" & (ACHILD(INFO(9601, -1), 1) != -1)"
-               " & (ACHILD(INFO(9601, -1), 2) != -1)")
-      elif tag == "SVMu":
-        cc += (" & (((ACHILD(INFO(9600, -1), 1) != -1)"
-               " & (ACHILD(INFO(9601, -1), 2) != -1))"
-               " | ((ACHILD(INFO(9601, -1), 1) != -1)"
-               " & (ACHILD(INFO(9600, -1), 2) != -1)))")
-      Hlt2Combiner.__init__(self, 'DiJet' + tag, 
-                            ["CLUSjet -> CELLjet CELLjet"], inputs,
-                            dependencies = [PV3D('Hlt2')],
-                            CombinationCut = cc,
-                            MotherCut = '(ALL)',
-                            Preambulo = [],
-                            shared = True, ParticleCombiners = 
-                            {'': 'ParticleAdder'})
+class DiJetCombiner(Hlt2Combiner):
+    def __init__(self, inputs, tag, pt):
+        tags = {
+            'SV':   (" & ((ACHILD(INFO(9600, -1), 1) != -1)"
+                     " | (ACHILD(INFO(9600, -1), 2) != -1))"),
+            'MV':   (" & (((ACHILD(INFO(9600, -1), 1) != -1)"
+                     " & (ACHILD(INFO(9601, -1), 1) != -1))"
+                     " | ((ACHILD(INFO(9601, -1), 2) != -1)"
+                     " & (ACHILD(INFO(9600, -1), 2) != -1)))"),
+            'SVSV': (" & (ACHILD(INFO(9600, -1), 1) != -1)"
+                     " & (ACHILD(INFO(9600, -1), 2) != -1)"),
+            'MuMu': (" & (ACHILD(INFO(9601, -1), 1) != -1)"
+                     " & (ACHILD(INFO(9601, -1), 2) != -1)"),
+            'SVMu': (" & (((ACHILD(INFO(9600, -1), 1) != -1)"
+                     " & (ACHILD(INFO(9601, -1), 2) != -1))"
+                     " | ((ACHILD(INFO(9601, -1), 1) != -1)"
+                     " & (ACHILD(INFO(9600, -1), 2) != -1)))")}
+        cc = ("(AMINCHILD(PT) > %(JET_PT)s)"
+              " & (abs(ACHILD(PHI,1) - ACHILD(PHI,2)) > %(DPHI)s)")
+        if tag in tags: cc += tags[tag]
+        Hlt2Combiner.__init__(self, 'JetsDiJet' + tag + pt, 
+                              ["CLUSjet -> CELLjet CELLjet"], inputs,
+                              dependencies = [PV3D('Hlt2')],
+                              CombinationCut = cc, MotherCut = '(ALL)',
+                              Preambulo = [], shared = True,
+                              ParticleCombiners = {'': 'ParticleAdder'})
diff --git a/Hlt/HltSettings/python/HltSettings/Jets/Jets_25ns_Draft2016.py b/Hlt/HltSettings/python/HltSettings/Jets/Jets_25ns_Draft2016.py
index ed5ab1d7e..16c0fd581 100644
--- a/Hlt/HltSettings/python/HltSettings/Jets/Jets_25ns_Draft2016.py
+++ b/Hlt/HltSettings/python/HltSettings/Jets/Jets_25ns_Draft2016.py
@@ -16,11 +16,32 @@ class Jets_25ns_Draft2016:
       """Returns a list of active lines."""
       
       lines = [
-         'Hlt2JetsDiJet',
-         'Hlt2JetsDiJetSV',
-         'Hlt2JetsDiJetSVSV',
+         'Hlt2JetsDiJetLowPt'    ,
+         'Hlt2JetsDiJetMVLowPt'  ,
+         'Hlt2JetsDiJetMuMuLowPt',
+         'Hlt2JetsDiJetSVLowPt'  ,
+         'Hlt2JetsDiJetSVMuLowPt',
+         'Hlt2JetsDiJetSVSVLowPt',
+         'Hlt2JetsJetLowPt'      ,
+         'Hlt2JetsJetDHLowPt'    ,
+         'Hlt2JetsJetMuLowPt'    ,
+         'Hlt2JetsJetSVLowPt'    ,
+         'Hlt2JetsDiJet'    ,
+         'Hlt2JetsDiJetMV'  ,
+         'Hlt2JetsDiJetMuMu',
+         'Hlt2JetsDiJetSV'  ,
          'Hlt2JetsDiJetSVMu',
-         'Hlt2JetsDiJetMuMu'
+         'Hlt2JetsDiJetSVSV',
+         'Hlt2JetsJet'      ,
+         'Hlt2JetsJetDH'    ,
+         'Hlt2JetsJetMu'    ,
+         'Hlt2JetsJetSV'    ,
+         'Hlt2JetsDiJetHighPt'  ,
+         'Hlt2JetsDiJetSVHighPt',
+         'Hlt2JetsJetHighPt'    ,
+         'Hlt2JetsJetDHHighPt'  ,
+         'Hlt2JetsJetMuHighPt'  ,
+         'Hlt2JetsJetSVHighPt'  
          ]
       
       return lines
@@ -33,22 +54,59 @@ class Jets_25ns_Draft2016:
       from Hlt2Lines.Jets.Lines import JetsLines
       d.update({
             JetsLines : {
-               'Prescale' : {'Hlt2JetsDiJet'                : 1.e-3,
-                             'Hlt2JetsDiJetSV'                : 1.e-2},
-               'Common' : {
-                  'GHOSTPROB' : 0.2,
-                  'DPHI'      : 1.5,
-                  'SV_VCHI2'  : 10,
-                  'SV_TRK_PT' : 500*MeV,
-                  'SV_TRK_IPCHI2' : 16,
-                  'SV_FDCHI2' : 25,
-                  'MU_PT'     : 1000*MeV,
-                  'MU_PROBNNMU'  : 0.5,
-                  'JET_PT' : 17*GeV},
-               
-               'JetBuilder' : {
-                  'JetPtMin' : 5 * GeV,
-                  'JetInfo' : False,
-                  'JetEcPath' : ""}}})
+        'Prescale': {
+            'Hlt2JetsDiJetLowPt'    : 1e-04,
+            'Hlt2JetsDiJetMVLowPt'  : 1e-02,
+            'Hlt2JetsDiJetMuMuLowPt': 1e-01,
+            'Hlt2JetsDiJetSVLowPt'  : 1e-03,
+            'Hlt2JetsDiJetSVMuLowPt': 1e-02,
+            'Hlt2JetsDiJetSVSVLowPt': 1e-01,
+            'Hlt2JetsJetLowPt'      : 1e-04,
+            'Hlt2JetsJetDHLowPt'    : 1e-02,
+            'Hlt2JetsJetMuLowPt'    : 1e-03,
+            'Hlt2JetsJetSVLowPt'    : 1e-03,
+            'Hlt2JetsDiJet'         : 1e-03,
+            'Hlt2JetsDiJetSV'       : 1e-02,
+            'Hlt2JetsJet'           : 1e-03,
+            'Hlt2JetsJetDH'         : 1e-02,
+            'Hlt2JetsJetMu'         : 1e-03,
+            'Hlt2JetsJetSV'         : 1e-03
+            },
+        'Postscale': {},
+        'Common': {
+            'D_TOS'        : 'Hlt1(Two)?Track(MVA)?(Muon)?Decision%TOS',
+            'D_MASS'       : 50*MeV,
+            'GHOSTPROB'    : 0.2,
+            'DPHI'         : 0,
+            'SV_VCHI2'     : 10,
+            'SV_TRK_PT'    : 500*MeV,
+            'SV_TRK_IPCHI2': 16,
+            'SV_FDCHI2'    : 25,
+            'MU_PT'        : 1000*MeV,
+            'MU_PROBNNMU'  : 0.5,
+            'JET_PT'       : 17*GeV,
+            },
+        'JetBuilder': {
+            'JetPtMin'  : 5*GeV,
+            'JetInfo'   : False,
+            'JetEcPath' : ''
+            },
+        'JetsDiJetLowPt'    : {'JET_PT': 10*GeV},
+        'JetsDiJetMVLowPt'  : {'JET_PT': 10*GeV},
+        'JetsDiJetMuMuLowPt': {'JET_PT': 10*GeV},
+        'JetsDiJetSVLowPt'  : {'JET_PT': 10*GeV},
+        'JetsDiJetSVMuLowPt': {'JET_PT': 10*GeV},
+        'JetsDiJetSVSVLowPt': {'JET_PT': 10*GeV},
+        'JetsJetLowPt'      : {'JET_PT': 10*GeV},
+        'JetsJetDHLowPt'    : {'JET_PT': 10*GeV},
+        'JetsJetMuLowPt'    : {'JET_PT': 10*GeV},
+        'JetsJetSVLowPt'    : {'JET_PT': 10*GeV},
+        'JetsDiJetHighPt'   : {'JET_PT': 60*GeV},
+        'JetsDiJetSVHighPt' : {'JET_PT': 50*GeV},
+        'JetsJetHighPt'     : {'JET_PT': 100*GeV},
+        'JetsJetDHHighPt'   : {'JET_PT': 40*GeV},
+        'JetsJetMuHighPt'   : {'JET_PT': 60*GeV},
+        'JetsJetSVHighPt'   : {'JET_PT': 70*GeV}
+        }})
       
       return d
-- 
GitLab