CGEM BOSS 6.6.5.g
BESIII Offline Software System
Loading...
Searching...
No Matches
CombinatoricLoop.h
Go to the documentation of this file.
1#ifndef DCHAIN_COMBINATORICLOOP_H
2#define DCHAIN_COMBINATORICLOOP_H
3// -*- C++ -*-
4//
5// Package: DChain
6// Module: CombinatoricLoop
7//
8// Description: return 'begin' and 'end' of loop during Combinatoric generation
9//
10// Usage:
11// <usage>
12//
13// Author: Simon Patton
14// Created: Mon Oct 21 10:06:45 EDT 1996
15// $Id: CombinatoricLoop.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $
16//
17// Revision history
18//
19// $Log: CombinatoricLoop.h,v $
20// Revision 1.1.1.1 2009/03/03 06:06:56 maqm
21// first import of DecayChain
22//
23// Revision 1.1 2006/01/11 20:28:22 cdj
24// massive class renaming, addition of [] for selection and unit tests
25//
26// Revision 1.2 2002/06/19 20:34:30 cleo3
27// added missing typename
28//
29// Revision 1.1.1.1 2000/12/18 22:16:52 cdj
30// imported DChain
31//
32// Revision 1.12 1998/08/19 20:38:01 sjp
33// Fixed include path for defintions
34//
35// Revision 1.11 1998/06/30 23:41:29 sjp
36// Moved ctor so that SunOS5 would compile
37//
38// Revision 1.10 1998/05/01 20:19:10 sjp
39// Added necessary include file from STLUtility
40//
41// Revision 1.9 1998/04/17 19:11:01 sjp
42// Modified to use latest types
43//
44// Revision 1.8 1997/08/28 06:59:49 sjp
45// Modified files to handle complete templating
46//
47// Revision 1.7 1997/08/19 16:18:25 sjp
48// Improved handling of STL containers
49//
50// Revision 1.6 1997/08/15 21:32:14 sjp
51// Updated to use <package>/<file>.h include structure.
52// Updated to use bug flags specified in Experiement.h
53//
54// Revision 1.5 1997/01/31 20:17:05 sjp
55// Modified to use the new `bug' include files
56//
57// Revision 1.4 1997/01/22 16:27:14 sjp
58// Fixed error in pre-processor labels
59//
60// Revision 1.3 1997/01/21 20:33:43 sjp
61// Changed CPP flags and include because of library reorganization
62//
63// Revision 1.2 1996/12/20 21:19:06 sjp
64// Extended pathnames for Include files
65//
66// Revision 1.1 1996/11/04 19:35:52 sjp
67// New file for new `List' module
68//
69
70// system include files
71#include <assert.h>
72
73// user include files
74#include "DecayChain/List/CandidateList.h" // for iterator declarations
75
76// STL include files
77#include <vector>
78
79// forward declarations
80namespace dchain {
81template < class CandidateClass > class CombinatoricLoop ;
82
83//
84// Note: Most of the methods are included in the declarations because
85// there are too many problems with the g++ compiler to make is
86// sensible to have separate definitions
87
88#ifndef _combinatoricloop_vector_
89// The following CPP macro is used to avoid having to typedef
90// a map in the class. Why? Because things can get messy, at
91// least in the g++ compiler as the typedef can cause instantiation
92// when not all the necessary information is available!
93#define _combinatoricloop_vector_ std::vector< CombinatoricLoop< CandidateClass >* >
94#endif
95
96template< class CandidateClass >
98{
99 // friend classses and functions
100
101 public:
102
103 // constants, enums and typedefs
104
105 // Constructors and destructor
106 // Due to some `feature' of CC on SunOS5 the constructor has been
107 // moved to be the last declaration in the public area.
108 virtual ~CombinatoricLoop();
109
110 // member functions
112
113 // const member functions
116
119 _combinatoricloop_vector_& aLoopList ) ;
120
121 // static member functions
122
123 protected:
124 // protected member functions
125
126 // protected const member functions
127
128 private:
129 // Constructors and destructor
130 CombinatoricLoop() ; // stop default
131 CombinatoricLoop( const CombinatoricLoop< CandidateClass >& ) ; // stop default
132
133 // assignment operator(s)
134 const CombinatoricLoop& operator=( const CombinatoricLoop< CandidateClass >& ) ; // stop default
135
136 // private member functions
137 void adjustEnd() ;
138
139 // private const member functions
140
141 // data members
145 typename _combinatoricloop_vector_::const_iterator* m_previousDuplicate ;
146
147 // static data members
148
149};
150
151// inline function definitions
152}
153
154// function definitions
156
157#endif /* DCHAIN_COMBINATORICLOOP_H */
#define _combinatoricloop_vector_
const dchain::CandidateList< CandidateClass >::const_partial_iterator partial_end() const
const dchain::CandidateList< CandidateClass >::const_partial_iterator partial_begin() const
void setCurrentIterator(typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aIterator)