ATLAS Offline Software
Loading...
Searching...
No Matches
Puppi Class Reference

#include <Puppi.h>

Collaboration diagram for Puppi:

Public Member Functions

 Puppi (double R0, double Rmin, double beta, double centralPTCutOffset, double centralPTCutSlope, double forwardPTCutOffset, double forwardPTCutSlope, double etaBoundary)
void setParticles (const std::vector< fastjet::PseudoJet > &chargedHS, const std::vector< fastjet::PseudoJet > &chargedPU, const std::vector< fastjet::PseudoJet > &neutral, const std::vector< fastjet::PseudoJet > &forward, int nPU)
double getWeight (const fastjet::PseudoJet &pfo)
double getAlpha (const fastjet::PseudoJet &pfo)
double getMedian ()
double getRMS ()

Private Member Functions

double getChi2 (const fastjet::PseudoJet &pfo)
void findAlphaMedianAndRMS ()

Private Attributes

std::vector< fastjet::PseudoJet > m_chargedHS
std::vector< fastjet::PseudoJet > m_chargedPU
std::vector< fastjet::PseudoJet > m_neutral
std::vector< fastjet::PseudoJet > m_forward
std::vector< std::vector< fastjet::PseudoJet > * > m_allParticles
double m_R0 {}
double m_Rmin {}
double m_beta {}
double m_centralPTCutOffset {}
double m_centralPTCutSlope {}
double m_forwardPTCutOffset {}
double m_forwardPTCutSlope {}
double m_etaBoundary {}
bool m_includeCentralNeutralsInAlpha {}
double m_median {}
double m_rms {}
double m_nPV {}

Detailed Description

Definition at line 22 of file Puppi.h.

Constructor & Destructor Documentation

◆ Puppi()

Puppi::Puppi ( double R0,
double Rmin,
double beta,
double centralPTCutOffset,
double centralPTCutSlope,
double forwardPTCutOffset,
double forwardPTCutSlope,
double etaBoundary )

Definition at line 19 of file Puppi.cxx.

19 :
20 m_R0(R0), m_Rmin(Rmin), m_beta(beta), m_centralPTCutOffset(centralPTCutOffset), m_centralPTCutSlope(centralPTCutSlope), m_forwardPTCutOffset(forwardPTCutOffset), m_forwardPTCutSlope(forwardPTCutSlope), m_etaBoundary(etaBoundary)
21{}
double m_etaBoundary
Definition Puppi.h:58
double m_centralPTCutSlope
Definition Puppi.h:55
double m_centralPTCutOffset
Definition Puppi.h:54
double m_R0
Definition Puppi.h:51
double m_Rmin
Definition Puppi.h:52
double m_forwardPTCutOffset
Definition Puppi.h:56
double m_forwardPTCutSlope
Definition Puppi.h:57
double m_beta
Definition Puppi.h:53

Member Function Documentation

◆ findAlphaMedianAndRMS()

void Puppi::findAlphaMedianAndRMS ( )
private

Definition at line 133 of file Puppi.cxx.

133 {
134 vector<double> values;
135
136 for(const auto& p: m_chargedPU){
137
138 // Don't want to include particles on the boundary
139 if( fabs(p.eta()) > m_etaBoundary-m_R0) continue;
140
141 double value = getAlpha(p);
142 if(value > -999) values.push_back(value); //-9999 is the value assigned to pfo with zero neighbors
143 }
144
145 std::sort(values.begin(),values.end());
146
147 if(!values.empty()) m_median=values[int(values.size()*0.5)];
148 else m_median=-9999;
149
150 // now compute the LHS RMS
151 double sum=0;
152 int n = 0;
153 for(auto value: values){
154 if (value - m_median > 0) continue;
155 sum += (value - m_median)*(value - m_median);
156 ++n;
157 }
158
159 if(n > 0) m_rms = TMath::Sqrt(sum/n);
160 else m_rms=-9999;
161}
double getAlpha(const fastjet::PseudoJet &pfo)
Definition Puppi.cxx:83
double m_median
Definition Puppi.h:61
std::vector< fastjet::PseudoJet > m_chargedPU
Definition Puppi.h:45
double m_rms
Definition Puppi.h:62
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ getAlpha()

double Puppi::getAlpha ( const fastjet::PseudoJet & pfo)

Definition at line 83 of file Puppi.cxx.

83 {
84 fastjet::Selector sel = fastjet::SelectorCircle(m_R0);
85 sel.set_reference(pfo);
86
87 double sum=0;
88 int nNeighbors=0;
89
90 if (fabs(pfo.eta())<m_etaBoundary+m_R0){
91 vector<fastjet::PseudoJet> chargedHSNeighbors = sel(m_chargedHS);
92 for (const auto& p: chargedHSNeighbors){
93 float dR=pfo.delta_R(p);
94 if (dR>m_Rmin){
95 sum+=p.pt()/pow(dR, m_beta);
96 nNeighbors+=1;
97 }
98 }
99 }
100
102 if (fabs(pfo.eta())<m_etaBoundary+m_R0){
103 vector<fastjet::PseudoJet> neutralNeighbors = sel(m_neutral);
104 for (const auto& p: neutralNeighbors){
105 float dR=pfo.delta_R(p);
106 if (dR>m_Rmin){
107 sum+=pow(p.pt()/dR, m_beta);
108 nNeighbors+=1;
109 }
110 }
111 }
112 }
113
114 if (fabs(pfo.eta())>m_etaBoundary-m_R0){
115 vector<fastjet::PseudoJet> forwardNeighbors = sel(m_forward);
116 for (const auto& p: forwardNeighbors){
117 float dR=pfo.delta_R(p);
118 if (dR>m_Rmin){
119 sum+=pow(p.pt()/dR, m_beta);
120 nNeighbors+=1;
121 }
122 }
123 }
124
125 if (sum<=FLT_MIN) return -99999;
126 if (nNeighbors!=0) return log(sum);
127 return -9999;
128}
constexpr int pow(int base, int exp) noexcept
std::vector< fastjet::PseudoJet > m_chargedHS
Definition Puppi.h:44
bool m_includeCentralNeutralsInAlpha
Definition Puppi.h:59
std::vector< fastjet::PseudoJet > m_neutral
Definition Puppi.h:46
std::vector< fastjet::PseudoJet > m_forward
Definition Puppi.h:47

