Skip to content
Snippets Groups Projects
Commit 5d81629b authored by Atlas-Software Librarian's avatar Atlas-Software Librarian Committed by Graeme Stewart
Browse files

'CMakeLists.txt' (xAODTruthCnv-00-01-16-00)

	* Fixing bug where setSignalProcessVertexLink was being set for signal
	vertex when current vertex was pile-up
	* BRANCHING - tagged as xAODTruthCnv-00-01-16-00

2015-06-05 Jovan Mitrevski <Jovan.Mitrevski@cern.ch>
	* src/xAODTruthCnvAlg.{cxx|h}: add a ForceRerun flag, to rerun even if output containers exist
	* Tagged as xAODTruthCnv-00-01-16

2015-05-18 Jovan Mitrevski <Jovan.Mitrevski@cern.ch>
	* src/xAODTruthCnvAlg.cxx: stop producing empty pile-up containers when not requested
	* Tagged as xAODTruthCnv-00-01-15
parent 49968292
No related branches found
No related tags found
No related merge requests found
################################################################################
# Package: xAODTruthCnv
################################################################################
# Declare the package name:
atlas_subdir( xAODTruthCnv )
# Declare the package's dependencies:
atlas_depends_on_subdirs( PRIVATE
Control/AthenaBaseComps
Control/AthenaKernel
Control/DataModel
Control/StoreGate
Event/xAOD/xAODTruth
GaudiKernel
Generators/GeneratorObjects )
# External dependencies:
find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
# Component(s) in the package:
atlas_add_component( xAODTruthCnv
src/*.cxx
src/components/*.cxx
INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps AthenaKernel DataModel StoreGateLib SGtests xAODTruth GaudiKernel GeneratorObjects )
# Install files from the package:
atlas_install_joboptions( share/*.py )
......@@ -49,6 +49,7 @@ namespace xAODMaker {
declareProperty("TruthLinks", m_truthLinkContainerName="xAODTruthLinks" );
declareProperty( "WriteAllPileUpTruth", m_doAllPileUp = false);
declareProperty( "WriteInTimePileUpTruth", m_doInTimePileUp = false);
declareProperty( "ForceRerun", m_forceRerun = false);
}
......@@ -75,11 +76,12 @@ namespace xAODMaker {
StatusCode xAODTruthCnvAlg::execute() {
// If the containers already exist then assume that nothing needs to be done
/// @todo Should this check be AND rather than OR?
if (evtStore()->contains< xAOD::TruthEventContainer >(m_xaodTruthEventContainerName) ||
evtStore()->contains< xAOD::TruthPileupEventContainer >(m_xaodTruthPUEventContainerName) ||
evtStore()->contains< xAOD::TruthParticleContainer >(m_xaodTruthParticleContainerName) ||
evtStore()->contains< xAOD::TruthVertexContainer >(m_xaodTruthVertexContainerName)) {
/// @todo Should this check be AND rather than OR? But pileup might be missing.
if ((evtStore()->contains< xAOD::TruthEventContainer >(m_xaodTruthEventContainerName) ||
evtStore()->contains< xAOD::TruthPileupEventContainer >(m_xaodTruthPUEventContainerName) ||
evtStore()->contains< xAOD::TruthParticleContainer >(m_xaodTruthParticleContainerName) ||
evtStore()->contains< xAOD::TruthVertexContainer >(m_xaodTruthVertexContainerName)) &&
!m_forceRerun) {
ATH_MSG_WARNING("xAOD Truth seems to be already available in the event");
return StatusCode::SUCCESS;
}
......@@ -105,12 +107,16 @@ namespace xAODMaker {
xTruthEventContainer->setStore( xTruthEventAuxContainer );
ATH_MSG_DEBUG( "Recorded TruthEventContainer with key: " << m_xaodTruthEventContainerName );
// Pile-up events
xAOD::TruthPileupEventContainer* xTruthPileupEventContainer = new xAOD::TruthPileupEventContainer();
CHECK( evtStore()->record( xTruthPileupEventContainer, m_xaodTruthPUEventContainerName ) );
xAOD::TruthPileupEventAuxContainer* xTruthPileupEventAuxContainer = new xAOD::TruthPileupEventAuxContainer();
CHECK( evtStore()->record( xTruthPileupEventAuxContainer, m_xaodTruthPUEventContainerName + "Aux." ) );
xTruthPileupEventContainer->setStore( xTruthPileupEventAuxContainer );
ATH_MSG_DEBUG( "Recorded TruthPileupEventContainer with key: " << m_xaodTruthPUEventContainerName );
xAOD::TruthPileupEventContainer* xTruthPileupEventContainer = 0;
xAOD::TruthPileupEventAuxContainer* xTruthPileupEventAuxContainer = 0;
if (m_doAllPileUp || m_doInTimePileUp) {
xTruthPileupEventContainer = new xAOD::TruthPileupEventContainer();
CHECK( evtStore()->record( xTruthPileupEventContainer, m_xaodTruthPUEventContainerName ) );
xTruthPileupEventAuxContainer = new xAOD::TruthPileupEventAuxContainer();
CHECK( evtStore()->record( xTruthPileupEventAuxContainer, m_xaodTruthPUEventContainerName + "Aux." ) );
xTruthPileupEventContainer->setStore( xTruthPileupEventAuxContainer );
ATH_MSG_DEBUG( "Recorded TruthPileupEventContainer with key: " << m_xaodTruthPUEventContainerName );
}
// Particles
xAOD::TruthParticleContainer* xTruthParticleContainer = new xAOD::TruthParticleContainer();
CHECK( evtStore()->record( xTruthParticleContainer, m_xaodTruthParticleContainerName ) );
......@@ -312,7 +318,7 @@ namespace xAODMaker {
// (c) Put particle into container; Build Event<->Vertex element link
ElementLink<xAOD::TruthVertexContainer> eltv(*xTruthVertexContainer, xTruthVertexContainer->size()-1);
// Mark if this is the signal process vertex
if (vertex == signalProcessVtx) xTruthEvent->setSignalProcessVertexLink(eltv);
if ((vertex == signalProcessVtx) && isSignalProcess) xTruthEvent->setSignalProcessVertexLink(eltv);
if (isSignalProcess) xTruthEvent->addTruthVertexLink(eltv);
if (!isSignalProcess) xTruthPileupEvent->addTruthVertexLink(eltv);
// (d) Assign incoming particles to the vertex, from the map
......
......@@ -66,6 +66,9 @@ namespace xAODMaker {
bool m_doAllPileUp;
bool m_doInTimePileUp;
/// a flag to force rerunning (useful for rerunning on ESDs)
bool m_forceRerun;
}; // class xAODTruthCnvAlg
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment