21#include "CLHEP/Vector/LorentzVector.h"
43 std::vector<AscObj_TruthPoint*> *
ascObjs;
52 std::unique_ptr<Trk::TrackParameters>(pars),
67 if (!trackStateOnSurfaces) {
68 VP1Msg::messageDebug(
"TrackHandle_SimulationTrack WARNING: Could not create track due to null TSOS vector");
71 if (trackStateOnSurfaces->
empty()) {
72 VP1Msg::messageDebug(
"TrackHandle_SimulationTrack WARNING: Could not create track due to empty TSOS vector");
73 delete trackStateOnSurfaces;
78 delete trackStateOnSurfaces;
83 theclass->extrapolationParticleHypothesis());
85 std::unique_ptr<Trk::TrackStates> sink(trackStateOnSurfaces);
123 delete m_d->trkTrack;
134 VP1Msg::message(
"TrackHandle_SimulationTrack ERROR: Could not determine particle charge (pdg="
135 +QString::number(
theclass->pdgCode())+
").");
143 SimHitList::const_iterator it, itE(
simHitList.end());
144 for ( it =
simHitList.begin(); it != itE; ++it ) {
147 addPars(trackStateOnSurfaces,it->second->createTrackParameters());
161 l <<
"Evt index = "+QString::number(
m_d->simBarCode.evtIndex());
162 l <<
"BarCode = "+QString::number(
m_d->simBarCode.barCode());
170 m_d->ensureInitTrkTracks();
171 return m_d->trkTrack;
178 return m_d->simBarCode.pdgCode();
184 return m_d->simBarCode.isNonUniqueSecondary();
190 SimHitList::const_iterator it, itE(
m_d->simHitList.end());
191 for ( it =
m_d->simHitList.begin(); it != itE; ++it ) {
192 if (it->second->momentum()>=0)
193 return (it->second->momentum()) * (it->second->momentumDirection());
203 m_d->ensureInitAscObjs();
209 if (
m_d->ascObjVis==b)
221 m_d->ensureInitAscObjs();
224 std::vector<AscObj_TruthPoint*>::iterator it(
m_d->ascObjs->begin()), itE(
m_d->ascObjs->end());
226 (*it)->setVisible(b);
234 ascObjs =
new std::vector<AscObj_TruthPoint*>;
237 SimHitList::const_iterator it, itE(
simHitList.end());
238 for ( it =
simHitList.begin(); it != itE; ++it )
242 std::vector<AscObj_TruthPoint*>::iterator it, itE(
ascObjs->end());
243 for (it=
ascObjs->begin();it!=itE;++it)
245 for (it=
ascObjs->begin();it!=itE;++it)
253 if (!
m_d->simHitList.empty()) {
254 if (
m_d->simHitList.at(0).second->hasCharge())
255 return m_d->simHitList.at(0).second->charge();
257 VP1Msg::messageVerbose(
"TrackHandle_SimulationTrack::calculateCharge() WARNING: Simhit did not have charge!");
An STL vector of pointers that by default owns its pointed-to elements.
std::vector< std::pair< double, SimHitHandleBase * > > SimHitList
bool empty() const noexcept
Returns true if the collection is empty.
virtual double calculateCharge() const
friend class TrackCollHandleBase
TrackHandleBase(TrackCollHandleBase *)
QStringList baseInfo() const
virtual Amg::Vector3D momentum() const
static Trk::TrackStateOnSurface * createTSOS(Trk::TrackParameters *pars)
std::vector< AscObj_TruthPoint * > * ascObjs
void ensureInitTrkTracks()
TrackHandle_SimulationTrack * theclass
const Trk::Track * trkTrack
Imp(TrackHandle_SimulationTrack *tc, const SimBarCode &sbc, const SimHitList &shl)
void createTrack(Trk::TrackStates *trackStateOnSurfaces)
static void addPars(Trk::TrackStates *dv, Trk::TrackParameters *pars)
bool hasBarCodeZero() const
void visibleStateChanged()
override if need to take action in this case.
void setAscObjsVisible(bool)
virtual QStringList clicked() const
Called when user selects the node (stringlist is displayed in messagebox).
virtual Amg::Vector3D momentum() const
virtual int pdgCode() const
0 means unknown
virtual ~TrackHandle_SimulationTrack()
const Trk::Track * provide_pathInfoTrkTrack() const
virtual double calculateCharge() const
TrackHandle_SimulationTrack(TrackCollHandleBase *, const SimBarCode &simBarCode, const SimHitList &)
Contains information about the 'fitter' of this track.
@ Unknown
Track fitter not defined.
represents the track state (measurement, material, fit parameters and quality) at a surface.
static void messageVerbose(const QString &)
static void messageDebug(const QString &)
static void message(const QString &, IVP1System *sys=0)
Eigen::Matrix< double, 3, 1 > Vector3D
DataVector< const Trk::TrackStateOnSurface > TrackStates
ParametersBase< TrackParametersDim, Charged > TrackParameters