Пример #1
0
def buildStream(stripping, streamName=''):
    """
    Create a StrippingStream from the lineBuilder database
    Usage:
    >>> streamDimuon = strippingStream('Stripping13','Dimuon')
    or:
    >>> conf = strippingConfiguration('Stripping13')
    >>> streamDimuon = strippingStream(conf,'Dimuon')
    
    """

    from StrippingConf.StrippingStream import StrippingStream
    from StrippingSettings.Utils import strippingConfiguration
    from StrippingSelections import lineBuilders

    stream = StrippingStream(streamName)

    if isinstance(stripping, basestring):
        _db = strippingConfiguration(stripping)
    else:
        _db = stripping

    for key in _db.keys():
        _conf = _db[key]
        if stream.name() in _conf['STREAMS']:
            _lb = lineBuilders()[_conf['BUILDERTYPE']](key, _conf['CONFIG'])
            stream.appendLines(_lb.lines())
    return stream
Пример #2
0
def streamNames(stripping):
    from SelPy.utils import flattenList, removeDuplicates
    from StrippingSettings.Utils import strippingConfiguration
    if isinstance(stripping, basestring):
        _db = strippingConfiguration(stripping)
    else:
        _db = stripping

    streams = [v['STREAMS'] for v in _db.values()]
    return list(set(flattenList(streams)))
Пример #3
0
def buildStreams(stripping, WGs=None):
    """
    Build and return a set of StrippingStreams for a given
    stripping configuration.
    Usage:

    >>> streams = buildStreams('Stripping13')
    >>> for s in streams :
    ...   print s.name(), s.lines


    It is also possible to use a configuration dictionary
    directly:

    >>> conf = strippingConfiguration('Stripping13')
    >>> streams = buildStreams(conf)

    To select only streams belonging to the RD or the
    Gamma from trees WGs:

    >>> streams = buildStreams('stripping13', WGs = ['RD','GammaFromTrees'] )
    >>>

    """
    from StrippingConf.StrippingStream import StrippingStream
    from StrippingSettings.Utils import strippingConfiguration
    from StrippingSelections import lineBuilders

    streams = {}

    if isinstance(stripping, basestring):
        scdb = strippingConfiguration(stripping)
    else:
        scdb = stripping

    for k, v in scdb.iteritems():
        if 'STREAMS' in v.keys() and not WGs or 'WGs' in v.keys():
            if not WGs or any(WG for WG in v['WGs'] if WG in WGs):
                lb = lineBuilders()[v['BUILDERTYPE']](k, v['CONFIG'])
                addBuilderToStreamGrouping(streams, v, lb)
        else:
            raise Exception('Config', k,
                            'missing either STREAM or WG data data.')

    strippingStreams = []
    for stream in streams:
        lines = [line for line in streams[stream]]
        print('Creating ' + stream + ' stream with ' + str(len(lines)) +
              ' lines')
        strippingStreams.append(StrippingStream(stream, Lines=lines))
    return strippingStreams
Пример #4
0
def buildStreams( stripping, WGs = None ):
    """
    Build and return a set of StrippingStreams for a given
    stripping configuration.
    Usage:

    >>> streams = buildStreams('Stripping13')
    >>> for s in streams :
    ...   print s.name(), s.lines


    It is also possible to use a configuration dictionary
    directly:

    >>> conf = strippingConfiguration('Stripping13')
    >>> streams = buildStreams(conf)

    To select only streams belonging to the RD or the
    Gamma from trees WGs:

    >>> streams = buildStreams('stripping13', WGs = ['RD','GammaFromTrees'] )
    >>>

    """
    from StrippingConf.StrippingStream import StrippingStream
    from StrippingSettings.Utils import strippingConfiguration
    from StrippingSelections import lineBuilders

    streams = {}

    if isinstance(stripping, basestring) :
        scdb = strippingConfiguration(stripping)
    else :
        scdb = stripping

    for k, v in scdb.iteritems() :
        if 'STREAMS' in v.keys() and not WGs or 'WGs' in v.keys():
            if not WGs or any( WG for WG in v['WGs'] if WG in WGs ):
                try:
                    lb = lineBuilders()[v['BUILDERTYPE']](k,v['CONFIG'])
                except Exception, x:
                    log.error("Unable to configure %s because of %s" %(v['BUILDERTYPE'],str(x)))
                else:
                    addBuilderToStreamGrouping( streams, v, lb )
        else:
            raise Exception('Config',k,'missing either STREAM or WG data data.')
