The Gaudi Framework  v37r0 (b608885e)
RootHistCnv::RCWNTupleCnv Class Reference

#include </builds/gaudi/Gaudi/RootHistCnv/src/RCWNTupleCnv.h>

Inheritance diagram for RootHistCnv::RCWNTupleCnv:
Collaboration diagram for RootHistCnv::RCWNTupleCnv:

Public Member Functions

 RCWNTupleCnv (ISvcLocator *svc)
 Standard constructor. More...
 
- Public Member Functions inherited from RootHistCnv::RNTupleCnv
StatusCode initialize () override
 Initialize the converter. More...
 
StatusCode finalize () override
 Finalize the converter. More...
 
StatusCode createObj (IOpaqueAddress *pAddr, DataObject *&refpObj) override
 Create the transient representation of an object. More...
 
StatusCode updateObj (IOpaqueAddress *pAddr, DataObject *refpObj) override
 Update the transient object from the other representation. More...
 
StatusCode createRep (DataObject *pObj, IOpaqueAddress *&refpAddr) override
 Convert the transient object to the requested representation. More...
 
StatusCode updateRep (IOpaqueAddress *pAddr, DataObject *pObj) override
 Update the converted representation of a transient object. More...
 
- Public Member Functions inherited from RootHistCnv::RConverter
StatusCode createRep (DataObject *pObj, IOpaqueAddress *&refpAddr) override
 Convert the transient object to the requested representation. More...
 
long repSvcType () const override
 
StatusCode error (const std::string &msg)
 
StatusCode regTFile (const std::string, const TFile *)
 
StatusCode findTFile (const std::string, TFile *&)
 
std::string diskDirectory (const std::string &loc)
 
std::string directory (const std::string &loc)
 
void setDirectory (const std::string &loc)
 
void setDiskDirectory (const std::string &loc)
 
StatusCode createDirectory (const std::string &loc)
 
StatusCode createDiskDirectory (const std::string &loc)
 
std::string getDirectory ()
 
std::string convertId (const std::string &) const
 
- Public Member Functions inherited from Converter
StatusCode initialize () override
 Initialize the converter. More...
 
StatusCode finalize () override
 Initialize the converter. More...
 
StatusCode setDataProvider (IDataProviderSvc *svc) override
 Set Data provider service. More...
 
SmartIF< IDataProviderSvc > & dataProvider () const override
 Get Data provider service. More...
 
StatusCode setConversionSvc (IConversionSvc *svc) override
 Set conversion service the converter is connected to. More...
 
SmartIF< IConversionSvc > & conversionSvc () const override
 Get conversion service the converter is connected to. More...
 
StatusCode setAddressCreator (IAddressCreator *creator) override
 Set address creator facility. More...
 
SmartIF< IAddressCreator > & addressCreator () const override
 Retrieve address creator facility. More...
 
const CLIDobjType () const override
 Retrieve the class type of objects the converter produces. More...
 
virtual long i_repSvcType () const
 Retrieve the class type of the data store the converter uses. More...
 
StatusCode createObj (IOpaqueAddress *pAddress, DataObject *&refpObject) override
 Create the transient representation of an object. More...
 
StatusCode fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
 Resolve the references of the created transient object. More...
 
StatusCode updateObj (IOpaqueAddress *pAddress, DataObject *refpObject) override
 Update the transient object from the other representation. More...
 
StatusCode updateObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
 Update the references of an updated transient object. More...
 
StatusCode createRep (DataObject *pObject, IOpaqueAddress *&refpAddress) override
 Convert the transient object to the requested representation. More...
 
StatusCode fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
 Resolve the references of the converted object. More...
 
StatusCode updateRep (IOpaqueAddress *pAddress, DataObject *pObject) override
 Update the converted representation of a transient object. More...
 
StatusCode updateRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) override
 Update the references of an already converted object. More...
 
 Converter (long storage_type, const CLID &class_type, ISvcLocator *svc=0)
 Standard Constructor. More...
 
