46 |
|
|
47 |
|
return true; |
48 |
|
} |
49 |
+ |
|
50 |
+ |
Jet* nextJet(const Particle *p, std::vector<Jet> *jets){ |
51 |
+ |
|
52 |
+ |
double deltarmin = double_infinity(); |
53 |
+ |
Jet* nextjet=0; |
54 |
+ |
for(unsigned int i=0; i<jets->size();++i){ |
55 |
+ |
if(jets->at(i).deltaR(*p) < deltarmin){ |
56 |
+ |
deltarmin = jets->at(i).deltaR(*p); |
57 |
+ |
nextjet = &jets->at(i); |
58 |
+ |
} |
59 |
+ |
} |
60 |
+ |
|
61 |
+ |
return nextjet; |
62 |
+ |
} |
63 |
+ |
|
64 |
+ |
double pTrel(const Particle *p, std::vector<Jet> *jets){ |
65 |
+ |
|
66 |
+ |
double ptrel=0; |
67 |
+ |
|
68 |
+ |
Jet* nextjet = nextJet(p,jets); |
69 |
+ |
|
70 |
+ |
TVector3 p3(p->v4().Px(),p->v4().Py(),p->v4().Pz()); |
71 |
+ |
TVector3 jet3(nextjet->v4().Px(),nextjet->v4().Py(),nextjet->v4().Pz()); |
72 |
+ |
|
73 |
+ |
if(p3.Mag()!=0 && jet3.Mag()!=0){ |
74 |
+ |
double sin_alpha = (p3.Cross(jet3)).Mag()/p3.Mag()/jet3.Mag(); |
75 |
+ |
ptrel = p3.Mag()*sin_alpha; |
76 |
+ |
} |
77 |
+ |
else{ |
78 |
+ |
std::cout << "something strange happend in the ptrel calculation: either lepton or jet momentum is 0" <<std::endl; |
79 |
+ |
} |
80 |
+ |
|
81 |
+ |
return ptrel; |
82 |
+ |
} |
83 |
+ |
|
84 |
+ |
double deltaRmin(const Particle *p, std::vector<Jet> *jets){ |
85 |
+ |
return nextJet(p,jets)->deltaR(*p); |
86 |
+ |
} |
87 |
+ |
|
88 |
+ |
TVector3 toVector(LorentzVector v4){ |
89 |
+ |
|
90 |
+ |
TVector3 v3(0,0,0); |
91 |
+ |
v3.SetX(v4.X()); |
92 |
+ |
v3.SetY(v4.Y()); |
93 |
+ |
v3.SetZ(v4.Z()); |
94 |
+ |
return v3; |
95 |
+ |
} |
96 |
+ |
|
97 |
+ |
TVector3 toVector(LorentzVectorXYZE v4){ |
98 |
+ |
|
99 |
+ |
TVector3 v3(0,0,0); |
100 |
+ |
v3.SetX(v4.X()); |
101 |
+ |
v3.SetY(v4.Y()); |
102 |
+ |
v3.SetZ(v4.Z()); |
103 |
+ |
return v3; |
104 |
+ |
} |
105 |
+ |
|
106 |
+ |
LorentzVectorXYZE toXYZ(LorentzVector v4){ |
107 |
+ |
|
108 |
+ |
LorentzVectorXYZE v4_new(0,0,0,0); |
109 |
+ |
v4_new.SetPx(v4.Px()); |
110 |
+ |
v4_new.SetPy(v4.Py()); |
111 |
+ |
v4_new.SetPz(v4.Pz()); |
112 |
+ |
v4_new.SetE(v4.E()); |
113 |
+ |
return v4_new; |
114 |
+ |
} |
115 |
+ |
|
116 |
+ |
LorentzVector toPtEtaPhi(LorentzVectorXYZE v4){ |
117 |
+ |
|
118 |
+ |
LorentzVector v4_new(0,0,0,0); |
119 |
+ |
v4_new.SetPt(v4.Pt()); |
120 |
+ |
v4_new.SetEta(v4.Eta()); |
121 |
+ |
v4_new.SetPhi(v4.Phi()); |
122 |
+ |
v4_new.SetE(v4.E()); |
123 |
+ |
return v4_new; |
124 |
+ |
} |
125 |
+ |
|
126 |
+ |
double deltaR(LorentzVector v1, LorentzVector v2){ |
127 |
+ |
|
128 |
+ |
Particle p1; |
129 |
+ |
p1.set_v4(v1); |
130 |
+ |
Particle p2; |
131 |
+ |
p2.set_v4(v2); |
132 |
+ |
return p1.deltaR(p2); |
133 |
+ |
} |
134 |
+ |
|
135 |
+ |
double double_infinity(){ |
136 |
+ |
return std::numeric_limits<double>::infinity() ; |
137 |
+ |
} |
138 |
+ |
|
139 |
+ |
int int_infinity(){ |
140 |
+ |
return std::numeric_limits<int>::max() ; |
141 |
+ |
} |
142 |
+ |
|
143 |
+ |
int myPow(int x, unsigned int p) { |
144 |
+ |
int i = 1; |
145 |
+ |
for (unsigned int j = 1; j <= p; j++) i *= x; |
146 |
+ |
return i; |
147 |
+ |
} |