Пример #5
0
def buildStream(stripping, streamName='', WGs=None):
    """
    Create a StrippingStream from the lineBuilder database
    Usage:
    >>> streamDimuon = strippingStream('Stripping13','Dimuon')
    or:
    >>> conf = strippingConfiguration('Stripping13')
    >>> streamDimuon = strippingStream(conf,'Dimuon')

    """

    from StrippingConf.StrippingStream import StrippingStream
    from StrippingSettings.Utils import strippingConfiguration
    from StrippingSelections import lineBuilders
    from StrippingUtils.Utils import lineFromName

    stream = StrippingStream(streamName)

    if isinstance(stripping, basestring):
        _db = strippingConfiguration(stripping)
    else:
        _db = stripping

    for key in _db.keys():
        _conf = _db[key]
        if stream.name() in _conf['STREAMS']:
            if WGs and not any(WG for WG in _conf['WGs'] if WG in WGs):
                continue
            _lb = lineBuilders()[_conf['BUILDERTYPE']](key, _conf['CONFIG'])

            if isinstance(_conf['STREAMS'], dict):
                for linename in _conf['STREAMS'][stream.name()]:
                    line = lineFromName(_lb, linename)
                    if line:
                        stream.appendLines([line])
                    else:
                        raise Exception(
                            'The line you have requested does not exist ' +
                            linename)
            elif isinstance(_conf['STREAMS'], list):
                stream.appendLines(_lb.lines())
            else:
                raise Exception('Unsupported type, expected list ' +
                                'or dict for line-to-STREAM mapping')
    return stream
Пример #6
0
def buildStreams(stripping):
    """
    Build and return a set of StrippingStreams for a given stripping
    configuration.
    Usage:

    >>> streams = buildStreams('Stripping13')
    >>> for s in streams :
    ...   print s.name(), s.lines


    It is also possible to use a configuration dictionary directly:

    >>> conf = strippingConfiguration('Stripping13')
    >>> streams = buildStreams(conf)
    
    """
    from StrippingConf.StrippingStream import StrippingStream
    streams = {}
    if isinstance(stripping, basestring):
        scdb = strippingConfiguration(stripping)
    else:
        scdb = stripping

    for k, v in scdb.iteritems():
        if 'STREAMS' in v.keys():
            for stream in v['STREAMS']:
                if stream in streams.keys():
                    streams[stream] += [k]
                else:
                    streams[stream] = [k]
        else:
            print 'ERROR: config', k, 'had no STREAMS data. Ignore!!!'
    builderMap = {}
    for builder in scdb.keys():
        builderMap[builder] = lineBuilder(scdb, builder)

    strippingStreams = []
    for stream, builderNames in streams.iteritems():
        lines = []
        for b in builderNames:
            lines += [line for line in builderMap[b].lines()]
        print 'Creating steam', stream, 'with lines', lines
        strippingStreams.append(StrippingStream(stream, Lines=lines))
    return strippingStreams
