00001 #ifndef DCHAIN_INDEXEDLABELEDPARTICLES_H 00002 #define DCHAIN_INDEXEDLABELEDPARTICLES_H 00003 // -*- C++ -*- 00004 // 00005 // Package: DChain 00006 // Module: IndexedLabeledParticles 00007 // 00008 // Description: Interface used by Stone iterators 00009 // 00010 // Usage: 00011 // <usage> 00012 // 00013 // Author: Simon Patton 00014 // Created: Fri Sep 13 17:58:11 EDT 1996 00015 // $Id: IndexedLabeledParticles.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $ 00016 // 00017 // Revision history 00018 // 00019 // $Log: IndexedLabeledParticles.h,v $ 00020 // Revision 1.1.1.1 2009/03/03 06:06:56 maqm 00021 // first import of DecayChain 00022 // 00023 // Revision 1.1 2006/01/11 20:28:28 cdj 00024 // massive class renaming, addition of [] for selection and unit tests 00025 // 00026 // Revision 1.1.1.1 2000/12/18 22:16:53 cdj 00027 // imported DChain 00028 // 00029 // Revision 1.1 1998/08/28 05:17:28 sjp 00030 // New class for iterator access 00031 // 00032 00033 // system include files 00034 00035 // user include files 00036 #include "DecayChain/List/LabeledCandidateList.h" // superclass 00037 00038 // forward declarations 00039 00040 namespace dchain { 00041 template < class T > class LabeledParticle ; 00042 template < class T > class MuteWholeItr ; 00043 template < class T > class WholeItr ; 00044 template < class T > class PartialItr ; 00045 00046 template < class T , class CandidateClass > 00047 class IndexedLabeledParticles 00048 : public LabeledCandidateList< CandidateClass > 00049 { 00050 // friend classses and functions 00051 friend class MuteWholeItr< T > ; 00052 friend class WholeItr< T > ; 00053 friend class PartialItr< T > ; 00054 00055 public: 00056 // constants, enums and typedefs 00057 00058 // Constructors and destructor 00059 IndexedLabeledParticles() {} 00060 virtual ~IndexedLabeledParticles() {} 00061 00062 // member functions 00063 00064 // const member functions 00065 00066 // static member functions 00067 00068 protected: 00069 // protected member functions 00070 virtual LabeledParticle< T >& labeledParticleClass( const int aIndex ) = 0 ; 00071 00072 // protected const member functions 00073 virtual const LabeledParticle< T >& labeledParticleClass( const int aIndex ) const = 0 ; 00074 00075 private: 00076 // Constructors and destructor 00077 IndexedLabeledParticles( const IndexedLabeledParticles< T , CandidateClass >& ) ; // stop default 00078 00079 // assignment operator(s) 00080 const IndexedLabeledParticles& operator=( const IndexedLabeledParticles< T , CandidateClass>& ) ; // stop default 00081 00082 // private member functions 00083 00084 // private const member functions 00085 00086 // data members 00087 00088 // static data members 00089 00090 } ; 00091 } 00092 // inline function definitions 00093 00094 #endif // DCHAIN_INDEXEDLABELEDPARTICLES_H 00095