ATLAS Offline Software
Loading...
Searching...
No Matches
D3PD Namespace Reference

Block filler tool for noisy FEB information. More...

Namespaces

namespace  Root
namespace  Version2
 Private namespace for version 2 of the code generator code.

Classes

class  AddVariable
 Common implementation of IAddVariable. More...
class  AuxDataFillerTool
 Copy aux data to D3PD. More...
class  BlockFillerTool
 Type-safe wrapper for block filler tools. More...
class  BlockFillerTool< Types< T0 > >
 A specialization of BlockFillerTool that can accept one of several types. More...
class  BlockFillerTool< void >
 Type-safe wrapper for block filler tools, for tools taking no input. More...
class  BlockFillerToolImpl
 Non-template parts of BlockFillerTool. More...
struct  ButFirstType
struct  ButFirstType< Types< T0, TYPES... > >
class  CaloCalibHitFillerTool
 Block filler tool for EM samplings from a CaloCluster. More...
class  CaloCalibrationHitContainerGetterTool
 define a special getter More...
class  CaloCellDetailsFillerTool
 Block filler tool for EM samplings from a CaloCluster. More...
class  CaloCellRawFillerTool
 Block filler tool for calo cell raw eta/phi. More...
class  CaloClusterCellAssociationTool
 Associate from a CaloCluster to CaloCell. More...
class  CaloInfoFillerTool
 Block filler tool for EM samplings from a CaloCluster. More...
class  ClusterEMSamplingFillerTool
 Block filler tool for EM samplings from a CaloCluster. More...
class  ClusterPositionInCaloFillerTool
 Block filler tool for eta/phi positions in calo coordinate from a CaloCluster. More...
class  ClusterSamplingFillerTool
 Block filler tool for EM samplings from a CaloCluster. More...
class  CollectionGetterFilterTool
 A collection getter that filters the results of another. More...
class  CollectionGetterFilterToolImpl
 Non-template parts of CollectionGetterFilterTool. More...
class  CollectionGetterRegistryTool
 Tool to keep a registry of collection getter tools. More...
class  CollectionGetterTool
 Type-safe wrapper for ICollectionGetterTool. More...
class  CollectionGetterToolImpl
 Non-template parts of CollectionGetterTool. More...
class  ContainedAssociationFillerTool
 Represent a single association by containment. More...
class  ContainedMultiAssociationFillerTool
 Represent a multiple association by containment. More...
class  ContainedVectorMultiAssociationFillerTool
 Represent a multiple association by containment inside vectors. More...
class  ContainerFlagFillerTool
 Flag objects that are present in other containers. More...
class  ConversionVertexAssociationTool
 Associate from a conversion to its vertex. More...
class  CovarianceFillerTool
 Block filler tool for error and covariance matrix. More...
class  D3PDMCTruthClassifier
 Work around MCTruthClassifier brain-damage. More...
class  DRAssociationTool
 Associate to particle closest in DR. More...
class  DRConeAssociationTool
 Associate all particles within a DR cut. More...
class  DummyInitAlg
 Work around initialization ordering problems. More...
class  DummyVarFillerTool
 Create an empty variable in the D3PD. More...
class  egammaClusterAssociationTool
 Associate from an egamma to its CaloCluster. More...
class  egammaConversion0FillerTool
 Block filler tool for photon conversion information, for LOD 0. More...
class  egammaConversionFillerTool
 Block filler tool for photon conversion information. More...
class  egammaDeltaEmax2Alg
 Calculate deltaEmax2 for egamma objects and store as UD. More...
class  egammaGenParticleAssociationTool
 Associate from an electron/photon to a matched GenParticle via classification tool. More...
class  egammaLayer1ExtraFillerTool
class  egammaMaxECellAlg
 Find most energetic cell in the middle layer for an egamma object and store in UserData. More...
class  egammaNbCellsGainAlg
 Count the number of cells in each gain, layer by layer. More...
class  egammaRetaphiFillerTool
class  egammaSumCellsGainAlg
 Find most energetic cell in the middle layer for an egamma object and store in UserData. More...
class  egammaTraversedMaterialFillerTool
 Block filler tool for the material traversed by a photon/electron until the entrance of the calorimeter (in X0) More...