Пример #7
0
def ReStrip(mylines, stripping="stripping21r0p1", streamname=None):

    from Configurables import EventNodeKiller, ProcStatusCheck
    from StrippingArchive.Utils import buildStreams
    from StrippingArchive import strippingArchive
    from StrippingConf.Configuration import StrippingStream
    from StrippingConf.Configuration import StrippingConf
    from StrippingSettings.Utils import strippingConfiguration

    NodeKiller = EventNodeKiller("StripKiller")
    NodeKiller.Nodes = ["/Event/AllStreams", "/Event/Strip"]

    from StrippingSelections import buildersConf
    from StrippingSelections.Utils import lineBuilder, buildStreamsFromBuilder

    config = strippingConfiguration(stripping)
    archive = strippingArchive(stripping)
    streams = buildStreams(stripping=config, archive=archive)

    #confs = buildersConf()

    mystream = StrippingStream("MyStream")
    #for name in confnames:
    #    streams = buildStreamsFromBuilder(confs,name)
    for stream in streams:
        #if streamname not in stream : continue
        for line in stream.lines:
            print line
            if line.name() in mylines:
                print "Adding ", line.name(), "for restripping"
                mystream.appendLines([line])

    restrip = StrippingConf(Streams=[mystream],
                            MaxCandidates=2000,
                            AcceptBadEvents=False,
                            BadEventSelection=ProcStatusCheck(),
                            TESPrefix='Strip',
                            ActiveMDSTStream=True)
    #Verbose = True,
    #MicroDSTStreams = streams )
    return restrip, [NodeKiller, restrip.sequence()]
Пример #8
0
#
from Configurables import DecodeRawEvent
DecodeRawEvent().setProp("OverrideInputs", 4.2)

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

#
# Build the streams and stripping object
#
from StrippingConf.Configuration import StrippingConf, StrippingStream
from StrippingSettings.Utils import strippingConfiguration
from StrippingArchive.Utils import buildStreams, cloneLinesFromStream
from StrippingArchive import strippingArchive

#get the configuration dictionary from the database
config = strippingConfiguration(stripping)
#get the line builders from the archive
archive = strippingArchive(stripping)

#########################
# Fix Bu2LLK config for S29r2, which was not updated in Settings but is correct in Archive
from StrippingArchive.Stripping29r2.StrippingRD.StrippingBu2LLK import default_config as Bu2LLK_config
config = dict(config)
config['Bu2LLK']['CONFIG'] = Bu2LLK_config['CONFIG']

# only in this stripping. Now sure what's the need of this in our case
#########################

streams = buildStreams(stripping=config, archive=archive)

#OUTPUT STREAM NAME
Пример #9
0
    EventNodeKiller,
    ProcStatusCheck,
    DaVinci,
    DecayTreeTuple
)
from GaudiConf import IOHelper
from DecayTreeTuple.Configuration import *

# Node killer: remove the previous Stripping
event_node_killer = EventNodeKiller('StripKiller')
event_node_killer.Nodes = ['/Event/AllStreams', '/Event/Strip']

# Build a new stream called 'CustomStream' that only
# contains the desired line
strip = 'stripping21'
streams = buildStreams(stripping=strippingConfiguration(strip),
                       archive=strippingArchive(strip))

custom_stream = StrippingStream('CustomStream')
custom_line = 'StrippingD2hhCompleteEventPromptDst2D2RSLine'

for stream in streams:
    for line in stream.lines:
        if line.name() == custom_line:
            custom_stream.appendLines([line])

line = 'D2hhCompleteEventPromptDst2D2RSLine'

# Create the actual Stripping configurable
filterBadEvents = ProcStatusCheck()
myTriggerList = []
for stage, lines in HltLines.iteritems():
    for line in lines: myTriggerList.append( stage+line+'Decision' )



#kill the previous stripping just in case (it is not the case) your file was already stripped.
from Configurables import EventNodeKiller
killer = EventNodeKiller('Stripkiller')
killer.Nodes = ['/Event/AllStreams', '/Event/Strip']



stripping='stripping20r0p2'
config  = strippingConfiguration(stripping)
archive = strippingArchive(stripping)
streams = buildStreams(stripping=config, archive=archive)



# Select my line
MyStream = StrippingStream("MyStream")
MyLines = ['StrippingBetaSQ2B3piSelectionLine']

