10#ifndef EVT_AMPLITUDE_SUM_HH
11#define EVT_AMPLITUDE_SUM_HH
24 for ( i = 0; i < other.nTerms(); i++ )
33 _term.push_back( amp1 );
39 for ( i = 0; i < _term.size(); i++ ) {
delete _term[i]; }
46 _term.push_back( amp.
clone() );
52 _term.push_back( amp );
55 int nTerms()
const {
return _term.size(); }
60 printf(
"Amplitude has %d terms\n", N );
62 for ( i = 0; i < N; i++ )
64 printf(
"c%d = (%f,%f)\n", i,
real( _c[i] ),
imag( _c[i] ) );
74 if ( _term.size() == 0 ) printf(
"Warning: amplitude sum has zero terms\n" );
78 for ( i = 0; i < _term.size(); i++ ) { value += _c[i] * _term[i]->evaluate( p ); }
83 std::vector<EvtComplex> _c;
84 std::vector<EvtAmplitude<T>*> _term;
double imag(const EvtComplex &c)
virtual EvtAmplitude< T > * clone() const
EvtAmplitude< T > * getTerm(int i) const
virtual ~EvtAmplitudeSum()
void addTerm(EvtComplex c, const EvtAmplitude< T > &)
EvtAmplitudeSum(const EvtAmplitudeSum< T > &other)
void addOwnedTerm(EvtComplex c, EvtAmplitude< T > *amp)
virtual EvtComplex amplitude(const T &p) const
EvtComplex c(int i) const
virtual EvtAmplitude< T > * clone() const =0