StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EvtAmplitude.hh
1 /*******************************************************************************
2  * Project: BaBar detector at the SLAC PEP-II B-factory
3  * Package: EvtGenBase
4  * File: $Id: EvtAmplitude.hh,v 1.1 2016/09/23 18:37:29 jwebb Exp $
5  * Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
6  *
7  * Copyright (C) 2002 Caltech
8  *******************************************************************************/
9 
10 // Complex-valued amplitude
11 
12 #ifndef EVT_AMPLITUDE_HH
13 #define EVT_AMPLITUDE_HH
14 
15 #include "EvtGenBase/EvtComplex.hh"
16 
17 template <class T>
18 class EvtAmplitude {
19 public:
20 
21  EvtAmplitude() {}
22  EvtAmplitude(const EvtAmplitude&) {}
23  virtual ~EvtAmplitude() {}
24  virtual EvtAmplitude<T>* clone() const = 0;
25 
26  EvtComplex evaluate(const T& p) const
27  {
28  EvtComplex ret(0.,0.);
29  if(p.isValid()) ret = amplitude(p);
30  return ret;
31  }
32 
33 protected:
34 
35  // Derive in subclasses to define amplitude computation
36  // for a fully constructed amplitude object.
37 
38  virtual EvtComplex amplitude(const T&) const = 0;
39 
40 };
41 
42 #endif
43 
44 
45 
46 
47