class  egammaTruthAlg
 Select egtruth particles. More...
class  egammaTruthClassificationFillerTool
 Fill in type/origin from MC classifier tool for an egamma. More...
class  ElectronJetDRAssociator
 For every electron find jets in a cone and store lifetime, signed IP, and PTRel of relation. More...
class  ElectronTrackParticleAssociationTool
 Associate from an egamma to its TrackParticle. More...
class  EventErrorStateFillerTool
 Block filler tool for event error state from EventInfo. More...
struct  EventFlagNames
class  EventTrigInfoFillerTool
 Tool writing the stream decisions to D3PDs. More...
class  EventTypeFillerTool
 Block filler tool for the event type from EventInfo. More...
class  EventWeightFillerTool
 Block filler tool for the event weight from EventInfo. More...
class  FakeProxy
 Proxy class for storing any kind of object. More...
class  FirstAssociationTool
 Choose the first result from a multiple association. More...
class  FourMomFillerTool
 Block filler tool for a four-momentum. More...
class  IAddVariable
 Common interface for adding a variable to a tuple. More...
class  IBlockFillerTool
 Abstract interface for tool to fill a block in the D3PD. More...
class  ICollectionGetterRegistryTool
 Abstract interface to keep a registry of collection getter tools. More...
class  ICollectionGetterTool
 Abstract interface to get a collection of objects and iterate over it. More...
class  ID3PD
 Define an abstract interface for building a D3PD tree. More...
class  ID3PDSvc
 Abstract interface for service to create D3PD trees. More...
class  IdentityAssociationTool
 A generic identity association; i.e., one that simply returns its input. More...
class  IIteration
 Abstract interface for iterating over a set of things. More...
class  IMetadataTool
 Write metadata to a D3PD. More...
class  ImpactSigmaFillerTool
 Fill d0/z0 uncertainties from an ErrorMatrix. More...
class  IMultiAssociationTool
 Abstract interface to form a multi-way association. More...
class  INav4MomLinkContainerGetterTool
 Getter tool to retrieve an INav4MomLinkContainer from SG. More...
class  IndexAssociationFillerTool
 Represent a single association by index. More...
class  IndexFillerTool
 Fill an index of an object within a container. More...
class  IndexMap
class  IndexMultiAssociationFillerTool
 Represent a multiple association by index. More...
class  IObjFillerTool
 Abstract interface for tool to fill an object in the D3PD. More...
class  IObjGetterTool
 Abstract interface to get an object to put in the tuple. More...
class  IParticleLinksCollectionGetterTool
class  IReaderD3PD
 Common interface for the code generator D3PD classes. More...
class  ISingleAssociationTool
 Abstract interface to form a single association. More...
class  LArCollisionTimeFillerTool
 Block filler tool for collision time information. More...
class  LArDigitFillerTool
 Block filler tool for EM samplings from a CaloCluster. More...
class  LArHitContainerGetterTool
 define a special getter More...
class  LArHitFillerTool
 Block filler tool for EM samplings from a CaloCluster. More...
class  LArNoisyROFillerTool
class  LArRawChannelContainerGetterTool
class  LArRawChannelFillerTool
class  LArSCHitFillerTool
 Block filler tool for EM samplings from a CaloCluster. More...
class  LBMetadataTool
 Add luminosity metadata info to a D3PD. More...
class  MakerAlg
 Algorithm to create a D3PD tree. More...
class  MBTSFillerTool
 Block filler tool for MBTS information. More...
class  MBTSTimeFillerTool
 Block filler tool for combined MBTS time information. More...
class  MDTSimHitFillerTool
 Filler tool for the basic properties of MDTSimHit. More...
class  MultiAssociationTool
 Type-safe wrapper for multiple-target associator tools. More...
class  MultiAssociationTool< Types< T0 >, TO_T >
 A specialization of MultiAssociationTool that can accept one of several types. More...
class  MultiAssociationTool< Types< T0 >, Types< U0 > >
 A specialization of MultiAssociationTool that can accept one of several types, mapping to multiple output types. More...
class  MultiAssociationToolImpl
 Non-template parts of MultiAssociationTool. More...
