CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes
pat::eventhypothesis::Looper< T > Class Template Reference

#include <EventHypothesis.h>

Classes

struct  null_deleter
 

Public Member Functions

const reco::Candidatecand () const
 C++ reference to pointed particle. More...
 
const Tget () const
 Accessor as if it was a smart pointer to const T *. More...
 
size_t globalIndex ()
 Index of this item in the full EventHypothesis. More...
 
size_t index () const
 Index of this item among those in the loop. More...
 
bool isTypeOk () const
 test if the type is correct More...
 
 Looper (const EventHypothesis &eh, const ParticleFilter &filter)
 
 Looper (const EventHypothesis &eh, const ParticleFilter *filter)
 
 Looper (const EventHypothesis &eh, const ParticleFilterPtr &filter)
 
 operator bool () const
 
template<typename T2 >
bool operator!= (const Looper< T2 > &other) const
 
const Toperator* () const
 Accessor as if it was a const_iterator on a list of T. More...
 
Looperoperator++ ()
 iteration More...
 
Looperoperator-- ()
 iteration More...
 
const Toperator-> () const
 Accessor as if it was a const_iterator on a list of T. More...
 
template<typename T2 >
bool operator< (const Looper< T2 > &other) const
 
template<typename T2 >
bool operator<= (const Looper< T2 > &other) const
 
template<typename T2 >
bool operator== (const Looper< T2 > &other) const
 returns true if loopers point to the same record More...
 
template<typename T2 >
bool operator> (const Looper< T2 > &other) const
 
template<typename T2 >
bool operator>= (const Looper< T2 > &other) const
 
const CandRefTyperef () const
 EDM Ref to pointed particle. More...
 
Looperreset (int item=0)
 
const std::string & role () const
 Role of pointed item. More...
 
size_t size () const
 Number of particles in the loop. More...
 
Looperskip (int delta)
 skip (might be slow) More...
 
 ~Looper ()
 

Private Types

typedef EventHypothesis::const_iterator const_iterator
 

Private Member Functions

bool assertOk () const
 
void first ()
 
void realSize () const
 

Private Attributes

const EventHypothesiseh_
 
const ParticleFilterPtr filter_
 
const_iterator iter_
 
int num_
 
DynCastCandPtr< Tptr_
 
int total_
 

Detailed Description

template<typename T>
class pat::eventhypothesis::Looper< T >

Definition at line 15 of file EventHypothesis.h.

Member Typedef Documentation

Definition at line 106 of file EventHypothesisLooper.h.

Constructor & Destructor Documentation

template<typename T >
pat::eventhypothesis::Looper< T >::Looper ( const EventHypothesis eh,
const ParticleFilter filter 
)

Looper from EventHypothesis and an external, not owned, ParticleFilter. That is: MyFilter flt; Looper(eh, flt);

Definition at line 122 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::first().

122  :
123  eh_(eh), filter_(ParticleFilterPtr(&filter, typename Looper<T>::null_deleter())), total_(-1)
124  {
125  first();
126  }
boost::shared_ptr< const ParticleFilter > ParticleFilterPtr
const ParticleFilterPtr filter_
template<typename T >
pat::eventhypothesis::Looper< T >::Looper ( const EventHypothesis eh,
const ParticleFilter filter 
)

Looper from EventHypothesis and an internal, owned, ParticleFilter That is: Looper(eh, new MyFilter());

Definition at line 129 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::first().

template<typename T >
pat::eventhypothesis::Looper< T >::Looper ( const EventHypothesis eh,
const ParticleFilterPtr filter 
)

Looper from EventHypothesis and a shared ParticleFilter That is: Looper(eh, ParticleFilterPtr(new MyFilter()));

Definition at line 136 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::first().

template<typename T>
pat::eventhypothesis::Looper< T >::~Looper ( )
inline

Definition at line 56 of file EventHypothesisLooper.h.

56 {}

Member Function Documentation

template<typename T >
bool pat::eventhypothesis::Looper< T >::assertOk ( ) const
private
template<typename T>
const reco::Candidate& pat::eventhypothesis::Looper< T >::cand ( ) const
inline

