dchain::CombinatoricLoop< CandidateClass > Class Template Reference

#include <CombinatoricLoop.h>

List of all members.

Public Member Functions

virtual ~CombinatoricLoop ()
void setCurrentIterator (typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aIterator)
const dchain::CandidateList<
CandidateClass >::const_partial_iterator 
partial_begin () const
const dchain::CandidateList<
CandidateClass >::const_partial_iterator 
partial_end () const
 CombinatoricLoop (const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aBegin, const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aEnd, _combinatoricloop_vector_ &aLoopList)

Private Member Functions

 CombinatoricLoop ()
 CombinatoricLoop (const CombinatoricLoop< CandidateClass > &)
const CombinatoricLoopoperator= (const CombinatoricLoop< CandidateClass > &)
void adjustEnd ()

Private Attributes

dchain::CandidateList< CandidateClass
>::const_partial_iterator 
m_beginIterator
dchain::CandidateList< CandidateClass
>::const_partial_iterator 
m_endIterator
dchain::CandidateList< CandidateClass
>::const_partial_iterator 
m_currentIterator
_combinatoricloop_vector_::const_iterator * m_previousDuplicate


Detailed Description

template<class CandidateClass>
class dchain::CombinatoricLoop< CandidateClass >

Definition at line 97 of file CombinatoricLoop.h.


Constructor & Destructor Documentation

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::~CombinatoricLoop (  )  [virtual]

Definition at line 117 of file CombinatoricLoop.cc.

References dchain::CombinatoricLoop< CandidateClass >::m_previousDuplicate.

00118 {
00119    delete m_previousDuplicate ;
00120 }

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop ( const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &  aBegin,
const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &  aEnd,
_combinatoricloop_vector_ &  aLoopList 
)

Definition at line 94 of file CombinatoricLoop.cc.

References dchain::CombinatoricLoop< CandidateClass >::m_beginIterator, and dchain::CombinatoricLoop< CandidateClass >::m_previousDuplicate.

00096                                                                            :
00097    m_beginIterator( aBegin ) ,
00098    m_endIterator( aEnd ) ,
00099    m_previousDuplicate( 0 )
00100 {
00101    typename _combinatoricloop_vector_::const_iterator lastLoop( aLoopList.begin() ) ;
00102    typename _combinatoricloop_vector_::const_iterator loopToCheck( aLoopList.end() ) ;
00103    while ( loopToCheck != lastLoop ) {
00104       --loopToCheck ;
00105       if ( ( (*(*loopToCheck)).m_beginIterator ) == m_beginIterator ) {
00106          m_previousDuplicate = new typename _combinatoricloop_vector_::const_iterator( loopToCheck ) ;
00107          (*(*(*m_previousDuplicate))).adjustEnd() ;
00108 //
00109 // only require one match, so prepare to terminate search for duplicate
00110 //
00111          loopToCheck = lastLoop ;
00112       }
00113    } 
00114 }

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop (  )  [private]

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop ( const CombinatoricLoop< CandidateClass > &   )  [private]


Member Function Documentation

template<class CandidateClass>
void dchain::CombinatoricLoop< CandidateClass >::adjustEnd (  )  [private]

Definition at line 160 of file CombinatoricLoop.cc.

References dchain::CombinatoricLoop< CandidateClass >::m_beginIterator, dchain::CombinatoricLoop< CandidateClass >::m_endIterator, and dchain::CombinatoricLoop< CandidateClass >::m_previousDuplicate.

00161 {
00162    if ( m_beginIterator != m_endIterator ) {
00163       --m_endIterator ;
00164       if ( 0 != m_previousDuplicate ) {
00165          (*(*(*m_previousDuplicate))).adjustEnd() ;
00166       }     
00167    }
00168 }

template<class CandidateClass>
const CombinatoricLoop& dchain::CombinatoricLoop< CandidateClass >::operator= ( const CombinatoricLoop< CandidateClass > &   )  [private]

template<class CandidateClass>
const dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::partial_begin (  )  const

Definition at line 144 of file CombinatoricLoop.cc.

References dchain::CombinatoricLoop< CandidateClass >::m_beginIterator, dchain::CombinatoricLoop< CandidateClass >::m_currentIterator, and dchain::CombinatoricLoop< CandidateClass >::m_previousDuplicate.

Referenced by dchain::FillDecayList< DecayClass, CandidateClass >::fill().

00145 {
00146    if ( 0 == m_previousDuplicate ) {
00147       return( m_beginIterator ) ;
00148    }
00149    typename dchain::CandidateList< CandidateClass >::const_partial_iterator newBegin( ( (*(*(*m_previousDuplicate))).m_currentIterator ) ) ;
00150    return( ++newBegin ) ;
00151 }

template<class CandidateClass>
const dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::partial_end (  )  const

Definition at line 154 of file CombinatoricLoop.cc.

References dchain::CombinatoricLoop< CandidateClass >::m_endIterator.

Referenced by dchain::FillDecayList< DecayClass, CandidateClass >::fill().

00155 {
00156    return( m_endIterator ) ;
00157 }

template<class CandidateClass>
void dchain::CombinatoricLoop< CandidateClass >::setCurrentIterator ( typename dchain::CandidateList< CandidateClass >::const_partial_iterator &  aIterator  ) 

Definition at line 134 of file CombinatoricLoop.cc.

References dchain::CombinatoricLoop< CandidateClass >::m_currentIterator.

Referenced by dchain::FillDecayList< DecayClass, CandidateClass >::fill().

00135 {
00136    m_currentIterator = aIterator ;
00137 }


Member Data Documentation

template<class CandidateClass>
dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::m_beginIterator [private]

Definition at line 142 of file CombinatoricLoop.h.

Referenced by dchain::CombinatoricLoop< CandidateClass >::adjustEnd(), dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop(), and dchain::CombinatoricLoop< CandidateClass >::partial_begin().

template<class CandidateClass>
dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::m_currentIterator [private]

Definition at line 144 of file CombinatoricLoop.h.

Referenced by dchain::CombinatoricLoop< CandidateClass >::partial_begin(), and dchain::CombinatoricLoop< CandidateClass >::setCurrentIterator().

template<class CandidateClass>
dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::m_endIterator [private]

Definition at line 143 of file CombinatoricLoop.h.

Referenced by dchain::CombinatoricLoop< CandidateClass >::adjustEnd(), and dchain::CombinatoricLoop< CandidateClass >::partial_end().

template<class CandidateClass>
_combinatoricloop_vector_::const_iterator* dchain::CombinatoricLoop< CandidateClass >::m_previousDuplicate [private]

Definition at line 145 of file CombinatoricLoop.h.

Referenced by dchain::CombinatoricLoop< CandidateClass >::adjustEnd(), dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop(), dchain::CombinatoricLoop< CandidateClass >::partial_begin(), and dchain::CombinatoricLoop< CandidateClass >::~CombinatoricLoop().


Generated on Tue Nov 29 23:36:26 2016 for BOSS_7.0.2 by  doxygen 1.4.7