class  MultiAssociationToolTo
 Helper for MultiAssociationTool. More...
class  MultiReaderAlg
 Algorithm used for generating D3PDReader sources. More...
class  MuonGenParticleAssociationTool
 Associate from an electron/photon to a matched GenParticle via classification tool. More...
class  MuonNumberOfSegmentsFillerTool
 Fill number of muon segments. More...
class  MuonTrackParticleAssociationTool
 Associate from an Muon to its primary TrackParticle. More...
class  MuonTrkHitFillerTool
class  MuonTruthClassificationFillerTool
class  MuonTruthHitsFillerTool
 Fill truth hit information for muons. More...
class  NoType
 Placeholder for empty type. More...
 D3PD variable metadata handling class. More...
class  ObjFillerTool
 Object filler tool for a single object. More...
class  ObjGetterTool
 This is a type-safe wrapper for the IObjGetterTool interface. More...
class  ObjGetterToolImpl
 Non-template parts of ObjGetterTool. More...
class  PerigeeBLPredictionFillerTool
 Fill expectHitInBLayer from a Perigee. More...
class  PerigeeCovarianceAssociationTool
 Associate from a Perigee to its ErrorMatrix. More...
class  PerigeeFillerTool
struct  PerigeePair
class  PerigeePairOldPerigeeAssociationTool
 Associate from a PerigeePair to the perigee for the original track. More...
class  PhotonTruthAlg
 Analyze GenParticle's matching photons and made UD decorations. More...
class  PhotonTruthTool
class  ReaderAlg
 Algorithm used for generating D3PDReader sources. More...
class  RootD3PD
 Root-based D3PD tree. More...
class  RootD3PDSvc
 Service to create a root-based D3PD. More...
 Extension of the ObjectMetadata class for reading D3PD files. More...
class  RootReaderD3PD_v1
 D3PD class used for generating ROOT D3PDReader classes. More...
class  RootReaderD3PD_v2
 D3PD class used for generating ROOT D3PDReader classes. More...
class  RootReaderD3PDBase
 Base class for all ROOT-based code generators. More...
class  RootReaderD3PDSvc
 A very simple D3PDSvc which produces RootReaderD3PD objects. More...
class  SCFillerTool
 Block filler tool for EM samplings from a CaloCluster. More...
class  SelectedParticlesFilterTool
 A collection getter that filters the results of another based on the contents of a SelectedParticles object. More...
struct  SelectType
 Select one type out of the tuple. More...
struct  SelectType< Types< TYPES... >, N >
 SelectType used of Types. More...
class  SGCollectionGetterTool
 Collection getter tool retrieving a container from StoreGate. More...
class  SGDataVectorGetterTool
 Getter tool to retrieve DataVector/List collections from StoreGate. More...
class  SGGetterImpl
 Common object getter code for retrieving from StoreGate. More...
class  SGKeyResolver
 Helper to resolve the SG key to use. More...
class  SGObjGetterTool
 Getter tool to retrieve single objects from StoreGate. More...
class  SGTileDigitsGetterTool
class  SGTileHitGetterTool
class  SGTileModuleBitsGetterTool
class  SGTileRawChannelGetterTool
class  SingleAssociationTool
 Type-safe wrapper for single associator tools. More...
class  SingleAssociationTool< Types< T0 >, TO_T >
 A specialization of SingleAssociationTool that can accept one of several types. More...
class  SingleAssociationToolImpl
 Non-template parts of SingleAssociationTool. More...
class  SingleAssociationToolTo
 Helper for SingleAssociationTool. More...
class  SkimDecisionFillerTool
 Block filler tool for SkimDecisions. More...
class  TileAssocFillerTool
class  TileCellDetailsFillerTool
class  TileCellDigitAssociationTool
class  TileCellFillerTool
class  TileCellRawAssociationTool
class  TileClusterFillerTool
class  TileCosmicMuonFillerTool
class  TileCosmicMuonTileCellAssociationTool
class  TileDigitFillerTool
class  TileEventFillerTool
class  TileHitFillerTool
class  TileHitInfoFillerTool
 Block filler tool for total TileHit energy. More...
