EvtAmplitudeSum< T > Class Template Reference

#include <EvtAmplitudeSum.hh>

Inheritance diagram for EvtAmplitudeSum< T >:

EvtAmplitude< T > List of all members.

Public Member Functions

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

Protected Member Functions

virtual EvtComplex amplitude (const T &p) const

Private Attributes

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

Detailed Description

template<class T>
class EvtAmplitudeSum< T >

Definition at line 19 of file EvtAmplitudeSum.hh.


Constructor & Destructor Documentation

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

Definition at line 23 of file EvtAmplitudeSum.hh.

00023 {}

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

Definition at line 24 of file EvtAmplitudeSum.hh.

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]

Definition at line 40 of file EvtAmplitudeSum.hh.

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]

Definition at line 61 of file EvtAmplitudeSum.hh.

Referenced by EvtPto3PAmpFactory::processAmp().

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]

Definition at line 55 of file EvtAmplitudeSum.hh.

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 >.

Definition at line 87 of file EvtAmplitudeSum.hh.

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]

Definition at line 82 of file EvtAmplitudeSum.hh.

Referenced by EvtAmplitudeSum< EvtDalitzPoint >::addOwnedTerm(), EvtAmplitudeSum< EvtDalitzPoint >::addTerm(), and EvtAmplitudeSum< EvtDalitzPoint >::EvtAmplitudeSum().

00082 { return _c[i]; }

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

Implements EvtAmplitude< T >.

Definition at line 49 of file EvtAmplitudeSum.hh.

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

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

Definition at line 26 of file EvtAmplitude.hh.

Referenced by EvtPto3PAmp::amplitude(), EvtAmplitudeSum< EvtDalitzPoint >::amplitude(), and EvtKstarstargamma::decay().

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]

Definition at line 83 of file EvtAmplitudeSum.hh.

00083 { return _term[i]; }

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

Definition at line 68 of file EvtAmplitudeSum.hh.

Referenced by EvtAmplitudeSum< EvtDalitzPoint >::print().

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

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

Definition at line 70 of file EvtAmplitudeSum.hh.

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]

Definition at line 103 of file EvtAmplitudeSum.hh.

Referenced by EvtAmplitudeSum< EvtDalitzPoint >::addOwnedTerm(), EvtAmplitudeSum< EvtDalitzPoint >::addTerm(), EvtAmplitudeSum< EvtDalitzPoint >::amplitude(), EvtAmplitudeSum< EvtDalitzPoint >::c(), EvtAmplitudeSum< EvtDalitzPoint >::EvtAmplitudeSum(), and EvtAmplitudeSum< EvtDalitzPoint >::print().

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

Definition at line 104 of file EvtAmplitudeSum.hh.

Referenced by EvtAmplitudeSum< EvtDalitzPoint >::addOwnedTerm(), EvtAmplitudeSum< EvtDalitzPoint >::addTerm(), EvtAmplitudeSum< EvtDalitzPoint >::amplitude(), EvtAmplitudeSum< EvtDalitzPoint >::EvtAmplitudeSum(), EvtAmplitudeSum< EvtDalitzPoint >::getTerm(), EvtAmplitudeSum< EvtDalitzPoint >::nTerms(), EvtAmplitudeSum< EvtDalitzPoint >::print(), and EvtAmplitudeSum< EvtDalitzPoint >::~EvtAmplitudeSum().


Generated on Tue Nov 29 23:18:51 2016 for BOSS_7.0.2 by  doxygen 1.4.7