Example #1
0
    def _do_readevgen(cls):
        """ Place to read evgen events.
        """
        from G4AtlasApps.SimFlags import simFlags
        from AthenaCommon.AppMgr import ServiceMgr as svcMgr
        AtlasG4Eng.G4Eng.log.verbose('SimSkeleton._do_readevgen :: starting')

        from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
        ## ReadTR is only present in simFlags for ATLAS geometries with cosmics switched on
        if (not simFlags.ISFRun) and hasattr(simFlags, "ReadTR") and simFlags.ReadTR.statusOn:
            include("CosmicGenerator/SetCosmicGenerator.py")

        if athenaCommonFlags.PoolEvgenInput.statusOn:
            ## Tell the event selector about the evgen input files and event skipping
            if not hasattr(svcMgr, 'EventSelector'):
                import AthenaPoolCnvSvc.ReadAthenaPool
            svcMgr.EventSelector.InputCollections = athenaCommonFlags.PoolEvgenInput()
            if athenaCommonFlags.SkipEvents.statusOn:
                svcMgr.EventSelector.SkipEvents = athenaCommonFlags.SkipEvents()
            from G4AtlasApps.G4Atlas_Metadata import inputFileValidityCheck
            inputFileValidityCheck()
        else:
            ## No input file so assume that we are running a Generator in the same job
            if not hasattr(svcMgr, 'EventSelector'):
                import AthenaCommon.AtlasUnixGeneratorJob
            # TODO: Check that there is at least one algorithm already in the AlgSequence?
            ## Warn if attempting to skip events in a generator job
            if athenaCommonFlags.SkipEvents.statusOn and athenaCommonFlags.SkipEvents()!=0:
                msg = "SimSkeleton._do_readevgen :: athenaCommonFlags.SkipEvents set in a job without an active "
                msg += "athenaCommonFlags.PoolEvgenInput flag: ignoring event skip request"
                AtlasG4Eng.G4Eng.log.warning(msg)

        AtlasG4Eng.G4Eng.log.verbose('SimSkeleton._do_readevgen :: done')
Example #2
0
def buildListOfModifiers():
    Modifiers = []
    from Digitization.DigitizationFlags import digitizationFlags
    if digitizationFlags.RunAndLumiOverrideList.get_Value():
        if not digitizationFlags.RunAndLumiOverrideList.is_locked():
            raise RuntimeError(
                'You cannot configure the EvtIdModifierSvc with an unlocked JobProperty.'
            )
        pDicts = digitizationFlags.RunAndLumiOverrideList.get_Value()
        for el in pDicts:
            if 'evt_nbr' in el:
                Modifiers += add_modifier(run_nbr=el['run'],
                                          lbk_nbr=el['lb'],
                                          time_stamp=el['starttstamp'],
                                          nevts=el['evts'],
                                          evt_nbr=el['evt_nbr'])
            else:
                Modifiers += add_modifier(run_nbr=el['run'],
                                          lbk_nbr=el['lb'],
                                          time_stamp=el['starttstamp'],
                                          nevts=el['evts'])
    elif digitizationFlags.dataRunNumber.get_Value():
        if digitizationFlags.dataRunNumber.get_Value() < 0:
            raise SystemExit(
                "Given a negative Run Number - please use a real run number from data."
            )
        #logDigitization_flags.info( 'Overriding run number to be: %s ', digitizationFlags.dataRunNumber.get_Value() )
        myRunNumber = digitizationFlags.dataRunNumber.get_Value()
        myFirstLB = 1
        ## Using event numbers to avoid "some very large number" setting
        from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
        totalNumber = 1000000
        if athenaCommonFlags.EvtMax(
        ) is not None and athenaCommonFlags.EvtMax() > 0:
            totalNumber = athenaCommonFlags.EvtMax() + 1
        if athenaCommonFlags.SkipEvents(
        ) is not None and athenaCommonFlags.SkipEvents() > 0:
            totalNumber += athenaCommonFlags.SkipEvents()
        try:
            from RunDependentSimComps.RunDMCFlags import runDMCFlags
            myInitialTimeStamp = runDMCFlags.RunToTimestampDict.getTimestampForRun(
                myRunNumber)
            #print "FOUND TIMESTAMP ", str(myInitialTimeStamp)
        except KeyError:
            myInitialTimeStamp = 1

        Modifiers += add_modifier(run_nbr=myRunNumber,
                                  lbk_nbr=myFirstLB,
                                  time_stamp=myInitialTimeStamp,
                                  nevts=totalNumber)
    return Modifiers
