Example #1
0
def execute():
    LHCbApp()
    tck = "0x40b10033"
    MySeq = GaudiSequencer("MoveTCKtoNewLocation")
    MyWriter = InputCopyStream("CopyToFile")
    RawEventJuggler().TCK = tck
    RawEventJuggler().Input = 4.0 #2.0 ?
    RawEventJuggler().Output = 0.0
    RawEventJuggler().Sequencer = MySeq
    RawEventJuggler().WriterOptItemList = MyWriter
    RawEventJuggler().KillInputBanksAfter= " L0*|Hlt*"
    RawEventJuggler().KillExtraNodes = True 
    ApplicationMgr().TopAlg = [MySeq]
    LHCbApp().EvtMax = -1

    from GaudiConf import IOHelper
    IOHelper().outStream("Early2015-Juggled.dst", MyWriter)
Example #2
0
# $Id: $
# Test your line(s) of the stripping
#
# NOTE: Please make a copy of this file for your testing, and do NOT change this one!
#

from Gaudi.Configuration import *
from Configurables import DaVinci
from StrippingConf.Configuration import StrippingConf

#
#Raw event juggler to split Other/RawEvent into Velo/RawEvent and Tracker/RawEvent
#
from Configurables import RawEventJuggler

juggler = RawEventJuggler(DataOnDemand=True, Input=0.3, Output=4.2)

#
#Fix for TrackEff lines
#
from Configurables import DecodeRawEvent

DecodeRawEvent().setProp("OverrideInputs", 4.2)

# Specify the name of your configuration
my_wg = 'B2CC'  #FOR LIAISONS

# NOTE: this will work only if you inserted correctly the
# default_config dictionary in the code where your LineBuilder
# is defined.
from StrippingSelections import buildersConf
Example #3
0
    99.0: {
        "Bank_A": "FooBar",
        "Bank_B": ["FooBar", "Spam"],
        "Bank_C": "FooBar",
        "Bank_D": "Foo/#BAR#"
    }
}

test_versions = {"Spam": 0.0, "Eggs": 99.0}

RawEventFormatConf().Locations = test_locations

RawEventFormatConf().RecoDict = test_versions

#test RawEventJuggler with all options
RawEventJuggler().Input = 99.0
RawEventJuggler().Output = 0.0
RawEventJuggler().TCK = "Null"
RawEventJuggler().GenericReplacePatterns = {"#BAR#": "Bar"}
RawEventJuggler().DataOnDemand = True
RawEventJuggler().__apply_configuration__()

if [(node, dods().AlgMap[node].getFullName()) for node in dods().AlgMap
    ] != [('/Foo', 'RawEventMapCombiner/create_Foo'),
          ('/Bar', 'RawEventMapCombiner/create_Bar'),
          ('FooBar/Null/', 'RawEventMapCombiner/create_FooBar_Null')]:
    print[(node, dods().AlgMap[node].getFullName()) for node in dods().AlgMap]
    raise ValueError("Unexpected Node Map in DoD Svc")

