laura is hosted by Hepforge, IPPP Durham
Laura++  v1r0
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauBelleSymNR.cc
Go to the documentation of this file.
1 
2 // Copyright University of Warwick 2004 - 2013.
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5 
6 // Authors:
7 // Thomas Latham
8 // John Back
9 // Paul Harrison
10 
15 #include <iostream>
16 using std::cout;
17 using std::cerr;
18 using std::endl;
19 
20 #include "TMath.h"
21 
22 #include "LauBelleSymNR.hh"
23 #include "LauKinematics.hh"
24 
25 ClassImp(LauBelleSymNR)
26 
27 
28 LauBelleSymNR::LauBelleSymNR(const TString& resName, Double_t resMass, Double_t resWidth, Int_t resSpin,
29  Int_t resCharge, Int_t resPairAmpInt, const LauDaughters* daughters) :
30  LauAbsResonance(resName, resMass, resWidth, resSpin, resCharge, resPairAmpInt, daughters),
31  alpha_(0.0),
32  initialised_(kFALSE),
33  shapeNo_(0)
34 {
35 }
36 
38 {
39  // Destructor
40 }
41 
42 void LauBelleSymNR::initialise(Bool_t symmetricalDP, Double_t alpha, const TString& shape)
43 {
44  alpha_ = alpha;
45  shapeNo_ = 0;
46 
47  if (symmetricalDP == kFALSE) {
48  cerr << "ERROR in LauBelleSymNR::initialise : Dalitz plot is not symmetric - this lineshape is not appropriate." << endl;
49  return;
50  }
51 
52  if (shape == "BelleSymNR") {
53  cout << "Initialising the Belle non-resonant model with alpha = " << alpha << endl;
54  shapeNo_ = 1;
55  } else if (shape == "NRTaylor") {
56  cout << "Initialising the Taylor expansion non-resonant model with alpha = " << alpha << endl;
57  shapeNo_ = 2;
58  } else {
59  cerr << "ERROR in LauBelleSymNR::initialise : Non-resonant parameterisation not recognised." << endl;
60  return;
61  }
62 
63  initialised_ = kTRUE;
64 }
65 
67 {
68  if (initialised_ == kFALSE) {
69  cerr<<"ERROR in LauBelleSymNR::amplitude : LauBelleSymNR is not initialised. Returning zero amplitude."<<endl;
70  return LauComplex(0.0, 0.0);
71  }
72 
73  // This function returns the complex dynamical amplitude for a Belle Non-Resonant distribution
74 
75  // Calculate for symmetric DPs, e.g. 3pi or 3K, by using shapeNo = 1 or 2
76  // Have s<->t symmetry already done in Dynamics flip function.
77  // For Kpipi or similar plots, one can use the separate exponentials
78  // and consider them as two separate components with their own mag and phase.
79  // For this shapeNo = 3 and shapeNo = 4 need to be used to create the two
80  // individual amplitudes (with the same value of alpha).
81 
82  // Calculate Mandelstam variables.
83  // s = m_13^2, t = m_23^2, u = m_12^2.
84  Double_t s = kinematics->getm13Sq();
85  Double_t t = kinematics->getm23Sq();
86  //Double_t u = kinematics->getm12Sq();
87 
88  Double_t magnitude(1.0);
89 
90  if (shapeNo_ == 1) {
91  magnitude = TMath::Exp(-alpha_*s) + TMath::Exp(-alpha_*t);
92  } else if (shapeNo_ == 2) {
93  Double_t mParentSq = kinematics->getmParentSq();
94  magnitude = alpha_*(s + t)/mParentSq + 1.0;
95  }
96 
97  LauComplex resAmplitude(magnitude, 0.0);
98 
99  return resAmplitude;
100 
101 }
102 
103 LauComplex LauBelleSymNR::resAmp(Double_t mass, Double_t spinTerm)
104 {
105  cerr << "ERROR in LauBelleSymNR : This method should never be called." << endl;
106  cerr << " : Returning zero amplitude for mass = " << mass << " and spinTerm = " << spinTerm << "." << endl;
107  return LauComplex(0.0, 0.0);
108 }
109 
Bool_t initialised_
Tracks if initialise has been called.
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:33
virtual LauComplex resAmp(Double_t mass, Double_t spinTerm)
This is not called, amplitude is used directly instead.
File containing declaration of LauBelleSymNR class.
Double_t getm23Sq() const
Get the m23 invariant mass square.
File containing declaration of LauKinematics class.
virtual ~LauBelleSymNR()
Destructor.
virtual LauComplex amplitude(const LauKinematics *kinematics)
Get the complex dynamical amplitude.
Int_t shapeNo_
Int to set the correct model type.
Class for defining the symmetric Belle Non Resonant model.
Abstract class for defining type for resonance amplitude models (Breit-Wigner, Flatte etc...
virtual void initialise()
Dummy initialisation.
Double_t getm13Sq() const
Get the m13 invariant mass square.
Class for defining a complex number.
Definition: LauComplex.hh:47
Class for calculating 3-body kinematic quantities.
Double_t getmParentSq() const
Get parent mass squared.
Double_t alpha_
Define the range parameter.