#include <EvtAmplitudeSum.hh>
Inheritance diagram for EvtAmplitudeSum< T >:
Public Member Functions | |
void | addOwnedTerm (EvtComplex c, EvtAmplitude< T > *amp) |
void | addTerm (EvtComplex c, const EvtAmplitude< T > &) |
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 |
|
00023 {}
|
|
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 }
|
|
00041 { 00042 int i; 00043 for(i=0;i<_term.size();i++) { 00044 00045 delete _term[i]; 00046 } 00047 }
|
|
|
|
|
|
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 }
|
|
00082 { return _c[i]; }
|
|
Implements EvtAmplitude< T >. 00050 { 00051 return new EvtAmplitudeSum<T>(*this); 00052 }
|
|
00027 { 00028 EvtComplex ret(0.,0.); 00029 if(p.isValid()) ret = amplitude(p); 00030 return ret; 00031 }
|
|
00083 { return _term[i]; }
|
|
00068 { return _term.size(); } // number of terms
|
|
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 }
|
|
|
|
|