CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
CollHandle< T > Class Template Reference

#include <CollHandle.h>

Public Member Functions

 CollHandle (const edm::InputTag &tag, bool failIfNotFound=true, bool notFoundWarn=true)
 
const Toperator* () const
 
const Toperator-> () const
 
void read (const edm::Event &event)
 
void setToken (edm::ConsumesCollector &collector)
 
edm::InputTag tag () const
 

Private Attributes

const TcurrentColl_
 
const T emptyColl_
 
bool failIfNotFound_
 
bool notFoundAlreadyWarned_
 
bool notFoundWarn_
 
const edm::InputTag tag_
 
edm::EDGetTokenT< Ttoken_
 

Detailed Description

template<class T>
class CollHandle< T >

Utilitity class for handling an EDM data collection. This class acts as a wrapper of the EDM collection.

An InputTag indentifying the collection is passed to the constructor. The collection is retrieved from the event by a call to the read() method. The CollHandle class instance can then be used as a pointer to the retrieved collection.

Absence of the collection from the event can be optionnaly tolerated: see failIfNotFound parameter of the CollHandle() constructor.

In case the collection was not (yet) retrieved from the collection, it acts as a pointers to an empty collection.

The templace parameter T specifies the type of the data collection.

Definition at line 25 of file CollHandle.h.

Constructor & Destructor Documentation

template<class T>
CollHandle< T >::CollHandle ( const edm::InputTag tag,
bool  failIfNotFound = true,
bool  notFoundWarn = true 
)
inline

Constructs a CollHandle.

Parameters
tagInputTag identifying the data collection
failIfNotFoundpass true if the absence of the collection in the event must be considered as an error. See read() method.

Definition at line 33 of file CollHandle.h.

35  : tag_(tag),
36  token_(),
39  failIfNotFound_(failIfNotFound),
40  notFoundWarn_(notFoundWarn){}
const T * currentColl_
Definition: CollHandle.h:112
bool notFoundAlreadyWarned_
Definition: CollHandle.h:121
const edm::InputTag tag_
Definition: CollHandle.h:105
bool notFoundWarn_
Definition: CollHandle.h:129
edm::EDGetTokenT< T > token_
Definition: CollHandle.h:108
const T emptyColl_
Definition: CollHandle.h:117
bool failIfNotFound_
Definition: CollHandle.h:125

Member Function Documentation

template<class T>
const T& CollHandle< T >::operator* ( void  ) const
inline

Gets the collection retrieved by read() method. If the collection was absent from the event an empty collection is returned.

Definition at line 94 of file CollHandle.h.

94 { return *currentColl_;}
const T * currentColl_
Definition: CollHandle.h:112
template<class T>
const T* CollHandle< T >::operator-> ( ) const
inline

Accessor to a member of the collection retrieved by read method(). Considering h a CollHandle instance, h->f() is equivalent to (*h).f().

Definition at line 89 of file CollHandle.h.

89 { return currentColl_;}
const T * currentColl_
Definition: CollHandle.h:112
template<class T>
void CollHandle< T >::read ( const edm::Event event)
inline

Retrieves the collection from the event. If failIfNotFound is true and the collection is not found, then an edm::Exception is thrown. For other case of exception throw see edm::Event::getByToken() method documentation. If failIfNotFound is false and the collection is not found, an empty collection is used; a warn message will be logged the first time the collection is not found.

Parameters
eventthe EDM event the collection must be retrieved from.

Definition at line 62 of file CollHandle.h.

Referenced by EcalSelectiveReadoutValidation::readAllCollections().

62  {
63  // try{
64  edm::Handle<T> hColl;
65  event.getByToken(token_, hColl);
66 
67  //If we must be tolerant to product absence, then
68  //we must check validaty before calling Handle::operator*
69  //to prevent exception throw:
70  if(!failIfNotFound_ // product-not-found tolerant mode
71  && !hColl.isValid()){// and the product was not found
72  if(notFoundWarn_
73  && !notFoundAlreadyWarned_){//warning logged only once
74  edm::LogWarning("ProductNotFound") << tag_
75  << " product "
76  "of type '" << typeid(T).name() << "' was not found!";
78  }
80  } else {
81  currentColl_ = &(*hColl);
82  }
83  }
const T * currentColl_
Definition: CollHandle.h:112
bool notFoundAlreadyWarned_
Definition: CollHandle.h:121
bool isValid() const
Definition: HandleBase.h:76
const edm::InputTag tag_
Definition: CollHandle.h:105
bool notFoundWarn_
Definition: CollHandle.h:129
edm::EDGetTokenT< T > token_
Definition: CollHandle.h:108
const T emptyColl_
Definition: CollHandle.h:117
long double T
bool failIfNotFound_
Definition: CollHandle.h:125
template<class T>
void CollHandle< T >::setToken ( edm::ConsumesCollector collector)
inline

Definition at line 49 of file CollHandle.h.

Referenced by EcalSelectiveReadoutValidation::EcalSelectiveReadoutValidation().

50  {
51  token_ = collector.consumes<T>(tag_);
52  }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
const edm::InputTag tag_
Definition: CollHandle.h:105
edm::EDGetTokenT< T > token_
Definition: CollHandle.h:108
long double T
template<class T>
edm::InputTag CollHandle< T >::tag ( ) const
inline

Definition at line 96 of file CollHandle.h.

Referenced by Inspector.Inspector::SetTag().

96 { return tag_; }
const edm::InputTag tag_
Definition: CollHandle.h:105

Member Data Documentation

template<class T>
const T* CollHandle< T >::currentColl_
private

Pointer to the last read collection, points to emptColl be default

Definition at line 112 of file CollHandle.h.

Referenced by CollHandle< EEDigiCollection >::operator*(), CollHandle< EEDigiCollection >::operator->(), and CollHandle< EEDigiCollection >::read().

template<class T>
const T CollHandle< T >::emptyColl_
private

An empty collection used as default when the collection was not retrieved from the event.

Definition at line 117 of file CollHandle.h.

Referenced by CollHandle< EEDigiCollection >::read().

template<class T>
bool CollHandle< T >::failIfNotFound_
private

Switch for collection absence toleration.

Definition at line 125 of file CollHandle.h.

Referenced by CollHandle< EEDigiCollection >::read().

template<class T>
bool CollHandle< T >::notFoundAlreadyWarned_
private

Used to emit warn message in case of collection absence only once.

Definition at line 121 of file CollHandle.h.

Referenced by CollHandle< EEDigiCollection >::read().

template<class T>
bool CollHandle< T >::notFoundWarn_
private

Switch for the warning in case of not found collection

Definition at line 129 of file CollHandle.h.

Referenced by CollHandle< EEDigiCollection >::read().

template<class T>
const edm::InputTag CollHandle< T >::tag_
private

tag identifying the data collecion

Definition at line 105 of file CollHandle.h.

Referenced by CollHandle< EEDigiCollection >::read(), CollHandle< EEDigiCollection >::setToken(), and CollHandle< EEDigiCollection >::tag().

template<class T>
edm::EDGetTokenT<T> CollHandle< T >::token_
private