CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/CommonTools/ParticleFlow/interface/PFCandidateWithSrcPtrFactory.h

Go to the documentation of this file.
00001 #ifndef CommonTools_ParticleFlow_PFCandidateWithSrcPtrFactor_h
00002 #define CommonTools_ParticleFlow_PFCandidateWithSrcPtrFactor_h
00003 
00012 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
00013 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00014 
00015 namespace reco {
00016   class PFCandidateWithSrcPtrFactory : public std::unary_function<reco::PFCandidate, edm::FwdPtr<reco::PFCandidate> > {
00017   public :
00018     reco::PFCandidate operator()( edm::FwdPtr<reco::PFCandidate> const & input ) const {
00019       reco::PFCandidate output( *input );
00020       /* really, what's the point in this ? The one below should be enough
00021       //and the one loop here is a torture of converting Ptr<PFCandidate> to Ptr<Candidate> and back
00022       for ( unsigned int isource = 0; isource < input->numberOfSourceCandidatePtrs(); ++isource ) {
00023         edm::Ptr<reco::PFCandidate> ptr (input->sourceCandidatePtr(isource) );
00024         output.setSourceCandidatePtr( ptr );
00025       }
00026       */
00027       output.setSourceCandidatePtr( input.backPtr() );
00028       return output; 
00029     }
00030   };
00031 }
00032 
00033 #endif