FairRoot/PandaRoot
PndFtsLineComparator.cxx
Go to the documentation of this file.
1 /*
2  * PndFtsLineComparator.cpp
3  *
4  * Created on: Jun 2, 2016
5  * Author: kibellus
6  */
7 
8 #include <PndFtsLineComparator.h>
9 
11  // TODO Auto-generated destructor stub
12 }
13 
15  //base vectors
16  TVector3 b1 = l1.getP1();
17  TVector3 b2 = l2.getP1();
18 
19  //direction vectors
20  TVector3 d1 = l1.getDir();
21  TVector3 d2 = l2.getDir();
22 
23  if(getAngle(d1,d2)>fMaxAngle) return kFALSE;
24  Double_t dist = getDist(b1,b2,d1,d2);
25  if(dist>fMaxDistance) return kFALSE;
26  return kTRUE;
27 }
28 
30  //base vectors
31  TVector3 b1 = l1.getP1();
32  TVector3 b2 = l2.getP1();
33 
34  //direction vectors
35  TVector3 d1 = l1.getDir();
36  TVector3 d2 = l2.getDir();
37  if(getAngle2D(d1,d2)>fMaxAngle) return kFALSE;
38  Double_t dist = getDist2D(b1,b2,d1,d2);
39  if(dist>fMaxDistance) return kFALSE;
40  return kTRUE;
41 }
42 
44  //base vectors
45  TVector3 b1 = l1.getP1();
46  TVector3 b2 = l2.getP1();
47 
48  //direction vectors
49  TVector3 d1 = l1.getDir();
50  TVector3 d2 = l2.getDir();
51 
52  Double_t angle3D =getAngle(d1,d2);
53  Double_t dist3D = getDist(b1,b2,d1,d2);
54  Double_t quality3D = 100*angle3D + 300*dist3D;
55  return quality3D;
56 }
57 
59  //base vectors
60  TVector3 b1 = l1.getP1();
61  TVector3 b2 = l2.getP1();
62 
63  //direction vectors
64  TVector3 d1 = l1.getDir();
65  TVector3 d2 = l2.getDir();
66  Double_t angle2D =getAngle2D(d1,d2);
67  Double_t dist2D = getDist2D(b1,b2,d1,d2);
68  Double_t quality2D = 100*angle2D + 300*dist2D;
69  Double_t quality3D = getQuality3D(l1,l2);
70  return 0.1*quality3D + 0.9*quality2D;
71 }
72 
73 Double_t PndFtsLineComparator::getAngle(TVector3 d1,TVector3 d2){
74  Double_t angle = d1.Angle(d2)*TMath::RadToDeg();
75  angle= TMath::Min(angle,180-angle);
76  return angle;
77 }
78 
79 Double_t PndFtsLineComparator::getDist(TVector3 b1,TVector3 b2,TVector3 d1,TVector3 d2){
80  Double_t lambda1 = (zValue-b1[2])/d1[2];
81  Double_t lambda2 = (zValue-b2[2])/d2[2];
82  TVector3 p1 = b1+lambda1*d1;
83  TVector3 p2 = b2+lambda2*d2;
84  return (p1-p2).Mag();
85 }
86 
87 Double_t PndFtsLineComparator::getAngle2D(TVector3 d1,TVector3 d2){
88  d1[1]=0;
89  d2[1]=0;
90  return getAngle(d1,d2);
91 }
92 
93 Double_t PndFtsLineComparator::getDist2D(TVector3 b1,TVector3 b2,TVector3 d1,TVector3 d2){
94  d1[1]=0;
95  d2[1]=0;
96  b1[1]=0;
97  b2[1]=0;
98  return getDist(b1,b2,d1,d2);
99 }
Double_t getDist2D(TVector3 b1, TVector3 b2, TVector3 d1, TVector3 d2)
Double_t getQuality3D(PndLine l1, PndLine l2)
TVector3 getDir()
Definition: PndLine.h:34
Double_t getQuality(PndLine l1, PndLine l2)
Double_t getAngle(TVector3 d1, TVector3 d2)
Double_t getAngle2D(TVector3 d1, TVector3 d2)
static T Min(const T &x, const T &y)
Definition: PndCAMath.h:35
Double_t
Bool_t areEqual(PndLine l1, PndLine l2)
TPad * p2
Definition: hist-t7.C:117
Bool_t areEqual2D(PndLine l1, PndLine l2)
Double_t getDist(TVector3 b1, TVector3 b2, TVector3 d1, TVector3 d2)
TPad * p1
Definition: hist-t7.C:116
Double_t angle
TVector3 getP1()
Definition: PndLine.h:32