diff --git a/Phys/Tesla/python/Tesla/Configuration.py b/Phys/Tesla/python/Tesla/Configuration.py index 6e049852617d670d04f60dbc15df47531ed7ff02..729b8841e1aaa5cca56a233e6a21e4be61dd664b 100644 --- a/Phys/Tesla/python/Tesla/Configuration.py +++ b/Phys/Tesla/python/Tesla/Configuration.py @@ -90,6 +90,7 @@ class Tesla(LHCbConfigurableUser): , '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 # Remove maybe @@ -138,6 +139,7 @@ class Tesla(LHCbConfigurableUser): , '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' , 'RemovePrescaleExcl': 'Remove DST data banks in exclusively prescaled lines' , 'Park' : 'If prescaled streams, make a parked version' @@ -154,7 +156,7 @@ class Tesla(LHCbConfigurableUser): , '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" @@ -589,7 +591,7 @@ class Tesla(LHCbConfigurableUser): fname = self.getProp("outputFile") else: fname = self.getProp("outputPrefix") + stream + self.getProp("outputSuffix") - + # Building sequencer with stream seq = GaudiSequencer('TeslaStreamSequence' + stream) @@ -964,13 +966,45 @@ class Tesla(LHCbConfigurableUser): 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 + killer.KillSourceID = 2 << 13 + 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) + # By the time the stripper runs Hlt2/SelReports should exist + stripper = HltSelReportsStripper('Hlt2SelReportsStripper') + 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') + kill_seq.Members.append(writer) + + return kill_seq def __apply_configuration__(self): ############## Set other properties ########### self._safeSet( LHCbApp(), ['EvtMax','SkipEvents','Simulation', 'DataType' , 'CondDBtag','DDDBtag'] ) self._safeSet( TrackSys(), ['DataType'] ) self._safeSet( TurboConf(), ['DataType'] ) - + # Make sure DQFlags are ignored for Tesla productions if self.getProp('IgnoreDQFlags'): if not LHCbApp().isPropertySet( "IgnoreDQFlags" ) : @@ -1011,7 +1045,7 @@ class Tesla(LHCbConfigurableUser): ApplicationMgr().TopAlg.insert( 0, enk.getFullName() ) if self.getProp('KillInputHlt2Reps'): - bk = bankKiller("Hlt2RepKiller", BankTypes = ["HltSelReports"], DefaultIsKill = False, KillSourceID=(2<<13) ) - self.teslaSeq.Members+=[bk] + kill_selreports = self._configureHlt2SelReportsKill() + self.teslaSeq.Members += [kill_selreports] ApplicationMgr().TopAlg+=[self.teslaSeq]