laura is hosted by Hepforge, IPPP Durham
Laura++  v2r1p1
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 
77 
79 
82  virtual Bool_t isDPDependent() const {return kTRUE;}
83 
85 
88  virtual void calcLikelihoodInfo(const LauAbscissas& abscissas);
89 
91 
93  virtual void calcNorm();
94 
96 
99  virtual void calcPDFHeight( const LauKinematics* kinematics );
100 
101  protected:
103 
106  void scalePars( Double_t dpPos );
107 
109 
112  Double_t currentPDFValue(Double_t abscissa) const;
113 
115 
118  virtual Double_t integrGaussLegendre();
119 
121 
124  virtual Double_t integTrapezoid();
125 
126  private:
129 
140 
142  Double_t meanVal_;
144  Double_t sigmaLVal_;
146  Double_t sigmaRVal_;
148  Double_t alphaLVal_;
150  Double_t alphaRVal_;
151 
153  const std::vector<Double_t> meanCoeffs_;
155  const std::vector<Double_t> sigmaLCoeffs_;
157  const std::vector<Double_t> sigmaRCoeffs_;
159  const std::vector<Double_t> alphaLCoeffs_;
161  const std::vector<Double_t> alphaRCoeffs_;
162 
165 
166  ClassDef(LauDPDepCruijffPdf,0) // Define the Cruijff PDF
167 };
168 
169 #endif
virtual Double_t integTrapezoid()
Integrate the PDF using the simple trapezoid method.
LauAbsRValue * sigmaL_
Sigma of left Gaussian.
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:33
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