ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
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 {}

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 }

◆ 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 }

◆ 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) {
69  slope=m_centralPTCutSlope;
70  }
71  else {
73  slope=m_forwardPTCutSlope;
74  }
75 
76  w*=(pfo.pt()>offset+m_nPV*slope);
77 
78  return w;
79 }

◆ 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 }

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.

◆ m_centralPTCutOffset

double Puppi::m_centralPTCutOffset
private

Definition at line 54 of file Puppi.h.

◆ m_centralPTCutSlope

double Puppi::m_centralPTCutSlope
private

Definition at line 55 of file Puppi.h.

◆ 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.

◆ 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.

◆ m_forwardPTCutSlope

double Puppi::m_forwardPTCutSlope
private

Definition at line 57 of file Puppi.h.

◆ m_includeCentralNeutralsInAlpha

bool Puppi::m_includeCentralNeutralsInAlpha
private

Definition at line 59 of file Puppi.h.

◆ m_median

double Puppi::m_median
private

Definition at line 61 of file Puppi.h.

◆ 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.

◆ m_R0

double Puppi::m_R0
private

Definition at line 51 of file Puppi.h.

◆ m_Rmin

double Puppi::m_Rmin
private

Definition at line 52 of file Puppi.h.

◆ m_rms

double Puppi::m_rms
private

Definition at line 62 of file Puppi.h.


The documentation for this class was generated from the following files:
Puppi::m_includeCentralNeutralsInAlpha
bool m_includeCentralNeutralsInAlpha
Definition: Puppi.h:59
Puppi::m_forwardPTCutOffset
double m_forwardPTCutOffset
Definition: Puppi.h:56
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
Puppi::m_Rmin
double m_Rmin
Definition: Puppi.h:52
Puppi::m_beta
double m_beta
Definition: Puppi.h:53
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
Puppi::m_nPV
double m_nPV
Definition: Puppi.h:64
athena.value
value
Definition: athena.py:122
Puppi::m_forwardPTCutSlope
double m_forwardPTCutSlope
Definition: Puppi.h:57
Puppi::m_neutral
std::vector< fastjet::PseudoJet > m_neutral
Definition: Puppi.h:46
Puppi::getChi2
double getChi2(const fastjet::PseudoJet &pfo)
Definition: Puppi.cxx:42
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:797
Puppi::m_centralPTCutSlope
double m_centralPTCutSlope
Definition: Puppi.h:55
Puppi::m_R0
double m_R0
Definition: Puppi.h:51
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
beamspotman.n
n
Definition: beamspotman.py:731
Puppi::getAlpha
double getAlpha(const fastjet::PseudoJet &pfo)
Definition: Puppi.cxx:83
Puppi::m_rms
double m_rms
Definition: Puppi.h:62
sel
sel
Definition: SUSYToolsTester.cxx:92
Puppi::m_etaBoundary
double m_etaBoundary
Definition: Puppi.h:58
Puppi::m_allParticles
std::vector< std::vector< fastjet::PseudoJet > * > m_allParticles
Definition: Puppi.h:49
PuppiUserInfo::otherChi2Vec
std::vector< double > otherChi2Vec
Definition: Puppi.h:17
Puppi::m_forward
std::vector< fastjet::PseudoJet > m_forward
Definition: Puppi.h:47
PuppiUserInfo
Definition: Puppi.h:11
CP::neutral
@ neutral
Definition: Reconstruction/PFlow/PFlowUtils/PFlowUtils/PFODefs.h:11
python.PyAthena.v
v
Definition: PyAthena.py:157
Puppi::m_chargedPU
std::vector< fastjet::PseudoJet > m_chargedPU
Definition: Puppi.h:45
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
Puppi::m_chargedHS
std::vector< fastjet::PseudoJet > m_chargedHS
Definition: Puppi.h:44
Rmin
double Rmin
Definition: LArDetectorConstructionTBEC.cxx:54
Puppi::findAlphaMedianAndRMS
void findAlphaMedianAndRMS()
Definition: Puppi.cxx:133
Puppi::m_centralPTCutOffset
double m_centralPTCutOffset
Definition: Puppi.h:54
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
MuonParameters::beta
@ beta
Definition: MuonParamDefs.h:144
Puppi::m_median
double m_median
Definition: Puppi.h:61