A bug in FairRootManager [message #15787] |
Wed, 15 January 2014 09:34 |
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.
|
|
|