laura is hosted by Hepforge, IPPP Durham
Laura++  v2r2p1
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauKMatrixPropagator.hh
Go to the documentation of this file.
1 
2 // Copyright University of Warwick 2008 - 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 
23 #ifndef LAU_KMATRIX_PROPAGATOR
24 #define LAU_KMATRIX_PROPAGATOR
25 
26 #include "LauComplex.hh"
27 #include "LauKinematics.hh"
28 #include "LauParameter.hh"
29 
30 #include "TMatrixD.h"
31 #include "TString.h"
32 
33 #include <map>
34 #include <vector>
35 
37 
38  public:
40 
48  LauKMatrixPropagator(const TString& name, const TString& paramFileName,
49  Int_t resPairAmpInt, Int_t nChannels, Int_t nPoles,
50  Int_t rowIndex = 1);
51 
53  virtual ~LauKMatrixPropagator();
54 
56 
59  void updatePropagator(const LauKinematics* kinematics);
60 
62 
65  void updatePropagator(Double_t s);
66 
68 
71  void setParameters(const TString& inputFile);
72 
74 
78  Double_t getRealPropTerm(Int_t channelIndex) const;
79 
81 
85  Double_t getImagPropTerm(Int_t channelIndex) const;
86 
88 
92  Double_t getPoleDenomTerm(Int_t poleIndex) const;
93 
95 
100  Double_t getCouplingConstant(Int_t poleIndex, Int_t channelIndex) const;
101 
103 
106  Double_t getProdSVPTerm() const {return prodSVP_;}
107 
109 
113  LauComplex getPropTerm(Int_t channelIndex) const;
114 
116 
119  Int_t getResPairAmpInt() const {return resPairAmpInt_;}
120 
122 
125  Int_t getNChannels() const {return nChannels_;}
126 
128 
131  Int_t getNPoles() const {return nPoles_;}
132 
134 
137  TString getName() const {return name_;}
138 
139  protected:
141 
144  void calcScattKMatrix(Double_t s);
145 
147 
150  void calcRhoMatrix(Double_t s);
151 
153 
156  void calcPoleDenomVect(Double_t s);
157 
159 
163  LauComplex calcPiPiRho(Double_t s) const;
164 
166 
170  LauComplex calcKKRho(Double_t s) const;
171 
173 
177  LauComplex calcFourPiRho(Double_t s) const;
178 
180 
184  LauComplex calcEtaEtaRho(Double_t s) const;
185 
187 
191  LauComplex calcEtaEtaPRho(Double_t s) const;
192 
194 
198  LauComplex calcKPiRho(Double_t s) const;
199 
201 
205  LauComplex calcKEtaPRho(Double_t s) const;
206 
208 
212  LauComplex calcKThreePiRho(Double_t s) const;
213 
215 
220  Double_t calcSVPTerm(Double_t s, Double_t s0) const;
221 
223 
226  void updateScattSVPTerm(Double_t s);
227 
229 
232  void updateProdSVPTerm(Double_t s);
233 
235 
238  void updateAdlerZeroFactor(Double_t s);
239 
241 
245  Bool_t checkPhaseSpaceType(Int_t phaseSpaceInt) const;
246 
247  private:
249  typedef std::map<int, std::vector<LauParameter> > KMatrixParamMap;
250 
252  TString name_;
254  TString paramFileName_;
258  Int_t index_;
259 
261  Double_t previousS_;
263  Double_t scattSVP_;
265  Double_t prodSVP_;
267  TMatrixD realProp_;
269  TMatrixD negImagProp_;
270 
271  // Integers to specify the allowed channels for the phase space calculations.
272  // Please keep Zero at the start and leave TotChannels at the end
273  // whenever more channels are added to this.
277 
279  TMatrixD ScattKMatrix_;
281  TMatrixD ReRhoMatrix_;
283  TMatrixD ImRhoMatrix_;
285  TMatrixD IMatrix_;
287  TMatrixD zeroMatrix_;
288 
290  Int_t nChannels_;
292  Int_t nPoles_;
293 
295  std::vector<LauParameter> mSqPoles_;
301  std::vector<Int_t> phaseSpaceTypes_;
303  std::vector<Double_t> mSumSq_;
305  std::vector<Double_t> mDiffSq_;
307  std::vector<Double_t> poleDenomVect_;
308 
319 
321  Double_t sAConst_;
323  Double_t m2piSq_;
325  Double_t m2KSq_;
327  Double_t m2EtaSq_;
329  Double_t mEtaEtaPSumSq_;
331  Double_t mEtaEtaPDiffSq_;
333  Double_t mKpiSumSq_;
335  Double_t mKpiDiffSq_;
337  Double_t mKEtaPSumSq_;
339  Double_t mKEtaPDiffSq_;
341  Double_t mK3piDiffSq_;
343  Double_t k3piFactor_;
345  Double_t fourPiFactor1_;
347  Double_t fourPiFactor2_;
348 
353 
355  Bool_t verbose_;
356 
357  ClassDef(LauKMatrixPropagator,0) // K-matrix amplitude model
358 
359 };
360 
361 #endif
void calcPoleDenomVect(Double_t s)
Calulate the term 1/(m_pole^2 - s) for the scattering and production K-matrix formulae.
Double_t previousS_
s value of the previous pole
LauComplex calcKThreePiRho(Double_t s) const
Calculate the Kpipipi phase space factor.
std::vector< Int_t > phaseSpaceTypes_
Vector of phase space types.
Double_t mKEtaPSumSq_
Defined as (mK+mEta&#39;)^2.
TMatrixD IMatrix_
Identity matrix.
virtual ~LauKMatrixPropagator()
Destructor.
Double_t calcSVPTerm(Double_t s, Double_t s0) const
Calculate the &quot;slow-varying part&quot;.
void calcRhoMatrix(Double_t s)
Calculate the real and imaginary part of the phase space density diagonal matrix. ...
LauComplex calcFourPiRho(Double_t s) const
Calculate the 4 pi phase space factor.
LauComplex calcEtaEtaRho(Double_t s) const
Calculate the eta-eta phase space factor.
LauComplex calcKEtaPRho(Double_t s) const
Calculate the K-eta&#39; phase space factor.
TString name_
String to store the propagator name.
Double_t mKEtaPDiffSq_
Defined as (mK-mEta&#39;)^2.
LauParameter sA0_
Constant from input file.
Int_t getNPoles() const
Get the number of poles.
LauComplex calcEtaEtaPRho(Double_t s) const
Calculate the eta-eta&#39; phase space factor.
std::vector< Double_t > mSumSq_
Vector of squared masses.
Double_t getRealPropTerm(Int_t channelIndex) const
Get the real part of the term of the propagator.
std::map< int, std::vector< LauParameter > > KMatrixParamMap
Create a map for the K-matrix parameters.
LauParameter s0Prod_
Constant from input file.
TMatrixD ScattKMatrix_
Scattering K-matrix.
Double_t m2piSq_
Defined as 4*mPi*mPi.
std::vector< LauParameter > mSqPoles_
Vector of squared pole masses.
std::vector< Double_t > poleDenomVect_
Vector of 1/(m_pole^2 - s) terms for scattering and production K-matrix formulae. ...
Int_t getNChannels() const
Get the number of channels.
Double_t mEtaEtaPDiffSq_
Defined as (mEta-mEta&#39;)^2.
Bool_t checkPhaseSpaceType(Int_t phaseSpaceInt) const
Check the phase space factors that need to be used.
Double_t mEtaEtaPSumSq_
Defined as (mEta+mEta&#39;)^2.
File containing declaration of LauKinematics class.
LauKMatrixPropagator(const TString &name, const TString &paramFileName, Int_t resPairAmpInt, Int_t nChannels, Int_t nPoles, Int_t rowIndex=1)
Constructor.
TMatrixD zeroMatrix_
Null matrix.
void updateProdSVPTerm(Double_t s)
Update the production &quot;slowly-varying part&quot;.
Int_t nChannels_
Number of channels.
LauParameter mSq0_
Constant from input file.
LauComplex calcPiPiRho(Double_t s) const
Calculate the pipi phase space factor.
Double_t mKpiSumSq_
Defined as (mK+mPi)^2.
LauComplex calcKPiRho(Double_t s) const
Calculate the Kpi phase space factor.
Double_t getPoleDenomTerm(Int_t poleIndex) const
Get the 1/(m_pole^2 -s) terms for the scattering and production K-matrix formulae.
Int_t getResPairAmpInt() const
Get the DP axis identifier.
LauParameter s0Scatt_
Constant from input file.
TString paramFileName_
Name of the input parameter file.
KMatrixParamMap gCouplings_
Map of coupling constants.
void updateAdlerZeroFactor(Double_t s)
Calculate the multiplicative factor containing severa Adler zero constants.
File containing declaration of LauParameter class.
TMatrixD ImRhoMatrix_
Imaginary part of the pahse space density diagonal matrix.
File containing declaration of LauComplex class.
Double_t mK3piDiffSq_
Defined as (mK-3*mPi)^2.
Double_t sAConst_
Defined as 0.5*sA*mPi*mPi.
Double_t fourPiFactor2_
Factor used to calculate the pipipipi phase space term.
Bool_t parametersSet_
Tracks if all params have been set.
Double_t prodSVP_
&quot;slowly-varying part&quot; for the production K-matrix
Class for defining the fit parameter objects.
Definition: LauParameter.hh:33
KMatrixParamMap fScattering_
Map of scattering SVP values.
Double_t getCouplingConstant(Int_t poleIndex, Int_t channelIndex) const
Get coupling constants that were loaded from the input file.
LauParameter sA_
Constant from input file.
KMatrixChannels
Integers to specify the allowed channels for the phase space calculations.
void updatePropagator(const LauKinematics *kinematics)
Calculate the invariant mass squared s.
Int_t index_
Row index - 1.
Double_t mKpiDiffSq_
Defined as (mK-mPi)^2.
Double_t getImagPropTerm(Int_t channelIndex) const
Get the imaginary part of the term of the propagator.
Bool_t verbose_
Control the output of the functions.
void setParameters(const TString &inputFile)
Read an input file to set parameters.
Double_t m2KSq_
Defined as 4*mK*mK.
Double_t k3piFactor_
Factor used to calculate the Kpipipi phase space term.
Int_t nPoles_
Number of poles.
Class for defining a complex number.
Definition: LauComplex.hh:47
Double_t adlerZeroFactor_
Multiplicative factor containing various Adler zero constants.
TString getName() const
Get the propagator name.
Class for calculating 3-body kinematic quantities.
Double_t getProdSVPTerm() const
Get the &quot;slowly-varying part&quot; term of the amplitude.
TMatrixD realProp_
Real part of the propagator matrix.
Int_t resPairAmpInt_
Number to identify the DP axis in question.
Double_t scattSVP_
&quot;slowly-varying part&quot; for the scattering K-matrix
LauComplex getPropTerm(Int_t channelIndex) const
Get the full complex propagator term for a given channel.
LauComplex calcKKRho(Double_t s) const
Calculate the KK phase space factor.
void calcScattKMatrix(Double_t s)
Calculate the scattering K-matrix for the given value of s.
Double_t m2EtaSq_
Defined as 4*mEta*mEta.
Double_t fourPiFactor1_
Factor used to calculate the pipipipi phase space term.
std::vector< Double_t > mDiffSq_
Vector of mass differences.
void updateScattSVPTerm(Double_t s)
Update the scattering &quot;slowly-varying part&quot;.
TMatrixD negImagProp_
Imaginary part of the propagator matrix.
Class for defining a K-matrix propagator.
TMatrixD ReRhoMatrix_
Real part of the pahse space density diagonal matrix.