laura is hosted by Hepforge, IPPP Durham
Laura++  v2r2
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauPolNR.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 
17 #include "TMath.h"
18 
19 #include "LauPolNR.hh"
20 #include "LauDaughters.hh"
21 
23 
24 
25 LauPolNR::LauPolNR(const TString& resName, Double_t resMass, Double_t resWidth, Int_t resSpin,
26  Int_t resCharge, Int_t resPairAmpInt, const LauDaughters* daughters) :
27  LauAbsResonance(resName, resMass, resWidth, resSpin, resCharge, resPairAmpInt, daughters),
28  omega_(0.0),
29  order_(0)
30 {
31 }
32 
34 {
35 }
36 
38 {
39  const LauDaughters* daughters = this->getDaughters();
40  Int_t resPairAmpInt = this->getPairInt();
41  if ( daughters->gotSymmetricalDP() && resPairAmpInt != 3 ) {
42  std::cerr << "WARNING in LauPolNR::initialise : Dalitz plot is symmetric - this lineshape is not appropriate." << std::endl;
43  }
44 
45  this->ignoreMomenta(kTRUE);
46 
47  Double_t omega = 0.5*(daughters->getMassParent()+(1.0/3.0)*(daughters->getMassDaug1()+daughters->getMassDaug2()+daughters->getMassDaug3()));
48  this->setOmega( omega );
49 
50  TString name = this->getResonanceName();
51  if (name.EndsWith("0",TString::kExact)){
52  order_ = 0;
53  }
54  else if (name.EndsWith("1",TString::kExact)){
55  order_ = 1;
56  }
57  else if (name.EndsWith("2",TString::kExact)){
58  order_ = 2;
59  }
60  else if (name.EndsWith("3",TString::kExact)){
61  order_ = 3;
62  }
63  else{
64  std::cerr << "ERROR in LauPolNR::initialise : Resonance order unknown (known orders : 0, 1, 2 and 3)" << std::endl;
65  std::cerr << " : Defaulting to 0." << std::endl;
66  }
67 }
68 
69 LauComplex LauPolNR::resAmp(Double_t mass, Double_t spinTerm)
70 {
71  Double_t magnitude( spinTerm );
72 
73  Double_t massDiff = mass - omega_;
74  for ( UInt_t i(0); i < order_; ++i ) {
75  magnitude *= massDiff;
76  }
77 
78  LauComplex resAmplitude(magnitude, 0.0);
79 
80  return resAmplitude;
81 }
82 
virtual void initialise()
Initialise the model.
Definition: LauPolNR.cc:37
Double_t getMassParent() const
Get mass of the parent particle.
Double_t omega_
The offset parameter.
Definition: LauPolNR.hh:84
const TString & getResonanceName() const
Get the name of the resonance.
ClassImp(LauAbsCoeffSet)
const TString & name() const
The parameter name.
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:33
File containing declaration of LauDaughters class.
const LauDaughters * getDaughters() const
Access the daughters object.
Double_t getMassDaug2() const
Get mass of second daughter particle.
Int_t getPairInt() const
Get the integer to identify which DP axis the resonance belongs to.
virtual void setOmega(const Double_t omega)
Set the parameter omega, the offset parameter.
Definition: LauPolNR.hh:66
Bool_t gotSymmetricalDP() const
Is Dalitz plot symmetric.
Definition: LauDaughters.hh:66
Class for defining the terms of Babar nonresonant model.
Definition: LauPolNR.hh:33
Bool_t ignoreMomenta() const
Get the ignore momenta flag.
Abstract class for defining type for resonance amplitude models (Breit-Wigner, Flatte etc...
Double_t getMassDaug1() const
Get mass of first daughter particle.
UInt_t order_
The order in the mass.
Definition: LauPolNR.hh:87
Class for defining a complex number.
Definition: LauComplex.hh:47
File containing declaration of LauPolNR class.
virtual LauComplex resAmp(Double_t mass, Double_t spinTerm)
Complex resonant amplitude.
Definition: LauPolNR.cc:69
Double_t getMassDaug3() const
Get mass of third daughter particle.
virtual ~LauPolNR()
Destructor.
Definition: LauPolNR.cc:33