ATLAS Offline Software
Loading...
Searching...
No Matches
SimHitHandleBase.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 sim. hit. handle classes //
9// //
10// Description: Wrapper for simhits and track records //
11// //
12// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
13// Initial version: March 2008 //
14// update: Feb 2014 - Ric Bianchi (rbianchi@cern.ch)//
15// //
17
18#ifndef SIMHITHANDLEBASE_H
19#define SIMHITHANDLEBASE_H
20
22
23// Eigen migration
24//#include "TrkEventPrimitives/GlobalMomentum.h"
25//#include "TrkEventPrimitives/GlobalPosition.h"
27
30#include <QString>
31
33public:
34 SimHitHandleBase() : m_trackPars(nullptr),m_pdgId(SimBarCode::unknownPDG), m_fakemom(-2), m_charge(-99999.0) {}
36 virtual QString type() const = 0;
37
38 //Fixme: Evaluate which of the following we really need:
39 virtual Amg::Vector3D momentumDirection() const = 0;
40 virtual double actualMomentum() const { return -1; }
41 double momentum() const { return m_fakemom == -2 ? actualMomentum() : m_fakemom; }
42 virtual Amg::Vector3D posStart() const = 0;
43 virtual Amg::Vector3D posEnd() const = 0;
44 virtual double hitTime() const = 0;
45
46 virtual const HepMcParticleLink& particleLink() const = 0;
47 int pdg() const;
49
50 bool hasCharge() const { return m_charge!=-99999.0; }
51 double charge() const { return m_charge; }
52
54
55 //FIXME: for TrackCollHandle_TruthTracks
56 void setFakeMomentum(const double& m ) { m_fakemom = m; }
57 void setCharge(const double& c ) { m_charge = c; }
59
60protected:
61 virtual int actualPDGCodeFromSimHit() const { return SimBarCode::unknownPDG; };
62
63private:
64 // It is illegal to copy/assign a SimHitHandleBase:
69 void setPDG(int);//For TrackCollHandle_TruthTracks in case actualPDGCodeFromSimHit() returns SimBarCode::unknownPDG;
70 double m_fakemom;
71 double m_charge;
74};
75
76typedef std::vector<std::pair<double,SimHitHandleBase*> > SimHitList;//hitTime() to SimHitHandle's
77
79// Inlines //
81
82inline int SimHitHandleBase::pdg() const
83{
84 return m_pdgId;
85}
86
88{
89 m_pdgId = pdg;
90}
91
92#endif
std::vector< std::pair< double, SimHitHandleBase * > > SimHitList
static const int unknownPDG
Definition SimBarCode.h:25
Trk::TrackParameters * m_trackPars
double charge() const
virtual double hitTime() const =0
friend class TrackCollHandle_TruthTracks
void setCharge(const double &c)
virtual Amg::Vector3D posStart() const =0
virtual Trk::TrackParameters * createTrackParameters() const =0
SimHitHandleBase(const SimHitHandleBase &)
SimHitHandleBase & operator=(const SimHitHandleBase &)
virtual Amg::Vector3D momentumDirection() const =0
virtual const HepMcParticleLink & particleLink() const =0
virtual ~SimHitHandleBase()
void setFakeMomentum(const double &m)
virtual Amg::Vector3D posEnd() const =0
bool hasCharge() const
virtual int actualPDGCodeFromSimHit() const
virtual double actualMomentum() const
friend class TrackCollHandle_SimulationTracks
virtual QString type() const =0
SimBarCode simBarCode() const
double momentum() const
Eigen::Matrix< double, 3, 1 > Vector3D
ParametersBase< TrackParametersDim, Charged > TrackParameters