◆ getChi2()

double Puppi::getChi2 ( const fastjet::PseudoJet & pfo)
private

Definition at line 42 of file Puppi.cxx.

42 {
43 double chi=(getAlpha(pfo)-m_median)/m_rms;
44 return chi*fabs(chi);
45}

◆ getMedian()

double Puppi::getMedian ( )

Definition at line 163 of file Puppi.cxx.

163 {
164 return m_median;
165}

◆ getRMS()

double Puppi::getRMS ( )

Definition at line 166 of file Puppi.cxx.

166 {
167 return m_rms;
168}

◆ getWeight()

double Puppi::getWeight ( const fastjet::PseudoJet & pfo)

Definition at line 49 of file Puppi.cxx.

49 {
50
51 double chi2Total=getChi2(pfo);
52 int nDF=1;
53
54 if(pfo.has_user_info<PuppiUserInfo>()){
55 //This is untested!!!!
56 //Need to think about how to handle sign of chi2 - for now just throw it away
57 chi2Total=fabs(chi2Total);
58 for(auto v: pfo.user_info<PuppiUserInfo>().otherChi2Vec) {
59 chi2Total+=v;
60 nDF+=1;
61 }
62 }
63
64 double w = ROOT::Math::chisquared_cdf(chi2Total, nDF);
65
66 double offset,slope;
67 if( fabs(pfo.eta()) < m_etaBoundary) {
70 }
71 else {
74 }
75
76 w*=(pfo.pt()>offset+m_nPV*slope);
77
78 return w;
79}
double m_nPV
Definition Puppi.h:64
double getChi2(const fastjet::PseudoJet &pfo)
Definition Puppi.cxx:42

◆ setParticles()

void Puppi::setParticles ( const std::vector< fastjet::PseudoJet > & chargedHS,
const std::vector< fastjet::PseudoJet > & chargedPU,
const std::vector< fastjet::PseudoJet > & neutral,
const std::vector< fastjet::PseudoJet > & forward,
int nPU )

Definition at line 26 of file Puppi.cxx.

26 {
27
28 m_chargedHS=chargedHS;
29 m_chargedPU=chargedPU;
31 m_forward=forward;
32
33 m_nPV=nPV;
34
36
38}
void findAlphaMedianAndRMS()
Definition Puppi.cxx:133
std::vector< std::vector< fastjet::PseudoJet > * > m_allParticles
Definition Puppi.h:49

Member Data Documentation

◆ m_allParticles

std::vector< std::vector< fastjet::PseudoJet >* > Puppi::m_allParticles
private

Definition at line 49 of file Puppi.h.

◆ m_beta

double Puppi::m_beta {}
private

Definition at line 53 of file Puppi.h.

53{};

◆ m_centralPTCutOffset

double Puppi::m_centralPTCutOffset {}
private

Definition at line 54 of file Puppi.h.

54{};

◆ m_centralPTCutSlope

double Puppi::m_centralPTCutSlope {}
private

Definition at line 55 of file Puppi.h.

55{};

◆ m_chargedHS

std::vector<fastjet::PseudoJet> Puppi::m_chargedHS
private

Definition at line 44 of file Puppi.h.

◆ m_chargedPU

std::vector<fastjet::PseudoJet> Puppi::m_chargedPU
private

Definition at line 45 of file Puppi.h.

◆ m_etaBoundary

double Puppi::m_etaBoundary {}
private

Definition at line 58 of file Puppi.h.

58{};

◆ m_forward

std::vector<fastjet::PseudoJet> Puppi::m_forward
private

Definition at line 47 of file Puppi.h.

◆ m_forwardPTCutOffset

double Puppi::m_forwardPTCutOffset {}
private

Definition at line 56 of file Puppi.h.

56{};

◆ m_forwardPTCutSlope

double Puppi::m_forwardPTCutSlope {}
private

Definition at line 57 of file Puppi.h.

57{};

◆ m_includeCentralNeutralsInAlpha

bool Puppi::m_includeCentralNeutralsInAlpha {}
private

Definition at line 59 of file Puppi.h.

59{};

◆ m_median

double Puppi::m_median {}
private

Definition at line 61 of file Puppi.h.

61{};

◆ m_neutral

std::vector<fastjet::PseudoJet> Puppi::m_neutral
private

Definition at line 46 of file Puppi.h.

◆ m_nPV

double Puppi::m_nPV {}
private

Definition at line 64 of file Puppi.h.

64{};

◆ m_R0

double Puppi::m_R0 {}
private

Definition at line 51 of file Puppi.h.

51{};

◆ m_Rmin

double Puppi::m_Rmin {}
private

Definition at line 52 of file Puppi.h.

52{};

◆ m_rms

double Puppi::m_rms {}
private

Definition at line 62 of file Puppi.h.

62{};

The documentation for this class was generated from the following files: