ATLAS Offline Software
IParticleHandleBase.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 // //
8 // Header file for class IParticleHandleBase //
9 // //
10 // Description: Base class for IParticle xAOD. //
11 // //
12 // Author: E. Moyse //
13 // //
15 
16 #ifndef IPARTICLEHANDLEBASE_H
17 #define IPARTICLEHANDLEBASE_H
18 
20 
21 #include <QStringList>
22 #include <QTreeWidgetItem>
23 #include <vector>
24 #include <set>
25 #include <QList>
26 #include <QFlags>
27 #include "AODHandleBase.h"
28 
32 class TrackSysCommonData;
33 class SoMaterial;
34 class SoNode;
35 
36 namespace xAOD {
37  class IParticle;
38 }
39 
40 class AODSysCommonData;
41 
43 public:
45  virtual ~IParticleHandleBase();
46 
47  // AODHandle base methods
48  SoMaterial * determineMaterial();
49  virtual QStringList baseInfo() const;
50 
51  // IParticle specific methods
52  virtual Amg::Vector3D momentum() const { return Amg::Vector3D(0,0,0); }
53 
54  virtual const xAOD::IParticle& iParticle() const =0;
55 
56  virtual double charge() const =0 ;
57  virtual double mass() const;
58 
59  bool hasCharge() const { return charge()!=unknown(); }
60  bool hasMass() const { return mass()!=unknown(); }
61 
62 protected:
63 
64 private:
65 
66  // It is illegal to copy/assign a IParticleHandleBase:
69 
70  class Imp;
71  Imp * m_d;
72 };
73 
74 
75 #endif
IParticleHandleBase::operator=
IParticleHandleBase & operator=(const IParticleHandleBase &)
AssociatedObjectHandleBase
Definition: AssociatedObjectHandleBase.h:33
AODHandleBase::unknown
static double unknown()
Definition: AODHandleBase.h:93
AODHandleBase
Definition: AODHandleBase.h:43
IParticleHandleBase::hasMass
bool hasMass() const
Definition: IParticleHandleBase.h:60
AODSysCommonData
Definition: AODSysCommonData.h:42
IParticleHandleBase::m_d
Imp * m_d
Definition: IParticleHandleBase.h:70
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
IParticleHandleBase::charge
virtual double charge() const =0
GeoPrimitives.h
IParticleHandleBase::~IParticleHandleBase
virtual ~IParticleHandleBase()
Definition: IParticleHandleBase.cxx:65
TrackSysCommonData
Definition: TrackSysCommonData.h:47
IParticleHandleBase::IParticleHandleBase
IParticleHandleBase(const IParticleHandleBase &)
IParticleHandleBase
Definition: IParticleHandleBase.h:42
IParticleHandleBase::momentum
virtual Amg::Vector3D momentum() const
Definition: IParticleHandleBase.h:52
AssocObjAttachmentHandle
Definition: TrackHandleBase.h:197
IParticleHandleBase::iParticle
virtual const xAOD::IParticle & iParticle() const =0
IParticleHandleBase::baseInfo
virtual QStringList baseInfo() const
Definition: IParticleHandleBase.cxx:85
IParticleHandleBase::IParticleHandleBase
IParticleHandleBase(IParticleCollHandleBase *)
Definition: IParticleHandleBase.cxx:59
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
IParticleHandleBase::mass
virtual double mass() const
Returns unknown() in case of trouble.
Definition: IParticleHandleBase.cxx:78
IParticleHandleBase::hasCharge
bool hasCharge() const
Definition: IParticleHandleBase.h:59
AODHandleBase.h
IParticleHandleBase::determineMaterial
SoMaterial * determineMaterial()
Should be implemented by children, in order to change the material depending on the interface etc.
Definition: IParticleHandleBase.cxx:71
IParticleCollHandleBase
Base class for collections holding AOD objects of iParticle type Handles pt etc cuts Local data:
Definition: IParticleCollHandleBase.h:50
IParticle
Definition: Event/EventKernel/EventKernel/IParticle.h:43
IParticleHandleBase::Imp
Definition: IParticleHandleBase.cxx:50