9 return (cand1.delta_R(cand2) < rParam_);
15 srcCand_(iConfig.getParameter<edm::InputTag>(
"src")),
16 srcVor_(iConfig.getParameter<edm::InputTag>(
"bkg")),
17 dropZeroTowers_(iConfig.getParameter<bool>(
"dropZeros")),
18 addNegativesFromCone_(iConfig.getParameter<bool>(
"addNegativesFromCone")),
19 infinitesimalPt_(iConfig.getParameter<double>(
"infinitesimalPt")),
20 rParam_(iConfig.getParameter<double>(
"rParam"))
30 LogDebug(
"VoronoiSubtractor")<<
"The subtractor retrieving Voronoi background...\n";
43 LogDebug(
"VoronoiSubtractor")<<
"finalizing the output...\n";
47 for (
unsigned int ijet = 0;ijet <
fjJets_->size();++ijet) {
48 fastjet::PseudoJet& fjJet = (*fjJets_)[ijet];
50 LogDebug(
"VoronoiSubtractor")<<
"fjJets_ "<<ijet<<
" pt : "<<fjJet.pt()
51 <<
" --- eta : "<<fjJet.eta()<<
" --- phi : "<<fjJet.phi()<<endl;
53 fastjet::PseudoJet subtracted;
54 fastjet::PseudoJet unsubtracted;
55 fastjet::PseudoJet unsubtractedDropped;
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();
68 fastjet::PseudoJet candidate(ref->px(),ref->py(),ref->pz(),ref->energy());
69 double orpt = candidate.perp();
70 unsubtracted += candidate;
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;
91 fastjet::PseudoJet dropcand(ref->px(),ref->py(),ref->pz(),ref->energy());
93 if(
match(fjJet,dropcand)){
94 unsubtractedDropped += dropcand;
95 unsubtracted += dropcand;
100 fjJet.reset_momentum(subtracted);
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();
123 LogDebug(
"VoronoiSubtractor")<<
"The subtractor subtracting pedestals...\n";
124 vector<fastjet::PseudoJet> newcoll;
126 for (vector<fastjet::PseudoJet>::iterator input_object = coll.begin (),
127 fjInputsEnd = coll.end();
128 input_object != fjInputsEnd; ++input_object) {
133 double ptold = input_object->
pt();
134 double ptnew = voronoi.pt();
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;
161 int index = input_object->user_index();
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);
167 LogDebug(
"VoronoiSubtractor")<<
"New momentum : "<<ps.pt()
168 <<
" rap : "<<ps.rap()
169 <<
" phi : "<<ps.phi()
170 <<
" MASS : "<<ps.m()<<endl;
172 newcoll.push_back(ps);
179 LogDebug(
"VoronoiSubtractor")<<
"do nothing...\n";
185 LogDebug(
"VoronoiSubtractor")<<
"do nothing...\n";
std::vector< double > jetOffset_
virtual void subtractPedestal(std::vector< fastjet::PseudoJet > &coll)
VoronoiSubtractor(const edm::ParameterSet &iConfig)
virtual void offsetCorrectJets()
std::vector< fastjet::PseudoJet > * fjJets_
bool addNegativesFromCone_
edm::Handle< reco::VoronoiMap > backgrounds_
virtual void calculateOrphanInput(std::vector< fastjet::PseudoJet > &orphanInput)
std::vector< int > droppedCandidates_
virtual void calculatePedestal(std::vector< fastjet::PseudoJet > const &coll)
bool match(fastjet::PseudoJet, fastjet::PseudoJet)
virtual void setupGeometryMap(edm::Event &iEvent, const edm::EventSetup &iSetup)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
CaloGeometry const * geo_
edm::Handle< reco::CandidateView > candidates_