laura is hosted by Hepforge, IPPP Durham
Laura++  3.6.0
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 "LauAbsPdf.hh"
39 
40 #include "TString.h"
41 
42 #include <vector>
43 
44 class LauDaughters;
45 class LauKinematics;
46 class LauParameter;
47 
48 class LauDPDepCruijffPdf : public LauAbsPdf {
49 
50  public:
52  enum DPAxis {
53  M12,
54  M13,
55  M23,
57  MMIN,
58  MMAX
59  };
60 
62 
75  LauDPDepCruijffPdf( const TString& theVarName,
76  const std::vector<LauAbsRValue*>& params,
77  Double_t minAbscissa,
78  Double_t maxAbscissa,
79  const LauDaughters* daughters,
80  const std::vector<Double_t>& meanCoeffs,
81  const std::vector<Double_t>& sigmaLCoeffs,
82  const std::vector<Double_t>& sigmaRCoeffs,
83  const std::vector<Double_t>& alphaLCoeffs,
84  const std::vector<Double_t>& alphaRCoeffs,
85  DPAxis dpAxis );
86 
88  virtual ~LauDPDepCruijffPdf();
89 
91 
94  virtual Bool_t isDPDependent() const { return kTRUE; }
95 
97 
100  virtual void calcLikelihoodInfo( const LauAbscissas& abscissas );
101 
103 
105  virtual void calcNorm();
106 
108 
111  virtual void calcPDFHeight( const LauKinematics* kinematics );
112 
113  protected:
115 
118  void scalePars( Double_t dpPos );
119 
121 
124  Double_t currentPDFValue( Double_t abscissa ) const;
125 
127 
130  virtual Double_t integrGaussLegendre();
131 
133 
136  virtual Double_t integTrapezoid();
137 
138  private:
141 
144 
147 
158 
160  Double_t meanVal_;
162  Double_t sigmaLVal_;
164  Double_t sigmaRVal_;
166  Double_t alphaLVal_;
168  Double_t alphaRVal_;
169 
171  const std::vector<Double_t> meanCoeffs_;
173  const std::vector<Double_t> sigmaLCoeffs_;
175  const std::vector<Double_t> sigmaRCoeffs_;
177  const std::vector<Double_t> alphaLCoeffs_;
179  const std::vector<Double_t> alphaRCoeffs_;
180 
183 
184  ClassDef( LauDPDepCruijffPdf, 0 ) // Define the Cruijff PDF
185 };
186 
187 #endif
File containing declaration of LauAbsPdf class.
DPAxis
Define possibilties for the DP axes.
LauAbsRValue * alphaL_
Alpha of left Gaussian.
Class for defining a Cruijff PDF (with DP dependence).
Double_t sigmaRVal_
Sigma of right Gaussian.
const std::vector< Double_t > sigmaRCoeffs_
Coefficients of sigma for the right Gaussian.
Class for defining the fit parameter objects.
Definition: LauParameter.hh:49
void scalePars(Double_t dpPos)
Scale parameters by their dependence on the DP position.
LauAbsRValue * alphaR_
Alpha of right Gaussian.
virtual void calcLikelihoodInfo(const LauAbscissas &abscissas)
Calculate the likelihood (and intermediate info) for a given abscissa.
LauAbsRValue * sigmaL_
Sigma of left Gaussian.
std::vector< Double_t > LauAbscissas
The type used for containing multiple abscissa values.
Definition: LauAbsPdf.hh:58
const std::vector< Double_t > sigmaLCoeffs_
Coefficients of sigma for the left Gaussian.
Double_t currentPDFValue(Double_t abscissa) const
Current PDF value.
LauDPDepCruijffPdf & operator=(const LauDPDepCruijffPdf &other)
Copy assignment operator (not implemented)
Double_t meanVal_
Gaussian mean.
virtual void calcNorm()
Calculate the normalisation.
LauAbsRValue * mean_
Gaussian mean.
const LauKinematics * kinematics_
The current DP kinematics.
Double_t alphaRVal_
Alpha of right Gaussian.
Double_t alphaLVal_
Alpha of left Gaussian.
LauAbsRValue * sigmaR_
Sigma of right Gaussian.
virtual ~LauDPDepCruijffPdf()
Destructor.
Double_t sigmaLVal_
Sigma of left Gaussian.
virtual void calcLikelihoodInfo(const LauAbscissas &abscissas)=0
Calculate the likelihood (and all associated information) given value(s) of the abscissa(s)
Class for defining the abstract interface for PDF classes.
Definition: LauAbsPdf.hh:54
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.
const std::vector< Double_t > alphaRCoeffs_
Coefficients of alpha for the right Gaussian.
Pure abstract base class for defining a parameter containing an R value.
Definition: LauAbsRValue.hh:45
DPAxis dpAxis_
The DP axis we depend on.
virtual void calcPDFHeight(const LauKinematics *kinematics)
Calculate the PDF height.
virtual Bool_t isDPDependent() const
Specifies whether or not the PDF is DP dependent.
const std::vector< Double_t > meanCoeffs_
Coefficients of Gaussian mean.
LauDPDepCruijffPdf(const LauDPDepCruijffPdf &other)
Copy constructor (not implemented)
Class for calculating 3-body kinematic quantities.
virtual Double_t integTrapezoid()
Integrate the PDF using the simple trapezoid method.
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:47
virtual Double_t integrGaussLegendre()
Integrate the PDF using the Gauss-Legendre method.
const std::vector< Double_t > alphaLCoeffs_
Coefficients of alpha for the left Gaussian.