template<class T >
StatusCode service (const std::string &name, T *&psvc, bool createIf=false) const
 Access a service by name, creating it if it doesn't already exist. More...
 
template<class T >
StatusCode service (const std::string &type, const std::string &name, T *&psvc) const
 Access a service by name, type creating it if it doesn't already exist. More...
 
SmartIF< IServiceservice (const std::string &name, const bool createIf=true) const
 Return a pointer to the service identified by name (or "type/name") More...
 
- Public Member Functions inherited from implements< IConverter >
void * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast. More...
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface. More...
 
std::vector< std::stringgetInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
 implements ()=default
 Default constructor. More...
 
 implements (const implements &)
 Copy constructor (zero the reference count) More...
 
implementsoperator= (const implements &)
 Assignment operator (do not touch the reference count). More...
 
unsigned long addRef () override
 Reference Interface instance
More...
 
unsigned long release () override
 Release Interface instance
More...
 
unsigned long refCount () const override
 Current reference count
More...
 

Static Public Member Functions

static const CLIDclassID ()
 Inquire class type. More...
 
- Static Public Member Functions inherited from RootHistCnv::RConverter
static long storageType ()
 Inquire storage type. More...
 

Protected Member Functions

StatusCode load (TTree *tree, INTuple *&refpObject) override
 Create the transient representation of an object. More...
 
StatusCode book (const std::string &desc, INTuple *pObject, TTree *&tree) override
 Book the N tuple. More...
 
StatusCode writeData (TTree *rtree, INTuple *pObject) override
 Write N tuple data. More...
 
StatusCode readData (TTree *rtree, INTuple *pObject, long ievt) override
 Read N tuple data. More...
 
- Protected Member Functions inherited from RootHistCnv::RNTupleCnv
 RNTupleCnv (ISvcLocator *svc, const CLID &clid)
 Standard constructor. More...
 
virtual std::string rootVarType (int)
 Return ROOT type info: More...
 
- Protected Member Functions inherited from RootHistCnv::RConverter
 RConverter (const CLID &clid, ISvcLocator *svc)
 Standard constructor. More...
 
virtual StatusCode readObject (IOpaqueAddress *pAddr, DataObject *&refpObj)
 Create the transient representation of an object. More...
 
virtual TObject * createPersistent (DataObject *pObj)
 Create the persistent representation of an object. More...
 
StatusCode createAddress (DataObject *pObject, TDirectory *pDir, TObject *pTObject, IOpaqueAddress *&refpAddr)
 Create address of the transient object according to the requested representation. More...
 
StatusCode createAddress (const std::string &rzdir, const CLID &clid, long id, TObject *pTobj, IOpaqueAddress *&refpAddress)
 
StatusCode createAddress (const std::string &rzdir, const CLID &clid, const std::string &title, TObject *pTobj, IOpaqueAddress *&refpAddress)
 
TDirectory * changeDirectory (DataObject *pObject)
 Switch to object directory (=Parent directory) More...
 
- Protected Member Functions inherited from Converter
SmartIF< ISvcLocator > & serviceLocator () const
 Retrieve pointer to service locator. More...
 
SmartIF< IMessageSvc > & msgSvc () const
 Retrieve pointer to message service. More...
 
SmartIF< IDataManagerSvc > & dataManager () const
 Get Data Manager service. More...
 

Additional Inherited Members

- Public Types inherited from Converter
using Factory = Gaudi::PluginService::Factory< IConverter *(ISvcLocator *)>
 
- Public Types inherited from implements< IConverter >
using base_class = implements< Interfaces... >
 Typedef to this class. More...
 
using extend_interfaces_base = extend_interfaces< Interfaces... >
 Typedef to the base of this class. More...
 
using iids = typename extend_interfaces_base::ext_iids
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
 take union of the ext_iids of all Interfaces... More...
 
- Protected Attributes inherited from RootHistCnv::RNTupleCnv
SmartIF< INTupleSvcm_ntupleSvc
 Reference to N tuple service. More...
 
