288 |
|
- met->Px()*dilepton->Px() - met->Py()*dilepton->Py() |
289 |
|
- leptons->At(0)->Px()*leptons->At(1)->Px() - leptons->At(0)->Py()*leptons->At(1)->Py()); |
290 |
|
} |
291 |
+ |
else if(nsel == 7){ // Use of M mass and mnu == 0, no fancy stuff |
292 |
+ |
enell = TMath::Sqrt(dilepton->Pt()*dilepton->Pt() + dilepton->Mass()*dilepton->Mass()); |
293 |
+ |
enenn = TMath::Sqrt(met->Pt()*met->Pt() + 0.0*0.0); |
294 |
+ |
enex = dilepton->Px() + met->Px(); |
295 |
+ |
eney = dilepton->Py() + met->Py(); |
296 |
+ |
mtHiggs = (enell+enenn)*(enell+enenn) - enex*enex - eney*eney; |
297 |
+ |
} |
298 |
|
|
299 |
|
if(nsel >= 0 && nsel <= 4){ |
300 |
|
mtHiggs = mll*mll + mnu*mnu + 2.0*(enell*enenn - enex*enex - eney*eney); |
301 |
|
} |
302 |
+ |
|
303 |
|
if(mtHiggs <= 0) mtHiggs = 0.0; |
304 |
|
else mtHiggs = TMath::Sqrt(mtHiggs); |
305 |
|
|
308 |
|
return mtHiggs; |
309 |
|
} |
310 |
|
|
311 |
< |
void JetTools::Alpha(Double_t AlphaVar[2], const TrackCol *tracks, Jet *jet, const VertexCol *vertices, Double_t delta_z, Double_t delta_cone){ |
312 |
< |
AlphaVar[0] = -1.0; |
313 |
< |
AlphaVar[1] = -1.0; |
306 |
< |
if(tracks->GetEntries() <= 0) return; |
311 |
> |
Double_t JetTools::Beta(const TrackCol *tracks, Jet *jet, const Vertex *vertex, Double_t delta_z, Double_t delta_cone){ |
312 |
> |
|
313 |
> |
if(tracks->GetEntries() <= 0) return 1.0; |
314 |
|
|
315 |
|
double Pt_jets_X = 0. ; |
316 |
|
double Pt_jets_Y = 0. ; |
321 |
|
if(MathUtils::DeltaR(tracks->At(i)->Mom(),jet->Mom()) < delta_cone){ |
322 |
|
Pt_jets_X_tot += tracks->At(i)->Px(); |
323 |
|
Pt_jets_Y_tot += tracks->At(i)->Py(); |
324 |
< |
double pDz = TMath::Abs(tracks->At(i)->DzCorrected(*vertices->At(0))); |
324 |
> |
double pDz = TMath::Abs(tracks->At(i)->DzCorrected(*vertex)); |
325 |
|
if(pDz < delta_z){ |
326 |
|
Pt_jets_X += tracks->At(i)->Px(); |
327 |
|
Pt_jets_Y += tracks->At(i)->Py(); |
329 |
|
} |
330 |
|
} |
331 |
|
|
332 |
< |
if(jet->Pt() > 0) |
333 |
< |
AlphaVar[0] = sqrt(Pt_jets_X*Pt_jets_X + Pt_jets_Y*Pt_jets_Y) / jet->Pt(); |
334 |
< |
if(Pt_jets_X_tot > 0 || Pt_jets_Y_tot > 0) |
335 |
< |
AlphaVar[1] = sqrt(Pt_jets_X*Pt_jets_X + Pt_jets_Y*Pt_jets_Y) / sqrt(Pt_jets_X_tot*Pt_jets_X_tot + Pt_jets_Y_tot*Pt_jets_Y_tot); |
332 |
> |
if(sqrt(Pt_jets_X_tot*Pt_jets_X_tot + Pt_jets_Y_tot*Pt_jets_Y_tot) > 0) |
333 |
> |
return sqrt(Pt_jets_X*Pt_jets_X + Pt_jets_Y*Pt_jets_Y) / sqrt(Pt_jets_X_tot*Pt_jets_X_tot + Pt_jets_Y_tot*Pt_jets_Y_tot); |
334 |
> |
|
335 |
> |
return 1.0; |
336 |
|
} |
337 |
|
|
338 |
+ |
|
339 |
+ |
Double_t JetTools::Beta(const PFJet *jet, const Vertex *vertex, Double_t delta_z){ |
340 |
+ |
double Pt_jets_X = 0. ; |
341 |
+ |
double Pt_jets_Y = 0. ; |
342 |
+ |
double Pt_jets_X_tot = 0. ; |
343 |
+ |
double Pt_jets_Y_tot = 0. ; |
344 |
+ |
|
345 |
+ |
for(UInt_t i=0;i<jet->NPFCands();i++){ |
346 |
+ |
if(jet->PFCand(i)->BestTrk()){ |
347 |
+ |
Pt_jets_X_tot += jet->PFCand(i)->BestTrk()->Px(); |
348 |
+ |
Pt_jets_Y_tot += jet->PFCand(i)->BestTrk()->Py(); |
349 |
+ |
double pDz = TMath::Abs(jet->PFCand(i)->BestTrk()->DzCorrected(*vertex)); |
350 |
+ |
if(pDz < delta_z){ |
351 |
+ |
Pt_jets_X += jet->PFCand(i)->BestTrk()->Px(); |
352 |
+ |
Pt_jets_Y += jet->PFCand(i)->BestTrk()->Py(); |
353 |
+ |
} |
354 |
+ |
} |
355 |
+ |
} |
356 |
+ |
|
357 |
+ |
if(sqrt(Pt_jets_X_tot*Pt_jets_X_tot + Pt_jets_Y_tot*Pt_jets_Y_tot) > 0) |
358 |
+ |
return sqrt(Pt_jets_X*Pt_jets_X + Pt_jets_Y*Pt_jets_Y) / sqrt(Pt_jets_X_tot*Pt_jets_X_tot + Pt_jets_Y_tot*Pt_jets_Y_tot); |
359 |
+ |
|
360 |
+ |
return 1.0; |
361 |
+ |
} |
362 |
+ |
|
363 |
+ |
|
364 |
+ |
Bool_t JetTools::PassBetaVertexAssociationCut(const PFJet *jet, const Vertex *referenceVertex, const VertexCol *vertices, Double_t delta_z) { |
365 |
+ |
|
366 |
+ |
Bool_t passBetaCut = kTRUE; |
367 |
+ |
if(vertices->GetEntries() > 0) { |
368 |
+ |
Double_t Beta = JetTools::Beta(jet, referenceVertex, 0.2); |
369 |
+ |
Double_t Beta_other = 0.0; |
370 |
+ |
for(UInt_t nv=0; nv<vertices->GetEntries(); nv++){ |
371 |
+ |
if (referenceVertex == vertices->At(nv)) continue; |
372 |
+ |
Double_t BetaAux = JetTools::Beta(jet, vertices->At(nv), 0.2); |
373 |
+ |
if(BetaAux > Beta_other) Beta_other = BetaAux; |
374 |
+ |
} |
375 |
+ |
if(Beta_other > Beta) passBetaCut = kFALSE; |
376 |
+ |
} |
377 |
+ |
|
378 |
+ |
return passBetaCut; |
379 |
+ |
|
380 |
+ |
} |