class  TileL2FillerTool
class  TileModuleBitsFillerTool
class  TileMuFillerTool
class  TileMuonFillerTool
class  TileRawChannelFillerTool
class  TileTrackFillerTool
class  TileTriggerFillerTool
class  TileTTL1FillerTool
class  TowerFillerTool
class  TrackParticleChargeFillerTool
class  TrackParticlePerigeeAtBSAssociationTool
 Associate from a VxCandidate to its perigee at the beam spot. More...
class  TrackParticlePerigeeAtOOAssociationTool
 Associate from a TrackParticle to its default Perigee. More...
class  TrackParticlePerigeeAtPVAssociationTool
 Associate from a VxCandidate to its perigee at primary vertex. More...
class  TrackParticlePerigeePairAtOOAssociationTool
 Associate from a VxCandidate to its Position ErrorMatrix. More...
class  TrackParticleVertexAssociationTool
 Associate from a TrackParticle to its reconstructed vertex. More...
class  TrackRecordCollectionGetterTool
class  TrackRecordFillerTool
 Filler tool for the basic properties of TrackRecord. More...
class  TruthMuonsToSG
class  TruthParticleBremFillerTool
 Fill the hasHardBrem flag. More...
class  TruthParticleChildAssociationTool
 Associate all particles within a DR cut. More...
class  TruthParticleClassificationFillerTool
class  TruthParticleFillerTool
class  TruthParticleParentAssociationTool
 Associate all particles within a DR cut. More...
class  TruthParticleProdVertexAssociationTool
 Associate from a TruthParticle to its GenVertex production vertex. More...
class  TypeConverter
 This is helper for converting between pointers of different types, given dynamically by std::type_info. More...
struct  Variable
 Structure describing one D3PD variable. More...
class  VectorFillerTool
 Object filler tool for a collection of objects, saved as vectors. More...
class  VectorFillerToolBase
 Common code for wrapping filled variables up into a vector. More...
class  VertexCovarianceAssociationTool
 Associate from a VxCandidate to its Position ErrorMatrix. More...
class  VertexKineFillerTool
 Block filler tool for vertex kinematics, from attached tracks. More...
class  VertexTrackParticleAssociationTool
class  VoidObjFillerTool
 Object filler tool for tools taking no input. More...
struct  WrapType
 Helper so that Types<> will be an empty class. More...

Typedefs

template<class... TYPES>
using Types = std::tuple<WrapType<TYPES>...>
 A simple tuple of multiple types.
template<class T>
using ButFirstType_t = typename ButFirstType<T>::type

Functions

StatusCode DummyInitAlg::initialize ATLAS_NOT_THREAD_SAFE ()
 Standard Gaudi initialize method.
bool isPrimitive (const std::string &type)
 This function is used in the code generator to determine from a type name if it's a primitive type or not.
ObjectMetadata operator+ (const ObjectMetadata &obj1, const ObjectMetadata &obj2)
 Operator for creating the sum of two metadata objects.
StatusCode nameToTypeinfo (const std::string &name, std::type_info const *&ti, const std::string &context, ServiceHandle< IClassIDSvc > clidsvc=ServiceHandle< IClassIDSvc >("ClassIDSvc", "TypeNameConversions"))
 Convert from a class name to a type_info.
StatusCode nameToCLID (const std::string &name, CLID &clid, const std::string &context, ServiceHandle< IClassIDSvc > clidsvc=ServiceHandle< IClassIDSvc >("ClassIDSvc", "TypeNameConversions"))
 Convert from a class name to a CLID.
StatusCode clidToTypeinfo (CLID clid, const std::string &nmae, std::type_info const *&ti, const std::string &context)
 Convert from a CLID to a type_info; we also already know the name.
std::string typeinfoToName (const std::type_info &ti)
 Convert from a type_info to a name.
template<class T0>
const std::type_info & multiTypeInfo (Types< T0 > *, size_t which)
 Return one type_info from a tuple.
template<class T0, class... TYPES>
const std::type_info & multiTypeInfo (Types< T0, TYPES... > *, size_t which)
template<class T>
const std::type_info & multiTypeInfo (T *, size_t)
std::string ObjectMetadata::genSuffix ATLAS_NOT_THREAD_SAFE (const std::string &name, size_t length)
 Generate a unique suffix for a metadata object name.
