/* * PndWayFollower.cxx * * Created on: Jul 26, 2016 * Author: kibellus */ #include Double_t PndWayFollower::compDist = 5; Double_t PndWayFollower::compAngle = 10; Double_t PndWayFollower::qualiT = 10; vector PndWayFollower::followLines(Int_t begin){ vector result; cout << "Start follow lines" << endl; /* vector allLines; for(map>::iterator i=cands.begin();i!=cands.end();i++){ vector vec = i->second; for(int j=0;j appr = vec[j].getLineApproximations(); for(int k=0;kGetZ()); cout << "Quali wrong line:" < layerCands = cands[layer]; PndLineApproximation bestApprox; bestApprox.getLine().setRating(-1); Double_t bestDist = 99999999; for(size_t i=0;i approxs = layerCands[i].getLineApproximations(); for(size_t j=0;jGetZ()-20); PndLine l2 = approx.getLine(); Double_t dist = fLineComp.getDist2D(l1.getP1(),l2.getP1(),l1.getDir(),l2.getDir()); if(dist5){ bestApprox=PndLineApproximation(); bestApprox.getLine().setRating(-1); } //to bad? PndLine l2 = bestApprox.getLine(); Double_t quali = fLineComp.getQuality(l1,l2); if(quali > qualiT){ PndLineApproximation apprWrong; apprWrong.getLine().setRating(-1); return apprWrong; } return bestApprox; } PndLineApproximation PndWayFollower::getBestSkewedApproxTo(PndLine l1, Int_t layer){ PndPlane p1(l1,layer-1); vector layerCands = cands[layer]; PndLineApproximation bestApprox; bestApprox.getLine().setRating(-1); Double_t bestDist = 99999999; for(size_t i=0;i approxs = layerCands[i].getLineApproximations(); for(size_t j=0;jGetZ()); PndPlane p2(approx.getLine(),layer); PndLine l3 = p1.getIntersection(p2); Double_t dist = fLineComp.getQuality3D(l1,l3); if(dist hits; bestApprox = PndLineApproximation(l3,hits); bestApprox.correctHits3DAndAdd(approx.getHits()); } } } //to bad? PndLine l2 = bestApprox.getLine(); Double_t quali = fLineComp.getQuality(l1,l2); if(quali > qualiT){ PndLineApproximation apprWrong; apprWrong.getLine().setRating(-1); return apprWrong; } return bestApprox; } PndWayFollower::~PndWayFollower() { // TODO Auto-generated destructor stub }