ATLAS Offline Software
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
D3PD::RootD3PD Class Reference

Root-based D3PD tree. More...

#include <RootD3PD.h>

Inheritance diagram for D3PD::RootD3PD:
Collaboration diagram for D3PD::RootD3PD:

Public Types

typedef unsigned int Dim_t
 Currently unimplemented — see design note. More...
 

Public Member Functions

 RootD3PD (TTree *tree, const std::string &master, const std::vector< std::string > &allowedNames=std::vector< std::string >(), const std::vector< std::string > &vetoedNames=std::vector< std::string >(), int basketSize=-1, int entryOffsetLen=-1)
 Constructor. More...
 
 ~RootD3PD ()
 Destructor. More...
 
virtual StatusCode addVariable (const std::string &name, const std::type_info &ti, void *&ptr, const std::string &docstring="", const void *defval=0) override
 Add a variable to the tuple. More...
 
virtual StatusCode addDimensionedVariable (const std::string &name, const std::type_info &ti, void *&ptr, const std::string &dim, const std::string &docstring="", const void *defval=0) override
 Add a variable to the tuple. More...
 
virtual StatusCode capture () override
 Capture the current state of all variables and write to the tuple. More...
 
virtual StatusCode clear () override
 Clear all the tuple variables. More...
 
virtual StatusCode redim (const Dim_t *ptr) override
 Currently unimplemented — see design note. More...
 
const TTree * tree () const
 Return the underlying root tree. More...
 
TTree * tree ()
 
const std::string & master () const
 Return the name of the master tree. More...
 
virtual StatusCode addMetadata (const std::string &key, const void *obj, const std::type_info &ti) override
 Add a new piece of metadata to the tuple. More...
 
void setPoolFile (const std::string &poolFile)
 Set the name of a pool file to which we should attach. More...
 
StatusCode attachPoolFile ()
 Try to attach to a pool file, if we haven't yet done so. More...
 
template<class T >
StatusCode addMetadata (const std::string &key, const T *obj)
 Add a new piece of metadata to the tuple. More...
 
template<class T >
StatusCode addVariable (const std::string &name, T *&ptr, const std::string &docstring="")
 Add a variable to the tuple. More...
 
template<class T , class U >
StatusCode addVariable (const std::string &name, T *&ptr, const std::string &docstring, const U &defval)
 Add a variable to the tuple. More...
 
template<class T >
StatusCode addDimensionedVariable (const std::string &name, T *&ptr, const std::string &dim, const std::string &docstring="")
 Add a variable to the tuple. More...
 
template<class T , class U >
StatusCode addDimensionedVariable (const std::string &name, T *&ptr, const std::string &dim, const std::string &docstring, const U &defval)
 Add a variable to the tuple. More...
 

Private Member Functions

TClass * getClass (const std::type_info &ti)
 Try to convert from a std::type_info to a TClass. More...
 
bool isAllowed (const std::string &name)
 Decide if a given variable name is allowed. More...
 
StatusCode addFakeVariable (const std::string &name, const std::type_info &ti, void *&ptr)
 Create a variable in memory only. More...
 
 RootD3PD (const RootD3PD &)=delete
 
RootD3PDoperator= (const RootD3PD &)=delete
 

Private Attributes

TTree * m_tree
 The underlying root tree. More...
 
std::string m_master
 The name of the master tree. More...
 
int m_basketSize
 Specified basket size. More...
 
int m_entryOffsetLen
 Specified entry offset buffer length. More...
 
Root::Cleartablem_cleartable
 Helper to clear variables. More...
 
std::vector< std::string > m_allowedNames
 List of names/regular expressions allowed to be put into the output tree. More...
 
std::vector< std::string > m_vetoedNames
 List of names/regular expressions not allowed to be put into the output tree. More...
 
std::map< std::string, FakeProxy * > m_fakeVars
 "Fake" variables, only kept in memory More...
 
std::string m_poolFile
 If set, the name of a pool data file to which we should attach ourself. More...
 

Detailed Description

Root-based D3PD tree.

This provides an ID3PD interface for a Root tree. The tree is passed to the constructor. Ownership of the tree remains with Root.

