Unlike a DaVinci-Algorithm (DVAlgorithm), Gaudi algorithms (most of the time) inherit from GaudiAlgorithm and tools from GaudiTools where the possiblity to create an nTuple (in an easy way) is not implemented.
Let your GaudiAlgorithm inherit from 'GaudiTupleAlg' instead of 'GaudiAlgorithm'. Most of the time, you have to replace the following instances: In the .h-File:
#include "GaudiAlg/TupleObj.h" #include "GaudiAlg/Tuples.h" #include "GaudiAlg/Tuple.h" #include "GaudiAlg/GaudiTupleAlg.h" class myClass : public GaudiTupleAlg
In the .cpp-File:
myClass::myClass( const std::string& name,ISvcLocator* pSvcLocator): GaudiTupleAlg ( name , pSvcLocator ) StatusCode sc = GaudiTupleAlg::initialize() return GaudiTupleAlg::finalize()
You should then be able to declare your tuple in the 'execute()'-Method with
Tuple tuple = nTuple("myTuple");
Let your GaudiTool inherit from 'GaudiTupleTool' instead of 'GaudiTool'. Most of the time, you have to replace the following instances: In the .h-File:
#include "GaudiAlg/TupleObj.h" #include "GaudiAlg/Tuples.h" #include "GaudiAlg/Tuple.h" #include "GaudiAlg/GaudiTupleTool.h" class myClass : public GaudiTupleTool
In the .cpp-File:
myClass::myClass( const std::string& type, const std::string& name, const IInterface* parent):GaudiTupleTool(type, name, parent)
You should then be able to declare your tuple in a method with
Tuple tuple = nTuple("myTuple");