CMS 3D CMS Logo

RefToPtr.h
Go to the documentation of this file.
1 #ifndef DataFormats_Common_RefToPtr_h
2 #define DataFormats_Common_RefToPtr_h
3 
4 /*----------------------------------------------------------------------
5 
6 Ref: A function template for conversion from Ref to Ptr
7 
8 ----------------------------------------------------------------------*/
9 /*
10  ----------------------------------------------------------------------*/
11 
15 
16 namespace edm {
17  template <typename C>
20  typedef typename C::value_type T;
21  if (ref.isNull()) {
22  return Ptr<T>();
23  }
24  if (ref.isTransient()) {
25  return Ptr<T>(ref.get(), ref.key());
26  } else {
27  //Another thread could change this value so get only once
28  EDProductGetter const* getter = ref.productGetter();
29  if (getter) {
30  return Ptr<T>(ref.id(), ref.key(), getter);
31  }
32  }
33  return Ptr<T>(ref.id(), ref.get(), ref.key());
34  }
35 } // namespace edm
36 #endif
edm
HLT enums.
Definition: AlignableModifier.h:19
RefTraits.h
edm::Ref
Definition: AssociativeIterator.h:58
edm::refToPtr
Ptr< typename C::value_type > refToPtr(Ref< C, typename C::value_type, refhelper::FindUsingAdvance< C, typename C::value_type > > const &ref)
Definition: RefToPtr.h:18
edm::EDProductGetter
Definition: EDProductGetter.h:41
Ptr.h
reco::JetExtendedAssociation::value_type
Container::value_type value_type
Definition: JetExtendedAssociation.h:30
edm::Ptr
Definition: AssociationVector.h:31
Ref.h
gen::C
C
Definition: PomwigHadronizer.cc:78
T
long double T
Definition: Basic3DVectorLD.h:48
edm::refhelper::FindUsingAdvance
Definition: RefTraits.h:14