ATLAS Offline Software
Loading...
Searching...
No Matches
Multiplicities.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef jetsubstructureutils_multiplicities_header
6#define jetsubstructureutils_multiplicities_header
7
9
10#include "fastjet/contrib/SoftDrop.hh"
11#include "fastjet/tools/Recluster.hh"
12
13namespace JetSubStructureUtils {
14
15 class Multiplicities : public SubstructureCalculator<double>{
16 public:
17 Multiplicities(double beta=0., double zcut=0., double ktcut=0.) {
18 m_beta = beta;
19 m_zcut = zcut;
20 m_ktcut = ktcut;
21 };
22
24 virtual double result(const fastjet::PseudoJet &jet) const override {
25 // apply desired soft drop to the jet: default values do no grooming, which is fine
26 fastjet::contrib::SoftDrop sd(m_beta, m_zcut);
27 // Apply the grooming to the jet
28 fastjet::PseudoJet sdJet = sd(jet);
29
30 int multiplicity=0;
31
32 fastjet::JetDefinition jd(fastjet::cambridge_algorithm, fastjet::JetDefinition::max_allowable_R );
33 fastjet::Recluster rc(jd);
34 fastjet::PseudoJet j = rc.result(sdJet);
35
36 fastjet::PseudoJet jj, j1, j2;
37 jj = j;
38 while (jj.has_parents(j1,j2)){
39 if(j2.pt()*j1.delta_R(j2)>m_ktcut)
40 multiplicity++;
41 if(multiplicity>500) // infinite loop failsafe
42 return -1;
43
44 // follow harder branch
45 jj = j1;
46 }
47
48 return multiplicity;
49 };
50 private:
51 // soft drop parameters
52 double m_beta;
53 double m_zcut;
54
55 // les houches multiplcity cut
56 double m_ktcut;
57 };
58}
59
60#endif
static Double_t rc
virtual double result(const fastjet::PseudoJet &jet) const override
Multiplicities(double beta=0., double zcut=0., double ktcut=0.)
virtual TOut result(const xAOD::Jet &jet) const