ATLAS Offline Software
Loading...
Searching...
No Matches
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
63 StatusCode initialize();
64
65private:
66 // Implement the correction
67 StatusCode process_impl(xAOD::IParticleContainer* cont) const;
68
69 // Detailed implementation methods where clusters in
70 // both calorimeters are treated consistently
71 float calculateWeight(xAOD::IParticle& part, double minPt) 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
83private:
84 //mutable int m_initCount;
86
87 // Properties.
92 float m_rapmin;
93 float m_rapmax;
97
98};
99
100
101#endif
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
JetConstituentModifierBase(const std::string &name)
double getSoftKillerMinPt(xAOD::IParticleContainer &cont) const
SoftKillerWeightTool(const std::string &name)
StatusCode process_impl(xAOD::IParticleContainer *cont) const
float calculateSplitWeight(xAOD::IParticle &part, double minPtECal, double minPtHCal) const
std::pair< double, double > getSoftKillerMinPtSplit(xAOD::IParticleContainer &cont) const
double findMinPt(const std::vector< fastjet::PseudoJet > &partSK) const
StatusCode initialize()
Dummy implementation of the initialisation function.
std::vector< fastjet::PseudoJet > makeSKParticles(const std::vector< fastjet::PseudoJet > &partPJ) const
float calculateWeight(xAOD::IParticle &part, double minPt) const
Class providing the definition of the 4-vector interface.
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.