ATLAS Offline Software
SoftKillerWeightTool.h
Go to the documentation of this file.
1 // this file is -*- C++ -*-
2 
3 /*
4  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // SoftKillerWeightTool.h
8 
9 #ifndef JETRECTOOLS_SOFTKILLERWEIGHTTOOL_H
10 #define JETRECTOOLS_SOFTKILLERWEIGHTTOOL_H
11 
12 
13 
14 // \class SoftKillerWeightTool
15 // \author Jennifer Roloff
16 // \date November 2015
17 //
18 // This is the tool to reweight clusters according to the SoftKiller
19 // algorithm
20 // It creates a new cluster collection based on the original clusters
21 // and the grid spacing for SK
22 //
23 //
24 // Properties are as follows:
25 // OutputContainer: Name of the output cluster collection
26 // InputCollection: Name of the input cluster collection.
27 // GridSize: The grid size that should be applied for the SK
28 // algorithm. Suggested values between 0.3 and 0.6
29 // SKRapMin: The minimum (absolute) rapidity over which to calculate SK
30 // SKRapMax: The maximum (absolute) rapidity over which to calculate SK
31 // SKRapMinApplied: The minimum (absolute) rapidity over which to apply SK
32 // SKRapMaxApplied: The maximum (absolute) rapidity over which to apply SK
33 // isCaloSplit: If false, SK is run the same on all clusters. If
34 // true, SK is run separately for clusters in the ECal and the
35 // HCal.
36 // ECalGridSize: Only necessary if isCaloSplit == true. The SK grid spacing
37 // used for the ECal.
38 // HCalGridSize: Only necessary if isCaloSplit == true. The SK grid spacing
39 // used for the HCal.
40 //
41 //
42 // This tool may be used on its own or in sequence with other pileup
43 // suppression methods. For central jets, it is suggested that the
44 // input collection be clusters with area subtraction (such as Voronoi)
45 // applied.
46 //
47 
48 #include <string>
49 #include <utility>
52 
53 #include "fastjet/PseudoJet.hh"
54 
57 
58  public:
59 
60  SoftKillerWeightTool(const std::string& name);
61 
62  // Check that the configuration is sane
64 
65 private:
66  // Implement the correction
68 
69  // Detailed implementation methods where clusters in
70  // both calorimeters are treated consistently
71  float calculateWeight(xAOD::IParticle& part, double minPt) const;
72  double getSoftKillerMinPt(xAOD::IParticleContainer& cont) const;
73 
74  // Detailed implementation methods where clusters in
75  // ECAL and HCAL are treated independently
76  float calculateSplitWeight(xAOD::IParticle& part, double minPtECal, double minPtHCal) const;
77  std::pair<double,double> getSoftKillerMinPtSplit(xAOD::IParticleContainer& cont) const;
78 
79  double findMinPt(const std::vector<fastjet::PseudoJet> &partSK) const;
80  std::vector<fastjet::PseudoJet> makeSKParticles(const std::vector<fastjet::PseudoJet>& partPJ) const;
81 
82 
83 private:
84  //mutable int m_initCount;
86 
87  // Properties.
89  float m_gridSpacing;
90  float m_eCalGrid;
91  float m_hCalGrid;
92  float m_rapmin;
93  float m_rapmax;
97 
98 };
99 
100 
101 #endif
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
SoftKillerWeightTool::makeSKParticles
std::vector< fastjet::PseudoJet > makeSKParticles(const std::vector< fastjet::PseudoJet > &partPJ) const
SoftKillerWeightTool::calculateSplitWeight
float calculateSplitWeight(xAOD::IParticle &part, double minPtECal, double minPtHCal) const
Definition: SoftKillerWeightTool.cxx:212
JetConstituentModifierBase.h
SoftKillerWeightTool::SoftKillerWeightTool
SoftKillerWeightTool(const std::string &name)
Definition: SoftKillerWeightTool.cxx:23
SoftKillerWeightTool::m_eCalGrid
float m_eCalGrid
Definition: SoftKillerWeightTool.h:90
SoftKillerWeightTool::findMinPt
double findMinPt(const std::vector< fastjet::PseudoJet > &partSK) const
Definition: SoftKillerWeightTool.cxx:102
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
SoftKillerWeightTool::m_lambdaCalDivide
float m_lambdaCalDivide
Definition: SoftKillerWeightTool.h:85
SoftKillerWeightTool::m_rapmin
float m_rapmin
Definition: SoftKillerWeightTool.h:92
IJetConstituentModifier
Definition: IJetConstituentModifier.h:16
SoftKillerWeightTool
Definition: SoftKillerWeightTool.h:55
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
IParticleContainer.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
SoftKillerWeightTool::getSoftKillerMinPtSplit
std::pair< double, double > getSoftKillerMinPtSplit(xAOD::IParticleContainer &cont) const
Definition: SoftKillerWeightTool.cxx:156
SoftKillerWeightTool::m_rapminApplied
float m_rapminApplied
Definition: SoftKillerWeightTool.h:94
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
JetConstituentModifierBase
Definition: JetConstituentModifierBase.h:22
SoftKillerWeightTool::m_ignoreChargedPFOs
bool m_ignoreChargedPFOs
Definition: SoftKillerWeightTool.h:96
SoftKillerWeightTool::calculateWeight
float calculateWeight(xAOD::IParticle &part, double minPt) const
Definition: SoftKillerWeightTool.cxx:204
SoftKillerWeightTool::m_gridSpacing
float m_gridSpacing
Definition: SoftKillerWeightTool.h:89
SoftKillerWeightTool::initialize
StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: SoftKillerWeightTool.cxx:51
SoftKillerWeightTool::m_rapmaxApplied
float m_rapmaxApplied
Definition: SoftKillerWeightTool.h:95
SoftKillerWeightTool::getSoftKillerMinPt
double getSoftKillerMinPt(xAOD::IParticleContainer &cont) const
Definition: SoftKillerWeightTool.cxx:117
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
SoftKillerWeightTool::process_impl
StatusCode process_impl(xAOD::IParticleContainer *cont) const
Definition: SoftKillerWeightTool.cxx:73
SoftKillerWeightTool::m_hCalGrid
float m_hCalGrid
Definition: SoftKillerWeightTool.h:91
SoftKillerWeightTool::m_rapmax
float m_rapmax
Definition: SoftKillerWeightTool.h:93
SoftKillerWeightTool::m_isCaloSplit
bool m_isCaloSplit
Definition: SoftKillerWeightTool.h:88