====== How to make your GaudiAlgorithm / GaudiTool ready for an nTuple ======
===== Problem =====
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.
===== Solution for GaudiAlgorithm =====
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");
===== Solution for GaudiTool =====
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");