The Gaudi Framework  v30r3 (a5ef0a68)
Tuples::TupleObj Class Referenceabstract

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

#include <GaudiAlg/TupleObj.h>

Inheritance diagram for Tuples::TupleObj:
Collaboration diagram for Tuples::TupleObj:

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::stringItemMap
 

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<Container<NamedFunction>, std::string>::value>>
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<NamedFunctions, std::string>::value>>
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::stringname () const
 get the name More...
 
const NTuple::Tupletuple () const
 provide the access to underlying Gaudi N-tuple More...
 
NTuple::Tupletuple ()
 provide the access to underlying Gaudi N-tuple More...
 
const CLIDclid () 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 ItemMapitems () 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

Intints (const std::string &name, int minv, int maxv)
 get the column More...
 
FArrayfArray (const std::string &name, Int *item)
 get the column More...
 
FArrayfArray (const std::string &name, const MIndex &rows)
 get the column More...
 
Addressaddresses (const std::string &name)
 get the column More...
 
FMatrixfMatrix (const std::string &name, Int *item, const MIndex &cols)
 get the column More...
 
FMatrixfMatrix (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...
 
TupleObjoperator= (const TupleObj &)=delete
 

Private Attributes

std::string m_name
 name More...
 
NTuple::Tuplem_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< Boolm_bools
 the actual storage of all 'bool' columns More...
 
ColumnStorage< Charm_chars
 the actual storage of all 'Int' columns More...
 
ColumnStorage< UCharm_uchars
 the actual storage of all 'unsigned int' columns More...
 
ColumnStorage< Shortm_shorts
 the actual storage of all 'Int' columns More...
 
ColumnStorage< UShortm_ushorts
 the actual storage of all 'unsigned int' columns More...
 
ColumnStorage< Intm_ints
 the actual storage of all 'Int' columns More...
 
ColumnStorage< UIntm_uints
 the actual storage of all 'unsigned int' columns More...
 
ColumnStorage< LongLongm_longlongs
 the actual storage of all 'longlong' columns More...
 
ColumnStorage< ULongLongm_ulonglongs
 the actual storage of all 'ulonglong' columns More...
 
ColumnStorage< Floatm_floats
 the actual storage of all 'Float' columns More...
 
ColumnStorage< Doublem_doubles
 the actual storage of all 'Double' columns More...
 
ColumnStorage< Addressm_addresses
 the actual storage of all 'Address' columns More...
 
ColumnStorage< FArraym_farrays
 the actual storage of all 'FArray' columns More...
 
ColumnStorage< FArraym_arraysf
 the actual storage of all 'FArray' columns (fixed) More...
 
ColumnStorage< FMatrixm_fmatrices
 the actual storage of all 'FArray' columns More...
 
ColumnStorage< FMatrixm_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 204 of file TupleObj.h.

Member Typedef Documentation

basic type for address items

Definition at line 242 of file TupleObj.h.

basic type for int items

Definition at line 209 of file TupleObj.h.

basic type for int items

Definition at line 212 of file TupleObj.h.

Definition at line 1989 of file TupleObj.h.

basic type for double items

Definition at line 239 of file TupleObj.h.

basic type for array of floats

Definition at line 245 of file TupleObj.h.

basic type for float items

Definition at line 236 of file TupleObj.h.

basic type for matrix of floats

Definition at line 248 of file TupleObj.h.

basic type for int items

Definition at line 224 of file TupleObj.h.

basic type for unsigned long long items

Definition at line 230 of file TupleObj.h.

typedef unsigned short Tuples::TupleObj::MIndex

Definition at line 251 of file TupleObj.h.

basic type for int items

Definition at line 218 of file TupleObj.h.

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

basic type for unsigned int items

Definition at line 215 of file TupleObj.h.

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

basic type for unsigned int items

Definition at line 227 of file TupleObj.h.

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

basic type for unsigned long long items

Definition at line 233 of file TupleObj.h.

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

basic type for unsigned int items

Definition at line 221 of file TupleObj.h.

Constructor & Destructor Documentation

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
namename of the object
tuplepointer to standard Gaudi NTuple::Tuple object
clidCLID_ColumnWiseTuple or CLID_RowWiseTuple
typethe type of the tuple

Definition at line 226 of file TupleObj.cpp.

228  : m_name( std::move( name ) ),
229  m_tuple( tuple ),
230  m_clid( clid ),
231  m_type( type )
232 {
233  // make counts
234  Tuples::Local::s_InstanceCounter.increment( m_name );
235 }
CLID m_clid
tuple CLID
Definition: TupleObj.h:1979
Tuples::Type m_type
tuple &#39;type&#39;
Definition: TupleObj.h:1982
std::string m_name
name
Definition: TupleObj.h:1973
T move(T...args)
NTuple::Tuple * m_tuple
tuple itself
Definition: TupleObj.h:1976
Tuples::Type type() const
accessor to the N-Tuple type
Definition: TupleObj.h:1902
const CLID & clid() const
accessor to the N-Tuple CLID
Definition: TupleObj.h:1899
long increment(const std::string &object)
Definition: TupleObj.cpp:195
Tuples::TupleObj::~TupleObj ( )
virtual

Definition at line 239 of file TupleObj.cpp.

240 {
241  // make counts
242  Tuples::Local::s_InstanceCounter.decrement( m_name );
243 }
long decrement(const std::string &object)
Definition: TupleObj.cpp:197
std::string m_name
name
Definition: TupleObj.h:1973
Tuples::TupleObj::TupleObj ( const TupleObj )
privatedelete

delete the copy constructor and assignment

Member Function Documentation

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

add the item name into the list of known items

Parameters
namethe name of the item
typethe type of the item
Returns
true if the name is indeed added

Definition at line 1926 of file TupleObj.h.

1927  {
1928  return m_items.emplace( std::move( name ), std::move( type ) ).second;
1929  }
ItemMap m_items
all booked types:
Definition: TupleObj.h:2040
T move(T...args)
T emplace(T...args)
Address* Tuples::TupleObj::addresses ( const std::string name)
private

get the column

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
nameN-Tuple entry name
firstbegin-iterator for data sequence
lastend-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 1561 of file TupleObj.h.

1563  {
1564  if ( invalid() ) return ErrorCodes::InvalidTuple;
1565  if ( rowWise() ) return ErrorCodes::InvalidOperation;
1566 
1567  // get the length (fixed!)
1568  auto length = std::distance( first, last );
1569 
1570  // get the array itself
1571  FArray* var = fArray( name, length );
1572  if ( !var ) return ErrorCodes::InvalidColumn;
1573 
1575  std::copy( first, last, std::begin( *var ) );
1576 
1577  return StatusCode::SUCCESS;
1578  }
T copy(T...args)
T distance(T...args)
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1908
FArray * fArray(const std::string &name, Int *item)
get the column
Definition: TupleObj.cpp:455
T begin(T...args)
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:245
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 ) ;
...
tuple -> array ( "vct4" , vct4 , 15 ) ;
Parameters
nameN-Tuple entry name
datadata sequence
lengthdata 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 1619 of file TupleObj.h.