Example #3
0
class ISF_Input:
    """
     Place to handle the persistency.
    """

    isfiplog.info("in ISF_Input")
    """ Place to read evgen events.
    """
    from G4AtlasApps.SimFlags import simFlags
    from AthenaCommon.AppMgr import ServiceMgr as svcMgr
    #G4AtlasEngine.log.verbose('SimSkeleton._do_readevgen :: starting')

    from AthenaCommon.AthenaCommonFlags import athenaCommonFlags

    if athenaCommonFlags.PoolEvgenInput.statusOn:
        ## Tell the event selector about the evgen input files and event skipping
        if not hasattr(svcMgr, 'EventSelector'):
            import AthenaPoolCnvSvc.ReadAthenaPool
        svcMgr.EventSelector.InputCollections = athenaCommonFlags.PoolEvgenInput(
        )
        if athenaCommonFlags.SkipEvents.statusOn:
            svcMgr.EventSelector.SkipEvents = athenaCommonFlags.SkipEvents()
        from ISF_Example.ISF_Metadata import inputFileValidityCheck
        inputFileValidityCheck()
    else:
        ## No input file so assume that we are running a Generator in the same job
        if not hasattr(svcMgr, 'EventSelector'):
            import AthenaCommon.AtlasUnixGeneratorJob
        # TODO: Check that there is at least one algorithm already in the AlgSequence?
        ## Warn if attempting to skip events in a generator job
        if athenaCommonFlags.SkipEvents.statusOn:
            msg = "athenaCommonFlags.SkipEvents set in a job without an active "
            msg += "athenaCommonFlags.PoolEvgenInput flag: ignoring event skip request"
            isfiplog.warning(msg)

    isfiplog.verbose('ISF_Input done')
Example #4
0
from RecExConfig.RecFlags import rec
rec.doLArg = doLAr
rec.doTile = doTile
rec.doCalo = doLAr or doTile
rec.Commissioning = True

# setup geometry
from AtlasGeoModel import SetGeometryVersion
from AtlasGeoModel import GeoModelInit
from AtlasGeoModel import SetupRecoGeometry

# setup bytestream reading
from ByteStreamCnvSvc import ReadByteStream
svcMgr.EventSelector.Input = athenaCommonFlags.FilesInput()
theApp.EvtMax = athenaCommonFlags.EvtMax()
svcMgr.EventSelector.SkipEvents = athenaCommonFlags.SkipEvents()
# Level-1 bs data
include("TrigT1CaloByteStream/ReadLVL1CaloBS_jobOptions.py")

# detector description
include("CaloDetMgrDetDescrCnv/CaloDetMgrDetDescrCnv_joboptions.py")
include("LArConditionsCommon/LArConditionsCommon_comm_jobOptions.py")

# extra LAr setup
if doLAr:
    include("LArConditionsCommon/LArIdMap_comm_jobOptions.py")
    include("LArIdCnv/LArIdCnv_joboptions.py")
    svcMgr.ByteStreamAddressProviderSvc.TypeNames += [
        "LArFebHeaderContainer/LArFebHeader"
    ]
    include("LArROD/LArFebErrorSummaryMaker_jobOptions.py")
Example #5
0
    from G4AtlasApps.SimFlags import simFlags
    from AthenaCommon.AppMgr import ServiceMgr as svcMgr
    from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
    ## ReadTR is only present in simFlags for ATLAS geometries with cosmics switched on
    if (not simFlags.ISFRun) and hasattr(
            simFlags, "ReadTR") and simFlags.ReadTR.statusOn:
        include("CosmicGenerator/SetCosmicGenerator.py")

    if athenaCommonFlags.PoolEvgenInput.statusOn:
        ## Tell the event selector about the evgen input files and event skipping
        if not hasattr(svcMgr, 'EventSelector'):
            import AthenaPoolCnvSvc.ReadAthenaPool
        svcMgr.EventSelector.InputCollections = athenaCommonFlags.PoolEvgenInput(
        )
        if athenaCommonFlags.SkipEvents.statusOn:
            svcMgr.EventSelector.SkipEvents = athenaCommonFlags.SkipEvents()
        from G4AtlasApps.G4Atlas_Metadata import inputFileValidityCheck
        inputFileValidityCheck()
    else:
        ## No input file so assume that we are running a Generator in the same job
        if not hasattr(svcMgr, 'EventSelector'):
            import AthenaCommon.AtlasUnixGeneratorJob
        # TODO: Check that there is at least one algorithm already in the AlgSequence?
        ## Warn if attempting to skip events in a generator job
        if athenaCommonFlags.SkipEvents.statusOn and athenaCommonFlags.SkipEvents(
        ) != 0:
            msg = "SimSkeleton._do_readevgen :: athenaCommonFlags.SkipEvents set in a job without an active "
            msg += "athenaCommonFlags.PoolEvgenInput flag: ignoring event skip request"
            print msg

    ## SimSkeleton._do_persistency
