18#include "GaudiKernel/NTuple.h"
19#include "GaudiKernel/INTupleSvc.h"
20#include "GaudiKernel/SmartDataPtr.h"
37#include "CLHEP/GenericFunctions/CumulativeChiSquare.hh"
38#include "CLHEP/Geometry/Point3D.h"
39#include "CLHEP/Units/SystemOfUnits.h"
53 const std::string& name,
54 const IInterface* parent)
55 : base_class(
type, name, parent)
81 return StatusCode::SUCCESS;
88 if (msgLvl(MSG::DEBUG)) {
89 msg(MSG::DEBUG) <<
"Finalize() of FillTrack" <<
endmsg;
91 msg(MSG::DEBUG) <<
"________________________________________________________" <<
endmsg;
93 msg(MSG::DEBUG) <<
" InDetAlignFillTrack Summary: " <<
endmsg;
100 msg(MSG::DEBUG) <<
"________________________________________________________" <<
endmsg;
103 msg(MSG::DEBUG) <<
" Up Track Summary: " <<
endmsg;
109 msg(MSG::DEBUG) <<
"________________________________________________________" <<
endmsg;
113 msg(MSG::DEBUG) <<
" Low Track Summary: " <<
endmsg;
119 msg(MSG::DEBUG) <<
"________________________________________________________" <<
endmsg;
125 return StatusCode::SUCCESS;
136 const EventContext& ctx = Gaudi::Hive::currentContext();
174 if (StatusCode::SUCCESS !=
dumpMatching(Uptracks, Lowtracks)) {
176 return StatusCode::FAILURE;
187 if (StatusCode::SUCCESS != evtStore()->retrieve(truthCol,
m_TruthTrkCol)) {
189 return StatusCode::FAILURE;
193 return StatusCode::FAILURE;
196 if (msgLvl(MSG::DEBUG)) {
198 msg(MSG::DEBUG) <<
"Retrieved " << truthCol->size() <<
" truth tracks from StoreGate" <<
endmsg;
207 for (; trackItr != trackItrE && nTracks <
maxTracks; ++trackItr) {
209 if (track ==
nullptr) {
225 TrackTruthCollection::const_iterator found = truthCol->find(trackLink2);
227 if (found != truthCol->end()) {
243 Amg::Vector3D productionVertex(genParticle->production_vertex()->position().x(),
244 genParticle->production_vertex()->position().y(),
245 genParticle->production_vertex()->position().z());
247 if (msgLvl(MSG::DEBUG)) {
248 msg(MSG::DEBUG) << nTracks <<
". Generated Particle " << genParticle <<
endmsg;
251 float genPt = std::sqrt((genParticle->momentum().x()) * (genParticle->momentum().x())
252 + (genParticle->momentum().y()) * (genParticle->momentum().y()));
254 ATH_MSG_DEBUG(
" * pt " << genPt / CLHEP::GeV <<
" CLHEP::GeV/c"
255 <<
", p " << genParticle->momentum().e() / CLHEP::GeV <<
" CLHEP::GeV/c"
256 <<
", eta " << genParticle->momentum().eta()
257 <<
", phi " << genParticle->momentum().phi() <<
" CLHEP::rad");
262 float pX = genParticle->momentum().px();
263 float pY = genParticle->momentum().py();
264 float genParticlePt = std::sqrt((pX * pX) + (pY * pY));
269 if (genParticle->pdg_id() == 0)
ATH_MSG_WARNING(
"Particle with PDG 0!");
271 "No GenVertex (generator level) production vertex found!");
278 generatedTrackPerigee =
m_truthToTrack->makePerigeeParameters(genParticle);
280 if (!generatedTrackPerigee) {
281 if (msgLvl(MSG::DEBUG)) {
282 msg(MSG::DEBUG) <<
"Unable to extrapolate genParticle to perigee!" <<
endmsg;
283 msg(MSG::DEBUG) <<
"Trying to extrapolate directly to exclude material effects!" <<
endmsg;
288 sc = evtStore()->retrieve(recordCollection,
"CaloEntryLayer");
289 if (
sc == StatusCode::FAILURE) {
294 << recordCollection->
size());
299 record != recordCollection->
end(); ++record) {
300 if (std::abs((*record).GetPDGCode()) != 13)
continue;
301 HepGeom::Point3D<double> productionVertex = (*record).GetPosition();
302 double charge = (*record).GetPDGCode() > 0 ? -1.0 : 1.0;
306 (*record).GetMomentum().y(),
307 (*record).GetMomentum().z());
309 double momentum = direction.mag();
310 if (momentum < 500)
continue;
311 double genPar_qOverP = 1. / direction.mag();
312 direction *= genPar_qOverP;
313 if (
charge < 0) genPar_qOverP = -genPar_qOverP;
316 double genPar_phi = direction.phi();
317 if (genPar_phi < 0.) genPar_phi = genPar_phi + 2.0*
M_PI;
320 << productionVertex.x() <<
", "
321 << productionVertex.y() <<
", "
322 << productionVertex.z() <<
")");
324 double genPar_theta = direction.theta();
328 globalSurfaceCentre.setIdentity();
330 productionVertex.y(), productionVertex.z());
334 const Amg::Vector3D productionVertexAsGlobalPosition(productionVertex.x(),
335 productionVertex.y(),
336 productionVertex.z());
340 genPar_phi, genPar_theta, genPar_qOverP,
352 << perigeeGlobalPosition.x() <<
", "
353 << perigeeGlobalPosition.y() <<
", "
354 << perigeeGlobalPosition.z() <<
")");
360 const Amg::Vector3D difference = productionVertexAsGlobalPosition - perigeeGlobalPosition;
362 double distance = std::sqrt(difference.x() * difference.x() + difference.y() * difference.y());
363 ATH_MSG_DEBUG(
"Distance between perigee point and generated vertex: "
364 << distance / CLHEP::m <<
" m");
369 if (distance > 1.e-4) {
370 ATH_MSG_DEBUG(
"Distance between perigee and generated vertex exceeds tolerance ("
371 << 1.e-4 <<
" mm)... Extrapolating!");
374 *productionVertexTrackParams,
379 if (!generatedTrackPerigee)
continue;
381 ATH_MSG_DEBUG(
"Distance between perigee and generated vertex is less than tolerance ("
382 << 1.e-4 <<
" CLHEP::mm)... " <<
"No propagation to perigee required");
386 genPar_phi, genPar_theta, genPar_qOverP,
395 delete productionVertexTrackParams;
396 delete generatedTrackPerigee;
402 if (generatedTrackPerigee) {
404 m_nt_mc_Trk_vtxX[nTracks] = genParticle->production_vertex()->position().x();
405 m_nt_mc_Trk_vtxY[nTracks] = genParticle->production_vertex()->position().y();
406 m_nt_mc_Trk_vtxZ[nTracks] = genParticle->production_vertex()->position().z();
408 delete generatedTrackPerigee;
442 std::string nt3id =
m_ntupleName +
"/TrkTrack_Matching";
478 return StatusCode::SUCCESS;
489 std::string comments =
"Trk::Track Information";
496 nt0 =
m_ntupleSvc->book(nt0id, CLID_ColumnWiseTuple, comments);
563 else ATH_MSG_DEBUG(
"Ntuple " << nt0id <<
" has been booked successfully! ");
579 std::string comments =
"Trk::UpTrack Information";
586 nt1 =
m_ntupleSvc->book(nt1id, CLID_ColumnWiseTuple, comments);
624 else ATH_MSG_DEBUG(
"Ntuple " << nt1id <<
" has been booked successfully! ");
638 std::string comments =
"Trk::LowTrack Information";
645 nt2 =
m_ntupleSvc->book(nt2id, CLID_ColumnWiseTuple, comments);
681 if (
sc.isFailure())
msg(MSG::FATAL) <<
"Failed ntupleSvc()" <<
endmsg;
682 else msg(MSG::DEBUG) <<
"Ntuple " << nt2id <<
" has been booked successfully! " <<
endmsg;
693 ATH_MSG_DEBUG(
"Booking Matching between Up and Low Trk::Track Collections...");
695 std::string nt3id =
m_ntupleName +
"/TrkTrack_Matching";
696 std::string comments =
"Matching between Up and Low Trk::Track Collections";
703 m_ntupleSvc->book(nt3id, CLID_ColumnWiseTuple, comments);
723 if (
sc.isFailure())
msg(MSG::FATAL) <<
"Failed ntupleSvc()" <<
endmsg;
724 else msg(MSG::DEBUG) <<
"Ntuple " << nt3id <<
" has been booked successfully! " <<
endmsg;
726 if (msgLvl(MSG::ERROR))
msg(MSG::DEBUG) <<
"Error booking ntuple" <<
endmsg;
745 const std::string& TrkColName) {
754 for (; trackItr != trackItrE && itrk <
maxTracks; ++trackItr) {
755 if (*trackItr !=
nullptr)
dumpTrack(ctx, itrk, (*trackItr), TrkColName);
768 const std::string& TrkColName) {
773 if (aMeasPer ==
nullptr) {
776 double d0 = aMeasPer->parameters()[
Trk::d0];
777 double z0 = aMeasPer->parameters()[
Trk::z0];
778 double phi0 = aMeasPer->parameters()[
Trk::phi0];
780 double qOverP = aMeasPer->parameters()[
Trk::qOverP];
782 if (msgLvl(MSG::DEBUG)) {
783 msg(MSG::DEBUG) << itrk <<
". " << TrkColName
784 <<
" Track Parameters (d0, z0, phi0, theta, q/p)" <<
endmsg;
785 msg(MSG::DEBUG) <<
" " << d0 <<
", " << z0 <<
", "
786 << phi0 <<
", " <<
theta <<
", " << qOverP <<
endmsg;
789 float transverseMomentum = std::sqrt((aMeasPer->
momentum().x()) * (aMeasPer->
momentum().x())
793 <<
" pT = " << transverseMomentum / CLHEP::GeV <<
" CLHEP::GeV/c");
796 int nHits = (*trk).measurementsOnTrack()->size();
805 int nhitspix = 0, nhitssct = 0, nhitstrt = 0;
806 int nshared = 0, nshpix = 0, nshsct = 0;
807 int nholes = 0, nhpix = 0, nhsct = 0;
810 uint8_t iSummaryValue(0);
812 if (not trackPart)
ATH_MSG_ERROR(
"Could not get xAOD::TrackParticle");
820 if (msgLvl(MSG::DEBUG)) {
821 msg(MSG::DEBUG) <<
" -- number of Pixel hits : " << nhitspix <<
endmsg;
822 msg(MSG::DEBUG) <<
" -- number of SCT hits : " << nhitssct <<
endmsg;
823 msg(MSG::DEBUG) <<
" -- number of TRT hits : " << nhitstrt <<
endmsg;
845 nshared = nshpix + nshsct;
847 if (nshpix < 0) nshpix = 0;
848 if (nshsct < 0) nshsct = 0;
849 if (nshared < 0) nshared = 0;
851 if (msgLvl(MSG::DEBUG)) {
852 msg(MSG::DEBUG) <<
" - number of shared hits : " << nshared <<
endmsg;
853 msg(MSG::DEBUG) <<
" -- number of Pixel shared hits : " << nshpix <<
endmsg;
854 msg(MSG::DEBUG) <<
" -- number of SCT shared hits : " << nshsct <<
endmsg;
860 nholes = nhpix + nhsct;
862 if (nhpix < 0) nhpix = 0;
863 if (nhsct < 0) nhsct = 0;
864 if (nholes < 0) nholes = 0;
866 if (msgLvl(MSG::DEBUG)) {
867 msg(MSG::DEBUG) <<
" - number of Pixel holes : " << nhpix <<
endmsg;
868 msg(MSG::DEBUG) <<
" -- number of SCT holes : " << nhsct <<
endmsg;
869 msg(MSG::DEBUG) <<
" -- number of holes : " << nholes <<
endmsg;
875 double chi2Prob = 0.;
877 if (fitQual ==
nullptr) {
882 Genfun::CumulativeChiSquare probabilityFunction(fitQual->
numberDoF());
883 chi2Prob = 1 - probabilityFunction(fitQual->
chiSquared());
885 if (msgLvl(MSG::DEBUG)) {
888 msg(MSG::DEBUG) <<
" - chi2 propability : " << chi2Prob <<
endmsg;
893 if (TrkColName ==
"Up") {
921 }
else if (TrkColName ==
"Low") {
990 float d0 = generatedTrackPerigee->parameters()[
Trk::d0];
991 float z0 = generatedTrackPerigee->parameters()[
Trk::z0];
992 float phi0 = generatedTrackPerigee->parameters()[
Trk::phi0];
994 float eta = generatedTrackPerigee->
eta();
996 float qoverp = generatedTrackPerigee->parameters()[
Trk::qOverP];
997 float qoverpt = generatedTrackPerigee->parameters()[
Trk::qOverP] / (std::sin(
theta));
998 float pt = (1 / qoverpt) * (
charge);
1001 if (msgLvl(MSG::DEBUG)) {
1002 msg(MSG::DEBUG) <<
" - Extrapolated genParticle perigee parameters "
1003 <<
"(d0, z0, phi0, theta, q/p)" <<
endmsg;
1004 msg(MSG::DEBUG) <<
" " << d0 <<
", " << z0 <<
", "
1005 << phi0 <<
", " <<
theta <<
", " << qoverp <<
endmsg;
1007 msg(MSG::DEBUG) <<
" p = " << std::abs(1.0 / qoverp) / CLHEP::GeV <<
" CLHEP::GeV/c, "
1008 <<
" pT = " << pt / CLHEP::GeV <<
" CLHEP::GeV/c" <<
endmsg;
1031 int nTracksUpper = 0;
1036 for (; trackItrUpper != trackItrUpperE; ++trackItrUpper) {
1037 const Trk::Track* trackUpper = *trackItrUpper;
1038 if (trackUpper ==
nullptr) {
1039 ATH_MSG_DEBUG(
"No associated Trk::Track object found for track " << nTracksUpper);
1046 float d0Up = measUpperPer->parameters()[
Trk::d0];
1047 float phi0Up = measUpperPer->parameters()[
Trk::phi0];
1048 float eta0Up = measUpperPer->
eta();
1049 float z0Up = measUpperPer->parameters()[
Trk::z0];
1050 float thetaUp = measUpperPer->parameters()[
Trk::theta];
1051 float qOverPtUp = measUpperPer->parameters()[
Trk::qOverP] * 1000 / std::sin(thetaUp);
1052 float chargeUp = measUpperPer->
charge();
1053 float ptUp = measUpperPer->
pT() / 1000.;
1055 if (msgLvl(MSG::DEBUG)) {
1056 msg(MSG::DEBUG) << nTracksUpper <<
". UpTrack -> Track Parameters:" <<
endmsg;
1057 msg(MSG::DEBUG) <<
" d0, z0, phi0, theta, q/p" << d0Up <<
", " << z0Up <<
", "
1058 << phi0Up <<
", " << thetaUp <<
", " << qOverPtUp <<
endmsg;
1061 int nTracksLower = 0;
1063 bool matchFound =
false;
1064 float Matched_Low_d0 = -999;
1065 float Matched_Low_phi0 = -999;
1067 float Matched_Low_theta = -999;
1068 float Matched_Low_eta0 = -999;
1069 float Matched_Low_z0 = -999;
1070 float Matched_Low_qOverPt = -999;
1071 float Matched_Low_charge = -999;
1072 float Matched_Low_pt = -999;
1077 for (; trackItrLower != trackItrLowerE; ++trackItrLower) {
1078 const Trk::Track* trackLower = *trackItrLower;
1079 if (trackLower ==
nullptr) {
1080 ATH_MSG_DEBUG(
"No associated Trk::Track object found for track " << nTracksLower);
1086 float d0Low = measLowerPer->parameters()[
Trk::d0];
1087 float phi0Low = measLowerPer->parameters()[
Trk::phi0];
1088 float eta0Low = measLowerPer->
eta();
1089 float z0Low = measLowerPer->parameters()[
Trk::z0];
1090 float thetaLow = measLowerPer->parameters()[
Trk::theta];
1091 float qOverPtLow = measLowerPer->parameters()[
Trk::qOverP] * 1000 / std::sin(thetaLow);
1092 float chargeLow = measLowerPer->
charge();
1093 float ptLow = measLowerPer->
pT() / 1000.;
1096 float dphi2 = (phi0Up - phi0Low) * (phi0Up - phi0Low);
1100 float deta2 = (eta0Up - eta0Low) * (eta0Up - eta0Low);
1103 float dR = std::sqrt(dphi2 + deta2);
1108 Matched_Low_d0 = d0Low;
1109 Matched_Low_phi0 = phi0Low;
1111 Matched_Low_theta = thetaLow;
1112 Matched_Low_eta0 = eta0Low;
1113 Matched_Low_z0 = z0Low;
1114 Matched_Low_qOverPt = qOverPtLow;
1115 Matched_Low_charge = chargeLow;
1116 Matched_Low_pt = ptLow;
1119 if (msgLvl(MSG::DEBUG)) {
1120 msg(MSG::DEBUG) << nTracksLower <<
". LowTrack -> Track Parameters:" <<
endmsg;
1121 msg(MSG::DEBUG) <<
" d0, z0, phi0, theta, q/p: " << d0Low <<
", " << z0Low <<
", "
1122 << phi0Low <<
", " << thetaLow <<
", " << qOverPtLow <<
endmsg;
1151 return StatusCode::SUCCESS;
Scalar eta() const
pseudorapidity method
Scalar theta() const
theta method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
double charge(const T &p)
An STL vector of pointers that by default owns its pointed-to elements.
static const int maxTracks
static const uint32_t nHits
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
AtlasHitsVector< TrackRecord > TrackRecordCollection
CONT::const_iterator const_iterator
const_iterator begin() const
const_iterator end() const
DataModel_detail::const_iterator< DataVector > const_iterator
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.
ElementLink implementation for ROOT usage.
bool setElement(ElementType element)
Set link to point to an Element (slowest).
bool setStorableObject(BaseConstReference data, bool replace=false)
Set link storable to data object pointed by data (slower).
a link optimized in size for a GenParticle in a McEventCollection
bool isValid() const
Validity check.
HepMC::ConstGenParticlePtr scptr() const
Dereference/smart pointer.
NTuple::Array< long > m_nt_Trk_nhitssct_Low
number of SCT hits (Low track)
NTuple::Array< long > m_nt_Trk_nsharedPixels_Up
number of Pixel shared hits (Up track)
NTuple::Array< long > m_nt_Trk_nholesSCT
number of SCT holes
StringProperty m_inputCol
FloatProperty m_matchedRcut
BooleanProperty m_doTruth
switch on/off the truth information
NTuple::Item< long > m_nt_nmctracks
number of mc tracks
NTuple::Array< float > m_nt_Trk_delta_charge
charge parameter
virtual StatusCode FillTrack() override
ServiceHandle< INTupleSvc > m_ntupleSvc
NTuple::Array< float > m_nt_Trk_d0
d0 parameter
NTuple::Array< float > m_nt_Trk_chi2Prob_Up
number of chi2 probability (Up track)
NTuple::Array< long > m_nt_Trk_nsharedSCT_Low
number of SCT shared hits (Low track)
NTuple::Array< long > m_nt_Trk_nholes
number of holes
NTuple::Array< long > m_nt_Trk_nholesSCT_Up
number of SCT holes (Up track)
NTuple::Array< float > m_nt_mc_Trk_vtxY
MonteCarlo Vertex.Y parameter.
NTuple::Array< long > m_nt_Trk_nholes_Up
number of holes (Up track)
StringProperty m_ntupleName
NTuple::Array< float > m_nt_Trk_theta0_Up
theta0 parameter (Up track)
NTuple::Array< long > m_nt_Trk_ndof
number of ndof
NTuple::Array< float > m_nt_mc_Trk_genParticlePt
generated pt
NTuple::Array< float > m_nt_Trk_qoverp_Low
q/p parameter (Low track)
NTuple::Item< long > m_nt_matchingTrk
matching tracks
NTuple::Array< float > m_nt_mc_trkistruth
Has the Track an associated truth track?
NTuple::Array< float > m_nt_Trk_qoverp_Up
q/p parameter (Up track)
NTuple::Array< long > m_nt_Trk_nshared
number of shared hits
StringProperty m_inputLowCol
NTuple::Array< float > m_nt_mc_Trk_qoverpt
MonteCarlo q/pt parameter.
NTuple::Array< long > m_nt_Trk_nholesPixels_Up
number of Pixel holes (Up track)
NTuple::Array< float > m_nt_Trk_delta_qoverpt
q/pt parameter
NTuple::Array< float > m_nt_Trk_chi2_Low
number of chi2 (Low track)
NTuple::Array< float > m_nt_Trk_delta_pt
pt parameter
NTuple::Array< float > m_nt_Trk_d0_Up
d0 parameter (Up track)
NTuple::Array< long > m_nt_Trk_nHits_Up
number of hits (Up track)
NTuple::Array< long > m_nt_Trk_nshared_Low
number of shared hits (Low track)
NTuple::Array< long > m_nt_Trk_nhitstrt
number of TRT hits
NTuple::Array< float > m_nt_mc_Trk_genParticleEta
generated eta
NTuple::Array< float > m_nt_Trk_pt_Up
pt parameter (Up track)
NTuple::Array< long > m_nt_Trk_nholesPixels_Low
number of Pixel holes (Low track)
NTuple::Array< long > m_nt_Trk_nsharedPixels
number of Pixel shared hits
NTuple::Array< float > m_nt_Trk_pt_Low
pt parameter (Low track)
NTuple::Array< float > m_nt_mc_Trk_z0
MonteCarlo z0 parameter.
NTuple::Array< long > m_nt_Trk_nhitstrt_Low
number of TRT hits (Low track)
NTuple::Array< float > m_nt_mc_Trk_qoverp
MonteCarlo q/p parameter.
NTuple::Array< float > m_nt_mc_Trk_pdg
MonteCarlo pdg parameter.
NTuple::Array< float > m_nt_mc_Trk_eta
MonteCarlo eta parameter.
NTuple::Array< float > m_nt_Trk_z0_Low
z0 parameter (Low track)
NTuple::Array< float > m_nt_Trk_chi2
number of chi2
NTuple::Array< float > m_nt_mc_Trk_prob
MonteCarlo prob parameter.
void dumpTrack(const EventContext &ctx, int, const Trk::Track *, const std::string &)
virtual StatusCode finalize() override
NTuple::Array< long > m_nt_Trk_nhitssct
number of SCT hits
NTuple::Array< float > m_nt_mc_Trk_vtxZ
MonteCarlo Vertex.Z parameter.
NTuple::Array< long > m_nt_Trk_nshared_Up
number of shared hits (Up track)
NTuple::Array< float > m_nt_Trk_phi0
phi0 parameter
NTuple::Array< long > m_nt_Trk_nhitspix_Up
number of Pixel hits (Up track)
StringProperty m_inputUpCol
NTuple::Array< long > m_nt_Trk_nhitspix_Low
number of Pixel hits (Low track)
NTuple::Array< float > m_nt_Trk_delta_z0
z0 parameter
ToolHandle< Trk::ITrackParticleCreatorTool > m_particleCreator
NTuple::Array< float > m_nt_Trk_theta0
theta0 parameter
void bookMatchingNtuple()
NTuple::Array< float > m_nt_Trk_qoverp
q/p parameter
NTuple::Array< float > m_nt_Trk_d0_Low
d0 parameter (Low track)
NTuple::Array< float > m_nt_Trk_delta_phi0
phi0 parameter
NTuple::Array< float > m_nt_mc_Trk_d0
MonteCarlo d0 parameter.
NTuple::Item< long > m_nt_ntracks
number of tracks
NTuple::Item< long > m_nt_nLowtracks
number of Low tracks
virtual StatusCode initialize() override
ToolHandle< Trk::ITruthToTrack > m_truthToTrack
NTuple::Array< long > m_nt_Trk_nhitspix
number of Pixel hits
void dumpPerigee(const Trk::TrackParameters *, int)
NTuple::Array< float > m_nt_Trk_delta_theta0
theta parameter
BooleanProperty m_doMatching
switch on/off the matching information
NTuple::Array< long > m_nt_Trk_ndof_Up
number of ndof (Up track)
NTuple::Array< long > m_nt_Trk_nholes_Low
number of holes (Low track)
NTuple::Array< float > m_nt_mc_Trk_genParticlePhi
generated phi
NTuple::Array< float > m_nt_Trk_z0
z0 parameter
NTuple::Array< float > m_nt_mc_Trk_phi0
MonteCarlo phi0 parameter.
NTuple::Array< float > m_nt_Trk_z0_Up
z0 parameter (Up track)
StringProperty m_TruthTrkCol
NTuple::Array< long > m_nt_Trk_nsharedPixels_Low
number of Pixel shared hits (Low track)
InDetAlignFillTrack(const std::string &type, const std::string &name, const IInterface *parent)
NTuple::Array< float > m_nt_Trk_chi2Prob_Low
number of chi2 probability (Low track)
NTuple::Array< long > m_nt_Trk_nsharedSCT_Up
number of SCT shared hits (Up track)
NTuple::Array< long > m_nt_Trk_nsharedSCT
number of SCT shared hits
NTuple::Array< long > m_nt_Trk_nhitstrt_Up
number of TRT hits (Up track)
NTuple::Array< long > m_nt_Trk_nHits
number of hits
NTuple::Array< float > m_nt_Trk_phi0_Low
phi0 parameter (Low track)
NTuple::Array< float > m_nt_mc_Trk_charge
MonteCarlo charge parameter.
NTuple::Array< float > m_nt_mc_Trk_pt
MonteCarlo pt parameter.
NTuple::Array< long > m_nt_Trk_nHits_Low
number of hits (Low track)
NTuple::Array< float > m_nt_Trk_chi2Prob
number of chi2 probability
NTuple::Array< long > m_nt_Trk_nhitssct_Up
number of SCT hits (Up track)
NTuple::Array< long > m_nt_Trk_nholesSCT_Low
number of SCT holes (Low track)
NTuple::Array< float > m_nt_Trk_phi0_Up
phi0 parameter (Up track)
StatusCode dumpMatching(const TrackCollection *, const TrackCollection *)
NTuple::Array< float > m_nt_Trk_theta0_Low
theta0 parameter (Low track)
NTuple::Array< float > m_nt_Trk_delta_eta
eta parameter
NTuple::Array< float > m_nt_Trk_pt
pt parameter
NTuple::Array< float > m_nt_mc_Trk_vtxX
MonteCarlo Vertex.X parameter.
NTuple::Array< float > m_nt_Trk_delta_d0
d0 parameter
int dumpTrackCol(const EventContext &ctx, const TrackCollection *)
NTuple::Array< float > m_nt_Trk_chi2_Up
number of chi2 (Up track)
NTuple::Array< long > m_nt_Trk_ndof_Low
number of ndof (Low track)
NTuple::Item< long > m_nt_nUptracks
number of Up tracks
ToolHandle< Trk::IExtrapolator > m_extrapolator
NTuple::Array< long > m_nt_Trk_nholesPixels
number of Pixel holes
NTuple::Array< float > m_nt_mc_Trk_theta0
MonteCarlo theta0 parameter.
MC particle associated with a reco track + the quality of match.
float probability() const
const HepMcParticleLink & particleLink() const
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
double chiSquared() const
returns the of the overall track fit
double eta() const
Access method for pseudorapidity - from momentum.
const Amg::Vector3D & momentum() const
Access method for the momentum.
double charge() const
Returns the charge.
double pT() const
Access method for transverse momentum.
Class describing the Line to which the Perigee refers to.
Class for a planaer rectangular or trapezoidal surface in the ATLAS detector.
const Amg::Vector3D & center() const
Returns the center position of the Surface.
const Perigee * perigeeParameters() const
return Perigee.
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Eigen::Translation< double, 3 > Translation3D
HepMC3::ConstGenParticlePtr ConstGenParticlePtr
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
ParametersBase< TrackParametersDim, Charged > TrackParameters
ParametersT< TrackParametersDim, Charged, PlaneSurface > AtaPlane
TrackParticle_v1 TrackParticle
Reference the current persistent version:
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
@ numberOfSCTHoles
number of SCT holes [unit8_t].