11#include <framework/gearbox/Const.h>
12#include <top/reconstruction_cpp/HelixSwimmer.h>
13#include <top/reconstruction_cpp/RaytracerBase.h>
14#include <framework/database/DBObjPtr.h>
15#include <top/dbobjects/TOPCalModuleAlignment.h>
16#include <top/dbobjects/TOPFrontEndSetting.h>
17#include <mdst/dataobjects/MCParticle.h>
21#include <unordered_map>
62 explicit TrackAngles(
const ROOT::Math::XYZVector& direction);
111 explicit TOPTrack(
const Track& track,
const std::string& digitsName =
"",
119 explicit TOPTrack(
const ExtHit* extHit,
const std::string& digitsName =
"");
276 bool setHelix(
const ROOT::Math::Transform3D& transform);
286 bool xsecPrism(std::vector<double>& lengths, std::vector<ROOT::Math::XYZPoint>& positions,
318 double mass = chargedStable.
getMass();
319 if (overrideMass > 0)
Provides a type-safe way to pass members of the chargedStableSet set.
double getMass() const
Particle mass.
static const ChargedStable pion
charged pion particle
static const double speedOfLight
[cm/ns]
Class for accessing objects in the database.
Store one Ext hit as a ROOT object.
A Class to store the Monte Carlo particle information.
int getPDG() const
Return PDG code of particle.
Class to store track parameters of incoming MC particles relation to MCParticle filled in top/simulat...
Utility for propagation of a particle along helix.
Reconstructed track at TOP.
bool overrideTransformation(const ROOT::Math::Transform3D &transform)
Overrides transformation from local to nominal frame, which is by default obtained from DB.
int getPDGCode() const
Returns PDG code of associated MCParticle (returns 0 if none)
const Track * getTrack() const
Returns mdst track.
double m_bkgRate
estimated background hit rate
double getLengthInQuartz() const
Returns track length within quartz.
const MCParticle * getMCParticle() const
Returns MC particle assigned to this track (if any)
DBObjPtr< TOPFrontEndSetting > m_feSetting
front-end settings
DBObjPtr< TOPCalModuleAlignment > m_alignment
module alignment constants
double getBkgRate() const
Returns estimated background hit rate.
bool isScanRequired(unsigned col, double time, double wid) const
Checks if scan method of YScanner is needed to construct PDF for a given pixel column.
const TOPTrack::AssumedEmission & getEmissionPoint(double dL=0) const
Returns assumed photon emission position and track direction.
std::unordered_multimap< unsigned, const SelectedHit * > m_columnHits
selected hits mapped to pixel columns
double getCharge() const
Returns charge.
bool isValid() const
Checks if track is successfully constructed.
TOPTrack()
Default constructor.
bool xsecPrism(std::vector< double > &lengths, std::vector< ROOT::Math::XYZPoint > &positions, const RaytracerBase::Prism &prism, const ROOT::Math::Transform3D &transform)
Calculates intersection of trajectory with prism.
const ExtHit * getExtHit() const
Returns extrapolated hit (track entrance to the bar)
double m_momentum
track momentum magnitude at TOP
int getModuleID() const
Returns slot ID.
std::map< double, TOPTrack::AssumedEmission > m_emissionPoints
assumed emission points in module local frame
bool m_valid
true for properly defined track
double m_pT
transverse momentum at POCA
double getTransverseMomentum() const
Returns transverse momentum (at POCA)
bool setHelix(const ROOT::Math::Transform3D &transform)
Sets helix (helix is given in nominal frame)
const std::vector< SelectedHit > & getSelectedHits() const
Returns selected photon hits from TOPDigits belonging to the slot ID.
double m_trackLength
trajectory length from IP to average photon emission point
double getMomentumMag() const
Returns momentum magnitude (extrapolated to TOP)
double m_charge
track charge in units of elementary charge
std::vector< SelectedHit > m_selectedHits
selected photon hits from TOPDigits belonging to this slot ID
const MCParticle * m_mcParticle
MC particle.
TOP::HelixSwimmer m_helix
trajectory helix in nominal slot frame
double m_length
trajectory length within quartz
const TOP::HelixSwimmer & getHelix() const
Returns helix Helix is given in nominal slot frame and with reference position at average photon emis...
double getTrackLength() const
Returns track length from IP to the average position of photon emission within quartz.
void set(const Track &track, const std::string &digitsName, const Const::ChargedStable &chargedStable)
Sets the object (called by constructors)
const TOPBarHit * getBarHit() const
Returns bar hit of MC particle assigned to this track (if any)
const ExtHit * m_extHit
extrapolated hit
double getTOF(const Const::ChargedStable &particle, double dL=0, double overrideMass=0) const
Returns time-of-flight from IP to photon emission position.
const Track * m_track
mdst track
double getBeta(const Const::ChargedStable &particle, double overrideMass=0) const
Returns particle beta.
double m_TOFLength
trajectory length corresponding to TOF of extrapolated hit
const TOPBarHit * m_barHit
bar hit
Class that bundles various TrackFitResults.
double sqrt(double a)
sqrt for double
Abstract base class for different kinds of events.
prism data in module local frame.
assumed photon emission point in local frame
ROOT::Math::XYZPoint position
position
TrackAngles trackAngles
sine and cosine of track polar and azimuthal angles
selected photon hit from TOPDigits
SelectedHit(int pix, double t, double terr)
Constructor.
double timeErr
time uncertainty
Sine and cosine of track polar and azimuthal angles at assumed photon emission.
double sinFi
sine of azimuthal angle
TrackAngles()
Default constructor.
double cosFi
cosine of azimuthal angle
double cosTh
cosine of polar angle
ROOT::Math::XYZVector getDirection() const
Returns direction vector.
double sinTh
sine of polar angle