From 1d02182a5db04512ce9e6d0c8b10dcdc91746b95 Mon Sep 17 00:00:00 2001
From: Rosen Matev <rosen.matev@cern.ch>
Date: Thu, 2 Jun 2016 11:14:28 +0200
Subject: [PATCH 1/2] Fix cloning of Hlt2Line (copy HLT2 filter)

---
 Hlt/HltLine/doc/release.notes         | 3 +++
 Hlt/HltLine/python/HltLine/HltLine.py | 1 +
 2 files changed, 4 insertions(+)

diff --git a/Hlt/HltLine/doc/release.notes b/Hlt/HltLine/doc/release.notes
index 3345ca0ae..694715c52 100644
--- a/Hlt/HltLine/doc/release.notes
+++ b/Hlt/HltLine/doc/release.notes
@@ -5,6 +5,9 @@
 ! Purpose     : Infrastructure for HLT 'lines'
 ! -----------------------------------------------------------------------------
 
+! 2016-06-02 - Rosen Matev
+ - Fix cloning of Hlt2Line (copy HLT2 filter)
+
 ! 2016-05-15 - Rosen Matev
  - Fix warning printout
 
diff --git a/Hlt/HltLine/python/HltLine/HltLine.py b/Hlt/HltLine/python/HltLine/HltLine.py
index 205077668..56cc0a280 100755
--- a/Hlt/HltLine/python/HltLine/HltLine.py
+++ b/Hlt/HltLine/python/HltLine/HltLine.py
@@ -1843,6 +1843,7 @@ class Hlt2Line(object):
         __ODIN       = deepcopy ( args.get ( 'ODIN'       , self._ODIN        ) )
         __L0DU       = deepcopy ( args.get ( 'L0DU'       , self._L0DU        ) )
         __HLT1       = deepcopy ( args.get ( 'HLT1'       , self._HLT1        ) )
+        __HLT2       = deepcopy ( args.get ( 'HLT2'       , self._HLT2        ) )
         __relInfo    = deepcopy ( args.get ( 'RelatedInfo', self._RelatedInfo ) )
         __postscale  = deepcopy ( args.get ( 'postscale'  , self._postscale   ) )
         __Turbo      = deepcopy ( args.get ( 'Turbo'      , self._Turbo       ) )
-- 
GitLab


From 35bf845908fe6f695cfcb8f23e06bc52a45628fc Mon Sep 17 00:00:00 2001
From: Rosen Matev <rosen.matev@cern.ch>
Date: Thu, 2 Jun 2016 11:16:28 +0200
Subject: [PATCH 2/2] Send VELO-open beam-gas data and velo closing data to the
 (new) EXPRESS stream.

- Add EXPRESS stream with bit 36 for streaming directly from Hlt1.
- Add Hlt1BeamGas*VeloOpen lines.
---
 Hlt/Hlt1Lines/doc/release.notes               |  4 ++++
 .../python/Hlt1Lines/Hlt1BeamGasLines.py      | 21 +++++++++++++++----
 Hlt/HltConf/doc/release.notes                 |  4 ++++
 Hlt/HltConf/python/HltConf/HltOutput.py       | 11 +++++++---
 Hlt/HltSettings/doc/release.notes             |  1 +
 .../python/HltSettings/Hlt1TechnicalLines.py  |  1 +
 .../HltSettings/Physics_pp_Draft2016.py       |  2 ++
 7 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/Hlt/Hlt1Lines/doc/release.notes b/Hlt/Hlt1Lines/doc/release.notes
index e0a0565be..8f852332a 100644
--- a/Hlt/Hlt1Lines/doc/release.notes
+++ b/Hlt/Hlt1Lines/doc/release.notes
@@ -4,6 +4,10 @@
 ! Responsible : Roel Aaij, Gerhard Raven
 ! Purpose     : Definition and Configuration of Hlt1Lines
 !-----------------------------------------------------------------------------
+
+! 2016-06-02 - Rosen Matev
+ - Add Hlt1BeamGas*VeloOpen lines.
+
 ! 2016-05-22 - Dan Johnson
  - Add Hlt1 line to use Herschel information
 
diff --git a/Hlt/Hlt1Lines/python/Hlt1Lines/Hlt1BeamGasLines.py b/Hlt/Hlt1Lines/python/Hlt1Lines/Hlt1BeamGasLines.py
index 0712deb36..f9c65df43 100644
--- a/Hlt/Hlt1Lines/python/Hlt1Lines/Hlt1BeamGasLines.py
+++ b/Hlt/Hlt1Lines/python/Hlt1Lines/Hlt1BeamGasLines.py
@@ -117,18 +117,22 @@ class Hlt1BeamGasLinesConf(HltLinesConfigurableUser) :
                                       , 'Hlt1BeamGasCrossingForcedRecoFullZ' : 1.
                                       , 'Hlt1BeamGasCrossingParasitic'       : 1.
                                       , 'Hlt1BeamGasHighRhoVertices'         : 1.