const AmgSymMatrix (5) *PerigeeCovarianceAssociationTool
 Return the target object.
const AmgSymMatrix (3) *VertexCovarianceAssociationTool
 Return the target object.

Variables

static const EventFlagNames eventFlagNames []
static constexpr size_t nEventFlagNames

Detailed Description

Block filler tool for noisy FEB information.

=========================== BEGIN OF COMMENTS ================================ Implementation of TileEventFillerTool, which is responsible for retrieving EventInfo and feeding the D3PD with event-by-event information.

Private namespace for the local functions.

Author
Laurent Duflot <duflot at lal.in2p3.fr>

Level of details can be set as follows:

  • 0 NO INFORMATION
  • 1 RUN AND EVENT NUMBERS, TIMESTAMP
  • 2 NUMBER OF STACO/MUID MUONS
  • 3 ELABORATE EVENT INFORMATION
  • 4 TRIGGER DECISIONS
  • 5 BASIC MISSING ENERGY
  • 6 CALORIMETRIC MISSING ENERGY
  • 7 ELABORATE MISSING ENERGY
  • 8 INVARIANT MASS

Typedef Documentation

◆ ButFirstType_t

template<class T>
using D3PD::ButFirstType_t = typename ButFirstType<T>::type

◆ Types

template<class... TYPES>
using D3PD::Types = std::tuple<WrapType<TYPES>...>

A simple tuple of multiple types.

This can be used as the type argument of BlockFillerTool and related templates in order to define a tool that can take one of a set of types as input. Eg,

std::tuple< WrapType< TYPES >... > Types
A simple tuple of multiple types.

Definition at line 61 of file PhysicsAnalysis/D3PDMaker/D3PDMakerUtils/D3PDMakerUtils/Types.h.

Function Documentation

◆ AmgSymMatrix() [1/2]

const D3PD::AmgSymMatrix ( 3 )

Return the target object.

Parameters
pThe source object for the association.

Return the target of the association, or 0.

Definition at line 39 of file VertexCovarianceAssociationTool.cxx.

40{
41 return &(p.recVertex().covariancePosition());
42}

◆ AmgSymMatrix() [2/2]

const D3PD::AmgSymMatrix ( 5 )

Return the target object.

Parameters
pThe source object for the association.

Return the target of the association, or 0.

Definition at line 43 of file PerigeeCovarianceAssociationTool.cxx.

44{
45 // cast to MeasuredPerigee
46 //const Trk::MeasuredPerigee *measPerigee = dynamic_cast<const Trk::MeasuredPerigee *>(&p);
47 const AmgSymMatrix(5) * cov = p.covariance();
48 if (cov) {
49 // return pointer to Covariance Matrix
50 return cov;
51 }else{
52 REPORT_MESSAGE (MSG::WARNING) << "Could not cast Trk::Perigee to Trk::MeasuredPerigee";
53 }
54
55 return 0;
56}
#define REPORT_MESSAGE(LVL)
Report a message.
#define AmgSymMatrix(dim)

◆ ATLAS_NOT_THREAD_SAFE() [1/2]

std::string ObjectMetadata::metadataName D3PD::ATLAS_NOT_THREAD_SAFE ( void ) const

Standard Gaudi initialize method.

When saving the "serialized" version of the object as metadata into a D3PD file, this function should be used to construct the name of the metadata object.

The name receives a "random component" to make sure that when a single job uses the same D3PDObject multiple times, possibly with different detail levels, we would save the variable definitions for both into the output file.

Returns
A unique name, containing the D3PDObject's name

Definition at line 69 of file DummyInitAlg.cxx.