1620  {
1621  using std::begin; // allow data to be eg. CLHEP::HepVector (which does not define HepVector::begin()!,
1622  // in which case ADL prefers CLHEP::begin (yah! at least they (now) use a namespace)
1623  // so one just to insure double* CLHEP::begin(CLHEP::HepVector& v) { return &v[0]; }
1624  // is visible when this function gets instantiated for CLHEP::HepVector...
1625  auto first = begin( data );
1626  return array( name, first, std::next( first, length ) );
1627  }
T next(T...args)
StatusCode array(const std::string &name, DATA first, DATA last)
fill N-Tuple with fixed-size array
Definition: TupleObj.h:1561
T begin(T...args)
AttribStringParser::Iterator begin(const AttribStringParser &parser)
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
nameN-Tupel entry name
datadata 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 1660 of file TupleObj.h.

1661  {
1662  using std::begin;
1663  using std::end;
1664  return array( name, begin( data ), end( data ) );
1665  }
T end(T...args)
StatusCode array(const std::string &name, DATA first, DATA last)
fill N-Tuple with fixed-size array
Definition: TupleObj.h:1561
T begin(T...args)
AttribStringParser::Iterator begin(const AttribStringParser &parser)
const CLID& Tuples::TupleObj::clid ( ) const
inline

accessor to the N-Tuple CLID

Definition at line 1899 of file TupleObj.h.

1899 { return m_clid; }
CLID m_clid
tuple CLID
Definition: TupleObj.h:1979
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
namethe name of the column
valuethe value of the variable
Returns
status code

Definition at line 315 of file TupleObj.cpp.

316 {
317  return column_( this, m_floats, name, value );
318 }
ColumnStorage< Float > m_floats
the actual storage of all &#39;Float&#39; columns
Definition: TupleObj.h:2019
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
namethe name of the column
valuethe value of the variable
Returns
status code

Definition at line 320 of file TupleObj.cpp.

321 {
322  return column_( this, m_doubles, name, value );
323 }
ColumnStorage< Double > m_doubles
the actual storage of all &#39;Double&#39; columns
Definition: TupleObj.h:2022
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
namethe name of the column
valuethe value of the variable
Returns
status code

Definition at line 346 of file TupleObj.cpp.

347 {
348  return column_( this, m_shorts, name, value );
349 }
ColumnStorage< Short > m_shorts
the actual storage of all &#39;Int&#39; columns
Definition: TupleObj.h:2001
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 351 of file TupleObj.cpp.

352 {
353  return column_( this, m_shorts, name, value, minv, maxv );
354 }
ColumnStorage< Short > m_shorts
the actual storage of all &#39;Int&#39; columns
Definition: TupleObj.h:2001
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
namethe name of the column
valuethe value of the variable
Returns
status code

Definition at line 356 of file TupleObj.cpp.

357 {
358  return column_( this, m_ushorts, name, value );
359 }
ColumnStorage< UShort > m_ushorts
the actual storage of all &#39;unsigned int&#39; columns
Definition: TupleObj.h:2004
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 361 of file TupleObj.cpp.

363 {
364  return column_( this, m_ushorts, name, value, minv, maxv );
365 }
ColumnStorage< UShort > m_ushorts
the actual storage of all &#39;unsigned int&#39; columns
Definition: TupleObj.h:2004
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
namethe name of the column
valuethe value of the variable
Returns
status code

Definition at line 325 of file TupleObj.cpp.

326 {
327  return column_( this, m_chars, name, value );
328 }
ColumnStorage< Char > m_chars
the actual storage of all &#39;Int&#39; columns
Definition: TupleObj.h:1995
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 330 of file TupleObj.cpp.

331 {
332  return column_( this, m_chars, name, value, minv, maxv );
333 }
ColumnStorage< Char > m_chars
the actual storage of all &#39;Int&#39; columns
Definition: TupleObj.h:1995
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
namethe name of the column
valuethe value of the variable
Returns
status code

Definition at line 335 of file TupleObj.cpp.

336 {
337  return column_( this, m_uchars, name, value );
338 }
ColumnStorage< UChar > m_uchars
the actual storage of all &#39;unsigned int&#39; columns
Definition: TupleObj.h:1998
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 340 of file TupleObj.cpp.

342 {
343  return column_( this, m_uchars, name, value, minv, maxv );
344 }
ColumnStorage< UChar > m_uchars
the actual storage of all &#39;unsigned int&#39; columns
Definition: TupleObj.h:1998
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
namename of the column
valuevalue of the variable
Returns
status code

Definition at line 367 of file TupleObj.cpp.

