19 Int_t l1 = 4*bigLayer+0;
20 Int_t l2 = 4*bigLayer+1;
21 Int_t l3 = 4*bigLayer+2;
22 Int_t l4 = 4*bigLayer+3;
25 vector<PndLineApproximation> arr[3];
36 vector<PndLineCombination> combindedLines;
38 for(
size_t i=0;
i<arr[0].size();
i++){
40 combindedLines.push_back(newApprox);
45 vector<PndLineApproximation> lines = arr[
i];
47 Int_t maxVal = combindedLines.size();
48 for(
size_t j=0;j<lines.size();j++){
49 addLine(combindedLines,lines[j],maxVal);
54 vector<PndLineApproximation> result;
55 for(
size_t i=0;
i<combindedLines.size();
i++){
59 result.push_back(approx);
63 vector<PndLineApproximation> result2;
65 Bool_t used[result.size()];
66 for(
size_t i=0;
i<result.size();
i++)used[
i]=kFALSE;
67 for(
size_t i=0;
i<result.size();
i++){
70 for(
size_t j=i+1;j<result.size();j++){
85 (vector<PndFtsExpandedTrackCand> cands1, vector<PndFtsExpandedTrackCand> cands2, Int_t layer1, Int_t layer2){
86 vector<PndLineApproximation> result;
87 for(
size_t i=0;
i<cands1.size();
i++){
88 size_t resultSizeBefore = result.size();
90 for(
size_t j=0;j<cands2.size();j++){
92 vector<PndLineApproximation> lines =
combine(cand1,cand2,layer1,layer2);
93 result.insert(result.begin(),lines.begin(),lines.end());
96 if(layer1==0 && result.size()==resultSizeBefore){
100 result.push_back(la);
109 vector<PndLineApproximation> result;
110 for(
size_t i=0;
i<approx1.size();
i++){
111 for(
size_t j=0;j<approx2.size();j++){
112 PndLine line1 = approx1[
i].getLine();
113 PndLine line2 = approx2[j].getLine();
120 vector<PndFtsHit*> cHits1 = approx1[
i].getHits();
121 vector<PndFtsHit*> cHits2 = approx2[j].getHits();
124 result.push_back(newApprox);
135 PndLine& l2=lines[
i].getApprox1().getLine();
140 if(lines[
i].getQuality()>quality){
142 lines[
i].setApprox2(&la);
143 lines[
i].setQuality(quality);
149 lines.push_back(newCom);
154 for(
size_t i=0;
i<lines.size();
i++){
159 lines[
i].setApprox1(newApprox);
160 lines[
i].setApprox2(0);
167 for(
int i=0;
i<end;
i++){
180 vector<PndFtsExpandedTrackCand> result;
181 Bool_t used2[cands2.size()];
182 for(
size_t j=0;j<cands2.size();j++)used2[j]=kFALSE;
184 for(
size_t i=0;
i<cands1.size();
i++){
186 for(
size_t j=0;j<cands2.size();j++){
192 if(lines.size()==0)
continue;
196 result.push_back(etc);
198 if(!used)result.push_back(cands1[
i]);
200 for(
size_t j=0;j<cands2.size();j++){
201 if(!used2[j])result.push_back(cands2[j]);
207 (vector<PndLineApproximation> l1, vector<PndLineApproximation> l2){
208 vector<PndLineApproximation> result;
209 for(
size_t i=0;
i<l1.size();
i++){
212 fComparator.setZValue(line1.
getP1()[2]);
213 for(
size_t j=0;j<l2.size();j++){
216 if(fComparator.areEqual2D(line1,line2)){
218 result.push_back(newApprox);
PndLine getIntersection(PndPlane &p)
void addLineOld(vector< PndLineApproximation > &lines, PndLineApproximation &l, Int_t end)
vector< PndFtsHit * > getSourceHits()
PndLineApproximation newApproximation(PndLineApproximation &approx2)
void addLine(vector< PndLineCombination > &lines, PndLineApproximation &l, Int_t max)
vector< PndFtsExpandedTrackCand > compareAndRefit(Int_t layer1, Int_t layer2)
void refitLines(vector< PndLineCombination > &lines)
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
int combine(CandList &l1, CandList &l2, CandList &out, int matchPdg=0)
static Double_t compAngle
void setZValue(Double_t z)
Double_t getQuality(PndLine l1, PndLine l2)
static T Min(const T &x, const T &y)
virtual ~PndTrackCombiner()
PndLineApproximation getApprox1()
vector< PndLineApproximation > getLineApproximations()
static T Max(const T &x, const T &y)
vector< PndLineApproximation > combine(Int_t bigLayer)
Bool_t areEqual2D(PndLine l1, PndLine l2)
static Double_t compQuali
map< Int_t, vector< PndFtsExpandedTrackCand > > fExpandedTrackCands
PndFtsLineComparator fComparator