70{
71 CHECK( AthAlgorithm::initialize() );
72
73 // THistSvc has a bug whereby if it opens output files,
74 // then it leaves the root directory pointing at the last output
75 // file when initialize returns. This means that other root
76 // objects that are meant to be transient can end up in this file.
77 // Worse, we can get a double-delete, as these transient objects
78 // will then be deleted when the file is closed.
79 //
80 // We do this here in the hope that we're the first to call THistSvc.
81 // Maybe we should also bash the current directory back to TROOT?
82 //
83 // This can be removed once this is fixed in THistSvc.
84 // https://savannah.cern.ch/bugs/index.php?60162
85 {
86 DirectoryRestore save;
87 CHECK( m_histSvc.retrieve() );
88 }
89
90 CHECK( detStore().retrieve() );
91 return StatusCode::SUCCESS;
92}
#define CHECK(...)
Evaluate an expression and check for errors.

◆ ATLAS_NOT_THREAD_SAFE() [2/2]

std::string ObjectMetadata::genSuffix D3PD::ATLAS_NOT_THREAD_SAFE ( const std::string & name,
size_t length )

Generate a unique suffix for a metadata object name.

Parameters
nameThe metadata object name.
lengthThe length of the suffix to add.

We used to do this by generating a random string. However, this is very bad for regression testing, as adding or removing one variable can then change the names of all subsequent variables. Instead, we generate the suffix based on a count of the number of times we've seen a particular name.

Definition at line 406 of file ObjectMetadata.cxx.

408 {
409
410 // Count of the number of times a given name was used,
411 // in order to assign them a unique suffix.
412 static std::unordered_map<std::string, size_t> namecount;
413
414 const size_t count = ++namecount[name];
415 std::ostringstream os;
416 os << std::setw(length) << std::setprecision(length) << std::setfill('0')
417 << count;
418 return os.str();
419 }
double length(const pvec &v)
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:146

◆ clidToTypeinfo()

StatusCode D3PD::clidToTypeinfo ( CLID clid,
const std::string & name,
std::type_info const *& ti,
const std::string & context )

Convert from a CLID to a type_info; we also already know the name.

Parameters
clidThe CLID to convert.
nameThe name of the class to convert.
ti[out]The resulting type_info.
contextContext name, for error reporting.

Definition at line 99 of file TypeNameConversions.cxx.

103{
104 ti = 0;
105 const SG::BaseInfoBase* bib = SG::BaseInfoBase::find (clid);
106 if (bib) {
107 ti = &bib->typeinfo();
108 return StatusCode::SUCCESS;
109 }
110
111 // Hmm.. no BaseInfo. Maybe Root knows it.
112 const TClass* cls = TClass::GetClass (name.c_str());
113 if (cls){
114 ti = cls->GetTypeInfo();
115 if (ti)
116 return StatusCode::SUCCESS;
117 }
118
119 REPORT_MESSAGE_WITH_CONTEXT (MSG::ERROR, context)
120 << "Can't find typeinfo for CLID "
121 << clid << " (type " << name << ").";
122 return StatusCode::FAILURE;
123}
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
The non-template portion of the BaseInfo implementation.
static const BaseInfoBase * find(CLID clid)
Find the BaseInfoBase instance for clid.
Definition BaseInfo.cxx:570
const std::type_info & typeinfo() const
Return the std::type_info for this class.
Definition BaseInfo.cxx:151

◆ isPrimitive()

bool D3PD::isPrimitive ( const std::string & type)

This function is used in the code generator to determine from a type name if it's a primitive type or not.

Function deciding if a given type name is a primitive or not.

Some parts of the generated code have to be written differently for primitive and complex types.

Parameters
typeThe type name that we want to evaluate
Returns
true if the type name is a known primitive type, false otherwise

Definition at line 24 of file isPrimitive.cxx.

24 {
25
26 //
27 // Create an internal list of primitive type names. This
28 // only has to be done once.
29 //
30 static const std::vector< std::string > primitives = {
31 // Normal C++ type names:
32 "bool",
33 "char",
34 "unsigned char",
35 "short",
36 "unsigned short",
37 "int",
38 "unsigned int",
39 "long",
40 "unsigned long",
41 "long long",
42 "unsigned long long",
43 "float",
44 "double",
45 // ROOT type names:
46 "Bool_t",
47 "Char_t",
48 "UChar_t",
49 "Short_t",
50 "UShort_t",
51 "Int_t",
52 "UInt_t",
53 "Long_t",
54 "ULong_t",
55 "Long64_t",
56 "ULong64_t",
57 "Float_t",
58 "Double_t",
59 };
60
61 return ( std::find( primitives.begin(), primitives.end(), type ) ==
62 primitives.end() ? false : true );
63 }

