ATLAS Offline Software
Loading...
Searching...
No Matches
Angularity.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
6#include "TLorentzVector.h"
7
8using namespace std;
9using namespace JetSubStructureUtils;
10
11double Angularity::result(const fastjet::PseudoJet &jet) const
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; // avoid FPE
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
virtual double result(const fastjet::PseudoJet &jet) const
STL namespace.