Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

EvtAmplitudeSum< T > Class Template Reference

#include <EvtAmplitudeSum.hh>

Inheritance diagram for EvtAmplitudeSum< T >:

EvtAmplitude< T > List of all members.

Public Member Functions

void addOwnedTerm (EvtComplex c, EvtAmplitude< T > *amp)
void addTerm (EvtComplex c, const EvtAmplitude< T > &amp)
EvtComplex c (int i) const
virtual EvtAmplitude< T > * clone () const
EvtComplex evaluate (const T &p) const
 EvtAmplitudeSum (const EvtAmplitudeSum< T > &other)
 EvtAmplitudeSum ()
EvtAmplitude< T > * getTerm (int i) const
int nTerms () const
void print () const
virtual ~EvtAmplitudeSum ()

Protected Member Functions

virtual EvtComplex amplitude (const T &p) const

Private Attributes

std::vector< EvtComplex_c
std::vector< EvtAmplitude<
T > * > 
_term

template<class T>
class EvtAmplitudeSum< T >


Constructor & Destructor Documentation

template<class T>
EvtAmplitudeSum< T >::EvtAmplitudeSum  )  [inline]
 

00023 {}

template<class T>
EvtAmplitudeSum< T >::EvtAmplitudeSum const EvtAmplitudeSum< T > &  other  )  [inline]
 

00025     : EvtAmplitude<T>(other)
00026   {
00027     int i;
00028     for(i=0;i<other.nTerms();i++) {
00029       
00030       EvtComplex c = other.c(i);      
00031       _c.push_back(c);
00032       EvtAmplitude<T>* amp = other.getTerm(i);
00033       assert(amp);
00034       EvtAmplitude<T>* amp1 = amp->clone();
00035       assert(amp1);
00036       _term.push_back(amp1);
00037     }
00038   }

template<class T>
virtual EvtAmplitudeSum< T >::~EvtAmplitudeSum  )  [inline, virtual]
 

00041   {
00042     int i;
00043     for(i=0;i<_term.size();i++) {
00044       
00045       delete _term[i];
00046     }
00047   }  


Member Function Documentation

template<class T>
void EvtAmplitudeSum< T >::addOwnedTerm EvtComplex  c,
EvtAmplitude< T > *  amp
[inline]
 

00062   {
00063     assert(amp);
00064     _c.push_back(c);
00065     _term.push_back(amp);
00066   }

template<class T>
void EvtAmplitudeSum< T >::addTerm EvtComplex  c,
const EvtAmplitude< T > &  amp
[inline]
 

00056   {
00057     _c.push_back(c);
00058     _term.push_back(amp.clone());
00059   }

template<class T>
virtual EvtComplex EvtAmplitudeSum< T >::amplitude const T &  p  )  const [inline, protected, virtual]
 

Implements EvtAmplitude< T >.

00088   {
00089     if(_term.size() == 0) 
00090       printf("Warning: amplitude sum has zero terms\n");
00091     
00092     EvtComplex value = 0.;
00093     int i;
00094     for(i=0;i<_term.size();i++) {
00095     
00096       value+=_c[i]*_term[i]->evaluate(p);    
00097     }    
00098     return value;
00099   }

template<class T>
EvtComplex EvtAmplitudeSum< T >::c int  i  )  const [inline]
 

00082 { return _c[i]; }

template<class T>
virtual EvtAmplitude<T>* EvtAmplitudeSum< T >::clone  )  const [inline, virtual]
 

Implements EvtAmplitude< T >.

00050   {
00051     return new EvtAmplitudeSum<T>(*this);
00052   }

template<class T>
EvtComplex EvtAmplitude< T >::evaluate const T &  p  )  const [inline, inherited]
 

00027   {
00028     EvtComplex ret(0.,0.);
00029     if(p.isValid()) ret = amplitude(p);
00030     return ret;
00031   }

template<class T>
EvtAmplitude<T>* EvtAmplitudeSum< T >::getTerm int  i  )  const [inline]
 

00083 { return _term[i]; }

template<class T>
int EvtAmplitudeSum< T >::nTerms  )  const [inline]
 

00068 { return _term.size(); }  // number of terms

template<class T>
void EvtAmplitudeSum< T >::print void   )  const [inline]
 

00070                      {
00071 
00072     int N = nTerms();
00073     printf("Amplitude has %d terms\n",N);
00074     int i;
00075     for(i=0;i<N;i++) {
00076       printf("c%d = (%f,%f)\n",i,real(_c[i]),imag(_c[i]));
00077       assert(_term[i]);
00078     }
00079   }


Member Data Documentation

template<class T>
std::vector<EvtComplex> EvtAmplitudeSum< T >::_c [private]
 

template<class T>
std::vector<EvtAmplitude<T>*> EvtAmplitudeSum< T >::_term [private]
 


The documentation for this class was generated from the following file:
Generated on Wed Feb 2 16:03:10 2011 for BOSS6.5.5 by  doxygen 1.3.9.1