ATLAS Offline Software
Loading...
Searching...
No Matches
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.

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

Private Member Functions

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

Private Attributes

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

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),
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}
int m_entryOffsetLen
Specified entry offset buffer length.
Definition RootD3PD.h:214
TTree * m_tree
The underlying root tree.
Definition RootD3PD.h:205
std::vector< std::string > m_vetoedNames
List of names/regular expressions not allowed to be put into the output tree.
Definition RootD3PD.h:225
std::map< std::string, FakeProxy * > m_fakeVars
"Fake" variables, only kept in memory
Definition RootD3PD.h:228
int m_basketSize
Specified basket size.
Definition RootD3PD.h:211
std::vector< std::string > m_allowedNames
List of names/regular expressions allowed to be put into the output tree.
Definition RootD3PD.h:221
const TTree * tree() const
Return the underlying root tree.
Definition RootD3PD.cxx:676
Root::Cleartable * m_cleartable
Helper to clear variables.
Definition RootD3PD.h:217
std::string m_master
The name of the master tree.
Definition RootD3PD.h:208
const std::string & master() const
Return the name of the master tree.
Definition RootD3PD.cxx:690

◆ ~RootD3PD()

D3PD::RootD3PD::~RootD3PD ( )

Destructor.

Definition at line 460 of file RootD3PD.cxx.

461{
462 delete m_cleartable;
463 std::map< std::string, FakeProxy* >::iterator itr = m_fakeVars.begin();
464 std::map< std::string, FakeProxy* >::iterator end = m_fakeVars.end();
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]

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() [2/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.

◆ addDimensionedVariable() [3/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}
#define REPORT_MESSAGE(LVL)
Report a message.

◆ 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() ) {
846 REPORT_MESSAGE_WITH_CONTEXT( MSG::FATAL, "RootD3PD" )
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:
868 REPORT_MESSAGE_WITH_CONTEXT( MSG::FATAL, "RootD3PD" )
869 << "Couldn't create \"fake\" variable of type: " << ti.name();
870 return StatusCode::FAILURE;
871}
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
static void * newPrimitive(const std::type_info &ti)
Create a new instance of a primitive.
::TClass * getClass(const std::type_info &ti)
Access the dictionary of a specific object.
Definition FakeProxy.cxx:79
void * ptr(T *p)
Definition SGImplSvc.cxx:74

◆ 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}
static Double_t ss
TClass * getClass(const std::type_info &ti)
Try to convert from a std::type_info to a TClass.
Definition RootD3PD.cxx:788

◆ addVariable() [1/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() [2/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.

◆ addVariable() [3/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}
#define CHECK(...)
Evaluate an expression and check for errors.
bool isAllowed(const std::string &name)
Decide if a given variable name is allowed.
Definition RootD3PD.cxx:815
StatusCode addFakeVariable(const std::string &name, const std::type_info &ti, void *&ptr)
Create a variable in memory only.
Definition RootD3PD.cxx:838

◆ 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}
std::string m_poolFile
If set, the name of a pool data file to which we should attach ourself.
Definition RootD3PD.h:231

◆ 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.
625
626 if (m_tree->Fill() < 0)
627 return StatusCode::FAILURE;
628 return StatusCode::SUCCESS;
629}
StatusCode attachPoolFile()
Try to attach to a pool file, if we haven't yet done so.
Definition RootD3PD.cxx:635

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