- Protected Attributes inherited from implements< IConverter >
std::atomic_ulong m_refCount
 Reference counter
More...
 

Detailed Description

Converter of Column-wise NTuple into ROOT format

Author
Charles Leggett

Definition at line 30 of file RCWNTupleCnv.h.

Constructor & Destructor Documentation

◆ RCWNTupleCnv()

RootHistCnv::RCWNTupleCnv::RCWNTupleCnv ( ISvcLocator svc)
inline

Standard constructor.

Definition at line 35 of file RCWNTupleCnv.h.

35 : RNTupleCnv( svc, classID() ) {}

Member Function Documentation

◆ book()

StatusCode RootHistCnv::RCWNTupleCnv::book ( const std::string desc,
INTuple pObject,
TTree *&  tree 
)
overrideprotectedvirtual

Book the N tuple.

Implements RootHistCnv::RNTupleCnv.

Definition at line 137 of file RCWNTupleCnv.cpp.

139 {
140  MsgStream log( msgSvc(), "RCWNTupleCnv" );
141  rtree = new TTree( desc.c_str(), nt->title().c_str() );
142  log << MSG::VERBOSE << "created tree id: " << rtree->GetName() << " title: " << nt->title() << " desc: " << desc
143  << endmsg;
144 
145  // Loop over the items
146 
147  std::string block_name, var_name;
148  long lowerRange, upperRange;
149  long size = 0;
150  long cursize, oldsize = 0;
151  std::vector<std::string> item_fullname;
152  // std::vector<long> item_size,item_size2;
153  std::vector<long> item_buf_pos, item_buf_len, item_buf_end;
154  std::vector<long> item_range_lower, item_range_upper;
156 
157  for ( const auto& i : nt->items() ) {
158  std::string item;
159 
160  visit( *i, [&]( const auto& data ) {
161  analyzeItem( this->rootVarType( data.type() ), &data, item, block_name, var_name, lowerRange, upperRange, size );
162  } );
163 
164  item_name.emplace_back( block_name, item );
165  cursize = size - oldsize;
166 
167  log << MSG::VERBOSE << "item: " << item << " type " << i->type() << " blk: " << block_name << " var: " << var_name
168  << " rng: " << lowerRange << " " << upperRange << " sz: " << size << " " << cursize
169  << " buf_pos: " << size - cursize << endmsg;
170 
171  item_fullname.push_back( var_name );
172  item_buf_pos.push_back( size - cursize );
173  item_buf_len.push_back( cursize );
174  item_buf_end.push_back( size );
175  item_range_lower.push_back( lowerRange );
176  item_range_upper.push_back( upperRange );
177 
178  oldsize = size;
179  }
180 
181  // Make a new buffer, and tell the ntuple where it is
182  char* buff = nt->setBuffer( new char[size] );
183 
184  log << MSG::VERBOSE << "Created buffer size: " << size << " at " << (void*)buff << endmsg;
185 
186  // Zero out the buffer to make ROOT happy
187  std::fill_n( buff, size, 0 );
188 
189  char* buf_pos = buff;
190 
191  auto end = item_name.cend();
192 
193  // Loop over items, creating a new branch for each one;
194  unsigned int i_item = 0;
195  for ( auto itr = item_name.cbegin(); itr != end; ++itr, ++i_item ) {
196 
197  buf_pos = buff + item_buf_pos[i_item];
198 
199  // log << MSG::WARNING << "adding TBranch " << i_item << " "
200  // << item_fullname[i_item]
201  // << " format: " << itr->second.c_str() << " at "
202  // << (void*) buf_pos << " (" << (void*) buff << "+"
203  // << (void*)item_buf_pos[i_item] << ")"
204  // << endmsg;
205 
206 #if ROOT_VERSION_CODE >= ROOT_VERSION( 5, 15, 0 )
207  auto br = new TBranch( rtree,
208 #else
209  TBranch* br = new TBranch(
210 #endif
211  item_fullname[i_item].c_str(), buf_pos, itr->second.c_str() );
212 
213  if ( itr->first != "AUTO_BLK" ) {
214  std::string title = itr->first;
215  title = itr->first + "::" + br->GetTitle();
216  br->SetTitle( title.c_str() );
217  }
218 
219  log << MSG::DEBUG << "adding TBranch " << br->GetTitle() << " at " << (void*)buf_pos << endmsg;
220 
221  // for index items with a limited range. Must be a TLeafI!
222  if ( item_range_lower[i_item] < item_range_upper[i_item] ) {
223  // log << MSG::VERBOSE << "\"" << item_fullname[i_item]
224  // << "\" is range limited " << item_range_lower[i_item] << " "
225  // << item_range_upper[i_item] << endmsg;
226  TLeafI* index = nullptr;
227  TObject* tobj = br->GetListOfLeaves()->FindObject( item_fullname[i_item].c_str() );
228  if ( tobj->IsA()->InheritsFrom( "TLeafI" ) ) {
229  index = dynamic_cast<TLeafI*>( tobj );
230 
231  if ( index ) {
232  index->SetMaximum( item_range_upper[i_item] );
233  // FIXME -- add for next version of ROOT
234  // index->SetMinimum( item_range_lower[i_item] );
235  } else {
236  log << MSG::ERROR << "Could dynamic cast to TLeafI: " << item_fullname[i_item] << endmsg;
237  }
238  }
239  }
240 
241  rtree->GetListOfBranches()->Add( br );
242  }
243 
244  log << MSG::INFO << "Booked TTree with ID: " << desc << " \"" << nt->title() << "\" in directory " << getDirectory()
245  << endmsg;
246 
247  return StatusCode::SUCCESS;
248 }

◆ classID()

static const CLID& RootHistCnv::RCWNTupleCnv::classID ( )
inlinestatic

Inquire class type.

Definition at line 33 of file RCWNTupleCnv.h.

33 { return CLID_ColumnWiseTuple; }

◆ load()

StatusCode RootHistCnv::RCWNTupleCnv::load ( TTree *  tree,
INTuple *&  refpObject 
)
overrideprotectedvirtual

Create the transient representation of an object.

Implements RootHistCnv::RNTupleCnv.

Definition at line 292 of file RCWNTupleCnv.cpp.

294 {
295  MsgStream log( msgSvc(), "RCWNTupleCnv::load" );
296 
297  StatusCode status;
298 
299  NTuple::Tuple* pObj = nullptr;
300 
301  std::string title = tree->GetTitle();
302  log << MSG::VERBOSE << "loading CWNT " << title << " at: " << tree << endmsg;
303 
304  status = m_ntupleSvc->create( CLID_ColumnWiseTuple, title, pObj );
305  INTuple* ntup = dynamic_cast<INTuple*>( pObj );
306  if ( !ntup ) { log << MSG::ERROR << "cannot dynamic cast to INTuple" << endmsg; }
307 
308  INTupleItem* item = nullptr;
309 
310  std::string itemName, indexName, item_type, itemTitle, blockName;
311  // long numEnt, numVar;
312  long size, totsize = 0;
314 
315  // numEnt = (int)tree->GetEntries();
316  // numVar = tree->GetNbranches();
317 
318  // loop over all branches (==leaves)
319  TObjArray* lbr = tree->GetListOfBranches();
320  TIter bitr( lbr );
321  while ( TObject* tobjb = bitr() ) {
322 
323  TBranch* br = (TBranch*)tobjb;
324  itemTitle = br->GetTitle();
325 
326  int ipos = itemTitle.find( "::" );
327  if ( ipos >= 0 ) {
328  blockName = itemTitle.substr( 0, ipos );
329  } else {
330  blockName = "";
331  }
332 
333  TObjArray* lf = br->GetListOfLeaves();
334 
335  TIter litr( lf );
336  while ( TObject* tobj = litr() ) {
337 
338  bool hasRange = false;
339  int indexRange = 0;
340  int itemSize;
341  item = nullptr;
342 
343  // TLeaf* tl = (TLeaf*)tobj;
344  TLeaf* tl = dynamic_cast<TLeaf*>( tobj );
345  if ( tl ) {
346  itemName = tl->GetName();
347  } else {
348  log << MSG::ERROR << "cannot dynamic cast to TLeaf" << endmsg;
349  }
350 
351  // char* buf_pos = (char*)tl->GetValuePointer();
352  // cout << " " << itemName << " " << blockName << " "
353  // << (void*)buf_pos;
354 
355  if ( blockName != "" ) {
356  log << MSG::DEBUG << "loading NTuple item " << blockName << "/" << itemName;
357  } else {
358  log << MSG::DEBUG << "loading NTuple item " << itemName;
359  }
360 
361  int arraySize{ 0 };
362  TLeaf* indexLeaf = ( tl ? tl->GetLeafCounter( arraySize ) : nullptr );
363 
364  if ( arraySize == 0 ) { log << MSG::ERROR << "TLeaf counter size = 0. This should not happen!" << endmsg; }
365 
366  if ( indexLeaf ) {
367  // index Arrays and Matrices
368 
369  indexName = indexLeaf->GetName();
370  // indexRange = tl->GetNdata();
371  indexRange = indexLeaf->GetMaximum();
372  itemSize = indexRange * tl->GetLenType() * arraySize;
373 
374  log << "[" << indexName;
375 
376  // Just for Matrices
377  if ( arraySize != 1 ) { log << "][" << arraySize; }
378  log << "]";
379 
380  } else {
381  itemSize = tl->GetLenType() * arraySize;
382 
383  indexName = "";
384 
385  if ( arraySize == 1 ) {
386  // Simple items
387  } else {
388  // Arrays of constant size
389  log << "[" << arraySize << "]";
390  }
391  }
392 
393  log << endmsg;
394 
395  // cout << " index: " << indexName << endl;
396 
397  // size = tl->GetNdata() * tl->GetLenType();
398  size = itemSize;
399  totsize += size;
400 
401  hasRange = tl->IsRange();
402 
403  itemList.emplace_back( tl, itemSize );
404 
405  // Integer
406  if ( tobj->IsA()->InheritsFrom( "TLeafI" ) ) {
407 
408  TLeafI* tli = dynamic_cast<TLeafI*>( tobj );
409  if ( tli ) {
410  if ( tli->IsUnsigned() ) {
411  unsigned long min = 0, max = 0;
412  if ( hasRange ) {
413  min = tli->GetMinimum();
414  max = tli->GetMaximum();
415  }
416 
417  item = createNTupleItem( itemName, blockName, indexName, indexRange, arraySize, min, max, ntup );
418  } else {
419  long min = 0, max = 0;
420  if ( hasRange ) {
421  min = tli->GetMinimum();
422  max = tli->GetMaximum();
423  }
424 
425  item = createNTupleItem( itemName, blockName, indexName, indexRange, arraySize, min, max, ntup );
426  }
427  } else {
428  log << MSG::ERROR << "cannot dynamic cast to TLeafI" << endmsg;
429  }
430 
431  // Float
432  } else if ( tobj->IsA()->InheritsFrom( "TLeafF" ) ) {
433  float min = 0., max = 0.;
434 
435  TLeafF* tlf = dynamic_cast<TLeafF*>( tobj );
436  if ( tlf ) {
437  if ( hasRange ) {
438  min = float( tlf->GetMinimum() );
439  max = float( tlf->GetMaximum() );
440  }
441  } else {
442  log << MSG::ERROR << "cannot dynamic cast to TLeafF" << endmsg;
443  }
444 
445  item = createNTupleItem( itemName, blockName, indexName, indexRange, arraySize, min, max, ntup );
446 
447  // Double
448  } else if ( tobj->IsA()->InheritsFrom( "TLeafD" ) ) {
449  double min = 0., max = 0.;
450 
451  TLeafD* tld = dynamic_cast<TLeafD*>( tobj );
452  if ( tld ) {
453  if ( hasRange ) {
454  min = tld->GetMinimum();
455  max = tld->GetMaximum();
456  }
457  } else {
458  log << MSG::ERROR << "cannot dynamic cast to TLeafD" << endmsg;
459  }
460 
461  item = createNTupleItem( itemName, blockName, indexName, indexRange, arraySize, min, max, ntup );
462 
463  } else {
464  log << MSG::ERROR << "Uknown data type" << endmsg;
465  }
466 
467  if ( item ) {
468  ntup->add( item ).ignore();
469  } else {
470  log << MSG::ERROR << "Unable to create ntuple item \"" << itemName << "\"" << endmsg;
471  }
472 
473  } // end litr
474  } // end bitr
475 
476  log << MSG::DEBUG << "Total buffer size of NTuple: " << totsize << " Bytes." << endmsg;
477 
478  char* buf = ntup->setBuffer( new char[totsize] );
479  char* bufpos = buf;
480 
481  int ts = 0;
482  for ( const auto& iitr : itemList ) {
483  TLeaf* leaf = iitr.first;
484  int isize = iitr.second;
485 
486  log << MSG::VERBOSE << "setting TBranch " << leaf->GetBranch()->GetName() << " buffer at " << (void*)bufpos
487  << endmsg;
488 
489  leaf->GetBranch()->SetAddress( (void*)bufpos );
490 
491  // //testing
492  // if (leaf->IsA()->InheritsFrom("TLeafI")) {
493  // for (int ievt=0; ievt<5; ievt++) {
494  // leaf->GetBranch()->GetEvent(ievt);
495  // int *idat = (int*)bufpos;
496  // log << MSG::WARNING << leaf->GetName() << ": " << ievt << " "
497  // << *idat << endmsg;
498 
499  // }
500  // }
501 
502  ts += isize;
503 
504  bufpos += isize;
505  }
506 
507  if ( totsize != ts ) { log << MSG::ERROR << "buffer size mismatch: " << ts << " " << totsize << endmsg; }
508 
509  refpObject = ntup;
510 
511  return StatusCode::SUCCESS;
512 }

◆ readData()

StatusCode RootHistCnv::RCWNTupleCnv::readData ( TTree *  rtree,
INTuple pObject,
long  ievt 
)
overrideprotectedvirtual

Read N tuple data.

Implements RootHistCnv::RNTupleCnv.

Definition at line 268 of file RCWNTupleCnv.cpp.

270 {
271  if ( ievt >= rtree->GetEntries() ) {
272  MsgStream log( msgSvc(), "RCWNTupleCnv::readData" );
273  log << MSG::ERROR << "no more entries in tree to read. max: " << rtree->GetEntries() << " current: " << ievt
274  << endmsg;
275  return StatusCode::FAILURE;
276  }
277 
278  rtree->GetEvent( ievt );
279  ievt++;
280 
281  // copy data from ntup->buffer() to ntup->items()->buffer()
282  auto& items = ntup->items();
283  std::accumulate( begin( items ), end( items ), const_cast<const char*>( ntup->buffer() ),
284  []( const char* src, INTupleItem* i ) {
285  return src + visit( *i, [src]( auto& item ) { return loadItem( src, item ); } );
286  } );
287 
288  return StatusCode::SUCCESS;
289 }

◆ writeData()

StatusCode RootHistCnv::RCWNTupleCnv::writeData ( TTree *  rtree,
INTuple pObject 
)
overrideprotectedvirtual

Write N tuple data.

Implements RootHistCnv::RNTupleCnv.

Definition at line 253 of file RCWNTupleCnv.cpp.

255 {
256  // Fill the tree;
257  const auto& items = nt->items();
258  std::accumulate( begin( items ), end( items ), nt->buffer(), []( char* dest, const INTupleItem* i ) {
259  return dest + visit( *i, [dest]( const auto& item ) { return saveItem( dest, item ); } );
260  } );
261 
262  rtree->Fill();
263  nt->reset();
264  return StatusCode::SUCCESS;
265 }

The documentation for this class was generated from the following files:
MSG::DEBUG
@ DEBUG
Definition: IMessageSvc.h:25
std::string
STL class.
details::size
constexpr auto size(const T &, Args &&...) noexcept
Definition: AnyDataWrapper.h:22
Gaudi.Configuration.log
log
Definition: Configuration.py:30
RootHistCnv::createNTupleItem
INTupleItem * createNTupleItem(std::string itemName, std::string blockName, std::string indexName, int indexRange, int arraySize, TYP min, TYP max, INTuple *ntup)
Add an item of a given type to the N tuple.
Definition: RNTupleCnv.cpp:271
MSG::INFO
@ INFO
Definition: IMessageSvc.h:25
std::vector< std::string >
std::string::find
T find(T... args)
max
EventIDBase max(const EventIDBase &lhs, const EventIDBase &rhs)
Definition: EventIDBase.h:225
std::vector::push_back
T push_back(T... args)
INTuple::setBuffer
virtual char * setBuffer(char *buff)=0
Attach data buffer.
StatusCode
Definition: StatusCode.h:65
CLHEP::begin
double * begin(CLHEP::HepVector &v)
Definition: TupleAlg.cpp:45
compareRootHistos.ts
ts
Definition: compareRootHistos.py:489
std::string::c_str
T c_str(T... args)
RootHistCnv::RConverter::getDirectory
std::string getDirectory()
Definition: RConverter.cpp:158
RootHistCnv::RNTupleCnv::m_ntupleSvc
SmartIF< INTupleSvc > m_ntupleSvc
Reference to N tuple service.
Definition: RNTupleCnv.h:64
GaudiPython.Bindings.nullptr
nullptr
Definition: Bindings.py:92
INTuple
Definition: INTuple.h:91
std::accumulate
T accumulate(T... args)
INTuple::add
virtual StatusCode add(INTupleItem *item)=0
Add an item row to the N tuple.
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:203
min
EventIDBase min(const EventIDBase &lhs, const EventIDBase &rhs)
Definition: EventIDBase.h:212
INTupleItem
Definition: INTuple.h:37
MsgStream
Definition: MsgStream.h:34
StatusCode::ignore
const StatusCode & ignore() const
Allow discarding a StatusCode without warning.
Definition: StatusCode.h:139
gaudirun.dest
dest
Definition: gaudirun.py:226
std::string::substr
T substr(T... args)
RootHistCnv::RCWNTupleCnv::classID
static const CLID & classID()
Inquire class type.
Definition: RCWNTupleCnv.h:33
std::vector::emplace_back
T emplace_back(T... args)
MSG::VERBOSE
@ VERBOSE
Definition: IMessageSvc.h:25
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
NTuple::Tuple
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:387
std::vector::cbegin
T cbegin(T... args)
MSG::ERROR
@ ERROR
Definition: IMessageSvc.h:25
std::vector::cend
T cend(T... args)
IOTest.end
end
Definition: IOTest.py:123
Converter::msgSvc
SmartIF< IMessageSvc > & msgSvc() const
Retrieve pointer to message service.
Definition: Converter.cpp:105
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:101
RootHistCnv::RNTupleCnv::rootVarType
virtual std::string rootVarType(int)
Return ROOT type info:
Definition: RNTupleCnv.cpp:210
std::fill_n
T fill_n(T... args)
RootHistCnv::RNTupleCnv::RNTupleCnv
RNTupleCnv(ISvcLocator *svc, const CLID &clid)
Standard constructor.
Definition: RNTupleCnv.cpp:44
GaudiPython.Pythonizations.items
items
Definition: Pythonizations.py:546