laura is hosted by Hepforge, IPPP Durham
Laura++  v3r3
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauAbsModIndPartWave.hh
Go to the documentation of this file.
1 
2 // Copyright University of Warwick 2004 - 2014.
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 
24 #ifndef LAU_ABSMODINDPARTWAVE
25 #define LAU_ABSMODINDPARTWAVE
26 
27 #include <set>
28 
29 #include "LauComplex.hh"
30 #include "LauAbsResonance.hh"
31 #include "Lau1DCubicSpline.hh"
32 
33 
35 
36  public:
38 
43  LauAbsModIndPartWave(LauResonanceInfo* resInfo, Int_t resPairAmpInt, const LauDaughters* daughters);
44 
46  virtual ~LauAbsModIndPartWave();
47 
49  virtual void initialise();
50 
52 
57  void defineKnots(const std::set<Double_t>& masses);
58 
60 
63  UInt_t nKnots() const { return nKnots_; }
64 
66 
73  virtual void setKnotAmp(const UInt_t knot, const Double_t ampVal1, const Double_t ampVal2, const Bool_t fixAmpVal1, const Bool_t fixAmpVal2) = 0;
74 
76 
87  void floatKnotsSecondStage(const Bool_t secondStage);
88 
90  Bool_t floatKnotsSecondStage() const {return secondStage_;};
91 
93 
96  virtual const std::vector<LauParameter*>& getFloatingParameters();
97 
98  protected:
100 
104  virtual LauComplex resAmp(Double_t mass, Double_t spinTerm);
105 
107 
110  virtual void evaluateAmplitude(const Double_t mass) = 0;
111 
113 
116  virtual std::set<Double_t> checkKnots(const std::set<Double_t>& masses);
117 
119 
122  virtual void createAmpParameters(const UInt_t iKnot) = 0;
123 
125 
130 
132 
146  Double_t leftGrad1 = 0.0, Double_t rightGrad1 = 0.0,
147  Double_t leftGrad2 = 0.0, Double_t rightGrad2 = 0.0);
148 
150 
154  void setAmp(const Double_t realPart, const Double_t imagPart)
155  {
156  amp_.setRealImagPart(realPart,imagPart);
157  }
158 
160  const std::vector<Double_t>& getMasses() {return masses_;}
161 
163  std::vector<Double_t>& getAmp1Vals() {return amp1Vals_;}
164 
166  std::vector<Double_t>& getAmp2Vals() {return amp2Vals_;}
167 
169  std::vector<LauParameter*>& getAmp1Pars() {return amp1Pars_;}
170 
172  std::vector<LauParameter*>& getAmp2Pars() {return amp2Pars_;}
173 
175  const Lau1DCubicSpline* getSpline1() const {return spline1_;}
176 
178  const Lau1DCubicSpline* getSpline2() const {return spline2_;}
179 
180  private:
182  UInt_t nKnots_;
183 
185  std::vector<Double_t> masses_;
186 
188  std::vector<Double_t> amp1Vals_;
190  std::vector<Double_t> amp2Vals_;
191 
193  std::vector<LauParameter*> amp1Pars_;
195  std::vector<LauParameter*> amp2Pars_;
196 
201 
206 
215 
217  Double_t leftGrad1_;
219  Double_t rightGrad1_;
221  Double_t leftGrad2_;
223  Double_t rightGrad2_;
224 
226  Bool_t secondStage_;
227 
230 
231  ClassDef(LauAbsModIndPartWave,0) // model independent partial wave
232 
233 };
234 
235 #endif
std::vector< LauParameter * > & getAmp2Pars()
Helper function to access the 2nd parameter set.
const Lau1DCubicSpline * getSpline2() const
Helper function to access the 1st spline.
std::vector< LauParameter * > & getAmp1Pars()
Helper function to access the 1st parameter set.
virtual std::set< Double_t > checkKnots(const std::set< Double_t > &masses)
Method to check that the supplied knot positions are valid.
virtual void initialise()
Initialise the model.
LauComplex amp_
The current value of the amplitude.
Abstract base class for defining a model independent partial wave component.
LauSplineBoundaryType
Define the allowed boundary condition types.
Double_t rightGrad1_
The gradient at the right boundary for the first spline if clamped.
std::vector< Double_t > & getAmp1Vals()
Helper function to access the 1st parameter set.
Class for defining the properties of a resonant particle.
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:33
Lau1DCubicSpline::LauSplineType type1_
The type of interpolation used for the first spline.
std::vector< LauParameter * > amp2Pars_
The parameters for the second real value at the knots.
virtual void setKnotAmp(const UInt_t knot, const Double_t ampVal1, const Double_t ampVal2, const Bool_t fixAmpVal1, const Bool_t fixAmpVal2)=0
Set the values of the two real parameters that define the amplitude at a given knot.
Lau1DCubicSpline::LauSplineBoundaryType rightBound2_
The upper boundary condition type for the second spline.
virtual void createAmpParameters(const UInt_t iKnot)=0
Method to create the parameter objects for the given knot.
virtual const std::vector< LauParameter * > & getFloatingParameters()
Retrieve the resonance parameters, e.g. so that they can be loaded into a fit.
virtual LauComplex resAmp(Double_t mass, Double_t spinTerm)
Complex resonant amplitude.
const Lau1DCubicSpline * getSpline1() const
Helper function to access the 1st spline.
void setAmp(const Double_t realPart, const Double_t imagPart)
Helper function to set the current amplitude value.
Lau1DCubicSpline::LauSplineBoundaryType rightBound1_
The upper boundary condition type for the first spline.
std::vector< Double_t > amp2Vals_
The values of the second real parameter at each knot.
virtual ~LauAbsModIndPartWave()
Destructor.
Double_t leftGrad2_
The gradient at the left boundary for the second spline if clamped.
File containing declaration of Lau1DCubicSpline class.
Class for defining a 1D cubic spline based on a set of knots.
UInt_t nKnots() const
Return the number of knots that have been defined (including those at the upper and lower kinematic l...
File containing declaration of LauComplex class.
virtual void evaluateAmplitude(const Double_t mass)=0
Evaluate the amplitude at the given point from the splines.
std::vector< LauParameter * > amp1Pars_
The parameters for the first real value at the knots.
Bool_t secondStage_
Flag to determine if the parameters should be floated only in the second stage of the fit...
std::vector< Double_t > masses_
The masses at which knots are defined in the magnitude and phase splines.
Double_t leftGrad1_
The gradient at the left boundary for the first spline if clamped.
Abstract class for defining type for resonance amplitude models (Breit-Wigner, Flatte etc...
void setRealImagPart(Double_t realpart, Double_t imagpart)
Set both real and imaginary part.
Definition: LauComplex.hh:314
const std::vector< Double_t > & getMasses()
Helper function to access the masses.
Lau1DCubicSpline * spline1_
The spline used to interpolate the values of the first real parameter.
Lau1DCubicSpline::LauSplineBoundaryType leftBound1_
The lower boundary condition type for the first spline.
File containing declaration of LauAbsResonance class.
void defineKnots(const std::set< Double_t > &masses)
Define the knot positions.
Class for defining a complex number.
Definition: LauComplex.hh:47
Double_t rightGrad2_
The gradient at the right boundary for the second spline if clamped.
std::vector< Double_t > amp1Vals_
The values of the first real parameter at each knot.
UInt_t nKnots_
The number of knots.
Bool_t floatKnotsSecondStage() const
Retrieve the value of the second stage flag.
Lau1DCubicSpline * spline2_
The spline used to interpolate the values of the second real parameter.
void setSplineBoundaryConditions(Lau1DCubicSpline::LauSplineBoundaryType leftBound1, Lau1DCubicSpline::LauSplineBoundaryType rightBound1, Lau1DCubicSpline::LauSplineBoundaryType leftBound2, Lau1DCubicSpline::LauSplineBoundaryType rightBound2, Double_t leftGrad1=0.0, Double_t rightGrad1=0.0, Double_t leftGrad2=0.0, Double_t rightGrad2=0.0)
Method to set the boundary conditions of the splines.
std::vector< Double_t > & getAmp2Vals()
Helper function to access the 2nd parameter set.
Lau1DCubicSpline::LauSplineBoundaryType leftBound2_
The lower boundary condition type for the second spline.
LauAbsModIndPartWave(LauResonanceInfo *resInfo, Int_t resPairAmpInt, const LauDaughters *daughters)
Constructor.
LauSplineType
Define the allowed interpolation types.
void setSplineType(Lau1DCubicSpline::LauSplineType type1, Lau1DCubicSpline::LauSplineType type2)
Method to set the type of interpolation used for the splines.
Lau1DCubicSpline::LauSplineType type2_
The type of interpolation used for the second spline.