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()) {
241 const HepMC::GenParticle* genParticle = HMPL.
cptr();
247 Amg::Vector3D productionVertex(genParticle->production_vertex()->position().x(),
248 genParticle->production_vertex()->position().y(),
249 genParticle->production_vertex()->position().z());
251 if (msgLvl(MSG::DEBUG)) {
252 msg(MSG::DEBUG) << nTracks <<
". Generated Particle " << genParticle <<
endmsg;
255 float genPt = std::sqrt((genParticle->momentum().x()) * (genParticle->momentum().x())
256 + (genParticle->momentum().y()) * (genParticle->momentum().y()));
258 ATH_MSG_DEBUG(
" * pt " << genPt / CLHEP::GeV <<
" CLHEP::GeV/c"
259 <<
", p " << genParticle->momentum().e() / CLHEP::GeV <<
" CLHEP::GeV/c"
260 <<
", eta " << genParticle->momentum().eta()
261 <<
", phi " << genParticle->momentum().phi() <<
" CLHEP::rad");
266 float pX = genParticle->momentum().px();
267 float pY = genParticle->momentum().py();
268 float genParticlePt = std::sqrt((pX * pX) + (pY * pY));
273 if (genParticle->pdg_id() == 0)
ATH_MSG_WARNING(
"Particle with PDG 0!");
275 "No GenVertex (generator level) production vertex found!");
282 generatedTrackPerigee =
m_truthToTrack->makePerigeeParameters(genParticle);
284 if (!generatedTrackPerigee) {
285 if (msgLvl(MSG::DEBUG)) {
286 msg(MSG::DEBUG) <<
"Unable to extrapolate genParticle to perigee!" <<
endmsg;
287 msg(MSG::DEBUG) <<
"Trying to extrapolate directly to exclude material effects!" <<
endmsg;
292 sc = evtStore()->retrieve(recordCollection,
"CaloEntryLayer");
293 if (
sc == StatusCode::FAILURE) {
298 << recordCollection->
size());
303 record != recordCollection->
end(); ++record) {
304 if (std::abs((*record).GetPDGCode()) != 13)
continue;
305 HepGeom::Point3D<double> productionVertex = (*record).GetPosition();
306 double charge = (*record).GetPDGCode() > 0 ? -1.0 : 1.0;
310 (*record).GetMomentum().y(),
311 (*record).GetMomentum().z());
313 double momentum = direction.mag();
314 if (momentum < 500)
continue;
315 double genPar_qOverP = 1. / direction.mag();
316 direction *= genPar_qOverP;
317 if (
charge < 0) genPar_qOverP = -genPar_qOverP;
320 double genPar_phi = direction.phi();
321 if (genPar_phi < 0.) genPar_phi = genPar_phi + 2.0*
M_PI;
324 << productionVertex.x() <<
", "
325 << productionVertex.y() <<
", "
326 << productionVertex.z() <<
")");
328 double genPar_theta = direction.theta();
332 globalSurfaceCentre.setIdentity();
334 productionVertex.y(), productionVertex.z());
338 const Amg::Vector3D productionVertexAsGlobalPosition(productionVertex.x(),
339 productionVertex.y(),
340 productionVertex.z());
344 genPar_phi, genPar_theta, genPar_qOverP,
356 << perigeeGlobalPosition.x() <<
", "
357 << perigeeGlobalPosition.y() <<
", "
358 << perigeeGlobalPosition.z() <<
")");
364 const Amg::Vector3D difference = productionVertexAsGlobalPosition - perigeeGlobalPosition;
366 double distance = std::sqrt(difference.x() * difference.x() + difference.y() * difference.y());
367 ATH_MSG_DEBUG(
"Distance between perigee point and generated vertex: "
368 << distance / CLHEP::m <<
" m");
373 if (distance > 1.e-4) {
374 ATH_MSG_DEBUG(
"Distance between perigee and generated vertex exceeds tolerance ("
375 << 1.e-4 <<
" mm)... Extrapolating!");
378 *productionVertexTrackParams,
383 if (!generatedTrackPerigee)
continue;
385 ATH_MSG_DEBUG(
"Distance between perigee and generated vertex is less than tolerance ("
386 << 1.e-4 <<
" CLHEP::mm)... " <<
"No propagation to perigee required");
390 genPar_phi, genPar_theta, genPar_qOverP,
399 delete productionVertexTrackParams;
400 delete generatedTrackPerigee;
406 if (generatedTrackPerigee) {
408 m_nt_mc_Trk_vtxX[nTracks] = genParticle->production_vertex()->position().x();
409 m_nt_mc_Trk_vtxY[nTracks] = genParticle->production_vertex()->position().y();
410 m_nt_mc_Trk_vtxZ[nTracks] = genParticle->production_vertex()->position().z();
412 delete generatedTrackPerigee;
446 std::string nt3id =
m_ntupleName +
"/TrkTrack_Matching";
482 return StatusCode::SUCCESS;
493 std::string comments =
"Trk::Track Information";
500 nt0 =
m_ntupleSvc->book(nt0id, CLID_ColumnWiseTuple, comments);
567 else ATH_MSG_DEBUG(
"Ntuple " << nt0id <<
" has been booked successfully! ");
583 std::string comments =
"Trk::UpTrack Information";
590 nt1 =
m_ntupleSvc->book(nt1id, CLID_ColumnWiseTuple, comments);
628 else ATH_MSG_DEBUG(
"Ntuple " << nt1id <<
" has been booked successfully! ");
642 std::string comments =
"Trk::LowTrack Information";
649 nt2 =
m_ntupleSvc->book(nt2id, CLID_ColumnWiseTuple, comments);
685 if (
sc.isFailure())
msg(MSG::FATAL) <<
"Failed ntupleSvc()" <<
endmsg;
686 else msg(MSG::DEBUG) <<
"Ntuple " << nt2id <<
" has been booked successfully! " <<
endmsg;
697 ATH_MSG_DEBUG(
"Booking Matching between Up and Low Trk::Track Collections...");
699 std::string nt3id =
m_ntupleName +
"/TrkTrack_Matching";
700 std::string comments =
"Matching between Up and Low Trk::Track Collections";
707 m_ntupleSvc->book(nt3id, CLID_ColumnWiseTuple, comments);
727 if (
sc.isFailure())
msg(MSG::FATAL) <<
"Failed ntupleSvc()" <<
endmsg;
728 else msg(MSG::DEBUG) <<
"Ntuple " << nt3id <<
" has been booked successfully! " <<
endmsg;
730 if (msgLvl(MSG::ERROR))
msg(MSG::DEBUG) <<
"Error booking ntuple" <<
endmsg;
749 const std::string& TrkColName) {
758 for (; trackItr != trackItrE && itrk <
maxTracks; ++trackItr) {
759 if (*trackItr !=
nullptr)
dumpTrack(ctx, itrk, (*trackItr), TrkColName);
772 const std::string& TrkColName) {
777 if (aMeasPer ==
nullptr) {
780 double d0 = aMeasPer->parameters()[
Trk::d0];
781 double z0 = aMeasPer->parameters()[
Trk::z0];
782 double phi0 = aMeasPer->parameters()[
Trk::phi0];
784 double qOverP = aMeasPer->parameters()[
Trk::qOverP];
786 if (msgLvl(MSG::DEBUG)) {
787 msg(MSG::DEBUG) << itrk <<
". " << TrkColName
788 <<
" Track Parameters (d0, z0, phi0, theta, q/p)" <<
endmsg;
789 msg(MSG::DEBUG) <<
" " << d0 <<
", " << z0 <<
", "
790 << phi0 <<
", " <<
theta <<
", " << qOverP <<
endmsg;
793 float transverseMomentum = std::sqrt((aMeasPer->
momentum().x()) * (aMeasPer->
momentum().x())
797 <<
" pT = " << transverseMomentum / CLHEP::GeV <<
" CLHEP::GeV/c");
800 int nHits = (*trk).measurementsOnTrack()->size();
809 int nhitspix = 0, nhitssct = 0, nhitstrt = 0;
810 int nshared = 0, nshpix = 0, nshsct = 0;
811 int nholes = 0, nhpix = 0, nhsct = 0;
814 uint8_t iSummaryValue(0);
816 if (not trackPart)
ATH_MSG_ERROR(
"Could not get xAOD::TrackParticle");
824 if (msgLvl(MSG::DEBUG)) {
825 msg(MSG::DEBUG) <<
" -- number of Pixel hits : " << nhitspix <<
endmsg;
826 msg(MSG::DEBUG) <<
" -- number of SCT hits : " << nhitssct <<
endmsg;
827 msg(MSG::DEBUG) <<
" -- number of TRT hits : " << nhitstrt <<
endmsg;
849 nshared = nshpix + nshsct;
851 if (nshpix < 0) nshpix = 0;
852 if (nshsct < 0) nshsct = 0;
853 if (nshared < 0) nshared = 0;
855 if (msgLvl(MSG::DEBUG)) {
856 msg(MSG::DEBUG) <<
" - number of shared hits : " << nshared <<
endmsg;
857 msg(MSG::DEBUG) <<
" -- number of Pixel shared hits : " << nshpix <<
endmsg;
858 msg(MSG::DEBUG) <<
" -- number of SCT shared hits : " << nshsct <<
endmsg;
864 nholes = nhpix + nhsct;
866 if (nhpix < 0) nhpix = 0;
867 if (nhsct < 0) nhsct = 0;
868 if (nholes < 0) nholes = 0;
870 if (msgLvl(MSG::DEBUG)) {
871 msg(MSG::DEBUG) <<
" - number of Pixel holes : " << nhpix <<
endmsg;
872 msg(MSG::DEBUG) <<
" -- number of SCT holes : " << nhsct <<
endmsg;
873 msg(MSG::DEBUG) <<
" -- number of holes : " << nholes <<
endmsg;
879 double chi2Prob = 0.;
881 if (fitQual ==
nullptr) {
886 Genfun::CumulativeChiSquare probabilityFunction(fitQual->
numberDoF());
887 chi2Prob = 1 - probabilityFunction(fitQual->
chiSquared());
889 if (msgLvl(MSG::DEBUG)) {
892 msg(MSG::DEBUG) <<
" - chi2 propability : " << chi2Prob <<
endmsg;
897 if (TrkColName ==
"Up") {
925 }
else if (TrkColName ==
"Low") {
994 float d0 = generatedTrackPerigee->parameters()[
Trk::d0];
995 float z0 = generatedTrackPerigee->parameters()[
Trk::z0];
996 float phi0 = generatedTrackPerigee->parameters()[
Trk::phi0];
998 float eta = generatedTrackPerigee->
eta();
1000 float qoverp = generatedTrackPerigee->parameters()[
Trk::qOverP];
1001 float qoverpt = generatedTrackPerigee->parameters()[
Trk::qOverP] / (std::sin(
theta));
1002 float pt = (1 / qoverpt) * (
charge);
1005 if (msgLvl(MSG::DEBUG)) {
1006 msg(MSG::DEBUG) <<
" - Extrapolated genParticle perigee parameters "
1007 <<
"(d0, z0, phi0, theta, q/p)" <<
endmsg;
1008 msg(MSG::DEBUG) <<
" " << d0 <<
", " << z0 <<
", "
1009 << phi0 <<
", " <<
theta <<
", " << qoverp <<
endmsg;
1011 msg(MSG::DEBUG) <<
" p = " << std::abs(1.0 / qoverp) / CLHEP::GeV <<
" CLHEP::GeV/c, "
1012 <<
" pT = " << pt / CLHEP::GeV <<
" CLHEP::GeV/c" <<
endmsg;
1035 int nTracksUpper = 0;
1040 for (; trackItrUpper != trackItrUpperE; ++trackItrUpper) {
1041 const Trk::Track* trackUpper = *trackItrUpper;
1042 if (trackUpper ==
nullptr) {
1043 ATH_MSG_DEBUG(
"No associated Trk::Track object found for track " << nTracksUpper);
1050 float d0Up = measUpperPer->parameters()[
Trk::d0];
1051 float phi0Up = measUpperPer->parameters()[
Trk::phi0];
1052 float eta0Up = measUpperPer->
eta();
1053 float z0Up = measUpperPer->parameters()[
Trk::z0];
1054 float thetaUp = measUpperPer->parameters()[
Trk::theta];
1055 float qOverPtUp = measUpperPer->parameters()[
Trk::qOverP] * 1000 / std::sin(thetaUp);
1056 float chargeUp = measUpperPer->
charge();
1057 float ptUp = measUpperPer->
pT() / 1000.;
1059 if (msgLvl(MSG::DEBUG)) {
1060 msg(MSG::DEBUG) << nTracksUpper <<
". UpTrack -> Track Parameters:" <<
endmsg;
1061 msg(MSG::DEBUG) <<
" d0, z0, phi0, theta, q/p" << d0Up <<
", " << z0Up <<
", "
1062 << phi0Up <<
", " << thetaUp <<
", " << qOverPtUp <<
endmsg;
1065 int nTracksLower = 0;
1067 bool matchFound =
false;
1068 float Matched_Low_d0 = -999;
1069 float Matched_Low_phi0 = -999;
1071 float Matched_Low_theta = -999;
1072 float Matched_Low_eta0 = -999;
1073 float Matched_Low_z0 = -999;
1074 float Matched_Low_qOverPt = -999;
1075 float Matched_Low_charge = -999;
1076 float Matched_Low_pt = -999;
1081 for (; trackItrLower != trackItrLowerE; ++trackItrLower) {
1082 const Trk::Track* trackLower = *trackItrLower;
1083 if (trackLower ==
nullptr) {
1084 ATH_MSG_DEBUG(
"No associated Trk::Track object found for track " << nTracksLower);
1090 float d0Low = measLowerPer->parameters()[
Trk::d0];
1091 float phi0Low = measLowerPer->parameters()[
Trk::phi0];
1092 float eta0Low = measLowerPer->
eta();
1093 float z0Low = measLowerPer->parameters()[
Trk::z0];
1094 float thetaLow = measLowerPer->parameters()[
Trk::theta];
1095 float qOverPtLow = measLowerPer->parameters()[
Trk::qOverP] * 1000 / std::sin(thetaLow);
1096 float chargeLow = measLowerPer->
charge();
1097 float ptLow = measLowerPer->
pT() / 1000.;
1100 float dphi2 = (phi0Up - phi0Low) * (phi0Up - phi0Low);
1104 float deta2 = (eta0Up - eta0Low) * (eta0Up - eta0Low);
1107 float dR = std::sqrt(dphi2 + deta2);
1112 Matched_Low_d0 = d0Low;
1113 Matched_Low_phi0 = phi0Low;
1115 Matched_Low_theta = thetaLow;
1116 Matched_Low_eta0 = eta0Low;
1117 Matched_Low_z0 = z0Low;
1118 Matched_Low_qOverPt = qOverPtLow;
1119 Matched_Low_charge = chargeLow;
1120 Matched_Low_pt = ptLow;
1123 if (msgLvl(MSG::DEBUG)) {
1124 msg(MSG::DEBUG) << nTracksLower <<
". LowTrack -> Track Parameters:" <<
endmsg;
1125 msg(MSG::DEBUG) <<
" d0, z0, phi0, theta, q/p: " << d0Low <<
", " << z0Low <<
", "
1126 << phi0Low <<
", " << thetaLow <<
", " << qOverPtLow <<
endmsg;
1155 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 cptr() const
Dereference.
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
const GenParticle * 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].