test
Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
DataFormats
Common
interface
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
12
#include "
DataFormats/Common/interface/Ref.h
"
13
#include "
DataFormats/Common/interface/RefTraits.h
"
14
#include "
DataFormats/Common/interface/Ptr.h
"
15
16
namespace
edm {
17
template
<
typename
C>
18
Ptr<typename C::value_type>
refToPtr
(
19
Ref
<
C
,
typename
C::value_type
,
refhelper::FindUsingAdvance<C, typename C::value_type>
>
const
& ref) {
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
}
36
#endif
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:32
edm::Ref
Definition:
AssociativeIterator.h:51
Ptr.h
funct::C
C
Definition:
Factorize.h:141
reco::JetExtendedAssociation::value_type
Container::value_type value_type
Definition:
JetExtendedAssociation.h:30
edm::refhelper::FindUsingAdvance
Definition:
RefTraits.h:13
edm::Ptr
Definition:
AssociationVector.h:30
Ref.h
RefTraits.h
T
long double T
Definition:
Basic3DVectorLD.h:57
Generated for CMSSW Reference Manual by
1.8.5