12{
13 if(jet.constituents().empty()) return -1;
14 if(jet.m()==0.0) return -1;
15
16 vector<fastjet::PseudoJet> constit_pseudojets = jet.constituents();
17 TLorentzVector jet_p4(jet.px(), jet.py(), jet.pz(), jet.e());
18
19 double Angularity2=-1.;
20 const double a2=-2.;
21 double sum_a2=0.;
22
23 for(unsigned int iConstit=0; iConstit < constit_pseudojets.size(); iConstit++) {
24 TLorentzVector tclus = TLorentzVector(constit_pseudojets[iConstit].
px(),constit_pseudojets[iConstit].
py(),constit_pseudojets[iConstit].
pz(),constit_pseudojets[iConstit].
e());
25 double theta_i = jet_p4.Angle(tclus.Vect());
26 double sintheta_i =
sin(theta_i);
27 if( sintheta_i == 0 ) continue;
28 double e_theta_i_a2 = constit_pseudojets[iConstit].E()*
pow(sintheta_i,a2)*
pow(1-
cos(theta_i),1-a2);
29 sum_a2 += e_theta_i_a2;
30 }
31
32 if ( jet.m() < 1.e-20 ) return -1.0;
33 Angularity2 = sum_a2/jet.m();
34 return Angularity2;
35}
constexpr int pow(int base, int exp) noexcept