◆ multiTypeInfo() [1/3]

template<class T>
const std::type_info & D3PD::multiTypeInfo ( T * ,
size_t  )

Definition at line 108 of file PhysicsAnalysis/D3PDMaker/D3PDMakerUtils/D3PDMakerUtils/Types.h.

109{
110 return typeid (T);
111}

◆ multiTypeInfo() [2/3]

template<class T0>
const std::type_info & D3PD::multiTypeInfo ( Types< T0 > * ,
size_t which )

Return one type_info from a tuple.

If T is Types<T0, ...>, then multiTypeInfo (T*, which) will return typeid(Twhich). Otherwise, it will return typeid(T).

Definition at line 92 of file PhysicsAnalysis/D3PDMaker/D3PDMakerUtils/D3PDMakerUtils/Types.h.

93{
94 if (which == 0) return typeid (T0);
95 std::abort();
96}

◆ multiTypeInfo() [3/3]

template<class T0, class... TYPES>
const std::type_info & D3PD::multiTypeInfo ( Types< T0, TYPES... > * ,
size_t which )

Definition at line 100 of file PhysicsAnalysis/D3PDMaker/D3PDMakerUtils/D3PDMakerUtils/Types.h.

101{
102 if (which == 0) return typeid (T0);
103 return multiTypeInfo (static_cast<Types<TYPES...>*>(nullptr), which-1);
104}
const std::type_info & multiTypeInfo(Types< T0 > *, size_t which)
Return one type_info from a tuple.

◆ nameToCLID()

StatusCode D3PD::nameToCLID ( const std::string & name,
CLID & clid,
const std::string & context,
ServiceHandle< IClassIDSvc > clidsvc = ServiceHandle<IClassIDSvc>("ClassIDSvc",                                                    "TypeNameConversions") )

Convert from a class name to a CLID.

Parameters
nameThe class name to convert.
ti[out]The resulting type_info.
contextContext name, for error reporting.
clidsvcHandle to the CLID service.
nameThe class name to convert.
clid[out]The resulting CLID.
contextContext name, for error reporting.
clidsvcHandle to the CLID service.

Definition at line 72 of file TypeNameConversions.cxx.

77{
78 clid = CLID_NULL;
79 CHECK_WITH_CONTEXT( clidsvc.retrieve(), context );
80
81 if (clidsvc->getIDOfTypeName (name, clid).isSuccess())
82 return StatusCode::SUCCESS;
83 if (clidsvc->getIDOfTypeInfoName (name, clid).isSuccess())
84 return StatusCode::SUCCESS;
85
86 REPORT_MESSAGE_WITH_CONTEXT (MSG::ERROR, context)
87 << "Can't find CLID for type name " << name;
88 return StatusCode::FAILURE;
89}
#define CHECK_WITH_CONTEXT(...)
Evaluate an expression and check for errors, with an explicitly specified context name.

◆ nameToTypeinfo()

StatusCode D3PD::nameToTypeinfo ( const std::string & name,
std::type_info const *& ti,
const std::string & context,
ServiceHandle< IClassIDSvc > clidsvc = ServiceHandle<IClassIDSvc>("ClassIDSvc",                                                        "TypeNameConversions") )

Convert from a class name to a type_info.

Parameters
nameThe class name to convert.
ti[out]The resulting type_info..
contextContext name, for error reporting.
clidsvcHandle to the CLID service.

Definition at line 33 of file TypeNameConversions.cxx.

