193 std::map<int, std::vector<pma::Track3D*>> toFlip;
194 std::map<int, double> minVal;
198 if (!
t.IsValid())
continue;
200 int tid =
t.TreeId();
201 if (minVal.find(tid) == minVal.end()) minVal[tid] = 1.0e12;
203 TVector3 pFront(
t.Track()->front()->Point3D());
204 pFront.SetX(-pFront.X());
205 pFront.SetY(-pFront.Y());
206 TVector3 pBack(
t.Track()->back()->Point3D());
207 pBack.SetX(-pBack.X());
208 pBack.SetY(-pBack.Y());
211 if (pFront[coordinate] < minVal[tid]) {
212 minVal[tid] = pFront[coordinate];
213 toFlip[tid].push_back(
t.Track());
216 if (pBack[coordinate] < minVal[tid]) {
217 minVal[tid] = pBack[coordinate];
218 if (!pushed) toFlip[tid].push_back(
t.Track());
222 for (
auto& tEntry : toFlip)
223 if (tEntry.first >= 0) {
225 while (!tEntry.second.empty()) {
227 tEntry.second.pop_back();
230 pFront.SetX(-pFront.X());
231 pFront.SetY(-pFront.Y());
233 pBack.SetX(-pBack.X());
234 pBack.SetY(-pBack.Y());
236 if (pFront[coordinate] > pBack[coordinate]) {
239 mf::LogWarning(
"pma::TrkCandidateColl") <<
"Flip to coordinate failed.";
247 if (attempts++ > 2)
break;
std::vector< TrkCandidate > fCandidates
pma::Hit3D const * front() const
TVector3 const & Point3D() const
bool setTreeOriginAtBack(detinfo::DetectorPropertiesData const &detProp, pma::Track3D *trk)
bool setTreeOriginAtFront(detinfo::DetectorPropertiesData const &detProp, pma::Track3D *trk)
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
pma::Hit3D const * back() const