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)
 
edm::InputTag tag () const
 

Private Attributes

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

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),
38  failIfNotFound_(failIfNotFound),
39  notFoundWarn_(notFoundWarn){}
const T * currentColl_
Definition: CollHandle.h:98
bool notFoundAlreadyWarned_
Definition: CollHandle.h:107
const edm::InputTag tag_
Definition: CollHandle.h:94
bool notFoundWarn_
Definition: CollHandle.h:115
const T emptyColl_
Definition: CollHandle.h:103
bool failIfNotFound_
Definition: CollHandle.h:111

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 83 of file CollHandle.h.

83 { return *currentColl_;}
const T * currentColl_
Definition: CollHandle.h:98
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 78 of file CollHandle.h.

78 { return currentColl_;}
const T * currentColl_
Definition: CollHandle.h:98
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::getByLabel() 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 51 of file CollHandle.h.

Referenced by EcalSelectiveReadoutValidation::readAllCollections().

51  {
52  // try{
53  edm::Handle<T> hColl;
54  event.getByLabel(tag_, hColl);
55 
56  //If we must be tolerant to product absence, then
57  //we must check validaty before calling Handle::operator*
58  //to prevent exception throw:
59  if(!failIfNotFound_ // product-not-found tolerant mode
60  && !hColl.isValid()){// and the product was not found
61  if(notFoundWarn_
62  && !notFoundAlreadyWarned_){//warning logged only once
63  edm::LogWarning("ProductNotFound") << tag_
64  << " product "
65  "of type '" << typeid(T).name() << "' was not found!";
67  }
69  } else {
70  currentColl_ = &(*hColl);
71  }
72  }
const T * currentColl_
Definition: CollHandle.h:98
bool notFoundAlreadyWarned_
Definition: CollHandle.h:107
bool isValid() const
Definition: HandleBase.h:76
const edm::InputTag tag_
Definition: CollHandle.h:94
bool notFoundWarn_
Definition: CollHandle.h:115
const T emptyColl_
Definition: CollHandle.h:103
long double T
bool failIfNotFound_
Definition: CollHandle.h:111
template<class T>
edm::InputTag CollHandle< T >::tag ( ) const
inline

Definition at line 85 of file CollHandle.h.

85 { return tag_; }
const edm::InputTag tag_
Definition: CollHandle.h:94

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 98 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 103 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 111 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 107 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 115 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 94 of file CollHandle.h.

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