18 FairRootManager *ioman = FairRootManager::Instance();
19 Int_t branchID = ioman->GetBranchId(
"FTSHit");
20 vector<PndFtsHit*>
hits;
21 set<FairLink> linksToHits = cand.GetLinksWithType(branchID).GetLinks();
23 for (std::set<FairLink>::iterator it = linksToHits.begin();it!=linksToHits.end();it++) {
34 vector<PndLineApproximation> approx;
36 }
else if(hits.size()==2){
38 vector<PndLineApproximation> approx =
approxLines(hits[0],hits[1]);
42 vector<vector<PndLineApproximation>> lines;
44 for(
size_t i=0;
i<hits.size();
i++){
45 for(
size_t j=
i+1;j<hits.size();j++){
46 vector<PndLineApproximation> lines2 =
approxLines(hits[
i],hits[j]);
47 for(
size_t k=0;k<lines2.size();k++)
54 for(
size_t i=0;
i<lines.size();
i++){
55 if(lines[
i].size()>
max)
56 max = lines[
i].size();
58 vector<PndLineApproximation> result;
60 for(
size_t i=0;
i<lines.size();
i++){
61 if(lines[
i].size()==
max){
63 for(
size_t j=1;j<lines[
i].size();j++)
74 vector<PndLineApproximation> result;
76 result.push_back(r1[0]);
77 result.push_back(r1[1]);
79 result.push_back(r2[0]);
80 result.push_back(r2[1]);
85 vector<PndLineApproximation> result;
142 s =
TMath::Abs((d-yt3)*(yp-yt3)/((xt3-c)*(xt3-xp)));
169 vector<PndFtsHit*> hits1;
170 hits1.push_back(newHit1);
171 hits1.push_back(newHit3);
176 vector<PndFtsHit*> hits2;
177 hits2.push_back(newHit2);
178 hits2.push_back(newHit4);
186 vector<PndLineApproximation> result;
244 s =
TMath::Abs((d-yt3)*(yp-yt3)/((xt3-c)*(xt3-xp)));
271 vector<PndFtsHit*> hits1;
273 hits1.push_back(newHit1);
274 hits1.push_back(newHit3);
280 vector<PndFtsHit*> hits2;
281 hits2.push_back(newHit2);
282 hits2.push_back(newHit4);
292 for(
size_t i=0;
i<lines.size();
i++){
295 lines[
i].push_back(l);
300 vector<PndLineApproximation> newLine;
301 newLine.push_back(l);
302 lines.push_back(newLine);
327 h2->SetDetectorID(h->GetDetectorID());
331 h2->SetXYZ(x,h->GetY(),
z);
334 h2->SetRefIndex(h->GetRefIndex());
335 h2->SetEntryNr(h->GetEntryNr());
355 if(((hit->
GetLayerID() - 1) / 2)%4==1) angle = -5;
356 if(((hit->
GetLayerID() - 1) / 2)%4==2) angle = 5;
358 if(!transToNewSystem) angle*=-1;
361 hitMat[0][0] = hit->GetX();
362 hitMat[1][0] = hit->GetY();
363 hitMat[2][0] = hit->GetZ();
364 TMatrix newPos = rotMat*hitMat;
365 hit->SetXYZ(newPos[0][0],newPos[1][0],newPos[2][0]);
void SetIsochrone(Double_t isochrone)
void addLine(vector< vector< PndLineApproximation >> &lines, PndLineApproximation &l)
vector< PndLineApproximation > approxOuterLine(PndFtsHit *h1, PndFtsHit *h2)
PndLineApproximation newApproximation(PndLineApproximation &approx2)
void SetChamberID(Int_t chamberid)
static T Sqrt(const T &x)
PndFtsHit * copyHitWithNewPosition(PndFtsHit *h, Double_t x, Double_t z)
void SetTubeID(Int_t tubeid)
PndFtsLineComparator fComparator
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
static Double_t compAngle
void setZValue(Double_t z)
virtual ~PndFtsLineApproximator()
PndFtsExpandedTrackCand createExpandedTrackCand(PndTrackCand &cand)
TMatrix getRotationMatrix(Double_t angle)
Double_t GetIsochrone() const
Bool_t areEqual2D(PndLine l1, PndLine l2)
Double_t GetIsochroneError() const
void SetLayerID(Int_t layerid)
void transform(Bool_t transToNewSystem, PndFtsHit *hit)
vector< PndLineApproximation > approxInnerLine(PndFtsHit *h1, PndFtsHit *h2)
vector< PndLineApproximation > approxLines(PndFtsHit *h1, PndFtsHit *h2)
void SetIsochroneError(Double_t isochroneError)
Int_t GetChamberID() const