From 58cc1bfd6e440dda551471b266a284f28fa4aa57 Mon Sep 17 00:00:00 2001 From: Nils Krumnack <krumnack@iastate.edu> Date: Tue, 16 Feb 2021 15:55:23 -0600 Subject: [PATCH] fix duplicate definition error in ParticleJetTools/CopyTruthJetParticles.h Hopefully very straightforward: If/When the header gets included more than once then there are multiple definitions. Making it a local static variable should fix that. This also avoids the awkwardness of having a global variable named `metaDataFlag`, which seems like a really bad name for a global variable. --- .../ParticleJetTools/CopyTruthJetParticles.h | 5 ----- .../ParticleJetTools/Root/CopyTruthJetParticles.cxx | 3 +++ 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/CopyTruthJetParticles.h b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/CopyTruthJetParticles.h index 9aa29d4fbf96..33d505a29755 100644 --- a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/CopyTruthJetParticles.h +++ b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/ParticleJetTools/CopyTruthJetParticles.h @@ -14,11 +14,6 @@ #include <vector> #include <map> -#include <mutex> // std::call_once, std::once_flag - -std::once_flag metaDataFlag; - - class CopyTruthJetParticles : public CopyTruthParticles { ASG_TOOL_CLASS2(CopyTruthJetParticles, CopyTruthParticles, IJetExecuteTool) public: diff --git a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthJetParticles.cxx b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthJetParticles.cxx index 61ae79b79ea5..b16a225bfb87 100644 --- a/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthJetParticles.cxx +++ b/PhysicsAnalysis/AnalysisCommon/ParticleJetTools/Root/CopyTruthJetParticles.cxx @@ -15,6 +15,8 @@ #include "AsgDataHandles/WriteHandle.h" #include "AsgMessaging/Check.h" +#include <mutex> // std::call_once, std::once_flag + #ifndef XAOD_STANDALONE // Usage of metadata is for now only possible in Athena... //#include "CoralBase/AttributeListException.h" @@ -256,6 +258,7 @@ int CopyTruthJetParticles::execute() const { // std::call_once(metaDataFlag,&CopyTruthJetParticles::basicMetaDataCheck,this,barcodeOffset); // this call happens only once and it modifies m_barcodeOffset // Note that catching the return value of this is rather complicated, so it throws rather than returning errors + static std::once_flag metaDataFlag; std::call_once(metaDataFlag,&CopyTruthJetParticles::setBarCodeFromMetaDataCheck, this); std::vector<const xAOD::TruthParticle*> promptLeptons; -- GitLab