ATLAS Offline Software
JetRecursiveSoftDrop.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // JetRecursiveSoftDrop.h
6 
7 #ifndef JetRecursiveSoftDrop_H
8 #define JetRecursiveSoftDrop_H
9 
10 // Jennifer Roloff & Joe Taenzer
11 // August 2017
12 //
13 // Tool to groom jets with recursive softdrop.
14 // SoftDrop is described in this paper: arXiv:1402.2657
15 // Recursive SoftDrop is described in this Boost2017 contribution: https://indico.cern.ch/event/579660/contributions/2582124/
16 // See also: https://fastjet.hepforge.org/trac/browser/contrib/contribs/RecursiveTools/tags/2.0.0-beta1/RecursiveSoftDrop.hh
17 
18 #include "AsgTools/AsgTool.h"
21 #include "AsgTools/ToolHandle.h"
22 
23 #include "fastjet/ClusterSequence.hh"
24 #include "fastjet/contrib/RecursiveSymmetryCutBase.hh"
25 #include "fastjet/contrib/RecursiveSoftDrop.hh"
26 
28 : public asg::AsgTool,
29  virtual public IJetGroomer {
31 
32 public:
33 
34  // Ctor.
35  JetRecursiveSoftDrop(const std::string& name);
36 
37  // Dtor.
39 
40  // Initilization.
42 
43  // Groom a jet and add result to a container.
44  int groom(const xAOD::Jet& jin,
45  const PseudoJetContainer&,
46  xAOD::JetContainer& jout) const;
47 
48  // Dump to log.
49  void print() const;
50 
51 private: // data
52 
53  // Job options.
54  // Recursive SoftDrop algorithm:
55  // z > zcut * (dR12/R0)^beta
56  // z = min(pT1, pT2)/(pT1+pT2)
57  // R0 = characteristic jet radius
58  // N : algorithm terminates after passing SoftDrop condition N times
59  // (Standard SoftDrop terminates after passing it once)
60  float m_zcut; // pT fraction for retaining subjets
61  float m_beta; // How much to consider angular dependence
62  int m_N; // Number of layers (-1 <> infinite)
63  float m_R0; // Normalization of angular distance, usually the characteristic jet radius (default R0 = 1)
64  ToolHandle<IJetFromPseudojet> m_bld; // Tool to build jets.
65 
66 };
67 
68 #endif
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
JetRecursiveSoftDrop::~JetRecursiveSoftDrop
~JetRecursiveSoftDrop()
JetRecursiveSoftDrop::initialize
StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: JetRecursiveSoftDrop.cxx:34
JetRecursiveSoftDrop::m_bld
ToolHandle< IJetFromPseudojet > m_bld
Definition: JetRecursiveSoftDrop.h:64
PseudoJetContainer
Definition: PseudoJetContainer.h:48
IJetFromPseudojet.h
IJetGroomer.h
JetRecursiveSoftDrop::JetRecursiveSoftDrop
JetRecursiveSoftDrop(const std::string &name)
Definition: JetRecursiveSoftDrop.cxx:19
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
JetRecursiveSoftDrop::m_zcut
float m_zcut
Definition: JetRecursiveSoftDrop.h:60
JetRecursiveSoftDrop
Definition: JetRecursiveSoftDrop.h:29
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
JetRecursiveSoftDrop::groom
int groom(const xAOD::Jet &jin, const PseudoJetContainer &, xAOD::JetContainer &jout) const
Transform jet.
Definition: JetRecursiveSoftDrop.cxx:60
JetRecursiveSoftDrop::m_beta
float m_beta
Definition: JetRecursiveSoftDrop.h:61
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
JetRecursiveSoftDrop::m_N
int m_N
Definition: JetRecursiveSoftDrop.h:62
IJetGroomer
Definition: IJetGroomer.h:23
ToolHandle.h
AsgTool.h
JetRecursiveSoftDrop::m_R0
float m_R0
Definition: JetRecursiveSoftDrop.h:63
JetRecursiveSoftDrop::print
void print() const
Print the state of the tool.
Definition: JetRecursiveSoftDrop.cxx:103