GSI Forum
GSI Helmholtzzentrum für Schwerionenforschung

Home » Fairroot » General Discussion » A bug in FairRootManager
A bug in FairRootManager [message #15787] Wed, 15 January 2014 09:34
Jifeng Hu is currently offline  Jifeng Hu
Messages: 31
Registered: October 2012
continuous participant
From: *wlan.uni-giessen.de
The Data Exchange between tasks is supported by FairRootManager.
In normal, different TClonesArray in many tasks are created and registered in FairRootManager, then also could be retrieved. FairRootManager provides many interfaces to do that.

For example, create and register a TClonesArray in a way
(A)
fEmcDigiArray = new TClonesArray("PndEmcDigi");// PndEmcDigi, Class Name
FairRootManager::Instance()->Register("EmcDigi", "Emc", fEmcDigiArray, kTRUE);
where "PndEmcDigi" is the Class Name, "EmcDigi" is the Branch Name, "Emc" is the Folder Name.

or another way,
(B)
fEmcDigiArray = FairRootManager::Instance()->Register("EmcDigi", "PndEmcDigi", "Emc", kTRUE);

However, when we want to retrieve this branch,
fEmcDigiArrayRef = FairRootManager::Instance()->GetTClonesArray("EmcDigi");

retrieval fails when in way of (A), and succeeds in way of (B).

The reason for that is a bug inside FairRootManager.
When invoking (B), an active container (std::map) was filled, and skipped when invoking (A).

So please either uniform a standard interface or make a new logic.
 
Read Message
Previous Topic: event registration
Next Topic: FairPrimaryGenerator
Goto Forum:
  


Current Time: Tue Nov 26 07:00:01 CET 2024

Total time taken to generate the page: 0.00909 seconds