diff --git a/Simulation/Digitization/python/DigiAlgConfig.py b/Simulation/Digitization/python/DigiAlgConfig.py index cbac1ef3a7fc309e34954d5d8704aa744a862759..8be017b64f9f6d0c2de4efe80583843dc60e295b 100644 --- a/Simulation/Digitization/python/DigiAlgConfig.py +++ b/Simulation/Digitization/python/DigiAlgConfig.py @@ -44,7 +44,7 @@ def getStandardTruthPileUpTools(): PileUpToolsList += [ "MergeMcEventCollTool" ] PileUpToolsList += [ "MergeTruthJetsTool" ] if DetFlags.writeRDOPool.Muon_on(): #possibly this should be digitize.Muon_on() - PileUpToolsList += [ "MergeTrackRecordCollTool" ] + PileUpToolsList += [ "MergeMuonEntryLayerTool" ] if DetFlags.writeRDOPool.Calo_on(): #possibly this should be digitize.Calo_on() PileUpToolsList += [ "MergeCalibHitsTool" ] return PileUpToolsList @@ -61,7 +61,7 @@ def getStandardSignalOnlyTruthPileUpTools(): PileUpToolsList += [ "SignalOnlyMcEventCollTool" ] PileUpToolsList += [ "MergeTruthJetsTool" ] if not athenaCommonFlags.DoFullChain() and DetFlags.writeRDOPool.Muon_on(): #possibly this should be digitize.Muon_on() - PileUpToolsList += [ "MergeTrackRecordCollTool" ] + PileUpToolsList += [ "MergeMuonEntryLayerTool" ] if DetFlags.writeRDOPool.Calo_on(): #possibly this should be digitize.Calo_on() PileUpToolsList += [ "MergeCalibHitsTool" ] return PileUpToolsList @@ -86,7 +86,7 @@ def getStandardInTimeOnlyTruthPileUpTools(): PileUpToolsList += [ "InTimeOnlyMcEventCollTool" ] PileUpToolsList += [ "MergeTruthJetsTool" ] if not athenaCommonFlags.DoFullChain() and DetFlags.writeRDOPool.Muon_on(): #possibly this should be digitize.Muon_on() - PileUpToolsList += [ "MergeTrackRecordCollTool" ] + PileUpToolsList += [ "MergeMuonEntryLayerTool" ] if DetFlags.writeRDOPool.Calo_on(): #possibly this should be digitize.Calo_on() PileUpToolsList += [ "MergeCalibHitsTool" ] return PileUpToolsList diff --git a/Simulation/Digitization/python/DigiOutput.py b/Simulation/Digitization/python/DigiOutput.py index 97c20ed88121182c5bce58092518fc0a4e4da633..1d1ca0f906281e4c5a04da73134a163cb07623c3 100644 --- a/Simulation/Digitization/python/DigiOutput.py +++ b/Simulation/Digitization/python/DigiOutput.py @@ -75,10 +75,10 @@ def getStreamRDO_ItemList(log): if DetFlags.writeRDOPool.Truth_on(): StreamRDO_ItemList+=["McEventCollection#*"] StreamRDO_ItemList+=["TrackRecordCollection#*"] - StreamRDO_ItemList+=["xAOD::JetContainer#InTimeAntiKt4TruthJets"] - StreamRDO_ItemList+=["xAOD::JetAuxContainer#InTimeAntiKt4TruthJetsAux."] - StreamRDO_ItemList+=["xAOD::JetContainer#OutOfTimeAntiKt4TruthJets"] - StreamRDO_ItemList+=["xAOD::JetAuxContainer#OutOfTimeAntiKt4TruthJetsAux."] + StreamRDO_ItemList+=["xAOD::JetContainer#*InTimeAntiKt4TruthJets"] + StreamRDO_ItemList+=["xAOD::JetAuxContainer#*InTimeAntiKt4TruthJetsAux."] + StreamRDO_ItemList+=["xAOD::JetContainer#*OutOfTimeAntiKt4TruthJets"] + StreamRDO_ItemList+=["xAOD::JetAuxContainer#*OutOfTimeAntiKt4TruthJetsAux."] if DetFlags.writeRDOPool.Calo_on(): StreamRDO_ItemList += ["CaloCalibrationHitContainer#*"] # Temporary for debugging MBTSHits diff --git a/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py b/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py index c0678e7b9e3a94e045f8a7d06e0e240848094cf2..86c202e10292dcda9cd217e3cc5e10c86f74db87 100755 --- a/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py +++ b/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py @@ -167,7 +167,7 @@ class TestDigitizationMC16a(unittest.TestCase): def test___StandardSignalOnlyTruthPileUpToolsAlg_PileUpTools(self): - expected_PileUpTools = ['MergeMcEventCollTool/SignalOnlyMcEventCollTool','MergeTruthJetsTool/MergeTruthJetsTool','MergeTrackRecordCollTool/MergeTrackRecordCollTool','MergeCalibHitsTool/MergeCalibHitsTool','BCM_DigitizationTool/BCM_DigitizationTool','PixelDigitizationTool/PixelDigitizationTool','SCT_DigitizationTool/SCT_DigitizationTool','TRTDigitizationTool/TRTDigitizationTool','LArPileUpTool/LArPileUpTool','TileHitVecToCntTool/TileHitVecToCntTool','CscDigitizationTool/CscDigitizationTool','MdtDigitizationTool/MdtDigitizationTool','RpcDigitizationTool/RpcDigitizationTool','TgcDigitizationTool/TgcDigitizationTool','MergeRecoTimingObjTool/MergeRecoTimingObjTool'] + expected_PileUpTools = ['MergeMcEventCollTool/SignalOnlyMcEventCollTool','MergeTruthJetsTool/MergeTruthJetsTool','MergeTrackRecordCollTool/MergeMuonEntryLayerTool','MergeCalibHitsTool/MergeCalibHitsTool','BCM_DigitizationTool/BCM_DigitizationTool','PixelDigitizationTool/PixelDigitizationTool','SCT_DigitizationTool/SCT_DigitizationTool','TRTDigitizationTool/TRTDigitizationTool','LArPileUpTool/LArPileUpTool','TileHitVecToCntTool/TileHitVecToCntTool','CscDigitizationTool/CscDigitizationTool','MdtDigitizationTool/MdtDigitizationTool','RpcDigitizationTool/RpcDigitizationTool','TgcDigitizationTool/TgcDigitizationTool','MergeRecoTimingObjTool/MergeRecoTimingObjTool'] self._assert_Algorithm_property_unordered_equal( 'StandardSignalOnlyTruthPileUpToolsAlg', 'PileUpTools', @@ -176,7 +176,7 @@ class TestDigitizationMC16a(unittest.TestCase): def test___MergeTruthJetsTool_properties(self): tested_configurable_name = 'ToolSvc.MergeTruthJetsTool' - expected_property_list = ['DetStore', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'LastXing'] + expected_property_list = ['DetStore', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'InTimeOutputTruthJetCollKey', 'LastXing', 'OutOfTimeTruthJetCollKey'] expected_nonstring_properties = {'LastXing': '100', 'FirstXing': '-500'} expected_string_properties = {} # Not checking any specific property values self._detailed_ConfigurablePropertiesCheck( @@ -186,9 +186,9 @@ class TestDigitizationMC16a(unittest.TestCase): expected_string_properties) - def test___MergeTrackRecordCollTool_properties(self): - tested_configurable_name = 'ToolSvc.MergeTrackRecordCollTool' - expected_property_list = ['DetStore', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'LastXing'] + def test___MergeMuonEntryLayerTool_properties(self): + tested_configurable_name = 'ToolSvc.MergeMuonEntryLayerTool' + expected_property_list = ['DetStore', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'LastXing', 'TrackRecordCollKey', 'TrackRecordCollOutputKey'] expected_nonstring_properties = {'LastXing': '1', 'FirstXing': '-1'} expected_string_properties = {} # Not checking any specific property values self._detailed_ConfigurablePropertiesCheck( diff --git a/Simulation/G4Utilities/MCTruthSimAlgs/python/MCTruthSimAlgsConfig.py b/Simulation/G4Utilities/MCTruthSimAlgs/python/MCTruthSimAlgsConfig.py index fa0b3a1732e8fd07bf691e80fb5502b8b1f07393..ba9f44b452a9f24dfd198aae2e69099f6c8d706f 100644 --- a/Simulation/G4Utilities/MCTruthSimAlgs/python/MCTruthSimAlgsConfig.py +++ b/Simulation/G4Utilities/MCTruthSimAlgs/python/MCTruthSimAlgsConfig.py @@ -6,7 +6,7 @@ from AthenaCommon import CfgMgr ############################################################################ def genericMergeMcEventCollTool(name="MergeMcEventCollTool", **kwargs): - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent") else: @@ -99,7 +99,14 @@ def getMergeTruthJetsTool(name="MergeTruthJetsTool", **kwargs): if digitizationFlags.doXingByXingPileUp(): # PileUpTool approach kwargs.setdefault("FirstXing", TruthJet_FirstXing() ) kwargs.setdefault("LastXing", TruthJet_LastXing() ) - #kwargs.setdefault("OutputLevel", 1 ) + + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): + from OverlayCommonAlgs.OverlayFlags import overlayFlags + kwargs.setdefault("InTimeOutputTruthJetCollKey", overlayFlags.bkgPrefix() + "InTimeAntiKt4TruthJets") + kwargs.setdefault("OutOfTimeTruthJetCollKey", overlayFlags.bkgPrefix() + "OutOfTimeAntiKt4TruthJets") + else: + kwargs.setdefault("InTimeOutputTruthJetCollKey", "InTimeAntiKt4TruthJets") + kwargs.setdefault("OutOfTimeTruthJetCollKey", "OutOfTimeAntiKt4TruthJets") return CfgMgr.MergeTruthJetsTool(name, **kwargs) @@ -111,7 +118,7 @@ def getNewMergeMcEventCollTool_Base(name="NewMergeMcEventCollTool_Base", **kwarg if digitizationFlags.doXingByXingPileUp(): # PileUpTool approach kwargs.setdefault("FirstXing", -30000) kwargs.setdefault("LastXing", 30000) - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent") else: @@ -135,7 +142,7 @@ def getNewMergeMcEventCollTool_Signal(name="NewMergeMcEventCollTool_Signal", **k def getNewMergeMcEventCollTool_MinBias(name="NewMergeMcEventCollTool_MinBias", **kwargs): from Digitization import PileUpEventType kwargs.setdefault("PileUpType", PileUpEventType.MinimumBias) - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent_PU") else: @@ -145,7 +152,7 @@ def getNewMergeMcEventCollTool_MinBias(name="NewMergeMcEventCollTool_MinBias", * def getNewMergeMcEventCollTool_HighPtMinBias(name="NewMergeMcEventCollTool_HighPtMinBias", **kwargs): from Digitization import PileUpEventType kwargs.setdefault("PileUpType", PileUpEventType.HighPtMinimumBias) - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent_HighPtPU") else: @@ -155,7 +162,7 @@ def getNewMergeMcEventCollTool_HighPtMinBias(name="NewMergeMcEventCollTool_HighP def getNewMergeMcEventCollTool_Cavern(name="NewMergeMcEventCollTool_Cavern", **kwargs): from Digitization import PileUpEventType kwargs.setdefault("PileUpType", PileUpEventType.Cavern) - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent_Cavern") else: @@ -165,7 +172,7 @@ def getNewMergeMcEventCollTool_Cavern(name="NewMergeMcEventCollTool_Cavern", **k def getNewMergeMcEventCollTool_HaloGas(name="NewMergeMcEventCollTool_HaloGas", **kwargs): from Digitization import PileUpEventType kwargs.setdefault("PileUpType", PileUpEventType.HaloGas) - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent_HaloGas") else: @@ -182,7 +189,7 @@ def getInTimeOnlyNewMergeMcEventCollTool_Base(name="InTimeOnlyNewMergeMcEventCol def getInTimeOnlyNewMergeMcEventCollTool_MinBias(name="InTimeOnlyNewMergeMcEventCollTool_MinBias", **kwargs): from Digitization import PileUpEventType kwargs.setdefault("PileUpType", PileUpEventType.MinimumBias) - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent_PU") else: @@ -192,7 +199,7 @@ def getInTimeOnlyNewMergeMcEventCollTool_MinBias(name="InTimeOnlyNewMergeMcEvent def getInTimeOnlyNewMergeMcEventCollTool_HighPtMinBias(name="InTimeOnlyNewMergeMcEventCollTool_HighPtMinBias", **kwargs): from Digitization import PileUpEventType kwargs.setdefault("PileUpType", PileUpEventType.HighPtMinimumBias) - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent_HighPtPU") else: @@ -202,7 +209,7 @@ def getInTimeOnlyNewMergeMcEventCollTool_HighPtMinBias(name="InTimeOnlyNewMergeM def getInTimeOnlyNewMergeMcEventCollTool_Cavern(name="InTimeOnlyNewMergeMcEventCollTool_Cavern", **kwargs): from Digitization import PileUpEventType kwargs.setdefault("PileUpType", PileUpEventType.Cavern) - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent_Cavern") else: @@ -212,7 +219,7 @@ def getInTimeOnlyNewMergeMcEventCollTool_Cavern(name="InTimeOnlyNewMergeMcEventC def getInTimeOnlyNewMergeMcEventCollTool_HaloGas(name="InTimeOnlyNewMergeMcEventCollTool_HaloGas", **kwargs): from Digitization import PileUpEventType kwargs.setdefault("PileUpType", PileUpEventType.HaloGas) - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("TruthCollOutputKey", overlayFlags.bkgPrefix() + "TruthEvent_HaloGas") else: @@ -249,14 +256,29 @@ def MergeTrackRecordCollTool(name="MergeTrackRecordCollTool", **kwargs): def MergeCaloEntryLayerTool(name="MergeCaloEntryLayerTool", **kwargs): kwargs.setdefault("TrackRecordCollKey", "CaloEntryLayer" ) + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): + from OverlayCommonAlgs.OverlayFlags import overlayFlags + kwargs.setdefault("TrackRecordCollOutputKey", overlayFlags.bkgPrefix() + "CaloEntryLayer") + else: + kwargs.setdefault("TrackRecordCollOutputKey", "CaloEntryLayer" ) return MergeTrackRecordCollTool(name, **kwargs) def MergeMuonEntryLayerTool(name="MergeMuonEntryLayerTool", **kwargs): kwargs.setdefault("TrackRecordCollKey", "MuonEntryLayer" ) + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): + from OverlayCommonAlgs.OverlayFlags import overlayFlags + kwargs.setdefault("TrackRecordCollOutputKey", overlayFlags.bkgPrefix() + "MuonEntryLayer") + else: + kwargs.setdefault("TrackRecordCollOutputKey", "MuonEntryLayer" ) return MergeTrackRecordCollTool(name, **kwargs) def MergeMuonExitLayerTool(name="MergeMuonExitLayerTool", **kwargs): kwargs.setdefault("TrackRecordCollKey", "MuonExitLayer" ) + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): + from OverlayCommonAlgs.OverlayFlags import overlayFlags + kwargs.setdefault("TrackRecordCollOutputKey", overlayFlags.bkgPrefix() + "MuonExitLayer") + else: + kwargs.setdefault("TrackRecordCollOutputKey", "MuonExitLayer" ) return MergeTrackRecordCollTool(name, **kwargs) @@ -336,7 +358,7 @@ def MergeRecoTimingObjTool(name="MergeRecoTimingObjTool", **kwargs): kwargs.setdefault("LastXing", TimingObj_LastXing() ) kwargs.setdefault("RecoTimingObjInputKey", "EVNTtoHITS_timings") - if 'OverlayMT' in digitizationFlags.experimentalDigi(): + if digitizationFlags.PileUpPremixing and 'OverlayMT' in digitizationFlags.experimentalDigi(): from OverlayCommonAlgs.OverlayFlags import overlayFlags kwargs.setdefault("RecoTimingObjOutputKey", overlayFlags.bkgPrefix() + "EVNTtoHITS_timings") else: diff --git a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTrackRecordCollTool.cxx b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTrackRecordCollTool.cxx index 5e32c46ebf435394d9d4a6a8bde318199492a89f..83ec5fe105a423a88f99000b862fffc799d612d1 100644 --- a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTrackRecordCollTool.cxx +++ b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTrackRecordCollTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "MergeTrackRecordCollTool.h" @@ -7,7 +7,6 @@ #include "AthenaKernel/errorcheck.h" #include "PileUpTools/PileUpMergeSvc.h" #include "StoreGate/StoreGateSvc.h" -#include "TrackRecord/TrackRecordCollection.h" MergeTrackRecordCollTool::MergeTrackRecordCollTool(const std::string& type, const std::string& name, @@ -19,6 +18,13 @@ MergeTrackRecordCollTool::MergeTrackRecordCollTool(const std::string& type, declareProperty("TrackRecordCollKey", m_trRecCollKey=std::string("MuonEntryLayer")); } +StatusCode MergeTrackRecordCollTool::initialize() +{ + ATH_MSG_DEBUG( "initialize()" ); + ATH_CHECK( m_outputKey.initialize() ); + return StatusCode::SUCCESS; +} + StatusCode MergeTrackRecordCollTool::prepareEvent(unsigned int nInputEvents) { ATH_MSG_DEBUG ( "Calling prepareEvent(): " << name() << " - package version " << PACKAGE_VERSION ); @@ -41,12 +47,17 @@ StatusCode MergeTrackRecordCollTool::processBunchXing(int bunchXing, if (m_pMergeSvc->retrieveSingleSubEvtData(m_trRecCollKey.value(), oldColl, bunchXing, bSubEvents).isSuccess()) { - TrackRecordCollection* newColl = new TrackRecordCollection(); + SG::WriteHandle<TrackRecordCollection> outputCollection(m_outputKey); + ATH_CHECK(outputCollection.record(std::make_unique<TrackRecordCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output TrackRecordCollection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } + for(auto trcit : *oldColl) - { - newColl->push_back( TrackRecord(trcit) ); - } - CHECK(evtStore()->record(newColl, m_trRecCollKey)); + { + outputCollection->push_back( TrackRecord(trcit) ); + } ATH_MSG_DEBUG( "processBunchXing: copied original event TrackRecordCollection" ); m_firstSubEvent=false; } @@ -93,14 +104,19 @@ StatusCode MergeTrackRecordCollTool::processAllSubEvents() { //FIXME we are forced to do a deep copy const TrackRecordCollection &oldColl=*(truthList.begin())->second; - TrackRecordCollection *newColl = new TrackRecordCollection(); + + SG::WriteHandle<TrackRecordCollection> outputCollection(m_outputKey); + ATH_CHECK(outputCollection.record(std::make_unique<TrackRecordCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output TrackRecordCollection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } for (auto trcit : oldColl) { - newColl->push_back( TrackRecord(trcit) ); + outputCollection->push_back( TrackRecord(trcit) ); } - CHECK(evtStore()->record(newColl, m_trRecCollKey)); ATH_MSG_DEBUG ( "processAllSubEvents: copied original event TrackRecordCollection" ); } else diff --git a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTrackRecordCollTool.h b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTrackRecordCollTool.h index 5b45faf081c666d5ffff6caef4cc6907df898d79..897af20837976107bd53111905858cbff766a1da 100644 --- a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTrackRecordCollTool.h +++ b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTrackRecordCollTool.h @@ -1,11 +1,12 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #ifndef MCTRUTHSIMALGS_MERGETRACKRECORDCOLLTOOL_H #define MCTRUTHSIMALGS_MERGETRACKRECORDCOLLTOOL_H #include "PileUpTools/PileUpToolBase.h" +#include "TrackRecord/TrackRecordCollection.h" #include "GaudiKernel/Property.h" #include "GaudiKernel/ServiceHandle.h" @@ -25,6 +26,8 @@ public: MergeTrackRecordCollTool(const std::string& type, const std::string& name, const IInterface* parent); + /// Initialize tool + virtual StatusCode initialize() override final; ///called before the subevts loop. Not (necessarily) able to access ///SubEvents virtual StatusCode prepareEvent(unsigned int nInputEvents) override final; @@ -46,6 +49,7 @@ public: private: ServiceHandle<PileUpMergeSvc> m_pMergeSvc; StringProperty m_trRecCollKey; + SG::WriteHandleKey<TrackRecordCollection> m_outputKey{ this, "TrackRecordCollOutputKey", "MuonExitLayer", "" }; bool m_firstSubEvent; }; #endif //MCTRUTHSIMALGS_MERGETRACKRECORDCOLLTOOL_H