368 {
369  return column_( this, m_ints, name, value );
370 }
ColumnStorage< Int > m_ints
the actual storage of all &#39;Int&#39; columns
Definition: TupleObj.h:2007
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 372 of file TupleObj.cpp.

373 {
374  return column_( this, m_ints, name, value, minv, maxv );
375 }
ColumnStorage< Int > m_ints
the actual storage of all &#39;Int&#39; columns
Definition: TupleObj.h:2007
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
namename of the column
valuevalue of the variable
Returns
status code

Definition at line 382 of file TupleObj.cpp.

383 {
384  return column_( this, m_uints, name, value );
385 }
ColumnStorage< UInt > m_uints
the actual storage of all &#39;unsigned int&#39; columns
Definition: TupleObj.h:2010
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 387 of file TupleObj.cpp.

388 {
389  return column_( this, m_uints, name, value, minv, maxv );
390 }
ColumnStorage< UInt > m_uints
the actual storage of all &#39;unsigned int&#39; columns
Definition: TupleObj.h:2010
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
namethe name of the column
valuethe value of the variable
Returns
status code

Definition at line 392 of file TupleObj.cpp.

393 {
394  Warning( "'long' has different sizes on 32/64 bit systems. Casting '" + name + "' to 'long long'",
396  .ignore();
397  return column( name, static_cast<long long>( value ) );
398 }
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:315
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:165
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 400 of file TupleObj.cpp.

401 {
402  Warning( "'long' has different sizes on 32/64 bit systems. Casting '" + name + "' to 'long long'",
404  .ignore();
405  return column( name, static_cast<long long>( value ), static_cast<long long>( minv ),
406  static_cast<long long>( maxv ) );
407 }
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:315
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:165
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
namethe name of the column
valuethe value of the variable
Returns
status code

Definition at line 409 of file TupleObj.cpp.

410 {
411  Warning( "'unsigned long' has different sizes on 32/64 bit systems. Casting '" + name + "' to 'unsigned long long'",
413  .ignore();
414  return column( name, static_cast<unsigned long long>( value ) );
415 }
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:315
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:165
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 417 of file TupleObj.cpp.

419 {
420  Warning( "'unsigned long' has different sizes on 32/64 bit systems. Casting '" + name + "' to 'unsigned long long'",
422  .ignore();
423  return column( name, static_cast<unsigned long long>( value ), static_cast<unsigned long long>( minv ),
424  static_cast<unsigned long long>( maxv ) );
425 }
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:315
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:165
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
namename of the column
valuevalue of the variable
Returns
status code

Definition at line 427 of file TupleObj.cpp.

428 {
429  return column_( this, m_longlongs, name, value );
430 }
ColumnStorage< LongLong > m_longlongs
the actual storage of all &#39;longlong&#39; columns
Definition: TupleObj.h:2013
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 432 of file TupleObj.cpp.

433 {
434  return column_( this, m_longlongs, name, value, minv, maxv );
435 }
ColumnStorage< LongLong > m_longlongs
the actual storage of all &#39;longlong&#39; columns
Definition: TupleObj.h:2013
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
namename of the column
valuevalue of the variable
Returns
status code

Definition at line 437 of file TupleObj.cpp.

438 {
439  return column_( this, m_ulonglongs, name, value );
440 }
ColumnStorage< ULongLong > m_ulonglongs
the actual storage of all &#39;ulonglong&#39; columns
Definition: TupleObj.h:2016
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
namename of the column
valuevalue of the variable
minvminimum value of the variable
maxvmaximum value of the variable
Returns
status code

Definition at line 442 of file TupleObj.cpp.

444 {
445  return column_( this, m_ulonglongs, name, value, minv, maxv );
446 }
ColumnStorage< ULongLong > m_ulonglongs
the actual storage of all &#39;ulonglong&#39; columns
Definition: TupleObj.h:2016
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
namethe name of the column
valuethe value of tve variable
Returns
status code

Definition at line 709 of file TupleObj.h.

710  {
712  }
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:315
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
namethe name of the column
valuethe value of the variable
Returns
status code

Definition at line 448 of file TupleObj.cpp.

449 {
450  return column_( this, m_bools, name, value );
451 }
ColumnStorage< Bool > m_bools
the actual storage of all &#39;bool&#39; columns
Definition: TupleObj.h:1992
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
namename of the column ("Address" is a recommended convention!)
addressIOpaqueAddress
Returns
status code

Definition at line 302 of file TupleObj.cpp.

303 {
304  if ( !evtColType() ) return ErrorCodes::InvalidOperation;
305  if ( !address ) return Error( "column('" + name + "') IOpaqueAddress* is NULL!", ErrorCodes::InvalidObject );
306  return column_( this, m_addresses, name, address );
307 }
ColumnStorage< Address > m_addresses
the actual storage of all &#39;Address&#39; columns
Definition: TupleObj.h:2025
bool evtColType() const
Event collection ?
Definition: TupleObj.h:1911
virtual StatusCode Error(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
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
addressIOpaqueAddress
Returns
status code

Definition at line 312 of file TupleObj.cpp.

312 { return column( "Address", address ); }
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:315
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 1755 of file TupleObj.h.

1756  {
1757  return columns( v, std::make_pair( name + "E", &ROOT::Math::LorentzVector<TYPE>::E ),
1758  std::make_pair( name + "X", &ROOT::Math::LorentzVector<TYPE>::Px ),
1759  std::make_pair( name + "Y", &ROOT::Math::LorentzVector<TYPE>::Py ),
1760  std::make_pair( name + "Z", &ROOT::Math::LorentzVector<TYPE>::Pz ) );
1761  }
T make_pair(T...args)
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:794
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 1780 of file TupleObj.h.

1781  {
1785  }
T make_pair(T...args)
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:794
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 1804 of file TupleObj.h.

1805  {
1806  return this->columns( v, std::make_pair( name + "X", &ROOT::Math::PositionVector3D<TYPE, TAG>::X ),
1809  }
T make_pair(T...args)
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:794
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.

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 794 of file TupleObj.h.

795  {
796  if ( sizeof...( Args ) == 0 ) return StatusCode::SUCCESS;
798  this->column( std::get<0>( args ), Gaudi::invoke( std::get<1>( args ), value ) )...};
799  return std::accumulate( std::next( begin( scs ) ), end( scs ), *begin( scs ),
800  []( StatusCode sc, const StatusCode& i ) {
801  i.ignore(); // make sure there are no unchecked StatusCodes...
802  return sc.isFailure() ? sc : i; // latch to the first non-success case
803  } );
804  }
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:315
bool isFailure() const
Definition: StatusCode.h:139
T next(T...args)
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:51
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:165
AttribStringParser::Iterator begin(const AttribStringParser &parser)
auto invoke(F &&f, ArgTypes &&...args) noexcept(noexcept(detail2::INVOKE(std::forward< F >(f), std::forward< ArgTypes >(args)...))) -> decltype(detail2::INVOKE(std::forward< F >(f), std::forward< ArgTypes >(args)...))
Definition: invoke.h:93
T accumulate(T...args)
bool Tuples::TupleObj::columnWise ( ) const
inline

column wise NTuple ?

Definition at line 1905 of file TupleObj.h.

1905 { return CLID_ColumnWiseTuple == clid(); }
const CLID & clid() const
accessor to the N-Tuple CLID
Definition: TupleObj.h:1899
virtual StatusCode Tuples::TupleObj::Error ( const std::string msg,
const StatusCode  sc = StatusCode::FAILURE 
) const
pure virtual
bool Tuples::TupleObj::evtColType ( ) const
inline

Event collection ?

Definition at line 1911 of file TupleObj.h.

1911 { return Tuples::EVTCOL == type(); }
Tuples::Type type() const
accessor to the N-Tuple type
Definition: TupleObj.h:1902
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
namename of N-tuple item
firstbegin of data sequence
lastend of data sequence
lengthname of "length" item
maxvmaximal length of array

Definition at line 884 of file TupleObj.h.

886  {
887  return farray( name, detail::to_float, std::forward<ITERATOR1>( first ), std::forward<ITERATOR2>( last ), length,
888  maxv );
889  }
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:884
constexpr to_< float > to_float
Definition: TupleObj.h:72
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
namename of N-tuple item
datadata sequence
lengthname of "length" item
maxvmaximal length of array

Definition at line 934 of file TupleObj.h.

935  {
936  return farray( name, std::begin( data ), std::end( data ), length, maxv );
937  }
T end(T...args)
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:884
T begin(T...args)
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
nametuple item name
functionfunction to be applied
firstbegin of data sequence
lastend of data sequence
lengthname of "length" tuple name
maxvmaximal length of the array
Returns
status code

Definition at line 1002 of file TupleObj.h.

1004  {
1005  if ( invalid() ) return ErrorCodes::InvalidTuple;
1006  if ( rowWise() ) return ErrorCodes::InvalidOperation;
1007 
1008  // adjust the length
1009  if ( std::distance( first, last ) > static_cast<std::ptrdiff_t>( maxv ) ) {
1010  Warning( "farray('" + name + "'): array is overflow, skip extra entries" );
1011  last = std::next( first, maxv );
1012  }
1013 
1014  // get the length item
1015  Int* len = ints( length, 0, maxv );
1016  if ( !len ) return ErrorCodes::InvalidColumn;
1017 
1018  // adjust the length
1019  *len = std::distance( first, last );
1020 
1021  // get the array itself
1022  FArray* var = fArray( name, len );
1023  if ( !var ) return ErrorCodes::InvalidColumn;
1024 
1025  // fill the array
1026  std::transform( first, last, std::begin( *var ),
1027  [&]( auto&& i ) { return Gaudi::invoke( function, std::forward<decltype( i )>( i ) ); } );
1028 
1029  return StatusCode::SUCCESS;
1030  }
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:377
T distance(T...args)
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
T next(T...args)
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1908
FArray * fArray(const std::string &name, Int *item)
get the column
Definition: TupleObj.cpp:455
T begin(T...args)
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:224
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917
T transform(T...args)
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:245
auto invoke(F &&f, ArgTypes &&...args) noexcept(noexcept(detail2::INVOKE(std::forward< F >(f), std::forward< ArgTypes >(args)...))) -> decltype(detail2::INVOKE(std::forward< F >(f), std::forward< ArgTypes >(args)...))
Definition: invoke.h:93
T forward(T...args)
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<Container<NamedFunction>, std::string>::value>>
StatusCode Tuples::TupleObj::farray ( const Container< NamedFunction > &  funs,
DataIterator  first,
DataIterator  last,
const std::string length,
size_t  maxv 
)
inline

Definition at line 1107 of file TupleObj.h.

1109  {
1110  return farray_impl( funs.begin(), funs.end(), std::forward<DataIterator>( first ),
1111  std::forward<DataIterator>( last ), length, maxv );
1112  }
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:1060
template<typename NamedFunctions , typename DataIterator , typename = std::enable_if_t<!std::is_convertible<NamedFunctions, std::string>::value>>
StatusCode Tuples::TupleObj::farray ( const NamedFunctions &  funs,
DataIterator  first,
DataIterator  last,
const std::string length,
size_t  maxv 
)
inline

Definition at line 1116 of file TupleObj.h.

1118  {
1119  return farray_impl( funs.begin(), funs.end(), std::forward<DataIterator>( first ),
1120  std::forward<DataIterator>( last ), length, maxv );
1121  }
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:1060
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
name1the first tuple item name
func1the first function to be applied
name2the second tuple item name
func2the second function to be applied
firstbegin of data sequence
lastend of data sequence
lengthname of "length" tuple name
maxvmaximal length of the array
Returns
status code

Definition at line 1155 of file TupleObj.h.

1157  {
1158  return farray( {{name1, std::cref( func1 )}, {name2, std::cref( func2 )}}, std::forward<Iterator>( first ),
1159  std::forward<Iterator>( last ), length, maxv );
1160  }
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:884
T cref(T...args)
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
name1the first tuple item name
func1the first function to be applied
name2the second tuple item name
func2the second function to be applied
name3the third tuple item name
func3the third function to be applied
firstbegin of data sequence
lastend of data sequence
lengthname of "length" tuple name
maxvmaximal length of the array
Returns
status code

Definition at line 1199 of file TupleObj.h.

1202  {
1203  return farray( {{name1, std::cref( func1 )}, {name2, std::cref( func2 )}, {name3, std::cref( func3 )}},
1204  std::forward<Iterator>( first ), std::forward<Iterator>( last ), length, maxv );
1205  }
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:884
T cref(T...args)
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
name1the first tuple item name
func1the first function to be applied
name2the second tuple item name
func2the second function to be applied
name3the third tuple item name
func3the third function to be applied
name4the fourth tuple item name
func4the fourth function to be applied
firstbegin of data sequence
lastend of data sequence
lengthname of "length" tuple name
maxvmaximal length of the array
Returns
status code

Definition at line 1247 of file TupleObj.h.

1250  {
1251  return farray( {{name1, std::cref( func1 )},
1252  {name2, std::cref( func2 )},
1253  {name3, std::cref( func3 )},
1254  {name4, std::cref( func4 )}},
1255  std::forward<Iterator>( first ), std::forward<Iterator>( last ), length, maxv );
1256  }
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:884
T cref(T...args)
Tuples::TupleObj::FArray * Tuples::TupleObj::fArray ( const std::string name,
Int item 
)
private

get the column

Definition at line 455 of file TupleObj.cpp.

456 {
457  // existing array ?
458  auto found = m_farrays.find( name );
459  if ( m_farrays.end() != found ) return found->second.get();
460  return create_( this, m_farrays, name,
461  [&]( const std::string& n, FArray& i ) { return this->tuple()->addIndexedItem( n, *length, i ); } );
462 }
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1891
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:728
STL class.
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:245
ColumnStorage< FArray > m_farrays
the actual storage of all &#39;FArray&#39; columns
Definition: TupleObj.h:2028
Tuples::TupleObj::FArray * Tuples::TupleObj::fArray ( const std::string name,
const MIndex rows 
)
private

get the column

Definition at line 466 of file TupleObj.cpp.

467 {
468  // existing array ?
469  auto found = m_arraysf.find( name );
470  if ( m_arraysf.end() != found ) return found->second.get();
471  return create_( this, m_arraysf, name,
472  [&]( const std::string& n, FArray& i ) { return this->tuple()->addItem( n, rows, i ); } );
473 }
ColumnStorage< FArray > m_arraysf
the actual storage of all &#39;FArray&#39; columns (fixed)
Definition: TupleObj.h:2031
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1891
STL class.
StatusCode addItem(const std::string &name, Item< TYPE > &itm)
Add a scalar data item a N tuple.
Definition: NTuple.h:564
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:245
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
itemsvector of pairs { name, callable }
firstbegin of data sequence
lastend of data sequence
lengthname of "length" tuple name
maxvmaximal length of the array
Returns
status code

Definition at line 1060 of file TupleObj.h.

1062  {
1063  if ( invalid() ) return ErrorCodes::InvalidTuple;
1064  if ( rowWise() ) return ErrorCodes::InvalidOperation;
1065 
1066  // adjust the length
1067  if ( std::distance( first, last ) > static_cast<std::ptrdiff_t>( maxv ) ) {
1069  std::ostringstream os;
1070  ostream_joiner( os, first_item, last_item, ",",
1071  []( std::ostream& os, const auto& i ) -> decltype( auto ) { return os << i.first; } );
1072  Warning( "farray('" + os.str() + "'): array overflow, skipping extra entries" ).ignore();
1073  last = std::next( first, maxv );
1074  }
1075 
1076  // get the length item
1077  Int* len = ints( length, 0, maxv );
1078  if ( !len ) return ErrorCodes::InvalidColumn;
1079 
1080  // adjust the length
1081  *len = std::distance( first, last );
1082 
1083  // get the arrays themselves
1084  std::vector<FArray*> vars;
1085  vars.reserve( std::distance( first_item, last_item ) );
1086  std::transform( first_item, last_item, std::back_inserter( vars ),
1087  [&]( const auto& item ) { return this->fArray( item.first, len ); } );
1088  if ( std::any_of( vars.begin(), vars.end(), []( const FArray* f ) { return !f; } ) ) {
1090  }
1091 
1092  // fill the array
1093  for ( size_t index = 0; first != last; ++first, ++index ) {
1094  auto item = first_item;
1095  for ( auto& var : vars ) {
1096  ( *var )[index] = Gaudi::invoke( ( item++ )->second, *first );
1097  }
1098  }
1099 
1100  return StatusCode::SUCCESS;
1101  }
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:377
T distance(T...args)
T end(T...args)
constexpr double second
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
T next(T...args)
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1908
Stream & ostream_joiner(Stream &os, Iterator first, Iterator last, Separator sep, OutputElement output=OutputElement{})
Definition: SerializeSTL.h:40
FArray * fArray(const std::string &name, Int *item)
get the column
Definition: TupleObj.cpp:455
STL class.
T begin(T...args)
T back_inserter(T...args)
T any_of(T...args)
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:224
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917
T transform(T...args)
NTuple::Array< float > FArray
basic type for array of floats
Definition: TupleObj.h:245
auto invoke(F &&f, ArgTypes &&...args) noexcept(noexcept(detail2::INVOKE(std::forward< F >(f), std::forward< ArgTypes >(args)...))) -> decltype(detail2::INVOKE(std::forward< F >(f), std::forward< ArgTypes >(args)...))
Definition: invoke.h:93
STL class.
T reserve(T...args)
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
formatblank-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 277 of file TupleObj.cpp.

278 {
279  // check the underlying tuple
280  if ( invalid() ) return ErrorCodes::InvalidTuple;
281  // decode format string into tokens
282  auto tokens = tokenize( format, " ,;" );
284  va_list valist;
285  va_start( valist, format );
286  // loop over all tokens
288  for ( auto token = tokens.cbegin(); tokens.cend() != token && status.isSuccess(); ++token ) {
289  double val = va_arg( valist, double );
290  status = column( *token, val );
291  if ( status.isFailure() ) Error( "fill(): Can not add column '" + *token + "' " );
292  }
293  // mandatory !!!
294  va_end( valist );
295  //
296  return status;
297 }
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:120
bool isSuccess() const
Definition: StatusCode.h:287
StatusCode column(const std::string &name, float value)
Set the value for selected tuple column.
Definition: TupleObj.cpp:315
bool isFailure() const
Definition: StatusCode.h:139
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:51
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
virtual StatusCode Error(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917
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<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
nameentry name in N-Tuple
datamatrix itself
rowsnumber of rows of matrix (variable)
colsnumber of columns of matrix (fixed)
lengthentry name in NTuple for number of matrix column
maxvmaximal 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 1311 of file TupleObj.h.

1313  {
1314  if ( invalid() ) return ErrorCodes::InvalidTuple;
1315  if ( rowWise() ) return ErrorCodes::InvalidOperation;
1316 
1317  // adjust the length
1318  if ( rows >= maxv ) {
1319  Warning( "fmatrix('" + name + "'): matrix is overflow, skip extra items" ).ignore();
1320  rows = ( 0 < maxv ) ? ( maxv - 1 ) : 0;
1321  }
1322 
1323  // get the length item
1324  Int* len = ints( length, 0, maxv );
1325  if ( !len ) return ErrorCodes::InvalidColumn;
1326 
1327  // adjust the length item
1328  *len = rows;
1329 
1330  // get the array itself
1331  FMatrix* var = fMatrix( name, len, cols );
1332  if ( !var ) return ErrorCodes::InvalidColumn;
1333 
1335  for ( size_t iCol = 0; iCol < cols; ++iCol ) {
1336  for ( MIndex iRow = 0; iRow < rows; ++iRow ) {
1337  ( *var )[iRow][iCol] = data[iRow][iCol];
1338  }
1339  }
1340 
1341  return StatusCode::SUCCESS;
1342  }
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:377
unsigned short MIndex
Definition: TupleObj.h:251
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:248
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1908
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:165
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:224
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:477
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917
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<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
nameentry name in N-Tuple
firstiterator for the first row of matrix
lastiterator for the last row of matrix
colsnumber of columns for matrix (fixed!)
lengthentry name in NTuple for number of matrix column
maxvmaximal 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 1381 of file TupleObj.h.

1383  {
1384  if ( invalid() ) return ErrorCodes::InvalidTuple;
1385  if ( rowWise() ) return ErrorCodes::InvalidOperation;
1386 
1387  // adjust the length
1388  if ( first + maxv < last ) {
1389  Warning( "fmatrix('" + name + "'): matrix is overflow, skip extra items" ).ignore();
1390  last = first + maxv;
1391  }
1392 
1393  // get the length item
1394  Int* len = ints( length, 0, maxv );
1395  if ( !len ) return ErrorCodes::InvalidColumn;
1396 
1397  // adjust the length item
1398  *len = last - first;
1399 
1400  // get the array itself
1401  FMatrix* var = fMatrix( name, len, cols );
1402  if ( !var ) return ErrorCodes::InvalidColumn;
1403 
1405  size_t iRow = 0;
1406  for ( ; first != last; ++first ) {
1407  //
1408  for ( MIndex iCol = 0; iCol < cols; ++iCol ) {
1409  ( *var )[iRow][iCol] = ( *first )[iCol];
1410  }
1411  //
1412  ++iRow;
1413  }
1414 
1415  return StatusCode::SUCCESS;
1416  }
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:377
unsigned short MIndex
Definition: TupleObj.h:251
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:248
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1908
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:165
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:224
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:477
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917
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!
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
nameentry 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
lengthentry name in NTuple for number of matrix column
maxvmaximal 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 1497 of file TupleObj.h.

1499  {
1500  if ( invalid() ) return ErrorCodes::InvalidTuple;
1501  if ( rowWise() ) return ErrorCodes::InvalidOperation;
1502 
1503  // adjust the length
1504  if ( std::distance( first, last ) > static_cast<std::ptrdiff_t>( maxv ) ) {
1505  Warning( "fmatrix('" + name + "'): matrix is overflow, skip extra items" ).ignore();
1506  last = std::next( first, maxv );
1507  }
1508 
1509  // get the length item
1510  Int* len = ints( length, 0, maxv );
1511 
1512  if ( !len ) return ErrorCodes::InvalidColumn;
1513 
1514  // adjust the length item
1515  *len = std::distance( first, last );
1516 
1517  // get the array itself
1518  auto cols = std::distance( funF, funL );
1519  FMatrix* var = fMatrix( name, len, cols );
1520  if ( !var ) return ErrorCodes::InvalidColumn;
1521 
1523  size_t iRow = 0;
1524  for ( ; first != last; ++first ) {
1525  //
1526  for ( FUN fun = funF; fun < funL; ++fun ) {
1527  ( *var )[iRow][fun - funF] = Gaudi::invoke( *fun, *first );
1528  }
1529  //
1530  ++iRow;
1531  }
1532 
1533  return StatusCode::SUCCESS;
1534  }
Int * ints(const std::string &name, int minv, int maxv)
get the column
Definition: TupleObj.cpp:377
T distance(T...args)
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
T next(T...args)
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:248
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1908
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:165
double fun(const std::vector< double > &x)
Definition: PFuncTest.cpp:26
NTuple::Item< int > Int
basic type for int items
Definition: TupleObj.h:224
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:477
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917
auto invoke(F &&f, ArgTypes &&...args) noexcept(noexcept(detail2::INVOKE(std::forward< F >(f), std::forward< ArgTypes >(args)...))) -> decltype(detail2::INVOKE(std::forward< F >(f), std::forward< ArgTypes >(args)...))
Definition: invoke.h:93
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 1857 of file TupleObj.h.

1859  {
1860  using Info = std::pair<KEY, VALUE>;
1861  static const std::array<float ( * )( const Info& ), 2> fns = {
1862  {[]( const Info& i ) -> float { return i.first; }, []( const Info& i ) -> float { return i.second; }}};
1863  return fmatrix( name, begin( fns ), end( fns ), begin( info ), end( info ), length, maxv );
1864  }
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:1311
STL class.
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Tuples::TupleObj::FMatrix * Tuples::TupleObj::fMatrix ( const std::string name,
Int item,
const MIndex cols 
)
private

get the column

Definition at line 477 of file TupleObj.cpp.

479 {
480  // existing array ?
481  auto found = m_fmatrices.find( name );
482  if ( m_fmatrices.end() != found ) return found->second.get();
483  return create_( this, m_fmatrices, name, [&]( const std::string& n, FMatrix& i ) {
484  return this->tuple()->addIndexedItem( n, *length, cols, i );
485  } );
486 }
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1891
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:728
STL class.
ColumnStorage< FMatrix > m_fmatrices
the actual storage of all &#39;FArray&#39; columns
Definition: TupleObj.h:2034
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:248
Tuples::TupleObj::FMatrix * Tuples::TupleObj::fMatrix ( const std::string name,
const MIndex rows,
const MIndex cols 
)
private

get the column

Definition at line 490 of file TupleObj.cpp.

492 {
493  // existing array ?
494  auto found = m_matricesf.find( name );
495  if ( m_matricesf.end() != found ) return found->second.get();
496  return create_( this, m_matricesf, name,
497  [&]( const std::string& n, FMatrix& i ) { return this->tuple()->addItem( n, rows, cols, i ); } );
498 }
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1891
STL class.
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:248
ColumnStorage< FMatrix > m_matricesf
the actual storage of all &#39;FMatrix&#39; columns (fixed)
Definition: TupleObj.h:2037
StatusCode addItem(const std::string &name, Item< TYPE > &itm)
Add a scalar data item a N tuple.
Definition: NTuple.h:564
bool Tuples::TupleObj::goodItem ( const std::string name) const
inline

check the uniqueness of the name

Parameters
namethe name of the item
Returns
true if the name is indeed unique

Definition at line 1935 of file TupleObj.h.

1935 { return m_items.end() == m_items.find( name ); }
T end(T...args)
ItemMap m_items
all booked types:
Definition: TupleObj.h:2040
T find(T...args)
Tuples::TupleObj::Int * Tuples::TupleObj::ints ( const std::string name,
int  minv,
int  maxv 
)
private

get the column

Definition at line 377 of file TupleObj.cpp.

378 {
379  return find_or_create( this, name, m_ints, minv, maxv );
380 }
ColumnStorage< Int > m_ints
the actual storage of all &#39;Int&#39; columns
Definition: TupleObj.h:2007
bool Tuples::TupleObj::invalid ( ) const
inline

invalid pointer to tuple ?

Definition at line 1917 of file TupleObj.h.

1917 { return !valid(); }
bool valid() const
valid pointer to tuple ?
Definition: TupleObj.h:1914
const ItemMap& Tuples::TupleObj::items ( ) const
inline

get the full list of booked items

Definition at line 1938 of file TupleObj.h.

1938 { return m_items; }
ItemMap m_items
all booked types:
Definition: TupleObj.h:2040
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<Row> Mtrx ;
Mtrx mtrx2( 3 , Row(10) ) ;
...
tuple -> matrix ( "m2" ,
mtrx2 ,
3 ,
10 ) ;
float mtrx3[3][10] ;
...
tuple -> matrix ( "m3" ,
mtrx3 ,
3 ,
10 ) ;
Parameters
nameN-Tuple entry name
datadata source (matrix)
colsnumber of columns
rowsnumber 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 1718 of file TupleObj.h.

1719  {
1720  if ( invalid() ) return ErrorCodes::InvalidTuple;
1721  if ( rowWise() ) return ErrorCodes::InvalidOperation;
1722 
1723  // get the matrix itself
1724  FMatrix* var = fMatrix( name, rows, cols );
1725  if ( !var ) return ErrorCodes::InvalidColumn;
1726 
1728  for ( size_t iCol = 0; iCol < cols; ++iCol ) {
1729  for ( size_t iRow = 0; iRow < rows; ++iRow ) {
1730  ( *var )[iRow][iCol] = data[iRow][iCol];
1731  }
1732  };
1733  return StatusCode::SUCCESS;
1734  }
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:248
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1908
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:477
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917
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 1820 of file TupleObj.h.

1821  {
1822  if ( invalid() ) return ErrorCodes::InvalidTuple;
1823  if ( rowWise() ) return ErrorCodes::InvalidOperation;
1824 
1825  // get the matrix itself
1826  FMatrix* var = fMatrix( name, (MIndex)D1, (MIndex)D2 );
1827  if ( !var ) return ErrorCodes::InvalidColumn;
1828 
1830  for ( size_t iCol = 0; iCol < D2; ++iCol ) {
1831  for ( size_t iRow = 0; iRow < D1; ++iRow ) {
1832  ( *var )[iRow][iCol] = mtrx( iRow, iCol );
1833  }
1834  };
1835 
1836  return StatusCode::SUCCESS;
1837  }
unsigned short MIndex
Definition: TupleObj.h:251
NTuple::Matrix< float > FMatrix
basic type for matrix of floats
Definition: TupleObj.h:248
constexpr static const auto SUCCESS
Definition: StatusCode.h:87
bool rowWise() const
row wise NTuple ?
Definition: TupleObj.h:1908
FMatrix * fMatrix(const std::string &name, Int *item, const MIndex &cols)
get the column
Definition: TupleObj.cpp:477
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917
const std::string& Tuples::TupleObj::name ( ) const
inline

get the name

Definition at line 1886 of file TupleObj.h.

1886 { return m_name; }
std::string m_name
name
Definition: TupleObj.h:1973
TupleObj& Tuples::TupleObj::operator= ( const TupleObj )
privatedelete
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
namecolumn name
objpointer 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 116 of file TuplePut.h.

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

row wise NTuple ?

Definition at line 1908 of file TupleObj.h.

1908 { return CLID_RowWiseTuple == clid(); }
const CLID & clid() const
accessor to the N-Tuple CLID
Definition: TupleObj.h:1899
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 1891 of file TupleObj.h.

1891 { return m_tuple; }
NTuple::Tuple * m_tuple
tuple itself
Definition: TupleObj.h:1976
NTuple::Tuple* Tuples::TupleObj::tuple ( )
inline

provide the access to underlying Gaudi N-tuple

Returns
pointer to Gaudi N-tuple object

Definition at line 1896 of file TupleObj.h.

1896 { return m_tuple; }
NTuple::Tuple * m_tuple
tuple itself
Definition: TupleObj.h:1976
Tuples::Type Tuples::TupleObj::type ( ) const
inline

accessor to the N-Tuple type

Definition at line 1902 of file TupleObj.h.

1902 { return m_type; }
Tuples::Type m_type
tuple &#39;type&#39;
Definition: TupleObj.h:1982
bool Tuples::TupleObj::valid ( ) const
inline

valid pointer to tuple ?

Definition at line 1914 of file TupleObj.h.

1914 { return 0 != tuple(); }
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1891
virtual StatusCode Tuples::TupleObj::Warning ( const std::string msg,
const StatusCode  sc = StatusCode::FAILURE 
) const
pure virtual
StatusCode Tuples::TupleObj::write ( )

write a record to NTuple

Returns
status code

Definition at line 247 of file TupleObj.cpp.

248 {
249  if ( invalid() ) return ErrorCodes::InvalidTuple;
250  return tuple()->write();
251 }
virtual StatusCode write()=0
Write record of the NTuple (Shortcut of writeRecord)
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1891
bool invalid() const
invalid pointer to tuple ?
Definition: TupleObj.h:1917

Member Data Documentation

ColumnStorage<Address> Tuples::TupleObj::m_addresses
mutableprivate

the actual storage of all 'Address' columns

Definition at line 2025 of file TupleObj.h.

ColumnStorage<FArray> Tuples::TupleObj::m_arraysf
mutableprivate

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

Definition at line 2031 of file TupleObj.h.

ColumnStorage<Bool> Tuples::TupleObj::m_bools
mutableprivate

the actual storage of all 'bool' columns

Definition at line 1992 of file TupleObj.h.

ColumnStorage<Char> Tuples::TupleObj::m_chars
mutableprivate

the actual storage of all 'Int' columns

Definition at line 1995 of file TupleObj.h.

CLID Tuples::TupleObj::m_clid
private

tuple CLID

Definition at line 1979 of file TupleObj.h.

ColumnStorage<Double> Tuples::TupleObj::m_doubles
mutableprivate

the actual storage of all 'Double' columns

Definition at line 2022 of file TupleObj.h.

ColumnStorage<FArray> Tuples::TupleObj::m_farrays
mutableprivate

the actual storage of all 'FArray' columns

Definition at line 2028 of file TupleObj.h.

ColumnStorage<Float> Tuples::TupleObj::m_floats
mutableprivate

the actual storage of all 'Float' columns

Definition at line 2019 of file TupleObj.h.

ColumnStorage<FMatrix> Tuples::TupleObj::m_fmatrices
mutableprivate

the actual storage of all 'FArray' columns

Definition at line 2034 of file TupleObj.h.

ColumnStorage<Int> Tuples::TupleObj::m_ints
mutableprivate

the actual storage of all 'Int' columns

Definition at line 2007 of file TupleObj.h.

ItemMap Tuples::TupleObj::m_items
private

all booked types:

Definition at line 2040 of file TupleObj.h.

ColumnStorage<LongLong> Tuples::TupleObj::m_longlongs
mutableprivate

the actual storage of all 'longlong' columns

Definition at line 2013 of file TupleObj.h.

ColumnStorage<FMatrix> Tuples::TupleObj::m_matricesf
mutableprivate

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

Definition at line 2037 of file TupleObj.h.

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

name

Definition at line 1973 of file TupleObj.h.

size_t Tuples::TupleObj::m_refCount = 0
private

reference counter

Definition at line 1985 of file TupleObj.h.

ColumnStorage<Short> Tuples::TupleObj::m_shorts
mutableprivate

the actual storage of all 'Int' columns

Definition at line 2001 of file TupleObj.h.

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

tuple itself

Definition at line 1976 of file TupleObj.h.

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

tuple 'type'

Definition at line 1982 of file TupleObj.h.

ColumnStorage<UChar> Tuples::TupleObj::m_uchars
mutableprivate

the actual storage of all 'unsigned int' columns

Definition at line 1998 of file TupleObj.h.

ColumnStorage<UInt> Tuples::TupleObj::m_uints
mutableprivate

the actual storage of all 'unsigned int' columns

Definition at line 2010 of file TupleObj.h.

ColumnStorage<ULongLong> Tuples::TupleObj::m_ulonglongs
mutableprivate

the actual storage of all 'ulonglong' columns

Definition at line 2016 of file TupleObj.h.

ColumnStorage<UShort> Tuples::TupleObj::m_ushorts
mutableprivate

the actual storage of all 'unsigned int' columns

Definition at line 2004 of file TupleObj.h.


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