33 |
|
if( (subjets[1].v4()+subjets[2].v4()).isTimelike() ) |
34 |
|
m12 = (subjets[1].v4()+subjets[2].v4()).M(); |
35 |
|
|
36 |
< |
//minimum pairwise mass > 50 GeV/c^2 |
36 |
> |
//minimum pairwise mass |
37 |
|
mmin = std::min(m01,std::min(m02,m12)); |
38 |
|
} |
39 |
|
|
61 |
|
return nextjet; |
62 |
|
} |
63 |
|
|
64 |
+ |
bool WTag(TopJet prunedjet, double& mjet, int &nsubjets, double& massdrop){ |
65 |
+ |
|
66 |
+ |
nsubjets=prunedjet.numberOfDaughters(); |
67 |
+ |
|
68 |
+ |
mjet = 0; |
69 |
+ |
if(prunedjet.v4().isTimelike()) |
70 |
+ |
mjet = prunedjet.v4().M(); |
71 |
+ |
|
72 |
+ |
//calculate mass drop for first sub-jet ordered in pt |
73 |
+ |
massdrop = 0; |
74 |
+ |
if(nsubjets>=1 && mjet>0){ |
75 |
+ |
|
76 |
+ |
std::vector< Particle > subjets = prunedjet.subjets(); |
77 |
+ |
sort(subjets.begin(), subjets.end(), HigherPt()); |
78 |
+ |
|
79 |
+ |
double m1 = 0; |
80 |
+ |
if(subjets[0].v4().isTimelike()) |
81 |
+ |
m1 = subjets[0].v4().M(); |
82 |
+ |
|
83 |
+ |
massdrop = m1/mjet; |
84 |
+ |
} |
85 |
+ |
|
86 |
+ |
//at least 2 sub-jets |
87 |
+ |
if(nsubjets<2) return false; |
88 |
+ |
//60 GeV < pruned jet mass < 100 GeV |
89 |
+ |
if(mjet <= 60 || mjet >= 100) return false; |
90 |
+ |
//mass drop < 0.4 |
91 |
+ |
if(massdrop>=0.4) return false; |
92 |
+ |
|
93 |
+ |
return true; |
94 |
+ |
|
95 |
+ |
} |
96 |
+ |
|
97 |
|
double pTrel(const Particle *p, std::vector<Jet> *jets){ |
98 |
|
|
99 |
|
double ptrel=0; |