laura is hosted by Hepforge, IPPP Durham
Laura++  v3r5
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauAbsModIndPartWave.hh
Go to the documentation of this file.
1 
2 /*
3 Copyright 2014 University of Warwick
4 
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
8 
9  http://www.apache.org/licenses/LICENSE-2.0
10 
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16 */
17 
18 /*
19 Laura++ package authors:
20 John Back
21 Paul Harrison
22 Thomas Latham
23 */
24 
38 #ifndef LAU_ABSMODINDPARTWAVE
39 #define LAU_ABSMODINDPARTWAVE
40 
41 #include <set>
42 
43 #include "LauComplex.hh"
44 #include "LauAbsResonance.hh"
45 #include "Lau1DCubicSpline.hh"
46 
47 
49 
50  public:
52 
57  LauAbsModIndPartWave(LauResonanceInfo* resInfo, Int_t resPairAmpInt, const LauDaughters* daughters);
58 
60  virtual ~LauAbsModIndPartWave();
61 
63  virtual void initialise();
64 
66 
71  void defineKnots(const std::set<Double_t>& masses);
72 
74 
77  UInt_t nKnots() const { return nKnots_; }
78 
80 
87  virtual void setKnotAmp(const UInt_t knot, const Double_t ampVal1, const Double_t ampVal2, const Bool_t fixAmpVal1, const Bool_t fixAmpVal2) = 0;
88 
90 
101  void floatKnotsSecondStage(const Bool_t secondStage);
102 
104  Bool_t floatKnotsSecondStage() const {return secondStage_;};
105 
107 
110  virtual const std::vector<LauParameter*>& getFloatingParameters();
111 
112  protected:
114 
118  virtual LauComplex resAmp(Double_t mass, Double_t spinTerm);
119 
121 
124  virtual void evaluateAmplitude(const Double_t mass) = 0;
125 
127 
130  virtual std::set<Double_t> checkKnots(const std::set<Double_t>& masses);
131 
133 
136  virtual void createAmpParameters(const UInt_t iKnot) = 0;
137 
139 
144 
146 
160  Double_t leftGrad1 = 0.0, Double_t rightGrad1 = 0.0,
161  Double_t leftGrad2 = 0.0, Double_t rightGrad2 = 0.0);
162 
164 
168  void setAmp(const Double_t realPart, const Double_t imagPart)
169  {
170  amp_.setRealImagPart(realPart,imagPart);
171  }
172 
174  const std::vector<Double_t>& getMasses() {return masses_;}
175 
177  std::vector<Double_t>& getAmp1Vals() {return amp1Vals_;}
178 
180  std::vector<Double_t>& getAmp2Vals() {return amp2Vals_;}
181 
183  std::vector<LauParameter*>& getAmp1Pars() {return amp1Pars_;}
184 
186  std::vector<LauParameter*>& getAmp2Pars() {return amp2Pars_;}
187 
189  const Lau1DCubicSpline* getSpline1() const {return spline1_;}
190 
192  const Lau1DCubicSpline* getSpline2() const {return spline2_;}
193 
194  private:
196  UInt_t nKnots_;
197 
199  std::vector<Double_t> masses_;
200 
202  std::vector<Double_t> amp1Vals_;
204  std::vector<Double_t> amp2Vals_;
205 
207  std::vector<LauParameter*> amp1Pars_;
209  std::vector<LauParameter*> amp2Pars_;
210 
215 
220 
229 
231  Double_t leftGrad1_;
233  Double_t rightGrad1_;
235  Double_t leftGrad2_;
237  Double_t rightGrad2_;
238 
240  Bool_t secondStage_;
241 
244 
245  ClassDef(LauAbsModIndPartWave,0) // model independent partial wave
246 
247 };
248 
249 #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:47
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:328
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:61
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.