16#include "Identifier/Identifier.h"
33 double baseScorePerHit = 17.;
45 double hitQualityScore;
49 hitQualityScore = (1.2 * (baseScorePerHit -
x2 * .5));
51 hitQualityScore = (baseScorePerHit -
x2);
52 if (hitQualityScore < 0.)
55 quality += hitQualityScore;
133 dump(MSG::DEBUG,
nullptr);
139 return StatusCode::SUCCESS;
169 if (!key.key().empty()) {
186 return StatusCode::SUCCESS;
192 std::list<Trk::Vertex> vertices =
m_zvertexmaker->newEvent(ctx, seedEventData);
193 if (not vertices.empty()) ZVE =
true;
197 std::list<Trk::Vertex> vertexList;
201 const bool PIX =
true;
202 const bool SCT =
true;
209 std::multimap<double, Trk::Track*> qualitySortedTrackCandidates;
212 while ((seed =
m_seedsmaker->next(ctx, seedEventData))) {
214 std::list<Trk::Track*> trackList =
m_trackmaker->getTracks(ctx, trackEventData, seed->spacePoints());
216 qualitySortedTrackCandidates.insert(std::make_pair(-trackQuality(t), t));
232 for (
const std::pair<const double, Trk::Track*> & qualityAndTrack: qualitySortedTrackCandidates) {
238 outputTracks->push_back(qualityAndTrack.second);
247 outputTracks->clear();
255 dump(MSG::DEBUG, &counter);
258 return StatusCode::SUCCESS;
271 return StatusCode::SUCCESS;
296 std::list<Trk::Vertex> vertexList;
300 const bool PIX = true ;
301 const bool SCT = true ;
307 std::vector<int> numberHistogram(
m_histsize, 0);
308 std::vector<double> zWeightedHistogram(
m_histsize, 0.);
309 std::vector<double> ptWeightedHistogram(
m_histsize, 0.);
316 std::multimap<double, Trk::Track*> qualitySortedTrackCandidates;
319 bool doWriteNtuple =
m_seedsmaker->getWriteNtupleBoolProperty();
324 if(!eventInfo.
isValid()) {EvNumber = -1.0;}
else {EvNumber = eventInfo->eventNumber();}
328 while ((seed =
m_seedsmaker->next(ctx, seedEventData))) {
332 bool firstTrack{
true};
335 std::list<Trk::Track*> trackList =
m_trackmaker->getTracks(ctx, trackEventData, seed->spacePoints());
339 qualitySortedTrackCandidates.insert(std::make_pair(-trackQuality(t), t));
347 fillZHistogram(ctx, t, beamPosPerigee, numberHistogram, zWeightedHistogram, ptWeightedHistogram);
370 std::pair<double,double> zBoundaries;
373 findZvertex(vertexList, zBoundaries, numberHistogram, zWeightedHistogram, ptWeightedHistogram);
376 m_seedsmaker->find3Sp(ctx, seedEventData, vertexList, &(zBoundaries.first));
382 while ((seed =
m_seedsmaker->next(ctx, seedEventData))) {
386 std::list<Trk::Track*> trackList =
m_trackmaker->getTracks(ctx, trackEventData, seed->spacePoints());
389 qualitySortedTrackCandidates.insert(std::make_pair(-trackQuality(t), t));
401 ATH_MSG_WARNING(
"SpacePointsPixelKey is empty. Skipping the second seeding pass that uses pixel seeds.");
410 for (
const std::pair<const double, Trk::Track*> & qualityAndTrack: qualitySortedTrackCandidates) {
428 outputTracks->push_back(qualityAndTrack.second);
439 outputTracks->clear();
447 dump(MSG::DEBUG, &counter);
449 return StatusCode::SUCCESS;
463 const bool PIX = true ;
464 const bool STRIP = true ;
467 m_trackmaker->newTrigEvent(ctx, trackEventData, PIX, STRIP);
482 std::list<Trk::Vertex> vertexList;
491 std::multimap<double, Trk::Track*> qualitySortedTrackCandidates;
494 bool doWriteNtuple =
m_seedsmaker->getWriteNtupleBoolProperty();
499 if(!eventInfo.
isValid()) {EvNumber = -1.0;}
else {EvNumber = eventInfo->eventNumber();}
503 while ((seed =
m_seedsmaker->next(ctx, seedEventData))) {
508 std::list<Trk::Track*> trackList =
m_trackmaker->getTracks(ctx, trackEventData, seed->spacePoints());
512 qualitySortedTrackCandidates.insert(std::make_pair(-trackQuality(t), t));
531 for (
const std::pair<const double, Trk::Track*> & qualityAndTrack: qualitySortedTrackCandidates) {
548 outputTracks->push_back(qualityAndTrack.second);
556 outputTracks->clear();
564 dump(MSG::DEBUG, &counter);
566 return StatusCode::SUCCESS;
576 ATH_MSG_DEBUG(
"Executing " << name() <<
"::itkConvStrategy");
582 return StatusCode::SUCCESS;
588 std::unique_ptr<RoiDescriptor> roiComp = std::make_unique<RoiDescriptor>(
true);
593 double beamZ = beamSpotHandle->beamVtx().position().z();
595 roiComp->setComposite();
598 for (
const ROIPhiRZ &calo_roi : calo_rois_ref) {
599 double phi = calo_roi.phi();
601 double eta = calo_roi.eta();
609 roi =
new RoiDescriptor(
eta, roiEtaMin, roiEtaMax,
phi, roiPhiMin ,roiPhiMax,
z,roiZMin,roiZMax);
610 roiComp->push_back(roi);
615 return StatusCode::FAILURE;
618 std::vector<IdentifierHash> listOfStripIds;
619 std::vector<IdentifierHash> listOfPixIds;
621 m_regsel_strip->lookup(ctx)->HashIDList( *roiComp, listOfStripIds );
624 m_seedsmaker->newRegion(ctx, seedEventData, listOfPixIds, listOfStripIds);
625 std::list<Trk::Vertex> vertexList;
629 const bool PIX = true ;
630 const bool STRIP = true ;
633 m_trackmaker->newEvent(ctx, trackEventData, PIX, STRIP);
640 std::multimap<double, Trk::Track*> qualitySortedTrackCandidates;
643 bool doWriteNtuple =
m_seedsmaker->getWriteNtupleBoolProperty();
648 if(!eventInfo.
isValid()) {EvNumber = -1.0;}
else {EvNumber = eventInfo->eventNumber();}
652 while ((seed =
m_seedsmaker->next(ctx, seedEventData))) {
657 std::list<Trk::Track*> trackList =
m_trackmaker->getTracks(ctx, trackEventData, seed->spacePoints());
660 qualitySortedTrackCandidates.insert(std::make_pair(-trackQuality(t), t));
679 for (
const std::pair<const double, Trk::Track*> & qualityAndTrack: qualitySortedTrackCandidates) {
697 outputTracks->push_back(qualityAndTrack.second);
705 outputTracks->clear();
713 dump(MSG::DEBUG, &counter);
715 return StatusCode::SUCCESS;
727 dump(MSG::INFO, &m_counterTotal);
732 return StatusCode::SUCCESS;
741 msg(assign_level) <<std::endl;
742 MsgStream& out_msg=
msg();
743 if (counter)
dumpevent(out_msg ,*counter);
756 std::string s1;
for (
int i=0; i<n; ++i) s1.append(
" "); s1.append(
"|");
758 std::string s2;
for (
int i=0; i<n; ++i) s2.append(
" "); s2.append(
"|");
760 std::string s3;
for (
int i=0; i<n; ++i) s3.append(
" "); s3.append(
"|");
762 std::string s4;
for (
int i=0; i<n; ++i) s4.append(
" "); s4.append(
"|");
766 n = 65-s5.size();
for (
int i=0; i<n; ++i) s5.append(
" "); s5.append(
"|");
768 out<<
"|----------------------------------------------------------------"
769 <<
"----------------------------------------------------|"
771 out<<
"| Use primary vertices z-coordinates finding?| "<<s5
774 out<<
"| Tool for primary vertices z-coordinates finding | "<<
m_zvertexmaker.type()<<s1
777 out<<
"| Tool for space points seeds finding | "<<
m_seedsmaker.type()<<s2
779 out<<
"| Tool for space points seeded track finding | "<<
m_trackmaker.type()<<s3
783 out<<
"|----------------------------------------------------------------"
784 <<
"----------------------------------------------------|"
795 out<<
"|-------------------------------------------------------------------";
796 out<<
"---------------------------------|"
798 out<<
"| Investigated "
799 <<std::setw(9)<<counter[
kNSeeds]<<
" space points seeds and found ";
800 out<<std::setw(9)<<counter[
kNTracks];
801 if (
m_ITKGeometry ) out<<
" tracks using new strategy for ITK |"<<std::endl;
804 else out<<
" tracks using old strategy |"<<std::endl;
806 out<<
"|-------------------------------------------------------------------";
807 out<<
"---------------------------------|"
818 out<<
"|-------------------------------------------------------------------";
819 out<<
"-----------------------------|"
844 unsigned int nsp = 0;
847 if (spacePointsPixel.
isValid()) {
862 if (spacePointsSCT.
isValid()) {
882 std::set<const Trk::PrepRawData*> clusters;
884 std::vector<const Trk::PrepRawData*> freeClusters;
885 freeClusters.reserve(15);
887 std::multimap<double, Trk::Track*>::iterator it_qualityAndTrack = qualitySortedTracks.begin();
890 while (it_qualityAndTrack!=qualitySortedTracks.end()) {
891 freeClusters.clear();
893 std::set<const Trk::PrepRawData*>::iterator it_clustersEnd = clusters.end();
905 if (clusters.find(pr)==it_clustersEnd) {
907 freeClusters.push_back(pr);
913 int nFreeClusters =
static_cast<int>(freeClusters.size());
914 if (nFreeClusters >=
m_nfreeCut || nFreeClusters==nClusters) {
917 clusters.insert(freeClusters.begin(), freeClusters.end());
918 ++it_qualityAndTrack;
921 delete (*it_qualityAndTrack).second;
922 qualitySortedTracks.erase(it_qualityAndTrack++);
930 std::set<const Trk::PrepRawData*> clusters;
932 std::vector<const Trk::PrepRawData*> freeClusters;
933 freeClusters.reserve(15);
935 std::multimap<double, Trk::Track*>::iterator it_qualityAndTrack = qualitySortedTracks.begin();
938 while (it_qualityAndTrack!=qualitySortedTracks.end()) {
939 freeClusters.clear();
941 std::set<const Trk::PrepRawData*>::iterator it_clustersEnd = clusters.end();
962 if (clusters.find(pr)==it_clustersEnd) {
964 freeClusters.push_back(pr);
970 clusters.insert(freeClusters.begin(), freeClusters.end());
972 int nFreeClusters =
static_cast<int>(freeClusters.size());
973 if(
passEtaDepCuts( (*it_qualityAndTrack).second, nClusters, nFreeClusters, nPixels) ){
975 ++it_qualityAndTrack;
978 delete (*it_qualityAndTrack).second;
979 qualitySortedTracks.erase(it_qualityAndTrack++);
991 std::vector<int>& numberHistogram,
992 std::vector<double>& zWeightedHistogram,
993 std::vector<double>& ptWeightedHistogram)
const
1003 constexpr double rSquare_max_forZHisto = 60.*60.;
1004 if (position.x()*position.x()+position.y()*position.y() >= rSquare_max_forZHisto)
return;
1006 double pT = sqrt(momentum.x()*momentum.x()+momentum.y()*momentum.y());
1010 if (not TP.
production(paramsAtFirstSurface))
return;
1017 const AmgVector(5)& parsAtBeamSpot = TP.parameters();
1018 if (std::abs(parsAtBeamSpot[0]) >
m_imcut)
return;
1024 ++numberHistogram[
z];
1026 zWeightedHistogram[
z] += parsAtBeamSpot[1];
1028 ptWeightedHistogram[
z] += pT;
1038 std::pair<double, double> & zBoundaries,
1039 const std::vector<int>& numberHistogram,
1040 const std::vector<double>& zWeightedHistogram,
1041 const std::vector<double>& ptWeightedHistogram)
const
1043 zBoundaries = {1000., -1000};
1045 std::multimap<int ,double> vertexZ_sortedByNtracks;
1046 std::multimap<double,double> vertexZ_sortedBySumPt;
1049 int minBinContentSum = 3;
1052 for (
int binIndex=1; binIndex<lastBin; ++binIndex) {
1055 int vertexNtracks = numberHistogram.at(binIndex-1)+numberHistogram.at(binIndex)+numberHistogram.at(binIndex+1);
1059 if (vertexNtracks>=minBinContentSum and (numberHistogram.at(binIndex) >= numberHistogram.at(binIndex-1) and numberHistogram.at(binIndex) >= numberHistogram.at(binIndex+1))) {
1061 double vertexZestimate = (zWeightedHistogram.at(binIndex-1)+zWeightedHistogram.at(binIndex)+zWeightedHistogram.at(binIndex+1))/
static_cast<double>(vertexNtracks);
1065 if (vertexZestimate < zBoundaries.first) zBoundaries.first = vertexZestimate;
1066 if (vertexZestimate > zBoundaries.second) zBoundaries.second = vertexZestimate;
1070 double vertexSumPt = ptWeightedHistogram.at(binIndex-1)+ptWeightedHistogram.at(binIndex)+ptWeightedHistogram.at(binIndex+1);
1071 vertexZ_sortedByNtracks.insert(std::make_pair(-vertexNtracks, vertexZestimate));
1072 vertexZ_sortedBySumPt.insert(std::make_pair(-vertexSumPt, vertexZestimate));
1079 std::set<double> leadingVertices;
1081 std::multimap<double, double>::iterator vertex_pt_and_z = vertexZ_sortedBySumPt.begin();
1082 for (std::pair<int, double> nTrackAndZ: vertexZ_sortedByNtracks) {
1087 leadingVertices.insert(nTrackAndZ.second);
1088 leadingVertices.insert((*vertex_pt_and_z++).second);
1091 for (
double v: leadingVertices) {
1096 if (zBoundaries.first > zBoundaries.second) {
1097 zBoundaries.first = -1000.;
1098 zBoundaries.second = +1000.;
1101 zBoundaries.first -= 20.;
1102 zBoundaries.second += 20.;
1134 if(!par)
return false;
1136 double eta = std::abs(par->eta());
1137 if(nClusters < m_etaDependentCutsSvc->getMinSiHitsAtEta(
eta))
return false;
1138 if(nFreeClusters < m_etaDependentCutsSvc->getMinSiNotSharedAtEta(
eta))
return false;
1140 if(nPixels < m_etaDependentCutsSvc->getMinPixelHitsAtEta(
eta))
return false;
1151 int vol_id, lay_id, mod_id;
1152 float m_x, m_y, m_z;
1158 if (
detStore()->retrieve(IDp,
"PixelID").isFailure()) {
1162 if (
detStore()->retrieve(IDs,
"SCT_ID").isFailure()) {
1166 if (!IDs && !IDp)
return;
1170 std::vector<VLM_Data> vlm;
1172 for (
const auto* s : *track->trackStateOnSurfaces()) {
1187 const Amg::Vector3D& pos = s->trackParameters()->position();
1197 if (bec == -2) vol_id = 7;
1198 if (bec == 2) vol_id = 9;
1200 if (bec < -2 || bec > 2)
continue;
1210 int new_vol = 0, new_lay = 0;
1212 if (vol_id == 7 || vol_id == 9) {
1213 new_vol = 10 * vol_id + lay_id;
1215 }
else if (vol_id == 8) {
1217 new_vol = 10 * vol_id + lay_id;
1220 vlm.emplace_back(new_vol, new_lay, mod_id, pos.x(), pos.y(), pos.z());
1231 if (bec < 0) vol_id = 12;
1232 if (bec > 0) vol_id = 14;
1237 int side = IDs->
side(
id);
1243 vlm.emplace_back(vol_id, lay_id, mod_id, pos.x(), pos.y(), pos.z());
1249 std::vector<VLM_Data> vlm2;
1251 for (std::size_t it1 = 0; it1 < vlm.size() - 1; it1++) {
1252 if (vlm.at(it1).vol_id > 14) {
1253 vlm2.push_back(vlm.at(it1));
1257 std::size_t it2 = it1 + 1;
1259 int src = vlm.at(it1).vol_id * 1000 + vlm.at(it1).lay_id;
1260 int dst = vlm.at(it2).vol_id * 1000 + vlm.at(it2).lay_id;
1263 vlm2.push_back(vlm.at(it1));
1264 vlm2.push_back(vlm.at(it2));
1273 constexpr float minDist = 20.0;
1275 for (
auto it = std::next(vlm2.begin()); it != vlm2.end(); ) {
1276 auto jt = std::prev(it);
1277 float dx = it->m_x - jt->m_x;
1278 float dy = it->m_y - jt->m_y;
1279 float dz = it->m_z - jt->m_z;
1281 float dist = std::sqrt(dx*dx + dy*dy + dz*dz);
1283 if (dist < minDist) it = vlm2.erase(it);
1290 for (std::size_t it1 = 0; it1 < vlm2.size() - 1; ++it1) {
1291 std::size_t it2 = it1 + 1;
1293 int src = vlm2.at(it1).vol_id * 1000 + vlm2.at(it1).lay_id;
1294 int dst = vlm2.at(it2).vol_id * 1000 + vlm2.at(it2).lay_id;
1297 auto [im1, new1] = m_GBTSTrainingData.insert({src, {}});
1298 auto [im2, new2] = im1->second.insert({dst, 1ul});
1299 if (!new2) im2->second++;
1306 tableFile <<
"from,to,probability,flow\n";
1308 unsigned long nTotal = 0;
1309 for (
const auto& [src, conns] : m_GBTSTrainingData) {
1310 unsigned long nTotalDst = 0;
1311 for (
const auto& [dst, n] : conns) {
1314 nTotal += nTotalDst;
1315 for (
const auto& [dst, n] : conns) {
1316 double prob = double(n) / double(nTotalDst);
1317 tableFile << src <<
", " << dst <<
", " << std::fixed << std::setprecision(6) << prob <<
", " << prob <<
'\n';
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
This is an Identifier helper class for the Pixel subdetector.
This is an Identifier helper class for the SCT subdetector.
const ServiceHandle< StoreGateSvc > & detStore() const
bool msgLvl(const MSG::Level lvl) const
An algorithm that can be simultaneously executed in multiple threads.
DataModel_detail::const_iterator< DataVector > const_iterator
const T * front() const
Access the first element in the collection as an rvalue.
ExtendedSiTrackMakerEventData_xk(const SG::ReadHandleKey< Trk::PRDtoTrackMap > &key)
SG::ReadHandle< Trk::PRDtoTrackMap > m_prdToTrackMap
bool findPatternHoleSearchOutcome(Trk::Track *theTrack, InDet::PatternHoleSearchOutcome &outcome) const
Methods used to associate the hole search outcome to tracks without having to modify the EDM.
IntegerProperty m_histsize
StringProperty m_GBTSTrainingDataFileName
bool passEtaDepCuts(const Trk::Track *track, int nClusters, int nFreeClusters, int nPixels) const
BooleanProperty m_removeShortSegments
void dumpGBTSTrainingData() const
BooleanProperty m_useNewStrategy
MsgStream & dumptools(MsgStream &out) const
StatusCode itkFastTrackingStrategy(const EventContext &ctx) const
EventContext is used to specify which event.
SG::ReadHandleKey< SpacePointContainer > m_SpacePointsSCTKey
SG::ReadHandleKey< ROIPhiRZContainer > m_caloClusterROIKey
BooleanProperty m_alwaysProtectAgainstBusyEvent
void filterSharedTracks(std::multimap< double, Trk::Track * > &scoredTracks) const
cleans up the collection of quality filtered tracks.
virtual StatusCode execute(const EventContext &ctx) const override
Execute.
IntegerProperty m_nfreeCut
MsgStream & dump(MSG::Level lvl, const SiSPSeededTrackFinder::Counter_t *) const
std::atomic_ulong m_numGBTSTrainingData
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
BooleanProperty m_writeHolesFromPattern
ToolHandle< ISiTrackMaker > m_trackmaker
DoubleProperty m_deltaEta
StringProperty m_fieldmode
std::atomic_int m_problemsTotal
Number events with number seeds > maxNumber.
std::atomic_int m_problemsTotalV
Number events with number seeds > maxNumber.
PublicToolHandle< Trk::IPatternParametersPropagator > m_proptool
IntegerProperty m_maxSCTsp
DoubleProperty m_deltaPhi
BooleanProperty m_doFastTracking
SG::WriteHandleKey< TrackCollection > m_outputTracksKey
std::atomic_int m_neventsTotalV
Number events.
BooleanProperty m_doDumpGBTSTrainingDataLRT
Trk::MagneticFieldProperties m_fieldprop
BooleanProperty m_ITKGeometry
StatusCode itkConvStrategy(const EventContext &ctx) const
EventContext is used to specify which event.
IntegerProperty m_maxPIXsp
IntegerProperty m_maxNumberSeeds
void filterSharedTracksFast(std::multimap< double, Trk::Track * > &scoredTracks) const
SiSPSeededTrackFinder(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
StatusCode newStrategy(const EventContext &ctx) const
this method performs the track finding using the new strategy
IntegerProperty m_nvertex
BooleanProperty m_useITkConvSeeded
SG::ReadDecorHandleKey< xAOD::EventInfo > m_mbtsKey
virtual StatusCode finalize() override
ToolHandle< IRegSelTool > m_regsel_strip
void collectGBTSTrainingData(const Trk::Track *) const
bool isGoodEvent(const EventContext &ctx) const
EventContext is used to specify which event.
std::mutex m_GBTSTrainingDataMutex
SG::ReadHandleKey< Trk::PRDtoTrackMap > m_prdToTrackMap
void fillZHistogram(const EventContext &ctx, const Trk::Track *Tr, const Trk::PerigeeSurface &beamlinePerigee, std::vector< int > &numberWeightedhistogram, std::vector< double > &zWeightedHistogram, std::vector< double > &ptWeightedHistogram) const
fills three z0 histograms (non-weighted, weighted by z, and weighted by pt) with the track z at the b...
void findZvertex(std::list< Trk::Vertex > &vertexList, std::pair< double, double > &zBoundaries, const std::vector< int > &numberWeightedhistogram, const std::vector< double > &zWeightedHistogram, const std::vector< double > &ptWeightedHistogram) const
estimates a set of vertex positions and a z interval for the second track finding pass using the inpu...
ToolHandle< ISiZvertexMaker > m_zvertexmaker
SG::ReadHandleKey< xAOD::EventInfo > m_evtKey
virtual StatusCode initialize() override
Initialisation.
MsgStream & dumpevent(MsgStream &out, const SiSPSeededTrackFinder::Counter_t &counter) const
std::atomic_int m_neventsTotal
Number events.
BooleanProperty m_doDumpGBTSTrainingData
StatusCode oldStrategy(const EventContext &ctx) const
this method performs the track finding using the old strategy
SG::ReadHandleKey< SpacePointContainer > m_SpacePointsPixelKey
ToolHandle< ISiSpacePointsSeedMaker > m_seedsmaker
BooleanProperty m_useZBoundaryFinding
BooleanProperty m_useZvertexTool
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
ServiceHandle< IInDetEtaDependentCutsSvc > m_etaDependentCutsSvc
service to get cut values depending on different variable
BooleanProperty m_useMBTS
InDet::SiSpacePointsSeedMakerEventData holds event dependent data used by ISiSpacePointsSeedMaker.
InDet::SiTrackMakerEventData_xk holds event dependent data used by ISiTrackMaker.
void setPRDtoTrackMap(const Trk::PRDtoTrackMap *prd_to_track_map)
SiCombinatorialTrackFinderData_xk & combinatorialData()
This is an Identifier helper class for the Pixel subdetector.
int layer_disk(const Identifier &id) const
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module) const
For a single crystal.
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0).
IdentifierHash wafer_hash(Identifier wafer_id) const
wafer hash from id
int eta_module(const Identifier &id) const
int phi_module(const Identifier &id) const
container for phi sorted ROIs defined by phi, r and z.
Describes the Region of Ineterest geometry It has basically 9 parameters.
This is an Identifier helper class for the SCT subdetector.
int layer_disk(const Identifier &id) const
int side(const Identifier &id) const
IdentifierHash wafer_hash(const Identifier &wafer_id) const
wafer hash from id - optimized
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
int phi_module(const Identifier &id) const
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0).
int eta_module(const Identifier &id) const
Property holding a SG store/key/clid from which a ReadHandle is made.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
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
magnetic field properties to steer the behavior of the extrapolation
This class is the pure abstract base class for all fittable tracking measurements.
const Amg::Vector3D & momentum() const
Access method for the momentum.
const Amg::Vector3D & position() const
Access method for the position.
bool production(const TrackParameters *)
Class describing the Line to which the Perigee refers to.
Identifier identify() const
return the identifier
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
bool trackProperties(const TrackProperties &property) const
Access methods for track properties.
@ BremFit
A brem fit was performed on this track.
represents the track state (measurement, material, fit parameters and quality) at a surface.
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
@ Perigee
This represents a perigee, and so will contain a Perigee object only.
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
const DataVector< const MeasurementBase > * measurementsOnTrack() const
return a pointer to a vector of MeasurementBase (NOT including any that come from outliers).
const TrackInfo & info() const
Returns a const ref to info of a const tracks.
@ Background
The beam background detectors.
Eigen::Matrix< double, 3, 1 > Vector3D
@ FastField
call the fast field access method of the FieldSvc
@ NoField
Field is set to 0., 0., 0.,.
ParametersBase< TrackParametersDim, Charged > TrackParameters
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
@ numberOfSCTDeadSensors
number of TRT hits
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
@ numberOfPixelDeadSensors
number of pixel hits with broad errors (width/sqrt(12))
Helper struct for hole search results from the pattern recognition.