diff --git a/parbase/FairContFact.cxx b/parbase/FairContFact.cxx index 613c37d759..98c96f80c8 100644 --- a/parbase/FairContFact.cxx +++ b/parbase/FairContFact.cxx @@ -218,3 +218,19 @@ void FairContFact::print() c->print(); } } + +Bool_t FairContFact::AddContainer(FairContainer* cont) +{ + // Check if a container already exist in the List of containers + // If it alread exist print an error message and return kFALSE + // such that the user can handle the issue + if (nullptr != containers->FindObject(cont)) { + LOG(error) << "The container " << cont->GetName() << " already exist in the " + << "container factory " << GetName() << ".\n" + << "Duplicate container is not added."; + return kFALSE; + } + + containers->Add(cont); + return kTRUE; +} diff --git a/parbase/FairContFact.h b/parbase/FairContFact.h index b52ca36cad..83a40621ec 100644 --- a/parbase/FairContFact.h +++ b/parbase/FairContFact.h @@ -55,6 +55,8 @@ class FairContFact : public TNamed FairParSet* getContainer(const char*); virtual FairParSet* createContainer(FairContainer*) { return 0; } virtual void activateParIo(FairParIo*) {} + /// @param[in] container Transfers ownership if return value is true + Bool_t AddContainer(FairContainer*); protected: TList* containers; // all parameter containers managed by this factory