107 auto pOut = std::make_unique<reco::JPTJetCollection>();
108 auto pOut1 = std::make_unique<reco::CaloJetCollection>();
110 double scaleJPT = 1.;
114 for (
auto const& oldjet : addjets_h) {
123 auto const& mycalo = addjets_h[icalo];
124 std::vector<edm::Ptr<reco::Track> > tracksinjet =
jet.tracks();
127 for (
auto const& itrack : tracksinjet) {
128 for (
auto const& ixtrp : iExtrapolations) {
129 if (ixtrp.positions().empty())
132 double mydphi =
deltaPhi(ixtrp.track()->phi(), itrack->phi());
133 if (fabs(ixtrp.track()->pt() - itrack->pt()) > 0.001 || fabs(ixtrp.track()->eta() - itrack->eta()) > 0.001 ||
137 if (itrack.id() != ixtrp.track().id() || itrack.key() != ixtrp.track().key())
171 reco::JPTJet fJet(p4,
jet.primaryVertex()->position(), jptspe, mycalo.getJetConstituents());
172 pOut->push_back(fJet);
173 pOut1->push_back(mycalo);
178 for (
auto const& oldjet : jets_h) {
182 double factorZSP = 1.;
195 bool validMatches =
false;
200 corrected.
py() * scaleJPT,
201 corrected.
pz() * scaleJPT,
202 corrected.
energy() * scaleJPT);
234 double deEta2Tr = 0.;
235 double dePhi2Tr = 0.;
239 double denominator_tracks = 0.;
244 double deR =
deltaR((*it)->eta(), (*it)->phi(), p4.eta(), p4.phi());
245 double deEta = (*it)->eta() - p4.eta();
246 double dePhi =
deltaPhi((*it)->phi(), p4.phi());
247 if ((**it).ptError() / (**it).pt() < 0.1) {
248 deR2Tr = deR2Tr + deR * deR * (*it)->pt();
249 deEta2Tr = deEta2Tr + deEta * deEta * (*it)->pt();
250 dePhi2Tr = dePhi2Tr + dePhi * dePhi * (*it)->pt();
251 denominator_tracks = denominator_tracks + (*it)->pt();
252 Zch = Zch + (*it)->pt();
254 Pout2 = Pout2 + (**it).p() * (**it).p() - (Zch * p4.P()) * (Zch * p4.P());
260 double deR =
deltaR((*it)->eta(), (*it)->phi(), p4.eta(), p4.phi());
261 double deEta = (*it)->eta() - p4.eta();
262 double dePhi =
deltaPhi((*it)->phi(), p4.phi());
263 if ((**it).ptError() / (**it).pt() < 0.1) {
264 deR2Tr = deR2Tr + deR * deR * (*it)->pt();
265 deEta2Tr = deEta2Tr + deEta * deEta * (*it)->pt();
266 dePhi2Tr = dePhi2Tr + dePhi * dePhi * (*it)->pt();
267 denominator_tracks = denominator_tracks + (*it)->pt();
268 Zch = Zch + (*it)->pt();
270 Pout2 = Pout2 + (**it).p() * (**it).p() - (Zch * p4.P()) * (Zch * p4.P());
276 double deR =
deltaR((*it)->eta(), (*it)->phi(), p4.eta(), p4.phi());
277 double deEta = (*it)->eta() - p4.eta();
278 double dePhi =
deltaPhi((*it)->phi(), p4.phi());
279 if ((**it).ptError() / (**it).pt() < 0.1) {
280 deR2Tr = deR2Tr + deR * deR * (*it)->pt();
281 deEta2Tr = deEta2Tr + deEta * deEta * (*it)->pt();
282 dePhi2Tr = dePhi2Tr + dePhi * dePhi * (*it)->pt();
283 denominator_tracks = denominator_tracks + (*it)->pt();
284 Zch = Zch + (*it)->pt();
286 Pout2 = Pout2 + (**it).p() * (**it).p() - (Zch * p4.P()) * (Zch * p4.P());
294 Zch = Zch + (*it)->pt();
297 it !=
muons.inVertexOutOfCalo_.end();
299 Zch = Zch + (*it)->pt();
302 it !=
elecs.inVertexOutOfCalo_.end();
304 Zch = Zch + (*it)->pt();
313 if (denominator_tracks != 0) {
314 deR2Tr = deR2Tr / denominator_tracks;
315 deEta2Tr = deEta2Tr / denominator_tracks;
316 dePhi2Tr = dePhi2Tr / denominator_tracks;
339 pOut->push_back(fJet);
reco::TrackRefVector muonsInVertexOutCalo
std::remove_cv< typename std::remove_reference< argument_type >::type >::type key_type
double pz() const final
z coordinate of momentum vector
Jets made from CaloTowers.
reco::TrackRefVector muonsInVertexInCalo
virtual void scaleEnergy(double fScale)
scale energy of the jet
reco::TrackRefVector inVertexInCalo_
reco::TrackRefVector muonsOutVertexInCalo
reco::TrackRefVector inVertexOutOfCalo_
double getResponseOfChargedWithoutEff()
edm::EDGetTokenT< edm::View< reco::CaloJet > > input_jets_token_
reco::TrackRefVector elecsOutVertexInCalo
reco::TrackRefVector pionsInVertexOutCalo
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
virtual double correction(const reco::Jet &, const edm::Event &, const edm::EventSetup &) const
apply correction using Event information
virtual Constituents getJetConstituents() const
list of constituents
double px() const final
x coordinate of momentum vector
ZSPJPTJetCorrector * mZSPalgo
edm::EDGetTokenT< edm::View< reco::CaloJet > > input_addjets_token_
Jets made from CaloJets corrected for ZSP and tracks.
double correction(const reco::Jet &, const reco::Jet &, const edm::Event &, const edm::EventSetup &, P4 &, jpt::MatchedTracks &pions, jpt::MatchedTracks &muons, jpt::MatchedTracks &elecs, bool &validMatches)
Vectorial correction method (corrected 4-momentum passed by reference)
double getResponseOfChargedWithEff()
Get responses/sumPT/SumEnergy with and without Efficiency correction.
reco::TrackRefVector pionsOutVertexInCalo
math::XYZPoint Point
point in the space
bool sort_by_pt(const reco::JPTJet &a, const reco::JPTJet &b)
reco::TrackRefVector outOfVertexInCalo_
reco::TrackRefVector elecsInVertexInCalo
math::XYZPoint Point
point in the space
edm::EDGetTokenT< std::vector< reco::TrackExtrapolation > > mExtrapolations_
double py() const final
y coordinate of momentum vector
double getSumPtWithoutEff()
edm::RefToBase< reco::Jet > theCaloJetRef
reco::TrackRefVector pionsInVertexInCalo
const_iterator end() const
Termination of iteration.
reco::TrackRefVector elecsInVertexOutCalo
Particles matched to tracks that are in/in, in/out, out/in at Vertex and CaloFace.
JetPlusTrackCorrector * mJPTalgo
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
double getSumEnergyWithoutEff()
edm::EDGetTokenT< reco::VertexCollection > input_vertex_token_
const_iterator begin() const
Initialize an iterator over the RefVector.
double getSumEnergyWithEff()
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
edm::EDGetTokenT< edm::View< reco::TrackJet > > input_trackjets_token_
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
math::XYZPoint Point
point in the space
double energy() const final
energy