| The Gaudi Framework v32r1 (f65d50dc)

Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Tuples::TupleObj Class Referenceabstract

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

`#include <GaudiAlg/TupleObj.h>`

Inheritance diagram for Tuples::TupleObj:
[legend]
Collaboration diagram for Tuples::TupleObj:
[legend]

## Public Types
typedef NTuple::Item< bool > | Bool
| basic type for int items More...
typedef NTuple::Item< char > | Char
| basic type for int items More...
typedef NTuple::Item< unsigned char > | UChar
| basic type for unsigned int items More...
typedef NTuple::Item< short > | Short
| basic type for int items More...
typedef NTuple::Item< unsigned short > | UShort
| basic type for unsigned int items More...
typedef NTuple::Item< int > | Int
| basic type for int items More...
typedef NTuple::Item< unsigned int > | UInt
| basic type for unsigned int items More...
typedef NTuple::Item< long long > | LongLong
| basic type for unsigned long long items More...
typedef NTuple::Item< unsigned long long > | ULongLong
| basic type for unsigned long long items More...
typedef NTuple::Item< float > | Float
| basic type for float items More...
typedef NTuple::Item< double > | Double
| basic type for double items More...
typedef NTuple::Item< IOpaqueAddress * > | Address
| basic type for address items More...
typedef NTuple::Array< float > | FArray
| basic type for array of floats More...
typedef NTuple::Matrix< float > | FMatrix
| basic type for matrix of floats More...
typedef unsigned short | MIndex
typedef std::map< std::string, std::string > | ItemMap

