ATLAS Offline Software
Loading...
Searching...
No Matches
SimHitHandle_TrackRecord.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5
7// //
8// Implementation of class SimHitHandle_TrackRecord //
9// //
10// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11// Initial version: May 2008 //
12// //
14
17#include "VP1Base/VP1Msg.h"
18
21
23
24//____________________________________________________________________
27 m_trkrecord(const_cast<TrackRecord*>(tr)),
28 m_mom(m_trkrecord->GetMomentum().mag()),
29 m_momdir( Amg::Hep3VectorToEigen( m_trkrecord->GetMomentum().unit() ) ),
30 m_link( new HepMcParticleLink(m_trkrecord->barcode(), 0, HepMcParticleLink::IS_POSITION, HepMcParticleLink::IS_BARCODE))// FIXME barcode-based
31{
32}
33
34//____________________________________________________________________
39
40//____________________________________________________________________
42{
43 Amg::Transform3D transf = Amg::CLHEPTranslate3DToEigen(HepGeom::Translate3D(m_trkrecord->GetPosition().x(),m_trkrecord->GetPosition().y(),m_trkrecord->GetPosition().z()));
44 //Surface:
45 const Trk::PlaneSurface * surf
46 = new Trk::PlaneSurface( transf );
47 //Fixme: surface and transform ever DELETED??
48
49 //Fixme: Don't do this in every simhit!!:
50 bool hasCharge;
51 double charge;
53 if (!hasCharge) {
54 VP1Msg::message("SimHitHandle_TrackRecord::createTrackParameters ERROR: Could not find particle charge (pdg="
55 +QString::number(pdg())+"). Assuming charge=+1.");
56 charge = +1.0;
57 } else {
58 if (VP1Msg::verbose())
59 VP1Msg::messageVerbose("Looked up particle charge for track record with pdg code "+VP1Msg::str(pdg())+": "+VP1Msg::str(charge));
60 }
61 return new Trk::AtaPlane(posStart(), Amg::Hep3VectorToEigen(m_trkrecord->GetMomentum()),charge,*surf);
62}
63
68
Scalar mag() const
mag method
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
double charge() const
bool hasCharge() const
virtual Amg::Vector3D posStart() const override
virtual const HepMcParticleLink & particleLink() const override
const HepMcParticleLink * m_link
SimHitHandle_TrackRecord(const TrackRecord *)
virtual Trk::TrackParameters * createTrackParameters() const override
Class for a planaer rectangular or trapezoidal surface in the ATLAS detector.
static void messageVerbose(const QString &)
Definition VP1Msg.cxx:84
static bool verbose()
Definition VP1Msg.h:31
static void message(const QString &, IVP1System *sys=0)
Definition VP1Msg.cxx:30
static double particleCharge(const int &pdgcode, bool &ok)
static QString str(const QString &s)
Definition VP1String.h:49
Definition of ATLAS Math & Geometry primitives (Amg)
Amg::Transform3D CLHEPTranslate3DToEigen(const HepGeom::Translate3D &CLHEPtranslate3D)
Converts a CLHEP-based HepGeom::Translate3 into an Eigen-based Amg::Transform3D.
Amg::Vector3D Hep3VectorToEigen(const CLHEP::Hep3Vector &CLHEPvector)
Converts a CLHEP-based CLHEP::Hep3Vector into an Eigen-based Amg::Vector3D.
Eigen::Affine3d Transform3D
ParametersBase< TrackParametersDim, Charged > TrackParameters
ParametersT< TrackParametersDim, Charged, PlaneSurface > AtaPlane