If there are several trees being made, one may be designated as the master; the other trees will be made friends of it. (For AANT, this is generally CollectionTree.)

Definition at line 50 of file RootD3PD.h.

Member Typedef Documentation

◆ Dim_t

typedef unsigned int D3PD::ID3PD::Dim_t
inherited

Currently unimplemented — see design note.

Definition at line 52 of file ID3PD.h.

Constructor & Destructor Documentation

◆ RootD3PD() [1/2]

D3PD::RootD3PD::RootD3PD ( TTree *  tree,
const std::string &  master,
const std::vector< std::string > &  allowedNames = std::vector< std::string >(),
const std::vector< std::string > &  vetoedNames = std::vector< std::string >(),
int  basketSize = -1,
int  entryOffsetLen = -1 
)

Constructor.

Parameters
treeThe underlying Root tree.
masterThe name of the master tree. Null if no master.
allowedNamesNames allowed to be put into the output tree
vetoedNamesNames not allowed to end up in the output tree
basketSizeThe branch basket size. -1 to use Root default.
entryOffsetLenThe branch entry offset buffer size. -1 to use Root default.
treeThe underlying Root tree.
masterThe name of the master tree. Null if no master.
basketSizeThe branch basket size. -1 to use Root default.
entryOffsetLenThe branch entry offset buffer size. -1 to use Root default.

Definition at line 439 of file RootD3PD.cxx.

445  : m_tree (tree),
446  m_master (master),
447  m_basketSize (basketSize),
448  m_entryOffsetLen (entryOffsetLen),
449  m_cleartable (new Root::Cleartable),
450  m_allowedNames (allowedNames),
451  m_vetoedNames (vetoedNames),
452  m_fakeVars()
453 {
454 }

◆ ~RootD3PD()

D3PD::RootD3PD::~RootD3PD ( )

Destructor.

Definition at line 460 of file RootD3PD.cxx.

461 {
462  delete m_cleartable;
465  for( ; itr != end; ++itr ) {
466  delete itr->second;
467  }
468 }

◆ RootD3PD() [2/2]

D3PD::RootD3PD::RootD3PD ( const RootD3PD )
privatedelete

Member Function Documentation

◆ addDimensionedVariable() [1/3]

StatusCode D3PD::RootD3PD::addDimensionedVariable ( const std::string &  name,
const std::type_info &  ti,
void *&  ptr,
const std::string &  dim,
const std::string &  docstring = "",
const void *  defval = 0 
)
overridevirtual

Add a variable to the tuple.

Parameters
nameThe name of the variable.
typeThe type of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
dimDimension for the variable. (Presently unimplemented!)
docstringDocumentation string for this variable.
defvalPointer to the default value to use for this variable. Null for no default (generally means to fill with zeros). Of the type given by ti. Only works for basic types.

Implements D3PD::IAddVariable.

Definition at line 605 of file RootD3PD.cxx.

611 {
612  REPORT_MESSAGE (MSG::ERROR)
613  << "addDimensionedVariable not yet implemented.";
614  return StatusCode::FAILURE;
615 }

◆ addDimensionedVariable() [2/3]

template<class T , class U >
StatusCode D3PD::IAddVariable::addDimensionedVariable ( const std::string &  name,
T *&  ptr,
const std::string &  dim,
const std::string &  docstring,
const U &  defval 
)
inherited

Add a variable to the tuple.

Parameters
nameThe name of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
dimDimension for the variable. (Presently unimplemented!)
docstringDocumentation string for this variable.
defvalPointer to the default value to use for this variable. Only works for basic types.

If called from the constructor, the only effect is to clear ptr.

◆ addDimensionedVariable() [3/3]

template<class T >
StatusCode D3PD::IAddVariable::addDimensionedVariable ( const std::string &  name,
T *&  ptr,
const std::string &  dim,
const std::string &  docstring = "" 
)
inherited

Add a variable to the tuple.

Parameters
nameThe name of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
dimDimension for the variable. (Presently unimplemented!)
docstringDocumentation string for this variable.

If called from the constructor, the only effect is to clear ptr.

◆ addFakeVariable()

