| The Gaudi Framework v27r1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
Tuples::Tuple Class Reference

A simple wrapper class over standard Gaudi NTuple::Tuple facility. More...

`#include <GaudiAlg/Tuple.h>`

Collaboration diagram for Tuples::Tuple:
[legend]

## Public Member Functions
| Tuple (TupleObj *)
| standard constructor More...
| Tuple (const Tuple &)=default
| copy constructor More...
virtual | ~Tuple ()=default
| destructor More...
Tuple & | operator= (const Tuple &)=default
| assignment operator Tuples could be assigned in a safe way More...
TupleObj * | operator-> () const
| get the pointer to the underlying object More...
bool | valid () const
| check the validity of the tuple object More...

## Protected Member Functions
TupleObj * | tuple () const
| Return the underlying tuple object. More...

## Private Member Functions
| Tuple ()
| default constructor is deleted – except that ROOT wants one for dictionary code generation. More...

## Private Attributes
SmartIF< TupleObj > | m_tuple
| The tuple object. More...

## Detailed Description

A simple wrapper class over standard Gaudi NTuple::Tuple facility.

The main advantages of local ntuples with respect to 'standard' Gaudi NTuples ( NTuple::Tuple ) is their "locality". For 'standard' ntuples one need

1. Define all ntuple columns/items as data members of the algorithm
2. Book the `NTuple::Tuple` object using `INTupleSvc`
3. Add all defined columns/items to the booked ntuple
4. Fill ntuple records

Usually the first step is done in the header file (separate file!) of the algorithm, the second and the third steps are done in `initialize()` method of the algorithm and the fourth step is done somewhere in `execute()` method of the same algorithm. Such approach requires to keep track of the tuple structure through different method and event through different files. And even minor modification of the structure of the ntuple will require the modification of at least 2 methods and 2 files.

The `Tuples::Tuple` wrapper over standard Gaudi `NTuple::Tuple` class solves all above listed problems with "non-local" nature of Gaudi `NTuple::Tuple` objects.

`Tuples::Tuple` object is booked and used 'locally'. One does not need to pre-book the ntuple or its columns/items somewhere in different compilation units or other methods different from the actual point of using the ntuple.

The simplest example of usage Tuple object:

Tuple tuple = nTuple( "some more or less unique tuple title ");
for( Loop D0 = loop( "K- pi+", "D0" ) , D0 , ++D0 )
{
tuple -> column ( "mass" , M ( D0 ) / GeV ) ;
tuple -> column ( "pt" , PT ( D0 ) / GeV ) ;
tuple -> column ( "p" , P ( D0 ) / GeV ) ;
tuple -> write () ;
}

One could fill some Tuple variables in one go

Tuple tuple = nTuple( "some more or less unique tuple title ");
for( Loop D0 = loop( "K- pi+", "D0" ) , D0 , ++D0 )
{
tuple -> column ( "mass" , M ( D0 ) / GeV ) ;
tuple -> fill ( "pt , p " , PT ( D0 ) / GeV , P(D0) / GeV ) ;
tuple -> write () ;
}

Even ALL variables could be filled in one go:

Tuple tuple = nTuple( "some more or less unique tuple title ");
for( Loop D0 = loop( "K- pi+", "D0" ) , D0 , ++D0 )
{
tuple -> fill ( "mass pt , p ", M(D0)/GeV,PT(D0)/GeV,P(D0)/GeV ) ;
tuple -> write () ;
}

All these techniques could be easily combined in arbitrary ways

See also
  GaudiTupleAlg
  TupleObj

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@i.nosp@m.tep..nosp@m.ru

Date
  2003-02-24

Definition at line 116 of file Tuple.h.

## Constructor & Destructor Documentation

Tuples::Tuple::Tuple | ( |  | ) |
| private

default constructor is deleted – except that ROOT wants one for dictionary code generation.

So we make it private, and do not implement it...

Tuples::Tuple::Tuple | ( | Tuples::TupleObj * | tuple | ) |

standard constructor

Standard constructor.

Parameters

  tuple | pointer to "real" tuple object

Definition at line 23 of file Tuple.cpp.

24 : m_tuple( tuple )
25 {
26 }
Tuples::Tuple::m_tuple
SmartIF< TupleObj > m_tuple
The tuple object.
Definition: Tuple.h:159

Tuples::Tuple::Tuple | ( | const Tuple & |  | ) |
| default

copy constructor

virtual Tuples::Tuple::~Tuple | ( |  | ) |
| virtual default

destructor

## Member Function Documentation

TupleObj* Tuples::Tuple::operator-> | ( |  | ) | const
| inline

get the pointer to the underlying object

Returns
  pointer to underlying TupleObj

Definition at line 146 of file Tuple.h.

146 { return tuple () ; }
Tuples::Tuple::tuple
TupleObj * tuple() const
Return the underlying tuple object.
Definition: Tuple.h:154

Tuple& Tuples::Tuple::operator= | ( | const Tuple & |  | ) |
| default

assignment operator Tuples could be assigned in a safe way

Parameters

  tuple | tuple to be assigned

TupleObj* Tuples::Tuple::tuple | ( |  | ) | const
| inline protected

Return the underlying tuple object.

Definition at line 154 of file Tuple.h.

154 { return m_tuple.get() ; }
Tuples::Tuple::m_tuple
SmartIF< TupleObj > m_tuple
The tuple object.
Definition: Tuple.h:159

bool Tuples::Tuple::valid | ( |  | ) | const
| inline

check the validity of the tuple object

Definition at line 149 of file Tuple.h.

149 { return tuple () ; }
Tuples::Tuple::tuple
TupleObj * tuple() const
Return the underlying tuple object.
Definition: Tuple.h:154

## Member Data Documentation

SmartIF<TupleObj> Tuples::Tuple::m_tuple
| private

The tuple object.

Definition at line 159 of file Tuple.h.

The documentation for this class was generated from the following files:

- GaudiAlg/GaudiAlg/Tuple.h
- GaudiAlg/src/lib/Tuple.cpp