## Public Member Functions
virtual | ~TupleObj ()
StatusCode | column (const std::string &name, float value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, double value)
| Set the value for the selected tuple column If the column does not exist, it will be automatically created and appended to the tuple. More...
StatusCode | column (const std::string &name, short value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, short value, short minv, short maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned short value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned short value, unsigned short minv, unsigned short maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, char value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, char value, char minv, char maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned char value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned char value, unsigned char minv, unsigned char maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, int value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, int value, int minv, int maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned int value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned int value, unsigned int minv, unsigned int maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, long value)
| Set the value for the selected tuple column. More...
StatusCode | column (const std::string &name, long value, long minv, long maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned long value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned long value, unsigned long minv, unsigned long maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, long long value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, long long value, long long minv, long long maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned long long value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, unsigned long long value, unsigned long long minv, unsigned long long maxv)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, signed char value)
| Set the value for the selected tuple column. More...
StatusCode | column (const std::string &name, bool value)
| Set the value for selected tuple column. More...
StatusCode | column (const std::string &name, IOpaqueAddress *address)
| Put IOpaqueAddress in POOL-based NTuple. More...
StatusCode | column (IOpaqueAddress *address)
| Put IOpaqueAddress in NTuple. More...
template<typename Value , typename... Args>
StatusCode | columns (Value &&value, Args &&... args)
| Set the values for several columns simultaneously, for the same object Non-existing columns will be automatically created and appended to the ntuple. More...
StatusCode | fill (const char *format...)
| Set the values for several columns simultaneously. More...
template<typename ITERATOR1 , typename ITERATOR2 >
StatusCode | farray (const std::string &name, ITERATOR1 &&first, ITERATOR2 &&last, const std::string &length, size_t maxv)
| Add an indexed array (of type float) to N-tuple. More...
template<class DATA >
StatusCode | farray (const std::string &name, const DATA &data, const std::string &length, const size_t maxv)
| Add an indexed array (of type float) to N-tuple. More...
template<class FUNCTION , class ITERATOR >
StatusCode | farray (const std::string &name, const FUNCTION &function, ITERATOR first, ITERATOR last, const std::string &length, size_t maxv)
| Put an indexed array into LoKi-style N-Tuple. More...
template<typename FunIterator , typename DataIterator >
StatusCode | farray_impl (FunIterator first_item, FunIterator last_item, DataIterator first, DataIterator last, const std::string &length, size_t maxv)
| Put arbitrary number of functions from one data array into LoKi-style N-Tuple simultaneously (effective!) More...
template<typename DataIterator , template< typename, typename... > class Container = std::initializer_list, typename NamedFunction = std::pair<std::string, std::function<float( detail::const_ref_t<DataIterator> )>>, typename = std::enable_if_t<!std::is_convertible_v<Container<NamedFunction>, std::string>>>
StatusCode | farray (const Container< NamedFunction > &funs, DataIterator first, DataIterator last, const std::string &length, size_t maxv)
template<typename NamedFunctions , typename DataIterator , typename = std::enable_if_t<!std::is_convertible_v<NamedFunctions, std::string>>>
StatusCode | farray (const NamedFunctions &funs, DataIterator first, DataIterator last, const std::string &length, size_t maxv)
template<class FUNC1 , class FUNC2 , class Iterator >
StatusCode | farray (const std::string &name1, const FUNC1 &func1, const std::string &name2, const FUNC2 &func2, Iterator &&first, Iterator &&last, const std::string &length, size_t maxv)
| Put two functions from one data array into LoKi-style N-Tuple simultaneously (effective!) More...
template<class FUNC1 , class FUNC2 , class FUNC3 , class Iterator >
StatusCode | farray (const std::string &name1, const FUNC1 &func1, const std::string &name2, const FUNC2 &func2, const std::string &name3, const FUNC3 &func3, Iterator &&first, Iterator &&last, const std::string &length, size_t maxv)
| Put three functions from one data array into LoKi-style N-Tuple simultaneously (effective!) More...
template<class FUNC1 , class FUNC2 , class FUNC3 , class FUNC4 , class Iterator >
StatusCode | farray (const std::string &name1, const FUNC1 &func1, const std::string &name2, const FUNC2 &func2, const std::string &name3, const FUNC3 &func3, const std::string &name4, const FUNC4 &func4, Iterator &&first, Iterator &&last, const std::string &length, size_t maxv)
| Put four functions from one data array into LoKi-style N-Tuple simultaneously (effective!) More...
template<class MATRIX >
StatusCode | fmatrix (const std::string &name, const MATRIX &data, size_t rows, const MIndex &cols, const std::string &length, size_t maxv)
| Fill N-Tuple with data from variable-size matrix. More...
template<class DATA >
StatusCode | fmatrix (const std::string &name, DATA first, DATA last, const MIndex &cols, const std::string &length, size_t maxv)
| Fill N-Tuple with data from variable-size matrix. More...
template<class FUN , class DATA >
StatusCode | fmatrix (const std::string &name, FUN funF, FUN funL, DATA first, DATA last, const std::string &length, size_t maxv)
| fill N-Tuple with matrix of "direct-product" of "data-vector" [first,last) and "function-vector" [funF, funL) More...
template<class DATA >
StatusCode | array (const std::string &name, DATA first, DATA last)
| fill N-Tuple with fixed-size array More...
template<class ARRAY >
StatusCode | array (const std::string &name, const ARRAY &data, const MIndex &length)
| fill N-Tuple with fixed-size array More...
template<class ARRAY >
StatusCode | array (const std::string &name, const ARRAY &data)
| fill N-Tuple with fixed-size array More...
template<class MATRIX >
StatusCode | matrix (const std::string &name, const MATRIX &data, const MIndex &rows, const MIndex &cols)
| fill N-Tuple with fixed-size matrix More...
template<class TYPE >
StatusCode | column (const std::string &name, const ROOT::Math::LorentzVector< TYPE > &v)
| Useful shortcut to put LorentzVector directly into N-Tuple: More...
template<class TYPE , class TAG >
StatusCode | column (const std::string &name, const ROOT::Math::DisplacementVector3D< TYPE, TAG > &v)
| Useful shortcut to put 3D-Vector directly into N-Tuple: More...
template<class TYPE , class TAG >
StatusCode | column (const std::string &name, const ROOT::Math::PositionVector3D< TYPE, TAG > &v)
| Useful shortcut to put 3D-Vector directly into N-Tuple: More...
template<class TYPE , unsigned int D1, unsigned int D2, class REP >
StatusCode | matrix (const std::string &name, const ROOT::Math::SMatrix< TYPE, D1, D2, REP > &mtrx)
| shortcut to put Smatrix into N-tuple: More...
template<class KEY , class VALUE >
StatusCode | fmatrix (const std::string &name, const GaudiUtils::VectorMap< KEY, VALUE > &info, const std::string &length, const size_t maxv=100)
| shortcut to put "ExtraInfo" fields of major into N-Tuple More...
template<class TYPE >
StatusCode | put (const std::string &name, const TYPE *obj)
| The function allows to add almost arbitrary object into N-tuple. More...
StatusCode | write ()
| write a record to NTuple More...
const std::string & | name () const
| get the name More...
const NTuple::Tuple * | tuple () const
| provide the access to underlying Gaudi N-tuple More...
NTuple::Tuple * | tuple ()
| provide the access to underlying Gaudi N-tuple More...
const CLID & | clid () const
| accessor to the N-Tuple CLID More...
Tuples::Type | type () const
| accessor to the N-Tuple type More...
bool | columnWise () const
| column wise NTuple ? More...
bool | rowWise () const
| row wise NTuple ? More...
bool | evtColType () const
| Event collection ? More...
bool | valid () const
| valid pointer to tuple ? More...
bool | invalid () const
| invalid pointer to tuple ? More...
bool | addItem (std::string name, std::string type)
| add the item name into the list of known items More...
bool | goodItem (const std::string &name) const
| check the uniqueness of the name More...
const ItemMap & | items () const
| get the full list of booked items More...
virtual StatusCode | Error (const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
virtual StatusCode | Warning (const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0

## Protected Member Functions
| TupleObj (std::string name, NTuple::Tuple *tuple, const CLID &clid=CLID_ColumnWiseTuple, const Tuples::Type type=Tuples::NTUPLE)
| Standard constructor. More...

## Private Types
template<typename T >
using | ColumnStorage = GaudiUtils::HashMap< std::string, std::unique_ptr< T > >

## Private Member Functions
Int * | ints (const std::string &name, int minv, int maxv)
| get the column More...
FArray * | fArray (const std::string &name, Int *item)
| get the column More...
FArray * | fArray (const std::string &name, const MIndex &rows)
| get the column More...
Address * | addresses (const std::string &name)
| get the column More...
FMatrix * | fMatrix (const std::string &name, Int *item, const MIndex &cols)
| get the column More...
FMatrix * | fMatrix (const std::string &name, const MIndex &rows, const MIndex &cols)
| get the column More...
| TupleObj (const TupleObj &)=delete
| delete the copy constructor and assignment More...
TupleObj & | operator= (const TupleObj &)=delete

## Private Attributes
std::string | m_name
| name More...
NTuple::Tuple * | m_tuple
| tuple itself More...
CLID | m_clid
| tuple CLID More...
Tuples::Type | m_type
| tuple 'type' More...
size_t | m_refCount = 0
| reference counter More...
ColumnStorage< Bool > | m_bools
| the actual storage of all 'bool' columns More...
ColumnStorage< Char > | m_chars
| the actual storage of all 'Int' columns More...
ColumnStorage< UChar > | m_uchars
| the actual storage of all 'unsigned int' columns More...
ColumnStorage< Short > | m_shorts
| the actual storage of all 'Int' columns More...
ColumnStorage< UShort > | m_ushorts
| the actual storage of all 'unsigned int' columns More...
ColumnStorage< Int > | m_ints
| the actual storage of all 'Int' columns More...
ColumnStorage< UInt > | m_uints
| the actual storage of all 'unsigned int' columns More...
ColumnStorage< LongLong > | m_longlongs
| the actual storage of all 'long long' columns More...
ColumnStorage< ULongLong > | m_ulonglongs
| the actual storage of all 'unsigned long long' columns More...
ColumnStorage< Float > | m_floats
| the actual storage of all 'Float' columns More...
ColumnStorage< Double > | m_doubles
| the actual storage of all 'Double' columns More...
ColumnStorage< Address > | m_addresses
| the actual storage of all 'Address' columns More...
ColumnStorage< FArray > | m_farrays
| the actual storage of all 'FArray' columns More...
ColumnStorage< FArray > | m_arraysf
| the actual storage of all 'FArray' columns (fixed) More...
ColumnStorage< FMatrix > | m_fmatrices
| the actual storage of all 'FArray' columns More...
ColumnStorage< FMatrix > | m_matricesf
| the actual storage of all 'FMatrix' columns (fixed) More...
ItemMap | m_items
| all booked types: More...

## Detailed Description

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

The design and implementation are imported from LoKi package

One should not use lass TupleObj directly. The special handler Tuples::Tuple should be used instead, which is simultaneously 'proxy' an d'smart pointer' for real (and heavy!) TupleObj class.

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 Tuples::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 () ;
}

The 'array-like' columns are also supported ( see methods 'farray')

All these techniques could be easily combined in arbitrary ways

class TupleObj is an abstract class with 3 pure abstract functions Error and Warning , which need to be reimplemented in any 'concrete class. Helper classes TupleObjImp, ErrorHandler and functions createTupleObj and make_handler allows to create concrete objects 'on-flight'

Attention
  `long long` and `unsigned long long` types are not supported. One needs to convert the data into some other representation (e.g. as 2 separate fields, or perform the explicitly cast to `long`)

Author
  Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u

Date
  2004-01-23

Definition at line 199 of file TupleObj.h.

## Member Typedef Documentation

## ◆ Address

typedef NTuple::Item<IOpaqueAddress*> Tuples::TupleObj::Address

basic type for address items

Definition at line 236 of file TupleObj.h.

## ◆ Bool

typedef NTuple::Item<bool> Tuples::TupleObj::Bool

basic type for int items

Definition at line 203 of file TupleObj.h.

## ◆ Char

typedef NTuple::Item<char> Tuples::TupleObj::Char

basic type for int items

Definition at line 206 of file TupleObj.h.

## ◆ ColumnStorage

template<typename T >

using Tuples::TupleObj::ColumnStorage = GaudiUtils::HashMap<std::string, std::unique_ptr<T> >
| private

Definition at line 1948 of file TupleObj.h.

## ◆ Double

typedef NTuple::Item<double> Tuples::TupleObj::Double

basic type for double items

Definition at line 233 of file TupleObj.h.

## ◆ FArray

typedef NTuple::Array<float> Tuples::TupleObj::FArray

basic type for array of floats

Definition at line 239 of file TupleObj.h.

## ◆ Float

typedef NTuple::Item<float> Tuples::TupleObj::Float

basic type for float items

Definition at line 230 of file TupleObj.h.

## ◆ FMatrix

typedef NTuple::Matrix<float> Tuples::TupleObj::FMatrix

basic type for matrix of floats

Definition at line 242 of file TupleObj.h.

## ◆ Int

typedef NTuple::Item<int> Tuples::TupleObj::Int

basic type for int items

Definition at line 218 of file TupleObj.h.

## ◆ ItemMap

typedef std::map<std::string, std::string> Tuples::TupleObj::ItemMap

Definition at line 248 of file TupleObj.h.

## ◆ LongLong

typedef NTuple::Item<long long> Tuples::TupleObj::LongLong

basic type for unsigned long long items

Definition at line 224 of file TupleObj.h.

## ◆ MIndex

typedef unsigned short Tuples::TupleObj::MIndex

Definition at line 245 of file TupleObj.h.

## ◆ Short

typedef NTuple::Item<short> Tuples::TupleObj::Short

basic type for int items

Definition at line 212 of file TupleObj.h.

## ◆ UChar

typedef NTuple::Item<unsigned char> Tuples::TupleObj::UChar

basic type for unsigned int items

Definition at line 209 of file TupleObj.h.

## ◆ UInt

typedef NTuple::Item<unsigned int> Tuples::TupleObj::UInt

basic type for unsigned int items

Definition at line 221 of file TupleObj.h.

## ◆ ULongLong

typedef NTuple::Item<unsigned long long> Tuples::TupleObj::ULongLong

basic type for unsigned long long items

Definition at line 227 of file TupleObj.h.

## ◆ UShort

typedef NTuple::Item<unsigned short> Tuples::TupleObj::UShort

basic type for unsigned int items

Definition at line 215 of file TupleObj.h.

## Constructor & Destructor Documentation

## ◆ TupleObj() [1/2]

Tuples::TupleObj::TupleObj | ( | std::string | name,
|  | NTuple::Tuple * | tuple,
|  | const CLID & | clid = `CLID_ColumnWiseTuple`,
|  | const Tuples::Type | type = `Tuples::NTUPLE`
| ) |  |
| protected

Standard constructor.

See also
  NTuple:Tuple

Parameters

  name | name of the object
  tuple | pointer to standard Gaudi NTuple::Tuple object
  clid | CLID_ColumnWiseTuple or CLID_RowWiseTuple
  type | the type of the tuple

Definition at line 213 of file TupleObj.cpp.

215 : m_name( std::move( name ) ), m_tuple( tuple ), m_clid( clid ), m_type( type ) {
216 // make counts
217 Tuples::Local::s_InstanceCounter.increment( m_name );
218 }
Tuples::TupleObj::m_clid
CLID m_clid
tuple CLID
Definition: TupleObj.h:1938
Tuples::TupleObj::m_type
Tuples::Type m_type
tuple 'type'
Definition: TupleObj.h:1941
Tuples::TupleObj::clid
const CLID & clid() const
accessor to the N-Tuple CLID
Definition: TupleObj.h:1859
Tuples::TupleObj::type
Tuples::Type type() const
accessor to the N-Tuple type
Definition: TupleObj.h:1862
Tuples::TupleObj::m_name
std::string m_name
name
Definition: TupleObj.h:1932
Tuples::TupleObj::tuple
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1851
std::move
T move(T... args)
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::m_tuple
NTuple::Tuple * m_tuple
tuple itself
Definition: TupleObj.h:1935
Tuples::Local::Counter::increment
long increment(const std::string &object)
Definition: TupleObj.cpp:183

## ◆ ~TupleObj()

Tuples::TupleObj::~TupleObj | ( |  | ) |
| virtual

Definition at line 222 of file TupleObj.cpp.

222 {
223 // make counts
224 Tuples::Local::s_InstanceCounter.decrement( m_name );
225 }
Tuples::Local::Counter::decrement
long decrement(const std::string &object)
Definition: TupleObj.cpp:185
Tuples::TupleObj::m_name
std::string m_name
name
Definition: TupleObj.h:1932

## ◆ TupleObj() [2/2]

Tuples::TupleObj::TupleObj | ( | const TupleObj & |  | ) |
| private delete

delete the copy constructor and assignment

## Member Function Documentation

## ◆ addItem()

bool Tuples::TupleObj::addItem | ( | std::string | name,
|  | std::string | type
| ) |  |
| inline

add the item name into the list of known items

Parameters

  name | the name of the item
  type | the type of the item

Returns
  true if the name is indeed added

Definition at line 1886 of file TupleObj.h.

1886 {
1887 return m_items.emplace( std::move( name ), std::move( type ) ).second;
1888 }
Tuples::TupleObj::type
Tuples::Type type() const
accessor to the N-Tuple type
Definition: TupleObj.h:1862
Tuples::TupleObj::m_items
ItemMap m_items
all booked types:
Definition: TupleObj.h:1999
std::move
T move(T... args)
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
std::map::emplace
T emplace(T... args)

## ◆ addresses()

Address* Tuples::TupleObj::addresses | ( | const std::string & | name | ) |
| private

get the column

## ◆ array() [1/3]

template<class DATA >

StatusCode Tuples::TupleObj::array | ( | const std::string & | name,
|  | DATA | first,
|  | DATA | last
| ) |  |
| inline

fill N-Tuple with fixed-size array

SEQUENCE data( 10 ) ;
...
tuple -> array("data" ,
data.begin () ,
data.end () ) ;

Sequence may be of any objects, implicitly convertible into "float"

Parameters

  name | N-Tuple entry name
  first | begin-iterator for data sequence
  last | end-iterator for data sequence

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@l.nosp@m.app..nosp@m.in2p3.nosp@m..fr

Date
  2005-05-01

fill the array

Definition at line 1533 of file TupleObj.h.

1535 {
1536 if ( invalid() ) return ErrorCodes::InvalidTuple;
1537 if ( rowWise() ) return ErrorCodes::InvalidOperation;
1538
1539 // get the length (fixed!)
1540 auto length = std::distance( first, last );
1541
1542 // get the array itself
1543 FArray* var = fArray( name, length );
1544 if ( !var ) return ErrorCodes::InvalidColumn;
1545
1547 std::copy( first, last, std::begin( *var ) );
1548
1549 return StatusCode::SUCCESS;
1550 }
std::copy
T copy(T... args)
std::distance
T distance(T... args)
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
Tuples::ErrorCodes::InvalidOperation
Tuples::ErrorCodes::InvalidTuple
Tuples::ErrorCodes::InvalidColumn
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::fArray
FArray * fArray(const std::string &name, Int *item)
get the column
Definition: TupleObj.cpp:409
Tuples::TupleObj::rowWise
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1868
std::begin
T begin(T... args)
Tuples::TupleObj::FArray
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:239

## ◆ array() [2/3]

template<class ARRAY >

StatusCode Tuples::TupleObj::array | ( | const std::string & | name,
|  | const ARRAY & | data,
|  | const MIndex & | length
| ) |  |
| inline

fill N-Tuple with fixed-size array

"ARRAY" must support indexing operations: e.g it coudl be of type:

- std::vector<TYPE>
- CLHEP::HepVector, ...
- "TYPE"[n]

The content of array should be implicitly convertible to "float"

CLHEP::HepVector vct1(10) ;
...
tuple -> array ( "vct1" , vct1 , 10 ) ;
double vct2[40];
...
tuple -> array ( "vct2" , vct2 , 40 ) ;
long vct3[4];
...
tuple -> array ( "vct3" , vct4 , 4 ) ;
std::vector<long double> vct4(15) ;
...
tuple -> array ( "vct4" , vct4 , 15 ) ;

Parameters

  name | N-Tuple entry name
  data | data sequence
  length | data length (fixed!)

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@l.nosp@m.app..nosp@m.in2p3.nosp@m..fr

Date
  2005-05-01

Definition at line 1591 of file TupleObj.h.

1591 {
1592 using std::begin; // allow data to be eg. CLHEP::HepVector (which does not define HepVector::begin()!,
1593 // in which case ADL prefers CLHEP::begin (yah! at least they (now) use a namespace)
1594 // so one just to insure double* CLHEP::begin(CLHEP::HepVector& v) { return &v[0]; }
1595 // is visible when this function gets instantiated for CLHEP::HepVector...
1596 auto first = begin( data );
1597 return array( name, first, std::next( first, length ) );
1598 }
std::next
T next(T... args)
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::array
StatusCode array(const std::string &name, DATA first, DATA last)
fill N-Tuple with fixed-size array
Definition: TupleObj.h:1533
std::begin
T begin(T... args)
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:120

## ◆ array() [3/3]

template<class ARRAY >

StatusCode Tuples::TupleObj::array | ( | const std::string & | name,
|  | const ARRAY & | data
| ) |  |
| inline

fill N-Tuple with fixed-size array

"ARRAY" is any sequence, which supports ARRAY::begin() and ARRAY::end() protocol, e.g.

- std::vector<TYPE>
- ROOT::Math::SVector<double,15>

The content of array should be implicitly convertible to "float"

typedef std::vector<double> Seq ;
Seq data( 10 ) ;
for ( int i = 0 ; i < 10 ; ++i )
{
data[i] = ... ;
}
tuple -> array( "data" , data ) ;

Parameters

  name | N-Tupel entry name
  data | data sequence

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@l.nosp@m.app..nosp@m.in2p3.nosp@m..fr

Date
  2005-05-01

Definition at line 1631 of file TupleObj.h.

1631 {
1632 using std::begin;
1633 using std::end;
1634 return array( name, begin( data ), end( data ) );
1635 }
std::end
T end(T... args)
IOTest.end
def end
Definition: IOTest.py:112
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::array
StatusCode array(const std::string &name, DATA first, DATA last)
fill N-Tuple with fixed-size array
Definition: TupleObj.h:1533
std::begin
T begin(T... args)
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:120

## ◆ clid()

const CLID& Tuples::TupleObj::clid | ( |  | ) | const
| inline

accessor to the N-Tuple CLID

Definition at line 1859 of file TupleObj.h.

1859 { return m_clid; }
Tuples::TupleObj::m_clid
CLID m_clid
tuple CLID
Definition: TupleObj.h:1938

## ◆ column() [1/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | float | value
| ) |  |

