diff --git a/DaVinciSys/CMakeLists.txt b/DaVinciSys/CMakeLists.txt index f7814943027a098596c29f946102c42d827f2091..e047419750ca81e3bea6100aed6465f006296d5e 100644 --- a/DaVinciSys/CMakeLists.txt +++ b/DaVinciSys/CMakeLists.txt @@ -15,8 +15,6 @@ gaudi_subdir(DaVinciSys) gaudi_depends_on_subdirs(DaVinciTests Phys/DaVinci - Phys/Tesla - Phys/TurboCache ) gaudi_add_test(QMTest QMTEST) diff --git a/Phys/Tesla/CMakeLists.txt b/Phys/Tesla/CMakeLists.txt deleted file mode 100644 index d4a6b6632826114d87ae4bf03414f7e2b43b9203..0000000000000000000000000000000000000000 --- a/Phys/Tesla/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -################################################################################ -# Package: Tesla -################################################################################ -gaudi_subdir(Tesla) - -gaudi_depends_on_subdirs(Event/HltEvent - Event/MicroDst - Det/DDDB - GaudiConfUtils - Hlt/HltDAQ - Phys/TeslaTools - Phys/DaVinciKernel) - -gaudi_install_python_modules() - -gaudi_add_test(QMTest QMTEST) diff --git a/Phys/Tesla/doc/release.notes b/Phys/Tesla/doc/release.notes deleted file mode 100644 index 840695ab54c28c1a7d98a6d72762f53f2253cbed..0000000000000000000000000000000000000000 --- a/Phys/Tesla/doc/release.notes +++ /dev/null @@ -1,185 +0,0 @@ -!----------------------------------------------------------------------------- -Package : Tesla -Package Coordinator : Sean Benson -Purpose : Turbo Stream Analysis -!----------------------------------------------------------------------------- - -! 2016-07-27 - Mika Vesterinen - - Added chain of Tesla -> TupleMaker tests with and without streaming - - Phys/Tesla/tests/qmtest/tesla.qms/tesla_step_oneline.qmt - - Phys/Tesla/tests/qmtest/tesla.qms/tesla_step_streams.qmt - - Phys/Tesla/tests/qmtest/tesla.qms/tuple_step_oneline.qmt - - Phys/Tesla/tests/qmtest/tesla.qms/tuple_step_streams.qmt - -!========================== Tesla v2r2 2016-06-13 ============================ - -! 2016-05-30 - Sean Benson - - Truth matching for Turbo++. - - Option to kill Hlt2 selection reports. - - Configure TrackSys to ensure accurate IP calculation. - -!========================== Tesla v2r1 2016-04-25 ============================ - -! 2016-04-24 - Sean Benson - - Add DecReportsDecoder for online mode. - -!========================== Tesla v2r0 2016-04-11 ============================ - -! 2016-04-10 - Sean Benson - - Adjustments for qmtests. - - Add slot to veto raw bank removal in online mode. - -! 2016-04-08 - Eduardo Rodrigues - - Major version number to reflect the major change from 2016-03-11 - (no worries since v1r15 did not get used anywhere). - -! 2016-04-08 - Sean Benson - - Adjustments for qmtests. - -! 2016-04-07 - Sean Benson - - Adjust qmtest for fix. - - Lumi filter fix. - - More qmtests. - -!========================== Tesla v1r15 2016-04-05 =========================== - -! 2016-03-30 - Sean Benson - - Add more qmtests. - -! 2016-03-11 - Sean Benson - - Major change: Adapt to a single TeslaReportAlgo instance for complete sharing. - -!========================== Tesla v1r14 2016-02-08 =========================== - -! 2016-02-03 - Sean Benson - - Add packing of calo clusters and hypos. - -!========================== Tesla v1r13 2015-10-19 =========================== - -! 2015-10-12 - Sean Benson - - Add support for RelatedInfo packing. - - Add KillInputTurbo option to rerun (only useful for my personal debugging). - -!========================== Tesla v1r12 2015-09-09 =========================== - -! 2015-8-20 - Sean Benson - - PrintDuplicates algorithm included - -!========================= Tesla v1r11 2015-08-14 ========================= - -! 2015-8-15 - Sean Benson - - Do not write digits, associate to raw event. - -!========================== Tesla v1r10 2015-08-07 =========================== - -! 2015-7-31 - Sean Benson - - Facilitate neutral PP2MC matching. - -!========================== Tesla v1r9 2015-07-27 ============================ - -! 2015-07-20 - Marco Clemencic - - Added workaround for ROOT-7492 (some dictionaries not loaded). - -!========================= Tesla v1r8 2015-06-18 ========================= - -! 2015-6-16 - Sean Benson - - Add option to make monitoring histograms in the event loop. - -!========================= Tesla v1r7 2015-06-12 ========================= - -! 2015-6-12 - Sean Benson - - Fix vertex reports decoding. - -!========================= Tesla v1r6 2015-06-10 ========================= - -! 2015-6-10 - Sean Benson - - Make PV reports location an option. - -!=========================== Tesla v1r5 2015-06-02 =========================== - -! 2015-5-28 - Sean Benson - - Configure PP2MCP more efficiently. - -! 2015-5-14 - Sean Benson - - Add RecSummary location. - -!=========================== Tesla v1r4 2015-05-04 =========================== - -! 2015-5-4 - Sean Benson - - Remove dependency on TurboStreamProd. - -! 2015-4-27 - Sean Benson - - Add packed relations table location. - - Add dependency on TurboStreamProd. - -! 2015-4-11 - Sean Benson - - Add relations table generation for XDSTs and LDSTs. - -! 2015-3-31 - Sean Benson - - Fix CMake for DDDB tags. - - Add previously private lumi tests. - -! 2015-3-29 - Sean Benson - - Files in TestFileDB. - -! 2015-3-12 - Sean Benson - - Test fixes. - -! 2015-3-11 - Sean Benson - - Support refitted PV persistence. - - Remove deprecated "PreSplit" and "ReportVersion" options. - -!=========================== Tesla v1r3 2015-03-04 =========================== - -! 2015-2-18 - Sean Benson - - Containers are only written when created. - - ROOT compression factor of LZMA:6 added. - -! 2015-2-11 - Sean Benson - - Tesla created objects are now packed. - - TES objects moved down one level, now under /Event/Turbo/HLTLINE/OBJECT - - PV selection harmonised with offline. - - PVs now the same for all resurrections in each event. - -!=========================== Tesla v1r2 2015-01-16 =========================== - -! 2015-1-15 - Sean Benson - - Update to tesla.containers and tesla.default tests. - - Lumi algorithms and Turbo raw bank conversion included in Tesla. - -! 2015-01-15 - Eduardo Rodrigues - - Added python/Tesla/__init__.py to please CMake. - -!========================= Tesla v1r1 2014-12-17 ========================= - -! 2014-12-08 - Sean Benson - - Add Turbo_THRESHOLD.py to show example of running Tesla - on Moore output from ThresholdSettings. - -! 2014-12-03 - Sean Benson - - Fix unit tests. - -! 2014-12-02 - Sean Benson - - PVs moved to Tesla-specific TES location - - Tesla now expects a list of trigger lines instead of a string specifying one. - -! 2014-11-07 - Sean Benson - - New QMTests. - - Make Tesla split aware - -!========================= Tesla v1r0 2014-11-05 ========================= - -! 2014-10-13 - Sean Benson - - Added 2 QMTests, container.qmt checks output values are still good, - default.qmt checks for errors. - - Changed default output level. - -! 2014-10-09 - Sean Benson - - Give Tesla more slots so the report algorithm does not need - congiguring by the user. - -! 2014-09-07 - Sean Benson - - Temporarily send users in Turbo.py to use the TCK in my public area. - -! 2014-09-07 - Sean Benson - - First import. diff --git a/Phys/Tesla/options/Turbo.py b/Phys/Tesla/options/Turbo.py deleted file mode 100755 index 51d6b7f8fb4e337198cb21f08880090f0f2639ef..0000000000000000000000000000000000000000 --- a/Phys/Tesla/options/Turbo.py +++ /dev/null @@ -1,33 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -# SAMPLE FOR TUTORIAL: RunningTesla -# FOR LATEST SCRIPT SEE Turbo_NewLine.py - -from Configurables import Tesla -from Gaudi.Configuration import * - -from Configurables import RecombineRawEvent, DecodeRawEvent -RecombineRawEvent() -DecodeRawEvent().DataOnDemand = True - -from Configurables import ConfigTarFileAccessSvc -ConfigTarFileAccessSvc().File='/afs/cern.ch/work/s/sbenson/public/forTeslaExtendedReps/config.tar' - -Tesla().TriggerLine = "Hlt2IncPhi" -Tesla().EvtMax = -1 - -from GaudiConf.IOHelper import IOHelper -ioh = IOHelper() -ioh.setupServices() -ioh.inputFiles([ - "root://eoslhcb.cern.ch//eos/lhcb/user/s/sbenson/DSTs/TeslaChain/RemadeSel_phiphi_1k_Tutorial_0044.dst" -]) -Tesla().outputFile = "Turbo.dst" diff --git a/Phys/Tesla/options/Turbo_NewLine.py b/Phys/Tesla/options/Turbo_NewLine.py deleted file mode 100755 index d72c6e6854a15f1db357565a2a0327632323aa8b..0000000000000000000000000000000000000000 --- a/Phys/Tesla/options/Turbo_NewLine.py +++ /dev/null @@ -1,31 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from Configurables import Tesla -from Gaudi.Configuration import * - -from Configurables import RecombineRawEvent, DecodeRawEvent -RecombineRawEvent() -DecodeRawEvent().DataOnDemand = True - -# Path to private TCK -from Configurables import ConfigTarFileAccessSvc -ConfigTarFileAccessSvc().File='/afs/cern.ch/user/s/sbenson/cmtuser/Moore_v23r2/TCKData/config.tar' - -Tesla().TriggerLines = ["Hlt2IncPhi"] # Enter your trigger line here -Tesla().EvtMax = -1 - -from GaudiConf.IOHelper import IOHelper -ioh = IOHelper() -ioh.setupServices() -ioh.inputFiles([ - "PATH/TO/HLT/PROCESSED/DATA" -]) -Tesla().outputFile = "PATH/TO/OUTPUT" diff --git a/Phys/Tesla/options/Turbo_THRESHOLD.py b/Phys/Tesla/options/Turbo_THRESHOLD.py deleted file mode 100755 index 4d6dde26313cd2967963249b6752c6a1367d849f..0000000000000000000000000000000000000000 --- a/Phys/Tesla/options/Turbo_THRESHOLD.py +++ /dev/null @@ -1,45 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from Configurables import Tesla -from Gaudi.Configuration import * - -from Configurables import RecombineRawEvent, DecodeRawEvent -RecombineRawEvent() -DecodeRawEvent().DataOnDemand = True - -## Tell HltANNSvc the ID of your line -# NEEDED WHEN NOT RUNNING FROM A TCK -# YOU CAN FIND THE ID IN THE PYTHON IMPLEMENTATION -# IN Hlt/Hlt2Lines -from Configurables import HltANNSvc -Hlt2ID = HltANNSvc().Hlt2SelectionID -if "Hlt2Global" not in Hlt2ID : Hlt2ID.update( { "Hlt2Global" : 2 } ) -HltANNSvc().Hlt1SelectionID = { 'PV3D' : 10103 - ,'ProtoPV3D' : 10117 -} -Hlt2ID.update( { 'Hlt2IncPhiDecision' : 50000 - ,'Hlt2IncPhiSidebandsDecision' : 50003 - ,'Hlt2IncPhiTrackFitDecision' : 50002 - } ) -#from Configurables import ConfigTarFileAccessSvc -#ConfigTarFileAccessSvc().File='/afs/cern.ch/user/s/sbenson/cmtuser/Moore_v23r2/TCKData/config.tar' - -Tesla().TriggerLines = ["Hlt2IncPhi"] # Enter your trigger line here -Tesla().EvtMax = -1 -Tesla().OutputLevel = DEBUG - -from GaudiConf.IOHelper import IOHelper -ioh = IOHelper() -ioh.setupServices() -ioh.inputFiles([ - "/PATH/TO/INPUT" -]) -Tesla().outputFile = "OUTPUT" diff --git a/Phys/Tesla/options/config.tar b/Phys/Tesla/options/config.tar deleted file mode 100644 index bb7558d01e05eb49f4b241a7cac63ba97ea5fa3a..0000000000000000000000000000000000000000 Binary files a/Phys/Tesla/options/config.tar and /dev/null differ diff --git a/Phys/Tesla/python/Tesla/Configuration.py b/Phys/Tesla/python/Tesla/Configuration.py deleted file mode 100644 index 225406d5ea3d4d0730c4ac24044c6de6ccc99e0a..0000000000000000000000000000000000000000 --- a/Phys/Tesla/python/Tesla/Configuration.py +++ /dev/null @@ -1,1451 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2020 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from __future__ import print_function -import logging as log -import os -import re - -from Configurables import ( - AddressKillerAlg, - AuditorSvc, - CaloClusterCloner, - CaloClusterMCTruth, - CaloDigit2MCLinks2Table, - CaloDigitCloner, - CaloHypoCloner, - ChargedPP2MC, - CopyLinePersistenceLocations, - CopyParticle2PVRelationsFromLinePersistenceLocations, - CopyParticle2RelatedInfoFromLinePersistenceLocations, - CopyProtoParticle2MCRelations, - CopySignalMCParticles, - DataOnDemandSvc, - DataPacking__Pack_LHCb__CaloClusterPacker_ as PackCaloClusters, - DataPacking__Unpack_LHCb__CaloClusterPacker_ as UnpackCaloClusters, - DecodeRawEvent, - DstConf, - EventNodeKiller, - EventSelector, - Gaudi__DataCopy as DataCopy, - Gaudi__DataLink as DataLink, - GaudiSequencer, - HltPackedDataDecoder, - HltRoutingBitsFilter, - HltSelReportsWriter, - InputCopyStream, - LHCbApp, - LHCbConfigurableUser, - LoKi__HDRFilter as HltDecReportsFilter, - LoKiSvc, - LumiAlgsConf, - NeutralPP2MC, - OutputStream, - P2MCPFromProtoP, - PackCaloHypo as PackCaloHypos, - PackMCParticle, - PackMCVertex, - PackParticlesAndVertices, - ProtoParticleCloner, - PrintDuplicates, - RawEventFormatConf, - RawEventJuggler, - RecSummaryFromSelReports, - RecombineRawEvent, - RecordStream, - SequencerTimerTool, - TCKLinePersistenceSvc, - TESCheck, - TeslaLineChecker, - TeslaReportAlgo, - TimingAuditor, - TrackAssociator, - TrackClonerWithClusters, - TurboConf, - TurboPrescaler, - UnpackCaloHypo as UnpackCaloHypos, - UnpackParticlesAndVertices, - bankKiller -) -from Gaudi.Configuration import * -from GaudiConf import IOExtension, IOHelper -from GaudiConf import PersistRecoConf -import GaudiKernel.ProcessJobOptions -from LHCbKernel.Configuration import * -from RawEventCompat.Configuration import ReverseDict as RawEventLocationsToBanks - - -# Locations of Track and ProtoParticle objects created in HLT2 that are not -# defined as part of the 'standard reconstruction' that is saved in PersistReco -# We need to know these locations in Tesla so that we can truth match the objects -# See LHCBPS-1807 for more details, and how this list was obtained -_extra_track_locations = [ - # These two locations are defined as part of the standard HLT2 reconstruction - # 'Hlt2/Track/Best/Downstream', - # 'Hlt2/Track/Best/Long', - 'Hlt2/Track/Best/LongDownstreamClones', - 'Hlt2/Track/Best/LongV0Vertices', - 'Hlt2/Track/Best/Muon', - 'Hlt2/Track/Best/Ttrack', - 'Hlt2/Track/ComplementForward', - 'Hlt2/Track/Downstream', - 'Hlt2/Track/Forward', - 'Hlt2/Track/Match', - 'Hlt2/Track/Seeding', - 'Hlt2/TrackBest/PID/MuonSegments', - 'Hlt2/TrackEff/Track/FullDownstream', - 'Hlt2/TrackEff/Track/MuonTT', - 'Hlt2/TrackEff/Track/StandaloneMuon', - 'Hlt2/TrackEff/Track/VeloMuon' -] -_extra_protoparticle_locations = [ - # These two locations are defined as part of the standard HLT2 reconstruction - # 'Hlt2/ProtoP/Downstream/Charged/WithAllPIDs', - # 'Hlt2/ProtoP/Long/Charged/WithAllPIDs', - 'Hlt2/ProtoP/Best/FullDownstream', - 'Hlt2/ProtoP/Best/MuonTT', - 'Hlt2/ProtoP/Best/VeloMuon', - 'Hlt2/ProtoP/Hlt2/TrackEff/Velo' -] - - -def _strip_root(root, locs): - """Return list of paths `loc` stripped of the `root` prefix. - - Examples - -------- - - >>> _strip_root('/Event/Turbo', ['/Event/Turbo/Foo']) - 'Foo' - >>> _strip_root('/Event', ['/Event/Turbo/Foo']) - 'Turbo/Foo' - >>> # Path is already relative - >>> _strip_root('/Event', ['Turbo/Foo']) - 'Turbo/Foo' - >>> # Complains if the prefix doesn't match the root - >>> _strip_root('/Event/Ultra', ['/Event/Turbo/Foo']) - AssertionError - """ - root = root.rstrip('/') - ret = [] - for l in locs: - # Only need to modify paths that are already absolute - if l.startswith('/'): - # Strip off the root the prefixes the string - l = l.replace(root + '/', '') - assert not l.startswith('/'), \ - 'TES path still prefixed: {0}'.format(l) - ret.append(l) - return ret - - -class Tesla(LHCbConfigurableUser): - __used_configurables__ = [ LHCbApp, LumiAlgsConf, RawEventJuggler, DecodeRawEvent, RawEventFormatConf, DstConf, RecombineRawEvent, PackParticlesAndVertices, TrackAssociator, ChargedPP2MC, TurboConf] - - __slots__ = { - "EvtMax" : -1 # Maximum number of events to process - , "SkipEvents" : 0 # Skip to event - , "Simulation" : True # True implies use SimCond - , "DataType" : '2012' # Data type, can be [ 'DC06','2008' etc...] - , "InputType" : 'DST' # Input type, can be [ 'DST','LDST' etc...] - , "DDDBtag" : 'default' # default as set in DDDBConf for DataType - , "CondDBtag" : 'default' # default as set in DDDBConf for DataType - , 'Persistency' : '' # None, Root or Pool? - , 'OutputLevel' : 4 # Er, output level - , 'PackerOutputLevel' : 4 # Packer output level - , 'DuplicateCheck' : False # Do we want to add the algorithm to check for duplicates - , 'KillInputTurbo' : False # If rerunning Tesla, kill input Turbo locations - , "outputFile" : 'Tesla.dst' # output filename - , "outputPrefix" : '' # This is prepended to the stream name - , "outputSuffix" : '.dst' # This is appended to the stream name - , 'WriteFSR' : False # copy FSRs as required - , 'PV' : "Offline" # Associate to the PV chosen by the HLT or the offline one - , 'VertRepLoc' : "Hlt2" # Do we use the maker from Hlt1 or Hlt2 - , 'TriggerLines' : [] # Which trigger lines - , 'Mode' : "Offline" # "Online" (strip unnecessary banks and run lumi algorithms) or "Offline"? - # "Online" means running on data from the pit - # "Offline" is used on DSTs, i.e. the output of Brunel - , 'Pack' : True # Do we want to pack the objects? - , 'SplitRawEventInput' : 0.3 - , 'SplitRawEventOutput' : 4.3 - , 'Monitors' : [] # Histogram monitors to run in the job - , 'Histogram' : "" # Name of histogram file - , 'VetoJuggle' : True # True if raw event removal not required in online mode - , 'IgnoreDQFlags' : True # Pass IgnoreDQFlags to LHCbApp - , 'PersistRecoMC' : True # Match persistReco objects to MC - , 'ProtoTypesPR' : ["long","down"] # Which protoparticle types are in Turbo++ - , 'KillInputHlt2Reps' : False # Kill input Hlt2 reps to save space - , 'InputHlt2RepsToKeep' : [] # List of selection names of reports to keep (if KillInputHlt2Reps is True) - , 'HDRFilter' : False # Filter on trigger lines or not - , 'Park' : False # If prescaled streams, make a parked version - , 'PRtracks' : [] # PR track locations - , 'PRchargedPP' : [] # PR protoparticle locations - , 'PRclusters' : [] # PR cluster locations - , 'PRneutralPP' : [] # PR neutral protoparticle locations - , 'Streams' : {} # Streams, empty if no streaming - , 'ValidateStreams' : False # Run validation to compare streams and TriggerLines - , 'EnableLineChecker' : True # Enable the comparison of lines in the DecReports and the input to TeslaReportsAlgo - , 'IgnoredLines' : [ ] # Regexes for lines excluded from the comparison of DecReports and input to TeslaReportsAlgo - , 'FilterMC' : False # Save a subset of the input MC particles and vertices under `Tesla.base, mimicking a microDST writer` - , 'ILinePersistenceSvc' : "TCKLinePersistenceSvc" # Implementation of the ILinePersistenceSvc to use (for >= 2017 data types) - , 'CandidatesFromSelReports' : False # If True and DataType >= 2017, take Turbo candidates from Hlt2SelReports rather than - # from the DstData raw bank (i.e. behave as if DataType =< 2016) - } - _propertyDocDct ={ - "EvtMax" : "Maximum number of events to process, default all" - , "SkipEvents" : "Events to skip, default 0" - , "Simulation" : "True implies use SimCond" - , "DataType" : "Data type, can be [ 'DC06','2008' ...]" - , "InputType" : "Input type, can be [ 'DST','LDST' ...]" - , "DDDBtag" : "Databse tag, default as set in DDDBConf for DataType" - , "CondDBtag" : "Databse tag, default as set in DDDBConf for DataType" - , 'Persistency' : "Root or Pool?" - , 'OutputLevel' : "Output level" - , 'PackerOutputLevel': "Packer output level" - , 'DuplicateCheck' : "Add the test for duplicates?" - , 'KillInputTurbo' : "Are we rerunning Tesla" - , "outputFile" : 'output filename, automatically selects MDF or InputCopyStream' - , "outputPrefix" : 'This is prepended to the stream name' - , "outputSuffix" : 'This is appended to the stream name' - , 'WriteFSR' : 'copy FSRs as required' - , 'PV' : 'Associate to the PV chosen by the HLT or the offline one' - , 'VertRepLoc' : 'Do we use the maker from Hlt1 or Hlt2' - , 'TriggerLines' : 'Which trigger line to process' - , 'Mode' : '"Online" (strip unnecessary banks and run lumi algorithms) or "Offline"?' - , 'Pack' : 'Do we want to pack the object?' - , 'SplitRawEventInput': "How is the event split up in the input? Propagated to RawEventJuggler() and DecodeRawEvent()." - , 'SplitRawEventOutput': "How should the event be split up in the output?" - , 'Monitors' : 'Histogram monitors to run in the job' - , 'Histogram' : 'File name for histogram file' - , 'VetoJuggle' : 'Do we want to stop raw bank removal (assume happened further upstream)' - , 'IgnoreDQFlags' : 'Pass IgnoreDQFlags to LHCbApp' - , 'PersistRecoMC' : 'Match persistReco objects to MC' - , 'ProtoTypesPR' : 'Which protoparticle types are in Turbo++' - , 'KillInputHlt2Reps':'Kill input Hlt2 reps to save space' - , 'InputHlt2RepsToKeep': 'List of selection names of reports to keep (if KillInputHlt2Reps is True)' - , 'HDRFilter' : 'Filter on trigger lines or not' - , 'Park' : 'If prescaled streams, make a parked version' - , 'PRtracks' : 'PR track locations' - , 'PRchargedPP' : 'PR protoparticle locations' - , 'PRclusters' : 'PR cluster locations' - , 'PRneutralPP' : 'PR neutral protoparticle locations' - , 'Streams' : 'Streams, empty if no streaming' - , 'ValidateStreams' : 'Run validation to compare streams and TriggerLines' - , 'EnableLineChecker' : 'Enable the comparison of lines in the DecReports and the input to TeslaReportsAlgo' - , 'IgnoredLines' : 'Regexes for lines excluded from the comparison of DecReports and input to TeslaReportsAlgo' - , 'FilterMC' : "Save a subset of the input MC particles and vertices under `Tesla.base`, mimicking a microDST writer" - , 'ILinePersistenceSvc' : "Implementation of the ILinePersistenceSvc to use (for >= 2017 data types)" - , 'CandidatesFromSelReports' : ("If True and DataType >= 2017, take Turbo candidates from Hlt2SelReports rather than " - "from the DstData raw bank (i.e. behave as if DataType =< 2016)") - - } - - writerName = "DstWriter" - teslaSeq = GaudiSequencer("TeslaSequence") - base = "Turbo/" - neutral_pp2mc_loc = "Relations/Turbo/NeutralPP2MC" - - - def _safeSet(self,conf,param): - for p in param: - if (not self.isPropertySet(p)) or conf.isPropertySet(p): - continue - conf.setProp(p,self.getProp(p)) - - def _configureDataOnDemand(self) : - if 'DataOnDemandSvc' in ApplicationMgr().ExtSvc : - ApplicationMgr().ExtSvc.pop('DataOnDemandSvc') - else: - dod = DataOnDemandSvc() - if dod not in ApplicationMgr().ExtSvc : - ApplicationMgr().ExtSvc.append( dod ) - - def _configureHistos(self): - monitorSeq = GaudiSequencer('TelaMonitors') - monitorSeq.IgnoreFilterPassed = True - monitorSeq.Members += self.getProp('Monitors') - self.teslaSeq.Members += [ monitorSeq ] - # - ApplicationMgr().HistogramPersistency = "ROOT" - - if ( self.getProp("Histogram") != "" ): - HistogramPersistencySvc().OutputFile = self.getProp("Histogram") - - def _configureTimingAuditor(self): - """Enable the printing of the algorithm timing table.""" - ApplicationMgr().ExtSvc += ['ToolSvc', 'AuditorSvc'] - ApplicationMgr().AuditAlgorithms = True - AuditorSvc().Auditors += ['TimingAuditor'] - - TimingAuditor().addTool(SequencerTimerTool, name='TIMER') - TimingAuditor().TIMER.NameSize = 60 - # Disable INFO output from the default timer tool - SequencerTimerTool().OutputLevel = WARNING - - def _configureTrackTruth(self,assocpp,trackLoc) : - assoctr = TrackAssociator("TurboAssocTr"+trackLoc.replace("/", "")) - assoctr.OutputLevel = self.getProp('OutputLevel') - assoctr.TracksInContainer = trackLoc - assocpp.TrackLocations += [ trackLoc ] - # Add it to a sequence - return assoctr - - def _configureDigitsTruth(self) : - assocdigits = CaloDigit2MCLinks2Table("TurboDigitAssoc") - return - - def _configureClustersAndProtosTruth(self,digits,clusters,protos,protoTabLoc): - retSeq = GaudiSequencer("NeutralTruth") - clusterTabLoc = self.base + "Relations/CaloClusters" - - assoccluster = CaloClusterMCTruth("TurboClusterAssoc") - assoccluster.OutputLevel = self.getProp('OutputLevel') - assoccluster.Input = digits - assoccluster.Output = clusterTabLoc - assoccluster.Clusters+=clusters - - assocneutral = NeutralPP2MC("TurboNeutralPP2MC") - assocneutral.InputData += protos - assocneutral.OutputLevel = self.getProp('OutputLevel') - assocneutral.OutputTable = protoTabLoc - assocneutral.MCCaloTable = clusterTabLoc - - retSeq.Members += [assoccluster,assocneutral] - return retSeq - - def _unpackMC(self): - DataOnDemandSvc().NodeMap['/Event/MC'] = 'DataObject' - DataOnDemandSvc().AlgMap["MC/Particles"] = "UnpackMCParticle" - DataOnDemandSvc().AlgMap["MC/Vertices"] = "UnpackMCVertex" - - - def _filterMCParticlesSequence(self, relations_locations): - """Copy signal and associated MC particles to microDST-like locations. - - In the Stripping, the microDST machinery only saves a subset of the - input MC particles and vertices. This subset contains two possibly - overlapping contributions: - - 1. The MCParticle objects in the signal decay tree; and - 2. The MCParticle objects which can be associated to the reconstructed - objects selected by at least one stripping line. - - To mimic this behaviour in Tesla, we run almost the same set of - microDST algorithms, using the relations tables Tesla makes to find the - MC particles that have been associated to the reconstruction. - """ - output_prefix = self.base.rstrip('/') - output_level = self.getProp('OutputLevel') - - # Algorithm to clone the existing relations tables and the MC particles - # and vertices these tables point to from their original location to - # the same location prefixed by /Event/Turbo - copy_pp2mcp = CopyProtoParticle2MCRelations() - copy_pp2mcp.InputLocations = relations_locations - copy_pp2mcp.OutputPrefix = output_prefix - # Don't use the assumed copy of the input ProtoParticle objects, as - # Tesla doesn't need to copy them (they're already under /Event/Turbo) - copy_pp2mcp.UseOriginalFrom = True - copy_pp2mcp.OutputLevel = output_level - - # Algorithm to clone all MC particles and vertices that are associated - # to the simulated signal process (using LHCb::MCParticle::fromSignal) - copy_signal_mcp = CopySignalMCParticles() - copy_signal_mcp.OutputPrefix = output_prefix - # Don't copy the associated reconstruction, as Tesla already saves it - copy_signal_mcp.SaveAssociatedRecoInfo = False - copy_signal_mcp.OutputLevel = output_level - - algorithms = [copy_pp2mcp, copy_signal_mcp] - seq = GaudiSequencer('TurboMCFiltering', Members=algorithms) - - return seq - - def _configureForOnline(self,stream): - # - DecodeRawEvent().DataOnDemand=False - writer=InputCopyStream( self.writerName+stream ) - self._safeSet(DstConf(), ['SplitRawEventOutput']) - - # we can only do this if we are setting one output writer - if not self.getProp("Streams"): - # Use RawEventJuggler to create the Turbo stream raw event format - tck = "0x409f0045" # DUMMY - TurboBanksSeq=GaudiSequencer("TurboBanksSeq") - RawEventJuggler().TCK=tck - RawEventJuggler().Input="Moore" - RawEventJuggler().Output=self.getProp("SplitRawEventOutput") - RawEventJuggler().Sequencer=TurboBanksSeq - RawEventJuggler().WriterOptItemList=writer - RawEventJuggler().KillExtraNodes=True - RawEventJuggler().KillExtraBanks=True - RawEventJuggler().KillExtraDirectories = True - if not self.getProp('VetoJuggle'): - self.teslaSeq.Members += [TurboBanksSeq] - - # we should already have configured the lumiAgls by now - writer.AcceptAlgs += ["LumiSeq","PhysFilter"] - - def _configureLumi(self): - - # Begin Lumi configuration - lumiSeq = GaudiSequencer("LumiSeq") - # - # Add ODIN decoder to LumiSeq *** - from DAQSys.Decoders import DecoderDB - CreateODIN=DecoderDB["createODIN"].setup() - #******************************** - # - # Main algorithm config - lumiCounters = GaudiSequencer("LumiCounters") - lumiCounters.Members+=[CreateODIN] - lumiSeq.Members += [ lumiCounters ] - - LumiAlgsConf().LumiSequencer = lumiCounters - LumiAlgsConf().OutputLevel = self.getProp('OutputLevel') - LumiAlgsConf().InputType = "MDF" - # - # Filter out Lumi only triggers from further processing, but still write to output - # Trigger masks changed in 2016, see LHCBPS-1486 - physFilterRequireMask = [] - if self.getProp( "DataType" ) in ["2012","2015"]: # 2012 needed for nightlies tests. - physFilterRequireMask = [ 0x0, 0x4, 0x0 ] - else: - physFilterRequireMask = [ 0x0, 0x0, 0x80000000 ] - physFilter = HltRoutingBitsFilter( "PhysFilter", RequireMask = physFilterRequireMask ) - - FSRWriter = RecordStream( "FSROutputStreamDstWriter") - FSRWriter.OutputLevel = INFO - self.teslaSeq.Members += [lumiSeq, physFilter] - - def _configureOutput(self): - - TeslaReportAlgoSeq = GaudiSequencer('TeslaReportAlgoSeq') - - lines = self.getProp('TriggerLines') - turbo_streams = self.getProp('Streams') - - self.teslaSeq.Members += [ TeslaReportAlgoSeq ] - - # Setting up online - if self.getProp('Mode') is "Online": - from DAQSys.DecoderClass import decoderToLocation - from DAQSys.Decoders import DecoderDB - hlt_locs = [ "Hlt/VertexReports/PV3D", "Hlt2/SelReports","Hlt2/DecReports" ] - odin=DecoderDB["createODIN"].setup() - TeslaReportAlgoSeq.Members += [ odin ] + [ decoderToLocation(DecoderDB,loc).setup() for loc in hlt_locs ] - - totalLines=[] - if turbo_streams: - lines_left_over = lines[:] - missing_lines = [] - for stream in turbo_streams: - for line in turbo_streams[stream]['lines']: - totalLines.append(line) - try: - lines_left_over.remove(line) - except ValueError: - missing_lines.append(line) - if self.getProp('ValidateStreams'): - msg = "Lines missing from streaming:\n {}\nLines not in turbo but in streams:\n {}\n".format( - '\n '.join(lines_left_over), '\n '.join(missing_lines)) - assert lines_left_over==[] and missing_lines==[], msg - print("Turbo validated") - else: - totalLines = lines - - if self.getProp('EnableLineChecker'): - lineChecker = TeslaLineChecker("TeslaLineChecker") - lineChecker.RequestedLines = totalLines - lineChecker.IgnoredLines = self.getProp("IgnoredLines") - TeslaReportAlgoSeq.Members += [ lineChecker ] - trig1 = self._configureReportAlg(totalLines) - TeslaReportAlgoSeq.Members+=[trig1] - - # make use of PrintDuplicates algorithm - dplic = PrintDuplicates("TurboDuplicates") - dplic.OutputLevel = self.getProp('OutputLevel') - for l in totalLines: - dplic.Inputs+=[self.base + l + "/Particles"] - if self.getProp('DuplicateCheck'): - TeslaReportAlgoSeq.Members += [dplic] - - # Make protoparticle -> truth tables ***************************************** - inputType = self.getProp('InputType') - if (inputType=='XDST') or (inputType=='LDST'): - - # Get Turbo++ locations - PRtracks=self.getProp("PRtracks") - PRclusters=self.getProp("PRclusters") - PRprotos=self.getProp("PRchargedPP") - PRprotosN=self.getProp("PRneutralPP") - protoTypes = self.getProp("ProtoTypesPR") - - # CHARGED ################################################################ - ChargedProtoSeq = GaudiSequencer("ChargedTruthSequencer") - - # Standard Turbo locations - protocont = self.base + "Protos" - trackcont = self.base + "Tracks" - - assocpp=ChargedPP2MC("TurboProtoAssocPP") - assocpp.OutputLevel = self.getProp('OutputLevel') - assocpp.VetoEmpty=True - # When filtering MC, the relations table cloners will copy the - # tables to /Event/Turbo for us. Otherwise we create them there - # directly - tesROOT = "/Event/" - if not self.getProp("FilterMC"): - tesROOT = os.path.join(tesROOT, self.base) - assocpp.RootInTES=tesROOT - # Start with an empty input list, so we don't accidentally create - # relations for non-Turbo/non-PersistReco objects - assocpp.InputData = [] - - # Add Turbo++ track and protoparticle locations - truthSeqStandard = self._configureTrackTruth(assocpp,trackcont) - ChargedProtoSeq.Members+=[truthSeqStandard] - for PRtype in self.getProp("ProtoTypesPR"): - matchedTracks = [s for s in PRtracks if PRtype in s.lower()] - matchedProtos = [s for s in PRprotos if PRtype in s.lower()] - if len(matchedTracks)>1 or len(matchedProtos)>1: - raise ValueError("Multiple instances of type "+PRtype+" have been detected") - - trackTruthSeq = self._configureTrackTruth(assocpp,matchedTracks[0]) - print(("Adding additional PR protoparticles for truth matching: "+matchedProtos[0])) - assocpp.InputData += [ matchedProtos[0] ] - ChargedProtoSeq.Members+=[trackTruthSeq] - - # Add container of merged long and downstream PersistReco PPs - # TODO this should be in the list in the configuration file - assocpp.InputData += ['Hlt2/Protos/Charged'] - print(("Adding additional PR protoparticles for truth matching: "+assocpp.InputData[-1])) - trackTruthSeq = self._configureTrackTruth(assocpp, '/Event/Hlt2/TrackFitted/Charged') - ChargedProtoSeq.Members += [trackTruthSeq] - - # Add standard Turbo ProtoParticles - assocpp.InputData += [ protocont ] - - # Add final charged PP2MC algorithm - ChargedProtoSeq.Members+=[assocpp] - - # NEUTRAL ################################################################ - NeutralProtoSeq = GaudiSequencer("NeutralTruthSequencer") - - ## Add the digits associator - outputDigiLoc = tesROOT + "Digi2MCP" - assocdigits = CaloDigit2MCLinks2Table("TurboDigitAssoc") - assocdigits.OutputLevel = self.getProp('OutputLevel') - outputiDigiLoc = tesROOT + "Relations/CaloDigits" - assocdigits.Output = outputDigiLoc - - ## Add the cluster associator - ## Finally configure the neutral PP2MC associator - NeutralProtoSeq.Members+=[assocdigits] - - # Gather all protos and clusters - neutralClustersTot=[] - neutralProtosTot=[] - - # Add standard Turbo - neutralClustersTot+=[self.base+"CaloClusters"] - neutralProtosTot+=[self.base+"Protos"] - - # Add Turbo++ - for clusters in PRclusters: - neutralClustersTot+=[clusters] - for protos in PRprotosN: - neutralProtosTot+=[protos] - - # Configure - self._configureDigitsTruth() - protoneutral = self.neutral_pp2mc_loc - if not self.getProp('FilterMC'): - protoneutral = os.path.join(tesROOT, protoneutral) - retSeq = self._configureClustersAndProtosTruth(outputDigiLoc,neutralClustersTot,neutralProtosTot,protoneutral) - NeutralProtoSeq.Members+=[retSeq] - - # Add standard Turbo locations if not packing - outputPPLoc = tesROOT+'Relations/Turbo/' - if not self.getProp('Pack'): - writer.OptItemList+=[ - outputPPLoc + 'Protos' + '#99' - ] - if not self.getProp('Pack'): - writer.OptItemList+=[ - protoneutral + '#99' - ] - # Add final sequences - TeslaReportAlgoSeq.Members+=[ChargedProtoSeq,NeutralProtoSeq] - - # Sequence to copy the relations tables, and the subset of MC - # particles used by those tables, into /Event/Turbo - if self.getProp("FilterMC"): - relationsLocations = [os.path.join('Relations', path) - for path in assocpp.InputData] - relationsLocations.append(protoneutral) - filterMCSeq = self._filterMCParticlesSequence(relationsLocations) - TeslaReportAlgoSeq.Members += [filterMCSeq] - - if self.getProp('Pack'): - packer = PackParticlesAndVertices( name = "TurboPacker", - InputStream = "/Event"+"/"+self.base.rstrip('/'), - DeleteInput = False, - EnableCheck = False, - AlwaysCreateOutput = True) - TeslaReportAlgoSeq.Members +=[packer] - - hypopacker = PackCaloHypos( name = "PackCaloHypos", - OutputLevel = self.getProp('OutputLevel'), - InputName = self.base+"CaloHypos", - OutputName = self.base+"pRec/neutral/Hypos" ) - clusterpacker = PackCaloClusters( name = "PackCaloClusters", - AlwaysCreateOutput = True, - DeleteInput = False, - OutputLevel = self.getProp('OutputLevel'), - InputName = self.base+"CaloClusters", - OutputName = self.base+"pRec/neutral/Clusters" ) - TeslaReportAlgoSeq.Members +=[hypopacker,clusterpacker] - - # Pack the filtered MC particles and vertices - if self.getProp('Simulation') and self.getProp('FilterMC'): - mcp_packer = PackMCParticle( - 'TurboPackMCParticle', - AlwaysCreateOutput=True, - DeleteInput=False, - InputName=self.base + 'MC/Particles', - OutputName=self.base + 'pSim/MCParticles' - ) - mcv_packer = PackMCVertex( - 'TurboPackMCVertex', - AlwaysCreateOutput=True, - DeleteInput=False, - InputName=self.base + 'MC/Vertices', - OutputName=self.base + 'pSim/MCVertices' - ) - TeslaReportAlgoSeq.Members += [mcp_packer, mcv_packer] - - packer.OutputLevel = min(self.getProp('OutputLevel'),self.getProp('PackerOutputLevel')) - - TeslaOutputStreamsSequence = GaudiSequencer('TeslaOutputStreamsSequence') - - TeslaOutputStreamsSequence.ModeOR = True; - TeslaOutputStreamsSequence.IgnoreFilterPassed = True - - if turbo_streams: - if self.getProp('Park'): - streamsOrig = turbo_streams - for stream in list(streamsOrig.keys()): - ps = turbo_streams[stream].get('prescale', None) - if ps: - newDict={} - newDict['lines']=turbo_streams[stream]['lines'] - pattern = re.compile("prescaled", re.IGNORECASE) - if "prescaled" in stream.lower(): - turbo_streams[pattern.sub("parked", stream)]=newDict - else: - turbo_streams[stream+"parked"]=newDict - for stream in turbo_streams: - if self.getProp('Mode') is "Online": - self._configureForOnline(stream) - TeslaOutputStreamsSequence.Members.append(self._configureOutputStream(stream, turbo_streams[stream])) - else: - if self.getProp('Mode') is "Online": - self._configureForOnline('') - TeslaOutputStreamsSequence.Members.append(self._configureOutputStream('', {'lines':lines})) - - # Add the output sequence - TeslaReportAlgoSeq.Members += [TeslaOutputStreamsSequence] - - def _configureTruthMatching(self, name, packing): - output_level = self.getProp('OutputLevel') - extra_track_locs = [os.path.join('/Event', self.base, l) for l in _extra_track_locations] - extra_proto_locs = [os.path.join('/Event', self.base, l) for l in _extra_protoparticle_locations] - - # Locations of the objects we want to truth-match - track_locs = [packing.outputs['Hlt2LongTracks'], - packing.outputs['Hlt2DownstreamTracks']] - track_locs += extra_track_locs - proto_locs = [packing.outputs['Hlt2LongProtos'], - packing.outputs['Hlt2DownstreamProtos']] - proto_locs += extra_proto_locs - cluster_locs = [packing.outputs['Hlt2CaloClusters']] - neutral_locs = [packing.outputs['Hlt2NeutralProtos']] - - assocpp = ChargedPP2MC("TurboProtoAssocPP") - # Configure Track -> MCParticle relations table maker - trackTruthSeq = GaudiSequencer('TurboTrackTruthSequencer') - trackTruthSeq.Members = [self._configureTrackTruth(assocpp, loc) - for loc in track_locs] - - # Configure ProtoParticle -> MCParticle relations table maker - assocpp.OutputLevel = output_level - assocpp.VetoEmpty = True - assocpp.InputData += _strip_root('/Event', proto_locs) - - assocDigits = CaloDigit2MCLinks2Table("TurboDigitAssoc") - # The digits relations table maker will try to find the linker table - # for digits at `Raw/{det}/Digits` at `Link/Raw/{det}/Digits`. Our - # digits are at `Turbo/Raw/{det}/Digits`, but we can't remake a linker - # table at `Link/Turbo/Raw/{det}/Digits because the information needed - # to make one is lost after Boole. - # Instead, exploit the fact that the digits under `Turbo/` are a subset - # of the originals, and just symlink the original linker table to the - # location expected for the Turbo digits - assocDigits.RespectInputDigitLocation = False - digit_locs = _strip_root('/Event', assocDigits.getDefaultProperty('Inputs')) - turbo_digit_locs = [os.path.join(self.base, l) for l in digit_locs] - linkingSeq = GaudiSequencer('TurboLinkTableLinkers') - for digit_loc in digit_locs: - link_loc = os.path.join('Link', digit_loc) - turbo_link_loc = os.path.join('Link', self.base, digit_loc) - name = '{0}Linker'.format(link_loc.replace('/', '')) - dl = DataLink(name, What=link_loc, Target=turbo_link_loc) - linkingSeq.Members.append(dl) - # DataLinks don't create the ancestor TES structure, so do it - # manually - path = '' - for node in turbo_link_loc.split(os.path.sep)[:-1]: - path = os.path.join(path, node) - DataOnDemandSvc().NodeMap[path] = 'DataObject' - - # Configure CaloDigit -> MCParticle relations table maker - assocDigits.OutputLevel = output_level - # Can use a magic string here as this table is only temporary - assocDigits.Output = "Relations/CaloDigits" - assocDigits.Inputs = turbo_digit_locs - - # Configure CaloCluster -> MCParticle and neutral ProtoParticle -> - # MCParticle relations table makers - neutral_rels_loc = self.neutral_pp2mc_loc - assocClustersNeutrals = self._configureClustersAndProtosTruth( - assocDigits.Output, - cluster_locs, - neutral_locs, - neutral_rels_loc - ) - - chargedProtoSeq = GaudiSequencer("ChargedTruthSequencer") - chargedProtoSeq.Members = [trackTruthSeq, assocpp] - neutralProtoSeq = GaudiSequencer("NeutralTruthSequencer") - neutralProtoSeq.Members = [linkingSeq, assocDigits, assocClustersNeutrals] - truthSeq = GaudiSequencer("TurboTruthSequencer") - truthSeq.Members = [chargedProtoSeq, neutralProtoSeq] - - # We have now created the relations tables under /Event/Relations, - # and want them under /Event/Turbo/Relations. We have two strategies: - # 1. Use the CopyProtoParticle2MCRelations algorithm, which will copy - # the tables *and* the MC particles they reference to under - # /Event/Turbo, updating the copied tables to point to the copied MC - # particles; or - # 2. Use Gaudi::DataCopy to copy the tables verbatim, so that they - # still refer to MC objects in /Event/MC. - # The first case we call 'filtering', as in principle the original MC - # objects can now be deleted because we then only depend on those in - # /Event/Turbo/MC. The second case we choose to do when not filtering - # so that the paths to the final relations tables are the same as those - # in the first case. - relationsLocations = [os.path.join('Relations', path) - for path in assocpp.InputData] - relationsLocations.append(neutral_rels_loc) - if self.getProp('FilterMC'): - filterMCSeq = self._filterMCParticlesSequence(relationsLocations) - truthSeq.Members += [filterMCSeq] - else: - base = self.base.rstrip('/') - truthSeq.Members.append( - GaudiSequencer('CopyRelationsTables', Members=[ - DataCopy('Copy{0}'.format(loc.replace('/', '')), - What=loc, - Target=os.path.join(base, loc), - # It's very possible that the extra locations - # might not exist, so no relations table will be - # created; we don't mind the copying failing in - # those cases - NeverFail=True if loc.replace('Relations/', '/Event/') in (extra_track_locs + extra_proto_locs) else False, - OutputLevel=output_level) - for loc in relationsLocations - if self.base in loc - ], IgnoreFilterPassed=True) - ) - - return truthSeq - - - def _configureOutputStream(self, stream, lines_dict): - ''' - The lines dictionary should have the following form: - - lines: The lines to include in the stream - prescale: The amount to prescale, as a dictionary of lines. Uses the Prescale property if not present or None - prescaleVersion: A version number - park: The amount to park. A second line will be created, with the given amound and the label 'Park' appended (not implemented) - - Only the first key is required. The properties will be taken from self otherwise. - - Returns: a stream sequence - ''' - - - # Building output name - fname ="" - if not stream: - fname = self.getProp("outputFile") - else: - fname = self.getProp("outputPrefix") + stream + self.getProp("outputSuffix") - - # Building sequencer with stream - seq = GaudiSequencer('TeslaStreamSequence' + stream) - - # Required structure - lines = lines_dict['lines'] - - # Optional prescaling - prescale = lines_dict.get('prescale', None) - turboRepLoc="Turbo/DecReports"+stream - if prescale: - print("Requested to prescale stream: "+stream) - # if line not in dictionary, give it a prescale of 1 - for line in lines: - if line not in prescale: - prescale[line]=1.0 - print(prescale) - prescaleVersion = lines_dict.get('prescaleVersion', None) - pscaler = TurboPrescaler("TurboPrescaler"+stream) - pscaler.FilterOutput=True - pscaler.ChosenOutputPrescales=prescale - pscaler.PrescaleVersion=prescaleVersion - pscaler.HltDecReportsLocation="Hlt2/DecReports" - pscaler.ReportsOutputLoc=turboRepLoc - seq.Members+=[pscaler] - - # Write new reports to the raw event - #from Configurables import HltDecReportsWriter - #decWriter = HltDecReportsWriter("Hlt2DecReportsWriter") - #decWriter.SourceID=3 - #decWriter.InputHltDecReportsLocation=turboRepLoc - #seq.Members+=[decWriter] - - #retrieve the persistency - persistency=None - if hasattr(self, "Persistency"): - if self.getProp("Persistency") is not None: - persistency=self.getProp("Persistency") - - iox=IOExtension(persistency) - - writer = InputCopyStream(self.writerName + stream) - writer.OutputLevel = self.getProp('OutputLevel') - - writer.RequireAlgs += [seq] - - # If HDR requested, then filter on the output (required if streaming) - if self.getProp("HDRFilter") or self.getProp("Streams"): - filtCode='|'.join(["HLT_TURBOPASS_RE(\'"+l+"Decision\')" for l in lines]) - print("Filter code:") - print(filtCode) - HLTFilter = HltDecReportsFilter ('Hlt2_HLTFilter' + stream - , Code = filtCode - , Location = "Hlt2/DecReports" - ) - writer.RequireAlgs+=[HLTFilter] - seq.Members+=[HLTFilter] - - # Add our prescaled reports if present - if prescale: - writer.OptItemList+=[ turboRepLoc + "#99"] - - for l in lines: - # IF NOT PACKING NEED TO SET THE LOCATIONS IN THE REPORT ALGORITHM - if not self.getProp('Pack'): - writer.OptItemList+=[ self.base + l + "/Particles#99" - , self.base + l + "/Vertices#99" - , self.base + l + "/_ReFitPVs#99" - , self.base + l + "/Particle2VertexRelations#99" - ] - - if not self.getProp('Pack'): - writer.OptItemList+=[ - self.base + "Protos#99" - ,self.base + "Tracks#99" - ,self.base + "RichPIDs#99" - ,self.base + "MuonPIDs#99" - ,self.base + "CaloHypos#99" - ,self.base + "CaloClusters#99" - ] - - - # Does this need to be in streaming? HENRYIII - # Add shared places to writer - # SB: Might as well support non-packing case. - if not self.getProp('Pack'): - writer.OptItemList+=[ - self.base + "Primary#99" - , self.base + "Rec/Summary#99" - ] - - if self.getProp('Pack'): - writer.OptItemList+=[ - self.base+"pPhys/Particles#99" - ,self.base+"pPhys/Vertices#99" - ,self.base+"pPhys/RecVertices#99" - ,self.base+"pPhys/Relations#99" - ,self.base+"pPhys/PP2MCPRelations#99" - ,self.base+"pPhys/PartToRelatedInfoRelations#99" - ,self.base+"pRec/Track/Custom#99" - ,self.base+"pRec/Muon/CustomPIDs#99" - ,self.base+"pRec/Rich/CustomPIDs#99" - ,self.base+"pRec/ProtoP/Custom#99" - ,self.base+"pRec/neutral/Hypos#99" - ,self.base+"pRec/neutral/Clusters#99" - ,self.base+"Rec/Summary#99" - ,self.base+"pSim/MCParticles#99" - ,self.base+"pSim/MCVertices#99" - ] - - IOHelper(persistency,persistency).outStream(fname,writer,writeFSR=self.getProp('WriteFSR')) - return seq - - def _configureReportAlg(self, lines): - trig1 = TeslaReportAlgo("TeslaReportAlgo") - trig1.OutputPrefix=self.base - trig1.PV=self.getProp('PV') - if self.getProp('VertRepLoc')=="Hlt1": - trig1.VertRepLoc="Hlt1/VertexReports" - else: - trig1.VertRepLoc="Hlt2/VertexReports" - trig1.PVLoc=self.base+"Primary" - trig1.TriggerLines=lines - trig1.OutputLevel=self.getProp('OutputLevel') - return trig1 - - def _selReportsCheck(self, loc='Hlt2/SelReports'): - name = '{0}Check'.format(loc.replace('/', '')) - return TESCheck(name, Inputs=[loc], Stop=False) - - def _configureOutputTurboSP(self): - trigger_lines = self.getProp('TriggerLines') - streams = self.getProp('Streams') - simulation = self.getProp('Simulation') - datatype = self.getProp('DataType') - mode = self.getProp('Mode') - online = mode == 'Online' - vertex_report_location = self.getProp('VertRepLoc') - enable_line_checker = self.getProp('EnableLineChecker') - raw_format_input = self.getProp('SplitRawEventInput') - raw_format_output = self.getProp('SplitRawEventOutput') - - ok = (trigger_lines and not streams) or (streams and not trigger_lines) - assert ok, ('Must define at least one of Tesla().Streams and ' - 'Tesla().TriggerLines, but not both') - - # Treat the no-streaming case as a single anonymous stream - if not streams: - streams = {'': {'lines': trigger_lines}} - - decoders_seq = GaudiSequencer('TeslaDecoders') - if online: - from DAQSys.DecoderClass import decoderToLocation - from DAQSys.Decoders import DecoderDB - hlt_locs = [ "Hlt/VertexReports/PV3D", "Hlt2/SelReports","Hlt2/DecReports" ] - odin=DecoderDB["createODIN"].setup() - decoders_seq.Members += [ odin ] + [ decoderToLocation(DecoderDB,loc).setup() for loc in hlt_locs ] - DecodeRawEvent().DataOnDemand = False - self._safeSet(DstConf(), ['SplitRawEventOutput']) - - # This decoder is setup by TurboConf - packed_data_decoder = HltPackedDataDecoder('Hlt2PackedDataDecoder') - decoders_seq.Members.append(packed_data_decoder) - - prpacking = PersistRecoConf.PersistRecoPacking(datatype) - prunpackers = prpacking.unpackers() - - unpackers_seq = GaudiSequencer('TeslaUnpackers') - # Need to run the packers in reverse order, due to object dependencies - unpackers_seq.Members += prunpackers[::-1] - unpack_psandvs = UnpackParticlesAndVertices( - InputStream='/Event/Turbo' - ) - unpackers_seq.Members.append(unpack_psandvs) - - stream_sequences = [] - for stream_name in streams: - stream_seq = self._configureOutputTurboSPStream( - stream_name, - streams[stream_name]['lines'], - prpacking, - online, - raw_format_output - ) - stream_sequences.append(stream_seq) - - if enable_line_checker: - all_lines = sum([d['lines'] for d in streams.values()], []) - ignored_lines = self.getProp('IgnoredLines') - line_checker = [TeslaLineChecker( - RequestedLines=all_lines, - IgnoredLines=ignored_lines - )] - else: - line_checker = [] - - # Kill the input DstData bank, which is in DAQ/RawEvent online, but in - # PersistReco/RawEvent offline (e.g. after Brunel) - if online: - dstdata_killer = [bankKiller( - 'Hlt2DstDataKiller', - BankTypes=['DstData'] - )] - else: - dstdata_killer = [EventNodeKiller( - 'Hlt2DstDataKiller', - Nodes=['PersistReco'] - )] - - # Kill any links the output file might have had to the input file - if online and not simulation: - address_killer = [AddressKillerAlg()] - else: - address_killer = [] - - streaming_seq = GaudiSequencer( - 'TeslaStreamsSequence', - Members=( - [decoders_seq, unpackers_seq] + - line_checker + - stream_sequences + - dstdata_killer + - address_killer - ), - IgnoreFilterPassed=True - ) - - return streaming_seq - - def _configureOutputTurboSPStream(self, name, lines, packing, online, - raw_format_output): - """Return a sequence for streaming the lines into the named location. - - Copy line outputs for this stream to a stream-specific location. - - Keyword arguments: - name -- Name of the stream - lines -- List of HLT2 line names that belong in the stream - packing -- Instance of PersistRecoConf.PersistRecoPacking - online -- Configure in online mode (if True) or offline - raw_format_output -- Output format of the raw event - """ - output_prefix = name.title() - decisions = [l + 'Decision' for l in lines] - # Naming convention for stream-specific algorithms - namer = lambda x: '{0}ForStream{1}'.format(x, output_prefix) - pack = self.getProp('Pack') - write_fsr = self.getProp('WriteFSR') - simulation = self.getProp('Simulation') - filter_mc = self.getProp('FilterMC') - if filter_mc: - assert simulation, 'Expected Simulation = True as FilterMC = True' - - stream_seq = GaudiSequencer(namer('TeslaStreamSequence')) - - # Run the stream sequence iff at least one line in the stream fired - filter_code = '|'.join([ - "HLT_TURBOPASS_RE('{0}')".format(l) for l in decisions - ]) - filter = HltDecReportsFilter( - namer('Hlt2_HLTFilter'), - Code=filter_code - ) - # Don't filter an anonymous stream by default - if output_prefix or self.getProp('HDRFilter'): - stream_seq.Members.append(filter) - - tes_root = '/Event' - # /Event/<stream name> - stream_base = os.path.join(tes_root, output_prefix).rstrip('/') - # /Event/<stream name>/Turbo - turbo_base = os.path.join(stream_base, 'Turbo') - - # Decode the RecSummary from the SelReports - recsummary_decoder = RecSummaryFromSelReports(namer('RecSummaryFromSelReports')) - recsummary_decoder.InputHltSelReportsLocation = 'Hlt2/SelReports' - recsummary_decoder.OutputRecSummaryLocation = os.path.join(turbo_base, 'Rec/Summary') - stream_seq.Members.append(GaudiSequencer( - namer('RecSummarySeq'), Members=[ - self._selReportsCheck(), - recsummary_decoder - ] - )) - - if simulation: - self._unpackMC() - stream_seq.Members.append(self._configureTruthMatching(name, packing)) - - # No need to clone if the output prefix is empty (everything stays - # under /Event/Turbo) - if output_prefix: - persistence_svc = self.getProp('ILinePersistenceSvc') - ApplicationMgr().ExtSvc.append(persistence_svc) - # Tell the persistence service to map any packed locations it knows - # about to unpacked locations, as it is the unpacked locations we - # want to copy to stream-specific locations - TCKLinePersistenceSvc().ContainerMap = packing.packedToOutputLocationMap() - - container_cloner = CopyLinePersistenceLocations( - namer('CopyLinePersistenceLocations'), - OutputPrefix=output_prefix, - LinesToCopy=decisions, - ILinePersistenceSvc=persistence_svc - ) - ppc = container_cloner.addTool(ProtoParticleCloner) - tcwc = container_cloner.addTool(TrackClonerWithClusters) - cdc = container_cloner.addTool(CaloDigitCloner) - - # Use the Track cloner that copies associated track clusters - ppc.ICloneTrack = "TrackClonerWithClusters" - tcwc.CloneAncestors = False - - # We do two things here: - # 1. Configure the CaloCluster and CaloHypo cloners to have - # consistent behaviour; - # 2. Force digits to always be cloned when running over simulated - # data. - ccc = container_cloner.addTool(CaloClusterCloner, name='CaloClusterCloner') - chc = container_cloner.addTool(CaloHypoCloner, name='CaloHypoCloner') - ccc.CloneEntriesNeuP = True - ccc.CloneEntriesChP = False - ccc.CloneEntriesAlways = simulation - chc.CloneClustersNeuP = True - chc.CloneClustersChP = False - chc.CloneDigitsNeuP = True - chc.CloneDigitsChP = False - chc.CloneClustersAlways = simulation - - # We *always* want associated digits to be cloned in PersistReco - ccc_pp = ccc.clone("CaloClusterClonerForTurboPP") - ccc_pp.CloneEntriesAlways = True - container_cloner.TurboPPICloneCaloCluster = container_cloner.addTool(ccc_pp).getFullName() - chc_pp = chc.clone("CaloHypoClonerForTurboPP") - chc_pp.CloneClustersAlways = True - container_cloner.TurboPPICloneCaloHypo = container_cloner.addTool(chc_pp).getFullName() - - # Look for input objects under /Event/Turbo - def prepend_base(configurable, property): - """Prepend Tesla.base to the configurable's property value.""" - default = configurable.getDefaultProperty(property) - value = os.path.join(self.base, default) - configurable.setProp(property, value) - prepend_base(tcwc, 'VeloClusters') - prepend_base(tcwc, 'TTClusters') - prepend_base(tcwc, 'ITClusters') - prepend_base(cdc, 'EcalADCLocation') - prepend_base(cdc, 'PrsADCLocation') - - p2pv_cloner = CopyParticle2PVRelationsFromLinePersistenceLocations( - namer('CopyP2PVRelationsFromLinePersistenceLocations'), - OutputPrefix=output_prefix, - LinesToCopy=decisions, - ILinePersistenceSvc=persistence_svc - ) - - p2ri_cloner = CopyParticle2RelatedInfoFromLinePersistenceLocations( - namer('CopyP2RelatedInfoFromLinePersistenceLocations'), - # Search for all LHCb::RelatedInfoMap objects at the same TES - # level as the container of LHCb::Particle objects using the - # CLID, rather than a name - RelationsBaseName="", - UseRelationsCLID=True, - OutputPrefix=output_prefix, - LinesToCopy=decisions, - ILinePersistenceSvc=persistence_svc - ) - - copy_line_outputs_seq = GaudiSequencer( - namer('TeslaCopyLineOutputsSequence'), - Members=[ - container_cloner, - p2pv_cloner, - p2ri_cloner - ], - IgnoreFilterPassed=True - ) - stream_seq.Members.append(copy_line_outputs_seq) - - required_output_locations = [ - str(recsummary_decoder.OutputRecSummaryLocation) + '#1' - ] - optional_output_locations = [] - if pack: - datatype = self.getProp('DataType') - packers = [] - - # Pack the PersistReco locations for this stream - prpacking_inputs = { - k: v.replace(tes_root, stream_base) - for k, v in packing.outputs.items() - } - prpacking_descriptors = { - datatype: { - k: d.copy(location=d.location.replace(tes_root, turbo_base)) - for k, d in PersistRecoConf.standardDescriptors[datatype].items() - } - } - prpacking_stream = PersistRecoConf.PersistRecoPacking( - datatype, - inputs=prpacking_inputs, - descriptors=prpacking_descriptors - ) - packers += prpacking_stream.packers(identifier=namer('')) - - # Pack everything else that we've cloned - psandvs_packer = PackParticlesAndVertices( - namer('TurboPacker'), - InputStream=turbo_base, - VetoedContainers=list(prpacking_stream.inputs.values()) - ) - packers.append(psandvs_packer) - - # Pack the filtered MC particles and vertices - if filter_mc: - mcp_packer = PackMCParticle( - 'TurboPackMCParticle', - AlwaysCreateOutput=True, - DeleteInput=False, - RootInTES=turbo_base - ) - mcv_packer = PackMCVertex( - 'TurboPackMCVertex', - AlwaysCreateOutput=True, - DeleteInput=False, - RootInTES=turbo_base - ) - - packers.append(mcp_packer) - packers.append(mcv_packer) - - optional_output_locations += [os.path.join(turbo_base, 'pSim#*')] - - for packer in packers: - packer.OutputLevel = min(self.getProp('OutputLevel'), - self.getProp('PackerOutputLevel')) - - # If the stream is anonymous, we must first kill the output of - # PackParticlesAndVertices from HLT2 (which lives in the same - # place) so that we can re-run the algorithm here - # This is done primarily for packing relations tables, which are - # packed by PackParticlesAndVertices but created only in Tesla - node_killers = [] - if not output_prefix: - enk = EventNodeKiller(namer('KillHLT2PackPsAndVsOutput')) - # List of locations produced by PackParticlesAndVertices - enk.Nodes = [os.path.join(turbo_base, p) for p in [ - 'pPhys/Particles', - 'pPhys/Vertices', - 'pPhys/FlavourTags', - 'pPhys/RecVertices', - 'pPhys/Relations', - 'pPhys/P2MCPRelations', - 'pPhys/P2IntRelations', - 'pPhys/PartToRelatedInfoRelations', - 'pRec/ProtoP/Custom', - 'pRec/Muon/CustomPIDs', - 'pRec/Rich/CustomPIDs', - 'pRec/Track/Custom', - 'pPhys/PP2MCPRelations' - ]] - node_killers.append(enk) - - packing_seq = GaudiSequencer( - namer('TeslaPackingSequence'), - Members=node_killers + packers, - IgnoreFilterPassed=True - ) - stream_seq.Members.append(packing_seq) - - optional_output_locations += [ - os.path.join(turbo_base, 'pPhys#*'), - os.path.join(turbo_base, 'pRec#*'), - os.path.join(turbo_base, 'Hlt2/pRec#*') - ] - else: - # Save everything under the stream prefix - optional_output_locations += [ - os.path.join(turbo_base, '#*') - ] - - if output_prefix: - fname = '{0}{1}{2}'.format( - self.getProp('outputPrefix'), - output_prefix, - self.getProp('outputSuffix') - ) - else: - fname = self.getProp('outputFile') - - if online and not simulation: - writer = OutputStream(namer(self.writerName)) - writer.AcceptAlgs += ['LumiSeq', 'PhysFilter'] - # In online mode we perform the raw event juggling (otherwise - # Brunel does it for us), so must save the locations after juggling - optional_output_locations += self._output_raw_event_locations(raw_format_output) - else: - # In offline mode, e.g. after Brunel, propagate everything from the - # input file to the output - writer = InputCopyStream(namer(self.writerName)) - - writer.ItemList = required_output_locations - writer.OptItemList = optional_output_locations - - # Keep the 2016 behaviour by not writing out anything if the - # sel reports are missing - writer.RequireAlgs = [self._selReportsCheck(), stream_seq] - iohelper = IOHelper() - iohelper.outStream(fname, writer, writeFSR=write_fsr) - - return stream_seq - - def _configureHlt2SelReportsKill(self): - from Configurables import bankKiller, HltSelReportsStripper - - inputHlt2RepsToKeep = self.getProp('InputHlt2RepsToKeep') - - kill_seq = GaudiSequencer('Hlt2SelReportsKillerSeq') - - killer = bankKiller("Hlt2SelReportsBankKiller") - killer.BankTypes = ["HltSelReports"] - killer.DefaultIsKill = False - # HltSelReportsWriter::kSourceID_Hlt2 << HltSelReportsWriter::kSourceID_BitShift - killer.KillSourceID = 2 << 13 - # HltSelReportsWriter::kSourceID_MajorMask - killer.KillSourceIDMask = 0xE000 - kill_seq.Members.append(killer) - - # if the list of reports to keep is empty, do nothing more - if inputHlt2RepsToKeep: - assert all(name.endswith('Decision') for name in inputHlt2RepsToKeep) - - from DAQSys.Decoders import DecoderDB - selreports_decoder = DecoderDB['HltSelReportsDecoder/Hlt2SelReportsDecoder'] - selreports_loc = selreports_decoder.Outputs['OutputHltSelReportsLocation'] - decreports_decoder = DecoderDB['HltDecReportsDecoder/Hlt2DecReportsDecoder'] - decreports_loc = decreports_decoder.Outputs['OutputHltDecReportsLocation'] - - # Stop the sequence if Hlt2/SelReports does not exist - kill_seq.Members.append(self._selReportsCheck()) - - stripper = HltSelReportsStripper('Hlt2SelReportsStripper') - stripper.InputHltSelReportsLocation = selreports_loc - stripper.OutputHltSelReportsLocation = 'Hlt2/SelReportsFiltered' - stripper.OutputHltObjectSummariesLocation = ( - str(stripper.OutputHltSelReportsLocation) + '/Candidates') - stripper.SelectionNames = inputHlt2RepsToKeep - stripper.OutputLevel = self.getProp('OutputLevel') - kill_seq.Members.append(stripper) - - writer = HltSelReportsWriter('Hlt2SelReportsFilteredWriter') - writer.SourceID = 2 - writer.InputHltSelReportsLocation = str(stripper.OutputHltSelReportsLocation) - writer.OutputLevel = self.getProp('OutputLevel') - # By the time the stripper runs Hlt2/DecReports should exist - writer.UseTCK = True # use the TCKANNSvc for converting names to numbers - writer.InputHltDecReportsLocation = decreports_loc - kill_seq.Members.append(writer) - - return kill_seq - - def _raw_event_juggler(self, input_format, output_format): - # Load the raw event format dictionaries - RawEventFormatConf().loadIfRequired() - - j = RawEventJuggler() - j.Input = input_format - j.Output = output_format - j.KillExtraNodes = True - j.KillExtraBanks = True - j.KillExtraDirectories = True - j.Sequencer = GaudiSequencer('TeslaRawEventJugglerSequence') - - return j.Sequencer - - def _output_raw_event_locations(self, output_format): - """Return the list of raw event locations for the output format.""" - # Load the raw event format dictionaries - RawEventFormatConf().loadIfRequired() - - locs = list(RawEventLocationsToBanks(output_format)) - return [os.path.join('/Event', l) + '#1' for l in locs] - - def __apply_configuration__(self): - ############## Set other properties ########### - self._safeSet( LHCbApp(), ['EvtMax','SkipEvents','Simulation', 'DataType' , 'CondDBtag','DDDBtag'] ) - self._safeSet( TurboConf(), ['DataType'] ) - - # Make sure DQFlags are ignored for Tesla productions - if self.getProp('IgnoreDQFlags'): - if not LHCbApp().isPropertySet( "IgnoreDQFlags" ) : - LHCbApp().setProp( "IgnoreDQFlags", True ) - - # Silence, please! - LoKiSvc().Welcome = False - - ApplicationMgr().AppName="Tesla, utilising DaVinci" - # - if self.getProp('Mode') == "Online": - self.setProp('WriteFSR',True) - if not self.getProp('Simulation'): - self._configureLumi() - else: - DecodeRawEvent().DataOnDemand=True - RecombineRawEvent(Version=self.getProp('SplitRawEventInput')) - if self.getProp('DataType') in ['2015', '2016'] and self.getProp('Simulation')==True: - self._unpackMC() - TurboConf().setProp("PersistReco",True) - # We don't want the PersistReco reconstruction under - # /Event/Turbo, else it will be packed - TurboConf().setProp("RootInTES", "/Event") - - # The MC logic requires the DataOnDemandSvc to be enabled - if self.getProp('Simulation'): - self._configureDataOnDemand() - - if self.getProp('DataType') in ['2017', '2018'] and not self.getProp('CandidatesFromSelReports'): - # Unpack the DstData raw bank - TurboConf().setProp("RunPackedDataDecoder", True) - streaming_seq = self._configureOutputTurboSP() - self.teslaSeq.Members.append(streaming_seq) - else: - self._configureOutput() - # - EventSelector().PrintFreq = 1000 - - # Add monitors if they are there - if len(self.getProp('Monitors'))>0: - self._configureHistos() - - # Enable the timing table - self._configureTimingAuditor() - - if self.getProp('KillInputTurbo'): - enk = EventNodeKiller('KillTurbo') - enk.Nodes = [ "Turbo" ] - ApplicationMgr().TopAlg.insert( 0, enk.getFullName() ) - - if self.getProp('KillInputHlt2Reps'): - kill_selreports = self._configureHlt2SelReportsKill() - self.teslaSeq.Members += [kill_selreports] - - if self.getProp('SplitRawEventInput') != self.getProp('SplitRawEventOutput'): - raw_event_juggler = self._raw_event_juggler( - self.getProp('SplitRawEventInput'), - self.getProp('SplitRawEventOutput') - ) - self.teslaSeq.Members += [raw_event_juggler] - - ApplicationMgr().TopAlg+=[self.teslaSeq] diff --git a/Phys/Tesla/python/Tesla/__init__.py b/Phys/Tesla/python/Tesla/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Phys/Tesla/tests/options/CheckTurboStreamProd.py b/Phys/Tesla/tests/options/CheckTurboStreamProd.py deleted file mode 100644 index 6d6c9c28ba77195549c413d915b32017768a26df..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/CheckTurboStreamProd.py +++ /dev/null @@ -1,59 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -"""Script to check TCK-TurboStreamProd compatibility. - -To be used in LHCbIntegrationTests and the TCK creation procedure. -Run with e.g. - python $TESLAROOT/tests/options/CheckTurboStreamProd.py turbo_lines.json \ - '$APPCONFIGOPTS/Turbo/Streams_pp_2018_nocharmxsec.py' - -""" -from __future__ import print_function -import argparse -import json -import re -import sys -from Gaudi.Configuration import importOptions -from Configurables import Tesla - -parser = argparse.ArgumentParser(description="") -parser.add_argument("lines", help='JSON file with turbo lines (- for stdin).') -parser.add_argument("options", nargs='+', help="Appconfig options that configure Tesla") -args = parser.parse_args() - -if args.lines == '-': - turbo_lines = json.load(sys.stdin) -else: - with open(args.lines) as f: - turbo_lines = json.load(f) - - -for path in args.options: - importOptions(path) - - -def ignored_line(line): - return any(re.match(pattern, line) for pattern in Tesla().IgnoredLines) - - -checked_lines = [line for line in turbo_lines if not ignored_line(line)] -lines_in_streams = sum((v['lines'] for v in Tesla().Streams.values()), []) - -orphan_lines = set(checked_lines).difference(set(lines_in_streams)) -if orphan_lines: - print("The following lines are missing from TurboStreamProd:\n" - "{}".format(list(orphan_lines)), file=sys.stderr) - sys.exit(1) -extra_lines = set(lines_in_streams).difference(set(checked_lines)) -if extra_lines: - print("Some lines are assigned to a stream but not present:\n" - "{}".format(list(extra_lines))) -print("Passed") diff --git a/Phys/Tesla/tests/options/DV_LineChecker.py b/Phys/Tesla/tests/options/DV_LineChecker.py deleted file mode 100644 index db252eeb48e8ce46704c4595775284908505919e..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/DV_LineChecker.py +++ /dev/null @@ -1,28 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from Configurables import DaVinci -from Configurables import TeslaLineChecker -from Configurables import CondDB - -from PRConfig import TestFileDB -TestFileDB.test_file_db["Upgrade_Bd2KstarMuMu"].run(configurable=DaVinci()) - -# Necessary DaVinci parameters ################# -DaVinci().Simulation = True -DaVinci().EvtMax = 50 -DaVinci().TupleFile = 'DVTuples.root' -DaVinci().PrintFreq = 10 -DaVinci().DataType = 'Upgrade' -DaVinci().UserAlgorithms = [ TeslaLineChecker() ] -DaVinci().InputType = 'LDST' -CondDB().Upgrade = True -DaVinci().CondDBtag = "sim-20171127-vc-md100" -DaVinci().DDDBtag = "dddb-20171126" diff --git a/Phys/Tesla/tests/options/DV_Upgrade_PVs.py b/Phys/Tesla/tests/options/DV_Upgrade_PVs.py deleted file mode 100644 index f4e3197010e1b88ac92d7d8a9fa56576aafea002..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/DV_Upgrade_PVs.py +++ /dev/null @@ -1,75 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2020 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from __future__ import print_function -from Gaudi.Configuration import * -from LHCbKernel.Configuration import * -from Configurables import GaudiSequencer,RawEventJuggler -from Configurables import DaVinci -from Configurables import DecodeRawEvent -from Configurables import CondDB -from Configurables import DstConf -DstConf().Turbo=True - -DaVinci() -DaVinci().EvtMax=-1 -DaVinci().DataType="Upgrade" -DaVinci().InputType = 'LDST' -CondDB().Upgrade = True -DaVinci().CondDBtag = "sim-20171127-vc-md100" -DaVinci().DDDBtag = "dddb-20171126" - -from PRConfig import TestFileDB -TestFileDB.test_file_db["Upgrade_Bd2KstarMuMu"].run(configurable=DaVinci()) - -import GaudiPython -from Gaudi.Configuration import ApplicationMgr -from Configurables import LoKiSvc - -from GaudiKernel import ROOT6WorkAroundEnabled -if ROOT6WorkAroundEnabled('ROOT-7492'): - # trigger autoloading of LHCbKernel dictionary - GaudiPython.gbl.LHCb.LHCbID - # trigger autoloading of DigiEvent dictionary - GaudiPython.gbl.LHCb.CaloDigit - -gaudi = GaudiPython.AppMgr() -gaudi.initialize() - -tes = gaudi.evtsvc() - -vertLoc = "Turbo/Primary" - -version='v10r0_0x00fa0051' -from TurboStreamProd.helpers import * -from TurboStreamProd import prodDict -lines = streamLines(prodDict,version,'DiMuon',debug=True) -lines += streamLines(prodDict,version,'Charm',debug=True) -lines += streamLines(prodDict,version,'CharmSpec',debug=True) - -while True: - gaudi.run(1) - # - if not tes['/Event/DAQ/RawEvent']: - print("End of file") - break - # - n=0 - for line in lines: - rep = tes["Hlt2/SelReports"].selReport(line+"Decision") - if rep: - n+=1 - if n==0: - continue - - if not tes[vertLoc]: - print(tes["Hlt2/SelReports"]) - print("ERROR: PVs have not been created") - break diff --git a/Phys/Tesla/tests/options/TCK_2015RP.py b/Phys/Tesla/tests/options/TCK_2015RP.py deleted file mode 100644 index cbd27719ae07450bb44cb762a1c70e681158bf5f..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/TCK_2015RP.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from Configurables import Tesla -Tesla().Pack = True -Tesla().DataType = '2015' -Tesla().Simulation = False -Tesla().Mode = 'Offline' -Tesla().VertRepLoc = 'Hlt2' -Tesla().EvtMax=1000 -Tesla().outputFile = "tesla_2015_TCK.dst" -Tesla().SplitRawEventInput = '0.4' -Tesla().SplitRawEventOutput = '0.4' - -from Gaudi.Configuration import * -version='v10r0_0x00fa0051' -from TurboStreamProd.helpers import * -from TurboStreamProd import prodDict -lines = streamLines(prodDict,version,'DiMuon',debug=True) -lines += streamLines(prodDict,version,'Charm',debug=True) -lines += streamLines(prodDict,version,'CharmSpec',debug=True) - -Tesla().TriggerLines = lines -Tesla().EnableLineChecker = False - -from PRConfig.TestFileDB import test_file_db -input = test_file_db['TeslaTest_TCK_0x022600a2'] -input.run(configurable=Tesla()) -Tesla().KillInputTurbo = True diff --git a/Phys/Tesla/tests/options/analyseAll.py b/Phys/Tesla/tests/options/analyseAll.py deleted file mode 100644 index 82aa0b342a67dccfdd56bb6d88df878a65b24a04..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/analyseAll.py +++ /dev/null @@ -1,21 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2020 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from subprocess import call -import os -exec(compile(open(os.path.expandvars("$TESLAROOT/tests/options/streams.py"), "rb").read(), os.path.expandvars("$TESLAROOT/tests/options/streams.py"), 'exec')) -exit_code = call(["python",os.path.expandvars("$TESLAROOT/tests/options/analyseInput.py")]) -if exit_code: - exit( exit_code ) - -for stream,lines in turbo_streams.items(): - exit_code = call(["python",os.path.expandvars("$TESLAROOT/tests/options/analyseOutput.py"),stream]) - if exit_code: - exit( exit_code ) diff --git a/Phys/Tesla/tests/options/analyseInput.py b/Phys/Tesla/tests/options/analyseInput.py deleted file mode 100644 index 48fae6365e4859a3f93b09f8e302a5447410cb31..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/analyseInput.py +++ /dev/null @@ -1,105 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2020 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from __future__ import print_function -import sys - -import GaudiPython as GP -from GaudiConf import IOHelper -from Configurables import ( - LHCbApp, - ApplicationMgr, - DataOnDemandSvc, - DecodeRawEvent, - CondDB -) -from DAQSys.Decoders import DecoderDB - - -lhcbApp = LHCbApp() - -# Pass file to open as first command line argument -# Needs to be same file as in TeslaStepStreams.py -from PRConfig import TestFileDB -TestFileDB.test_file_db['TeslaTest_2016raw_0x11361609_0x21361609'].run(configurable=lhcbApp) - -LHCb = GP.gbl.LHCb -appConf = ApplicationMgr() - -Hlt1SelReportsDecoder=DecoderDB["HltSelReportsDecoder/Hlt1SelReportsDecoder"].setup() -Hlt1DecReportsDecoder=DecoderDB["HltDecReportsDecoder/Hlt1DecReportsDecoder"].setup() -DataOnDemandSvc().AlgMap['Hlt1/SelReports'] = Hlt1SelReportsDecoder -DataOnDemandSvc().AlgMap['Hlt1/DecReports'] = Hlt1DecReportsDecoder -Hlt2SelReportsDecoder=DecoderDB["HltSelReportsDecoder/Hlt2SelReportsDecoder"].setup() -Hlt2DecReportsDecoder=DecoderDB["HltDecReportsDecoder/Hlt2DecReportsDecoder"].setup() -DataOnDemandSvc().AlgMap['Hlt2/SelReports'] = Hlt2SelReportsDecoder -DataOnDemandSvc().AlgMap['Hlt2/DecReports'] = Hlt2DecReportsDecoder - -appConf.ExtSvc += [DataOnDemandSvc()] -appMgr = GP.AppMgr() - -evt = appMgr.evtsvc() -import os -exec(compile(open(os.path.expandvars("$TESLAROOT/tests/options/streams.py"), "rb").read(), os.path.expandvars("$TESLAROOT/tests/options/streams.py"), 'exec')) - -decsPerStream = {} -evtsPerStream = {} -for stream, lines in turbo_streams.items(): - decsPerStream[stream] = 0 - evtsPerStream[stream] = 0 - -def routing_bits(rawevent): - """Return a list with the 96 routing bit values.""" - rbbanks = rawevent.banks(LHCb.RawBank.HltRoutingBits) - if rbbanks.size() < 1: return [0]*96 # some events don't have rb bank - assert rbbanks.size() == 1 # stop if we have multiple rb banks - d = rbbanks[rbbanks.size() - 1].data() # get last bank - bits = "{:032b}{:032b}{:032b}".format(d[2], d[1], d[0]) - return [int(b) for b in reversed(bits)] - -# Number of events has to be the same as in TeslaStepsStreams.py -for i in range(0,500): - appMgr.run(1) - #print i - decs = 0 - inStream = False - offStream = False - rawevent = evt['DAQ/RawEvent'] - rbits = routing_bits(rawevent) - if rbits[95] != 1: - continue - if not evt["DAQ/ODIN"]: - break - if not evt["Hlt2/DecReports"]: - print("ERROR: Hlt2 dec report missing") - continue - else: - found = {} - for stream, lines in turbo_streams.items(): - found[stream] = False - - for name,dec in evt["Hlt2/DecReports"].decReports().items(): - if name == 'Hlt2Global': - continue - if dec.decision()==1: - for stream, lines in turbo_streams.items(): - if name[:-8] in lines["lines"]: - decsPerStream[stream] = decsPerStream[stream] + 1 - found[stream] = True - - for stream, lines in turbo_streams.items(): - if found[stream]: - evtsPerStream[stream] = evtsPerStream[stream] + 1 - -print(decsPerStream) -print(evtsPerStream) -import pickle -pickle.dump( decsPerStream, open( "decsPerStream.p", "wb" ) ) -pickle.dump( evtsPerStream, open( "evtsPerStream.p", "wb" ) ) diff --git a/Phys/Tesla/tests/options/analyseOutput.py b/Phys/Tesla/tests/options/analyseOutput.py deleted file mode 100644 index 151ed575af3b58a72d7242d22dd150e4c76bb771..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/analyseOutput.py +++ /dev/null @@ -1,135 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2020 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from __future__ import print_function -import sys - -import GaudiPython as GP -from GaudiConf import IOHelper -from Configurables import ( - LHCbApp, - ApplicationMgr, - DataOnDemandSvc, - DecodeRawEvent, - HltDecReportsDecoder, - CondDB -) -from DAQSys.Decoders import DecoderDB - - -lhcbApp = LHCbApp() - -# Pass file to open as first command line argument -stream = sys.argv[-1] -prefix = "" -IOHelper('ROOT').inputFiles([prefix+stream+".dst"]) - -LHCb = GP.gbl.LHCb -appConf = ApplicationMgr() - -Hlt1SelReportsDecoder=DecoderDB["HltSelReportsDecoder/Hlt1SelReportsDecoder"].setup() -Hlt1DecReportsDecoder=DecoderDB["HltDecReportsDecoder/Hlt1DecReportsDecoder"].setup() -DataOnDemandSvc().AlgMap['Hlt1/SelReports'] = Hlt1SelReportsDecoder -DataOnDemandSvc().AlgMap['Hlt1/DecReports'] = Hlt1DecReportsDecoder -Hlt2SelReportsDecoder=DecoderDB["HltSelReportsDecoder/Hlt2SelReportsDecoder"].setup() -Hlt2DecReportsDecoder=DecoderDB["HltDecReportsDecoder/Hlt2DecReportsDecoder"].setup() -DataOnDemandSvc().AlgMap['Hlt2/SelReports'] = Hlt2SelReportsDecoder -DataOnDemandSvc().AlgMap['Hlt2/DecReports'] = Hlt2DecReportsDecoder -TurboDecReportsDecoder=HltDecReportsDecoder("TurboDecReportsDecoder") -TurboDecReportsDecoder.OutputHltDecReportsLocation = 'Turbo/DecReports'+stream -turboReports = 'Turbo/DecReports'+stream -DataOnDemandSvc().AlgMap[turboReports] = TurboDecReportsDecoder - - - -appConf.ExtSvc += [DataOnDemandSvc()] -appMgr = GP.AppMgr() - -evt = appMgr.evtsvc() -import os -import sys -exec(compile(open(os.path.expandvars("$TESLAROOT/tests/options/streams.py"), "rb").read(), os.path.expandvars("$TESLAROOT/tests/options/streams.py"), 'exec')) - -lines = turbo_streams[stream]["lines"] -lines = [line+"Decision" for line in lines] -print(lines) -decLocation = "Hlt2/DecReports" -if turbo_streams[stream]["prescale"] != None: - print("Prescaled stream") - decLocation = turboReports - - -allEvents = 0 -streamDecs = 0 -streamEvents = 0 -for i in range(0,10000): - appMgr.run(1) - #print i - decs = 0 - inStream = False - offStream = False - if not evt["DAQ/ODIN"]: - break - if not evt[decLocation]: - print("ERROR: Hlt2 dec report missing. Location ", decLocation) - continue - else: - allEvents = allEvents + 1 - for name,dec in evt[decLocation].decReports().items(): - if name == 'Hlt2Global': - continue - if dec.decision()==1: - if name in lines: - inStream = True - decs = decs + 1 - streamDecs = streamDecs + 1 - else: - offStream = True - if inStream: - streamEvents = streamEvents + 1 - - assert inStream, "ERROR: Should not contain events without positive decision of stream" - - assert (inStream or not offStream), "ERROR: Should not contain events of other streams" - - -print("##### SUMMARY #####") -print("All Events ",allEvents, ", events in stream", streamEvents, ", postive line decisions ", streamDecs) - -if allEvents != streamEvents: - print("ERROR: More events than should be in stream") - -import pickle -decsPerStream = pickle.load( open( "decsPerStream.p", "rb" ) ) -evtsPerStream = pickle.load( open( "evtsPerStream.p", "rb" ) ) -if turbo_streams[stream]["prescale"] == None: - if decsPerStream[stream] != streamDecs: - print("ERROR : Number of input decision different to output") - print("Should be ", decsPerStream[stream]) - assert False - if evtsPerStream[stream] != streamEvents: - print("ERROR : Number of input events different to output") - print("Should be ", evntsPerStream[stream]) - assert False - -else: - print("INFO : Stream contains prescaled lines") - print("Input decsions were ", decsPerStream[stream]) - print("Effective prescaling : ", float(streamDecs)/decsPerStream[stream]) - if streamDecs >= decsPerStream[stream] : - print("ERROR : No prescaling applied") - assert False - - print("Input events were ", evtsPerStream[stream]) - print("Effective prescaling : ", float(streamEvents)/evtsPerStream[stream]) - if streamEvents >= evtsPerStream[stream] : - print("ERROR : No prescaling applied") - assert False - diff --git a/Phys/Tesla/tests/options/containers.py b/Phys/Tesla/tests/options/containers.py deleted file mode 100644 index c825ba2f26c26ebe9d4c3411d2d4c21c4a4732f7..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/containers.py +++ /dev/null @@ -1,151 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2020 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -# Options file for the QMTest to check that the containers have not -# changed, either in values or in size. - -from __future__ import print_function -from Configurables import Tesla -from Gaudi.Configuration import * - -from Configurables import HltANNSvc -Hlt2ID = HltANNSvc().Hlt2SelectionID -if "Hlt2Global" not in Hlt2ID : Hlt2ID.update( { "Hlt2Global" : 2 } ) -HltANNSvc().Hlt1SelectionID = { 'PV3D' : 10103 - ,'ProtoPV3D' : 10117 -} -Hlt2ID.update( { 'Hlt2IncPhiDecision' : 50000 - ,'Hlt2IncPhiSidebandsDecision' : 50003 - ,'Hlt2IncPhiTrackFitDecision' : 50002 - } ) -HltANNSvc().InfoID = { - "FastTTValidationTool/ValidateWithTT" : 6350, - "MatchVeloMuon" : 6400, - "IsMuonTool" : 6401, - "PatForwardTool/LooseForward" : 6299, - "PatForwardTool/TightForward" : 6300, - 'Hlt2Topo2BodyBBDTResponse' : 6502, - 'Hlt2Topo3BodyBBDTResponse' : 6303, - 'Hlt2Topo4BodyBBDTResponse' : 6304 - } - -Tesla().TriggerLines = ["Hlt2IncPhi"] -Tesla().EnableLineChecker = False -Tesla().OutputLevel = 2 -Tesla().EvtMax = -1 -Tesla().Pack = False -Tesla().SplitRawEventInput = '0.4' -Tesla().SplitRawEventOutput = '0.4' - -from PRConfig.TestFileDB import test_file_db -input = test_file_db['Tesla_Bsphiphi_MC12wTurbo'] -input.run(configurable=Tesla()) - -import GaudiPython -from Gaudi.Configuration import ApplicationMgr -from Configurables import LoKiSvc - -from GaudiKernel import ROOT6WorkAroundEnabled -if ROOT6WorkAroundEnabled('ROOT-7492'): - # trigger autoloading of LHCbKernel dictionary - GaudiPython.gbl.LHCb.LHCbID - # trigger autoloading of DigiEvent dictionary - GaudiPython.gbl.LHCb.CaloDigit - -gaudi = GaudiPython.AppMgr() -gaudi.initialize() - -gaudi.algorithm("TeslaReportAlgo").Enable = False -gaudi.algorithm("DstWriter").Enable = False - -tes = gaudi.evtsvc() - -selRepLoc = "Hlt2/SelReports" - -prefix = "Hlt2IncPhi" -partLoc ="/Event/Turbo/" + prefix + "/Particles" -protoLoc ="/Event/Turbo/Protos" -trackLoc ="/Event/Turbo/Tracks" -vertLoc ="/Event/Turbo/" + prefix + "/Vertices" - -i_partTot=0.0 -i_trackTot=0.0 -i_protoTot=0.0 -i_vertTot=0.0 -# -n=0 -n_pop=0 - -# -meanMass = 0.0 -meanTrackChi2 = 0.0 -meanVertexChi2 = 0.0 -meanDLLK = 0.0 -# -meanSizePart = 0.0 -meanSizeTrack = 0.0 -meanSizeVert = 0.0 -meanSizeProto = 0.0 - -#while True: -while n<1000: - n+=1 - # - gaudi.run(1) - if not tes['/Event/DAQ/RawEvent']: - print("End of file") - break - # - gaudi.executeEvent() - gaudi.algorithm("TeslaReportAlgo").execute() - - - parts = tes[partLoc] - tracks = tes[trackLoc] - verts = tes[vertLoc] - protos = tes[protoLoc] - if not parts: - continue - else: - n_pop+=1.0 - for part in parts: - i_partTot+=1.0 - meanMass += part.measuredMass() - for track in tracks: - i_trackTot+=1.0 - meanTrackChi2 += track.chi2PerDoF() - for vert in verts: - i_vertTot+=1.0 - meanVertexChi2 += vert.chi2() - for proto in protos: - i_protoTot+=1.0 - meanDLLK += proto.info(603,0) -meanSizePart = i_partTot / n_pop -meanMass = meanMass / ( i_partTot ) -meanSizeTrack = i_trackTot / n_pop -meanTrackChi2 = meanTrackChi2 / ( i_trackTot ) -meanSizeVert = i_vertTot / n_pop -meanVertexChi2 = meanVertexChi2 / ( i_vertTot ) -meanSizeProto = i_protoTot / n_pop -meanDLLK = meanDLLK / ( i_protoTot ) - -# print container sizes and mean of interested quantities -print("Particle Check ***********************************") -print("Average mass = "+str(round(meanMass,1))) -print("Average container size = "+str(round(meanSizePart,1))) -print("Track Check **************************************") -print("Average chi2 = "+str(round(meanTrackChi2,2))) -print("Average container size = "+str(round(meanSizeTrack,1))) -print("Vertex Check *************************************") -print("Average chi2 = "+str(round(meanVertexChi2,3))) -print("Average container size = "+str(round(meanSizeVert,1))) -print("Proto Check **************************************") -print("Average DLLK = "+str(round(meanDLLK,3))) -print("Average container size = "+str(round(meanSizeProto,1))) diff --git a/Phys/Tesla/tests/options/rightList.py b/Phys/Tesla/tests/options/rightList.py deleted file mode 100644 index 8a16a3de23db0ee97f88fbafd0c1efa502642e19..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/rightList.py +++ /dev/null @@ -1,217 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from Configurables import TeslaLineChecker -list = ["Hlt2BottomoniumDiKstarTurbo" -,"Hlt2CharmHadD02KmPipTurbo" -,"Hlt2CharmHadDp2KS0KS0KpTurbo" -,"Hlt2CharmHadDp2KS0KmKpPip_KS0DDTurbo" -,"Hlt2CharmHadDp2KS0KS0PipTurbo" -,"Hlt2CharmHadDp2KS0KmKpPip_KS0LLTurbo" -,"Hlt2CharmHadDp2KS0KmPipPip_KS0DDTurbo" -,"Hlt2CharmHadDp2KS0KmPipPip_KS0LLTurbo" -,"Hlt2CharmHadDp2KS0KpKpPim_KS0DDTurbo" -,"Hlt2CharmHadDp2KS0KpKpPim_KS0LLTurbo" -,"Hlt2CharmHadDp2KS0KpPimPip_KS0DDTurbo" -,"Hlt2CharmHadDp2KS0KpPimPip_KS0LLTurbo" -,"Hlt2CharmHadDp2KS0Kp_KS0DDTurbo" -,"Hlt2CharmHadDp2KS0Kp_KS0LLTurbo" -,"Hlt2CharmHadDp2KS0PimPipPip_KS0DDTurbo" -,"Hlt2CharmHadDp2KS0PimPipPip_KS0LLTurbo" -,"Hlt2CharmHadDp2KS0Pip_KS0DDTurbo" -,"Hlt2CharmHadDp2KS0Pip_KS0LLTurbo" -,"Hlt2CharmHadDp2KmKmKpPipPipTurbo" -,"Hlt2CharmHadDp2KmKpPimPipPipTurbo" -,"Hlt2CharmHadDp2KmPimPipPipPipTurbo" -,"Hlt2CharmHadDpToKmKpKpTurbo" -,"Hlt2CharmHadDpToKmKpPipTurbo" -,"Hlt2CharmHadDpToKmPipPipTurbo" -,"Hlt2CharmHadDpToKmPipPip_ForKPiAsymTurbo" -,"Hlt2CharmHadDpToKmPipPip_LTUNBTurbo" -,"Hlt2CharmHadDpToKpKpPimTurbo" -,"Hlt2CharmHadDpToKpPimPipTurbo" -,"Hlt2CharmHadDpToPimPipPipTurbo" -,"Hlt2CharmHadDsp2KS0KS0KpTurbo" -,"Hlt2CharmHadDsp2KS0KS0PipTurbo" -,"Hlt2CharmHadDsp2KS0KmKpPip_KS0DDTurbo" -,"Hlt2CharmHadDsp2KS0KmKpPip_KS0LLTurbo" -,"Hlt2CharmHadDsp2KS0KmPipPip_KS0DDTurbo" -,"Hlt2CharmHadDsp2KS0KmPipPip_KS0LLTurbo" -,"Hlt2CharmHadDsp2KS0KpKpPim_KS0DDTurbo" -,"Hlt2CharmHadDsp2KS0KpKpPim_KS0LLTurbo" -,"Hlt2CharmHadDsp2KS0KpPimPip_KS0DDTurbo" -,"Hlt2CharmHadDsp2KS0KpPimPip_KS0LLTurbo" -,"Hlt2CharmHadDsp2KS0PimPipPip_KS0DDTurbo" -,"Hlt2CharmHadDsp2KS0PimPipPip_KS0LLTurbo" -,"Hlt2CharmHadDsp2KmKmKpPipPipTurbo" -,"Hlt2CharmHadDsp2KmKpPimPipPipTurbo" -,"Hlt2CharmHadDsp2KmPimPipPipPipTurbo" -,"Hlt2CharmHadDspToKmKpKpTurbo" -,"Hlt2CharmHadDspToKmKpPipTurbo" -,"Hlt2CharmHadDspToKmKpPip_LTUNBTurbo" -,"Hlt2CharmHadDspToKmPipPipTurbo" -,"Hlt2CharmHadDspToKpKpPimTurbo" -,"Hlt2CharmHadDspToKpPimPipTurbo" -,"Hlt2CharmHadDspToPimPipPipTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KS0_KS0DDTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KS0_KS0LLTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KS0_KS0LL_KS0DDTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0DDTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0DD_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0LLTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0LL_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0DDTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0DD_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0LLTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0LL_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0DDTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0DD_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0LLTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0LL_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0DDTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0DD_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0LLTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0LL_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KmKmKpPipTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KmKpKpPimTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KmKpPimPipTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KmKpTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KmKp_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KmPimPipPipTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KmPipTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KmPip_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KpPimPimPipTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KpPimTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02KpPim_LTUNBTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02PimPimPipPipTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02PimPipTurbo" -,"Hlt2CharmHadDstp2D0Pip_D02PimPip_LTUNBTurbo" -,"Hlt2CharmHadLcp2KS0KS0PpTurbo" -,"Hlt2CharmHadLcp2LamKmKpPip_Lam2PpPimTurbo" -,"Hlt2CharmHadLcp2LamKmPipPip_Lam2PpPimTurbo" -,"Hlt2CharmHadLcp2LamKp_LamDDTurbo" -,"Hlt2CharmHadLcp2LamKp_LamLLTurbo" -,"Hlt2CharmHadLcp2LamPip_LamDDTurbo" -,"Hlt2CharmHadLcp2LamPip_LamLLTurbo" -,"Hlt2CharmHadLcpToPpKmKmPipPipTurbo" -,"Hlt2CharmHadLcpToPpKmKpPimPipTurbo" -,"Hlt2CharmHadLcpToPpKmKpTurbo" -,"Hlt2CharmHadLcpToPpKmPimPipPipTurbo" -,"Hlt2CharmHadLcpToPpKmPipTurbo" -,"Hlt2CharmHadLcpToPpKmPip_LTUNBTurbo" -,"Hlt2CharmHadLcpToPpKpKpPimPimTurbo" -,"Hlt2CharmHadLcpToPpKpPimPimPipTurbo" -,"Hlt2CharmHadLcpToPpKpPimTurbo" -,"Hlt2CharmHadLcpToPpPimPimPipPipTurbo" -,"Hlt2CharmHadLcpToPpPimPipTurbo" -,"Hlt2CharmHadOmm2LamKm_DDDTurbo" -,"Hlt2CharmHadOmm2LamKm_DDLTurbo" -,"Hlt2CharmHadOmm2LamKm_LLLTurbo" -,"Hlt2CharmHadPentaToPhiPpPimTurbo" -,"Hlt2CharmHadXic0ToPpKmKmPipTurbo" -,"Hlt2CharmHadXic0ToPpKmKmPip_LTUNBTurbo" -,"Hlt2CharmHadXiccp2D0PpKmPim_D02KmPipTurbo" -,"Hlt2CharmHadXiccp2D0PpKmPip_D02KmPipTurbo" -,"Hlt2CharmHadXiccp2D0PpKpPim_D02KmPipTurbo" -,"Hlt2CharmHadXiccp2DpPpKm_Dp2KmPipPipTurbo" -,"Hlt2CharmHadXiccp2DpPpKp_Dp2KmPipPipTurbo" -,"Hlt2CharmHadXiccp2LcpKmPim_Lcp2PpKmPipTurbo" -,"Hlt2CharmHadXiccp2LcpKmPip_Lcp2PpKmPipTurbo" -,"Hlt2CharmHadXiccp2LcpKpPim_Lcp2PpKmPipTurbo" -,"Hlt2CharmHadXiccp2Xic0Pim_Xic0ToPpKmKmPipTurbo" -,"Hlt2CharmHadXiccp2Xic0Pip_Xic0ToPpKmKmPipTurbo" -,"Hlt2CharmHadXiccp2XicpPimPim_Xicp2PpKmPipTurbo" -,"Hlt2CharmHadXiccp2XicpPimPip_Xicp2PpKmPipTurbo" -,"Hlt2CharmHadXiccpp2D0PpKmPimPip_D02KmPipTurbo" -,"Hlt2CharmHadXiccpp2D0PpKmPipPip_D02KmPipTurbo" -,"Hlt2CharmHadXiccpp2D0PpKpPimPip_D02KmPipTurbo" -,"Hlt2CharmHadXiccpp2DpPpKmPim_Dp2KmPipPipTurbo" -,"Hlt2CharmHadXiccpp2DpPpKmPip_Dp2KmPipPipTurbo" -,"Hlt2CharmHadXiccpp2DpPpKpPip_Dp2KmPipPipTurbo" -,"Hlt2CharmHadXiccpp2LcpKmPimPip_Lcp2PpKmPipTurbo" -,"Hlt2CharmHadXiccpp2LcpKmPipPip_Lcp2PpKmPipTurbo" -,"Hlt2CharmHadXiccpp2LcpKpPimPip_Lcp2PpKmPipTurbo" -,"Hlt2CharmHadXiccpp2Xic0PimPip_Xic0ToPpKmKmPipTurbo" -,"Hlt2CharmHadXiccpp2Xic0PipPip_Xic0ToPpKmKmPipTurbo" -,"Hlt2CharmHadXiccpp2XicpPim_Xicp2PpKmPipTurbo" -,"Hlt2CharmHadXiccpp2XicpPip_Xicp2PpKmPipTurbo" -,"Hlt2CharmHadXicpToPpKmPipTurbo" -,"Hlt2CharmHadXim2LamPim_DDDTurbo" -,"Hlt2CharmHadXim2LamPim_DDLTurbo" -,"Hlt2CharmHadXim2LamPim_LLLTurbo" -,"Hlt2DiMuonBTurbo" -,"Hlt2DiMuonJPsiTurbo" -,"Hlt2DiMuonPsi2STurbo" -,"Hlt2ExoticaDiMuonNoIPTurbo" -,"Hlt2ExoticaPrmptDiMuonSSTurbo" -,"Hlt2ExoticaPrmptDiMuonTurbo" -,"Hlt2LFVJpsiMuETurbo" -,"Hlt2LFVPhiMuETurbo" -,"Hlt2LFVPromptPhiMuETurbo" -,"Hlt2LFVUpsilonMuETurbo" -,"Hlt2PIDB2KJPsiEENegTaggedTurboCalib" -,"Hlt2PIDB2KJPsiEEPosTaggedTurboCalib" -,"Hlt2PIDB2KJPsiMuMuNegTaggedTurboCalib" -,"Hlt2PIDB2KJPsiMuMuPosTaggedTurboCalib" -,"Hlt2PIDD02KPiTagTurboCalib" -,"Hlt2PIDDetJPsiMuMuNegTaggedTurboCalib" -,"Hlt2PIDDetJPsiMuMuPosTaggedTurboCalib" -,"Hlt2PIDDs2KKPiSSTaggedTurboCalib" -,"Hlt2PIDDs2MuMuPiNegTaggedTurboCalib" -,"Hlt2PIDDs2MuMuPiPosTaggedTurboCalib" -,"Hlt2PIDDs2PiPhiKKNegTaggedTurboCalib" -,"Hlt2PIDDs2PiPhiKKPosTaggedTurboCalib" -,"Hlt2PIDDs2PiPhiMuMuNegTaggedTurboCalib" -,"Hlt2PIDDs2PiPhiMuMuPosTaggedTurboCalib" -,"Hlt2PIDKs2PiPiLLTurboCalib" -,"Hlt2PIDLambda2PPiLLTurboCalib" -,"Hlt2PIDLambda2PPiLLhighPTTurboCalib" -,"Hlt2PIDLambda2PPiLLisMuonTurboCalib" -,"Hlt2PIDLambda2PPiLLveryhighPTTurboCalib" -,"Hlt2PIDLb2LcMuNuTurboCalib" -,"Hlt2PIDLb2LcPiTurboCalib" -,"Hlt2PIDLc2KPPiTurboCalib" -,"Hlt2PhiPhi2EETurbo" -,"Hlt2PhiPromptPhi2EETurbo" -,"Hlt2SLB_B2D0Mu_D02KmKpTurbo" -,"Hlt2SLB_B2D0Mu_D02KmPipTurbo" -,"Hlt2SLB_B2D0Mu_D02PimPipTurbo" -,"Hlt2SLB_B2DstMu_D02KmKpTurbo" -,"Hlt2SLB_B2DstMu_D02KmPipTurbo" -,"Hlt2SLB_B2DstMu_D02PimPipTurbo" -,"Hlt2StrangeKPiPiPiTurbo" -,"Hlt2TrackEffDiMuonDownstreamMinusHighStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonDownstreamMinusHighStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonDownstreamMinusLowStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonDownstreamMinusLowStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonDownstreamPlusHighStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonDownstreamPlusHighStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonDownstreamPlusLowStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonDownstreamPlusLowStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonMuonTTMinusHighStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonMuonTTMinusHighStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonMuonTTMinusLowStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonMuonTTMinusLowStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonMuonTTPlusHighStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonMuonTTPlusHighStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonMuonTTPlusLowStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonMuonTTPlusLowStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonVeloMuonMinusHighStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonVeloMuonMinusHighStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonVeloMuonMinusLowStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonVeloMuonMinusLowStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonVeloMuonPlusHighStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonVeloMuonPlusHighStatTaggedTurboCalib" -,"Hlt2TrackEffDiMuonVeloMuonPlusLowStatMatchedTurboCalib" -,"Hlt2TrackEffDiMuonVeloMuonPlusLowStatTaggedTurboCalib" -,"Hlt2TrackEff_D0ToKpiKaonProbeTurbo" -,"Hlt2TrackEff_D0ToKpiPionProbeTurbo"] -TeslaLineChecker().RequestedLines = list - diff --git a/Phys/Tesla/tests/options/streams.py b/Phys/Tesla/tests/options/streams.py deleted file mode 100644 index 5d8ba0db9d2890be8a5ff701edc7eb36a88c0b81..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/options/streams.py +++ /dev/null @@ -1,241 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -turbo_streams = { - 'DiMuon': { - 'lines': [ - 'Hlt2DiMuonBTurbo', - 'Hlt2DiMuonJPsiTurbo', - 'Hlt2DiMuonPsi2STurbo', - 'Hlt2ExoticaPrmptDiMuonSSTurbo', - 'Hlt2ExoticaPrmptDiMuonTurbo', - 'Hlt2DiMuonPsi2SLowPTTurbo', - 'Hlt2ExoticaDiMuonNoIPTurbo', - 'Hlt2LFVPhiMuETurbo', - 'Hlt2LFVPromptPhiMuETurbo', - 'Hlt2LFVUpsilonMuETurbo', - 'Hlt2PhiPhi2EETurbo', - 'Hlt2PhiPromptPhi2EETurbo' - ], - 'prescale': None - }, - 'Dp_Lcp_Dsp': { - 'lines': [ - 'Hlt2CharmHadDp2KS0KS0KpTurbo', - 'Hlt2CharmHadDp2KS0KS0PipTurbo', - 'Hlt2CharmHadDp2KS0KmKpPip_KS0DDTurbo', - 'Hlt2CharmHadDp2KS0KmKpPip_KS0LLTurbo', - 'Hlt2CharmHadDp2KS0KmPipPip_KS0DDTurbo', - 'Hlt2CharmHadDp2KS0KmPipPip_KS0LLTurbo', - 'Hlt2CharmHadDp2KS0KpKpPim_KS0DDTurbo', - 'Hlt2CharmHadDp2KS0KpKpPim_KS0LLTurbo', - 'Hlt2CharmHadDp2KS0KpPimPip_KS0DDTurbo', - 'Hlt2CharmHadDp2KS0KpPimPip_KS0LLTurbo', - 'Hlt2CharmHadDp2KS0Kp_KS0DDTurbo', - 'Hlt2CharmHadDp2KS0Kp_KS0LLTurbo', - 'Hlt2CharmHadDp2KS0PimPipPip_KS0DDTurbo', - 'Hlt2CharmHadDp2KS0PimPipPip_KS0LLTurbo', - 'Hlt2CharmHadDp2KS0Pip_KS0DDTurbo', - 'Hlt2CharmHadDp2KS0Pip_KS0LLTurbo', - 'Hlt2CharmHadDp2KmKmKpPipPipTurbo', - 'Hlt2CharmHadDp2KmKpPimPipPipTurbo', - 'Hlt2CharmHadDp2KmPimPipPipPipTurbo', - 'Hlt2CharmHadDpToKmKpKpTurbo', - 'Hlt2CharmHadDpToKmKpPipTurbo', - 'Hlt2CharmHadDpToKmPipPip_ForKPiAsymTurbo', - 'Hlt2CharmHadDpToKmPipPip_LTUNBTurbo', - 'Hlt2CharmHadDpToKpKpPimTurbo', - 'Hlt2CharmHadDpToKpPimPipTurbo', - 'Hlt2CharmHadDpToPimPipPipTurbo', - 'Hlt2CharmHadDsp2KS0KS0KpTurbo', - 'Hlt2CharmHadDsp2KS0KS0PipTurbo', - 'Hlt2CharmHadDsp2KS0KmKpPip_KS0DDTurbo', - 'Hlt2CharmHadDsp2KS0KmKpPip_KS0LLTurbo', - 'Hlt2CharmHadDsp2KS0KmPipPip_KS0DDTurbo', - 'Hlt2CharmHadDsp2KS0KmPipPip_KS0LLTurbo', - 'Hlt2CharmHadDsp2KS0KpKpPim_KS0DDTurbo', - 'Hlt2CharmHadDsp2KS0KpKpPim_KS0LLTurbo', - 'Hlt2CharmHadDsp2KS0KpPimPip_KS0DDTurbo', - 'Hlt2CharmHadDsp2KS0KpPimPip_KS0LLTurbo', - 'Hlt2CharmHadDsp2KS0PimPipPip_KS0DDTurbo', - 'Hlt2CharmHadDsp2KS0PimPipPip_KS0LLTurbo', - 'Hlt2CharmHadDsp2KmKmKpPipPipTurbo', - 'Hlt2CharmHadDsp2KmKpPimPipPipTurbo', - 'Hlt2CharmHadDsp2KmPimPipPipPipTurbo', - 'Hlt2CharmHadDspToKmKpKpTurbo', - 'Hlt2CharmHadDspToKmKpPip_LTUNBTurbo', - 'Hlt2CharmHadDspToKmPipPipTurbo', - 'Hlt2CharmHadDspToKpKpPimTurbo', - 'Hlt2CharmHadDspToKpPimPipTurbo', - 'Hlt2CharmHadDspToPimPipPipTurbo', - 'Hlt2CharmHadLcp2KS0KS0PpTurbo', - 'Hlt2CharmHadLcp2LamKmKpPip_Lam2PpPimTurbo', - 'Hlt2CharmHadLcp2LamKmPipPip_Lam2PpPimTurbo', - 'Hlt2CharmHadLcp2LamKp_LamDDTurbo', - 'Hlt2CharmHadLcp2LamKp_LamLLTurbo', - 'Hlt2CharmHadLcp2LamPip_LamDDTurbo', - 'Hlt2CharmHadLcp2LamPip_LamLLTurbo', - 'Hlt2CharmHadLcpToPpKmKmPipPipTurbo', - 'Hlt2CharmHadLcpToPpKmKpPimPipTurbo', - 'Hlt2CharmHadLcpToPpKmKpTurbo', - 'Hlt2CharmHadLcpToPpKmPimPipPipTurbo', - 'Hlt2CharmHadLcpToPpKmPip_LTUNBTurbo', - 'Hlt2CharmHadLcpToPpKpKpPimPimTurbo', - 'Hlt2CharmHadLcpToPpKpPimPimPipTurbo', - 'Hlt2CharmHadLcpToPpKpPimTurbo', - 'Hlt2CharmHadLcpToPpPimPimPipPipTurbo', - 'Hlt2CharmHadLcpToPpPimPipTurbo' - ], - 'prescale': None - }, - 'Dstp_PR': { - 'lines': [ - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0DDTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0DD_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0LLTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0LL_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0DDTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0DD_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0LLTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0LL_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0DDTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0DD_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0LLTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0LL_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0DDTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0DD_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0LLTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0LL_LTUNBTurbo' - ], - 'prescaleVersion': 1, - 'prescale': { - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0DDTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0DD_LTUNBTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0LLTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmKp_KS0LL_LTUNBTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0DDTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0DD_LTUNBTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0LLTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KmPip_KS0LL_LTUNBTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0DDTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0DD_LTUNBTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0LLTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0KpPim_KS0LL_LTUNBTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0DDTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0DD_LTUNBTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0LLTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KS0PimPip_KS0LL_LTUNBTurbo' : 0.1 - } - }, - 'Dstp_two_Dstp_two_LTUNB_D0': { - 'lines': [ - 'Hlt2CharmHadDstp2D0Pip_D02KS0KS0_KS0DDTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KS0_KS0LLTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KS0KS0_KS0LL_KS0DDTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KmKpTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KmKp_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KmPip_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KpPimTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KpPim_LTUNBTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02PimPipTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02PimPip_LTUNBTurbo', - 'Hlt2SLB_B2D0Mu_D02KmKpTurbo', - 'Hlt2SLB_B2D0Mu_D02KmPipTurbo', - 'Hlt2SLB_B2D0Mu_D02PimPipTurbo', - 'Hlt2SLB_B2DstMu_D02KmKpTurbo', - 'Hlt2SLB_B2DstMu_D02KmPipTurbo', - 'Hlt2SLB_B2DstMu_D02PimPipTurbo' - ], - 'prescale': None - }, - 'PR_park': { - 'lines': [ - 'Hlt2CharmHadD02KmPipTurbo', - 'Hlt2CharmHadDpToKmPipPipTurbo', - 'Hlt2CharmHadDspToKmKpPipTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KmPipTurbo', - 'Hlt2CharmHadLcpToPpKmPipTurbo' - ], - 'prescaleVersion': 1, - 'prescale': { - 'Hlt2CharmHadD02KmPipTurbo' : 0.1, - 'Hlt2CharmHadDpToKmPipPipTurbo' : 0.1, - 'Hlt2CharmHadDspToKmKpPipTurbo' : 0.1, - 'Hlt2CharmHadDstp2D0Pip_D02KmPipTurbo' : 0.1, - 'Hlt2CharmHadLcpToPpKmPipTurbo' : 0.1 - } - }, - 'Xiccp_Xic0_Xicp_Dstp_four_penta': { - 'lines': [ - 'Hlt2CharmHadDstp2D0Pip_D02KmKmKpPipTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KmKpKpPimTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KmKpPimPipTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KmPimPipPipTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02KpPimPimPipTurbo', - 'Hlt2CharmHadDstp2D0Pip_D02PimPimPipPipTurbo', - 'Hlt2CharmHadPentaToPhiPpPimTurbo', - 'Hlt2CharmHadXic0ToPpKmKmPip_LTUNBTurbo', - 'Hlt2CharmHadXiccp2D0PpKmPim_D02KmPipTurbo', - 'Hlt2CharmHadXiccp2D0PpKmPip_D02KmPipTurbo', - 'Hlt2CharmHadXiccp2D0PpKpPim_D02KmPipTurbo', - 'Hlt2CharmHadXiccp2DpPpKm_Dp2KmPipPipTurbo', - 'Hlt2CharmHadXiccp2DpPpKp_Dp2KmPipPipTurbo', - 'Hlt2CharmHadXiccp2LcpKmPim_Lcp2PpKmPipTurbo', - 'Hlt2CharmHadXiccp2LcpKmPip_Lcp2PpKmPipTurbo', - 'Hlt2CharmHadXiccp2LcpKpPim_Lcp2PpKmPipTurbo', - 'Hlt2CharmHadXiccp2Xic0Pim_Xic0ToPpKmKmPipTurbo', - 'Hlt2CharmHadXiccp2Xic0Pip_Xic0ToPpKmKmPipTurbo', - 'Hlt2CharmHadXiccp2XicpPimPim_Xicp2PpKmPipTurbo', - 'Hlt2CharmHadXiccp2XicpPimPip_Xicp2PpKmPipTurbo', - 'Hlt2CharmHadXiccpp2D0PpKmPimPip_D02KmPipTurbo', - 'Hlt2CharmHadXiccpp2D0PpKmPipPip_D02KmPipTurbo', - 'Hlt2CharmHadXiccpp2D0PpKpPimPip_D02KmPipTurbo', - 'Hlt2CharmHadXiccpp2DpPpKmPim_Dp2KmPipPipTurbo', - 'Hlt2CharmHadXiccpp2DpPpKmPip_Dp2KmPipPipTurbo', - 'Hlt2CharmHadXiccpp2DpPpKpPip_Dp2KmPipPipTurbo', - 'Hlt2CharmHadXiccpp2LcpKmPimPip_Lcp2PpKmPipTurbo', - 'Hlt2CharmHadXiccpp2LcpKmPipPip_Lcp2PpKmPipTurbo', - 'Hlt2CharmHadXiccpp2LcpKpPimPip_Lcp2PpKmPipTurbo', - 'Hlt2CharmHadXiccpp2Xic0PimPip_Xic0ToPpKmKmPipTurbo', - 'Hlt2CharmHadXiccpp2Xic0PipPip_Xic0ToPpKmKmPipTurbo', - 'Hlt2CharmHadXiccpp2XicpPim_Xicp2PpKmPipTurbo', - 'Hlt2CharmHadXiccpp2XicpPip_Xicp2PpKmPipTurbo', - 'Hlt2TrackEff_D0ToKpiKaonProbeTurbo', - 'Hlt2TrackEff_D0ToKpiPionProbeTurbo', - 'Hlt2BottomoniumDiKstarTurbo', - 'Hlt2LFVJpsiMuETurbo', - 'Hlt2StrangeKPiPiPiTurbo' - ], - 'prescale': None - }, - 'XimOmm_PR': { - 'lines': [ - 'Hlt2CharmHadOmm2LamKm_DDDTurbo', - 'Hlt2CharmHadOmm2LamKm_DDLTurbo', - 'Hlt2CharmHadOmm2LamKm_LLLTurbo', - 'Hlt2CharmHadXic0ToPpKmKmPipTurbo', - 'Hlt2CharmHadXicpToPpKmPipTurbo', - 'Hlt2CharmHadXim2LamPim_DDDTurbo', - 'Hlt2CharmHadXim2LamPim_DDLTurbo', - 'Hlt2CharmHadXim2LamPim_LLLTurbo' - ], - 'prescaleVersion': 1, - 'prescale': { - 'Hlt2CharmHadOmm2LamKm_DDDTurbo' : 0.1, - 'Hlt2CharmHadOmm2LamKm_DDLTurbo' : 0.1, - 'Hlt2CharmHadOmm2LamKm_LLLTurbo' : 0.1, - 'Hlt2CharmHadXic0ToPpKmKmPipTurbo' : 0.1, - 'Hlt2CharmHadXicpToPpKmPipTurbo' : 0.1, - 'Hlt2CharmHadXim2LamPim_DDDTurbo' : 0.1, - 'Hlt2CharmHadXim2LamPim_DDLTurbo' : 0.1, - 'Hlt2CharmHadXim2LamPim_LLLTurbo' : 0.1 - } - }, -} diff --git a/Phys/Tesla/tests/qmtest/tesla.qms/default_2015.qmt b/Phys/Tesla/tests/qmtest/tesla.qms/default_2015.qmt deleted file mode 100644 index fe72d08b297d65f8c71eb3949827ab07486a9e16..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/qmtest/tesla.qms/default_2015.qmt +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" ?><!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> -<!-- - (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration - - This software is distributed under the terms of the GNU General Public - Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". - - In applying this licence, CERN does not waive the privileges and immunities - granted to it by virtue of its status as an Intergovernmental Organization - or submit itself to any jurisdiction. ---> -<!-- -####################################################### -# SUMMARY OF THIS TEST -# ................... -# Author: sbenson -# Purpose: Restore from 2015 reprocessing TCK -# Prerequisites: None -# Common failure modes, severities and cures: -# . SEVERE: Segfault or raised exception, stderr, nonzero return code -# . MAJOR: additional FATAL/ERROR messages always a major problem. no ERROR messages should ever be printed when running this test. -# . MINOR: additional WARNING messages, it is unclear how severe these may be, you will need to hunt down the cause and either fix the problem or suppress the warning. -# . EXPECTED: At the moment this test has a habit of timing out or being killed by some abort signal in finalize, but the output always looks fine. -####################################################### ---> -<extension class="GaudiTest.GaudiExeTest" kind="test"> - <argument name="program"><text>gaudirun.py</text></argument> - <argument name="timeout"><integer>3600</integer></argument> - <argument name="args"><set> - <text>../options/TCK_2015RP.py</text> - </set></argument> - <argument name="validator"><text> -countErrorLines({"FATAL":0, "ERROR":0, "WARNING" :1}) -</text></argument> -</extension> - diff --git a/Phys/Tesla/tests/qmtest/tesla.qms/lineChecker_success.qmt b/Phys/Tesla/tests/qmtest/tesla.qms/lineChecker_success.qmt deleted file mode 100644 index f712c207f331bfe1b3ea942ecee73c62a7c21ce4..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/qmtest/tesla.qms/lineChecker_success.qmt +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" ?><!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> -<!-- - (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration - - This software is distributed under the terms of the GNU General Public - Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". - - In applying this licence, CERN does not waive the privileges and immunities - granted to it by virtue of its status as an Intergovernmental Organization - or submit itself to any jurisdiction. ---> -<!-- -####################################################### -# SUMMARY OF THIS TEST -# ................... -# Author: sstahl -# Purpose: Test fucntionality of TeslaLineChecker -# Common failure modes, severities and cures: -# . SEVERE: Segfault or raised exception, stderr, nonzero return code -# . MAJOR: additional FATAL/ERROR messages always a major problem. no ERROR messages should ever be printed when running this test. -# . MINOR: additional WARNING messages, it is unclear how severe these may be, you will need to hunt down the cause and either fix the problem or suppress the warning. -# . EXPECTED: At the moment this test has a habit of timing out or being killed by some abort signal in finalize, but the output always looks fine. -####################################################### ---> -<extension class="GaudiTest.GaudiExeTest" kind="test"> - <argument name="program"><text>gaudirun.py</text></argument> - <argument name="timeout"><integer>120</integer></argument> - <argument name="args"><set> - <text>../options/DV_LineChecker.py</text> - <text>../options/rightList.py</text> - </set></argument> - <argument name="validator"><text> -block=""" -TeslaLineChecker INFO Number of counters : 1 - | Counter | # | sum | mean/eff^* | rms/err^* | min | max | - |*"#accept" | 50 | 50 |( 100.0000 +- 0.000000)% | -""" -findReferenceBlock(block) - </text></argument> -</extension> diff --git a/Phys/Tesla/tests/qmtest/tesla.qms/pvrestore.qmt b/Phys/Tesla/tests/qmtest/tesla.qms/pvrestore.qmt deleted file mode 100644 index 0811bfef74f64a96f2078957a151db5a79496af0..0000000000000000000000000000000000000000 --- a/Phys/Tesla/tests/qmtest/tesla.qms/pvrestore.qmt +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" ?><!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> -<!-- - (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration - - This software is distributed under the terms of the GNU General Public - Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". - - In applying this licence, CERN does not waive the privileges and immunities - granted to it by virtue of its status as an Intergovernmental Organization - or submit itself to any jurisdiction. ---> -<!-- -####################################################### -# SUMMARY OF THIS TEST -# ................... -# Author: sbenson -# Purpose: Check Tesla restores online PVs correctly -# Prerequisites: None -# Common failure modes, severities and cures: -# . SEVERE: Segfault or raised exception, stderr, nonzero return code -# . MAJOR: additional FATAL/ERROR messages always a major problem. no ERROR messages should ever be printed when running this test. -# . MINOR: additional WARNING messages, it is unclear how severe these may be, you will need to hunt down the cause and either fix the problem or suppress the warning. -# . EXPECTED: At the moment this test has a habit of timing out or being killed by some abort signal in finalize, but the output always looks fine. -####################################################### ---> -<extension class="GaudiTest.GaudiExeTest" kind="test"> - <argument name="program"><text>python</text></argument> - <argument name="timeout"><integer>3600</integer></argument> - <argument name="args"><set> - <text>../options/DV_Upgrade_PVs.py</text> - </set></argument> - <argument name="validator"><text> -countErrorLines({"FATAL":0, "ERROR":0, "WARNING" :1}) - </text></argument> -</extension> - diff --git a/Phys/TurboCache/CMakeLists.txt b/Phys/TurboCache/CMakeLists.txt deleted file mode 100644 index 091f1ae711e33e62eac24e6594853411511e6406..0000000000000000000000000000000000000000 --- a/Phys/TurboCache/CMakeLists.txt +++ /dev/null @@ -1,65 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -################################################################################ -# Package: TurboCache -################################################################################ -gaudi_subdir(TurboCache) - -gaudi_depends_on_subdirs(Phys/Tesla - Phys/LoKiHlt - Phys/LoKiArrayFunctors - Phys/LoKiHlt - Phys/LoKiPhys - Phys/LoKiAlgo - Phys/LoKiCore) - -find_package(Boost) -find_package(ROOT) -include_directories(SYSTEM ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS}) - -set(options_Turbo04 - ${AppConfig_DIR}/options/Turbo/Tesla_Data_2017.py - ${AppConfig_DIR}/options/Turbo/Streams_pp_2017.py - ${AppConfig_DIR}/options/Turbo/Tesla_KillInputHlt2Reps.py - ) - -set(options_Turbo04_TurCal - ${AppConfig_DIR}/options/Turbo/Tesla_Data_2017_TurCal.py - ${AppConfig_DIR}/options/Turbo/Tesla_Calibration_Hlt2Lines_2017.py - ) - - -# Do not build for the -O0 platform, as this seems to have problems. -if (NOT "$ENV{CMTCONFIG}" MATCHES ".*-do0$") - - # Import the cache creation module - include(LoKiFunctorsCache) - - # Set dependency so caches build last, after Tesla itself. - set(conf_deps ${deps} MergedConfDB) - - #foreach(production Turbo04 Turbo04_TurCal) - foreach(production ) - set(cache_name ${production}_FunctorCache) - set(option_files ${options_${production}}) - MESSAGE(STATUS "Cache for ${production} from: ${option_files}") - - loki_functors_cache(${cache_name} - options/SuppressLogMessages.py - ${option_files} - options/NoEvents.py - options/DisableLoKiCacheFunctors.py - FACTORIES HltFactory Hlt2HltFactory - LINK_LIBRARIES LoKiHltLib - DEPENDS ${conf_deps} - SPLIT 10) - endforeach() -endif() diff --git a/Phys/TurboCache/doc/release.notes b/Phys/TurboCache/doc/release.notes deleted file mode 100644 index 7018dfe28c4a03338da01e56e13f71451b5248df..0000000000000000000000000000000000000000 --- a/Phys/TurboCache/doc/release.notes +++ /dev/null @@ -1,14 +0,0 @@ -! ----------------------------------------------------------------------------- -! Package : TurboCache -! Responsible : -! Purpose : Keep C++ functors for turbo -! Created : 2016-09-17 -! ----------------------------------------------------------------------------- - -2016-09-17 - Sascha Stahl -- Initial commit of TurboCache, creates the cache for the first streaming - production of 2016. - -! ----------------------------------------------------------------------------- -! The END -! ----------------------------------------------------------------------------- diff --git a/Phys/TurboCache/options/DisableLoKiCacheFunctors.py b/Phys/TurboCache/options/DisableLoKiCacheFunctors.py deleted file mode 100644 index 29dfb9324efe7669c0500155761a439af42dde3d..0000000000000000000000000000000000000000 --- a/Phys/TurboCache/options/DisableLoKiCacheFunctors.py +++ /dev/null @@ -1,13 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### - -from Configurables import ApplicationMgr -ApplicationMgr().Environment['LOKI_DISABLE_CACHE'] = '1' diff --git a/Phys/TurboCache/options/NoEvents.py b/Phys/TurboCache/options/NoEvents.py deleted file mode 100644 index 1406b15ed9b065c5bf1a899493eb23d6a6657d8b..0000000000000000000000000000000000000000 --- a/Phys/TurboCache/options/NoEvents.py +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from Tesla.Configuration import Tesla -Tesla().EvtMax = 0 diff --git a/Phys/TurboCache/options/SilenceErrors.py b/Phys/TurboCache/options/SilenceErrors.py deleted file mode 100644 index 5ddada99e302adf32bad885519332696eeb808f3..0000000000000000000000000000000000000000 --- a/Phys/TurboCache/options/SilenceErrors.py +++ /dev/null @@ -1,13 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -# -*- coding: utf-8 -*- -from Gaudi.Configuration import MessageSvc, FATAL -MessageSvc(OutputLevel=FATAL) diff --git a/Phys/TurboCache/options/Streams_v4r1.py b/Phys/TurboCache/options/Streams_v4r1.py deleted file mode 100644 index 928d767bf7e95f0d908037674882c782a06b849d..0000000000000000000000000000000000000000 --- a/Phys/TurboCache/options/Streams_v4r1.py +++ /dev/null @@ -1,18 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from TurboStreamProd.streams import turbo_streams -from Tesla.Configuration import Tesla -Tesla().Streams = turbo_streams["2016"] - -#Tesla().ValidateStreams = True -# Turn on Sascha's algorithm ignoring TurboCalib -Tesla().EnableLineChecker = True -Tesla().IgnoredLines = [".*TurboCalib"] diff --git a/Phys/TurboCache/options/SuppressLogMessages.py b/Phys/TurboCache/options/SuppressLogMessages.py deleted file mode 100644 index 37e68acd89a76ea36c3c8debaf9b30c748cdb3e7..0000000000000000000000000000000000000000 --- a/Phys/TurboCache/options/SuppressLogMessages.py +++ /dev/null @@ -1,15 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -import logging -from GaudiKernel.ProcessJobOptions import GetConsoleHandler - -# Do not print any of the messages with level lower than WARNING -GetConsoleHandler().disable(allowed=logging.WARNING) diff --git a/Phys/TurboCache/options/Tesla_Data_2016_forStreams_v2.py b/Phys/TurboCache/options/Tesla_Data_2016_forStreams_v2.py deleted file mode 100755 index 25a42373251dc2ac21ecab5027c386e356d03045..0000000000000000000000000000000000000000 --- a/Phys/TurboCache/options/Tesla_Data_2016_forStreams_v2.py +++ /dev/null @@ -1,28 +0,0 @@ -############################################################################### -# (c) Copyright 2000-2018 CERN for the benefit of the LHCb Collaboration # -# # -# This software is distributed under the terms of the GNU General Public # -# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # -# # -# In applying this licence, CERN does not waive the privileges and immunities # -# granted to it by virtue of its status as an Intergovernmental Organization # -# or submit itself to any jurisdiction. # -############################################################################### -from Tesla.Configuration import Tesla -Tesla().Pack = True -Tesla().InputType = "RAW" -Tesla().DataType = '2016' -Tesla().Simulation = False -Tesla().Mode = 'Online' -Tesla().RawFormatVersion = 0.2 -Tesla().VertRepLoc = 'Hlt2' -Tesla().Park=True -Tesla().KillInputHlt2Reps=True - -Tesla().outputSuffix = ".mdst" -#Tesla().outputPrefix = "TURBO_" - -### Already juggled online -Tesla().VetoJuggle = True - -Tesla().HDRFilter=True