StatusCode D3PD::RootD3PD::addFakeVariable ( const std::string &  name,
const std::type_info &  ti,
void *&  ptr 
)
private

Create a variable in memory only.

Definition at line 838 of file RootD3PD.cxx.

841 {
842  // Check if this variable already exists:
843  std::map< std::string, FakeProxy* >::const_iterator itr =
844  m_fakeVars.find( name );
845  if( itr != m_fakeVars.end() ) {
847  << "\"Fake\" variable with name \"" << name << "\" already created";
848  return StatusCode::FAILURE;
849  }
850 
851  // Check if we have a dictionary for this type:
852  ::TClass* cls = FakeProxy::getClass( ti );
853  if( cls ) {
854  // Create and store the new object:
855  ptr = cls->New();
856  m_fakeVars[ name ] = new FakeProxy( ptr, ti );
857  return StatusCode::SUCCESS;
858  }
859 
860  // If not, then try to see if it's a primitive type:
862  if( ptr ) {
863  m_fakeVars[ name ] = new FakeProxy( ptr, ti );
864  return StatusCode::SUCCESS;
865  }
866 
867  // If both of these failed, then let's bail:
869  << "Couldn't create \"fake\" variable of type: " << ti.name();
870  return StatusCode::FAILURE;
871 }

◆ addMetadata() [1/2]

template<class T >
StatusCode D3PD::ID3PD::addMetadata ( const std::string &  key,
const T *  obj 
)
inherited

Add a new piece of metadata to the tuple.

Parameters
key- The key for this object. Any existing object will be overwritten.
obj- Pointer to the object to write.

The interpretation of the key parameter is up to the concrete D3PD implementation. However, a key name with a trailing slash NAME/ indicates that all metadata items with this name should be grouped together in a collection called NAME (for example, in a Root directory with that name).

◆ addMetadata() [2/2]

StatusCode D3PD::RootD3PD::addMetadata ( const std::string &  key,
const void *  obj,
const std::type_info &  ti 
)
overridevirtual

Add a new piece of metadata to the tuple.

Parameters
key- The key for this object. Any existing object will be overwritten.
obj- Pointer to the object to write.
ti- Type of the object to write.

The interpretation of the key parameter is up to the concrete D3PD implementation. However, a key name with a trailing slash NAME/ indicates that all metadata items with this name should be grouped together in a collection called NAME (for example, in a Root directory with that name).

Implements D3PD::ID3PD.

Definition at line 709 of file RootD3PD.cxx.

712 {
713  TObjString ostmp;
714 
715  TClass* cls = getClass (ti);
716  if (!cls)
717  return StatusCode::RECOVERABLE;
718 
719  if (ti == typeid(TString)) {
720  ostmp.String() = *reinterpret_cast<const TString*> (obj);
721  obj = &ostmp;
722  cls = gROOT->GetClass ("TObjString");
723  }
724  else if (ti == typeid(std::string)) {
725  ostmp.String() = *reinterpret_cast<const std::string*> (obj);
726  obj = &ostmp;
727  cls = gROOT->GetClass ("TObjString");
728  }
729 
730  std::string metaname;
731  TDirectory* dir = m_tree->GetDirectory();
732  std::string thekey = key;
733 
734  if (key.size() > 0 && key[key.size()-1] == '/') {
735  // Go to the root directory of the file.
736  while (dynamic_cast<TDirectoryFile*> (dir) != 0 &&
737  dir->GetMotherDir())
738  dir = dir->GetMotherDir();
739 
740  metaname = key.substr (0, key.size()-1);
741  thekey = m_tree->GetName();
742  }
743  else {
744  metaname = m_tree->GetName();
745  metaname += "Meta";
746  }
747 
748  TDirectory::TContext ctx (dir);
749  TDirectory* metadir = dir->GetDirectory (metaname.c_str());
750  if (!metadir) {
751  metadir = dir->mkdir (metaname.c_str());
752  if (!metadir) {
753  REPORT_MESSAGE (MSG::ERROR)
754  << "Can't create metadata dir " << metaname
755  << "in dir " << dir->GetName();
756  return StatusCode::RECOVERABLE;
757  }
758  }
759 
760  // If we're writing in a common directory, make sure name is unique.
761  if (key.size() > 0 && key[key.size()-1] == '/') {
762  int i = 1;
763  while (metadir->FindObject (thekey.c_str())) {
764  ++i;
765  std::ostringstream ss;
766  ss << m_tree->GetName() << "-" << i;
767  thekey = ss.str();
768  }
769  }
770 
771  if (metadir->WriteObjectAny (obj, cls, thekey.c_str(), "overwrite") == 0) {
772  REPORT_MESSAGE (MSG::ERROR)
773  << "Can't write metadata object " << thekey
774  << " for tree " << m_tree->GetName();
775  return StatusCode::RECOVERABLE;
776  }
777 
778  return StatusCode::SUCCESS;
779 }

