#include <GaudiAlg/GaudiTuples.h>
|
Tuple | nTuple (const std::string &title, const CLID &clid=CLID_ColumnWiseTuple) const |
| Access an N-Tuple object (book on-demand) with unique identifier. More...
|
|
Tuple | nTuple (const TupleID &ID, const std::string &title, const CLID &clid=CLID_ColumnWiseTuple) const |
| Access an N-Tuple object (book on-demand) with forced identifier. More...
|
|
Tuple | evtCol (const std::string &title, const CLID &clid=CLID_ColumnWiseTuple) const |
| Access an Event Tag Collection object (book on-demand) with unique identifier. More...
|
|
Tuple | evtCol (const TupleID &ID, const std::string &title, const CLID &clid=CLID_ColumnWiseTuple) const |
| Access an Event Tag Collection object (book on-demand) with forced identifier. More...
|
|
bool | produceNTuples () const |
| get the flag for N-Tuple production (property "NTupleProduce") More...
|
|
bool | splitNTupleDir () const |
| get the flag for N-Tuple path split (property "NTupleSplitDir") More...
|
|
const std::string & | nTupleLUN () const |
| get the logical unit for N-Tuples (property "NTupleLUN") More...
|
|
const std::string & | nTupleTopDir () const |
| get the top-level N-Tuple directory (property "NTupleTopDir") More...
|
|
const std::string & | nTupleDir () const |
| get the N-Tuple directory (property "NTupleDir") More...
|
|
TupleID::NumericID | nTupleOffSet () const |
| get the value for N-Tuple offset (property "NTupleOffSet") More...
|
|
std::string | nTuplePath () const |
| get the constructed N-Tuple path More...
|
|
bool | produceEvtCols () const |
| get the flag for Event Tag Collection production (property "EvtColsProduce") More...
|
|
bool | splitEvtColDir () const |
| get the flag for Event Tag Collection path split (property "EvtColsSplitDir") More...
|
|
const std::string & | evtColLUN () const |
| get the logical unit for Event Tag Collections (property "EvtColsLUN") More...
|
|
const std::string & | evtColTopDir () const |
| get the top-level Event Tag Collection directory (property "EvtColsTopDir") More...
|
|
const std::string & | evtColDir () const |
| get the Event Tag Collection directory (property "EvtColsDir") More...
|
|
TupleID::NumericID | evtColOffSet () const |
| get the value for Event Tag Collection offset (property "EvtColsOffSet") More...
|
|
std::string | evtColPath () const |
| get the constructed Event Tag Collection path More...
|
|
bool | tuplesPrint () const |
| print tuples at finalization More...
|
|
bool | evtColsPrint () const |
| print event collections at finalization More...
|
|
long | printTuples () const |
| perform the actual printout of N-tuples More...
|
|
long | printEvtCols () const |
| perform the actual printout of Event Tag Collections More...
|
|
bool | nTupleExists (const TupleID &ID) const |
| check the existence AND validity of the N-Tuple with the given ID More...
|
|
bool | evtColExists (const TupleID &ID) const |
| check the existence AND validity of the Event Tag Collection with the given ID More...
|
|
template<typename U = PBASE, typename = std::enable_if_t<std::is_base_of_v<GaudiHistoAlg, PBASE>, U>> |
| GaudiTuples (const std::string &name, ISvcLocator *pSvcLocator) |
| Algorithm constructor - the SFINAE constraint below ensures that this is constructor is only defined if PBASE derives from GaudiHistoAlg. More...
|
|
template<typename U = PBASE, typename = std::enable_if_t<std::is_base_of_v<GaudiHistoTool, PBASE>, U>> |
| GaudiTuples (const std::string &type, const std::string &name, const IInterface *parent) |
| Tool constructor - SFINAE-ed to insure this constructor is only defined if PBASE derives from AlgTool. More...
|
|
|
template<typename... Ts> |
using | indexed_by = boost::multi_index::indexed_by< Ts... > |
|
template<typename... Ts> |
using | hashed_unique = boost::multi_index::hashed_unique< Ts... > |
|
template<typename... Ts> |
using | ordered_unique = boost::multi_index::ordered_unique< Ts... > |
|
template<typename Obj , typename Type , Type Obj::* Member> |
using | member = boost::multi_index::member< Obj, Type, Member > |
|
template<typename T > |
using | tag = boost::multi_index::tag< T > |
|
using | nTupleMap = boost::multi_index_container< nTupleMapItem, indexed_by< hashed_unique< tag< title_t >, member< nTupleMapItem, std::string, &nTupleMapItem::title > >, hashed_unique< tag< id_t >, member< nTupleMapItem, TupleID, &nTupleMapItem::id > >, ordered_unique< tag< order_t >, member< nTupleMapItem, TupleID, &nTupleMapItem::id > >> > |
|
|
Gaudi::Property< bool > | m_produceNTuples {this, "NTupleProduce", true, "general switch to enable/disable N-tuples"} |
|
Gaudi::Property< bool > | m_tuplesPrint |
|
Gaudi::Property< bool > | m_splitNTupleDir |
|
Gaudi::Property< TupleID::NumericID > | m_nTupleOffSet {this, "NTupleOffSet", 0, "offset for numerical N-tuple ID"} |
|
Gaudi::Property< std::string > | m_nTupleLUN {this, "NTupleLUN", "FILE1", "Logical File Unit for N-tuples"} |
|
Gaudi::Property< std::string > | m_nTupleTopDir {this, "NTupleTopDir", "", "top-level directory for N-Tuples"} |
|
Gaudi::Property< std::string > | m_nTupleDir |
|
Gaudi::Property< bool > | m_produceEvtCols |
|
Gaudi::Property< bool > | m_evtColsPrint |
|
Gaudi::Property< bool > | m_splitEvtColDir {this, "EvtColSplitDir", false, "split long directory names into short pieces"} |
|
Gaudi::Property< TupleID::NumericID > | m_evtColOffSet {this, "EvtColOffSet", 0, "offset for numerical N-tuple ID"} |
|
Gaudi::Property< std::string > | m_evtColLUN {this, "EvtColLUN", "EVTCOL", "Logical File Unit for Event Tag Collections"} |
|
Gaudi::Property< std::string > | m_evtColTopDir |
|
Gaudi::Property< std::string > | m_evtColDir |
|
nTupleMap | m_nTupleMap |
| the actual storage of ntuples by title and ID More...
|
|
nTupleMap | m_evtColMap |
| the actual storage of event collections by title and ID More...
|
|
template<class PBASE>
class GaudiTuples< PBASE >
Templated base class providing common 'ntupling' methods
- Author
- Chris Jones Chris.nosp@m.toph.nosp@m.er.Ro.nosp@m.b.Jo.nosp@m.nes@c.nosp@m.ern..nosp@m.ch
-
Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@i.nosp@m.tep..nosp@m.ru
- Date
- 2005-08-08
Definition at line 53 of file GaudiTuples.h.
◆ hashed_unique
template<class PBASE >
template<typename... Ts>
◆ HistoID
the actual type for histogram identifier
Definition at line 57 of file GaudiTuples.h.
◆ indexed_by
template<class PBASE >
template<typename... Ts>
◆ member
template<class PBASE >
template<typename Obj , typename Type , Type Obj::* Member>
◆ nTupleMap
template<class PBASE >
using GaudiTuples< PBASE >::nTupleMap = boost::multi_index_container< nTupleMapItem, indexed_by<hashed_unique<tag<title_t>, member<nTupleMapItem, std::string, &nTupleMapItem::title> >, hashed_unique<tag<id_t>, member<nTupleMapItem, TupleID, &nTupleMapItem::id> >, ordered_unique<tag<order_t>, member<nTupleMapItem, TupleID, &nTupleMapItem::id> >> > |
|
private |
◆ ordered_unique
template<class PBASE >
template<typename... Ts>
◆ tag
template<class PBASE >
template<typename T >
◆ Tuple
◆ TupleID
◆ GaudiTuples() [1/2]
template<class PBASE >
template<typename U = PBASE, typename = std::enable_if_t<std::is_base_of_v<GaudiHistoAlg, PBASE>, U>>
Algorithm constructor - the SFINAE constraint below ensures that this is constructor is only defined if PBASE derives from GaudiHistoAlg.
Definition at line 287 of file GaudiTuples.h.
287 : PBASE(
name, pSvcLocator ) {}
◆ GaudiTuples() [2/2]
template<class PBASE >
template<typename U = PBASE, typename = std::enable_if_t<std::is_base_of_v<GaudiHistoTool, PBASE>, U>>
Tool constructor - SFINAE-ed to insure this constructor is only defined if PBASE derives from AlgTool.
Definition at line 291 of file GaudiTuples.h.
◆ createEvtCol()
create TupleObj for event tag collection
- Attention
- The method should never used directly by users
- Parameters
-
name | name/title |
tuple | the underlying ntuple implementation |
clid | unique classID for ntuple |
- Returns
- pointer to newly created TupelObj
Definition at line 287 of file GaudiTuples.icpp.
◆ createNTuple()
create TupleObj
- Attention
- The method should never used directly by users
- Parameters
-
name | name/title |
tuple | the underlying ntuple implementation |
clid | unique classID for ntuple |
- Returns
- pointer to newly created TupleObj
Definition at line 277 of file GaudiTuples.icpp.
◆ evtCol() [1/2]
Access an Event Tag Collection object (book on-demand) with unique identifier.
tuple->column(
"A" ,
sin(0.1) );
tuple->column(
"B" ,
cos(0.1) );
tuple->column(
"C" ,
tan(0.1) );
The Event Tag Collection will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first Event Tag Collection booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given Event Tag Collection will be given when filled under conditional statements, since in these circumstances the order in which the Event Tag Collection are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given Event Tag Collection could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
- Parameters
-
title | Unique title for Event Tag Collection |
clid | N-Tuple class identifier (row or column wise) |
- Returns
- ntuple The Event Tag Collection object
Definition at line 146 of file GaudiTuples.icpp.
148 auto&
m = evtColByTitle();
149 auto tuple =
m.find( title );
150 if ( tuple !=
m.end() )
return Tuple( tuple->tuple );
153 if ( this->useNumericAutoIDs() || title.
empty() ) {
154 if ( !this->useNumericAutoIDs() ) {
156 "Cannot generate automatic literal ID from an empty title ! Using numeric ID instead for evtCol ID",
166 ID =
TupleID( this->convertTitleToID( title ) );
171 return evtCol( ID, title, clid );
◆ evtCol() [2/2]
Access an Event Tag Collection object (book on-demand) with forced identifier.
Tuple tuple =
evtCol(
"mytuple",
"My Tag Collection" ) ;
Tuple tuple =
evtCol(
"subdir/mytuple",
"My Tag Collection" ) ;
tuple->column(
"A" ,
sin(0.1) );
tuple->column(
"B" ,
cos(0.1) );
tuple->column(
"C" ,
tan(0.1) );
tuple->write();
- Attention
- If the Event Tag Collection with given ID is already booked through automatic assignment of Event Tag Collection ID, the error will not be detected. Therefore it is recommended to use a non-trivial Event Tag Collection ID offset (property "EvtColOffSet") if one need to combine these techniques together It is still desirable to use the unique Event Tag Collection title to avoid a bad interference.
- Parameters
-
ID | The forced Event Tag Collection ID |
title | Unique title for Event Tag Collection |
clid | N-Tuple class identifier (row or column wise) |
- Returns
- ntuple The Event Tag Collection object
Definition at line 228 of file GaudiTuples.icpp.
230 if ( ID.undefined() ) {
231 this->Error(
"Undefined NTuple ID : Title='" + title1 +
"'" ).ignore();
236 auto& tuple = evtColByID();
237 auto i = tuple.find( ID );
238 if ( i != tuple.end() )
return Tuple( i->tuple );
249 if ( !
r.second ) this->Error(
"Failure to createEvtCol" ).ignore();
250 return Tuple(
r.first->tuple );
254 if ( ID.numeric() ) {
255 tup = this->evtColSvc()->book(
evtColPath(), ID.numericID(), clid, title );
256 }
else if ( ID.literal() ) {
257 tup = this->evtColSvc()->book(
evtColPath(), ID.literalID(), clid, title );
259 this->Error(
"Undefined NTuple ID" ).ignore();
263 this->Assert( tup,
"Could not book the EvtCol='" + title +
"'" );
266 this->debug() <<
"Booked EvtCol '" << title <<
"' ID=" << tID <<
"' Path='" <<
evtColPath() <<
"' TS='"
270 if ( !
r.second ) this->Error(
"Failure to createEvtCol" ).ignore();
271 return Tuple(
r.first->tuple );
◆ evtColDir()
get the Event Tag Collection directory (property "EvtColsDir")
Definition at line 235 of file GaudiTuples.h.
◆ evtColExists()
check the existence AND validity of the Event Tag Collection with the given ID
Definition at line 348 of file GaudiTuples.icpp.
349 auto&
m = evtColByID();
350 return m.find( ID ) !=
m.end();
◆ evtColLUN()
get the logical unit for Event Tag Collections (property "EvtColsLUN")
Definition at line 231 of file GaudiTuples.h.
◆ evtColOffSet()
get the value for Event Tag Collection offset (property "EvtColsOffSet")
Definition at line 237 of file GaudiTuples.h.
◆ evtColPath()
◆ evtColsPrint()
print event collections at finalization
Definition at line 243 of file GaudiTuples.h.
◆ evtColTopDir()
get the top-level Event Tag Collection directory (property "EvtColsTopDir")
Definition at line 233 of file GaudiTuples.h.
◆ finalize()
standard finalization method
- Returns
- status code
Definition at line 83 of file GaudiTuples.icpp.
93 this->always() <<
"Booked " << nNtuples <<
" N-Tuples and " << nEvtCols <<
" Event Tag Collections" <<
endmsg;
106 return PBASE::finalize();
◆ initialize()
standard initialization method
- Returns
- status code
Definition at line 47 of file GaudiTuples.icpp.
60 if ( this->ntupleSvc() == 0 ) {
return this->Error(
"INTupleSvc* points to NULL!" ); }
64 this->debug() <<
"Production of N-Tuples is switched OFF" <<
endmsg;
69 if ( 0 == this->evtColSvc() ) {
return this->Error(
"INTupleSvc* points to NULL!" ); }
73 this->debug() <<
"Production of Event Collections is switched OFF" <<
endmsg;
◆ nTuple() [1/2]
Access an N-Tuple object (book on-demand) with unique identifier.
tuple->column(
"A" ,
sin(0.1) );
tuple->column(
"B" ,
cos(0.1) );
tuple->column(
"C" ,
tan(0.1) );
tuple->write();
- Attention
- The NTuple will get a unique identifier automatically assigned which by default will be equal to the histogram title. An option exists to instead use numerical IDs. In this case the first NTuple booked will be ID=1 the next ID=2 and so on. Note though this scheme is not recommended as it does NOT guarantee predictability of the ID a given NTuple will be given when filled under conditional statements, since in these circumstances the order in which the NTuple are first filled, and thus booked, will depend on the nature of the first few events read. This is particularly problematic when users submit many parallel 'sub-jobs' and then attempt to merge the final output ROOT (or HBOOK) files, since a given NTuple could have different IDs in each of the sub-jobs. Consequently it is strongly recommended that users do not use numerical automatic IDs unless they are sure they understand what they are doing.
- Parameters
-
title | Unique title for N-Tuple |
clid | N-Tuple class identifier (row or column wise) |
- Returns
- ntuple The ntuple object
Definition at line 113 of file GaudiTuples.icpp.
115 auto&
m = nTupleByTitle();
116 auto tuple =
m.find( title );
117 if ( tuple !=
m.end() )
return Tuple( tuple->tuple );
120 if ( this->useNumericAutoIDs() || title.
empty() ) {
121 if ( !this->useNumericAutoIDs() ) {
123 "Cannot generate automatic literal ID from an empty title ! Using numeric ID instead for nTuple ID",
133 ID =
TupleID( this->convertTitleToID( title ) );
138 return nTuple( ID, title, clid );
◆ nTuple() [2/2]
Access an N-Tuple object (book on-demand) with forced identifier.
tuple->column(
"A" ,
sin(0.1) );
tuple->column(
"B" ,
cos(0.1) );
tuple->column(
"C" ,
tan(0.1) );
tuple->write();
- Attention
- If the N-Tuple with given ID is already booked through automatic assignment of N-Tuple ID, the error will not be detected. Therefore it is recommended to use a non-trivial N-Tuple ID offset (property "NTupleOffSet") if one need to combine these techniques together It is still desirable to use the unique N-Tuple title to avoid a bad interference.
- Parameters
-
ID | The forced N-Tuple ID |
title | Unique title for N-Tuple |
clid | N-Tuple class identifier (row or column wise) |
- Returns
- ntuple The ntuple object
Definition at line 179 of file GaudiTuples.icpp.
181 if ( ID.undefined() ) {
182 this->Error(
"Undefined NTuple ID : Title='" + title1 +
"'" ).ignore();
187 auto&
m = nTupleByID();
188 auto tuple =
m.find( ID );
189 if ( tuple !=
m.end() )
return Tuple( tuple->tuple );
200 if ( !
r.second ) this->Error(
"Failure to createNTuple" ).ignore();
201 return Tuple(
r.first->tuple );
205 if ( ID.numeric() ) {
206 tup = this->ntupleSvc()->book(
nTuplePath(), ID.numericID(), clid, title );
207 }
else if ( ID.literal() ) {
208 tup = this->ntupleSvc()->book(
nTuplePath(), ID.literalID(), clid, title );
210 this->Error(
"Undefined NTuple ID" ).ignore();
214 this->Assert( tup,
"Could not book the N-Tuple='" + title +
"'" );
217 this->debug() <<
"Booked NTuple '" << title <<
"' ID=" << tID <<
"' Path='" <<
nTuplePath() <<
"' TS='"
222 if ( !
r.second ) this->Error(
"Failure to createNTuple" ).ignore();
223 return Tuple(
r.first->tuple );
◆ nTupleDir()
get the N-Tuple directory (property "NTupleDir")
Definition at line 221 of file GaudiTuples.h.
◆ nTupleExists()
check the existence AND validity of the N-Tuple with the given ID
Definition at line 340 of file GaudiTuples.icpp.
341 auto&
m = nTupleByID();
342 return m.find( ID ) !=
m.end();
◆ nTupleLUN()
get the logical unit for N-Tuples (property "NTupleLUN")
Definition at line 217 of file GaudiTuples.h.
◆ nTupleOffSet()
get the value for N-Tuple offset (property "NTupleOffSet")
Definition at line 223 of file GaudiTuples.h.
◆ nTuplePath()
◆ nTupleTopDir()
get the top-level N-Tuple directory (property "NTupleTopDir")
Definition at line 219 of file GaudiTuples.h.
◆ printEvtCols()
perform the actual printout of Event Tag Collections
- Returns
- number of active Event Tag Collections
Definition at line 318 of file GaudiTuples.icpp.
320 this->always() <<
"No Event Tag Collections are booked" <<
endmsg;
322 this->always() <<
"List of booked Event Tag Collections in directory "
325 for (
const auto& entry : this->evtColOrdered() ) {
326 if ( !entry.tuple->tuple() ) {
327 this->error() <<
" NTuple::Tuple* points to NULL" <<
endmsg;
◆ printTuples()
perform the actual printout of N-tuples
- Returns
- number of active N-Tuples
Definition at line 295 of file GaudiTuples.icpp.
298 if ( this->msgLevel(
MSG::DEBUG ) ) this->debug() <<
"No N-Tuples are booked" <<
endmsg;
300 this->always() <<
"List of booked N-Tuples in directory "
304 for (
const auto& entry : this->nTupleOrdered() ) {
305 if ( !entry.tuple->tuple() ) {
306 this->error() <<
" NTuple::Tuple* points to NULL" <<
endmsg;
◆ produceEvtCols()
get the flag for Event Tag Collection production (property "EvtColsProduce")
Definition at line 227 of file GaudiTuples.h.
◆ produceNTuples()
get the flag for N-Tuple production (property "NTupleProduce")
Definition at line 213 of file GaudiTuples.h.
◆ splitEvtColDir()
get the flag for Event Tag Collection path split (property "EvtColsSplitDir")
Definition at line 229 of file GaudiTuples.h.
◆ splitNTupleDir()
get the flag for N-Tuple path split (property "NTupleSplitDir")
Definition at line 215 of file GaudiTuples.h.
◆ tuplesPrint()
◆ m_evtColDir
Initial value:{this, "EvtColDir",
boost::algorithm::replace_all_copy( this->
name(),
":",
"_" ),
"Subdirectory for Event Tag Collections"}
Definition at line 353 of file GaudiTuples.h.
◆ m_evtColLUN
◆ m_evtColMap
the actual storage of event collections by title and ID
Definition at line 389 of file GaudiTuples.h.
◆ m_evtColOffSet
◆ m_evtColsPrint
Initial value:{this, "EvtColsPrint", false,
[this]( auto& ) {
},
"print statistics for Event Tag Collections "}
Definition at line 340 of file GaudiTuples.h.
◆ m_evtColTopDir
Initial value:{this, "EvtColTopDir", "",
"Top-level directory for Event Tag Collections"}
Definition at line 351 of file GaudiTuples.h.
◆ m_nTupleDir
Initial value:{
this,
"NTupleDir", boost::algorithm::replace_all_copy( this->
name(),
":",
"_" ),
"subdirectory for N-Tuples"}
Definition at line 335 of file GaudiTuples.h.
◆ m_nTupleLUN
◆ m_nTupleMap
the actual storage of ntuples by title and ID
Definition at line 381 of file GaudiTuples.h.
◆ m_nTupleOffSet
◆ m_nTupleTopDir
◆ m_produceEvtCols
Initial value:{this, "EvtColsProduce", false,
"general switch to enable/disable Event Tag Collections"}
Definition at line 338 of file GaudiTuples.h.
◆ m_produceNTuples
template<class PBASE >
Gaudi::Property<bool> GaudiTuples< PBASE >::m_produceNTuples {this, "NTupleProduce", true, "general switch to enable/disable N-tuples"} |
|
private |
◆ m_splitEvtColDir
template<class PBASE >
Gaudi::Property<bool> GaudiTuples< PBASE >::m_splitEvtColDir {this, "EvtColSplitDir", false, "split long directory names into short pieces"} |
|
private |
◆ m_splitNTupleDir
Initial value:{this, "NTupleSplitDir", false,
"split long directory names into short pieces (suitable for HBOOK)"}
Definition at line 330 of file GaudiTuples.h.
◆ m_tuplesPrint
Initial value:{this, "NTuplePrint", true,
[this]( auto& ) {
},
"print N-tuple statistics"}
Definition at line 322 of file GaudiTuples.h.
The documentation for this class was generated from the following files:
const std::string & nTupleLUN() const
get the logical unit for N-Tuples (property "NTupleLUN")
const std::string & nTupleDir() const
get the N-Tuple directory (property "NTupleDir")
Gaudi::Property< std::string > m_nTupleLUN
Gaudi::Property< bool > m_produceEvtCols
GaudiAlg::TupleID TupleID
the actual type of N-tuple ID
Gaudi::Property< std::string > m_evtColDir
Gaudi::Property< bool > m_tuplesPrint
Gaudi::Property< std::string > m_nTupleTopDir
Gaudi::Property< bool > m_splitEvtColDir
const std::string & evtColDir() const
get the Event Tag Collection directory (property "EvtColsDir")
nTupleMap m_nTupleMap
the actual storage of ntuples by title and ID
Gaudi::Property< TupleID::NumericID > m_evtColOffSet
virtual std::unique_ptr< Tuples::TupleObj > createEvtCol(const std::string &name, NTuple::Tuple *tuple, const CLID &clid) const
create TupleObj for event tag collection
bool produceEvtCols() const
get the flag for Event Tag Collection production (property "EvtColsProduce")
static std::string print(const INTuple *tuple, const GaudiAlg::TupleID &ID)
Gaudi::Property< bool > m_evtColsPrint
virtual StatusCode write()=0
Write record of the NTuple (Shortcut of writeRecord)
Gaudi::Property< bool > m_splitNTupleDir
long printEvtCols() const
perform the actual printout of Event Tag Collections
Gaudi::Property< std::string > m_nTupleDir
virtual std::unique_ptr< Tuples::TupleObj > createNTuple(const std::string &name, NTuple::Tuple *tuple, const CLID &clid) const
create TupleObj
nTupleMap m_evtColMap
the actual storage of event collections by title and ID
bool produceNTuples() const
get the flag for N-Tuple production (property "NTupleProduce")
Tuple evtCol(const std::string &title, const CLID &clid=CLID_ColumnWiseTuple) const
Access an Event Tag Collection object (book on-demand) with unique identifier.
Gaudi::Property< std::string > m_evtColLUN
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
auto createTupleObj(const OWNER *owner, const std::string &name, NTuple::Tuple *tuple, const CLID &clid=CLID_ColumnWiseTuple, const Tuples::Type type=Tuples::NTUPLE)
Templated helper functions allow to avoid heavy semantics of dealing with explicit type of class Tupl...
std::string toString(const TYPE &obj)
the generic implementation of the type conversion to the string
Gaudi::Property< std::string > m_evtColTopDir
bool evtColExists(const TupleID &ID) const
check the existence AND validity of the Event Tag Collection with the given ID
TupleID::NumericID nTupleOffSet() const
get the value for N-Tuple offset (property "NTupleOffSet")
constexpr static const auto SUCCESS
Abstract base class which allows the user to interact with the actual N tuple implementation.
const std::string & evtColLUN() const
get the logical unit for Event Tag Collections (property "EvtColsLUN")
Tuple nTuple(const std::string &title, const CLID &clid=CLID_ColumnWiseTuple) const
Access an N-Tuple object (book on-demand) with unique identifier.
long printTuples() const
perform the actual printout of N-tuples
bool evtColsPrint() const
print event collections at finalization
std::string evtColPath() const
get the constructed Event Tag Collection path
virtual const id_type & identifier() const =0
Full identifier (or key)
std::string nTuplePath() const
get the constructed N-Tuple path
TupleID::NumericID evtColOffSet() const
get the value for Event Tag Collection offset (property "EvtColsOffSet")
bool splitEvtColDir() const
get the flag for Event Tag Collection path split (property "EvtColsSplitDir")
Tuples::Tuple Tuple
the actual type of the tuple
const std::string & evtColTopDir() const
get the top-level Event Tag Collection directory (property "EvtColsTopDir")
const std::string & nTupleTopDir() const
get the top-level N-Tuple directory (property "NTupleTopDir")
Gaudi::Property< bool > m_produceNTuples
bool tuplesPrint() const
print tuples at finalization
IRegistry * registry() const
Get pointer to Registry.
bool splitNTupleDir() const
get the flag for N-Tuple path split (property "NTupleSplitDir")
bool nTupleExists(const TupleID &ID) const
check the existence AND validity of the N-Tuple with the given ID
Gaudi::Property< TupleID::NumericID > m_nTupleOffSet