laura is hosted by Hepforge, IPPP Durham
Laura++  v3r5
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauDPDepCruijffPdf.hh
Go to the documentation of this file.
1 
2 /*
3 Copyright 2009 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 
35 #ifndef LAU_DPDEP_CRUIJFF_PDF
36 #define LAU_DPDEP_CRUIJFF_PDF
37 
38 #include <vector>
39 
40 #include "TString.h"
41 
42 #include "LauAbsPdf.hh"
43 
44 class LauDaughters;
45 class LauKinematics;
46 class LauParameter;
47 
48 
49 class LauDPDepCruijffPdf : public LauAbsPdf {
50 
51  public:
53  enum DPAxis {
54  M12,
55  M13,
56  M23,
58  MMIN,
60  };
61 
63 
76  LauDPDepCruijffPdf(const TString& theVarName, const std::vector<LauAbsRValue*>& params,
77  Double_t minAbscissa, Double_t maxAbscissa,
78  const LauDaughters* daughters,
79  const std::vector<Double_t>& meanCoeffs,
80  const std::vector<Double_t>& sigmaLCoeffs,
81  const std::vector<Double_t>& sigmaRCoeffs,
82  const std::vector<Double_t>& alphaLCoeffs,
83  const std::vector<Double_t>& alphaRCoeffs,
84  DPAxis dpAxis);
85 
87  virtual ~LauDPDepCruijffPdf();
88 
90 
93  virtual Bool_t isDPDependent() const {return kTRUE;}
94 
96 
99  virtual void calcLikelihoodInfo(const LauAbscissas& abscissas);
100 
102 
104  virtual void calcNorm();
105 
107 
110  virtual void calcPDFHeight( const LauKinematics* kinematics );
111 
112  protected:
114 
117  void scalePars( Double_t dpPos );
118 
120 
123  Double_t currentPDFValue(Double_t abscissa) const;
124 
126 
129  virtual Double_t integrGaussLegendre();
130 
132 
135  virtual Double_t integTrapezoid();
136 
137  private:
140 
143 
146 
157 
159  Double_t meanVal_;
161  Double_t sigmaLVal_;
163  Double_t sigmaRVal_;
165  Double_t alphaLVal_;
167  Double_t alphaRVal_;
168 
170  const std::vector<Double_t> meanCoeffs_;
172  const std::vector<Double_t> sigmaLCoeffs_;
174  const std::vector<Double_t> sigmaRCoeffs_;
176  const std::vector<Double_t> alphaLCoeffs_;
178  const std::vector<Double_t> alphaRCoeffs_;
179 
182 
183  ClassDef(LauDPDepCruijffPdf,0) // Define the Cruijff PDF
184 };
185 
186 #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:47
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:49
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:55
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:43
LauAbsRValue * alphaR_
Alpha of right Gaussian.
std::vector< Double_t > LauAbscissas
The type used for containing multiple abscissa values.
Definition: LauAbsPdf.hh:59