CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
VoronoiSubtractor Class Reference

#include <VoronoiSubtractor.h>

Inheritance diagram for VoronoiSubtractor:
PileUpSubtractor

Public Member Functions

virtual void calculateOrphanInput (std::vector< fastjet::PseudoJet > &orphanInput)
 
virtual void calculatePedestal (std::vector< fastjet::PseudoJet > const &coll)
 
bool match (fastjet::PseudoJet, fastjet::PseudoJet)
 
virtual void offsetCorrectJets ()
 
virtual void setupGeometryMap (edm::Event &iEvent, const edm::EventSetup &iSetup)
 
virtual void subtractPedestal (std::vector< fastjet::PseudoJet > &coll)
 
 VoronoiSubtractor (const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
 
 ~VoronoiSubtractor ()
 
- Public Member Functions inherited from PileUpSubtractor
virtual double getCone (double cone, double eta, double phi, double &et, double &pu)
 
virtual double getMeanAtTower (const reco::CandidatePtr &in) const
 
int getN (const reco::CandidatePtr &in) const
 
int getNwithJets (const reco::CandidatePtr &in) const
 
virtual double getPileUpAtTower (const reco::CandidatePtr &in) const
 
virtual double getPileUpEnergy (int ijet) const
 
virtual double getSigmaAtTower (const reco::CandidatePtr &in) const
 
int ieta (const reco::CandidatePtr &in) const
 
int iphi (const reco::CandidatePtr &in) const
 
 PileUpSubtractor (const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
 
virtual void reset (std::vector< edm::Ptr< reco::Candidate > > &input, std::vector< fastjet::PseudoJet > &towers, std::vector< fastjet::PseudoJet > &output)
 
virtual void setDefinition (JetDefPtr const &jetDef)
 
virtual ~PileUpSubtractor ()
 

Private Attributes

bool addNegativesFromCone_
 
edm::Handle< reco::VoronoiMapbackgrounds_
 
edm::Handle< reco::CandidateViewcandidates_
 
std::vector< int > droppedCandidates_
 
bool dropZeroTowers_
 
double infinitesimalPt_
 
double rParam_
 
edm::EDGetTokenT
< reco::CandidateView
srcCand_
 
edm::EDGetTokenT
< edm::ValueMap
< reco::VoronoiBackground > > 
srcVor_
 

Additional Inherited Members

- Public Types inherited from PileUpSubtractor
typedef boost::shared_ptr
< fastjet::GhostedAreaSpec > 
ActiveAreaSpecPtr
 
typedef boost::shared_ptr
< fastjet::ClusterSequence > 
ClusterSequencePtr
 
typedef boost::shared_ptr
< fastjet::JetDefinition > 
JetDefPtr
 
typedef boost::shared_ptr
< fastjet::RangeDefinition > 
RangeDefPtr
 
- Protected Attributes inherited from PileUpSubtractor
std::vector< HcalDetIdallgeomid_
 
bool doAreaFastjet_
 
bool doRhoFastjet_
 
std::map< int, double > emean_
 
std::map< int, double > esigma_
 
ActiveAreaSpecPtr fjActiveArea_
 
ClusterSequencePtr fjClusterSeq_
 
std::vector< fastjet::PseudoJet > * fjInputs_
 
JetDefPtr fjJetDefinition_
 
std::vector< fastjet::PseudoJet > * fjJets_
 
std::vector< fastjet::PseudoJet > fjOriginalInputs_
 
RangeDefPtr fjRangeDef_
 
CaloGeometry const * geo_
 
std::map< int, int > geomtowers_
 
int ietamax_
 
int ietamin_
 
std::vector< edm::Ptr
< reco::Candidate > > * 
inputs_
 
std::vector< double > jetOffset_
 
double jetPtMin_
 
double nSigmaPU_
 
std::map< int, int > ntowersWithJets_
 
double puPtMin_
 
double radiusPU_
 
bool reRunAlgo_
 

Detailed Description

Definition at line 8 of file VoronoiSubtractor.h.

Constructor & Destructor Documentation

VoronoiSubtractor::VoronoiSubtractor ( const edm::ParameterSet iConfig,
edm::ConsumesCollector &&  iC 
)

Definition at line 13 of file VoronoiSubtractor.cc.

13  :
14  PileUpSubtractor(iConfig, std::move(iC)),
17  dropZeroTowers_(iConfig.getParameter<bool>("dropZeros")),
18  addNegativesFromCone_(iConfig.getParameter<bool>("addNegativesFromCone")),
19  infinitesimalPt_(iConfig.getParameter<double>("infinitesimalPt")),
20  rParam_(iConfig.getParameter<double>("rParam"))
21 {
22 
23 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
edm::EDGetTokenT< edm::ValueMap< reco::VoronoiBackground > > srcVor_
edm::EDGetTokenT< reco::CandidateView > srcCand_
PileUpSubtractor(const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
VoronoiSubtractor::~VoronoiSubtractor ( )
inline

Definition at line 19 of file VoronoiSubtractor.h.

19 {;}

Member Function Documentation

void VoronoiSubtractor::calculateOrphanInput ( std::vector< fastjet::PseudoJet > &  orphanInput)
virtual

Reimplemented from PileUpSubtractor.

Definition at line 183 of file VoronoiSubtractor.cc.

References LogDebug.

184 {
185  LogDebug("VoronoiSubtractor")<<"do nothing...\n";
186 }
#define LogDebug(id)
void VoronoiSubtractor::calculatePedestal ( std::vector< fastjet::PseudoJet > const &  coll)
virtual

Reimplemented from PileUpSubtractor.

Definition at line 177 of file VoronoiSubtractor.cc.

References LogDebug.

178 {
179  LogDebug("VoronoiSubtractor")<<"do nothing...\n";
180 }
#define LogDebug(id)
bool VoronoiSubtractor::match ( fastjet::PseudoJet  cand1,
fastjet::PseudoJet  cand2 
)

Definition at line 8 of file VoronoiSubtractor.cc.

Referenced by offsetCorrectJets().

8  {
9  return (cand1.delta_R(cand2) < rParam_);
10 }
void VoronoiSubtractor::offsetCorrectJets ( )
virtual

Reimplemented from PileUpSubtractor.

Definition at line 40 of file VoronoiSubtractor.cc.

References addNegativesFromCone_, candidates_, droppedCandidates_, PileUpSubtractor::fjJets_, i, cmsHarvester::index, PileUpSubtractor::jetOffset_, LogDebug, match(), and reco::VoronoiBackground::pt().

41 {
42 
43  LogDebug("VoronoiSubtractor")<<"finalizing the output...\n";
44 
45  jetOffset_.reserve(fjJets_->size());
46 
47  for (unsigned int ijet = 0;ijet <fjJets_->size();++ijet) {
48  fastjet::PseudoJet& fjJet = (*fjJets_)[ijet];
49 
50  LogDebug("VoronoiSubtractor")<<"fjJets_ "<<ijet<<" pt : "<<fjJet.pt()
51  <<" --- eta : "<<fjJet.eta()<<" --- phi : "<<fjJet.phi()<<endl;
52 
53  fastjet::PseudoJet subtracted;
54  fastjet::PseudoJet unsubtracted;
55  fastjet::PseudoJet unsubtractedDropped;
56  jetOffset_[ijet] = 0;
57 
58  // Loop over constituents to determine the momentum
59  // before and after subtraction
60 
61  std::vector<fastjet::PseudoJet> fjConstituents = fastjet::sorted_by_pt(fjJet.constituents());
62  for (unsigned int i=0;i<fjConstituents.size();++i) {
63  unsigned int index = fjConstituents[i].user_index();
64 
66  const reco::VoronoiBackground& voronoi = (*backgrounds_)[ref];
67 
68  fastjet::PseudoJet candidate(ref->px(),ref->py(),ref->pz(),ref->energy());
69  double orpt = candidate.perp();
70  unsubtracted += candidate;
71  if(voronoi.pt() > 0){
72  candidate.reset_PtYPhiM(voronoi.pt(),ref->rapidity(),ref->phi(),ref->mass());
73  LogDebug("VoronoiSubtractor")<<"candidate "<<index
74  <<" --- original pt : "<<orpt
75  <<" --- voronoi pt : "<<voronoi.pt()
76  <<" --- ref pt : "<<ref->pt()
77  <<" --- constituent "<<index
78  <<" --- pt : "<<fjConstituents[i].perp()
79  <<" --- eta : "<<fjConstituents[i].pseudorapidity()
80  <<" --- phi : "<<fjConstituents[i].phi()
81  <<" --- mass : "<<fjConstituents[i].m()<<endl;
82  subtracted += candidate;
83  }
84  }
85 
86  // Loop over dropped candidates to see whether there is any of them
87  // that would belong to this jet:
89  for(unsigned int i=0; i < droppedCandidates_.size(); ++i){
91  fastjet::PseudoJet dropcand(ref->px(),ref->py(),ref->pz(),ref->energy());
92 
93  if(match(fjJet,dropcand)){
94  unsubtractedDropped += dropcand;
95  unsubtracted += dropcand;
96  }
97  }
98  }
99 
100  fjJet.reset_momentum(subtracted);
101 
102  LogDebug("VoronoiSubtractor")<<"fjJets_ "<<ijet<<" unsubtracted : "<<unsubtracted.pt()<<endl;
103  LogDebug("VoronoiSubtractor")<<"fjJets_ "<<ijet<<" subtracted : "<<subtracted.pt()<<endl;
104  LogDebug("VoronoiSubtractor")<<"fjJets_ "<<ijet<<" dropped : "<<unsubtractedDropped.pt()<<endl;
105  jetOffset_[ijet] = unsubtracted.pt() - fjJet.pt();
106 
107  }
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
std::vector< double > jetOffset_
std::vector< fastjet::PseudoJet > * fjJets_
std::vector< int > droppedCandidates_
bool match(fastjet::PseudoJet, fastjet::PseudoJet)
edm::Handle< reco::CandidateView > candidates_
void VoronoiSubtractor::setupGeometryMap ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Reimplemented from PileUpSubtractor.

Definition at line 27 of file VoronoiSubtractor.cc.

References backgrounds_, candidates_, droppedCandidates_, PileUpSubtractor::geo_, edm::Event::getByToken(), PileUpSubtractor::jetOffset_, LogDebug, srcCand_, and srcVor_.

28 {
29 
30  LogDebug("VoronoiSubtractor")<<"The subtractor retrieving Voronoi background...\n";
31  geo_ = 0;
32  droppedCandidates_.clear();
33  jetOffset_.clear();
34 
37 
38 }
#define LogDebug(id)
std::vector< double > jetOffset_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
edm::EDGetTokenT< edm::ValueMap< reco::VoronoiBackground > > srcVor_
edm::Handle< reco::VoronoiMap > backgrounds_
std::vector< int > droppedCandidates_
edm::EDGetTokenT< reco::CandidateView > srcCand_
CaloGeometry const * geo_
edm::Handle< reco::CandidateView > candidates_
void VoronoiSubtractor::subtractPedestal ( std::vector< fastjet::PseudoJet > &  coll)
virtual

Reimplemented from PileUpSubtractor.

Definition at line 120 of file VoronoiSubtractor.cc.

References candidates_, droppedCandidates_, cmsHarvester::index, infinitesimalPt_, LogDebug, and reco::VoronoiBackground::pt().

121 {
122 
123  LogDebug("VoronoiSubtractor")<<"The subtractor subtracting pedestals...\n";
124  vector<fastjet::PseudoJet> newcoll;
125 
126  for (vector<fastjet::PseudoJet>::iterator input_object = coll.begin (),
127  fjInputsEnd = coll.end();
128  input_object != fjInputsEnd; ++input_object) {
129 
130  reco::CandidateViewRef ref(candidates_,input_object->user_index());
131  const reco::VoronoiBackground& voronoi = (*backgrounds_)[ref];
132 
133  double ptold = input_object->pt();
134  double ptnew = voronoi.pt();
135 
136  LogDebug("VoronoiSubtractor")<<"pt old : "<<ptold<<" ; pt new : "<<ptnew
137  <<" E : "<<input_object->e()
138  <<" rap : "<<input_object->rapidity()
139  <<" phi : "<<input_object->phi()
140  <<" MASS : "<<input_object->m()<<endl;
141 
142  // Treatment of candidates with negative pt after subtraction
143  if(ptnew < infinitesimalPt_){
144  if(infinitesimalPt_ > 0){
145  // Low-pt candidate is assigned a very small finite pt
146  // so that the jet clustering includes the candidate
147  // and can associate it to the jet.
148  // The original candidate pt is restored
149  // in the offsetCorrectJets() function.
150  ptnew = infinitesimalPt_;
151  }else{
152  // Low-pt candidate is removed from the input collection,
153  // so that the jet clustering algorithm can function properly.
154  // However, we need to keep track of these candidates
155  // in order to determine how much energy has been subtracted in total.
156  droppedCandidates_.push_back(input_object->user_index());
157  continue;
158  }
159  }
160 
161  int index = input_object->user_index();
162 
163  fastjet::PseudoJet ps(input_object->four_mom());
164  ps.reset_PtYPhiM(ptnew,input_object->rapidity(),input_object->phi(),input_object->m());
165  ps.set_user_index(index);
166 
167  LogDebug("VoronoiSubtractor")<<"New momentum : "<<ps.pt()
168  <<" rap : "<<ps.rap()
169  <<" phi : "<<ps.phi()
170  <<" MASS : "<<ps.m()<<endl;
171 
172  newcoll.push_back(ps);
173  }
174  coll = newcoll;
175 }
#define LogDebug(id)
std::vector< int > droppedCandidates_
JetCorrectorParametersCollection coll
Definition: classes.h:10
edm::Handle< reco::CandidateView > candidates_

Member Data Documentation

bool VoronoiSubtractor::addNegativesFromCone_
private

Definition at line 28 of file VoronoiSubtractor.h.

Referenced by offsetCorrectJets().

edm::Handle<reco::VoronoiMap> VoronoiSubtractor::backgrounds_
private

Definition at line 23 of file VoronoiSubtractor.h.

Referenced by setupGeometryMap().

edm::Handle<reco::CandidateView> VoronoiSubtractor::candidates_
private

Definition at line 22 of file VoronoiSubtractor.h.

Referenced by offsetCorrectJets(), setupGeometryMap(), and subtractPedestal().

std::vector<int> VoronoiSubtractor::droppedCandidates_
private

Definition at line 26 of file VoronoiSubtractor.h.

Referenced by offsetCorrectJets(), setupGeometryMap(), and subtractPedestal().

bool VoronoiSubtractor::dropZeroTowers_
private

Definition at line 27 of file VoronoiSubtractor.h.

double VoronoiSubtractor::infinitesimalPt_
private

Definition at line 29 of file VoronoiSubtractor.h.

Referenced by subtractPedestal().

double VoronoiSubtractor::rParam_
private

Definition at line 30 of file VoronoiSubtractor.h.

edm::EDGetTokenT<reco::CandidateView> VoronoiSubtractor::srcCand_
private

Definition at line 24 of file VoronoiSubtractor.h.

Referenced by setupGeometryMap().

edm::EDGetTokenT<edm::ValueMap<reco::VoronoiBackground> > VoronoiSubtractor::srcVor_
private

Definition at line 25 of file VoronoiSubtractor.h.

Referenced by setupGeometryMap().