C++ reference to pointed particle.

Definition at line 73 of file EventHypothesisLooper.h.

73 { return *iter_->second; }
template<typename T >
void pat::eventhypothesis::Looper< T >::first ( )
private
template<typename T>
const T* pat::eventhypothesis::Looper< T >::get ( ) const
inline
template<typename T>
size_t pat::eventhypothesis::Looper< T >::globalIndex ( )
inline

Index of this item in the full EventHypothesis.

Definition at line 76 of file EventHypothesisLooper.h.

76 { return iter_ - eh_.begin(); }
const_iterator begin() const
template<typename T>
size_t pat::eventhypothesis::Looper< T >::index ( ) const
inline

Index of this item among those in the loop.

Definition at line 78 of file EventHypothesisLooper.h.

Referenced by BeautifulSoup.PageElement::insert().

template<typename T>
bool pat::eventhypothesis::Looper< T >::isTypeOk ( ) const
inline

test if the type is correct

Definition at line 66 of file EventHypothesisLooper.h.

References ptr_.

66 { return ptr_.typeOk(iter_->second.get()); }
template<typename T >
pat::eventhypothesis::Looper< T >::operator bool ( ) const

Returns true if you have not run out of the boundaries. It does NOT check if typeOk()

Definition at line 218 of file EventHypothesisLooper.h.

References pat::EventHypothesis::begin(), pat::eventhypothesis::Looper< T >::eh_, pat::EventHypothesis::end(), and pat::eventhypothesis::Looper< T >::iter_.

218  {
219  return (iter_ < eh_.end()) && (iter_ >= eh_.begin());
220  }
const_iterator end() const
const_iterator begin() const
template<typename T>
template<typename T2 >
bool pat::eventhypothesis::Looper< T >::operator!= ( const Looper< T2 > &  other) const
inline

Definition at line 98 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::iter_.

98 { return iter_ != other.iter_; }
template<typename T>
const T& pat::eventhypothesis::Looper< T >::operator* ( void  ) const
inline

Accessor as if it was a const_iterator on a list of T.

Definition at line 59 of file EventHypothesisLooper.h.

References ptr_.

59 { return ptr_.get(iter_->second.get()); }
template<typename T >
Looper< T > & pat::eventhypothesis::Looper< T >::operator++ ( void  )

iteration

Definition at line 152 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::assertOk(), pat::eventhypothesis::Looper< T >::eh_, pat::EventHypothesis::end(), pat::eventhypothesis::Looper< T >::filter_, pat::eventhypothesis::Looper< T >::iter_, pat::eventhypothesis::Looper< T >::num_, and pat::eventhypothesis::Looper< T >::ptr_.

152  {
153  ptr_.clearCache();
154  assert(assertOk());
155  if (iter_ == eh_.end()) return *this;
156  do {
157  ++iter_;
158  if (iter_ == eh_.end()) break;
159  if ((*filter_)(*iter_)) {
160  assert(assertOk());
161  ++num_; return *this;
162  }
163  } while (true);
164  assert(assertOk());
165  return *this;
166  }
const_iterator end() const
const ParticleFilterPtr filter_
template<typename T >
Looper< T > & pat::eventhypothesis::Looper< T >::operator-- ( )

iteration

Definition at line 168 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::assertOk(), pat::EventHypothesis::begin(), pat::eventhypothesis::Looper< T >::eh_, pat::eventhypothesis::Looper< T >::filter_, pat::eventhypothesis::Looper< T >::iter_, pat::eventhypothesis::Looper< T >::num_, and pat::eventhypothesis::Looper< T >::ptr_.

168  {
169  ptr_.clearCache();
170  assert(assertOk());
171  if (num_ < 0) return *this;
172  do {
173  --iter_;
174  if (iter_ < eh_.begin()) { num_ = -1; break; }
175  if ((*filter_)(*iter_)) {
176  assert(assertOk());
177  --num_; return *this;
178  }
179  } while (true);
180  assert(assertOk());
181  return *this;
182  }
const ParticleFilterPtr filter_
const_iterator begin() const
template<typename T>
const T* pat::eventhypothesis::Looper< T >::operator-> ( ) const
inline