+                                      , 'Hlt1BeamGasBeam1VeloOpen'           : 1.
+                                      , 'Hlt1BeamGasBeam2VeloOpen'           : 1.
                                       }
         ### Output Postscales
         , 'Postscale'               : { 'Hlt1BeamGasNoBeamBeam1'             : 'RATE(5)'
                                       , 'Hlt1BeamGasNoBeamBeam2'             : 'RATE(5)'
-                                      , 'Hlt1BeamGasBeam1'                   : 'RATE(20)'
-                                      , 'Hlt1BeamGasBeam2'                   : 'RATE(20)'
+                                      , 'Hlt1BeamGasBeam1'                   : 1.
+                                      , 'Hlt1BeamGasBeam2'                   : 1.
                                       , 'Hlt1BeamGasCrossingEnhancedBeam1'   : 'RATE(20)'
                                       , 'Hlt1BeamGasCrossingEnhancedBeam2'   : 'RATE(20)'
                                       , 'Hlt1BeamGasCrossingForcedReco'      : 'RATE(5)'
                                       , 'Hlt1BeamGasCrossingForcedRecoFullZ' : 'RATE(5)'
                                       , 'Hlt1BeamGasCrossingParasitic'       : 'RATE(5)'
                                       , 'Hlt1BeamGasHighRhoVertices'         : 'RATE(5)'
+                                      , 'Hlt1BeamGasBeam1VeloOpen'           : 1.
+                                      , 'Hlt1BeamGasBeam2VeloOpen'           : 1.
                                       }
         }
 
@@ -494,11 +498,20 @@ class Hlt1BeamGasLinesConf(HltLinesConfigurableUser) :
     def __apply_configuration__(self) :
         self.__create_nonParasitic_line__('ee', 'Beam1') #line name = 'Hlt1BeamGasNoBeamBeam1'
         self.__create_nonParasitic_line__('ee', 'Beam2')
-        self.__create_nonParasitic_line__('be', 'Beam1') #line name = 'Hlt1BeamGasBeam1'
-        self.__create_nonParasitic_line__('be', 'Beam2')
+        beam1_line = self.__create_nonParasitic_line__('be', 'Beam1') #line name = 'Hlt1BeamGasBeam1'
+        beam2_line = self.__create_nonParasitic_line__('be', 'Beam2')
         self.__create_nonParasitic_line__('bbenhanced', 'Beam1') #line name = 'Hlt1BeamGasCrossingEnhancedBeam1'
         self.__create_nonParasitic_line__('bbenhanced', 'Beam2')
         self.__create_nonParasitic_line__('bbforced', '') #line name = 'Hlt1BeamGasCrossingForcedReco'
         self.__create_nonParasitic_line__('bbforced', 'FullZ') #line name = 'Hlt1BeamGasCrossingForcedRecoFullZ'
         self.__create_nonParasitic_line__('highrho', '') #line name = Hlt1BeamGasHighRhoVertices
         self.__create_parasitic_line__() #line name = 'Hlt1BeamGasCrossingParasitic'
+
+        beam1_line.clone(
+            name='BeamGasBeam1VeloOpen',
+            ODIN='(ODIN_PASS(LHCb.ODIN.VeloOpen)) & ({})'.format(beam1_line._ODIN)
+        )
+        beam2_line.clone(
+            name='BeamGasBeam2VeloOpen',
+            ODIN='(ODIN_PASS(LHCb.ODIN.VeloOpen)) & ({})'.format(beam2_line._ODIN)
+        )
diff --git a/Hlt/HltConf/doc/release.notes b/Hlt/HltConf/doc/release.notes
index 37a6a1351..b8686ab70 100755
--- a/Hlt/HltConf/doc/release.notes
+++ b/Hlt/HltConf/doc/release.notes
@@ -4,6 +4,10 @@
 ! Purpose     : HLT Configuration
 ! -----------------------------------------------------------------------------
 
+! 2016-06-02 - Rosen Matev
+ - Add EXPRESS stream with bit 36 for streaming directly from Hlt1.
+   Currently, it accepts Hlt1Velo* and Hlt1BeamGas*VeloOpen lines.
+
 ! 2016-04-20 - Sascha Stahl
  - Propagate DataType to HltRecoConf
 ! 2016-05-15 - Rosen Matev
diff --git a/Hlt/HltConf/python/HltConf/HltOutput.py b/Hlt/HltConf/python/HltConf/HltOutput.py
index effd1227a..6796c043f 100644
--- a/Hlt/HltConf/python/HltConf/HltOutput.py
+++ b/Hlt/HltConf/python/HltConf/HltOutput.py
@@ -33,7 +33,8 @@ class HltOutputConf(LHCbConfigurableUser):
     __writer_filter_name__ = 'WriterFilter'
 
     ## Streams we know about: {name : rb}