38{
39 ti = 0;
40
41 // See if root knows the type.
42 const TClass* cls = TClass::GetClass (name.c_str());
43 if (cls) {
44 ti = cls->GetTypeInfo();
45 if (ti) return StatusCode::SUCCESS;
46 }
47
48 // Try to look it up using BaseInfo. First need to convert to a CLID.
49 CLID clid;
50 if (nameToCLID (name, clid, context, std::move(clidsvc)).isSuccess()) {
51 const SG::BaseInfoBase* bib = SG::BaseInfoBase::find (clid);
52 if (bib) {
53 ti = &bib->typeinfo();
54 return StatusCode::SUCCESS;
55 }
56 }
57
58 REPORT_MESSAGE_WITH_CONTEXT (MSG::ERROR, context)
59 << "Can't convert type name " << name << " to type_info.";
60
61 return StatusCode::FAILURE;
62}
uint32_t CLID
The Class ID type.
StatusCode nameToCLID(const std::string &name, CLID &clid, const std::string &context, ServiceHandle< IClassIDSvc > clidsvc=ServiceHandle< IClassIDSvc >("ClassIDSvc", "TypeNameConversions"))
Convert from a class name to a CLID.

◆ operator+()

ObjectMetadata D3PD::operator+ ( const ObjectMetadata & obj1,
const ObjectMetadata & obj2 )

Operator for creating the sum of two metadata objects.

Definition at line 582 of file ObjectMetadata.cxx.

583 {
584
585 ObjectMetadata result( obj1 );
586 return result += obj2;
587 }
D3PD variable metadata handling class.

◆ typeinfoToName()

std::string D3PD::typeinfoToName ( const std::type_info & ti)

Convert from a type_info to a name.

Parameters
tiThe type_info to convert.

Definition at line 130 of file TypeNameConversions.cxx.

131{
132 // Handle fundamental types.
133 if (ti == typeid(float))
134 return "float";
135 else if (ti == typeid(double))
136 return "double";
137 else if (ti == typeid(int))
138 return "int";
139 else if (ti == typeid(bool))
140 return "bool";
141 else if (ti == typeid(char))
142 return "char";
143 else if (ti == typeid(signed char))
144 return "signed char";
145 else if (ti == typeid(unsigned char))
146 return "unsigned char";
147 else if (ti == typeid(short))
148 return "short";
149 else if (ti == typeid(unsigned short))
150 return "unsigned short";
151 else if (ti == typeid(unsigned int))
152 return "unsigned int";
153 else if (ti == typeid(long))
154 return "long";
155 else if (ti == typeid(unsigned long))
156 return "unsigned long";
157 else if (ti == typeid(long long))
158 return "long long";
159 else if (ti == typeid(unsigned long long))
160 return "unsigned long long";
161 else if (ti == typeid(long double))
162 return "long double";
163 else if (ti == typeid(wchar_t))
164 return "wchar_t";
165
166 // Otherwise try to look it up with root.
167 std::string eltname;
168 TClass* eltcls = TClass::GetClass (ti);
169 if (eltcls) {
170 eltname = eltcls->GetName();
171 }
172 else {
173 std::string eltname = System::typeinfoName (ti);
174 eltcls = TClass::GetClass (eltname.c_str());
175 if (eltcls)
176 eltname = eltcls->GetName();
177 }
178 return eltname;
179}

Variable Documentation

◆ eventFlagNames

const EventFlagNames D3PD::eventFlagNames[]
static
Initial value:
= {
{ xAOD::EventInfo::Pixel, "pixel" },
{ xAOD::EventInfo::Tile, "tile" },
{ xAOD::EventInfo::Muon, "muon" },
{ xAOD::EventInfo::Core, "core" },
}
@ Tile
The Tile calorimeter.
@ Muon
The muon spectrometer.
@ Core
Core flags describing the event.
@ Pixel
The pixel tracker.
@ ForwardDet
The forward detectors.
@ LAr
The LAr calorimeter.

Definition at line 31 of file EventFlagNames.h.

31 {
32 { xAOD::EventInfo::Pixel, "pixel" },
33 { xAOD::EventInfo::SCT, "sct" },
34 { xAOD::EventInfo::TRT, "trt" },
35 { xAOD::EventInfo::LAr, "lar" },
36 { xAOD::EventInfo::Tile, "tile" },
37 { xAOD::EventInfo::Muon, "muon" },
39 { xAOD::EventInfo::Core, "core" },
40};

◆ nEventFlagNames

size_t D3PD::nEventFlagNames
staticconstexpr
Initial value:
=
sizeof(eventFlagNames) / sizeof(eventFlagNames[0])
static const EventFlagNames eventFlagNames[]

Definition at line 42 of file EventFlagNames.h.