diff --git a/Control/PileUpComps/src/PileUpEventLoopMgr.cxx b/Control/PileUpComps/src/PileUpEventLoopMgr.cxx index e6a3fae1c4803717100b3f7ee5f8363fd0a089ce..457b86bc90b7e055cc9c00d4f27c6b7ff0e6936f 100644 --- a/Control/PileUpComps/src/PileUpEventLoopMgr.cxx +++ b/Control/PileUpComps/src/PileUpEventLoopMgr.cxx @@ -86,6 +86,7 @@ PileUpEventLoopMgr::PileUpEventLoopMgr(const std::string& name, declareProperty("AllowSubEvtsEOF", m_allowSubEvtsEOF, "if true(default) an EOF condition in the BkgStreamsCaches is not considered to be an error IF maxevt=-1 (loop over all available events)"); declareProperty("XingByXing", m_xingByXing, "if set to true we will not cache bkg events from one xing to then next. This greatly increases the amount of I/O and greatly reduces the memory required to run a job"); declareProperty("IsEventOverlayJob", m_isEventOverlayJob, "if set to true will prevent the BCID from being overridden."); + declareProperty("IsEventOverlayJobMC", m_isEventOverlayJobMC, "if set to true events will be marked as simulation"); declareProperty("mcRunNumber", m_mcRunNumber=99, "the run number from an EVNT file, used to set the mc_channel_number, for overlay"); declareProperty("FailureMode", m_failureMode, "Controls behaviour of event loop depending on return code of" @@ -333,6 +334,10 @@ StatusCode PileUpEventLoopMgr::nextEvent(int maxevt) { pOvrEt->set_mc_channel_number(m_mcRunNumber); ATH_MSG_DEBUG ( "pOvrEt set_mc_channel_number: " << m_mcRunNumber ); + + if (m_isEventOverlayJobMC){ + pOvrEt->add_type(EventType::IS_SIMULATION); + } } else { @@ -342,7 +347,7 @@ StatusCode PileUpEventLoopMgr::nextEvent(int maxevt) } PileUpEventInfo *pOverEvent = new PileUpEventInfo(pOvrID, pOvrEt); - if(m_isEmbedding) + if(m_isEmbedding || m_isEventOverlayJobMC) { pOverEvent->setActualInteractionsPerCrossing(pEvent->actualInteractionsPerCrossing()); pOverEvent->setAverageInteractionsPerCrossing(pEvent->averageInteractionsPerCrossing()); @@ -350,7 +355,7 @@ StatusCode PileUpEventLoopMgr::nextEvent(int maxevt) ATH_MSG_VERBOSE ( "BCID =" << pOverEvent->event_ID()->bunch_crossing_id() ); // register as sub event of the overlaid bool addpEvent(true); - if(m_isEmbedding) + if(m_isEmbedding || m_isEventOverlayJobMC) { const PileUpEventInfo* pOldEvent(dynamic_cast<const PileUpEventInfo*>(pEvent)); if(pOldEvent) @@ -388,7 +393,7 @@ StatusCode PileUpEventLoopMgr::nextEvent(int maxevt) bool needupdate; float sf = m_beamLumi->scaleFactor(pEvent->event_ID()->run_number(), pEvent->event_ID()->lumi_block(), needupdate ); float currentaveragemu(sf*m_maxCollPerXing); - if(!m_isEmbedding) + if(!m_isEmbedding && !m_isEventOverlayJobMC) { pOverEvent->setAverageInteractionsPerCrossing(currentaveragemu); //FIXME check whether actualInteractionsPerCrossing should be set diff --git a/Control/PileUpComps/src/PileUpEventLoopMgr.h b/Control/PileUpComps/src/PileUpEventLoopMgr.h index 516418d85c07789534f7c6f0c3c5ce389bf6f251..01380ec4cb0dcc80a4329306462123fcd7ac4262 100644 --- a/Control/PileUpComps/src/PileUpEventLoopMgr.h +++ b/Control/PileUpComps/src/PileUpEventLoopMgr.h @@ -142,6 +142,9 @@ private: /// property: is this job running RDO+RDO overlay. BooleanProperty m_isEventOverlayJob; + /// property: is this job running MC RDO+RDO overlay. + BooleanProperty m_isEventOverlayJobMC; + /// property: the run number from an EVNT file, used to set the mc_channel_number, for overlay IntegerProperty m_mcRunNumber; diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/CaloOverlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/CaloOverlay_jobOptions.py index 4975e4fe39e3110372f719bc381a144951baeb90..20318d8a41e731c22423e41298ed55f06e7a3068 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/CaloOverlay_jobOptions.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/CaloOverlay_jobOptions.py @@ -66,7 +66,9 @@ if DetFlags.overlay.Tile_on(): include( "TileIdCnv/TileIdCnv_jobOptions.py" ) include( "TileConditions/TileConditions_jobOptions.py" ) - include("TileSimAlgs/TileDigitization_jobOptions.py") + include( "TileSimAlgs/TileDigitization_jobOptions.py" ) + include( "TileL2Algs/TileL2Algs_jobOptions.py" ) + job.TileHitVecToCnt.DigitizationTool.RndmEvtOverlay = True theTileDigitsMaker.RndmEvtOverlay = True if readBS and isRealData: diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/ConfiguredOverlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/ConfiguredOverlay_jobOptions.py index d3c2402b10bc7e0247e2690e93f86efec8f62017..04aeded00b9d54cccdc957d31490c2b184249d42 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/ConfiguredOverlay_jobOptions.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/ConfiguredOverlay_jobOptions.py @@ -9,6 +9,10 @@ from AthenaCommon.AlgSequence import AlgSequence job = AlgSequence() topSequence = job +if not isRealData: + from OverlayCommonAlgs.OverlayCommonAlgsConf import CopyTimings + job += CopyTimings() + #======================================================================= from AthenaCommon.AppMgr import ServiceMgr from PileUpComps.PileUpCompsConf import PileUpEventLoopMgr @@ -58,6 +62,7 @@ pileUpEventLoopMgr.OrigSelector="EventSelector" pileUpEventLoopMgr.firstXing=0 pileUpEventLoopMgr.lastXing=0 pileUpEventLoopMgr.IsEventOverlayJob=True +pileUpEventLoopMgr.IsEventOverlayJobMC=not isRealData ServiceMgr.EventSelector.SkipEvents = athenaCommonFlags.SkipEvents() # Set up MC input diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py index 5697d8f93a73aa2fae90d8b386543ac5c51dd886..6ea3bda4b3c950b867f4a4501c8ec264637a6c01 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/Level1Overlay_jobOptions.py @@ -36,6 +36,7 @@ if DetFlags.overlay.LVL1_on(): if DetFlags.simulateLVL1.Tile_on(): include( "TileSimAlgs/TileTTL1_jobOptions.py" ) + include( "TileSimAlgs/TileMuonReceiver_jobOptions.py" ) if DetFlags.digitize.LVL1_on(): #-------------------------------------------------------------- diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/OverlayOutputItemList_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/OverlayOutputItemList_jobOptions.py index cc48257919af8210e888fa498dfa9cde35502cf7..c40590b7924e0eae935a24964d5821a102f238fa 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/OverlayOutputItemList_jobOptions.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/OverlayOutputItemList_jobOptions.py @@ -2,6 +2,7 @@ include.block ( "EventOverlayJobTransforms/OverlayOutputItemList_jobOptions.py" from AthenaCommon.AppMgr import ServiceMgr from AthenaCommon.DetFlags import DetFlags +from Digitization.DigitizationFlags import digitizationFlags # The output - overlay from AthenaPoolCnvSvc.WriteAthenaPool import AthenaPoolOutputStream @@ -13,11 +14,17 @@ print "ACH123 new OverlayOutputItemList_jobOptions.py" outStream.ItemList += [ "EventInfo#*", "PileUpEventInfo#*" ] outStream.ItemList += [ "LumiBlockCollection#*" ] +# timings +if not isRealData: + outStream.ItemList += ["RecoTimingObj#EVNTtoHITS_timings"] + outStream.ItemList += ["RecoTimingObj#HITStoRDO_timings"] + if DetFlags.overlay.Truth_on(): - outStream.ItemList += [ - "McEventCollection#*", - "TrackRecordCollection#*" - ] + outStream.ItemList += [ "McEventCollection#*", "TrackRecordCollection#*" ] + outStream.ItemList += [ "xAOD::JetContainer#InTimeAntiKt4TruthJets" ] + outStream.ItemList += [ "xAOD::JetAuxContainer#InTimeAntiKt4TruthJetsAux." ] + outStream.ItemList += [ "xAOD::JetContainer#OutOfTimeAntiKt4TruthJets" ] + outStream.ItemList += [ "xAOD::JetAuxContainer#OutOfTimeAntiKt4TruthJetsAux." ] if DetFlags.overlay.CSC_on(): outStream.ItemList += [ "CscSimDataCollection#CSC_SDO" ] if DetFlags.overlay.MDT_on(): @@ -42,7 +49,6 @@ if DetFlags.overlay.pixel_on(): outStream.ItemList += ["InDetBSErrContainer#*"] if DetFlags.overlay.SCT_on(): outStream.ItemList += ["SCT_RDO_Container#*"] - outStream.ItemList += ["SCT_RDO_Container#*"] if DetFlags.overlay.TRT_on(): outStream.ItemList += ["TRT_RDO_Container#*"] outStream.ItemList += ["TRT_BSIdErrContainer#*"] @@ -50,14 +56,18 @@ if DetFlags.overlay.TRT_on(): if DetFlags.overlay.LAr_on(): outStream.ItemList+=["LArRawChannelContainer#*"] - outStream.ItemList+=["LArDigitContainer#LArDigitContainer_MC_Thinned"] + if 'AddCaloDigi' in digitizationFlags.experimentalDigi(): + outStream.ItemList+=["LArDigitContainer#*"] + else: + outStream.ItemList+=["LArDigitContainer#LArDigitContainer_MC_Thinned"] outStream.ItemList+=["LArFebErrorSummary#*"] if DetFlags.overlay.Tile_on(): - if isRealData: - outStream.ItemList += [ "TileDigitsContainer#*" ] - else: - outStream.ItemList += [ "TileDigitsContainer#TileDigitsFlt" ] outStream.ItemList += [ "TileRawChannelContainer#*" ] + if isRealData or 'AddCaloDigi' in digitizationFlags.experimentalDigi(): + outStream.ItemList += [ "TileDigitsContainer#*" ] + else: + outStream.ItemList += [ "TileDigitsContainer#TileDigitsFlt" ] + outStream.ItemList += [ "TileL2Container#TileL2Cnt" ] if DetFlags.overlay.CSC_on(): outStream.ItemList += [ "CscRawDataContainer#*" ] @@ -76,9 +86,15 @@ if DetFlags.overlay.BCM_on(): outStream.ItemList+=["BCM_RDO_Container#*"] if DetFlags.overlay.LVL1_on(): - outStream.ItemList+=["LArTTL1Container#*"] - outStream.ItemList+=["TileTTL1Container#*"] - outStream.ItemList+=[ + if DetFlags.simulateLVL1.LAr_on(): + outStream.ItemList += [ "LArTTL1Container#*" ] + if DetFlags.simulateLVL1.Tile_on(): + outStream.ItemList += [ "TileTTL1Container#*" ] + outStream.ItemList += [ "TileDigitsContainer#MuRcvDigitsCnt" ] + outStream.ItemList += [ "TileRawChannelContainer#MuRcvRawChCnt" ] + outStream.ItemList += [ "TileMuonReceiverContainer#*" ] + if DetFlags.digitize.LVL1_on(): + outStream.ItemList += [ "ROIB::RoIBResult#*", "MuCTPI_RDO#*", "CTP_RDO#*", diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/TruthOverlay_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/TruthOverlay_jobOptions.py index 935de91318ba6c1f0861e7d7801bc0ef763784da..7aaa8f8515b832bab24d2c9a6da4d34e2b11d57e 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/TruthOverlay_jobOptions.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/TruthOverlay_jobOptions.py @@ -18,3 +18,6 @@ job += CopyMcEventCollection() if readBS and isRealData: job.CopyMcEventCollection.RealData = True +if not isRealData: + from OverlayCommonAlgs.OverlayCommonAlgsConf import CopyTruthInfo + job += CopyTruthInfo() diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayPool_tf.py b/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayPool_tf.py index aca0d70a91b4e7823d2f0b2c3059559b32e24c86..c4741c84030847d503a7086c4350dde6915309e0 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayPool_tf.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayPool_tf.py @@ -16,19 +16,22 @@ if hasattr(runArgs, "preExec") and runArgs.preExec != 'NONE': import AthenaCommon.AtlasUnixStandardJob if hasattr(runArgs, 'preInclude'): -for cf in runArgs.preInclude: - include(cf) + for cf in runArgs.preInclude: + include(cf) #============================================================== # Job definition parameters: #============================================================== +from AthenaCommon.AppMgr import ServiceMgr from AthenaCommon.GlobalFlags import globalflags +from AthenaCommon.AthenaCommonFlags import athenaCommonFlags +from AthenaCommon.DetFlags import DetFlags +from OverlayCommonAlgs.OverlayFlags import overlayFlags globalflags.isOverlay.set_Value_and_Lock(True) -if hasattr(runArgs,"maxEvents"): from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.EvtMax = runArgs.maxEvents -if hasattr(runArgs,"skipEvents"): athenaCommonFlags.SkipEvents= runArgs.skipEvents +if hasattr(runArgs,"skipEvents"): athenaCommonFlags.SkipEvents.set_Value_and_Lock( runArgs.skipEvents ) +if hasattr(runArgs,"maxEvents"): athenaCommonFlags.EvtMax.set_Value_and_Lock( runArgs.maxEvents ) if hasattr(runArgs,"inputHITSFile"): athenaCommonFlags.PoolHitsInput.set_Value_and_Lock( runArgs.inputHITSFile ) @@ -39,31 +42,32 @@ else: if hasattr(runArgs,"outputRDOFile"): athenaCommonFlags.PoolRDOOutput.set_Value_and_Lock( runArgs.outputRDOFile ) OverlayCollection = runArgs.outputRDOFile + +if not hasattr(runArgs, 'outputRDO_SGNLFile') or runArgs.outputRDO_SGNLFile=="NONE": + overlayFlags.doSignal=False + SignalCollection = "NONE" +else: + overlayFlags.doSignal=True + SignalCollection = runArgs.outputRDO_SGNLFile -if hasattr(runArgs,"geometryVersion"): globalFlags.DetDescrVersion=runArgs.geometryVersion +if hasattr(runArgs,"geometryVersion"): globalflags.DetDescrVersion.set_Value_and_Lock( runArgs.geometryVersion ) +if hasattr(runArgs,"conditionsTag"): globalflags.ConditionsTag.set_Value_and_Lock( runArgs.conditionsTag ) from Digitization.DigitizationFlags import digitizationFlags if hasattr(runArgs,"digiSeedOffset1"): digitizationFlags.rndmSeedOffset1=int(runArgs.digiSeedOffset1) if hasattr(runArgs,"digiSeedOffset2"): digitizationFlags.rndmSeedOffset2=int(runArgs.digiSeedOffset2) if hasattr(runArgs,"samplingFractionDbTag"): digitizationFlags.physicsList=runArgs.samplingFractionDbTag if hasattr(runArgs,"digiRndmSvc"): digitizationFlags.rndmSvc=runArgs.digiRndmSvc - -from AthenaCommon.DetFlags import DetFlags -if not hasattr(runArgs, 'outputRDO_SGNLFile') or runArgs.outputRDO_SGNLFile=="NONE": - overlayFlags.doSignal=False - SignalCollection = "NONE" -else: - overlayFlags.doSignal=True - SignalCollection = runArgs.outputRDO_SGNLFile - -DetFlags.overlay.BCM_setOff() -DetFlags.overlay.Lucid_setOff() +if hasattr(runArgs, "AddCaloDigi"): digitizationFlags.experimentalDigi+=["AddCaloDigi"] readBS = False if hasattr(runArgs, 'ReadByteStream'): readBS = runArgs.ReadByteStream isRealData = False +from RecExConfig.RecFlags import rec +rec.projectName = 'IS_SIMULATION' + if readBS: globalflags.InputFormat.set_Value_and_Lock('bytestream') DataInputCollections=runArgs.inputPileUpBSFile @@ -71,10 +75,12 @@ else: DataInputCollections=runArgs.inputRDO_BKGFile athenaCommonFlags.PoolRDOInput=runArgs.inputRDO_BKGFile + +from IOVDbSvc.CondDB import conddb + if hasattr(runArgs, 'conditionsTag') and runArgs.conditionsTag!='NONE' and runArgs.conditionsTag!='': globalflags.ConditionsTag=runArgs.conditionsTag if len(globalflags.ConditionsTag())!=0: - from IOVDbSvc.CondDB import conddb conddb.setGlobalTag(globalflags.ConditionsTag()) DetFlags.Print() @@ -95,44 +101,51 @@ if hasattr(runArgs, "triggerConfig") and runArgs.triggerConfig!="NONE": from TriggerJobOpts.TriggerConfigGetter import TriggerConfigGetter cfg = TriggerConfigGetter("HIT2RDO") -from AthenaCommon.DetFlags import DetFlags DetFlags.ID_setOn() DetFlags.Muon_setOn() DetFlags.LAr_setOn() DetFlags.Tile_setOn() -if hasattr(runArgs, "triggerConfig") and runArgs.triggerConfig=="NONE": - DetFlags.LVL1_setOff() + +if not hasattr(runArgs, "triggerConfig") or runArgs.triggerConfig=="NONE": + DetFlags.LVL1_setOff() else: - DetFlags.LVL1_setOn() + DetFlags.LVL1_setOn() -DetFlags.BCM_setOn() -DetFlags.Lucid_on() +DetFlags.digitize.LVL1_setOff() -DetFlags.simulateLVL1.Lucid_setOff() +DetFlags.BCM_setOn() +DetFlags.Lucid_setOn() +DetFlags.Truth_setOn() +DetFlags.simulateLVL1.Lucid_setOn() +DetFlags.simulateLVL1.LAr_setOn() +DetFlags.simulateLVL1.Tile_setOn() print "================ DetFlags ================ " DetFlags.Print() -# Geometry, controlled by DetFlags -#GlobalFlags.DetGeo.set_atlas() -#GlobalFlags.DataSource.set_geant4() globalflags.DataSource.set_Value_and_Lock('geant4') -#from AtlasGeoModel import SetGeometryVersion -#from AtlasGeoModel import GeoModelInit -include ( "RecExCond/AllDet_detDescr.py" ) +print "================ Start ================= " +from AthenaCommon.AlgSequence import AlgSequence +topSeq = AlgSequence() +## Set Overall per-Algorithm time-limit on the AlgSequence +topSeq.TimeOut = 43200 * Units.s -#from AtlasGeoModel import SetGeometryVersion -#from AtlasGeoModel import GeoModelInit -#from AtlasGeoModel import SetupRecoGeometry +# Timings +try: + from RecAlgs.RecAlgsConf import TimingAlg + topSeq += TimingAlg("OverlayTimerBegin", TimingObjOutputName = "HITStoRDO_timings") +except: + overlaylog.warning('Could not add TimingAlg, no timing info will be written out.') -#include( "BFieldAth/BFieldAth_jobOptions.py" ) -#-------- +include ( "RecExCond/AllDet_detDescr.py" ) + from AthenaCommon.AppMgr import theApp theApp.EventLoop = "PileUpEventLoopMgr" -if hasattr(runArgs,"maxEvents"): theApp.EvtMax = runArgs.maxEvents +if hasattr( runArgs, 'maxEvents'): + theApp.EvtMax = runArgs.maxEvents include ( "EventOverlayJobTransforms/ConfiguredOverlay_jobOptions.py" ) @@ -167,9 +180,6 @@ ServiceMgr += getConfigurable(digitizationFlags.rndmSvc.get_Value())() digitizationFlags.rndmSeedList.addtoService() digitizationFlags.rndmSeedList.printSeeds() -# To not overwrite the BCID -#from AthenaCommon.AppMgr import ServiceMgr -#ServiceMgr.PileUpEventLoopMgr.IsEventOverlayJob=True #================================================================ print "overlay_trf: final outStream = ", outStream @@ -181,8 +191,6 @@ print "overlay_trf: final outStream = ", outStream ServiceMgr.MessageSvc.OutputLevel = INFO ServiceMgr.MessageSvc.Format = "% F%45W%S%7W%R%T %0W%M" -print "overlay_trf: at the end. job=\n", job -print "\n\noverlay_trf: at the end. ServiceMgr=\n", ServiceMgr # Post-include if hasattr(runArgs,"postInclude"): @@ -192,3 +200,6 @@ if hasattr(runArgs,"postInclude"): if hasattr(runArgs, "postExec") and runArgs.postExec != 'NONE': for cmd in runArgs.postExec: exec(cmd) + +#print "OverlayPool_tf.py: at the end. job=\n", job +print "\nOverlayPool_tf.py: at the end. ServiceMgr=\n", ServiceMgr diff --git a/Event/EventOverlay/OverlayCommonAlgs/CMakeLists.txt b/Event/EventOverlay/OverlayCommonAlgs/CMakeLists.txt index a4f49b2a721ff56c9e2f8529cc1b1725b04b6ee9..ecd8fdd559c3460fb52e4475775f4d926fe5c01e 100644 --- a/Event/EventOverlay/OverlayCommonAlgs/CMakeLists.txt +++ b/Event/EventOverlay/OverlayCommonAlgs/CMakeLists.txt @@ -11,6 +11,7 @@ atlas_depends_on_subdirs( PUBLIC PRIVATE Event/xAOD/xAODEventInfo Event/xAOD/xAODCnvInterfaces + Event/xAOD/xAODJet Calorimeter/CaloSimEvent Control/AthenaBaseComps Control/AthenaKernel @@ -32,6 +33,7 @@ atlas_depends_on_subdirs( PUBLIC MuonSpectrometer/MuonRDO MuonSpectrometer/MuonSimData MuonSpectrometer/MuonSimEvent + Reconstruction/RecEvent Simulation/G4Sim/TrackRecord TileCalorimeter/TileEvent TileCalorimeter/TileSimEvent @@ -50,8 +52,7 @@ atlas_add_component( OverlayCommonAlgs src/*.cxx src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} GaudiKernel CaloSimEvent AthenaBaseComps AthenaKernel PileUpToolsLib StoreGateLib SGtests PersistentDataModel Identifier ByteStreamCnvSvcLib EventInfo OverlayAlgBase GeneratorObjects InDetBCM_RawData InDetRawData InDetSimData InDetSimEvent LArRawEvent LArSimEvent MuonDigitContainer MuonRDO MuonSimData MuonSimEvent TileEvent TileSimEvent TrigConfHLTData TrigSteeringEvent TrigT1CaloEventLib TrigT1Interfaces TrigT1Result ) + LINK_LIBRARIES ${ROOT_LIBRARIES} GaudiKernel CaloSimEvent AthenaBaseComps AthenaKernel PileUpToolsLib StoreGateLib SGtests PersistentDataModel Identifier ByteStreamCnvSvcLib EventInfo OverlayAlgBase GeneratorObjects InDetBCM_RawData InDetRawData InDetSimData InDetSimEvent LArRawEvent LArSimEvent MuonDigitContainer MuonRDO MuonSimData MuonSimEvent RecEvent TileEvent TileSimEvent TrigConfHLTData TrigSteeringEvent TrigT1CaloEventLib TrigT1Interfaces TrigT1Result xAODJet ) # Install files from the package: atlas_install_python_modules( python/__init__.py python/OverlayFlags.py ) - diff --git a/Event/EventOverlay/OverlayCommonAlgs/src/CopyTimings.cxx b/Event/EventOverlay/OverlayCommonAlgs/src/CopyTimings.cxx new file mode 100644 index 0000000000000000000000000000000000000000..afd1ace19848ce00fe28ac83330a9de021d2dcba --- /dev/null +++ b/Event/EventOverlay/OverlayCommonAlgs/src/CopyTimings.cxx @@ -0,0 +1,45 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + + +#include "CopyTimings.h" + +#include "RecEvent/RecoTimingObj.h" + +#include <iostream> +#include <typeinfo> + +//================================================================ +CopyTimings::CopyTimings(const std::string &name, ISvcLocator *pSvcLocator) : + OverlayAlgBase(name, pSvcLocator) {} + +//================================================================ +StatusCode CopyTimings::overlayInitialize() +{ + return StatusCode::SUCCESS; +} + +//================================================================ +StatusCode CopyTimings::overlayFinalize() +{ + return StatusCode::SUCCESS; +} + +//================================================================ +StatusCode CopyTimings::overlayExecute() { + MsgStream log(msgSvc(), name()); + log << MSG::DEBUG << "CopyTimings::execute() begin"<< endreq; + + std::auto_ptr<RecoTimingObj> ap(m_storeGateData->retrievePrivateCopy<RecoTimingObj>("EVNTtoHITS_timings")); + if (!m_storeGateOutput->record(ap, "EVNTtoHITS_timings").isSuccess()) { + log << MSG::ERROR << "problem recording object p=" << ap.get() << ", key=" << "EVNTtoHITS_timings" << endreq; + return StatusCode::FAILURE; + } + + log << MSG::DEBUG << "CopyTimings::execute() end"<< endreq; + return StatusCode::SUCCESS; +} + +//================================================================ +//EOF diff --git a/Event/EventOverlay/OverlayCommonAlgs/src/CopyTimings.h b/Event/EventOverlay/OverlayCommonAlgs/src/CopyTimings.h new file mode 100644 index 0000000000000000000000000000000000000000..fa9124bb5e09d0a403246a379cd2264a3e95d1c9 --- /dev/null +++ b/Event/EventOverlay/OverlayCommonAlgs/src/CopyTimings.h @@ -0,0 +1,23 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef OVERLAYCOMMONALGS_COPYTIMINGS_H +#define OVERLAYCOMMONALGS_COPYTIMINGS_H + + +#include <string> + +#include "OverlayAlgBase/OverlayAlgBase.h" + +class CopyTimings : public OverlayAlgBase { +public: + + CopyTimings(const std::string &name,ISvcLocator *pSvcLocator); + + virtual StatusCode overlayInitialize(); + virtual StatusCode overlayExecute(); + virtual StatusCode overlayFinalize(); +}; + +#endif/*OVERLAYCOMMONALGS_COPYTIMINGS_H*/ diff --git a/Event/EventOverlay/OverlayCommonAlgs/src/CopyTruthInfo.cxx b/Event/EventOverlay/OverlayCommonAlgs/src/CopyTruthInfo.cxx new file mode 100644 index 0000000000000000000000000000000000000000..3842834ceecb98bcb4291b05e1b2aaa35e2d1331 --- /dev/null +++ b/Event/EventOverlay/OverlayCommonAlgs/src/CopyTruthInfo.cxx @@ -0,0 +1,59 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + + +#include "CopyTruthInfo.h" + +#include "xAODJet/JetAuxContainer.h" +#include "xAODJet/JetContainer.h" + +#include <iostream> +#include <typeinfo> + +//================================================================ +CopyTruthInfo::CopyTruthInfo(const std::string &name, ISvcLocator *pSvcLocator) : + OverlayAlgBase(name, pSvcLocator) {} + +//================================================================ +StatusCode CopyTruthInfo::overlayInitialize() +{ + return StatusCode::SUCCESS; +} + +//================================================================ +StatusCode CopyTruthInfo::overlayFinalize() +{ + return StatusCode::SUCCESS; +} + +//================================================================ +StatusCode CopyTruthInfo::overlayExecute() { + MsgStream log(msgSvc(), name()); + log << MSG::DEBUG << "CopyTruthInfo::execute() begin"<< endreq; + + typedef std::vector<std::string> KeyList; + KeyList keys = m_storeGateData->keys<xAOD::JetContainer>(); + for(KeyList::const_iterator k=keys.begin(); k!=keys.end(); ++k) { + std::auto_ptr<xAOD::JetContainer> ap(m_storeGateData->retrievePrivateCopy<xAOD::JetContainer>(*k)); + log << MSG::DEBUG << "Working on p="<<ap.get()<<", key="<<*k << endreq; + if(!m_storeGateOutput->record(ap, *k).isSuccess()) { + log << MSG::WARNING << "Problem recording object p="<<ap.get()<<", key="<<*k << endreq; + } + } + + keys = m_storeGateData->keys<xAOD::JetAuxContainer>(); + for(KeyList::const_iterator k=keys.begin(); k!=keys.end(); ++k) { + std::auto_ptr<xAOD::JetAuxContainer> ap(m_storeGateData->retrievePrivateCopy<xAOD::JetAuxContainer>(*k)); + log << MSG::DEBUG << "Working on p="<<ap.get()<<", key="<<*k << endreq; + if(!m_storeGateOutput->record(ap, *k).isSuccess()) { + log << MSG::WARNING << "Problem recording object p="<<ap.get()<<", key="<<*k << endreq; + } + } + + log << MSG::DEBUG << "CopyObjects::execute() end"<< endreq; + return StatusCode::SUCCESS; +} + +//================================================================ +//EOF diff --git a/Event/EventOverlay/OverlayCommonAlgs/src/CopyTruthInfo.h b/Event/EventOverlay/OverlayCommonAlgs/src/CopyTruthInfo.h new file mode 100644 index 0000000000000000000000000000000000000000..e6748e51b60ef06f51820b66305f9283d89e1ce8 --- /dev/null +++ b/Event/EventOverlay/OverlayCommonAlgs/src/CopyTruthInfo.h @@ -0,0 +1,23 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef OVERLAYCOMMONALGS_COPYTRUTHINFO_H +#define OVERLAYCOMMONALGS_COPYTRUTHINFO_H + + +#include <string> + +#include "OverlayAlgBase/OverlayAlgBase.h" + +class CopyTruthInfo : public OverlayAlgBase { +public: + + CopyTruthInfo(const std::string &name,ISvcLocator *pSvcLocator); + + virtual StatusCode overlayInitialize(); + virtual StatusCode overlayExecute(); + virtual StatusCode overlayFinalize(); +}; + +#endif/*OVERLAYCOMMONALGS_COPYTRUTHINFO_H*/ diff --git a/Event/EventOverlay/OverlayCommonAlgs/src/components/OverlayCommonAlgs_entries.cxx b/Event/EventOverlay/OverlayCommonAlgs/src/components/OverlayCommonAlgs_entries.cxx index 6487e2353afce61db9de851c6df6382dd30b1185..fb235854222066056bdc4a4521969e71bd2613d8 100644 --- a/Event/EventOverlay/OverlayCommonAlgs/src/components/OverlayCommonAlgs_entries.cxx +++ b/Event/EventOverlay/OverlayCommonAlgs/src/components/OverlayCommonAlgs_entries.cxx @@ -1,6 +1,8 @@ #include "GaudiKernel/DeclareFactoryEntries.h" #include "../CopyMcEventCollection.h" #include "../CopyObjects.h" +#include "../CopyTimings.h" +#include "../CopyTruthInfo.h" #include "../SaveInDetObjects.h" #include "../RemoveObjects.h" #include "../UpdateEventInfo.h" @@ -12,6 +14,8 @@ DECLARE_ALGORITHM_FACTORY( CopyMcEventCollection ) DECLARE_ALGORITHM_FACTORY( CopyObjects ) +DECLARE_ALGORITHM_FACTORY( CopyTimings ) +DECLARE_ALGORITHM_FACTORY( CopyTruthInfo ) DECLARE_ALGORITHM_FACTORY( SaveInDetObjects ) DECLARE_ALGORITHM_FACTORY( RemoveObjects ) DECLARE_ALGORITHM_FACTORY( UpdateEventInfo ) @@ -25,6 +29,8 @@ DECLARE_TOOL_FACTORY( ByteStreamMultipleOutputStreamCopyTool ) DECLARE_FACTORY_ENTRIES( OverlayCommonAlgs ) { DECLARE_ALGORITHM( CopyMcEventCollection ) DECLARE_ALGORITHM( CopyObjects ) + DECLARE_ALGORITHM( CopyTimings ) + DECLARE_ALGORITHM( CopyTruthInfo ) DECLARE_ALGORITHM( SaveInDetObjects ) DECLARE_ALGORITHM( RemoveObjects ) DECLARE_ALGORITHM( UpdateEventInfo )