laura is hosted by Hepforge, IPPP Durham
Laura++  v3r0p1
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 
77  TMatrixD getKMatrix() const {return ScattKMatrix_;}
78 
80 
84  Double_t getRealPropTerm(Int_t channelIndex) const;
85 
87 
91  Double_t getImagPropTerm(Int_t channelIndex) const;
92 
94 
98  Double_t getPoleDenomTerm(Int_t poleIndex) const;
99 
101 
106  Double_t getCouplingConstant(Int_t poleIndex, Int_t channelIndex) const;
107 
109 
112  Double_t getProdSVPTerm() const {return prodSVP_;}
113 
115 
119  LauComplex getPropTerm(Int_t channelIndex) const;
120 
122 
125  Int_t getResPairAmpInt() const {return resPairAmpInt_;}
126 
128 
131  Int_t getNChannels() const {return nChannels_;}
132 
134 
137  Int_t getNPoles() const {return nPoles_;}
138 
140 
143  TString getName() const {return name_;}
144 
146 
151  LauComplex getTransitionAmp(Double_t s, Int_t channel);
152 
153 
155 
160  LauComplex getPhaseSpaceTerm(Double_t s, Int_t channel);
161 
162 
163  protected:
165 
168  void calcScattKMatrix(Double_t s);
169 
171 
174  void calcRhoMatrix(Double_t s);
175 
177 
180  void calcPoleDenomVect(Double_t s);
181 
183 
187  LauComplex calcPiPiRho(Double_t s) const;
188 
190 
194  LauComplex calcKKRho(Double_t s) const;
195 
197 
201  LauComplex calcFourPiRho(Double_t s) const;
202 
204 
208  LauComplex calcEtaEtaRho(Double_t s) const;
209 
211 
215  LauComplex calcEtaEtaPRho(Double_t s) const;
216 
218 
222  LauComplex calcKPiRho(Double_t s) const;
223 
225 
229  LauComplex calcKEtaPRho(Double_t s) const;
230 
232 
236  LauComplex calcKThreePiRho(Double_t s) const;
237 
239 
244  Double_t calcSVPTerm(Double_t s, Double_t s0) const;
245 
247 
250  void updateScattSVPTerm(Double_t s);
251 
253 
256  void updateProdSVPTerm(Double_t s);
257 
259 
262  void updateAdlerZeroFactor(Double_t s);
263 
265 
269  Bool_t checkPhaseSpaceType(Int_t phaseSpaceInt) const;
270 
271 
273 
276  void getTMatrix(const LauKinematics* kinematics);
277 
279 
282  void getTMatrix(Double_t s);
283 
285  void getSqrtRhoMatrix();
286 
287  private:
290 
293 
295  typedef std::map<int, std::vector<LauParameter> > KMatrixParamMap;
296 
298  TString name_;
300  TString paramFileName_;
304  Int_t index_;
305 
307  Double_t previousS_;
309  Double_t scattSVP_;
311  Double_t prodSVP_;
313  TMatrixD realProp_;
315  TMatrixD negImagProp_;
316 
317  // Integers to specify the allowed channels for the phase space calculations.
318  // Please keep Zero at the start and leave TotChannels at the end
319  // whenever more channels are added to this.
323 
325  TMatrixD ScattKMatrix_;
327  TMatrixD ReRhoMatrix_;
329  TMatrixD ImRhoMatrix_;
331  TMatrixD IMatrix_;
333  TMatrixD zeroMatrix_;
334 
340  TMatrixD ReTMatrix_;
342  TMatrixD ImTMatrix_;
343 
345  Int_t nChannels_;
347  Int_t nPoles_;
348 
350  std::vector<LauParameter> mSqPoles_;
356  std::vector<Int_t> phaseSpaceTypes_;
358  std::vector<Double_t> mSumSq_;
360  std::vector<Double_t> mDiffSq_;
362  std::vector<Double_t> poleDenomVect_;
363 
374 
376  Double_t sAConst_;
378  Double_t m2piSq_;
380  Double_t m2KSq_;
382  Double_t m2EtaSq_;
384  Double_t mEtaEtaPSumSq_;
386  Double_t mEtaEtaPDiffSq_;
388  Double_t mKpiSumSq_;
390  Double_t mKpiDiffSq_;
392  Double_t mKEtaPSumSq_;
394  Double_t mKEtaPDiffSq_;
396  Double_t mK3piDiffSq_;
398  Double_t k3piFactor_;
400  Double_t fourPiFactor1_;
402  Double_t fourPiFactor2_;
403 
408 
410  Bool_t verbose_;
411 
412  ClassDef(LauKMatrixPropagator,0) // K-matrix amplitude model
413 
414 };
415 
416 #endif
void calcPoleDenomVect(Double_t s)
Calulate the term 1/(m_pole^2 - s) for the scattering and production K-matrix formulae.
TMatrixD ImTMatrix_
Imaginary part of the unitary T matrix.
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.
TMatrixD ReTMatrix_
Real part of the unitary T matrix.
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.
void getSqrtRhoMatrix()
Get the square root of the phase space matrix.
std::map< int, std::vector< LauParameter > > KMatrixParamMap
Create a map for the K-matrix parameters.
TMatrixD ReSqrtRhoMatrix_
Real part of the square root of the phase space density diagonal matrix.
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 phase 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.
LauKMatrixPropagator & operator=(const LauKMatrixPropagator &rhs)
Copy assignment operator (not implemented)
TMatrixD ImSqrtRhoMatrix_
Imaginary part of the square root of the phase space density diagonal matrix.
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:34
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 getTMatrix(const LauKinematics *kinematics)
Get the unitary transition amplitude matrix for the given kinematics.
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.
LauComplex getTransitionAmp(Double_t s, Int_t channel)
Get the unitary transition amplitude for the given channel.
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.
TMatrixD getKMatrix() const
Get the scattering K matrix.
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.
LauComplex getPhaseSpaceTerm(Double_t s, Int_t channel)
Get the complex phase space term for the given channel and invariant mass squared.
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 phase space density diagonal matrix.