Accessor as if it was a const_iterator on a list of T.

Definition at line 61 of file EventHypothesisLooper.h.

References ptr_.

61 { return ptr_.get(iter_->second.get()); }
template<typename T>
template<typename T2 >
bool pat::eventhypothesis::Looper< T >::operator< ( const Looper< T2 > &  other) const
inline

Definition at line 101 of file EventHypothesisLooper.h.

References trackingPlots::other.

101 { return iter_ < other.iter_; }
template<typename T>
template<typename T2 >
bool pat::eventhypothesis::Looper< T >::operator<= ( const Looper< T2 > &  other) const
inline

Definition at line 99 of file EventHypothesisLooper.h.

References trackingPlots::other.

99 { return iter_ <= other.iter_; }
template<typename T>
template<typename T2 >
bool pat::eventhypothesis::Looper< T >::operator== ( const Looper< T2 > &  other) const
inline

returns true if loopers point to the same record

Definition at line 97 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::iter_.

97 { return iter_ == other.iter_; }
template<typename T>
template<typename T2 >
bool pat::eventhypothesis::Looper< T >::operator> ( const Looper< T2 > &  other) const
inline

Definition at line 102 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::iter_.

102 { return iter_ > other.iter_; }
template<typename T>
template<typename T2 >
bool pat::eventhypothesis::Looper< T >::operator>= ( const Looper< T2 > &  other) const
inline

Definition at line 100 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::iter_.

100 { return iter_ >= other.iter_; }
template<typename T >
void pat::eventhypothesis::Looper< T >::realSize ( ) const
private
template<typename T>
const CandRefType& pat::eventhypothesis::Looper< T >::ref ( ) const
inline

EDM Ref to pointed particle.

Definition at line 71 of file EventHypothesisLooper.h.

71 { return iter_->second; }
template<typename T >
Looper< T > & pat::eventhypothesis::Looper< T >::reset ( int  item = 0)

Reset to the start or to any other specific item; negatives count from the end. might be slow, especially with negative items

Definition at line 193 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::assertOk(), pat::eventhypothesis::Looper< T >::eh_, pat::EventHypothesis::end(), pat::eventhypothesis::Looper< T >::first(), pat::eventhypothesis::Looper< T >::iter_, and pat::eventhypothesis::Looper< T >::num_.

193  {
194  assert(assertOk());
195  if (item >= 0) {
196  first();
197  std::advance(this, item);
198  } else {
199  num_ = item + 1; iter_ = eh_.end();
200  std::advance(this, item);
201  }
202  assert(assertOk());
203  return *this;
204  }
const_iterator end() const
template<typename T>
const std::string& pat::eventhypothesis::Looper< T >::role ( ) const
inline

Role of pointed item.

Definition at line 69 of file EventHypothesisLooper.h.

69 { return iter_->first; }
template<typename T>
size_t pat::eventhypothesis::Looper< T >::size ( void  ) const
inline
template<typename T >
Looper< T > & pat::eventhypothesis::Looper< T >::skip ( int  delta)

skip (might be slow)

Definition at line 185 of file EventHypothesisLooper.h.

References pat::eventhypothesis::Looper< T >::assertOk().

185  {
186  assert(assertOk());
187  std::advance(this, delta);
188  assert(assertOk());
189  return *this;
190  }
dbl * delta
Definition: mlp_gen.cc:36

Member Data Documentation

template<typename T>
const EventHypothesis& pat::eventhypothesis::Looper< T >::eh_
private
template<typename T>
const ParticleFilterPtr pat::eventhypothesis::Looper< T >::filter_
private
template<typename T>
const_iterator pat::eventhypothesis::Looper< T >::iter_
private
template<typename T>
int pat::eventhypothesis::Looper< T >::num_
private
template<typename T>
DynCastCandPtr<T> pat::eventhypothesis::Looper< T >::ptr_
mutableprivate
template<typename T>
int pat::eventhypothesis::Looper< T >::total_
mutableprivate