16 produces<reco::PFCandidateCollection>();
40 bool isMatched_Object =
false;
43 unshiftedObject != unshiftedObjects->end(); ++unshiftedObject ) {
44 isMatched_Object =
false;
48 shiftedObject != shiftedObjects->end(); ++shiftedObject ) {
49 double dR2 =
deltaR2(unshiftedObject->p4(), shiftedObject->p4());
51 shiftedObjectP4_matched = shiftedObject;
52 isMatched_Object =
true;
53 dR2bestMatch_Object = dR2;
56 if ( isMatched_Object ) {
63 for ( reco::PFCandidateCollection::const_iterator originalPFCandidate = originalPFCandidates->begin();
64 originalPFCandidate != originalPFCandidates->end(); ++originalPFCandidate ) {
67 bool applyShift =
false;
68 double dR2bestMatch_PFCandidate =
dRDefault;
69 for ( std::vector<objectEntryType>::const_iterator
object =
objects_.begin();
71 if ( !
object->isValidMatch_ )
continue;
72 double dR2 =
deltaR2(originalPFCandidate->p4(),
object->unshiftedObjectP4_);
74 shift =
object->shift_;
76 dR2bestMatch_PFCandidate = dR2;
82 double shiftedPx = (1. +
shift)*originalPFCandidate->px();
83 double shiftedPy = (1. +
shift)*originalPFCandidate->py();
84 double shiftedPz = (1. +
shift)*originalPFCandidate->pz();
85 double mass = originalPFCandidate->mass();
86 double shiftedEn =
sqrt(shiftedPx*shiftedPx + shiftedPy*shiftedPy + shiftedPz*shiftedPz + mass*mass);
87 shiftedPFCandidateP4.SetPxPyPzE(shiftedPx, shiftedPy, shiftedPz, shiftedEn);
91 shiftedPFCandidate.
setP4(shiftedPFCandidateP4);
93 shiftedPFCandidates->push_back(shiftedPFCandidate);
96 evt.
put(shiftedPFCandidates);
T getParameter(std::string const &) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
double dR2match_PFCandidate_
bool exists(std::string const ¶meterName) const
checks if a parameter exists
virtual void setP4(const LorentzVector &p4)
set 4-momentum
edm::EDGetTokenT< edm::View< reco::Candidate > > srcShiftedObjects_
edm::View< reco::Candidate > CandidateView
double dRmatch_PFCandidate_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
double deltaR2(const T1 &t1, const T2 &t2)
edm::EDGetTokenT< edm::View< reco::Candidate > > srcUnshiftedObjects_
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
std::vector< objectEntryType > objects_
edm::EDGetTokenT< reco::PFCandidateCollection > srcPFCandidates_
~ShiftedPFCandidateProducerByMatchedObject()
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Particle reconstructed by the particle flow algorithm.
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
static unsigned int const shift
ShiftedPFCandidateProducerByMatchedObject(const edm::ParameterSet &)
void produce(edm::Event &, const edm::EventSetup &)