Example #6
0
def configureRunNumberOverrides():
    myRunNumber = 1
    myFirstLB = 1
    myInitialTimeStamp = 0
    from G4AtlasApps.SimFlags import simFlags
    if hasattr(simFlags, "RunNumber") and simFlags.RunNumber.statusOn:
        myRunNumber = simFlags.RunNumber.get_Value()
        simMDlog.info('Found run number %d in sim flags.' % myRunNumber)
        ## Set event selector details based on evgen metadata

        ######update the run/event info for each event
        from AthenaCommon.AppMgr import ServiceMgr
        if not hasattr(ServiceMgr, 'EvtIdModifierSvc'):
            import AthenaServices.Configurables as asc
            ServiceMgr += asc.EvtIdModifierSvc(EvtStoreName="StoreGateSvc")
            from AthenaCommon.AppMgr import theApp
            theApp.CreateSvc += ["EvtIdModifierSvc"]
        else:
            simMDlog.warning(
                'Will override the settings of the EvtIdModifierSvc that was previously set up!'
            )
        #fix iov metadata
        if not hasattr(ServiceMgr.ToolSvc, 'IOVDbMetaDataTool'):
            from AthenaCommon import CfgMgr
            ServiceMgr.ToolSvc += CfgMgr.IOVDbMetaDataTool()
        ServiceMgr.ToolSvc.IOVDbMetaDataTool.MinMaxRunNumbers = [
            myRunNumber, 2147483647
        ]
        ## FIXME need to use maxRunNumber = 2147483647 for now to keep overlay working but in the future this should be set properly.
        # Using event numbers to avoid "some very large number" setting
        from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
        totalNumber = 1000000  # TODO possibly get this from MetaReader??
        if athenaCommonFlags.EvtMax(
        ) is not None and athenaCommonFlags.EvtMax() > 0:
            totalNumber = athenaCommonFlags.EvtMax() + 1
        if athenaCommonFlags.SkipEvents(
        ) is not None and athenaCommonFlags.SkipEvents() > 0:
            totalNumber += athenaCommonFlags.SkipEvents()
        try:
            from RunDependentSimComps.RunDMCFlags import runDMCFlags
            myInitialTimeStamp = runDMCFlags.RunToTimestampDict.getTimestampForRun(
                myRunNumber)
            #print "FOUND TIMESTAMP ", str(myInitialTimeStamp)
        except:
            myInitialTimeStamp = 1
        ServiceMgr.EvtIdModifierSvc.add_modifier(run_nbr=myRunNumber,
                                                 lbk_nbr=myFirstLB,
                                                 time_stamp=myInitialTimeStamp,
                                                 nevts=totalNumber)
        if hasattr(ServiceMgr.EventSelector, 'OverrideRunNumberFromInput'):
            ServiceMgr.EventSelector.OverrideRunNumberFromInput = True
    elif metadata_lite is not None:
        # Get evgen run number and lumi block
        if len(metadata_lite['runNumbers']) > 0:
            myRunNumber = metadata_lite['runNumbers'][0]
            simMDlog.info('Found runNumbers %d in hits file metadata.' %
                          myRunNumber)
        else:
            simMDlog.warning(
                'Failed to find runNumbers in hits file metadata.')
        if metadata_lite['lumiBlockNumbers']:
            myFirstLB = metadata_lite['lumiBlockNumbers'][0]
    else:
        simMDlog.warning(
            'Requires simFlags.RunNumber to be specified in this running mode.\
            Using default value of 1 for RunNumber.')

    from AthenaCommon.AppMgr import ServiceMgr
    ServiceMgr.EventSelector.OverrideRunNumber = True
    ServiceMgr.EventSelector.RunNumber = myRunNumber
    ServiceMgr.EventSelector.FirstLB = myFirstLB
    # Necessary to avoid a crash
    ServiceMgr.EventSelector.InitialTimeStamp = myInitialTimeStamp
Example #7
0
#-------------------------
import AthenaPoolCnvSvc.ReadAthenaPoolDouble
from AthenaCommon.AppMgr import ServiceMgr
from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
if overlayFlags.isDataOverlay():
    ServiceMgr.DoubleEventSelector.InputCollections = athenaCommonFlags.PoolHitsInput(
    )
    ServiceMgr.SecondaryEventSelector.Input = athenaCommonFlags.FilesInput()
    ServiceMgr.SecondaryEventSelector.ProcessBadEvent = True
else:
    ServiceMgr.DoubleEventSelector.InputCollections = athenaCommonFlags.PoolRDOInput(
    )
    ServiceMgr.SecondaryEventSelector.InputCollections = athenaCommonFlags.PoolHitsInput(
    )
if athenaCommonFlags.SkipEvents.statusOn:
    ServiceMgr.DoubleEventSelector.SkipEvents = athenaCommonFlags.SkipEvents()

# Properly generate event context
from AthenaCommon.ConcurrencyFlags import jobproperties as jp
nThreads = jp.ConcurrencyFlags.NumThreads()
if nThreads > 0:
    EventLoop = Service("AthenaHiveEventLoopMgr")
else:
    EventLoop = Service("AthenaEventLoopMgr")
EventLoop.UseSecondaryEventNumber = True
svcMgr += EventLoop

#-------------------------
# Common infrastructure
#-------------------------
# GeoModel