BOSS 7.1.0
BESIII Offline Software System
Loading...
Searching...
No Matches
LabeledCandidateList.h
Go to the documentation of this file.
1#ifndef DCHAIN_LABELEDCANDIDATELIST_H
2#define DCHAIN_LABELEDCANDIDATELIST_H
3// -*- C++ -*-
4//
5// Package: DChain
6// Module: LabeledCandidateList
7//
8// Description: Container of `primary'/`conjugate' subclasses of Candidate
9//
10// Usage:
11// <usage>
12//
13// Author: Simon Patton
14// Created: Fri Sep 13 17:58:11 EDT 1996
15// $Id: LabeledCandidateList.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $
16//
17// Revision history
18//
19// $Log: LabeledCandidateList.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:28 cdj
24// massive class renaming, addition of [] for selection and unit tests
25//
26// Revision 1.1.1.1 2000/12/18 22:16:53 cdj
27// imported DChain
28//
29// Revision 1.14 1998/08/28 05:19:15 sjp
30// Updated to subclass from IndexedLabeled class
31//
32// Revision 1.13 1998/08/21 00:52:42 sjp
33// Modifier to no longer use typedefs
34//
35// Revision 1.12 1998/08/20 19:59:05 sjp
36// Modified to use DChainBoolean
37//
38// Revision 1.11 1998/08/19 20:39:50 sjp
39// Fixed include path for defintions
40//
41// Revision 1.10 1998/04/17 19:11:04 sjp
42// Modified to use latest types
43//
44// Revision 1.9 1997/08/28 06:59:53 sjp
45// Modified files to handle complete templating
46//
47// Revision 1.8 1997/08/26 04:14:15 sjp
48// Made Candidate handling objects into `CandidateClass' Templates
49//
50// Revision 1.7 1997/08/19 23:02:20 sjp
51// Restructured package to be independent of Rock
52//
53// Revision 1.6 1997/08/15 21:32:24 sjp
54// Updated to use <package>/<file>.h include structure.
55// Updated to use bug flags specified in Experiement.h
56//
57// Revision 1.5 1997/01/22 16:27:21 sjp
58// Fixed error in pre-processor labels
59//
60// Revision 1.4 1997/01/21 20:33:52 sjp
61// Changed CPP flags and include because of library reorganization
62//
63// Revision 1.3 1997/01/19 20:28:37 sjp
64// Changed LargeCount to Count
65//
66// Revision 1.2 1996/12/20 21:19:13 sjp
67// Extended pathnames for Include files
68//
69// Revision 1.1 1996/11/04 19:36:00 sjp
70// New file for new `List' module
71//
72
73// system include files
74
75// user include files
76#include "DecayChain/Element/conjugation.h" // enumarator
77#include "DecayChain/List/IndexedLabeledCandidates.h" // superclass
78
79#include <vector>
80
81namespace dchain {
82 template < class CandidateClass > class MuteWholeCandidateItr ;
83 template < class CandidateClass > class WholeCandidateItr ;
84 template < class CandidateClass > class DPartialCandidateItr ;
85}
86
87namespace dchain {
88
89template < class CandidateClass > class LabeledCandidate ;
90
91template < class CandidateClass >
93 : public IndexedLabeledCandidates< CandidateClass >
94{
95 // friend classses and functions
96
97 public:
98 // constants, enums and typedefs
102
104
105 // Constructors and destructor
107 virtual ~LabeledCandidateList() ;
108
109 // member functions
111 iterator begin() ;
112 iterator end() ;
113 void erase( iterator aStart, iterator aFinish ) ;
114
115 // const member functions
116 const LabeledCandidate< CandidateClass >& operator[]( const int aIndex ) const ;
117 virtual bool empty() const = 0 ;
118 virtual bool empty( const conjugation::Label aLabel ) const = 0 ;
119 virtual int size() const = 0 ;
120 virtual int size( const conjugation::Label aLabel ) const = 0 ;
121
122 const_iterator begin() const ;
123 const_partial_iterator begin( const conjugation::Label aLabel ) const ;
124 const_iterator end() const ;
125 const_partial_iterator end( const conjugation::Label aLabel ) const ;
126
127 // static member functions
128
129 protected:
130 // protected member functions
132 virtual void erase_elements( int aStart ,
133 int aFinish ) = 0 ;
134
135 // protected const member functions
136 virtual const LabeledCandidate< CandidateClass >& labeledCandidateClass( const int aIndex ) const = 0 ;
137
138 private:
139 // Constructors and destructor
141
142 // assignment operator(s)
143 const LabeledCandidateList& operator=( const LabeledCandidateList< CandidateClass >& ) ; // stop default
144
145 // private member functions
146
147 // private const member functions
148
149 // data members
150
151 // static data members
152
153} ;
154}
155// inline function definitions
156
157// function definitions
159
160#endif /* DCHAIN_LABELEDCANDIDATELIST_H */
WholeCandidateItr< CandidateClass > const_iterator
PartialCandidateItr< CandidateClass > const_partial_iterator
LabeledCandidate< CandidateClass > value_type
virtual bool empty() const =0
LabeledCandidate< CandidateClass > & operator[](const int aIndex)
virtual int size(const conjugation::Label aLabel) const =0
MuteWholeCandidateItr< CandidateClass > iterator
virtual LabeledCandidate< CandidateClass > & labeledCandidateClass(const int aIndex)=0
virtual void erase_elements(int aStart, int aFinish)=0
virtual const LabeledCandidate< CandidateClass > & labeledCandidateClass(const int aIndex) const =0
void erase(iterator aStart, iterator aFinish)
virtual bool empty(const conjugation::Label aLabel) const =0
virtual int size() const =0