laura is hosted by Hepforge, IPPP Durham
Laura++  v3r5
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauDPDepSumPdf.cc
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 
29 #include <iostream>
30 #include <vector>
31 using std::cout;
32 using std::cerr;
33 using std::endl;
34 using std::vector;
35 
36 #include "TMath.h"
37 #include "TSystem.h"
38 
39 #include "LauConstants.hh"
40 #include "LauDaughters.hh"
41 #include "LauEffModel.hh"
42 #include "LauParameter.hh"
43 #include "LauDPDepSumPdf.hh"
44 
46 
47 
49  const LauDaughters* daughters,
50  const TH2* dpHisto, Bool_t upperHalf, Bool_t useSpline) :
51  LauAbsPdf(pdf1 ? pdf1->varNames() : vector<TString>(), vector<LauAbsRValue*>(), pdf1 ? pdf1->getMinAbscissas() : LauFitData(), pdf1 ? pdf1->getMaxAbscissas() : LauFitData()),
52  daughters_( new LauDaughters(*daughters) ),
53  pdf1_(pdf1),
54  pdf2_(pdf2),
55  frac_(0),
56  fracVal_(0.5),
57  dpDependence_( new LauEffModel(daughters, 0) ),
58  dpAxis_( CentreDist )
59 {
60  // Constructor for the sum PDF.
61  // We are defining the sum as:
62  // f x (PDF1/S(PDF1)) + (1-f) x (PDF2/S(PDF2))
63  // where f is the fraction, x is multiplication, PDFi is the i'th PDF,
64  // and S(PDFi) is the integral of the i'th PDF.
65  // The value of the fraction is read from the DP histogram.
66 
67  if(useSpline) {
68  dpDependence_->setEffSpline( dpHisto, kFALSE, 0.0, 0.0, upperHalf, daughters->squareDP());
69  } else {
70  dpDependence_->setEffHisto( dpHisto, kTRUE, kFALSE, 0.0, 0.0, upperHalf, daughters->squareDP() );
71  }
72 
73  // So the first thing we have to do is check the pointers are all valid.
74  if (!pdf1 || !pdf2) {
75  cerr<<"ERROR in LauDPDepSumPdf constructor: one of the 2 PDF pointers is null."<<endl;
76  gSystem->Exit(EXIT_FAILURE);
77  }
78 
79  // Next check that the abscissa ranges are the same for each PDF
80  if (pdf1->getMinAbscissa() != pdf2->getMinAbscissa()) {
81  cerr<<"ERROR in LauDPDepSumPdf constructor: minimum abscissa values not the same for the two PDFs."<<endl;
82  gSystem->Exit(EXIT_FAILURE);
83  }
84  if (pdf1->getMaxAbscissa() != pdf2->getMaxAbscissa()) {
85  cerr<<"ERROR in LauDPDepSumPdf constructor: maximum abscissa values not the same for the two PDFs."<<endl;
86  gSystem->Exit(EXIT_FAILURE);
87  }
88 
89  // Also check that both PDFs are expecting the same number of input variables
90  if (pdf1->nInputVars() != pdf2->nInputVars()) {
91  cerr<<"ERROR in LauDPDepSumPdf constructor: number of input variables not the same for the two PDFs."<<endl;
92  gSystem->Exit(EXIT_FAILURE);
93  }
94 
95  // Also check that both PDFs are expecting the same variable name(s)
96  if (pdf1->varNames() != pdf2->varNames()) {
97  cerr<<"ERROR in LauDPDepSumPdf constructor: variable name(s) not the same for the two PDFs."<<endl;
98  gSystem->Exit(EXIT_FAILURE);
99  }
100 
101  // Then we need to grab all the parameters and pass them to the base class.
102  // This is so that when we are asked for them they can be put into the fit.
103  // The number of parameters is the number in PDF1 + the number in PDF2.
104  UInt_t nPar(pdf1->nParameters()+pdf2->nParameters());
105  vector<LauAbsRValue*> params; params.reserve(nPar);
106  vector<LauAbsRValue*>& pdf1pars = pdf1->getParameters();
107  vector<LauAbsRValue*>& pdf2pars = pdf2->getParameters();
108  for (vector<LauAbsRValue*>::iterator iter = pdf1pars.begin(); iter != pdf1pars.end(); ++iter) {
109  params.push_back(*iter);
110  }
111  for (vector<LauAbsRValue*>::iterator iter = pdf2pars.begin(); iter != pdf2pars.end(); ++iter) {
112  params.push_back(*iter);
113  }
114  this->addParameters(params);
115 
116  // Cache the normalisation factor
117  this->calcNorm();
118 }
119 
121  LauParameter* frac,
122  const LauDaughters* daughters,
123  const std::vector<Double_t>& fracCoeffs,
124  DPAxis dpAxis) :
125  LauAbsPdf(pdf1 ? pdf1->varNames() : vector<TString>(), vector<LauAbsRValue*>(), pdf1 ? pdf1->getMinAbscissas() : LauFitData(), pdf1 ? pdf1->getMaxAbscissas() : LauFitData()),
126  daughters_( new LauDaughters(*daughters) ),
127  pdf1_(pdf1),
128  pdf2_(pdf2),
129  frac_(frac),
130  fracVal_( frac ? frac->unblindValue() : 0.0 ),
131  dpDependence_( 0 ),
132  fracCoeffs_( fracCoeffs ),
133  dpAxis_( dpAxis )
134 {
135  // Constructor for the sum PDF.
136  // We are defining the sum as:
137  // f x (PDF1/S(PDF1)) + (1-f) x (PDF2/S(PDF2))
138  // where f is the fraction, x is multiplication, PDFi is the i'th PDF,
139  // and S(PDFi) is the integral of the i'th PDF.
140  // The value of the fraction has a polynomial dependence on one of
141  // the DP axes.
142 
143  // So the first thing we have to do is check the pointers are all valid.
144  if (!pdf1 || !pdf2) {
145  cerr<<"ERROR in LauDPDepSumPdf constructor: one of the 2 PDF pointers is null."<<endl;
146  gSystem->Exit(EXIT_FAILURE);
147  }
148  if ( !frac ) {
149  cerr<<"ERROR in LauDPDepSumPdf constructor: the fraction parameter pointer is null."<<endl;
150  gSystem->Exit(EXIT_FAILURE);
151  }
152 
153  // Next check that the abscissa ranges are the same for each PDF
154  if (pdf1->getMinAbscissa() != pdf2->getMinAbscissa()) {
155  cerr<<"ERROR in LauDPDepSumPdf constructor: minimum abscissa values not the same for the two PDFs."<<endl;
156  gSystem->Exit(EXIT_FAILURE);
157  }
158  if (pdf1->getMaxAbscissa() != pdf2->getMaxAbscissa()) {
159  cerr<<"ERROR in LauDPDepSumPdf constructor: maximum abscissa values not the same for the two PDFs."<<endl;
160  gSystem->Exit(EXIT_FAILURE);
161  }
162 
163  // Also check that both PDFs are expecting the same number of input variables
164  if (pdf1->nInputVars() != pdf2->nInputVars()) {
165  cerr<<"ERROR in LauDPDepSumPdf constructor: number of input variables not the same for the two PDFs."<<endl;
166  gSystem->Exit(EXIT_FAILURE);
167  }
168 
169  // Also check that both PDFs are expecting the same variable name(s)
170  if (pdf1->varNames() != pdf2->varNames()) {
171  cerr<<"ERROR in LauDPDepSumPdf constructor: variable name(s) not the same for the two PDFs."<<endl;
172  gSystem->Exit(EXIT_FAILURE);
173  }
174 
175  // Then we need to grab all the parameters and pass them to the base class.
176  // This is so that when we are asked for them they can be put into the fit.
177  // The number of parameters is the number in PDF1 + the number in PDF2.
178  UInt_t nPar( pdf1->nParameters() + pdf2->nParameters() + 1 );
179  vector<LauAbsRValue*> params; params.reserve(nPar);
180  params.push_back(frac);
181  vector<LauAbsRValue*>& pdf1pars = pdf1->getParameters();
182  vector<LauAbsRValue*>& pdf2pars = pdf2->getParameters();
183  for (vector<LauAbsRValue*>::iterator iter = pdf1pars.begin(); iter != pdf1pars.end(); ++iter) {
184  params.push_back(*iter);
185  }
186  for (vector<LauAbsRValue*>::iterator iter = pdf2pars.begin(); iter != pdf2pars.end(); ++iter) {
187  params.push_back(*iter);
188  }
189  this->addParameters(params);
190 
191  // Now check that we can find the fraction parameter ok
192  frac_ = this->findParameter("frac");
193  if (frac_ == 0) {
194  cerr<<"ERROR in LauDPDepSumPdf constructor: parameter \"frac\" not found."<<endl;
195  gSystem->Exit(EXIT_FAILURE);
196  }
197 
198  // Cache the normalisation factor
199  this->calcNorm();
200 }
201 
203 {
204  // Destructor
205  delete daughters_; daughters_ = 0;
206  delete dpDependence_; dpDependence_ = 0;
207 }
208 
210 {
211  // Check that the given abscissa is within the allowed range
212  if (!this->checkRange(abscissas)) {
213  gSystem->Exit(EXIT_FAILURE);
214  }
215 
216  LauAbscissas noDPVars(1);
217  noDPVars[0] = abscissas[0];
218 
219  // Evaluate the normalised PDF values
220  if ( pdf1_->isDPDependent() ) {
221  pdf1_->calcLikelihoodInfo(abscissas);
222  } else {
223  pdf1_->calcLikelihoodInfo(noDPVars);
224  }
225  if ( pdf2_->isDPDependent() ) {
226  pdf2_->calcLikelihoodInfo(abscissas);
227  } else {
228  pdf2_->calcLikelihoodInfo(noDPVars);
229  }
230  Double_t result1 = pdf1_->getLikelihood();
231  Double_t result2 = pdf2_->getLikelihood();
232 
233  // Determine the fraction
234  // The DP variables will be abscissas[nInputVars] and
235  // abscissas[nInputVars+1] (if present).
236  UInt_t nVars = this->nInputVars();
237  if ( abscissas.size() == nVars+2 ) {
238  Double_t m13Sq = abscissas[nVars];
239  Double_t m23Sq = abscissas[nVars+1];
240  LauKinematics* kinematics = daughters_->getKinematics();
241  if ( dpDependence_ ) {
242  kinematics->updateKinematics( m13Sq, m23Sq );
243  fracVal_ = dpDependence_->calcEfficiency( kinematics );
244  } else {
246  Double_t dpPos(0.0);
247  if ( dpAxis_ == M12 ) {
248  dpPos = kinematics->calcThirdMassSq(m13Sq,m23Sq);
249  } else if ( dpAxis_ == M13 ) {
250  dpPos = m13Sq;
251  } else if ( dpAxis_ == M23 ) {
252  dpPos = m23Sq;
253  } else if ( dpAxis_ == MMIN ) {
254  dpPos = TMath::Min( m13Sq, m23Sq );
255  } else if ( dpAxis_ == MMAX ) {
256  dpPos = TMath::Max( m13Sq, m23Sq );
257  } else {
258  dpPos = kinematics->distanceFromDPCentre(m13Sq,m23Sq);
259  }
260  this->scaleFrac( dpPos );
261  }
262  }
263 
264  // Add them together
265  Double_t result = fracVal_ * result1 + (1.0-fracVal_) * result2;
266  this->setUnNormPDFVal(result);
267 }
268 
269 void LauDPDepSumPdf::scaleFrac( Double_t dpPos )
270 {
271  Int_t power = 1;
272  for (std::vector<Double_t>::const_iterator iter = fracCoeffs_.begin(); iter != fracCoeffs_.end(); ++iter) {
273  Double_t coeff = (*iter);
274  fracVal_ += coeff * TMath::Power(dpPos,power);
275  ++power;
276  }
277 }
278 
280 {
281  // Nothing to do here, since it is already normalized
282  this->setNorm(1.0);
283 }
284 
286 {
287  // This method gives you the maximum possible height of the PDF.
288  // It combines the maximum heights of the two individual PDFs.
289  // So it would give the true maximum if the two individual maxima coincided.
290  // It is guaranteed to always be >= the true maximum.
291 
292  // Update the heights of the individual PDFs
293  pdf1_->calcPDFHeight( kinematics );
294  pdf2_->calcPDFHeight( kinematics );
295 
296  // Get the up to date parameter values
297  if ( dpDependence_ ) {
298  fracVal_ = dpDependence_->calcEfficiency( kinematics );
299  } else {
301  Double_t dpPos(0.0);
302  if ( dpAxis_ == M12 ) {
303  dpPos = kinematics->getm12Sq();
304  } else if ( dpAxis_ == M13 ) {
305  dpPos = kinematics->getm13Sq();
306  } else if ( dpAxis_ == M23 ) {
307  dpPos = kinematics->getm23Sq();
308  } else if ( dpAxis_ == MMIN ) {
309  Double_t m13Sq = kinematics->getm13Sq();
310  Double_t m23Sq = kinematics->getm23Sq();
311  dpPos = TMath::Min( m13Sq, m23Sq );
312  } else if ( dpAxis_ == MMAX ) {
313  Double_t m13Sq = kinematics->getm13Sq();
314  Double_t m23Sq = kinematics->getm23Sq();
315  dpPos = TMath::Max( m13Sq, m23Sq );
316  } else {
317  dpPos = kinematics->distanceFromDPCentre();
318  }
319  this->scaleFrac( dpPos );
320  }
321 
322  // Find the (un-normalised) individual PDF maxima
323  Double_t height1 = pdf1_->getMaxHeight();
324  Double_t height2 = pdf2_->getMaxHeight();
325 
326  // Get the individual PDF normalisation factors
327  Double_t norm1 = pdf1_->getNorm();
328  Double_t norm2 = pdf2_->getNorm();
329 
330  // Calculate the normalised individual PDF maxima
331  height1 /= norm1;
332  height2 /= norm2;
333 
334  // Combine these heights together
335  Double_t height = fracVal_ * height1 + (1-fracVal_) * height2;
336  this->setMaxHeight(height);
337 }
338 
339 // Override the base class methods for cacheInfo and calcLikelihoodInfo(UInt_t iEvt).
340 // For both of these we delegate to the two constituent PDFs.
341 
343 {
344  // delegate to the two sub-PDFs to cache their information
345  pdf1_->cacheInfo(inputData);
346  pdf2_->cacheInfo(inputData);
347 
348  // now check that the DP variables are included in the data
349  Bool_t hasBranch = inputData.haveBranch( "m13Sq" );
350  hasBranch &= inputData.haveBranch( "m23Sq" );
351  if (!hasBranch) {
352  cerr<<"ERROR in LauDPDepSumPdf::cacheInfo : Input data does not contain Dalitz plot variables m13Sq and/or m23Sq."<<endl;
353  return;
354  }
355 
356  // determine whether we are caching our PDF value
357  Bool_t doCaching( this->nFixedParameters() == this->nParameters() );
358  this->cachePDF( doCaching );
359 
360  if ( !doCaching ) {
361  // in this case we seem to be doing a fit where the parameters are floating
362  // so need to mark that the PDF height is no longer up to date
363  this->heightUpToDate(kFALSE);
364  }
365 
366  // clear the vector and reserve enough space
367  UInt_t nEvents = inputData.nEvents();
368  fractions_.clear();
369  fractions_.reserve(nEvents);
370 
371  // loop through the events, determine the fraction and store
372  for (UInt_t iEvt = 0; iEvt < nEvents; iEvt++) {
373 
374  const LauFitData& dataValues = inputData.getData(iEvt);
375 
376  Double_t m13Sq = dataValues.find("m13Sq")->second;
377  Double_t m23Sq = dataValues.find("m23Sq")->second;
378 
379  LauKinematics* kinematics = daughters_->getKinematics();
380  if ( dpDependence_ ) {
381  // if we're using the histogram then just
382  // determine the fraction and store
383  kinematics->updateKinematics( m13Sq, m23Sq );
384  fracVal_ = dpDependence_->calcEfficiency( kinematics );
385  } else {
386  // if we're scaling the fraction parameter then we
387  // just store the scaling info since the parameter
388  // might be floating
390  Double_t dpPos(0.0);
391  if ( dpAxis_ == M12 ) {
392  dpPos = kinematics->calcThirdMassSq(m13Sq,m23Sq);
393  } else if ( dpAxis_ == M13 ) {
394  dpPos = m13Sq;
395  } else if ( dpAxis_ == M23 ) {
396  dpPos = m23Sq;
397  } else if ( dpAxis_ == MMIN ) {
398  dpPos = TMath::Min( m13Sq, m23Sq );
399  } else if ( dpAxis_ == MMAX ) {
400  dpPos = TMath::Max( m13Sq, m23Sq );
401  } else {
402  dpPos = kinematics->distanceFromDPCentre(m13Sq,m23Sq);
403  }
404  this->scaleFrac( dpPos );
406  }
407 
408  fractions_.push_back( fracVal_ );
409  }
410 }
411 
413 {
414  // Get the fraction value for this event
415  fracVal_ = fractions_[iEvt];
416  if ( frac_ ) {
417  // if we're scaling the parameter then need to add the
418  // current value of the parameter
420  }
421 
422  // Evaluate the normalised PDF values
423  pdf1_->calcLikelihoodInfo(iEvt);
424  pdf2_->calcLikelihoodInfo(iEvt);
425  Double_t result1 = pdf1_->getLikelihood();
426  Double_t result2 = pdf2_->getLikelihood();
427 
428  // Add them together
429  Double_t result = fracVal_ * result1 + (1-fracVal_) * result2;
430  this->setUnNormPDFVal(result);
431 }
432 
virtual void cacheInfo(const LauFitDataTree &inputData)
Cache information from data.
virtual void calcLikelihoodInfo(const LauAbscissas &abscissas)
Calculate the likelihood (and intermediate info) for a given abscissa.
virtual void setUnNormPDFVal(Double_t unNormPDFVal)
Set the unnormalised likelihood.
Definition: LauAbsPdf.hh:383
virtual Double_t getMinAbscissa() const
Retrieve the minimum value of the (primary) abscissa.
Definition: LauAbsPdf.hh:131
DPAxis
Define possibilties for the DP axes.
LauDPDepSumPdf(LauAbsPdf *pdf1, LauAbsPdf *pdf2, const LauDaughters *daughters, const TH2 *dpHisto, Bool_t upperHalf=kFALSE, Bool_t useSpline=kFALSE)
Constructor - fraction determined by 2D histogram.
virtual Bool_t heightUpToDate() const
Check if the maximum height of the PDF is up to date.
Definition: LauAbsPdf.hh:278
ClassImp(LauAbsCoeffSet)
virtual LauAbsRValue * findParameter(const TString &parName)
Retrieve the specified parameter.
Definition: LauAbsPdf.cc:395
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:47
virtual UInt_t nParameters() const
Retrieve the number of PDF parameters.
Definition: LauAbsPdf.hh:106
virtual void calcNorm()
Calculate the normalisation.
LauAbsPdf * pdf2_
Second PDF.
File containing declaration of LauDaughters class.
void scaleFrac(Double_t dpPos)
Scale fraction according to DP position.
virtual void calcPDFHeight(const LauKinematics *kinematics)=0
Calculate the maximum height of the PDF.
virtual void setNorm(Double_t norm)
Set the normalisation factor.
Definition: LauAbsPdf.hh:339
virtual Bool_t checkRange(const LauAbscissas &abscissas) const
Check that all abscissas are within their allowed ranges.
Definition: LauAbsPdf.cc:227
LauAbsRValue * frac_
Fractional contribution of first PDF to the final PDF.
Class for defining a PDF that is the DP-dependent sum of two other PDFs.
std::map< TString, Double_t > LauFitData
Type for holding event data.
Double_t getm23Sq() const
Get the m23 invariant mass square.
Double_t distanceFromDPCentre() const
Calculate the distance from the currently set (m13Sq, m23Sq) point to the centre of the Dalitz plot (...
virtual Double_t unblindValue() const =0
The unblinded value of the parameter.
std::vector< Double_t > fractions_
Cached values of fractions.
virtual Double_t getMaxHeight() const
Retrieve the maximum height.
Definition: LauAbsPdf.hh:235
virtual ~LauDPDepSumPdf()
Destructor.
File containing declaration of LauDPDepSumPdf class.
LauAbsPdf * pdf1_
First PDF.
Double_t calcEfficiency(const LauKinematics *kinematics) const
Determine the efficiency for a given point in the Dalitz plot.
Definition: LauEffModel.cc:268
Double_t calcThirdMassSq(const Double_t firstMassSq, const Double_t secondMassSq) const
Calculate the third invariant mass square from the two provided (e.g. mjkSq from mijSq and mikSq) ...
File containing declaration of LauParameter class.
virtual void calcPDFHeight(const LauKinematics *kinematics)
Calculate the PDF height.
LauKinematics * getKinematics()
Retrieve the Dalitz plot kinematics.
virtual std::vector< TString > varNames() const
Retrieve the names of the abscissas.
Definition: LauAbsPdf.cc:117
const std::vector< Double_t > fracCoeffs_
Polynomial used to scale fraction.
virtual Double_t getMaxAbscissa() const
Retrieve the maximum value of the (primary) abscissa.
Definition: LauAbsPdf.hh:137
Double_t fracVal_
Fractional contribution of first PDF to the final PDF.
virtual Bool_t isDPDependent() const
Specifies whether or not the PDF is DP dependent.
Definition: LauAbsPdf.hh:125
virtual void setMaxHeight(Double_t maxHeight)
Set the maximum height.
Definition: LauAbsPdf.hh:345
virtual void addParameters(std::vector< LauAbsRValue * > &params)
Add parameters to the PDF.
Definition: LauAbsPdf.cc:437
DPAxis dpAxis_
The DP axis we depend on.
Class for defining the fit parameter objects.
Definition: LauParameter.hh:49
virtual const std::vector< LauAbsRValue * > & getParameters() const
Retrieve the parameters of the PDF, e.g. so that they can be loaded into a fit.
Definition: LauAbsPdf.hh:253
void updateKinematics(const Double_t m13Sq, const Double_t m23Sq)
Update all kinematic quantities based on the DP co-ordinates m13Sq and m23Sq.
const LauFitData & getData(UInt_t iEvt) const
Retrieve the data for a given event.
File containing declaration of LauEffModel class.
Double_t getm12Sq() const
Get the m12 invariant mass square.
virtual Bool_t cachePDF() const
Check if the PDF is to be cached.
Definition: LauAbsPdf.hh:290
Class that implements the efficiency description across the signal Dalitz plot.
Definition: LauEffModel.hh:51
virtual Double_t getLikelihood() const
Retrieve the normalised likelihood value.
Definition: LauAbsPdf.cc:368
Double_t getm13Sq() const
Get the m13 invariant mass square.
virtual void calcLikelihoodInfo(const LauAbscissas &abscissas)=0
Calculate the likelihood (and all associated information) given value(s) of the abscissa(s) ...
File containing LauConstants namespace.
Double_t unblindValue() const
The unblinded value of the parameter.
Bool_t haveBranch(const TString &name) const
Check if the named branch is stored.
Class for defining the abstract interface for PDF classes.
Definition: LauAbsPdf.hh:55
Class for calculating 3-body kinematic quantities.
virtual UInt_t nFixedParameters() const
Retrieve the number of fixed PDF parameters.
Definition: LauAbsPdf.cc:127
virtual void cacheInfo(const LauFitDataTree &inputData)
Cache information from data.
Definition: LauAbsPdf.cc:255
LauDaughters * daughters_
Daughter particles.
UInt_t nEvents() const
Retrieve the number of events.
LauEffModel * dpDependence_
DP dependence.
virtual UInt_t nInputVars() const
Retrieve the number of abscissas.
Definition: LauAbsPdf.hh:118
Pure abstract base class for defining a parameter containing an R value.
Definition: LauAbsRValue.hh:43
virtual Double_t getNorm() const
Retrieve the normalisation factor.
Definition: LauAbsPdf.hh:216
Class to store the input fit variables.
std::vector< Double_t > LauAbscissas
The type used for containing multiple abscissa values.
Definition: LauAbsPdf.hh:59