laura is hosted by Hepforge, IPPP Durham
Laura++  v3r0p1
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauDPDepCruijffPdf.hh
Go to the documentation of this file.
1 
2 // Copyright University of Warwick 2009 - 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 
21 #ifndef LAU_DPDEP_CRUIJFF_PDF
22 #define LAU_DPDEP_CRUIJFF_PDF
23 
24 #include <vector>
25 
26 #include "TString.h"
27 
28 #include "LauAbsPdf.hh"
29 
30 class LauDaughters;
31 class LauKinematics;
32 class LauParameter;
33 
34 
35 class LauDPDepCruijffPdf : public LauAbsPdf {
36 
37  public:
39  enum DPAxis {
40  M12,
41  M13,
42  M23,
44  MMIN,
46  };
47 
49 
62  LauDPDepCruijffPdf(const TString& theVarName, const std::vector<LauAbsRValue*>& params,
63  Double_t minAbscissa, Double_t maxAbscissa,
64  const LauDaughters* daughters,
65  const std::vector<Double_t>& meanCoeffs,
66  const std::vector<Double_t>& sigmaLCoeffs,
67  const std::vector<Double_t>& sigmaRCoeffs,
68  const std::vector<Double_t>& alphaLCoeffs,
69  const std::vector<Double_t>& alphaRCoeffs,
70  DPAxis dpAxis);
71 
73  virtual ~LauDPDepCruijffPdf();
74 
76 
79  virtual Bool_t isDPDependent() const {return kTRUE;}
80 
82 
85  virtual void calcLikelihoodInfo(const LauAbscissas& abscissas);
86 
88 
90  virtual void calcNorm();
91 
93 
96  virtual void calcPDFHeight( const LauKinematics* kinematics );
97 
98  protected:
100 
103  void scalePars( Double_t dpPos );
104 
106 
109  Double_t currentPDFValue(Double_t abscissa) const;
110 
112 
115  virtual Double_t integrGaussLegendre();
116 
118 
121  virtual Double_t integTrapezoid();
122 
123  private:
126 
129 
132 
143 
145  Double_t meanVal_;
147  Double_t sigmaLVal_;
149  Double_t sigmaRVal_;
151  Double_t alphaLVal_;
153  Double_t alphaRVal_;
154 
156  const std::vector<Double_t> meanCoeffs_;
158  const std::vector<Double_t> sigmaLCoeffs_;
160  const std::vector<Double_t> sigmaRCoeffs_;
162  const std::vector<Double_t> alphaLCoeffs_;
164  const std::vector<Double_t> alphaRCoeffs_;
165 
168 
169  ClassDef(LauDPDepCruijffPdf,0) // Define the Cruijff PDF
170 };
171 
172 #endif
virtual Double_t integTrapezoid()
Integrate the PDF using the simple trapezoid method.
LauAbsRValue * sigmaL_
Sigma of left Gaussian.
LauDPDepCruijffPdf & operator=(const LauDPDepCruijffPdf &other)
Copy assignment operator (not implemented)
const std::vector< Double_t > alphaLCoeffs_
Coefficients of alpha for the left Gaussian.
Class for defining a Cruijff PDF (with DP dependence).
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:33
LauAbsRValue * alphaL_
Alpha of left Gaussian.
Double_t currentPDFValue(Double_t abscissa) const
Current PDF value.
const LauKinematics * kinematics_
The current DP kinematics.
void scalePars(Double_t dpPos)
Scale parameters by their dependence on the DP position.
Double_t sigmaRVal_
Sigma of right Gaussian.
virtual Bool_t isDPDependent() const
Specifies whether or not the PDF is DP dependent.
LauAbsRValue * sigmaR_
Sigma of right Gaussian.
const std::vector< Double_t > sigmaLCoeffs_
Coefficients of sigma for the left Gaussian.
LauDPDepCruijffPdf(const TString &theVarName, const std::vector< LauAbsRValue * > &params, Double_t minAbscissa, Double_t maxAbscissa, const LauDaughters *daughters, const std::vector< Double_t > &meanCoeffs, const std::vector< Double_t > &sigmaLCoeffs, const std::vector< Double_t > &sigmaRCoeffs, const std::vector< Double_t > &alphaLCoeffs, const std::vector< Double_t > &alphaRCoeffs, DPAxis dpAxis)
Constructor.
virtual ~LauDPDepCruijffPdf()
Destructor.
const std::vector< Double_t > alphaRCoeffs_
Coefficients of alpha for the right Gaussian.
DPAxis dpAxis_
The DP axis we depend on.
virtual void calcNorm()
Calculate the normalisation.
Double_t meanVal_
Gaussian mean.
const std::vector< Double_t > meanCoeffs_
Coefficients of Gaussian mean.
LauAbsRValue * mean_
Gaussian mean.
Double_t alphaRVal_
Alpha of right Gaussian.
Class for defining the fit parameter objects.
Definition: LauParameter.hh:34
Double_t alphaLVal_
Alpha of left Gaussian.
File containing declaration of LauAbsPdf class.
virtual void calcLikelihoodInfo(const LauAbscissas &abscissas)=0
Calculate the likelihood (and all associated information) given value(s) of the abscissa(s) ...
Double_t sigmaLVal_
Sigma of left Gaussian.
virtual Double_t integrGaussLegendre()
Integrate the PDF using the Gauss-Legendre method.
DPAxis
Define possibilties for the DP axes.
virtual void calcPDFHeight(const LauKinematics *kinematics)
Calculate the PDF height.
Class for defining the abstract interface for PDF classes.
Definition: LauAbsPdf.hh:41
const std::vector< Double_t > sigmaRCoeffs_
Coefficients of sigma for the right Gaussian.
Class for calculating 3-body kinematic quantities.
virtual void calcLikelihoodInfo(const LauAbscissas &abscissas)
Calculate the likelihood (and intermediate info) for a given abscissa.
Pure abstract base class for defining a parameter containing an R value.
Definition: LauAbsRValue.hh:29
LauAbsRValue * alphaR_
Alpha of right Gaussian.
std::vector< Double_t > LauAbscissas
The type used for containing multiple abscissa values.
Definition: LauAbsPdf.hh:45