![]() |
![]() |
00001 #ifndef PFProducer_PFConversionAlgo_H 00002 #define PFProducer_PFConversionAlgo_H 00003 00004 #include "DataFormats/ParticleFlowReco/interface/PFBlockFwd.h" 00005 #include "DataFormats/ParticleFlowReco/interface/PFBlock.h" 00006 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h" 00007 #include "TMVA/Reader.h" 00008 #include <iostream> 00009 00010 namespace reco { 00011 class PFCandidate; 00012 } 00013 00014 class PFConversionAlgo { 00015 public: 00016 00017 //constructor 00018 // PFConversionAlgo(const reco::PFBlockRef& blockRef, std::vector<bool>& active); 00019 PFConversionAlgo(); 00020 00021 00022 //destructor 00023 ~PFConversionAlgo(){;}; 00024 00025 //check candidate validity 00026 bool isConversionValidCandidate(const reco::PFBlockRef& blockRef, 00027 std::vector<bool>& active) 00028 { 00029 isvalid_=false; 00030 runPFConversion(blockRef,active); 00031 return isvalid_; 00032 }; 00033 00034 //get electron PFCandidate 00035 std::vector<reco::PFCandidate> conversionCandidates() {return conversionCandidate_;}; 00036 00037 00038 private: 00039 // typedef std::vector<std::pair< unsigned int, std::vector<unsigned int> > > AssMap; 00040 00041 typedef std::multimap<unsigned, std::vector<unsigned> > AssMap; 00042 00043 void runPFConversion(const reco::PFBlockRef& blockRef, std::vector<bool>& active); 00044 00045 //void SetIDOutputs(const reco::PFBlock& block); 00046 00047 bool setLinks(const reco::PFBlockRef& blockRef, AssMap& assToConv, std::vector<bool>& active ); 00048 void setCandidates(const reco::PFBlockRef& blockref, AssMap& assToConv); 00049 void setActive(const reco::PFBlockRef& blockRef, AssMap& assToConv,std::vector<bool>& active ) ; 00050 00051 00052 std::vector<reco::PFCandidate> conversionCandidate_; 00053 bool isvalid_; 00054 }; 00055 #endif