CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_6/src/PhysicsTools/PatUtils/plugins/ShiftedPFCandidateProducerForPFMEtMVA.h

Go to the documentation of this file.
00001 #ifndef PhysicsTools_PatUtils_ShiftedPFCandidateProducerForPFMEtMVA_h
00002 #define PhysicsTools_PatUtils_ShiftedPFCandidateProducerForPFMEtMVA_h
00003 
00021 #include "FWCore/Framework/interface/EDProducer.h"
00022 #include "FWCore/Framework/interface/Event.h"
00023 #include "FWCore/Framework/interface/EventSetup.h"
00024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00025 #include "FWCore/Utilities/interface/InputTag.h"
00026 
00027 #include "DataFormats/Candidate/interface/Candidate.h"
00028 
00029 #include <string>
00030 #include <vector>
00031 
00032 class ShiftedPFCandidateProducerForPFMEtMVA : public edm::EDProducer  
00033 {
00034  public:
00035 
00036   explicit ShiftedPFCandidateProducerForPFMEtMVA(const edm::ParameterSet&);
00037   ~ShiftedPFCandidateProducerForPFMEtMVA();
00038     
00039  private:
00040 
00041   void produce(edm::Event&, const edm::EventSetup&);
00042 
00043   std::string moduleLabel_;
00044 
00045   edm::InputTag srcPFCandidates_; 
00046   edm::InputTag srcUnshiftedObjects_; 
00047   edm::InputTag srcShiftedObjects_; 
00048 
00049   double dRmatch_PFCandidate_;
00050   double dRmatch_Object_;
00051 
00052   struct objectEntryType
00053   {
00054     objectEntryType(const reco::Candidate::LorentzVector& shiftedObjectP4, 
00055                     const reco::Candidate::LorentzVector& unshiftedObjectP4, double dRmatch)
00056       : shiftedObjectP4_(shiftedObjectP4),
00057         unshiftedObjectP4_(unshiftedObjectP4),
00058         dRmatch_(dRmatch),
00059         isValidMatch_(false)
00060     {
00061       if ( unshiftedObjectP4.energy() > 0. ) {
00062         shift_ = (shiftedObjectP4.energy()/unshiftedObjectP4.energy()) - 1.;
00063         isValidMatch_ = true;
00064       }
00065     }
00066     ~objectEntryType() {}
00067     reco::Candidate::LorentzVector shiftedObjectP4_;
00068     reco::Candidate::LorentzVector unshiftedObjectP4_;
00069     double dRmatch_;
00070     double shift_;
00071     bool isValidMatch_;
00072   };
00073 
00074   std::vector<objectEntryType> objects_;
00075 };
00076 
00077 #endif
00078 
00079 
00080  
00081