Set the value for selected tuple column.

If column does not exist, it will be automatically created and appended to the tuple

//
const float mass = ... ;
tuple->column( "m", mass );
//

Parameters

  name | the name of the column
  value | the value of the variable

Returns
  status code

Definition at line 292 of file TupleObj.cpp.

292 {
293 return column_( this, m_floats, name, value );
294 }
Tuples::TupleObj::m_floats
ColumnStorage< Float > m_floats
the actual storage of all 'Float' columns
Definition: TupleObj.h:1978
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [2/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | double | value
| ) |  |

Set the value for the selected tuple column If the column does not exist, it will be automatically created and appended to the tuple.

//
const double mass = ... ;
tuple->column( "m", mass );
//

Warning
  the value is truncated to float

Parameters

  name | the name of the column
  value | the value of the variable

Returns
  status code

Definition at line 296 of file TupleObj.cpp.

296 {
297 return column_( this, m_doubles, name, value );
298 }
Tuples::TupleObj::m_doubles
ColumnStorage< Double > m_doubles
the actual storage of all 'Double' columns
Definition: TupleObj.h:1981
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [3/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | short | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

short number = ... ;
tuple -> column ( "num" , number );

Parameters

  name | the name of the column
  value | the value of the variable

Returns
  status code

Definition at line 317 of file TupleObj.cpp.

317 {
318 return column_( this, m_shorts, name, value );
319 }
Tuples::TupleObj::m_shorts
ColumnStorage< Short > m_shorts
the actual storage of all 'Int' columns
Definition: TupleObj.h:1960
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [4/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | short | value,
|  | short | minv,
|  | short | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

short number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 321 of file TupleObj.cpp.

321 {
322 return column_( this, m_shorts, name, value, minv, maxv );
323 }
Tuples::TupleObj::m_shorts
ColumnStorage< Short > m_shorts
the actual storage of all 'Int' columns
Definition: TupleObj.h:1960
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [5/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned short | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned short number = ... ;
tuple -> column ( "num" , number );

Parameters

  name | the name of the column
  value | the value of the variable

Returns
  status code

Definition at line 325 of file TupleObj.cpp.

325 {
326 return column_( this, m_ushorts, name, value );
327 }
Tuples::TupleObj::m_ushorts
ColumnStorage< UShort > m_ushorts
the actual storage of all 'unsigned int' columns
Definition: TupleObj.h:1963
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [6/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned short | value,
|  | unsigned short | minv,
|  | unsigned short | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned short number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 329 of file TupleObj.cpp.

330 {
331 return column_( this, m_ushorts, name, value, minv, maxv );
332 }
Tuples::TupleObj::m_ushorts
ColumnStorage< UShort > m_ushorts
the actual storage of all 'unsigned int' columns
Definition: TupleObj.h:1963
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [7/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | char | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

char number = ... ;
tuple -> column ( "num" , number );

Parameters

  name | the name of the column
  value | the value of the variable

Returns
  status code

Definition at line 300 of file TupleObj.cpp.

300 {
301 return column_( this, m_chars, name, value );
302 }
Tuples::TupleObj::m_chars
ColumnStorage< Char > m_chars
the actual storage of all 'Int' columns
Definition: TupleObj.h:1954
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [8/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | char | value,
|  | char | minv,
|  | char | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

char number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 304 of file TupleObj.cpp.

304 {
305 return column_( this, m_chars, name, value, minv, maxv );
306 }
Tuples::TupleObj::m_chars
ColumnStorage< Char > m_chars
the actual storage of all 'Int' columns
Definition: TupleObj.h:1954
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [9/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned char | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned char number = ... ;
tuple -> column ( "num" , number );

Parameters

  name | the name of the column
  value | the value of the variable

Returns
  status code

Definition at line 308 of file TupleObj.cpp.

308 {
309 return column_( this, m_uchars, name, value );
310 }
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::m_uchars
ColumnStorage< UChar > m_uchars
the actual storage of all 'unsigned int' columns
Definition: TupleObj.h:1957

## ◆ column() [10/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned char | value,
|  | unsigned char | minv,
|  | unsigned char | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned char number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 312 of file TupleObj.cpp.

313 {
314 return column_( this, m_uchars, name, value, minv, maxv );
315 }
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::m_uchars
ColumnStorage< UChar > m_uchars
the actual storage of all 'unsigned int' columns
Definition: TupleObj.h:1957

## ◆ column() [11/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | int | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

int number = ... ;
tuple->column("num", number );

Parameters

  name | name of the column
  value | value of the variable

Returns
  status code

Definition at line 334 of file TupleObj.cpp.

334 {
335 return column_( this, m_ints, name, value );
336 }
Tuples::TupleObj::m_ints
ColumnStorage< Int > m_ints
the actual storage of all 'Int' columns
Definition: TupleObj.h:1966
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [12/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | int | value,
|  | int | minv,
|  | int | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

int number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 338 of file TupleObj.cpp.

338 {
339 return column_( this, m_ints, name, value, minv, maxv );
340 }
Tuples::TupleObj::m_ints
ColumnStorage< Int > m_ints
the actual storage of all 'Int' columns
Definition: TupleObj.h:1966
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [13/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned int | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned int number = ... ;
tuple->column("num", number );

Parameters

  name | name of the column
  value | value of the variable

Returns
  status code

Definition at line 346 of file TupleObj.cpp.

346 {
347 return column_( this, m_uints, name, value );
348 }
Tuples::TupleObj::m_uints
ColumnStorage< UInt > m_uints
the actual storage of all 'unsigned int' columns
Definition: TupleObj.h:1969
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [14/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned int | value,
|  | unsigned int | minv,
|  | unsigned int | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned int number = ... ;
tuple->column("num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 350 of file TupleObj.cpp.

351 {
352 return column_( this, m_uints, name, value, minv, maxv );
353 }
Tuples::TupleObj::m_uints
ColumnStorage< UInt > m_uints
the actual storage of all 'unsigned int' columns
Definition: TupleObj.h:1969
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [15/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | long | value
| ) |  |

Set the value for the selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

long number = ... ;
tuple -> column ( "num", number );

Warning
  the value could be truncated to int

Parameters

  name | the name of the column
  value | the value of the variable

Returns
  status code

Definition at line 355 of file TupleObj.cpp.

355 {
356 Warning( "'long' has different sizes on 32/64 bit systems. Casting '" + name + "' to 'long long'",
357 StatusCode::SUCCESS )
358 .ignore();
359 return column( name, static_cast<long long>( value ) );
360 }
Tuples::TupleObj::column
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:292
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::Warning
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153

## ◆ column() [16/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | long | value,
|  | long | minv,
|  | long | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

long number = ... ;
tuple->column("num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 362 of file TupleObj.cpp.

362 {
363 Warning( "'long' has different sizes on 32/64 bit systems. Casting '" + name + "' to 'long long'",
364 StatusCode::SUCCESS )
365 .ignore();
366 return column( name, static_cast<long long>( value ), static_cast<long long>( minv ),
367 static_cast<long long>( maxv ) );
368 }
Tuples::TupleObj::column
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:292
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::Warning
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153

## ◆ column() [17/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned long | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned long number = ... ;
tuple -> column ( "num" , number );

Warning
  the value could be truncated to int

Parameters

  name | the name of the column
  value | the value of the variable

Returns
  status code

Definition at line 370 of file TupleObj.cpp.

370 {
371 Warning( "'unsigned long' has different sizes on 32/64 bit systems. Casting '" + name + "' to 'unsigned long long'",
372 StatusCode::SUCCESS )
373 .ignore();
374 return column( name, static_cast<unsigned long long>( value ) );
375 }
Tuples::TupleObj::column
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:292
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::Warning
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153

## ◆ column() [18/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned long | value,
|  | unsigned long | minv,
|  | unsigned long | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned long number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 377 of file TupleObj.cpp.

378 {
379 Warning( "'unsigned long' has different sizes on 32/64 bit systems. Casting '" + name + "' to 'unsigned long long'",
380 StatusCode::SUCCESS )
381 .ignore();
382 return column( name, static_cast<unsigned long long>( value ), static_cast<unsigned long long>( minv ),
383 static_cast<unsigned long long>( maxv ) );
384 }
Tuples::TupleObj::column
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:292
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::Warning
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153

## ◆ column() [19/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | long long | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

long long number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable

Returns
  status code

Definition at line 386 of file TupleObj.cpp.

386 {
387 return column_( this, m_longlongs, name, value );
388 }
Tuples::TupleObj::m_longlongs
ColumnStorage< LongLong > m_longlongs
the actual storage of all 'long long' columns
Definition: TupleObj.h:1972
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [20/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | long long | value,
|  | long long | minv,
|  | long long | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

long long number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 390 of file TupleObj.cpp.

390 {
391 return column_( this, m_longlongs, name, value, minv, maxv );
392 }
Tuples::TupleObj::m_longlongs
ColumnStorage< LongLong > m_longlongs
the actual storage of all 'long long' columns
Definition: TupleObj.h:1972
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [21/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned long long | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned long long number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable

Returns
  status code

Definition at line 394 of file TupleObj.cpp.

394 {
395 return column_( this, m_ulonglongs, name, value );
396 }
Tuples::TupleObj::m_ulonglongs
ColumnStorage< ULongLong > m_ulonglongs
the actual storage of all 'unsigned long long' columns
Definition: TupleObj.h:1975
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [22/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | unsigned long long | value,
|  | unsigned long long | minv,
|  | unsigned long long | maxv
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

unsigned long long number = ... ;
tuple->column( "num", number );

Parameters

  name | name of the column
  value | value of the variable
  minv | minimum value of the variable
  maxv | maximum value of the variable

Returns
  status code

Definition at line 398 of file TupleObj.cpp.

399 {
400 return column_( this, m_ulonglongs, name, value, minv, maxv );
401 }
Tuples::TupleObj::m_ulonglongs
ColumnStorage< ULongLong > m_ulonglongs
the actual storage of all 'unsigned long long' columns
Definition: TupleObj.h:1975
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [23/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | signed char | value
| ) |  |
| inline

Set the value for the selected tuple column.

If the column does not exist yet, it will be automatically created and appended to the tuple

signed char number = ... ;
tuple->column("num", number );

Parameters

  name | the name of the column
  value | the value of tve variable

Returns
  status code

Definition at line 703 of file TupleObj.h.

703 {
704 return column( name, value, std::numeric_limits<signed char>::min(), std::numeric_limits<signed char>::max() );
705 }
Tuples::TupleObj::column
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:292
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
std::numeric_limits

## ◆ column() [24/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | bool | value
| ) |  |

Set the value for selected tuple column.

If the column does not exist yet, it will be automatically create and appended to the tuple

tuple->column( "empty" , v.empty() );

Parameters

  name | the name of the column
  value | the value of the variable

Returns
  status code

Definition at line 403 of file TupleObj.cpp.

403 {
404 return column_( this, m_bools, name, value );
405 }
Tuples::TupleObj::m_bools
ColumnStorage< Bool > m_bools
the actual storage of all 'bool' columns
Definition: TupleObj.h:1951
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ column() [25/29]

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | IOpaqueAddress * | address
| ) |  |

Put IOpaqueAddress in POOL-based NTuple.

If the column does not exist, it will be automatically created and appended to the tuple.

IOpaqueAddress* address = ... ;
tuple->column( "Address", address );

Warning
  It has sense only for Event tag collection N-Tuples

Parameters

  name | name of the column ("Address" is a recommended convention!)
  address | IOpaqueAddress

Returns
  status code

Definition at line 280 of file TupleObj.cpp.

280 {
281 if ( !evtColType() ) return ErrorCodes::InvalidOperation;
282 if ( !address ) return Error( "column('" + name + "') IOpaqueAddress* is NULL!", ErrorCodes::InvalidObject );
283 return column_( this, m_addresses, name, address );
284 }
Tuples::TupleObj::m_addresses
ColumnStorage< Address > m_addresses
the actual storage of all 'Address' columns
Definition: TupleObj.h:1984
Tuples::TupleObj::evtColType
bool evtColType() const
Event collection ?
Definition: TupleObj.h:1871
Tuples::ErrorCodes::InvalidOperation
Tuples::TupleObj::Error
virtual StatusCode Error(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::ErrorCodes::InvalidObject

## ◆ column() [26/29]

StatusCode Tuples::TupleObj::column | ( | IOpaqueAddress * | address | ) |

Put IOpaqueAddress in NTuple.

If the column does not exist, it will be automatically created and appended to the tuple. The column name is set to be `"Address"`

IOpaqueAddress* address = ... ;
tuple->column ( address );

Warning
  It has sense only for Event tag collection N-Tuples

Parameters

  address | IOpaqueAddress

Returns
  status code

Definition at line 289 of file TupleObj.cpp.

289 { return column( "Address", address ); }
Tuples::TupleObj::column
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:292

## ◆ column() [27/29]

template<class TYPE >

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | const ROOT::Math::LorentzVector< TYPE > & | v
| ) |  |
| inline

Useful shortcut to put LorentzVector directly into N-Tuple:

const LHCb::Particle* B = ...
Tuple tuple = nTuple("My N-Tuple") ;
// put 4-vector of B-candidate into N-tuple:
tuple -> column ("B" , B->momentum() ) ;

Author
  Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u

Date
  2006-11-26

Definition at line 1722 of file TupleObj.h.

1722 {
1723 return columns( v, std::make_pair( name + "E", &ROOT::Math::LorentzVector<TYPE>::E ),
1724 std::make_pair( name + "X", &ROOT::Math::LorentzVector<TYPE>::Px ),
1725 std::make_pair( name + "Y", &ROOT::Math::LorentzVector<TYPE>::Py ),
1726 std::make_pair( name + "Z", &ROOT::Math::LorentzVector<TYPE>::Pz ) );
1727 }
std::make_pair
T make_pair(T... args)
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::columns
StatusCode columns(Value &&value, Args &&... args)
Set the values for several columns simultaneously, for the same object Non-existing columns will be a...
Definition: TupleObj.h:787

## ◆ column() [28/29]

template<class TYPE , class TAG >

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | const ROOT::Math::DisplacementVector3D< TYPE, TAG > & | v
| ) |  |
| inline

Useful shortcut to put 3D-Vector directly into N-Tuple:

const LHCb::Vertex* V = ...
Tuple tuple = nTuple("My N-Tuple") ;
// put vertex position into N-tuple:
tuple -> column ("B" , B->position() ) ;

Author
  Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u

Date
  2006-11-26

Definition at line 1746 of file TupleObj.h.

1746 {
1747 return this->columns( v, std::make_pair( name + "X", &ROOT::Math::DisplacementVector3D<TYPE, TAG>::X ),
1748 std::make_pair( name + "Y", &ROOT::Math::DisplacementVector3D<TYPE, TAG>::Y ),
1749 std::make_pair( name + "Z", &ROOT::Math::DisplacementVector3D<TYPE, TAG>::Z ) );
1750 }
std::make_pair
T make_pair(T... args)
ROOT::Math::DisplacementVector3D
Definition: IMagneticFieldSvc.h:18
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::columns
StatusCode columns(Value &&value, Args &&... args)
Set the values for several columns simultaneously, for the same object Non-existing columns will be a...
Definition: TupleObj.h:787

## ◆ column() [29/29]

template<class TYPE , class TAG >

StatusCode Tuples::TupleObj::column | ( | const std::string & | name,
|  | const ROOT::Math::PositionVector3D< TYPE, TAG > & | v
| ) |  |
| inline

Useful shortcut to put 3D-Vector directly into N-Tuple:

const LHCb::Vertex* V = ...
Tuple tuple = nTuple("My N-Tuple") ;
// put vertex position into N-tuple:
tuple -> column ("B" , B->position() ) ;

Author
  Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u

Date
  2006-11-26

Definition at line 1769 of file TupleObj.h.

1769 {
1770 return this->columns( v, std::make_pair( name + "X", &ROOT::Math::PositionVector3D<TYPE, TAG>::X ),
1771 std::make_pair( name + "Y", &ROOT::Math::PositionVector3D<TYPE, TAG>::Y ),
1772 std::make_pair( name + "Z", &ROOT::Math::PositionVector3D<TYPE, TAG>::Z ) );
1773 }
ROOT::Math::PositionVector3D
Definition: IMagneticFieldSvc.h:15
std::make_pair
T make_pair(T... args)
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::columns
StatusCode columns(Value &&value, Args &&... args)
Set the values for several columns simultaneously, for the same object Non-existing columns will be a...
Definition: TupleObj.h:787

## ◆ columns()

template<typename Value , typename... Args>

StatusCode Tuples::TupleObj::columns | ( | Value && | value,
|  | Args &&... | args
| ) |  |
| inline

Set the values for several columns simultaneously, for the same object Non-existing columns will be automatically created and appended to the ntuple.

Gaudi::XYZPoint p;
tuple->columns( p, std::make_pair( "X", &Gaudi::XYZPoint::X),
std::make_pair( "Y", &Gaudi::XYZPoint::Y),
std::make_pair( "Z", &Gaudi::XYZPoint::Z) );

Warning
  the type of column is set (implicitly) by the type returned by the 'callable' for that column, i.e. in the above the return type of eg. `Gaudi::XYZPoint::X()`

Author
  Gerhard Raven

Definition at line 787 of file TupleObj.h.

787 {
788 if ( sizeof...( Args ) == 0 ) return StatusCode::SUCCESS;
789 std::initializer_list<StatusCode> scs{
790 this->column( std::get<0>( args ), std::invoke( std::get<1>( args ), value ) )...};
791 return std::accumulate( std::next( begin( scs ) ), end( scs ), *begin( scs ),
792 []( StatusCode sc, const StatusCode& i ) {
793 i.ignore(); // make sure there are no unchecked StatusCodes...
794 return sc.isFailure() ? sc : i; // latch to the first non-success case
795 } );
796 }
Tuples::TupleObj::column
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:292
AvalancheSchedulerErrorTest.scs
scs
Definition: AvalancheSchedulerErrorTest.py:31
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
gaudirun.args
args
Definition: gaudirun.py:307
std::next
T next(T... args)
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
IOTest.end
def end
Definition: IOTest.py:112
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:120
std::accumulate
T accumulate(T... args)
std::initializer_list

## ◆ columnWise()

bool Tuples::TupleObj::columnWise | ( |  | ) | const
| inline

column wise NTuple ?

Definition at line 1865 of file TupleObj.h.

1865 { return CLID_ColumnWiseTuple == clid(); }
Tuples::TupleObj::clid
const CLID & clid() const
accessor to the N-Tuple CLID
Definition: TupleObj.h:1859

## ◆ Error()

virtual StatusCode Tuples::TupleObj::Error | ( | const std::string & | msg,
|  | const StatusCode | sc = `StatusCode::FAILURE`
| ) |  | const
| pure virtual

Implemented in Tuples::detail::TupleObjImp< HANDLER1, HANDLER2 >.

## ◆ evtColType()

bool Tuples::TupleObj::evtColType | ( |  | ) | const
| inline

Event collection ?

Definition at line 1871 of file TupleObj.h.

1871 { return Tuples::EVTCOL == type(); }
Tuples::TupleObj::type
Tuples::Type type() const
accessor to the N-Tuple type
Definition: TupleObj.h:1862
Tuples::EVTCOL
Definition: TupleObj.h:81

## ◆ farray() [1/8]

template<typename ITERATOR1 , typename ITERATOR2 >

StatusCode Tuples::TupleObj::farray | ( | const std::string & | name,
|  | ITERATOR1 && | first,
|  | ITERATOR2 && | last,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Add an indexed array (of type float) to N-tuple.

The method is not VERY efficient since it copies the data.

std::vector<double> values = ... ;
tuple->farray( "Values" , // item name
values.begin () , // begin of sequence
values.end () , // end of sequence
"Length" , // name of "length" item
10000 ) ;

The name of "length" item can be reused for several arrays. The last assignement "wins"

std::vector<double> val1 = ... ;
std::vector<double> val2 = ... ;
tuple->farray( "Val1" , // item name
val1.begin () , // begin of sequence
val1.end () , // end of sequence
"Length" , // name of "length" item
10000 ) ; // maximal length
tuple->farray( "Val2" , // item name
val2.begin () , // begin of sequence
val2.end () , // end of sequence
"Length" , // name of "length" item
10000 ) ; // maximal length

Any sequence `[first:last[` of objects which can be converted to type `float` can be used as input data, e.g. `std::vector<double>`, `std::vector<float>`, plain C-array, or whatever else

Parameters

  name | name of N-tuple item
  first | begin of data sequence
  last | end of data sequence
  length | name of "length" item
  maxv | maximal length of array

Definition at line 876 of file TupleObj.h.

877 {
878 return farray( name, detail::to_float, std::forward<ITERATOR1>( first ), std::forward<ITERATOR2>( last ), length,
879 maxv );
880 }
Tuples::TupleObj::farray
StatusCode farray(const std::string &name, ITERATOR1 &&first, ITERATOR2 &&last, const std::string &length, size_t maxv)
Add an indexed array (of type float) to N-tuple.
Definition: TupleObj.h:876
Tuples::detail::to_float
constexpr to_< float > to_float
Definition: TupleObj.h:68
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ farray() [2/8]

template<class DATA >

StatusCode Tuples::TupleObj::farray | ( | const std::string & | name,
|  | const DATA & | data,
|  | const std::string & | length,
|  | const size_t | maxv
| ) |  |
| inline

Add an indexed array (of type float) to N-tuple.

it is just a small adaptor for the previous method

std::vector<double> values = ... ;
tuple->farray( "Values" , // item name
values , // sequence
"Length" , // name of "length" item
10000 ) ;

The name of "length" item can be reused for several arrays. The last assignment "wins"

std::vector<double> val1 = ... ;
std::vector<double> val2 = ... ;
tuple->farray( "Val1" , // item name
val1 , // begin of sequence
"Length" , // name of "length" item
10000 ) ; // maximal length
tuple->farray( "Val2" , // item name
val2 , // begin of sequence
"Length" , // name of "length" item
10000 ) ; // maximal length

Any sequence which provides `begin()` and `end()` methods can be used.

Parameters

  name | name of N-tuple item
  data | data sequence
  length | name of "length" item
  maxv | maximal length of array

Definition at line 925 of file TupleObj.h.

925 {
926 return farray( name, std::begin( data ), std::end( data ), length, maxv );
927 }
std::end
T end(T... args)
Tuples::TupleObj::farray
StatusCode farray(const std::string &name, ITERATOR1 &&first, ITERATOR2 &&last, const std::string &length, size_t maxv)
Add an indexed array (of type float) to N-tuple.
Definition: TupleObj.h:876
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
std::begin
T begin(T... args)

## ◆ farray() [3/8]

template<class FUNCTION , class ITERATOR >

StatusCode Tuples::TupleObj::farray | ( | const std::string & | name,
|  | const FUNCTION & | function,
|  | ITERATOR | first,
|  | ITERATOR | last,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Put an indexed array into LoKi-style N-Tuple.

std::vector<double> data = ... ;
Tuple tuple = ntuple( "My Ntuple" );
tuple->farray( "data" , // data item name
sqrt , // "function" to be applied
data.begin () , // begin of data sequence
data.end () , // end of data sequence
"length" , // name of "length" tuple item
10000 ) ; // maximal array length

Since the method is templated, one can use arbitrary combinations of "sequences" and "functions", e.g. one can directly manipulate with complex objects. The only one thing is required - the result of `FUNCTION(*DATA)` formal operation MUST be convertible to type `float`

// some container of particles.
ParticleVector particles = ... ;
Tuple tuple = ntuple( "My Ntuple" );
// put the transverse momentum of all particles into N-Tuple
tuple->farray( "pt" , // data item name
PT , // function object
particles.begin () , // begin of data sequence
particles.end () , // end of data sequence
"num" , // name of "length" tuple item
10000 ) ; // maximal array length
// create the appropriate function object
Fun fun = Q / P ;
// put Q/P of all particles into N-Tuple
tuple->farray( "qp" , // data item name
fun , // function object
particles.begin () , // begin of data sequence
particles.end () , // end of data sequence
"num" , // name of "length" tuple item
10000 ) ; // maximal array length

Parameters

  name | tuple item name
  function | function to be applied
  first | begin of data sequence
  last | end of data sequence
  length | name of "length" tuple name
  maxv | maximal length of the array

Returns
  status code

Definition at line 992 of file TupleObj.h.

993 {
994 if ( invalid() ) return ErrorCodes::InvalidTuple;
995 if ( rowWise() ) return ErrorCodes::InvalidOperation;
996
997 // adjust the length
998 if ( std::distance( first, last ) > static_cast<std::ptrdiff_t>( maxv ) ) {
999 Warning( "farray('" + name + "'): array is overflow, skip extra entries" );
1000 last = std::next( first, maxv );
1001 }
1002
1003 // get the length item
1004 Int* len = ints( length, 0, maxv );
1005 if ( !len ) return ErrorCodes::InvalidColumn;
1006
1007 // adjust the length
1008 *len = std::distance( first, last );
1009
1010 // get the array itself
1011 FArray* var = fArray( name, len );
1012 if ( !var ) return ErrorCodes::InvalidColumn;
1013
1014 // fill the array
1015 std::transform( first, last, std::begin( *var ),
1016 [&]( auto&& i ) { return std::invoke( function, std::forward<decltype( i )>( i ) ); } );
1017
1018 return StatusCode::SUCCESS;
1019 }
Tuples::TupleObj::ints
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:342
std::distance
T distance(T... args)
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
Tuples::ErrorCodes::InvalidOperation
Tuples::TupleObj::Warning
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
std::next
T next(T... args)
Tuples::ErrorCodes::InvalidTuple
Tuples::ErrorCodes::InvalidColumn
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::fArray
FArray * fArray(const std::string &name, Int *item)
get the column
Definition: TupleObj.cpp:409
Tuples::TupleObj::rowWise
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1868
std::begin
T begin(T... args)
Tuples::TupleObj::Int
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:218
std::transform
T transform(T... args)
Tuples::TupleObj::FArray
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:239
std::forward
T forward(T... args)

## ◆ farray() [4/8]

template<typename DataIterator , template< typename, typename... > class Container = std::initializer_list, typename NamedFunction = std::pair<std::string, std::function<float( detail::const_ref_t<DataIterator> )>>, typename = std::enable_if_t<!std::is_convertible_v<Container<NamedFunction>, std::string>>>

StatusCode Tuples::TupleObj::farray | ( | const Container< NamedFunction > & | funs,
|  | DataIterator | first,
|  | DataIterator | last,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Definition at line 1093 of file TupleObj.h.

1094 {
1095 return farray_impl( funs.begin(), funs.end(), std::forward<DataIterator>( first ),
1096 std::forward<DataIterator>( last ), length, maxv );
1097 }
Tuples::TupleObj::farray_impl
StatusCode farray_impl(FunIterator first_item, FunIterator last_item, DataIterator first, DataIterator last, const std::string &length, size_t maxv)
Put arbitrary number of functions from one data array into LoKi-style N-Tuple simultaneously (effecti...
Definition: TupleObj.h:1049

## ◆ farray() [5/8]

template<typename NamedFunctions , typename DataIterator , typename = std::enable_if_t<!std::is_convertible_v<NamedFunctions, std::string>>>

StatusCode Tuples::TupleObj::farray | ( | const NamedFunctions & | funs,
|  | DataIterator | first,
|  | DataIterator | last,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Definition at line 1101 of file TupleObj.h.

1102 {
1103 return farray_impl( funs.begin(), funs.end(), std::forward<DataIterator>( first ),
1104 std::forward<DataIterator>( last ), length, maxv );
1105 }
Tuples::TupleObj::farray_impl
StatusCode farray_impl(FunIterator first_item, FunIterator last_item, DataIterator first, DataIterator last, const std::string &length, size_t maxv)
Put arbitrary number of functions from one data array into LoKi-style N-Tuple simultaneously (effecti...
Definition: TupleObj.h:1049

## ◆ farray() [6/8]

template<class FUNC1 , class FUNC2 , class Iterator >

StatusCode Tuples::TupleObj::farray | ( | const std::string & | name1,
|  | const FUNC1 & | func1,
|  | const std::string & | name2,
|  | const FUNC2 & | func2,
|  | Iterator && | first,
|  | Iterator && | last,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Put two functions from one data array into LoKi-style N-Tuple simultaneously (effective!)

std::vector<double> data = ... ;
Tuple tuple = ntuple( "My Ntuple" );
tuple->farray( "square_root" , // the first data item name
sqrt , // "func1" to be used
"sinus" , // the second data item name
sin , // "func2" to be used
data.begin () , // begin of data sequence
data.end () , // end of data sequence
"length" , // name of "length" tuple item
10000 ) ; // maximal array length

Parameters

  name1 | the first tuple item name
  func1 | the first function to be applied
  name2 | the second tuple item name
  func2 | the second function to be applied
  first | begin of data sequence
  last | end of data sequence
  length | name of "length" tuple name
  maxv | maximal length of the array

Returns
  status code

Definition at line 1139 of file TupleObj.h.

1140 {
1141 return farray( {{name1, std::cref( func1 )}, {name2, std::cref( func2 )}}, std::forward<Iterator>( first ),
1142 std::forward<Iterator>( last ), length, maxv );
1143 }
Tuples::TupleObj::farray
StatusCode farray(const std::string &name, ITERATOR1 &&first, ITERATOR2 &&last, const std::string &length, size_t maxv)
Add an indexed array (of type float) to N-tuple.
Definition: TupleObj.h:876
std::cref
T cref(T... args)

## ◆ farray() [7/8]

template<class FUNC1 , class FUNC2 , class FUNC3 , class Iterator >

StatusCode Tuples::TupleObj::farray | ( | const std::string & | name1,
|  | const FUNC1 & | func1,
|  | const std::string & | name2,
|  | const FUNC2 & | func2,
|  | const std::string & | name3,
|  | const FUNC3 & | func3,
|  | Iterator && | first,
|  | Iterator && | last,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Put three functions from one data array into LoKi-style N-Tuple simultaneously (effective!)

std::vector<double> data = ... ;
Tuple tuple = ntuple( "My Ntuple" );
tuple->farray( "square_root" , // the first data item name
sqrt , // "func1" to be used
"sinus" , // the second data item name
sin , // "func2" to be used
"tan" , // the third data item name
tan , // "func3" to be used
data.begin () , // begin of data sequence
data.end () , // end of data sequence
"length" , // name of "length" tuple item
10000 ) ; // maximal array length

Parameters

  name1 | the first tuple item name
  func1 | the first function to be applied
  name2 | the second tuple item name
  func2 | the second function to be applied
  name3 | the third tuple item name
  func3 | the third function to be applied
  first | begin of data sequence
  last | end of data sequence
  length | name of "length" tuple name
  maxv | maximal length of the array

Returns
  status code

Definition at line 1182 of file TupleObj.h.

1184 {
1185 return farray( {{name1, std::cref( func1 )}, {name2, std::cref( func2 )}, {name3, std::cref( func3 )}},
1186 std::forward<Iterator>( first ), std::forward<Iterator>( last ), length, maxv );
1187 }
Tuples::TupleObj::farray
StatusCode farray(const std::string &name, ITERATOR1 &&first, ITERATOR2 &&last, const std::string &length, size_t maxv)
Add an indexed array (of type float) to N-tuple.
Definition: TupleObj.h:876
std::cref
T cref(T... args)

## ◆ farray() [8/8]

template<class FUNC1 , class FUNC2 , class FUNC3 , class FUNC4 , class Iterator >

StatusCode Tuples::TupleObj::farray | ( | const std::string & | name1,
|  | const FUNC1 & | func1,
|  | const std::string & | name2,
|  | const FUNC2 & | func2,
|  | const std::string & | name3,
|  | const FUNC3 & | func3,
|  | const std::string & | name4,
|  | const FUNC4 & | func4,
|  | Iterator && | first,
|  | Iterator && | last,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Put four functions from one data array into LoKi-style N-Tuple simultaneously (effective!)

std::vector<double> data = ... ;
Tuple tuple = ntuple( "My Ntuple" );
tuple->farray( "square_root" , // the first data item name
sqrt , // "func1" to be used
"sinus" , // the second data item name
sin , // "func2" to be used
"tan" , // the third data item name
tan , // "func3" to be used
"tanh" , //
tanh , //
data.begin () , // begin of data sequence
data.end () , // end of data sequence
"length" , // name of "length" tuple item
10000 ) ; // maximal array length

Parameters

  name1 | the first tuple item name
  func1 | the first function to be applied
  name2 | the second tuple item name
  func2 | the second function to be applied
  name3 | the third tuple item name
  func3 | the third function to be applied
  name4 | the fourth tuple item name
  func4 | the fourth function to be applied
  first | begin of data sequence
  last | end of data sequence
  length | name of "length" tuple name
  maxv | maximal length of the array

Returns
  status code

Definition at line 1229 of file TupleObj.h.

1231 {
1232 return farray( {{name1, std::cref( func1 )},
1233 {name2, std::cref( func2 )},
1234 {name3, std::cref( func3 )},
1235 {name4, std::cref( func4 )}},
1236 std::forward<Iterator>( first ), std::forward<Iterator>( last ), length, maxv );
1237 }
Tuples::TupleObj::farray
StatusCode farray(const std::string &name, ITERATOR1 &&first, ITERATOR2 &&last, const std::string &length, size_t maxv)
Add an indexed array (of type float) to N-tuple.
Definition: TupleObj.h:876
std::cref
T cref(T... args)

## ◆ fArray() [1/2]

Tuples::TupleObj::FArray * Tuples::TupleObj::fArray | ( | const std::string & | name,
|  | Int * | item
| ) |  |
| private

get the column

Definition at line 409 of file TupleObj.cpp.

409 {
410 // existing array ?
411 auto found = m_farrays.find( name );
412 if ( m_farrays.end() != found ) return found->second.get();
413 return create_( this, m_farrays, name,
414 [&]( const std::string& n, FArray& i ) { return this->tuple()->addIndexedItem( n, *length, i ); } );
415 }
NTuple::Tuple::addIndexedItem
StatusCode addIndexedItem(const std::string &name, Item< INDEX > &index, Array< TYPE > &array, const RANGE low, const RANGE high)
Add an indexed Array of data to a column wise N tuple with a range.
Definition: NTuple.h:660
std::string
STL class.
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:210
Tuples::TupleObj::tuple
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1851
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::FArray
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:239
Tuples::TupleObj::m_farrays
ColumnStorage< FArray > m_farrays
the actual storage of all 'FArray' columns
Definition: TupleObj.h:1987

## ◆ fArray() [2/2]

Tuples::TupleObj::FArray * Tuples::TupleObj::fArray | ( | const std::string & | name,
|  | const MIndex & | rows
| ) |  |
| private

get the column

Definition at line 419 of file TupleObj.cpp.

419 {
420 // existing array ?
421 auto found = m_arraysf.find( name );
422 if ( m_arraysf.end() != found ) return found->second.get();
423 return create_( this, m_arraysf, name,
424 [&]( const std::string& n, FArray& i ) { return this->tuple()->addItem( n, rows, i ); } );
425 }
Tuples::TupleObj::m_arraysf
ColumnStorage< FArray > m_arraysf
the actual storage of all 'FArray' columns (fixed)
Definition: TupleObj.h:1990
std::string
STL class.
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:210
Tuples::TupleObj::tuple
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1851
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
NTuple::Tuple::addItem
StatusCode addItem(const std::string &name, Item< TYPE > &itm)
Add a scalar data item a N tuple.
Definition: NTuple.h:503
Tuples::TupleObj::FArray
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:239

## ◆ farray_impl()

template<typename FunIterator , typename DataIterator >

StatusCode Tuples::TupleObj::farray_impl | ( | FunIterator | first_item,
|  | FunIterator | last_item,
|  | DataIterator | first,
|  | DataIterator | last,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Put arbitrary number of functions from one data array into LoKi-style N-Tuple simultaneously (effective!)

std::vector<double> data = ... ;
Tuple tuple = ntuple( "My Ntuple" );
tuple->farray( { { "sqrt", sqrt }, // name of 1st column, and function to use for it
{ "sinus", sin } }, // name of the 2nd column, and corresponding function
data.begin () , // begin of data sequence
data.end () , // end of data sequence
"length" , // name of "length" tuple item
10000 ) ; // maximal array length

Parameters

  items | vector of pairs { name, callable }
  first | begin of data sequence
  last | end of data sequence
  length | name of "length" tuple name
  maxv | maximal length of the array

Returns
  status code

Definition at line 1049 of file TupleObj.h.

1050 {
1051 if ( invalid() ) return ErrorCodes::InvalidTuple;
1052 if ( rowWise() ) return ErrorCodes::InvalidOperation;
1053
1054 // adjust the length
1055 if ( std::distance( first, last ) > static_cast<std::ptrdiff_t>( maxv ) ) {
1056 using GaudiUtils::details::ostream_joiner;
1057 std::ostringstream os;
1058 ostream_joiner( os, first_item, last_item, ",",
1059 []( std::ostream& os, const auto& i ) -> decltype( auto ) { return os << i.first; } );
1060 Warning( "farray('" + os.str() + "'): array overflow, skipping extra entries" ).ignore();
1061 last = std::next( first, maxv );
1062 }
1063
1064 // get the length item
1065 Int* len = ints( length, 0, maxv );
1066 if ( !len ) return ErrorCodes::InvalidColumn;
1067
1068 // adjust the length
1069 *len = std::distance( first, last );
1070
1071 // get the arrays themselves
1072 std::vector<FArray*> vars;
1073 vars.reserve( std::distance( first_item, last_item ) );
1074 std::transform( first_item, last_item, std::back_inserter( vars ),
1075 [&]( const auto& item ) { return this->fArray( item.first, len ); } );
1076 if ( std::any_of( vars.begin(), vars.end(), []( const FArray* f ) { return !f; } ) ) {
1077 return ErrorCodes::InvalidColumn;
1078 }
1079
1080 // fill the array
1081 for ( size_t index = 0; first != last; ++first, ++index ) {
1082 auto item = first_item;
1083 for ( auto& var : vars ) { ( *var )[index] = std::invoke( ( item++ )->second, *first ); }
1084 }
1085
1086 return StatusCode::SUCCESS;
1087 }
Tuples::TupleObj::ints
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:342
std::distance
T distance(T... args)
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
std::vector::end
T end(T... args)
Tuples::ErrorCodes::InvalidOperation
Tuples::TupleObj::Warning
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
Gaudi::Units::second
constexpr double second
Definition: SystemOfUnits.h:121
std::next
T next(T... args)
Tuples::ErrorCodes::InvalidTuple
std::ostringstream
STL class.
Tuples::ErrorCodes::InvalidColumn
GaudiUtils::details::ostream_joiner
Stream & ostream_joiner(Stream &os, Iterator first, Iterator last, Separator sep, OutputElement output=OutputElement{})
Definition: SerializeSTL.h:37
Tuples::TupleObj::fArray
FArray * fArray(const std::string &name, Int *item)
get the column
Definition: TupleObj.cpp:409
std::vector
STL class.
Tuples::TupleObj::rowWise
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1868
std::vector::begin
T begin(T... args)
std::back_inserter
T back_inserter(T... args)
std::any_of
T any_of(T... args)
Tuples::TupleObj::Int
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:218
std::transform
T transform(T... args)
Tuples::TupleObj::FArray
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:239
std::ostream
STL class.
std::vector::reserve
T reserve(T... args)

## ◆ fill()

StatusCode Tuples::TupleObj::fill | ( | const char * | format... | ) |

Set the values for several columns simultaneously.

Number of columns is arbitrary, but it should not be less than number of blank or comma separated tags in `format` string. Non-existing columns will be automatically created and appended to the ntuple.

double r1 , r2 , r3 , r4 , mass , length ;
tuple->fill( "var1 var2, radius rad4 mass len" ,
r1, r2, r3, r4, mass, length);

Warning
  ALL columns are assumed to be of type `double`

Parameters

  format | blank-separated list of variables, followed by variable number of arguments.

Attention
  All variables are assumed to be `double` numbers

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

Date
  2002-10-30

decode arguments

Definition at line 256 of file TupleObj.cpp.

256 {
257 // check the underlying tuple
258 if ( invalid() ) return ErrorCodes::InvalidTuple;
259 // decode format string into tokens
260 auto tokens = tokenize( format, " ,;" );
262 va_list valist;
263 va_start( valist, format );
264 // loop over all tokens
265 StatusCode status = StatusCode::SUCCESS;
266 for ( auto token = tokens.cbegin(); tokens.cend() != token && status.isSuccess(); ++token ) {
267 double val = va_arg( valist, double );
268 status = column( *token, val );
269 if ( status.isFailure() ) Error( "fill(): Can not add column '" + *token + "' " );
270 }
271 // mandatory !!!
272 va_end( valist );
273 //
274 return status;
275 }
format
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:109
Tuples::TupleObj::column
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:292
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
Tuples::ErrorCodes::InvalidTuple
Tuples::TupleObj::Error
virtual StatusCode Error(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:267
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:130
va_list

## ◆ fmatrix() [1/4]

template<class MATRIX >

StatusCode Tuples::TupleObj::fmatrix | ( | const std::string & | name,
|  | const MATRIX & | data,
|  | size_t | rows,
|  | const MIndex & | cols,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Fill N-Tuple with data from variable-size matrix.

"Matrix" could be of any type, which supports data[iRow][iCol] indexing, e.g.

- std::vector<std::vector<TYPE> >
- CLHEP::HepMatrix, etc...

typedef std::vector<double> Row ;
typedef std::vector<Row> Mtrx ;
// number of columns (fixed!)
const size_t numCols = 5 ;
// maximal number of rows
const size_t maxRows = 300 ;
// number of rows (variable)
size_t numRows = .... ;
...
tuple -> fMatrix ( "mtrx" , // "column" name
mtrx , // matrix
numRows , // number of rows (variable!)
numCols , // number of columns (fixed)
"Length" , // name for "length" column
maxRows ) ; // maximal number of columns
CLHEP::HepMatrix mtrx = ... ;
...
tuple -> fMatrix ( "mtrx" , // "column" name
mtrx , // matrix
mtrx.num_row() , // number of rows (variable!)
mtrx.num_col() , // number of columns (fixed)
"Length" , // name for "length" column
maxRows ) ; // maximal number of columns

Parameters

  name | entry name in N-Tuple
  data | matrix itself
  rows | number of rows of matrix (variable)
  cols | number of columns of matrix (fixed)
  length | entry name in NTuple for number of matrix column
  maxv | maximal number of rows in matrix

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@l.nosp@m.app..nosp@m.in2p3.nosp@m..fr

Date
  2005-05-01

fill the matrix

Definition at line 1292 of file TupleObj.h.

1293 {
1294 if ( invalid() ) return ErrorCodes::InvalidTuple;
1295 if ( rowWise() ) return ErrorCodes::InvalidOperation;
1296
1297 // adjust the length
1298 if ( rows >= maxv ) {
1299 Warning( "fmatrix('" + name + "'): matrix is overflow, skip extra items" ).ignore();
1300 rows = ( 0 < maxv ) ? ( maxv - 1 ) : 0;
1301 }
1302
1303 // get the length item
1304 Int* len = ints( length, 0, maxv );
1305 if ( !len ) return ErrorCodes::InvalidColumn;
1306
1307 // adjust the length item
1308 *len = rows;
1309
1310 // get the array itself
1311 FMatrix* var = fMatrix( name, len, cols );
1312 if ( !var ) return ErrorCodes::InvalidColumn;
1313
1315 for ( size_t iCol = 0; iCol < cols; ++iCol ) {
1316 for ( MIndex iRow = 0; iRow < rows; ++iRow ) { ( *var )[iRow][iCol] = data[iRow][iCol]; }
1317 }
1318
1319 return StatusCode::SUCCESS;
1320 }
Tuples::TupleObj::ints
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:342
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
Tuples::TupleObj::MIndex
unsigned short MIndex
Definition: TupleObj.h:245
Tuples::ErrorCodes::InvalidOperation
Tuples::TupleObj::Warning
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
Tuples::ErrorCodes::InvalidTuple
Tuples::TupleObj::FMatrix
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:242
Tuples::ErrorCodes::InvalidColumn
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
Tuples::TupleObj::rowWise
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1868
Tuples::TupleObj::Int
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:218
Tuples::TupleObj::fMatrix
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:429

## ◆ fmatrix() [2/4]

template<class DATA >

StatusCode Tuples::TupleObj::fmatrix | ( | const std::string & | name,
|  | DATA | first,
|  | DATA | last,
|  | const MIndex & | cols,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

Fill N-Tuple with data from variable-size matrix.

"Matrix" could be of any type, which supports iteration from the first column to the last column and for each iterating column supports the indexing: (*first)[iCol]

typedef std::vector<double> Row ;
typedef std::vector<Row> Mtrx ;
// number of rows (fixed!)
const size_t numRows = 5 ;
// maximal number of columns
const size_t maxCols = 300 ;
// number of columns (variable)
size_t numCols = .... ;
...
tuple -> fMatrix ( "mtrx" , // entry name
mtrx.begin() , // first row of matrix
mtrx.end () , // last row of matrix
numCols , // number of columns (fixed!)
"Length" , // name for "length" column
maxRows ) ; // maximal number of rows

Parameters

  name | entry name in N-Tuple
  first | iterator for the first row of matrix
  last | iterator for the last row of matrix
  cols | number of columns for matrix (fixed!)
  length | entry name in NTuple for number of matrix column
  maxv | maximal number of rows in matrix

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@l.nosp@m.app..nosp@m.in2p3.nosp@m..fr

Date
  2005-05-01

fill the matrix

Definition at line 1359 of file TupleObj.h.

1360 {
1361 if ( invalid() ) return ErrorCodes::InvalidTuple;
1362 if ( rowWise() ) return ErrorCodes::InvalidOperation;
1363
1364 // adjust the length
1365 if ( first + maxv < last ) {
1366 Warning( "fmatrix('" + name + "'): matrix is overflow, skip extra items" ).ignore();
1367 last = first + maxv;
1368 }
1369
1370 // get the length item
1371 Int* len = ints( length, 0, maxv );
1372 if ( !len ) return ErrorCodes::InvalidColumn;
1373
1374 // adjust the length item
1375 *len = last - first;
1376
1377 // get the array itself
1378 FMatrix* var = fMatrix( name, len, cols );
1379 if ( !var ) return ErrorCodes::InvalidColumn;
1380
1382 size_t iRow = 0;
1383 for ( ; first != last; ++first ) {
1384 //
1385 for ( MIndex iCol = 0; iCol < cols; ++iCol ) { ( *var )[iRow][iCol] = ( *first )[iCol]; }
1386 //
1387 ++iRow;
1388 }
1389
1390 return StatusCode::SUCCESS;
1391 }
Tuples::TupleObj::ints
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:342
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
Tuples::TupleObj::MIndex
unsigned short MIndex
Definition: TupleObj.h:245
Tuples::ErrorCodes::InvalidOperation
Tuples::TupleObj::Warning
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
Tuples::ErrorCodes::InvalidTuple
Tuples::TupleObj::FMatrix
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:242
Tuples::ErrorCodes::InvalidColumn
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
Tuples::TupleObj::rowWise
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1868
Tuples::TupleObj::Int
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:218
Tuples::TupleObj::fMatrix
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:429

## ◆ fmatrix() [3/4]

template<class FUN , class DATA >

StatusCode Tuples::TupleObj::fmatrix | ( | const std::string & | name,
|  | FUN | funF,
|  | FUN | funL,
|  | DATA | first,
|  | DATA | last,
|  | const std::string & | length,
|  | size_t | maxv
| ) |  |
| inline

fill N-Tuple with matrix of "direct-product" of "data-vector" [first,last) and "function-vector" [funF, funL)

The elements of effective matrix are:

mtrx[iCol][iRow] = (*(funF+iRow))( *(first+iCol) )

Attention
  The length of data-vector is variable, while the length of "function" vector is fixed!

typedef std::vector<double> Array ;
Array array = ... ;
typedef double (*fun)( double ) ;
typedef std::vector<fun> Funs ;
Funs funs ;
funs.push_back( sin ) ;
funs.push_back( cos ) ;
funs.push_back( tan ) ;
funs.push_back( sinh ) ;
funs.push_back( cosh ) ;
funs.push_back( tanh ) ;
tuple->fmatrix ( "mtrx" , // N-Tuple entry name
funs.begin () , // begin of "function-vector"
funs.end () , // end of "function-vector"
array.begin () , // begin of "data-vector"
array.end () , // end of "data-vector"
"Length" ,
100 ) ;

This method is very convenient e.g. for using within LoKi:

typedef std::vector<Fun> VctFun ;
// sequence of Particles
Range particles = .... ;
// vector of functions:
VctFun funs ;
funs.push_back( E / GeV ) ;
funs.push_back( PX / GeV ) ;
funs.push_back( PY / GeV ) ;
funs.push_back( PZ / GeV ) ;
funs.push_back( PT / GeV ) ;
funs.push_back( M / GeV ) ;
funs.push_back( ID ) ;
// fill N-Tuple with information about each particle
tuple -> fmatrix ( "vars" ,
funs.begin () ,
funs.end () ,
particles.begin () ,
particles.end () ,
"nParts" ,
200 ) ;

Parameters

  name | entry name in N-Tuple
  funF | "begin"-iterator for vector of functions
  funL | "end"-iterator for vector of functions
  first | "begin"-iterator for vector of data
  last | "end"-iterator for vector of data
  length | entry name in NTuple for number of matrix column
  maxv | maximal number of rows in matrix

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@l.nosp@m.app..nosp@m.in2p3.nosp@m..fr

Date
  2005-05-01

fill the matrix

Definition at line 1472 of file TupleObj.h.

1473 {
1474 if ( invalid() ) return ErrorCodes::InvalidTuple;
1475 if ( rowWise() ) return ErrorCodes::InvalidOperation;
1476
1477 // adjust the length
1478 if ( std::distance( first, last ) > static_cast<std::ptrdiff_t>( maxv ) ) {
1479 Warning( "fmatrix('" + name + "'): matrix is overflow, skip extra items" ).ignore();
1480 last = std::next( first, maxv );
1481 }
1482
1483 // get the length item
1484 Int* len = ints( length, 0, maxv );
1485
1486 if ( !len ) return ErrorCodes::InvalidColumn;
1487
1488 // adjust the length item
1489 *len = std::distance( first, last );
1490
1491 // get the array itself
1492 auto cols = std::distance( funF, funL );
1493 FMatrix* var = fMatrix( name, len, cols );
1494 if ( !var ) return ErrorCodes::InvalidColumn;
1495
1497 size_t iRow = 0;
1498 for ( ; first != last; ++first ) {
1499 //
1500 for ( FUN fun = funF; fun < funL; ++fun ) { ( *var )[iRow][fun - funF] = std::invoke( *fun, *first ); }
1501 //
1502 ++iRow;
1503 }
1504
1505 return StatusCode::SUCCESS;
1506 }
Tuples::TupleObj::ints
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:342
std::distance
T distance(T... args)
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
Tuples::ErrorCodes::InvalidOperation
Tuples::TupleObj::Warning
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
std::next
T next(T... args)
Tuples::ErrorCodes::InvalidTuple
Tuples::TupleObj::FMatrix
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:242
Tuples::ErrorCodes::InvalidColumn
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
StatusCode::ignore
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
Tuples::TupleObj::rowWise
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1868
Tuples::TupleObj::Int
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:218
Tuples::TupleObj::fMatrix
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:429

## ◆ fmatrix() [4/4]

template<class KEY , class VALUE >

StatusCode Tuples::TupleObj::fmatrix | ( | const std::string & | name,
|  | const GaudiUtils::VectorMap< KEY, VALUE > & | info,
|  | const std::string & | length,
|  | const size_t | maxv = `100`
| ) |  |
| inline

shortcut to put "ExtraInfo" fields of major into N-Tuple

const LHCb::Particle* B = ...
Tuple tuple = nTuple("My N-Tuple") ;
// put the vector into N-Tuple:
tuple -> fmatrix ( "Info" , B->extraInfo() , "nInfo" , 100 ) ;

Author
  Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u

Date
  2006-11-26

Definition at line 1818 of file TupleObj.h.

1819 {
1820 using Info = std::pair<KEY, VALUE>;
1821 static const std::array<float ( * )( const Info& ), 2> fns = {
1822 {[]( const Info& i ) -> float { return i.first; }, []( const Info& i ) -> float { return i.second; }}};
1823 return fmatrix( name, begin( fns ), end( fns ), begin( info ), end( info ), length, maxv );
1824 }
Tuples::TupleObj::fmatrix
StatusCode fmatrix(const std::string &name, const MATRIX &data, size_t rows, const MIndex &cols, const std::string &length, size_t maxv)
Fill N-Tuple with data from variable-size matrix.
Definition: TupleObj.h:1292
IOTest.end
def end
Definition: IOTest.py:112
std::pair
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
std::array
STL class.
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:120

## ◆ fMatrix() [1/2]

Tuples::TupleObj::FMatrix * Tuples::TupleObj::fMatrix | ( | const std::string & | name,
|  | Int * | item,
|  | const MIndex & | cols
| ) |  |
| private

get the column

Definition at line 429 of file TupleObj.cpp.

430 {
431 // existing array ?
432 auto found = m_fmatrices.find( name );
433 if ( m_fmatrices.end() != found ) return found->second.get();
434 return create_( this, m_fmatrices, name, [&]( const std::string& n, FMatrix& i ) {
435 return this->tuple()->addIndexedItem( n, *length, cols, i );
436 } );
437 }
NTuple::Tuple::addIndexedItem
StatusCode addIndexedItem(const std::string &name, Item< INDEX > &index, Array< TYPE > &array, const RANGE low, const RANGE high)
Add an indexed Array of data to a column wise N tuple with a range.
Definition: NTuple.h:660
std::string
STL class.
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:210
Tuples::TupleObj::m_fmatrices
ColumnStorage< FMatrix > m_fmatrices
the actual storage of all 'FArray' columns
Definition: TupleObj.h:1993
Tuples::TupleObj::FMatrix
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:242
Tuples::TupleObj::tuple
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1851
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ fMatrix() [2/2]

Tuples::TupleObj::FMatrix * Tuples::TupleObj::fMatrix | ( | const std::string & | name,
|  | const MIndex & | rows,
|  | const MIndex & | cols
| ) |  |
| private

get the column

Definition at line 441 of file TupleObj.cpp.

442 {
443 // existing array ?
444 auto found = m_matricesf.find( name );
445 if ( m_matricesf.end() != found ) return found->second.get();
446 return create_( this, m_matricesf, name,
447 [&]( const std::string& n, FMatrix& i ) { return this->tuple()->addItem( n, rows, cols, i ); } );
448 }
std::string
STL class.
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:210
Tuples::TupleObj::FMatrix
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:242
Tuples::TupleObj::tuple
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1851
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::m_matricesf
ColumnStorage< FMatrix > m_matricesf
the actual storage of all 'FMatrix' columns (fixed)
Definition: TupleObj.h:1996
NTuple::Tuple::addItem
StatusCode addItem(const std::string &name, Item< TYPE > &itm)
Add a scalar data item a N tuple.
Definition: NTuple.h:503

## ◆ goodItem()

bool Tuples::TupleObj::goodItem | ( | const std::string & | name | ) | const
| inline

check the uniqueness of the name

Parameters

  name | the name of the item

Returns
  true if the name is indeed unique

Definition at line 1894 of file TupleObj.h.

1894 { return m_items.end() == m_items.find( name ); }
std::map::end
T end(T... args)
Tuples::TupleObj::m_items
ItemMap m_items
all booked types:
Definition: TupleObj.h:1999
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
std::map::find
T find(T... args)

## ◆ ints()

Tuples::TupleObj::Int * Tuples::TupleObj::ints | ( | const std::string & | name,
|  | int | minv,
|  | int | maxv
| ) |  |
| private

get the column

Definition at line 342 of file TupleObj.cpp.

342 {
343 return find_or_create( this, name, m_ints, minv, maxv );
344 }
Tuples::TupleObj::m_ints
ColumnStorage< Int > m_ints
the actual storage of all 'Int' columns
Definition: TupleObj.h:1966
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846

## ◆ invalid()

bool Tuples::TupleObj::invalid | ( |  | ) | const
| inline

invalid pointer to tuple ?

Definition at line 1877 of file TupleObj.h.

1877 { return !valid(); }
Tuples::TupleObj::valid
bool valid() const
valid pointer to tuple ?
Definition: TupleObj.h:1874

## ◆ items()

const ItemMap& Tuples::TupleObj::items | ( |  | ) | const
| inline

get the full list of booked items

Definition at line 1897 of file TupleObj.h.

1897 { return m_items; }
Tuples::TupleObj::m_items
ItemMap m_items
all booked types:
Definition: TupleObj.h:1999

## ◆ matrix() [1/2]

template<class MATRIX >

StatusCode Tuples::TupleObj::matrix | ( | const std::string & | name,
|  | const MATRIX & | data,
|  | const MIndex & | rows,
|  | const MIndex & | cols
| ) |  |
| inline

fill N-Tuple with fixed-size matrix

"MATRIX" must support indexing operations: data[iRow][iCol]

e.g it could be of type:

- std::vector<std::vector<TYPE> >
- CLHEP::HepMatrix , CLHEP::GenMatrix, etc ...
- "TYPE"[n][m]

The content of MATRIX should be implicitly convertible to "float"

CLHEP::HepMatrix mtrx1(3,20) ;
...
tuple -> matrix ( "m1" ,
mtrx1 ,
mtrx1.num_row() ,
mtrx1.num_col() ) ;
typedef std::vector<double> Row ;
typedef std:vector<Row> Mtrx ;
Mtrx mtrx2( 3 , Row(10) ) ;
...
tuple -> matrix ( "m2" ,
mtrx2 ,
3 ,
10 ) ;
float mtrx3[3][10] ;
...
tuple -> matrix ( "m3" ,
mtrx3 ,
3 ,
10 ) ;

Parameters

  name | N-Tuple entry name
  data | data source (matrix)
  cols | number of columns
  rows | number of rows

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@l.nosp@m.app..nosp@m.in2p3.nosp@m..fr

Date
  2005-05-01

fill the matrix

Definition at line 1688 of file TupleObj.h.

1688 {
1689 if ( invalid() ) return ErrorCodes::InvalidTuple;
1690 if ( rowWise() ) return ErrorCodes::InvalidOperation;
1691
1692 // get the matrix itself
1693 FMatrix* var = fMatrix( name, rows, cols );
1694 if ( !var ) return ErrorCodes::InvalidColumn;
1695
1697 for ( size_t iCol = 0; iCol < cols; ++iCol ) {
1698 for ( size_t iRow = 0; iRow < rows; ++iRow ) { ( *var )[iRow][iCol] = data[iRow][iCol]; }
1699 };
1700 return StatusCode::SUCCESS;
1701 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
Tuples::ErrorCodes::InvalidOperation
Tuples::ErrorCodes::InvalidTuple
Tuples::TupleObj::FMatrix
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:242
Tuples::ErrorCodes::InvalidColumn
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::rowWise
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1868
Tuples::TupleObj::fMatrix
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:429

## ◆ matrix() [2/2]

template<class TYPE , unsigned int D1, unsigned int D2, class REP >

StatusCode Tuples::TupleObj::matrix | ( | const std::string & | name,
|  | const ROOT::Math::SMatrix< TYPE, D1, D2, REP > & | mtrx
| ) |  |
| inline

shortcut to put Smatrix into N-tuple:

Author
  Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u

Date
  2006-11-26

fill the matrix

Definition at line 1784 of file TupleObj.h.

1784 {
1785 if ( invalid() ) return ErrorCodes::InvalidTuple;
1786 if ( rowWise() ) return ErrorCodes::InvalidOperation;
1787
1788 // get the matrix itself
1789 FMatrix* var = fMatrix( name, (MIndex)D1, (MIndex)D2 );
1790 if ( !var ) return ErrorCodes::InvalidColumn;
1791
1793 for ( size_t iCol = 0; iCol < D2; ++iCol ) {
1794 for ( size_t iRow = 0; iRow < D1; ++iRow ) { ( *var )[iRow][iCol] = mtrx( iRow, iCol ); }
1795 };
1796
1797 return StatusCode::SUCCESS;
1798 }
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
Tuples::TupleObj::MIndex
unsigned short MIndex
Definition: TupleObj.h:245
Tuples::ErrorCodes::InvalidOperation
Tuples::ErrorCodes::InvalidTuple
Tuples::TupleObj::FMatrix
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:242
Tuples::ErrorCodes::InvalidColumn
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::TupleObj::rowWise
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1868
Tuples::TupleObj::fMatrix
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:429

## ◆ name()

const std::string& Tuples::TupleObj::name | ( |  | ) | const
| inline

get the name

Definition at line 1846 of file TupleObj.h.

1846 { return m_name; }
Tuples::TupleObj::m_name
std::string m_name
name
Definition: TupleObj.h:1932

## ◆ operator=()

TupleObj& Tuples::TupleObj::operator= | ( | const TupleObj & |  | ) |
| private delete

## ◆ put()

template<class TYPE >

StatusCode Tuples::TupleObj::put | ( | const std::string & | name,
|  | const TYPE * | obj
| ) |  |
| inline

The function allows to add almost arbitrary object into N-tuple.

Attention
  it requires POOL persistency

Parameters

  name | column name
  obj | pointer to the object

Author
  Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u

Date
  2007-04-08

Definition at line 113 of file TuplePut.h.

113 {
114 if ( invalid() ) { return ErrorCodes::InvalidTuple; } // RETURN
115 if ( !evtColType() ) { return ErrorCodes::InvalidOperation; } // RETURN
116
117 // static block: The type description & the flag
118 static bool s_fail = false; // STATIC
119 static TClass* s_type = nullptr; // STATIC
120 // check the status
121 if ( s_fail ) {
122 return ErrorCodes::InvalidItem;
123 } // RETURN
124 else if ( !s_type ) {
125 s_type = TClass::GetClass( typeid( TYPE ) );
126 if ( !s_type ) {
127 s_fail = true;
128 return Error( " put('" + name + "'," + System::typeinfoName( typeid( TYPE ) ) + ") :Invalid ROOT Type",
129 ErrorCodes::InvalidItem ); // RETURN
130 }
131 }
132 // the local storage of items
133 static Tuples::ItemStore<TYPE*> s_map;
134 // get the variable by name:
135 auto item = s_map.getItem( name, this );
136 if ( !item ) { return Error( " put('" + name + "'): invalid item detected", ErrorCodes::InvalidItem ); }
137 // assign the item!
138 ( *item ) = const_cast<TYPE*>( obj ); // THATS ALL!!
139 //
140 return StatusCode::SUCCESS; // RETURN
141 }
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:298
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
Tuples::ErrorCodes::InvalidItem
Tuples::TupleObj::evtColType
bool evtColType() const
Event collection ?
Definition: TupleObj.h:1871
Tuples::ErrorCodes::InvalidOperation
Tuples::ErrorCodes::InvalidTuple
Tuples::TupleObj::Error
virtual StatusCode Error(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
Tuples::TupleObj::name
const std::string & name() const
get the name
Definition: TupleObj.h:1846
Tuples::ItemStore
Simple class, which represents the local storage of N-tuple items of the given type.
Definition: TuplePut.h:37
Tuples::ItemStore::getItem
NTuple::Item< VALUE > * getItem(const std::string &key, Tuples::TupleObj *tuple)
the only one method:
Definition: TuplePut.h:49

## ◆ rowWise()

bool Tuples::TupleObj::rowWise | ( |  | ) | const
| inline

row wise NTuple ?

Definition at line 1868 of file TupleObj.h.

1868 { return CLID_RowWiseTuple == clid(); }
Tuples::TupleObj::clid
const CLID & clid() const
accessor to the N-Tuple CLID
Definition: TupleObj.h:1859

## ◆ tuple() [1/2]

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

provide the access to underlying Gaudi N-tuple

Returns
  pointer to Gaudi N-tuple object

Definition at line 1851 of file TupleObj.h.

1851 { return m_tuple; }
Tuples::TupleObj::m_tuple
NTuple::Tuple * m_tuple
tuple itself
Definition: TupleObj.h:1935

## ◆ tuple() [2/2]

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

provide the access to underlying Gaudi N-tuple

Returns
  pointer to Gaudi N-tuple object

Definition at line 1856 of file TupleObj.h.

1856 { return m_tuple; }
Tuples::TupleObj::m_tuple
NTuple::Tuple * m_tuple
tuple itself
Definition: TupleObj.h:1935

## ◆ type()

Tuples::Type Tuples::TupleObj::type | ( |  | ) | const
| inline

accessor to the N-Tuple type

Definition at line 1862 of file TupleObj.h.

1862 { return m_type; }
Tuples::TupleObj::m_type
Tuples::Type m_type
tuple 'type'
Definition: TupleObj.h:1941

## ◆ valid()

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

valid pointer to tuple ?

Definition at line 1874 of file TupleObj.h.

1874 { return 0 != tuple(); }
Tuples::TupleObj::tuple
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1851

## ◆ Warning()

virtual StatusCode Tuples::TupleObj::Warning | ( | const std::string & | msg,
|  | const StatusCode | sc = `StatusCode::FAILURE`
| ) |  | const
| pure virtual

Implemented in Tuples::detail::TupleObjImp< HANDLER1, HANDLER2 >.

## ◆ write()

StatusCode Tuples::TupleObj::write | ( |  | ) |

write a record to NTuple

Returns
  status code

Definition at line 229 of file TupleObj.cpp.

229 {
230 if ( invalid() ) return ErrorCodes::InvalidTuple;
231 return tuple()->write();
232 }
INTuple::write
virtual StatusCode write()=0
Write record of the NTuple (Shortcut of writeRecord)
Tuples::TupleObj::invalid
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1877
Tuples::ErrorCodes::InvalidTuple
Tuples::TupleObj::tuple
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1851

## Member Data Documentation

## ◆ m_addresses

ColumnStorage<Address> Tuples::TupleObj::m_addresses
| mutable private

the actual storage of all 'Address' columns

Definition at line 1984 of file TupleObj.h.

## ◆ m_arraysf

ColumnStorage<FArray> Tuples::TupleObj::m_arraysf
| mutable private

the actual storage of all 'FArray' columns (fixed)

Definition at line 1990 of file TupleObj.h.

## ◆ m_bools

ColumnStorage<Bool> Tuples::TupleObj::m_bools
| mutable private

the actual storage of all 'bool' columns

Definition at line 1951 of file TupleObj.h.

## ◆ m_chars

ColumnStorage<Char> Tuples::TupleObj::m_chars
| mutable private

the actual storage of all 'Int' columns

Definition at line 1954 of file TupleObj.h.

## ◆ m_clid

CLID Tuples::TupleObj::m_clid
| private

tuple CLID

Definition at line 1938 of file TupleObj.h.

## ◆ m_doubles

ColumnStorage<Double> Tuples::TupleObj::m_doubles
| mutable private

the actual storage of all 'Double' columns

Definition at line 1981 of file TupleObj.h.

## ◆ m_farrays

ColumnStorage<FArray> Tuples::TupleObj::m_farrays
| mutable private

the actual storage of all 'FArray' columns

Definition at line 1987 of file TupleObj.h.

## ◆ m_floats

ColumnStorage<Float> Tuples::TupleObj::m_floats
| mutable private

the actual storage of all 'Float' columns

Definition at line 1978 of file TupleObj.h.

## ◆ m_fmatrices

ColumnStorage<FMatrix> Tuples::TupleObj::m_fmatrices
| mutable private

the actual storage of all 'FArray' columns

Definition at line 1993 of file TupleObj.h.

## ◆ m_ints

ColumnStorage<Int> Tuples::TupleObj::m_ints
| mutable private

the actual storage of all 'Int' columns

Definition at line 1966 of file TupleObj.h.

## ◆ m_items

ItemMap Tuples::TupleObj::m_items
| private

all booked types:

Definition at line 1999 of file TupleObj.h.

## ◆ m_longlongs

ColumnStorage<LongLong> Tuples::TupleObj::m_longlongs
| mutable private

the actual storage of all 'long long' columns

Definition at line 1972 of file TupleObj.h.

## ◆ m_matricesf

ColumnStorage<FMatrix> Tuples::TupleObj::m_matricesf
| mutable private

the actual storage of all 'FMatrix' columns (fixed)

Definition at line 1996 of file TupleObj.h.

## ◆ m_name

std::string Tuples::TupleObj::m_name
| private

name

Definition at line 1932 of file TupleObj.h.

## ◆ m_refCount

size_t Tuples::TupleObj::m_refCount = 0
| private

reference counter

Definition at line 1944 of file TupleObj.h.

## ◆ m_shorts

ColumnStorage<Short> Tuples::TupleObj::m_shorts
| mutable private

the actual storage of all 'Int' columns

Definition at line 1960 of file TupleObj.h.

## ◆ m_tuple

NTuple::Tuple* Tuples::TupleObj::m_tuple
| private

tuple itself

Definition at line 1935 of file TupleObj.h.

## ◆ m_type

Tuples::Type Tuples::TupleObj::m_type
| private

tuple 'type'

Definition at line 1941 of file TupleObj.h.

## ◆ m_uchars

ColumnStorage<UChar> Tuples::TupleObj::m_uchars
| mutable private

the actual storage of all 'unsigned int' columns

Definition at line 1957 of file TupleObj.h.

## ◆ m_uints

ColumnStorage<UInt> Tuples::TupleObj::m_uints
| mutable private

the actual storage of all 'unsigned int' columns

Definition at line 1969 of file TupleObj.h.

## ◆ m_ulonglongs

ColumnStorage<ULongLong> Tuples::TupleObj::m_ulonglongs
| mutable private

the actual storage of all 'unsigned long long' columns

Definition at line 1975 of file TupleObj.h.

## ◆ m_ushorts

ColumnStorage<UShort> Tuples::TupleObj::m_ushorts
| mutable private

the actual storage of all 'unsigned int' columns

Definition at line 1963 of file TupleObj.h.

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

- GaudiAlg/GaudiAlg/TupleObj.h
- GaudiAlg/GaudiAlg/TuplePut.h
- GaudiAlg/src/lib/TupleObj.cpp