laura is hosted by Hepforge, IPPP Durham
Laura++  3.6.0
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 "Lau1DCubicSpline.hh"
42 #include "LauAbsResonance.hh"
43 #include "LauComplex.hh"
44 
45 #include <set>
46 
48 
49  public:
51 
57  Int_t resPairAmpInt,
58  const LauDaughters* daughters );
59 
61  virtual ~LauAbsModIndPartWave();
62 
64  virtual void initialise();
65 
67 
72  void defineKnots( const std::set<Double_t>& masses );
73 
75 
78  UInt_t nKnots() const { return nKnots_; }
79 
81 
88  virtual void setKnotAmp( const UInt_t knot,
89  const Double_t ampVal1,
90  const Double_t ampVal2,
91  const Bool_t fixAmpVal1,
92  const Bool_t fixAmpVal2 ) = 0;
93 
95 
106  void floatKnotsSecondStage( const Bool_t secondStage );
107 
109  Bool_t floatKnotsSecondStage() const { return secondStage_; };
110 
112 
115  virtual const std::vector<LauParameter*>& getFloatingParameters();
116 
117  protected:
119 
123  virtual LauComplex resAmp( Double_t mass, Double_t spinTerm );
124 
126 
129  virtual void evaluateAmplitude( const Double_t mass ) = 0;
130 
132 
135  virtual std::set<Double_t> checkKnots( const std::set<Double_t>& masses );
136 
138 
141  virtual void createAmpParameters( const UInt_t iKnot ) = 0;
142 
144 
149 
151 
165  Double_t leftGrad1 = 0.0,
166  Double_t rightGrad1 = 0.0,
167  Double_t leftGrad2 = 0.0,
168  Double_t rightGrad2 = 0.0 );
169 
171 
175  void setAmp( const Double_t realPart, const Double_t imagPart )
176  {
177  amp_.setRealImagPart( realPart, imagPart );
178  }
179 
181  const std::vector<Double_t>& getMasses() { return masses_; }
182 
184  std::vector<Double_t>& getAmp1Vals() { return amp1Vals_; }
185 
187  std::vector<Double_t>& getAmp2Vals() { return amp2Vals_; }
188 
190  std::vector<LauParameter*>& getAmp1Pars() { return amp1Pars_; }
191 
193  std::vector<LauParameter*>& getAmp2Pars() { return amp2Pars_; }
194 
196  const Lau1DCubicSpline* getSpline1() const { return spline1_; }
197 
199  const Lau1DCubicSpline* getSpline2() const { return spline2_; }
200 
201  private:
203  UInt_t nKnots_;
204 
206  std::vector<Double_t> masses_;
207 
209  std::vector<Double_t> amp1Vals_;
211  std::vector<Double_t> amp2Vals_;
212 
214  std::vector<LauParameter*> amp1Pars_;
216  std::vector<LauParameter*> amp2Pars_;
217 
222 
227 
236 
238  Double_t leftGrad1_;
240  Double_t rightGrad1_;
242  Double_t leftGrad2_;
244  Double_t rightGrad2_;
245 
247  Bool_t secondStage_;
248 
251 
252  ClassDef( LauAbsModIndPartWave, 0 ) // model independent partial wave
253 };
254 
255 #endif
virtual void initialise()
Initialise the model.
Bool_t secondStage_
Flag to determine if the parameters should be floated only in the second stage of the fit.
virtual ~LauAbsModIndPartWave()
Destructor.
Double_t leftGrad2_
The gradient at the left boundary for the second spline if clamped.
LauAbsModIndPartWave(LauResonanceInfo *resInfo, Int_t resPairAmpInt, const LauDaughters *daughters)
Constructor.
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.
LauComplex amp_
The current value of the amplitude.
Lau1DCubicSpline * spline1_
The spline used to interpolate the values of the first real parameter.
void setSplineType(Lau1DCubicSpline::LauSplineType type1, Lau1DCubicSpline::LauSplineType type2)
Method to set the type of interpolation used for the splines.
std::vector< Double_t > amp1Vals_
The values of the first real parameter at each knot.
Lau1DCubicSpline::LauSplineBoundaryType leftBound2_
The lower boundary condition type for the second spline.
void defineKnots(const std::set< Double_t > &masses)
Define the knot positions.
File containing declaration of LauAbsResonance class.
const std::vector< Double_t > & getMasses()
Helper function to access the masses.
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.
std::vector< LauParameter * > & getAmp2Pars()
Helper function to access the 2nd parameter set.
Lau1DCubicSpline::LauSplineType type2_
The type of interpolation used for the second spline.
std::vector< Double_t > amp2Vals_
The values of the second real parameter at each knot.
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.
Class for defining a complex number.
Definition: LauComplex.hh:61
Class for defining a 1D cubic spline based on a set of knots.
std::vector< LauParameter * > & getAmp1Pars()
Helper function to access the 1st parameter set.
LauSplineType
Define the allowed interpolation types.
UInt_t nKnots_
The number of knots.
Double_t leftGrad1_
The gradient at the left boundary for the first spline if clamped.
void setRealImagPart(Double_t realpart, Double_t imagpart)
Set both real and imaginary part.
Definition: LauComplex.hh:324
File containing declaration of LauComplex class.
Lau1DCubicSpline::LauSplineType type1_
The type of interpolation used for the first spline.
Lau1DCubicSpline::LauSplineBoundaryType rightBound1_
The upper boundary condition type for the first spline.
virtual std::set< Double_t > checkKnots(const std::set< Double_t > &masses)
Method to check that the supplied knot positions are valid.
File containing declaration of Lau1DCubicSpline class.
void setAmp(const Double_t realPart, const Double_t imagPart)
Helper function to set the current amplitude value.
Double_t rightGrad2_
The gradient at the right boundary for the second spline if clamped.
virtual const std::vector< LauParameter * > & getFloatingParameters()
Retrieve the resonance parameters, e.g. so that they can be loaded into a fit.
Class for defining the properties of a resonant particle.
Lau1DCubicSpline::LauSplineBoundaryType rightBound2_
The upper boundary condition type for the second spline.
std::vector< LauParameter * > amp2Pars_
The parameters for the second real value at the knots.
UInt_t nKnots() const
Return the number of knots that have been defined (including those at the upper and lower kinematic l...
LauSplineBoundaryType
Define the allowed boundary condition types.
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.
Abstract class for defining type for resonance amplitude models (Breit-Wigner, Flatte etc....
const Lau1DCubicSpline * getSpline2() const
Helper function to access the 1st spline.
virtual LauComplex resAmp(Double_t mass, Double_t spinTerm)
Complex resonant amplitude.
Lau1DCubicSpline * spline2_
The spline used to interpolate the values of the second real parameter.
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:47
const Lau1DCubicSpline * getSpline1() const
Helper function to access the 1st spline.
virtual void createAmpParameters(const UInt_t iKnot)=0
Method to create the parameter objects for the given knot.
Lau1DCubicSpline::LauSplineBoundaryType leftBound1_
The lower boundary condition type for the first spline.
Bool_t floatKnotsSecondStage() const
Retrieve the value of the second stage flag.
std::vector< Double_t > masses_
The masses at which knots are defined in the magnitude and phase splines.
Abstract base class for defining a model independent partial wave component.
std::vector< Double_t > & getAmp2Vals()
Helper function to access the 2nd parameter set.