Go to the documentation of this file.00001 #include "RecoJets/FFTJetAlgorithms/interface/adjustForPileup.h"
00002
00003 namespace fftjetcms {
00004 math::XYZTLorentzVector adjustForPileup(
00005 const math::XYZTLorentzVector& jet,
00006 const math::XYZTLorentzVector& pileup,
00007 const bool subtractPileupAs4Vec)
00008 {
00009 const double pt = jet.Pt();
00010 if (pt > 0.0)
00011 {
00012 const double pileupPt = pileup.Pt();
00013 const double ptFactor = (pt - pileupPt)/pt;
00014 if (ptFactor <= 0.0)
00015 return math::XYZTLorentzVector();
00016 else if (subtractPileupAs4Vec)
00017 {
00018 const math::XYZTLorentzVector subtracted(jet - pileup);
00019 const double e = subtracted.E();
00020 if (e <= 0.0)
00021 return math::XYZTLorentzVector();
00022 else
00023 {
00024
00025 const double px = subtracted.Px();
00026 const double py = subtracted.Py();
00027 const double pz = subtracted.Pz();
00028 if (e*e < px*px + py*py + pz*pz)
00029
00030
00031 return jet*ptFactor;
00032 else
00033 return subtracted;
00034 }
00035 }
00036 else
00037 return jet*ptFactor;
00038 }
00039 else
00040 return jet;
00041 }
00042 }