◆ addVariable() [1/3]

StatusCode D3PD::RootD3PD::addVariable ( const std::string &  name,
const std::type_info &  ti,
void *&  ptr,
const std::string &  docstring = "",
const void *  defval = 0 
)
overridevirtual

Add a variable to the tuple.

Parameters
nameThe name of the variable.
typeThe type of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
docstringDocumentation string for this variable.
defvalPointer to the default value to use for this variable. Null for no default (generally means to fill with zeros). Of the type given by ti. Only works for basic types.

Implements D3PD::IAddVariable.

Definition at line 485 of file RootD3PD.cxx.

490 {
491  TBranch* br = 0;
492 
493  // If the variable is not to be put into the output tree, let's
494  // just create it in memory:
495  if( ! isAllowed( name ) ) {
496  CHECK( addFakeVariable( name, ti, ptr ) );
497  return StatusCode::SUCCESS;
498  }
499 
500  // Make sure that there's not already a branch with this name.
501  if (m_tree->GetBranch (name.c_str()) != 0) {
502  REPORT_MESSAGE (MSG::ERROR) << "Duplicate branch name " << name
503  << " in tree " << m_tree->GetName();
504  return StatusCode::FAILURE;
505  }
506 
507  char* defcopied = 0;
508  size_t defsize = 0;
509 
510  // See if it's a basic type.
511  char typecode = find_typecode (ti);
512  if (typecode != '\0') {
513  // Yes. Make a simple branch for it.
514  br = m_tree->Branch (name.c_str(), 0, (name + '/' + typecode).c_str());
515  if (!br)
516  return StatusCode::FAILURE;
517 
518  // Find the (single) leaf for the branch.
519  TLeaf* leaf = br->GetLeaf (name.c_str());
520  if (!leaf)
521  return StatusCode::FAILURE;
522 
523  // Set the pointer.
524  ptr = leaf->GetValuePointer();
525 
526  if (defval) {
527  EDataType dt = TDataType::GetType (ti);
528  TDataType* tdt = gROOT->GetType (TDataType::GetTypeName (dt));
529  assert (tdt != 0);
530  defsize = tdt->Size();
531  defcopied = new char[defsize];
532  std::memcpy (defcopied, defval, defsize);
533  }
534  }
535  else {
536 
537  // Default value not supported for class types.
538  if (defval) {
539  REPORT_MESSAGE (MSG::ERROR)
540  << "Requested a default value for variable " << name
541  << " of type " << System::typeinfoName (ti)
542  << "; but default values are only supported for basic types.";
543  return StatusCode::FAILURE;
544  }
545 
546  // A class type. Try to find the class.
547  TClass* cls = getClass (ti);
548  if (!cls)
549  return StatusCode::FAILURE;
550 
551  // Create the branch.
552  br = m_tree->Bronch (name.c_str(), cls->GetName(), 0);
553  if (!br)
554  return StatusCode::FAILURE;
555 
556  TBranchElement* bre = dynamic_cast<TBranchElement*> (br);
557  if (!bre) {
558  REPORT_MESSAGE (MSG::ERROR) << "Unexpected branch type created for "
559  << name;
560  return StatusCode::FAILURE;
561  }
562 
563  // Set the pointer.
564  ptr = bre->GetObject();
565  }
566 
567  // Set the branch docstring.
568  br->SetTitle (docstring.c_str());
569 
570  // Set the branch buffer sizes as requested.
571  if (m_basketSize != -1)
572  br->SetBasketSize (m_basketSize);
573 
574  if (m_entryOffsetLen != -1)
575  br->SetEntryOffsetLen (m_entryOffsetLen);
576 
577  CHECK( m_cleartable->add (br, defcopied, defsize) );
578 
579  // If we're extending an already-started tuple, then we need
580  // to write the correct number of blank entries at the start.
581  for (Long64_t i = 0; i < m_tree->GetEntries(); i++)
582  br->Fill();
583 
584  return StatusCode::SUCCESS;
585 }