print "Pass"
Example #4
0
@date   2020-04-20
"""
#stripping version
stripping = 'stripping29r2'

#use CommonParticlesArchive
from CommonParticlesArchive import CommonParticlesArchiveConf
CommonParticlesArchiveConf().redirect(stripping)

from Gaudi.Configuration import *
MessageSvc().Format = "% F%30W%S%7W%R%T %0W%M"
'''''' '''''' ''
#Raw event juggler to split Other/RawEvent into Velo/RawEvent and Tracker/RawEvent
#
from Configurables import RawEventJuggler
juggler = RawEventJuggler(DataOnDemand=True, Input=2.0, Output=4.0)
'''''' '''''' ''

########################

#
# Disable the cache in Tr/TrackExtrapolators
#
from Configurables import TrackStateProvider
TrackStateProvider().CacheStatesOnDemand = False

#
#Fix for TrackEff lines
#
from Configurables import DecodeRawEvent
DecodeRawEvent().setProp("OverrideInputs", 4.2)
Example #5
0
    def configureOutput(self, dstType, withMC, handleLumi):
        """
        Set up output stream
        """

        # Merge genFSRs
        if self.getProp("WriteFSR"):
            if self.getProp("MergeGenFSR"):
                GaudiSequencer("OutputDSTSeq").Members += ["GenFSRMerge"]
                                                                                                                                              
        if dstType in [ "XDST", "DST", "LDST", "RDST" ]:
            writerName = "DstWriter"
            packType  = self.getProp( "PackType" )

            # event output
            dstWriter = OutputStream( writerName )
            dstWriter.AcceptAlgs += ["Reco"] # Write only if Rec phase completed
            if handleLumi and self.getProp( "WriteLumi" ):
                dstWriter.AcceptAlgs += ["LumiSeq"] # Write also if Lumi sequence completed
            # set verbosity
            if self.getProp( "ProductionMode" ):
                if not dstWriter.isPropertySet( "OutputLevel" ):
                    dstWriter.OutputLevel = INFO
                if self.getProp("WriteFSR"):
                    FSRWriter = RecordStream( "FSROutputStreamDstWriter")
                    if not FSRWriter.isPropertySet( "OutputLevel" ):
                        FSRWriter.OutputLevel = INFO
            # Suppress spurious error when reading POOL files without run records
            if self.getProp("WriteFSR"):
                if self.getProp( "InputType" ).upper() not in [ "MDF" ]:
                    from Configurables import FileRecordDataSvc
                    FileRecordDataSvc().OutputLevel = FATAL

            if dstType == "XDST":
                # Allow multiple files open at once (SIM,DST,DIGI etc.)
                IODataManager().AgeLimit += 1

            if dstType in ["DST","XDST","LDST"] and packType not in ["MDF"]:
                jseq=GaudiSequencer("RawEventSplitSeq")
                #################################
                # Split the Raw Event for the DST
                # Use the RawEventJuggler.
                # Not delegated to DSTConf.
                # Some information must be shared with DSTConf
                #################################
                juggler=RawEventJuggler()
                juggler.Sequencer=jseq
                dstseq=GaudiSequencer("OutputDSTSeq")
                dstseq.Members.append(jseq)
                # Set the output version if not already overwritten
                if juggler.isPropertySet("Output") and juggler.getProp("Output") is not None:
                    #it's already set
                    pass
                else:
                    juggler.setProp("Output",self.getProp("SplitRawEventOutput"))
                #set the input version, could come from several places
                if self.isPropertySet("SplitRawEventInput") and self.getProp("SplitRawEventInput") is not None:
                    #if set, take it from Brunel()
                    juggler.setProp("Input",self.getProp("SplitRawEventInput"))
                    #otherwise use the setting of the juggler if it is set
                elif juggler.isPropertySet("Input") and juggler.getProp("Input") is not None:
                    pass
                    #else find it from DecodeRawEvent
                elif DecodeRawEvent().isPropertySet("OverrideInputs") and DecodeRawEvent().getProp("OverrideInputs") is not None:
                    juggler.setProp("Input",DecodeRawEvent().getProp("OverrideInputs"))
                    #else if I'm input with a DST, assume it is a Stripping20 type
                elif self._isReprocessing(self.getProp("InputType")):
                    juggler.setProp("Input",2.0)
                else:
                    #or set the default to whatever comes out of Moore by default
                    juggler.setProp("Input","Moore")
                
                #share information from the Juggler with DSTConf
                #always write out to where the Juggler asked!    
                DstConf().setProp("SplitRawEventOutput", juggler.getProp("Output"))
                #or else the default in the juggler is used, should be 0.0
                #TODO, handle the turned off Calo, shouldn't actually be a problem...
                from RawEventCompat.Configuration import _checkv
                from Configurables import RawEventFormatConf
                RawEventFormatConf().loadIfRequired()
                if juggler.getProp("Input")!=juggler.getProp("Output"):
                    if (juggler.getProp("Input") is None or juggler.getProp("Output")) is None or (_checkv(juggler.getProp("Input")))!=(_checkv(juggler.getProp("Output"))):
                        juggler.KillExtraBanks=True
                        juggler.KillExtraNodes=True
                        #really kill /Event/DAQ to prevent it re-appearing!
                        juggler.KillExtraDirectories=True
            
            from Configurables import TrackToDST

            # Filter Best Track States to be written
            trackFilter = TrackToDST("FilterBestTrackStates")
            from Configurables import ProcessPhase
            ProcessPhase("Output").DetectorList += [ "DST" ]
            GaudiSequencer("OutputDSTSeq").Members += [ trackFilter ]
            
            ### For Run 2, filter the fitted Velo tracks for PV
            if( self.getProp("DataType") in self.Run2DataTypes ):
                fittedVeloTracksFilter = TrackToDST("FilterFittedVeloTrackStates", veloStates = ["ClosestToBeam"])
                fittedVeloTracksFilter.TracksInContainer = "Rec/Track/FittedHLT1VeloTracks"
                GaudiSequencer("OutputDSTSeq").Members += [ fittedVeloTracksFilter ]
           
            if "Muon" in self.getProp("Detectors"):
                # Filter Muon Track States            
                muonTrackFilter = TrackToDST("FilterMuonTrackStates")
                muonTrackFilter.TracksInContainer = "/Event/Rec/Track/Muon"
                GaudiSequencer("OutputDSTSeq").Members += [ muonTrackFilter ]


            if packType != "NONE":
                # Add the sequence to pack the DST containers
                packSeq = GaudiSequencer("PackDST")
                DstConf().PackSequencer = packSeq
                DstConf().AlwaysCreate  = True
                GaudiSequencer("OutputDSTSeq").Members += [ packSeq ]
                # Run the packers also on Lumi only events to write empty containers
                if handleLumi and self.getProp( "WriteLumi" ):
                    notPhysSeq = GaudiSequencer("NotPhysicsSeq")
                    notPhysSeq.Members += [ packSeq ]

            # Define the file content
            DstConf().Writer     = writerName
            DstConf().DstType    = dstType
            DstConf().PackType   = packType
            #In case we didn't juggle the raw event,
            #We should write out the same as the input type!
            if not DstConf().isPropertySet("SplitRawEventOutput"):
                if self.isPropertySet("SplitRawEventInput") and self.getProp("SplitRawEventInput") is not None:
                    DstConf().setProp("SplitRawEventOutput",self.getProp("SplitRawEventInput"))
                elif DecodeRawEvent().isPropertySet("OverrideInputs") and DecodeRawEvent().getProp("OverrideInputs") is not None:
                    DstConf().setProp("SplitRawEventOutput",DecodeRawEvent().getProp("SplitRawEventInput"))
            
            if withMC:
                DstConf().SimType = "Full"
            elif self.getProp("DigiType").capitalize() == "Minimal":
                from Configurables import PackMCVertex
                GaudiSequencer("OutputDSTSeq").Members += [PackMCVertex()]
                DstConf().SimType = "Minimal"
            DstConf().OutputName = self.outputName()
            self.setOtherProps(DstConf(),["DataType","WriteFSR"])
Example #6
0
    def _configureForOnline(self):
        #
        DecodeRawEvent().DataOnDemand=False
        writer=InputCopyStream( self.writerName )
        DstConf().setProp("SplitRawEventOutput", self.getProp("RawFormatVersion"))
        
        # 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("RawFormatVersion")
        RawEventJuggler().Sequencer=TurboBanksSeq
        RawEventJuggler().WriterOptItemList=writer
        RawEventJuggler().KillExtraNodes=True
        RawEventJuggler().KillExtraBanks=True
        RawEventJuggler().KillExtraDirectories = True
        self.teslaSeq.Members += [TurboBanksSeq]
        
        # 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 = []
        lumiFilterRequireMask = []
        if self.getProp( "DataType" ) in ["2012","2015"]: # 2012 needed for nightlies tests.
            physFilterRequireMask = [ 0x0, 0x4, 0x0 ]
            lumiFilterRequireMask = [ 0x0, 0x2, 0x0 ]
        else:
            physFilterRequireMask = [ 0x0, 0x0, 0x80000000 ]
            lumiFilterRequireMask = [ 0x0, 0x0, 0x40000000 ]
        from Configurables import HltRoutingBitsFilter
        physFilter = HltRoutingBitsFilter( "PhysFilter", RequireMask = physFilterRequireMask )
        lumiFilter = HltRoutingBitsFilter( "LumiFilter", RequireMask = lumiFilterRequireMask )

        lumiSeq.Members += [ lumiFilter, physFilter ]
        lumiSeq.ModeOR = True
        #
        from Configurables import RecordStream
        FSRWriter = RecordStream( "FSROutputStreamDstWriter")
        FSRWriter.OutputLevel = INFO
        #
        # Sequence to be executed if physics sequence not called (nano events)
        notPhysSeq = GaudiSequencer("NotPhysicsSeq")
        notPhysSeq.ModeOR = True
        notPhysSeq.Members = [ physFilter ]
        writer.AcceptAlgs += ["LumiSeq","NotPhysicsSeq"]
        self.teslaSeq.Members += [lumiSeq, notPhysSeq]
Example #7
0
expected_combiner = RawEventMapCombiner("resurectRawEventMap")

if "DAQ/RawEvent" not in dods(
).AlgMap or dods().AlgMap["DAQ/RawEvent"] != expected_combiner:
    raise ValueError("Failed to add to DOD")

if expected_combiner.RawBanksToCopy != {
        'Bank_A': 'FooBar',
        'Bank_B': "FooBar"
}:
    print expected_combiner.RawBanksToCopy
    raise ValueError("MapCombiner misconfigured")

#test RawEventJuggler with all options
RawEventJuggler().Sequencer = GS("JuggleRawEvent")
RawEventJuggler().Input = "Eggs"
RawEventJuggler().Output = 0.0
RawEventJuggler().KillExtraNodes = True
RawEventJuggler().KillExtraBanks = True
RawEventJuggler().KillInputBanksBefore = ".*_C"
RawEventJuggler().KillInputBanksAfter = ".*_C"
RawEventJuggler().WriterOptItemList = ics("WriteAsOptItems")
RawEventJuggler().WriterItemList = os("WriteAsItems")
RawEventJuggler().TCK = "Null"
RawEventJuggler().GenericReplacePatterns = {"#BAR#": "Bar"}
RawEventJuggler().__apply_configuration__()

if [ent.getFullName() for ent in GS("JuggleRawEvent").Members] != [
        'bankKiller/kill_FooBar_Before', 'RawEventMapCombiner/create_Foo',
        'RawEventMapCombiner/create_Bar',
Example #8
0
# ============ Auto-generated dummy options file ======
from Gaudi.Configuration import *
from Configurables import LHCbApp
LHCbApp()

from Configurables import RawEventFormatConf, RecombineRawEvent, RawEventJuggler, RawEventMapCombiner;
from Configurables import GaudiSequencer
from Configurables import InputCopyStream as ics

MySeq=GaudiSequencer("MoveRawEventAround")
MyWriter=InputCopyStream("CopyToFile")

#RawEventFormatConf().__apply_configuration__()

RawEventJuggler().Input=0.0 #From original location
RawEventJuggler().Output=2.0 #go to Stripping20 format
RawEventJuggler().Sequencer=MySeq
RawEventJuggler().KillExtraNodes=True #remove DAQ/RawEvent completely
RawEventJuggler().KillExtraDirectories=True
RawEventJuggler().WriterOptItemList=MyWriter

ApplicationMgr().TopAlg=[MySeq]
from Configurables import StoreExplorerAlg
ApplicationMgr().TopAlg+=[StoreExplorerAlg()]

from GaudiConf import IOHelper
IOHelper().outStream("split-raw-event.dst",MyWriter)
Example #9
0
from Gaudi.Configuration import *
from LHCbKernel.Configuration import *
from Configurables import GaudiSequencer, RawEventJuggler
from Configurables import LHCbApp

LHCbApp()
tck = "0x409f0045"
MySeq = GaudiSequencer("MoveTCKtoNewLocation")
MyWriter = InputCopyStream("CopyToFile")
RawEventJuggler().TCK = tck
RawEventJuggler().Input = 2.0
RawEventJuggler().Output = 0.0
RawEventJuggler().Sequencer = MySeq
RawEventJuggler().WriterOptItemList = MyWriter
RawEventJuggler().KillInputBanksAfter = "L0*|Hlt*"
RawEventJuggler().KillExtraNodes = True
ApplicationMgr().TopAlg = [MySeq]
LHCbApp().EvtMax = 1000

from GaudiConf import IOHelper
IOHelper().outStream("/tmp/ikomarov/Rewrited.dst", MyWriter)
IOHelper().inputFiles(["/tmp/ikomarov/00024923_00000001_1.allstreams.dst"],
                      clear=True)
Example #10
0
#
# Raw event juggler to split DAQ/RawEvent into FULL.DST format
#
from Configurables import GaudiSequencer, RawEventJuggler
jseq = GaudiSequencer("RawEventSplitSeq")
juggler = RawEventJuggler("rdstJuggler")
juggler.Sequencer = jseq
juggler.Input = 0.3  # 2015 Online (Moore) format
juggler.Output = 4.2  # Reco15 format

from Configurables import DaVinci
DaVinci().prependToMainSequence([jseq])
from Configurables import TimingAuditor, SequencerTimerTool
TimingAuditor().addTool(SequencerTimerTool,name="TIMER")
TimingAuditor().TIMER.NameSize = 60

MessageSvc().Format = "% F%60W%S%7W%R%T %0W%M"

# database
DaVinci().DDDBtag   = "dddb-20150724"
DaVinci().CondDBtag = "cond-20160522"

#
# Raw event juggler to split DAQ/RawEvent into FULL.DST format
#
from Configurables import GaudiSequencer, RawEventJuggler
jseq=GaudiSequencer("RawEventSplitSeq")
juggler=RawEventJuggler("rdstJuggler")
juggler.Sequencer=jseq
juggler.Input=0.3  # 2015 Online (Moore) format 
juggler.Output=4.2 # Reco15 format

# filter out events triggered exclusively by CEP lines
from Configurables import LoKi__HDRFilter as HDRFilter
from DAQSys.Decoders import DecoderDB
Hlt2DecReportsDecoder=DecoderDB["HltDecReportsDecoder/Hlt2DecReportsDecoder"].setup()
HLTFilter2 = HDRFilter("LoKiHLT2Filter"
                      , Code = "HLT_PASS_RE('Hlt2(?!Forward)(?!DebugEvent)(?!Lumi)(?!Transparent)(?!PassThrough)(?!LowMult).*Decision')"
                      , Location = Hlt2DecReportsDecoder.OutputHltDecReportsLocation)
otherseq=GaudiSequencer("filters")
otherseq.Members=[jseq,HLTFilter2]

DaVinci().EventPreFilters = [jseq,HLTFilter2]