22 std::vector<float> coords;
23 if (ilayer >= m_hits.size())
24 throw std::range_error(
"FPGATrackSimTrack::getCoords() out of bounds");
28 coords.push_back(m_hits[ilayer].getEtaIndex());
29 coords.push_back(m_hits[ilayer].getPhiIndex());
42 double target_r = m_idealRadii[ilayer];
44 unsigned other_layer = (m_hits[ilayer].getSide() == 0) ? ilayer + 1 : ilayer - 1;
45 target_r = (target_r + m_idealRadii[other_layer]) / 2.;
48 double hough_x = getHoughX();
49 double hough_y = getHoughY();
52 std::vector<float> coords =
::computeIdealCoords(m_hits[ilayer], hough_x, hough_y, target_r, m_doDeltaGPhis, m_trackCorrType);
58 auto coords = getCoords(ilayer);
59 if (coords.size() > 0) {
63 throw std::range_error(
"FPGATrackSimTrack::getCoord(layer,coord) out of bounds");
68 auto coords = getCoords(ilayer);
76 unsigned target_coord = 1;
77 if (m_hits[ilayer].getHitType() ==
HitType::spacepoint && (m_hits[ilayer].getPhysLayer() % 2) == 1) {
81 if (coords.size() > target_coord) {
82 return coords.at(target_coord);
85 throw std::range_error(
"FPGATrackSimTrack::getCoord(layer,coord) out of bounds");
91 for (
const auto& hit : m_hits) {
92 nCoords += hit.getDim();
100 if (m_hits.size() >
i)
103 throw std::range_error(
"FPGATrackSimTrack::setFPGATrackSimHit() out of bounds");
109 if (m_hits.size() > 0) m_hits.clear();
118 if (std::abs(
phi) > 100) {
180 out <<
"TRACK: ID=" << std::left << setw(8) <<
track.m_trackID;
181 out <<
" SECTOR1=" << std::left << setw(8) <<
track.m_firstSectorID;
182 out <<
" BANK=" << std::left << setw(8) <<
track.m_bankID;
183 out <<
" BARCODE=" << std::left << setw(6) <<
track.m_barcode;
184 out <<
" BARCODE_F=" << std::left << setw(9) <<
track.m_barcode_frac;
185 out <<
" EVENT=" << std::left << setw(6) <<
track.m_eventindex;
186 out <<
" HITMAP=" << std::left << setw(8) <<
track.getHitMap();
187 out <<
" TYPE=" << std::left << setw(3) <<
track.m_typemask;
188 out <<
" NMISS=" << std::left << setw(3) <<
track.getNMissing();
190 streamsize oldprec =
out.precision();
192 out <<
" PHI=" << std::left << setw(10) <<
track.m_phi;
193 out.setf(ios_base::scientific);
195 out <<
" Q/PT=" << std::left << setw(10) <<
track.m_qoverpt;
196 out.unsetf(ios_base::scientific);
198 out <<
" d0=" << std::left << setw(10) <<
track.m_d0;
199 out <<
" ETA=" << std::left << setw(10) <<
track.m_eta;
200 out <<
" z0=" << std::left << setw(10) <<
track.m_z0;
201 out <<
" Chi2=" << std::left << setw(12) <<
track.m_chi2;
202 out <<
" OChi2=" << std::left << setw(12) <<
track.m_origchi2;
205 out.precision(oldprec);
211 for (
const auto& hit :
track.m_hits) {
212 out <<
"Hit " << iter <<
": " << hit <<
"\n";
222 vector<FPGATrackSimMultiTruth> mtv;
223 mtv.reserve(m_hits.size());
226 for (
const auto& thishit : m_hits)
228 if (thishit.isReal())
232 if (thishit.isPixel())
233 for (
auto&
x : this_mt)
235 mtv.push_back(this_mt);
244 const bool ok = mt.
best(tbarcode, tfrac);
247 setEventIndex(tbarcode.first);
248 setBarcode(tbarcode.second);
249 setBarcodeFrac(tfrac);