◆ addVariable() [2/3]

template<class T , class U >
StatusCode D3PD::IAddVariable::addVariable ( const std::string &  name,
T *&  ptr,
const std::string &  docstring,
const U &  defval 
)
inherited

Add a variable to the tuple.

Parameters
nameThe name of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
docstringDocumentation string for this variable.
defvalPointer to the default value to use for this variable. Only works for basic types.

If called from the constructor, the only effect is to clear ptr.

◆ addVariable() [3/3]

template<class T >
StatusCode D3PD::IAddVariable::addVariable ( const std::string &  name,
T *&  ptr,
const std::string &  docstring = "" 
)
inherited

Add a variable to the tuple.

Parameters
nameThe name of the variable.
ptrPointer to the type of the variable. The pointer need not be initialized; the D3PD software will set the pointer prior to calling fill().
docstringDocumentation string for this variable.

If called from the constructor, the only effect is to clear ptr.

◆ attachPoolFile()

StatusCode D3PD::RootD3PD::attachPoolFile ( )

Try to attach to a pool file, if we haven't yet done so.

Definition at line 635 of file RootD3PD.cxx.

636 {
637  if (!m_poolFile.empty()) {
638  TIter next (gROOT->GetListOfFiles());
639  while (TFile* f = dynamic_cast<TFile*>(next())) {
640  if (std::string(f->GetName()) == m_poolFile) {
641  m_tree->SetDirectory (f);
642  m_poolFile.clear();
643  break;
644  }
645  }
646  if (!m_poolFile.empty()) {
647  REPORT_MESSAGE (MSG::ERROR) << "Can't find root file " << m_poolFile
648  << " to attach tree " << m_tree->GetName();
649  return StatusCode::FAILURE;
650  }
651  }
652  return StatusCode::SUCCESS;
653 }

◆ capture()

StatusCode D3PD::RootD3PD::capture ( )
overridevirtual

Capture the current state of all variables and write to the tuple.

Implements D3PD::ID3PD.

Definition at line 621 of file RootD3PD.cxx.

622 {
623  // Handle pending pool file association.
624  CHECK( attachPoolFile() );
625 
626  if (m_tree->Fill() < 0)
627  return StatusCode::FAILURE;
628  return StatusCode::SUCCESS;
629 }

◆ clear()

StatusCode D3PD::RootD3PD::clear ( )
overridevirtual

Clear all the tuple variables.

Implements D3PD::ID3PD.

Definition at line 659 of file RootD3PD.cxx.

660 {
661  m_cleartable->clear();
662  return StatusCode::SUCCESS;
663 }

◆ getClass()

TClass * D3PD::RootD3PD::getClass ( const std::type_info &  ti)
private

Try to convert from a std::type_info to a TClass.

On failure, write an error and return null.

Parameters
tiThe type to convert.

On failure, write an error and return null.

Definition at line 788 of file RootD3PD.cxx.

789 {
790  TClass* cls = gROOT->GetClass (ti);
791  if (!cls) {
792  // Can't do autoloading via type_info.
793  // Try to convert back to a name...
794  std::string tiname = System::typeinfoName (ti);
795  cls = gROOT->GetClass (tiname.c_str());
796  }
797 
798  if (!cls) {
799  REPORT_MESSAGE (MSG::ERROR) << "Can't find class for typeinfo "
800  << ti.name();
801  }
802 
803  return cls;
804 }

◆ isAllowed()

bool D3PD::RootD3PD::isAllowed ( const std::string &  name)
private

Decide if a given variable name is allowed.

This function is used to decide if a variable with a given name is allowed to be put into the output tree or not.

