ATLAS Offline Software
Classes | Namespaces | Macros
AddDVProxy.h File Reference
#include <vector>
#include <set>
#include <TClass.h>
#include <TError.h>
#include <TInterpreter.h>
#include "AthContainers/DataVector.h"
#include "xAODCore/tools/TDVCollectionProxy.h"
Include dependency graph for AddDVProxy.h:

Go to the source code of this file.

Classes

class  xAOD::AddDVProxy
 Set up collection proxy for a DataVector class. More...
 
struct  xAOD::AddDVProxy::Helper< T >
 Helper structure implementing the resize(...) function. More...
 

Namespaces

 xAOD
 ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
 

Macros

#define ADD_DV_PROXY(TYPE)
 Macro for setting up proxying for a specific DataVector<T> type. More...
 
#define ADD_NS_DV_PROXY(NS, TYPE)
 Macro for setting up proxying for a specific namespaced DataVector<T> type. More...
 

Macro Definition Documentation

◆ ADD_DV_PROXY

#define ADD_DV_PROXY (   TYPE)
Value:
namespace ROOT { \
TGenericClassInfo* GenerateInitInstance( const TYPE* ); \
} \
int register_##TYPE##_CollectionProxy() { \
xAOD::AddDVProxy::add< TYPE >( ROOT::GenerateInitInstance( ( TYPE* ) 0x0 ) ); \
return 1; \
} \
static int _R__UNIQUE_( dummy_##TYPE##_Var ) = \
register_##TYPE##_CollectionProxy(); \
R__UseDummy( _R__UNIQUE_( dummy_##TYPE##_Var ) )

Macro for setting up proxying for a specific DataVector<T> type.

In the xAOD packages that use DataVector classes, one must attach "collection proxies" to the container dictionaries. This collection proxy describes to ROOT how to navigate the contents of the DataVector container.

This is set up by adding a file called "src/dict/CollectionProxies.cxx" to the package (well, all files under "src/dict/" are taken into account in the end...), and for each DataVector type defined by a package, adding a line like:

ADD_DV_PROXY( MySuperContainer );

Definition at line 40 of file AddDVProxy.h.

◆ ADD_NS_DV_PROXY

#define ADD_NS_DV_PROXY (   NS,
  TYPE 
)
Value:
namespace ROOT { \
TGenericClassInfo* GenerateInitInstance( const NS::TYPE* ); \
} \
int register_##NS##_##TYPE##_CollectionProxy() { \
xAOD::AddDVProxy::add< NS::TYPE >( ROOT::GenerateInitInstance( ( NS::TYPE* ) 0x0 ) ); \
return 1; \
} \
static int _R__UNIQUE_( dummy_##NS##_##TYPE##_Var ) = \
register_##NS##_##TYPE##_CollectionProxy(); \
R__UseDummy( _R__UNIQUE_( dummy_##NS##_##TYPE##_Var ) )

Macro for setting up proxying for a specific namespaced DataVector<T> type.

In the xAOD packages that use DataVector classes, one must attach "collection proxies" to the container dictionaries. This collection proxy describes to ROOT how to navigate the contents of the DataVector container.

This is set up by adding a file called "src/dict/CollectionProxies.cxx" to the package (well, all files under "src/dict/" are taken into account in the end...), and for each DataVector type defined by a package, adding a line like:

ADD_DV_PROXY( xAOD, MySuperContainer );

Definition at line 68 of file AddDVProxy.h.

ROOT::GenerateInitInstance
TGenericClassInfo * GenerateInitInstance(const SG::ViewVectorBase *)
Run3DQTestingDriver._
_
Definition: Run3DQTestingDriver.py:35
TYPE
#define TYPE(CODE, TYP, IOTYP)
ROOT
Definition: ViewVectorBaseStreamer.cxx:43