for stream in streams: 
    for line in stream.lines:
        if line.name() in MyLines:
            MyStream.appendLines( [ line ] ) 

Пример #11
0
 def __init__(self, version) :
     self.version = prepend_stripping(version)
     self.config  = strippingConfiguration(self.version)
     self.archive = strippingArchive(self.version)
     self.streams = buildStreams(stripping=self.config, archive=self.archive) 
# restrip
if not (restripversion == ""):

    # kill old stripping banks
    from Configurables import EventNodeKiller
    eventNodeKiller = EventNodeKiller('Stripkiller')
    eventNodeKiller.Nodes = ['/Event/AllStreams', '/Event/Strip']

    from StrippingConf.Configuration import StrippingConf, StrippingStream
    from StrippingArchive import strippingArchive
    from StrippingArchive.Utils import buildStreams
    from StrippingSettings.Utils import strippingConfiguration

    # Note: can only  get stripping versions with certain DaVinci versions
    config = strippingConfiguration(restripversion)
    archive = strippingArchive(restripversion)
    streams = buildStreams(stripping=config, archive=archive)

    # get our stripping line from archive
    MyStream = StrippingStream("MyStream")
    MyLines = ['Stripping' + lines[0]]  # note: only for one line!
    for stream in streams:
        for line in stream.lines:
            if line.name() in MyLines:
                MyStream.appendLines([line])

    from Configurables import ProcStatusCheck
    filterBadEvents = ProcStatusCheck()
    sc = StrippingConf(Streams=[MyStream],
                       MaxCandidates=2000,
Пример #13
0
from StrippingSettings.Utils import strippingConfiguration
from StrippingArchive.Utils import buildStreams
from StrippingArchive import strippingArchive
from Configurables import (EventNodeKiller, ProcStatusCheck, DaVinci,
                           DecayTreeTuple)
from GaudiConf import IOHelper
from DecayTreeTuple.Configuration import *

# Node killer: remove the previous Stripping
event_node_killer = EventNodeKiller('StripKiller')
event_node_killer.Nodes = ['/Event/AllStreams', '/Event/Strip']

# Build a new stream called 'CustomStream' that only
# contains the desired line
strip = 'stripping21'
streams = buildStreams(stripping=strippingConfiguration(strip),
                       archive=strippingArchive(strip))

custom_stream = StrippingStream('CustomStream')
custom_line = 'StrippingD2hhCompleteEventPromptDst2D2RSLine'

for stream in streams:
    for line in stream.lines:
        if line.name() == custom_line:
            custom_stream.appendLines([line])

line = 'D2hhCompleteEventPromptDst2D2RSLine'

# Create the actual Stripping configurable
filterBadEvents = ProcStatusCheck()
Пример #14
0
from Configurables import DecodeRawEvent
DecodeRawEvent().setProp("OverrideInputs", 4.2)

myconf = "___lb___"
#myconf = "D2XMuMuSS"
# NOTE: this will work only if you inserted correctly the
# default_config dictionary in the code where your LineBuilder
# is defined.

from StrippingConf.Configuration import StrippingConf, StrippingStream
from StrippingSettings.Utils import strippingConfiguration
from StrippingArchive.Utils import buildStreams
from StrippingArchive import strippingArchive

#get the configuration dictionary from the database
tmpconf = strippingConfiguration(stripping)
#get the line builders from the archive
archive = strippingArchive(stripping)

conf = {}

for k, tp in tmpconf.iteritems():
    if k == myconf:
        conf[k] = tp
        break

streams = buildStreams(stripping=conf, archive=archive)

dictreportsline = []
for s in streams:
    dictreportsline.append("StrippingStream" + s.name() + "Decision")
Пример #15
0
def get_streams(version) :
    config  = strippingConfiguration(version)
    archive = strippingArchive(version)
    streams = buildStreams(stripping=config, archive=archive) 
    return streams