Parameters
nameThe name of the variable
Returns
true if the variable should be put into the output, and false if it shouldn't

Definition at line 815 of file RootD3PD.cxx.

816 {
817  // If the list of allowed names is not empty, the name has to match
818  // one of them:
819  if( m_allowedNames.size() ) {
820  if( std::find_if( m_allowedNames.begin(), m_allowedNames.end(),
821  NameMatches( name ) ) == m_allowedNames.end() ) {
822  return false;
823  }
824  }
825 
826  // Now check that the name doesn't appear on the veto list:
827  if( std::find_if( m_vetoedNames.begin(), m_vetoedNames.end(),
828  NameMatches( name ) ) != m_vetoedNames.end() ) {
829  return false;
830  }
831 
832  // If all of these passed, then the variable is allowed to
833  // be put into the output:
834  return true;
835 }

◆ master()

const std::string & D3PD::RootD3PD::master ( ) const

Return the name of the master tree.

Definition at line 690 of file RootD3PD.cxx.

691 {
692  return m_master;
693 }

◆ operator=()

RootD3PD& D3PD::RootD3PD::operator= ( const RootD3PD )
privatedelete

◆ redim()

StatusCode D3PD::RootD3PD::redim ( const Dim_t ptr)
overridevirtual

Currently unimplemented — see design note.

Implements D3PD::ID3PD.

Definition at line 667 of file RootD3PD.cxx.

668 {
669  return StatusCode::FAILURE;
670 }

◆ setPoolFile()

void D3PD::RootD3PD::setPoolFile ( const std::string &  poolFile)

Set the name of a pool file to which we should attach.

Parameters
poolFileThe name of the pool file to which we should attach.

If we want a D3PD tree to end up in a pool file, we can't in general do it from RootD3PDSvc::make, since the file usually won't have been opened yet. Instead, call this method to have the RootD3PD object remember the name of the pool file. On the first capture(), we'll look for the pool file in root's list of files and then associate the tree with it.

Definition at line 885 of file RootD3PD.cxx.

886 {
888 }

◆ tree() [1/2]

TTree * D3PD::RootD3PD::tree ( )

Definition at line 681 of file RootD3PD.cxx.

682 {
683  return m_tree;
684 }

◆ tree() [2/2]

const TTree * D3PD::RootD3PD::tree ( ) const

Return the underlying root tree.

Definition at line 676 of file RootD3PD.cxx.

677 {
678  return m_tree;
679 }

Member Data Documentation

◆ m_allowedNames

std::vector< std::string > D3PD::RootD3PD::m_allowedNames
private

List of names/regular expressions allowed to be put into the output tree.

Definition at line 221 of file RootD3PD.h.

◆ m_basketSize

int D3PD::RootD3PD::m_basketSize
private

Specified basket size.

Definition at line 211 of file RootD3PD.h.

◆ m_cleartable

Root::Cleartable* D3PD::RootD3PD::m_cleartable
private

Helper to clear variables.

Definition at line 217 of file RootD3PD.h.

◆ m_entryOffsetLen

int D3PD::RootD3PD::m_entryOffsetLen
private

Specified entry offset buffer length.

Definition at line 214 of file RootD3PD.h.

◆ m_fakeVars

std::map< std::string, FakeProxy* > D3PD::RootD3PD::m_fakeVars
private

"Fake" variables, only kept in memory

Definition at line 228 of file RootD3PD.h.

◆ m_master

std::string D3PD::RootD3PD::m_master
private

The name of the master tree.

Definition at line 208 of file RootD3PD.h.

◆ m_poolFile

std::string D3PD::RootD3PD::m_poolFile
private

If set, the name of a pool data file to which we should attach ourself.

Definition at line 231 of file RootD3PD.h.

◆ m_tree

TTree* D3PD::RootD3PD::m_tree
private

The underlying root tree.

Definition at line 205 of file RootD3PD.h.

◆ m_vetoedNames

std::vector< std::string > D3PD::RootD3PD::m_vetoedNames
private

List of names/regular expressions not allowed to be put into the output tree.

