CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PFCandidateFwdPtrFactory.h
Go to the documentation of this file.
1 #ifndef CommonTools_ParticleFlow_PFCandidateFwdPtrFactory_h
2 #define CommonTools_ParticleFlow_PFCandidateFwdPtrFactory_h
3 
15 
16 namespace reco {
17  class PFCandidateFwdPtrFactory : public std::binary_function<edm::FwdPtr<reco::PFCandidate>, edm::View<reco::PFCandidate>, unsigned int > {
18  public :
20  edm::Ptr<reco::PFCandidate> ptr = view.ptrAt(i);
21  edm::Ptr<reco::PFCandidate> backPtr = ptr;
22  if ( ptr.isNonnull() && ptr.isAvailable() && ptr->numberOfSourceCandidatePtrs() > 0 ) {
23  edm::Ptr<reco::Candidate> basePtr = ptr->sourceCandidatePtr(0);
24  if (basePtr.isNonnull() && basePtr.isAvailable())
25  backPtr = edm::Ptr<reco::PFCandidate>( basePtr );//this cast works only for available stuff
26  }
27  return edm::FwdPtr<reco::PFCandidate>(ptr,backPtr);
28  }
29 
30  };
31 }
32 
33 #endif
int i
Definition: DBlmapReader.cc:9
Ptr< value_type > ptrAt(size_type i) const
bool isAvailable() const
Definition: Ptr.h:259
Creates a FwdPtr&lt;PFCandidate&gt; from an input PFCandidate. If the PFCandidate has a valid sourceCandidate...
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:169
edm::FwdPtr< reco::PFCandidate > operator()(edm::View< reco::PFCandidate > const &view, unsigned int i) const