#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 |
|
Gaudi::Property< TupleID::NumericID > | m_evtColOffSet { this, "EvtColOffSet", 0, "offset for numerical N-tuple ID" } |
|
Gaudi::Property< std::string > | m_evtColLUN |
|
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 275 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 265 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 134 of file GaudiTuples.icpp.
136 auto&
m = evtColByTitle();
137 auto tuple =
m.find( title );
138 if ( tuple !=
m.end() )
return Tuple( tuple->tuple );
141 if ( this->useNumericAutoIDs() || title.
empty() ) {
142 if ( !this->useNumericAutoIDs() ) {
144 "Cannot generate automatic literal ID from an empty title ! Using numeric ID instead for evtCol ID",
154 ID =
TupleID( this->convertTitleToID( title ) );
159 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 216 of file GaudiTuples.icpp.
218 if ( ID.undefined() ) {
219 this->Error(
"Undefined NTuple ID : Title='" + title1 +
"'" ).ignore();
224 auto& tuple = evtColByID();
225 auto i = tuple.find( ID );
226 if ( i != tuple.end() )
return Tuple( i->tuple );
237 if ( !r.second ) this->Error(
"Failure to createEvtCol" ).ignore();
238 return Tuple( r.first->tuple );
242 if ( ID.numeric() ) {
243 tup = this->evtColSvc()->book(
evtColPath(), ID.numericID(), clid, title );
244 }
else if ( ID.literal() ) {
245 tup = this->evtColSvc()->book(
evtColPath(), ID.literalID(), clid, title );
247 this->Error(
"Undefined NTuple ID" ).ignore();
251 this->Assert( tup,
"Could not book the EvtCol='" + title +
"'" );
254 this->debug() <<
"Booked EvtCol '" << title <<
"' ID=" << tID <<
"' Path='" <<
evtColPath() <<
"' TS='"
258 if ( !r.second ) this->Error(
"Failure to createEvtCol" ).ignore();
259 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 336 of file GaudiTuples.icpp.
337 auto&
m = evtColByID();
338 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 77 of file GaudiTuples.icpp.
81 this->always() <<
"Booked " << nNtuples <<
" N-Tuples and " << nEvtCols <<
" Event Tag Collections" <<
endmsg;
94 return PBASE::finalize();
◆ initialize()
standard initialization method
- Returns
- status code
Definition at line 47 of file GaudiTuples.icpp.
54 if ( this->ntupleSvc() == 0 ) {
return this->Error(
"INTupleSvc* points to NULL!" ); }
58 this->debug() <<
"Production of N-Tuples is switched OFF" <<
endmsg;
63 if ( 0 == this->evtColSvc() ) {
return this->Error(
"INTupleSvc* points to NULL!" ); }
67 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 101 of file GaudiTuples.icpp.
103 auto&
m = nTupleByTitle();
104 auto tuple =
m.find( title );
105 if ( tuple !=
m.end() )
return Tuple( tuple->tuple );
108 if ( this->useNumericAutoIDs() || title.
empty() ) {
109 if ( !this->useNumericAutoIDs() ) {
111 "Cannot generate automatic literal ID from an empty title ! Using numeric ID instead for nTuple ID",
121 ID =
TupleID( this->convertTitleToID( title ) );
126 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 167 of file GaudiTuples.icpp.
169 if ( ID.undefined() ) {
170 this->Error(
"Undefined NTuple ID : Title='" + title1 +
"'" ).ignore();
175 auto&
m = nTupleByID();
176 auto tuple =
m.find( ID );
177 if ( tuple !=
m.end() )
return Tuple( tuple->tuple );
188 if ( !r.second ) this->Error(
"Failure to createNTuple" ).ignore();
189 return Tuple( r.first->tuple );
193 if ( ID.numeric() ) {
194 tup = this->ntupleSvc()->book(
nTuplePath(), ID.numericID(), clid, title );
195 }
else if ( ID.literal() ) {
196 tup = this->ntupleSvc()->book(
nTuplePath(), ID.literalID(), clid, title );
198 this->Error(
"Undefined NTuple ID" ).ignore();
202 this->Assert( tup,
"Could not book the N-Tuple='" + title +
"'" );
205 this->debug() <<
"Booked NTuple '" << title <<
"' ID=" << tID <<
"' Path='" <<
nTuplePath() <<
"' TS='"
210 if ( !r.second ) this->Error(
"Failure to createNTuple" ).ignore();
211 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 328 of file GaudiTuples.icpp.
329 auto&
m = nTupleByID();
330 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 306 of file GaudiTuples.icpp.
308 this->always() <<
"No Event Tag Collections are booked" <<
endmsg;
310 this->always() <<
"List of booked Event Tag Collections in directory "
313 for (
const auto& entry : this->evtColOrdered() ) {
314 if ( !entry.tuple->tuple() ) {
315 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 283 of file GaudiTuples.icpp.
286 if ( this->msgLevel(
MSG::DEBUG ) ) this->debug() <<
"No N-Tuples are booked" <<
endmsg;
288 this->always() <<
"List of booked N-Tuples in directory "
292 for (
const auto& entry : this->nTupleOrdered() ) {
293 if ( !entry.tuple->tuple() ) {
294 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 341 of file GaudiTuples.h.
◆ m_evtColLUN
Initial value:{ this, "EvtColLUN", "EVTCOL",
"Logical File Unit for Event Tag Collections" }
Definition at line 337 of file GaudiTuples.h.
◆ m_evtColMap
the actual storage of event collections by title and ID
Definition at line 377 of file GaudiTuples.h.
◆ m_evtColOffSet
◆ m_evtColsPrint
Initial value:{ this, "EvtColsPrint", false,
[this]( auto& ) {
},
"print statistics for Event Tag Collections " }
Definition at line 326 of file GaudiTuples.h.
◆ m_evtColTopDir
Initial value:{ this, "EvtColTopDir", "",
"Top-level directory for Event Tag Collections" }
Definition at line 339 of file GaudiTuples.h.
◆ m_nTupleDir
Initial value:{
this,
"NTupleDir", boost::algorithm::replace_all_copy( this->
name(),
":",
"_" ),
"subdirectory for N-Tuples" }
Definition at line 321 of file GaudiTuples.h.
◆ m_nTupleLUN
◆ m_nTupleMap
the actual storage of ntuples by title and ID
Definition at line 369 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 324 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
Initial value:{ this, "EvtColSplitDir", false,
"split long directory names into short pieces" }
Definition at line 334 of file GaudiTuples.h.
◆ m_splitNTupleDir
Initial value:{ this, "NTupleSplitDir", false,
"split long directory names into short pieces (suitable for HBOOK)" }
Definition at line 316 of file GaudiTuples.h.
◆ m_tuplesPrint
Initial value:{ this, "NTuplePrint", true,
[this]( auto& ) {
},
"print N-tuple statistics" }
Definition at line 308 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