Definition at line 225 of file RootD3PD.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
D3PD::RootD3PD::m_vetoedNames
std::vector< std::string > m_vetoedNames
List of names/regular expressions not allowed to be put into the output tree.
Definition: RootD3PD.h:225
D3PD::RootD3PD::m_cleartable
Root::Cleartable * m_cleartable
Helper to clear variables.
Definition: RootD3PD.h:217
D3PD::RootD3PD::m_basketSize
int m_basketSize
Specified basket size.
Definition: RootD3PD.h:211
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
D3PD::RootD3PD::tree
const TTree * tree() const
Return the underlying root tree.
Definition: RootD3PD.cxx:676
D3PD::RootD3PD::m_tree
TTree * m_tree
The underlying root tree.
Definition: RootD3PD.h:205
D3PD::Root::Cleartable::clear
void clear()
Clear all branches.
Definition: RootD3PD.cxx:422
D3PD::RootD3PD::getClass
TClass * getClass(const std::type_info &ti)
Try to convert from a std::type_info to a TClass.
Definition: RootD3PD.cxx:788
CaloClusterListBadChannel.cls
cls
Definition: CaloClusterListBadChannel.py:8
LArDigits2NtupleDumper.tdt
tdt
Definition: LArDigits2NtupleDumper.py:121
master
Definition: master.py:1
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
D3PD::RootD3PD::m_master
std::string m_master
The name of the master tree.
Definition: RootD3PD.h:208
D3PD::RootD3PD::m_poolFile
std::string m_poolFile
If set, the name of a pool data file to which we should attach ourself.
Definition: RootD3PD.h:231
D3PD::FakeProxy::getClass
::TClass * getClass(const std::type_info &ti)
Access the dictionary of a specific object.
Definition: FakeProxy.cxx:79
D3PD::RootD3PD::isAllowed
bool isAllowed(const std::string &name)
Decide if a given variable name is allowed.
Definition: RootD3PD.cxx:815
Athena::typeinfoName
std::string typeinfoName(const std::type_info &ti)
Convert a type_info to a demangled string.
Definition: AthenaKernel/src/ClassName.cxx:23
fillPileUpNoiseLumi.next
next
Definition: fillPileUpNoiseLumi.py:52
lumiFormat.i
int i
Definition: lumiFormat.py:85
D3PD::Root::Cleartable::add
StatusCode add(TBranch *br, char *defval, size_t defsize)
Initialize for clearing a variable.
Definition: RootD3PD.cxx:410
CaloNoise_fillDB.dt
dt
Definition: CaloNoise_fillDB.py:58
D3PD::RootD3PD::m_entryOffsetLen
int m_entryOffsetLen
Specified entry offset buffer length.
Definition: RootD3PD.h:214
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
hist_file_dump.f
f
Definition: hist_file_dump.py:135
beamspotman.dir
string dir
Definition: beamspotman.py:623
REPORT_MESSAGE_WITH_CONTEXT
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:345
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
D3PD::FakeProxy::newPrimitive
static void * newPrimitive(const std::type_info &ti)
Create a new instance of a primitive.
Definition: FakeProxy.cxx:101
D3PD::RootD3PD::attachPoolFile
StatusCode attachPoolFile()
Try to attach to a pool file, if we haven't yet done so.
Definition: RootD3PD.cxx:635
REPORT_MESSAGE
#define REPORT_MESSAGE(LVL)
Report a message.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:365
D3PD::RootD3PD::m_fakeVars
std::map< std::string, FakeProxy * > m_fakeVars
"Fake" variables, only kept in memory
Definition: RootD3PD.h:228
skel.poolFile
poolFile
Definition: skel.ABtoEVGEN.py:344
python.PyAthena.obj
obj
Definition: PyAthena.py:132
D3PD::RootD3PD::addFakeVariable
StatusCode addFakeVariable(const std::string &name, const std::type_info &ti, void *&ptr)
Create a variable in memory only.
Definition: RootD3PD.cxx:838
D3PD::RootD3PD::m_allowedNames
std::vector< std::string > m_allowedNames
List of names/regular expressions allowed to be put into the output tree.
Definition: RootD3PD.h:221
PlotCalibFromCool.br
br
Definition: PlotCalibFromCool.py:355
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37