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(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++);
990 std::vector<int>& numberHistogram,
991 std::vector<double>& zWeightedHistogram,
992 std::vector<double>& ptWeightedHistogram)
const
1002 constexpr double rSquare_max_forZHisto = 60.*60.;
1003 if (position.x()*position.x()+position.y()*position.y() >= rSquare_max_forZHisto)
return;
1005 double pT = sqrt(momentum.x()*momentum.x()+momentum.y()*momentum.y());
1009 if (not TP.
production(paramsAtFirstSurface))
return;
1013 if (not
m_proptool->propagate(Gaudi::Hive::currentContext(),
1016 const AmgVector(5)& parsAtBeamSpot = TP.parameters();
1017 if (std::abs(parsAtBeamSpot[0]) >
m_imcut)
return;
1023 ++numberHistogram[
z];
1025 zWeightedHistogram[
z] += parsAtBeamSpot[1];
1027 ptWeightedHistogram[
z] += pT;
1037 std::pair<double, double> & zBoundaries,
1038 const std::vector<int>& numberHistogram,
1039 const std::vector<double>& zWeightedHistogram,
1040 const std::vector<double>& ptWeightedHistogram)
const
1042 zBoundaries = {1000., -1000};
1044 std::multimap<int ,double> vertexZ_sortedByNtracks;
1045 std::multimap<double,double> vertexZ_sortedBySumPt;
1048 int minBinContentSum = 3;
1051 for (
int binIndex=1; binIndex<lastBin; ++binIndex) {
1054 int vertexNtracks = numberHistogram.at(binIndex-1)+numberHistogram.at(binIndex)+numberHistogram.at(binIndex+1);
1058 if (vertexNtracks>=minBinContentSum and (numberHistogram.at(binIndex) >= numberHistogram.at(binIndex-1) and numberHistogram.at(binIndex) >= numberHistogram.at(binIndex+1))) {
1060 double vertexZestimate = (zWeightedHistogram.at(binIndex-1)+zWeightedHistogram.at(binIndex)+zWeightedHistogram.at(binIndex+1))/
static_cast<double>(vertexNtracks);
1064 if (vertexZestimate < zBoundaries.first) zBoundaries.first = vertexZestimate;
1065 if (vertexZestimate > zBoundaries.second) zBoundaries.second = vertexZestimate;
1069 double vertexSumPt = ptWeightedHistogram.at(binIndex-1)+ptWeightedHistogram.at(binIndex)+ptWeightedHistogram.at(binIndex+1);
1070 vertexZ_sortedByNtracks.insert(std::make_pair(-vertexNtracks, vertexZestimate));
1071 vertexZ_sortedBySumPt.insert(std::make_pair(-vertexSumPt, vertexZestimate));
1078 std::set<double> leadingVertices;
1080 std::multimap<double, double>::iterator vertex_pt_and_z = vertexZ_sortedBySumPt.begin();
1081 for (std::pair<int, double> nTrackAndZ: vertexZ_sortedByNtracks) {
1086 leadingVertices.insert(nTrackAndZ.second);
1087 leadingVertices.insert((*vertex_pt_and_z++).second);
1090 for (
double v: leadingVertices) {
1095 if (zBoundaries.first > zBoundaries.second) {
1096 zBoundaries.first = -1000.;
1097 zBoundaries.second = +1000.;
1100 zBoundaries.first -= 20.;
1101 zBoundaries.second += 20.;
1133 if(!par)
return false;
1135 double eta = std::abs(par->eta());
1136 if(nClusters < m_etaDependentCutsSvc->getMinSiHitsAtEta(
eta))
return false;
1137 if(nFreeClusters < m_etaDependentCutsSvc->getMinSiNotSharedAtEta(
eta))
return false;
1139 if(nPixels < m_etaDependentCutsSvc->getMinPixelHitsAtEta(
eta))
return false;
1150 int vol_id, lay_id, mod_id;
1151 float m_x, m_y, m_z;
1157 if (
detStore()->retrieve(IDp,
"PixelID").isFailure()) {
1161 if (
detStore()->retrieve(IDs,
"SCT_ID").isFailure()) {
1165 if (!IDs && !IDp)
return;
1169 std::vector<VLM_Data> vlm;
1171 for (
const auto* s : *track->trackStateOnSurfaces()) {
1186 const Amg::Vector3D& pos = s->trackParameters()->position();
1196 if (bec == -2) vol_id = 7;
1197 if (bec == 2) vol_id = 9;
1199 if (bec < -2 || bec > 2)
continue;
1209 int new_vol = 0, new_lay = 0;
1211 if (vol_id == 7 || vol_id == 9) {
1212 new_vol = 10 * vol_id + lay_id;
1214 }
else if (vol_id == 8) {
1216 new_vol = 10 * vol_id + lay_id;
1219 vlm.emplace_back(new_vol, new_lay, mod_id, pos.x(), pos.y(), pos.z());
1230 if (bec < 0) vol_id = 12;
1231 if (bec > 0) vol_id = 14;
1236 int side = IDs->
side(
id);
1242 vlm.emplace_back(vol_id, lay_id, mod_id, pos.x(), pos.y(), pos.z());
1248 std::vector<VLM_Data> vlm2;
1250 for (std::size_t it1 = 0; it1 < vlm.size() - 1; it1++) {
1251 if (vlm.at(it1).vol_id > 14) {
1252 vlm2.push_back(vlm.at(it1));
1256 std::size_t it2 = it1 + 1;
1258 int src = vlm.at(it1).vol_id * 1000 + vlm.at(it1).lay_id;
1259 int dst = vlm.at(it2).vol_id * 1000 + vlm.at(it2).lay_id;
1262 vlm2.push_back(vlm.at(it1));
1263 vlm2.push_back(vlm.at(it2));
1272 constexpr float minDist = 20.0;
1274 for (
auto it = std::next(vlm2.begin()); it != vlm2.end(); ) {
1275 auto jt = std::prev(it);
1276 float dx = it->m_x - jt->m_x;
1277 float dy = it->m_y - jt->m_y;
1278 float dz = it->m_z - jt->m_z;
1280 float dist = std::sqrt(dx*dx + dy*dy + dz*dz);
1282 if (dist < minDist) it = vlm2.erase(it);
1289 for (std::size_t it1 = 0; it1 < vlm2.size() - 1; ++it1) {
1290 std::size_t it2 = it1 + 1;
1292 int src = vlm2.at(it1).vol_id * 1000 + vlm2.at(it1).lay_id;
1293 int dst = vlm2.at(it2).vol_id * 1000 + vlm2.at(it2).lay_id;
1296 auto [im1, new1] = m_GBTSTrainingData.insert({src, {}});
1297 auto [im2, new2] = im1->second.insert({dst, 1ul});
1298 if (!new2) im2->second++;
1305 tableFile <<
"from,to,probability,flow\n";
1307 unsigned long nTotal = 0;
1308 for (
const auto& [src, conns] : m_GBTSTrainingData) {
1309 unsigned long nTotalDst = 0;
1310 for (
const auto& [dst, n] : conns) {
1313 nTotal += nTotalDst;
1314 for (
const auto& [dst, n] : conns) {
1315 double prob = double(n) / double(nTotalDst);
1316 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
void fillZHistogram(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...
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 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.