MINT2
FocusFlatte.h
Go to the documentation of this file.
1 #ifndef FOCUSFLATTE_LINESHAPE_HH
2 #define FOCUSFLATTE_LINESHAPE_HH
3 // author: Jonas Rademacker (Jonas.Rademacker@bristol.ac.uk)
4 // status: Mon 9 Feb 2009 19:18:04 GMT
5 
6 #include "Mint/ILineshape.h"
7 #include "Mint/BW_BW.h"
10 #include "Mint/NamedParameter.h"
11 
12 #include <complex>
13 #include <string>
14 
15 // Flatte parameterised a la BaBar, Phys.Rev.D78:012004,2008
16 // also available as:
17 // arXiv:0803.4451[hep-ex], SLAC-PUB-13189, BABAR-PUB-08/005
18 // (and of course originally developed by Flatte,
19 // S. M. Flatt´e, Phys. Lett. B63, 224 (1976))
20 
21 class FocusFlatte : public BW_BW, virtual public ILineshape{
22  protected:
24  double _pi0Mass;
25  double _piPlusMass;
26  double _K0Mass;
27  double _KPlusMass;
28 
29  double gPi()const;
30  double gK() const;
31 
32  virtual double GofM(); // <--the trick is all here
33  std::complex<double> complexGofM();
34  virtual std::complex<double> BreitWigner();
35 
36  double mPi0();
37  double mPiPlus();
38  double mK0();
39  double mKPlus();
40  static std::complex<double> aSqrtTerm(double a, double b);
41  static double pdgMass(int PDG_ID);
42  public:
43 
44  FocusFlatte( const AssociatedDecayTree& decay, const std::string& namePrefix)
45  : BW_BW(decay, namePrefix)
46  , _gPi("Flatte::gPi", 0.20*GeV)
47  , _gK_by_gPi("Flatte::gK_by_gPi", 2.50) // same as b in Flatte paper
48  , _pi0Mass(-9999.0)
49  , _piPlusMass(-9999.0)
50  , _K0Mass(-9999.0)
51  , _KPlusMass(-9999.0)
52  {
53  }
54 
55  // virtual std::complex<double> getVal(){
56  // std::cout << "FocusFlatte!!!" << std::endl; return 1;}
57  // this uses BW_BW's getVal, but with a different GofM()
58  // (magic of 'virtual' functions)
59 
60  virtual std::string name() const{
61  return "Flatte_alaFOCUS_KK("+prefix()+_theDecay.oneLiner() +")";
62  }
63 
64  virtual ~FocusFlatte(){}
65 };
66 
67 #endif
68 //
double gPi() const
Definition: FocusFlatte.cpp:14
double gK() const
Definition: FocusFlatte.cpp:17
static std::complex< double > aSqrtTerm(double a, double b)
Definition: FocusFlatte.cpp:49
static double pdgMass(int PDG_ID)
Definition: FocusFlatte.cpp:21
virtual std::complex< double > BreitWigner()
Definition: FocusFlatte.cpp:97
const AssociatedDecayTree & _theDecay
Definition: BW_BW.h:69
double mPiPlus()
Definition: FocusFlatte.cpp:30
double _KPlusMass
Definition: FocusFlatte.h:27
double _pi0Mass
Definition: FocusFlatte.h:24
double mPi0()
Definition: FocusFlatte.cpp:24
MINT::NamedParameter< double > _gPi
Definition: FocusFlatte.h:23
double mKPlus()
Definition: FocusFlatte.cpp:42
Definition: BW_BW.h:30
MINT::NamedParameter< double > _gK_by_gPi
Definition: FocusFlatte.h:23
double _piPlusMass
Definition: FocusFlatte.h:25
static const double GeV
double mK0()
Definition: FocusFlatte.cpp:36
FocusFlatte(const AssociatedDecayTree &decay, const std::string &namePrefix)
Definition: FocusFlatte.h:44
void oneLiner(std::stringstream &seam, int generation=0) const
Definition: DDTree.h:375
double _K0Mass
Definition: FocusFlatte.h:26
virtual std::string name() const
Definition: FocusFlatte.h:60
virtual double GofM()
Definition: FocusFlatte.cpp:91
std::complex< double > complexGofM()
Definition: FocusFlatte.cpp:70
const std::string & prefix() const
Definition: BW_BW.h:72
virtual ~FocusFlatte()
Definition: FocusFlatte.h:64