-    __streams__ = {"VELOCLOSING" : 40,
+    __streams__ = {"EXPRESS"     : 36,
+                   "VELOCLOSING" : 40,
                    "HLT1NOBIAS"  : 48,
                    "TURBORAW"    : 85,
                    "BEAMGAS"     : 86,
@@ -73,7 +74,9 @@ class HltOutputConf(LHCbConfigurableUser):
                                              "TURCAL" : None,
                                              "VELOCLOSING" : None,
                                              "NOBIAS"      : None,
-                                             "HLT1NOBIAS"  : None},
+                                             "HLT1NOBIAS"  : None,
+                                             "EXPRESS" : None,
+                                             },
                  'StreamsWithLumi'        : ['FULL', 'TURCAL', 'TURBO', 'TURBORAW', 'SMOGPHYS', 'PARKED'],
                  'OutputAlgProperties'    : None,
                  'HltEndSequence'         : None,
@@ -291,7 +294,7 @@ class HltOutputConf(LHCbConfigurableUser):
         64-96: reserved for Hlt2
 
         NOTE: All bits are defined in an EDMS document:
-              https://edms.cern.ch/document/1146861/1.3
+              https://edms.cern.ch/document/1146861/
         NOTE: any change in the _meaning_ of any of the routing bits needs to be
               communicated with online, alignment and offline, to ensure the events
               are still properly routed!!!
@@ -306,6 +309,8 @@ class HltOutputConf(LHCbConfigurableUser):
         routingBits = { 33 : "HLT_PASS_RE('^Hlt1Lumi.*Decision$')"
                       # RB 35 Beam-Gas for Velo alignment
                       , 35 : "HLT_PASS_RE('Hlt1BeamGas.*Decision')"
+                      # RB 36 EXPRESS stream (bypasses Hlt2)
+                      , 36 : "HLT_PASS_RE('Hlt1(Velo.*|BeamGas.*VeloOpen)Decision')"
                       # RB 40 Velo (closing) monitoring
                       , 40 : "HLT_PASS_RE('Hlt1(Velo|BeamGas).*Decision')"
                       # RB 46 HLT1 physics for monitoring and alignment
diff --git a/Hlt/HltSettings/doc/release.notes b/Hlt/HltSettings/doc/release.notes
index 593cebdd4..05f4fb430 100644
--- a/Hlt/HltSettings/doc/release.notes
+++ b/Hlt/HltSettings/doc/release.notes
@@ -6,6 +6,7 @@
 
 ! 2016-06-02 - Rosen Matev
  - Port PID tweaks to 2016Draft settings
+ - Add Hlt1BeamGas*VeloOpen lines
 
 ! 2016-06-01 - Rosen Matev
  - Remove obsolete configuration from Hlt2_TrackingOnly
diff --git a/Hlt/HltSettings/python/HltSettings/Hlt1TechnicalLines.py b/Hlt/HltSettings/python/HltSettings/Hlt1TechnicalLines.py
index 274b0eddc..0ba4f4ce1 100644
--- a/Hlt/HltSettings/python/HltSettings/Hlt1TechnicalLines.py
+++ b/Hlt/HltSettings/python/HltSettings/Hlt1TechnicalLines.py
@@ -11,6 +11,7 @@ class Hlt1TechnicalLines:
         """Return a list of active lines."""
         lines = [
             'Hlt1BeamGasBeam1', 'Hlt1BeamGasBeam2',
+            'Hlt1BeamGasBeam1VeloOpen', 'Hlt1BeamGasBeam2VeloOpen',
             'Hlt1BeamGasHighRhoVertices',
             'Hlt1Lumi',
             'Hlt1L0Any', 'Hlt1L0AnyNoSPD',
diff --git a/Hlt/HltSettings/python/HltSettings/Physics_pp_Draft2016.py b/Hlt/HltSettings/python/HltSettings/Physics_pp_Draft2016.py
index 933a43165..a11f71438 100644
--- a/Hlt/HltSettings/python/HltSettings/Physics_pp_Draft2016.py
+++ b/Hlt/HltSettings/python/HltSettings/Physics_pp_Draft2016.py
@@ -244,6 +244,8 @@ class Physics_pp_Draft2016( object ):
                             'Postscale': {
                                 'Hlt1BeamGasBeam1': 1.,
                                 'Hlt1BeamGasBeam2': 1.,
+                                'Hlt1BeamGasBeam1VeloOpen': 1.,
+                                'Hlt1BeamGasBeam2VeloOpen': 1.,
                                 'Hlt1BeamGasHighRhoVertices': 'RATE(4)',
                             }
                                                 }
-- 
GitLab