laura is hosted by Hepforge, IPPP Durham
Laura++  v3r0p1
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauAbsFitModel.hh
Go to the documentation of this file.
1 
2 // Copyright University of Warwick 2004 - 2014.
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 
49 #ifndef LAU_ABS_FIT_MODEL
50 #define LAU_ABS_FIT_MODEL
51 
52 #include "TMatrixD.h"
53 #include "TString.h"
54 #include "TStopwatch.h"
55 #include "TVectorDfwd.h"
56 
57 #include <iosfwd>
58 #include <set>
59 #include <vector>
60 
61 #include "LauFitObject.hh"
62 #include "LauFormulaPar.hh"
63 #include "LauSimFitSlave.hh"
64 // LauSPlot included to get LauSPlot::NameSet typedef
65 #include "LauSPlot.hh"
66 
67 class TMessage;
68 class TMonitor;
69 class TSocket;
70 class TTree;
71 class LauAbsCoeffSet;
72 class LauAbsPdf;
73 class LauComplex;
74 class LauFitDataTree;
75 class LauFitNtuple;
76 class LauGenNtuple;
77 class LauAbsRValue;
78 class LauParameter;
79 
80 class LauAbsFitModel : public LauFitObject, public LauSimFitSlave {
81 
82  public:
85 
87  virtual ~LauAbsFitModel();
88 
90  Bool_t useDP() const { return usingDP_; }
91 
93 
96  void useDP(Bool_t usingDP) { usingDP_ = usingDP; }
97 
99  Bool_t doSFit() const { return doSFit_; }
100 
102 
106  void doSFit( const TString& sWeightBranchName, Double_t scaleFactor = 1.0 );
107 
109  Bool_t doEMLFit() const {return emlFit_;}
110 
112 
115  void doEMLFit(Bool_t emlFit) {emlFit_ = emlFit;}
116 
118  virtual Bool_t twoStageFit() const {return twoStageFit_;}
119 
121 
131  virtual void twoStageFit(Bool_t doTwoStageFit) {twoStageFit_ = doTwoStageFit;}
132 
134  Bool_t useAsymmFitErrors() const {return useAsymmFitErrors_;}
135 
137 
140  void useAsymmFitErrors(Bool_t useAsymmErrors) {useAsymmFitErrors_ = useAsymmErrors;}
141 
143  Bool_t doPoissonSmearing() const {return poissonSmear_;}
144 
146 
149  void doPoissonSmearing(Bool_t poissonSmear) {poissonSmear_ = poissonSmear;}
150 
152  Bool_t enableEmbedding() const {return enableEmbedding_;}
153 
155 
158  void enableEmbedding(Bool_t enable) {enableEmbedding_ = enable;}
159 
161 
167  virtual void withinAsymErrorCalc(Bool_t inAsymErrCalc) {withinAsymErrorCalc_ = inAsymErrCalc;}
168 
170  Bool_t writeLatexTable() const {return writeLatexTable_;}
171 
173 
176  void writeLatexTable(Bool_t writeTable) {writeLatexTable_ = writeTable;}
177 
179 
185  void writeSPlotData(const TString& fileName, const TString& treeName, Bool_t storeDPEfficiency, const TString& verbosity = "q");
186 
188  Bool_t writeSPlotData() const {return writeSPlotData_;}
189 
191  Bool_t storeDPEff() const {return storeDPEff_;}
192 
194  Bool_t useRandomInitFitPars() const {return randomFit_;}
195 
197  void useRandomInitFitPars(Bool_t boolean) {randomFit_ = boolean;}
198 
200 
204  void setNExpts(UInt_t nExperiments, UInt_t firstExperiment = 0) {
205  nExpt_ = nExperiments;
206  firstExpt_ = firstExperiment;
207  }
208 
210  UInt_t eventsPerExpt() const {return evtsPerExpt_;}
211 
213  UInt_t nExpt() const {return nExpt_;}
214 
216  UInt_t firstExpt() const {return firstExpt_;}
217 
219  UInt_t iExpt() const {return iExpt_;}
220 
222 
225  virtual void setBkgndClassNames( const std::vector<TString>& names );
226 
228  inline UInt_t nBkgndClasses() const {return bkgndClassNames_.size();}
229 
231 
234  virtual void setNSigEvents(LauParameter* nSigEvents) = 0;
235 
237 
243  virtual void setNBkgndEvents(LauParameter* nBkgndEvents) = 0;
244 
246 
249  virtual void setAmpCoeffSet(LauAbsCoeffSet* coeffSet) = 0;
250 
252 
260  void compareFitData(UInt_t toyMCScale = 10, const TString& mcFileName = "fitToyMC.root",
261  const TString& tableFileName = "fitToyMCTable.tex", Bool_t poissonSmearing = kTRUE);
262 
264 
268  virtual void weightEvents( const TString& dataFileName, const TString& dataTreeName ) = 0;
269 
271 
278  void run(const TString& applicationCode, const TString& dataFileName, const TString& dataTreeName,
279  const TString& histFileName, const TString& tableFileName = "");
280 
282 
290  void runSlave(const TString& dataFileName, const TString& dataTreeName,
291  const TString& histFileName, const TString& tableFileName = "",
292  const TString& addressMaster = "localhost", const UInt_t portMaster = 9090);
293 
295 
302  virtual void setParsFromMinuit(Double_t* par, Int_t npar);
303 
305 
309  virtual Double_t getTotNegLogLikelihood();
310 
312 
318  virtual void addConstraint(const TString& formula, const std::vector<TString>& pars, const Double_t mean, const Double_t width);
319 
320  protected:
321 
322  // Some typedefs
323 
325  typedef std::vector<LauAbsPdf*> LauPdfList;
327  typedef std::vector<LauParameter*> LauParameterPList;
329  typedef std::vector<LauAbsRValue*> LauAbsRValuePList;
331  typedef std::set<LauParameter*> LauParameterPSet;
333  typedef std::vector<LauParameter> LauParameterList;
335  typedef std::map<UInt_t,TString> LauBkgndClassMap;
336 
338  void clearFitParVectors();
339 
341  void clearExtraVarVectors();
342 
344 
350  virtual void generate(const TString& dataFileName, const TString& dataTreeName, const TString& histFileName, const TString& tableFileNameBase);
351 
353 
356  virtual Bool_t genExpt() = 0;
357 
359 
365  void fit(const TString& dataFileName, const TString& dataTreeName, const TString& histFileName, const TString& tableFileNameBase);
366 
368 
374  void fitSlave(const TString& dataFileName, const TString& dataTreeName, const TString& histFileName, const TString& tableFileNameBase);
375 
377  void fitExpt();
378 
380 
383  Bool_t runMinimisation();
384 
386 
390  void createFitToyMC(const TString& mcFileName, const TString& tableFileName);
391 
393 
397  virtual UInt_t readExperimentData( const UInt_t exptIndex );
398 
400 
404  Bool_t cacheFitData(const TString& dataFileName, const TString& dataTreeName);
405 
407  virtual void cacheInputFitVars() = 0;
408 
410  virtual void cacheInputSWeights();
411 
413 
419  virtual void initialise() = 0;
420 
422  virtual void recalculateNormalisation() = 0;
423 
425  virtual void initialiseDPModels() = 0;
426 
434  virtual void updateCoeffs() = 0;
435 
437  virtual void propagateParUpdates() = 0;
438 
440 
444  Double_t getLogLikelihood( UInt_t iStart, UInt_t iEnd );
445 
447  Double_t getLogLikelihoodPenalty();
448 
450 
453  virtual Double_t getTotEvtLikelihood(UInt_t iEvt) = 0;
454 
456  virtual Double_t getEventSum() const = 0;
457 
459 
462  virtual void printEventInfo(UInt_t iEvt) const;
463 
465  virtual void printVarsInfo() const;
466 
468  virtual void checkInitFitParams() = 0;
469 
471 
474  virtual void prepareInitialParArray( TObjArray& array );
475 
477 
488  virtual void finaliseResults( const Int_t fitStat, const Double_t NLL, const TObjArray* parsFromMaster, const TMatrixD* covMat, TObjArray& parsToMaster );
489 
491 
494  virtual void finaliseFitResults(const TString& tableFileName) = 0;
495 
497 
500  virtual void writeOutTable(const TString& outputFile) = 0;
501 
503  virtual void storePerEvtLlhds() = 0;
504 
506  virtual void writeOutAllFitResults();
507 
509  virtual void calculateSPlotData();
510 
512  void setGenValues();
513 
515  virtual void setupBkgndVectors() = 0;
516 
518 
522  Bool_t validBkgndClass( const TString& className ) const;
523 
525 
529  UInt_t bkgndClassID( const TString& className ) const;
530 
532 
536  const TString& bkgndClassName( UInt_t classID ) const;
537 
539  void eventsPerExpt(UInt_t nEvents) {evtsPerExpt_ = nEvents;}
540 
542  virtual void setupGenNtupleBranches() = 0;
543 
545 
548  virtual void addGenNtupleIntegerBranch(const TString& name);
549 
551 
554  virtual void addGenNtupleDoubleBranch(const TString& name);
555 
557 
561  virtual void setGenNtupleIntegerBranchValue(const TString& name, Int_t value);
562 
564 
568  virtual void setGenNtupleDoubleBranchValue(const TString& name, Double_t value);
569 
571 
575  virtual Int_t getGenNtupleIntegerBranchValue(const TString& name) const;
576 
578 
582  virtual Double_t getGenNtupleDoubleBranchValue(const TString& name) const;
583 
585  virtual void fillGenNtupleBranches();
586 
588  virtual void setupSPlotNtupleBranches() = 0;
589 
591 
594  virtual void addSPlotNtupleIntegerBranch(const TString& name);
595 
597 
600  virtual void addSPlotNtupleDoubleBranch(const TString& name);
601 
603 
607  virtual void setSPlotNtupleIntegerBranchValue(const TString& name, Int_t value);
608 
610 
614  virtual void setSPlotNtupleDoubleBranchValue(const TString& name, Double_t value);
615 
617  virtual void fillSPlotNtupleBranches();
618 
620  virtual LauSPlot::NameSet variableNames() const = 0;
621 
623  virtual LauSPlot::NumbMap freeSpeciesNames() const = 0;
624 
626  virtual LauSPlot::NumbMap fixdSpeciesNames() const = 0;
627 
629  virtual LauSPlot::TwoDMap twodimPDFs() const = 0;
630 
632  virtual Bool_t splitSignal() const = 0;
633 
635  virtual Bool_t scfDPSmear() const = 0;
636 
638 
642  UInt_t addFitParameters(LauPdfList& pdfList);
643 
645  void addConParameters();
646 
648 
652  void printFitParameters(const LauPdfList& pdfList, std::ostream& fout) const;
653 
655 
658  void updateFitParameters(LauPdfList& pdfList);
659 
661 
665  void cacheInfo(LauPdfList& pdfList, const LauFitDataTree& theData);
666 
668 
672  Double_t prodPdfValue(LauPdfList& pdfList, UInt_t iEvt);
673 
675 
678  Bool_t pdfsDependOnDP() const {return pdfsDependOnDP_;}
679 
681 
684  void pdfsDependOnDP(Bool_t dependOnDP) { pdfsDependOnDP_ = dependOnDP; }
685 
687  const LauParameterPList& fitPars() const {return fitVars_;}
689 
691  const LauParameterPSet& resPars() const {return resVars_;}
693 
695  const LauParameterList& extraPars() const {return extraVars_;}
697 
699  const LauAbsRValuePList& conPars() const {return conVars_;}
701 
703  const LauFitNtuple* fitNtuple() const {return fitNtuple_;}
705 
707  const LauGenNtuple* genNtuple() const {return genNtuple_;}
709 
711  const LauGenNtuple* sPlotNtuple() const {return sPlotNtuple_;}
713 
715  const LauFitDataTree* fitData() const {return inputFitData_;}
717 
719  Double_t nll() const {return NLL_;}
720 
722  Int_t fitStatus() const {return fitStatus_;}
723 
725  const TMatrixD& covarianceMatrix() const {return covMatrix_;}
726 
727  private:
729  LauAbsFitModel(const LauAbsFitModel& rhs);
730 
733 
734  // Setup a struct to store information on constrained fit parameters
741  TString formula_;
743  std::vector<TString> conPars_;
745  Double_t mean_;
747  Double_t width_;
748  };
749 
751  std::vector<StoreConstraints> storeCon_;
752 
753  // Various control booleans
754 
756  Bool_t twoStageFit_;
766  Bool_t storeDPEff_;
768  Bool_t randomFit_;
770  Bool_t emlFit_;
772  Bool_t poissonSmear_;
776  Bool_t usingDP_;
779 
780  // Info on number of experiments and number of events
781 
783  UInt_t firstExpt_;
785  UInt_t nExpt_;
787  UInt_t evtsPerExpt_;
789  UInt_t iExpt_;
790 
793 
796 
799 
802 
803  // Input data and output ntuple
804 
813 
814  // Fit bookeeping variables
815 
817  Int_t fitStatus_;
819  Double_t NLL_;
821  TMatrixD covMatrix_;
823  UInt_t numberOKFits_;
825  UInt_t numberBadFits_;
827  UInt_t nParams_;
829  UInt_t nFreeParams_;
831  Double_t worstLogLike_;
834 
835  // Background class names
839  const TString nullString_;
840 
841  // sFit related variables
842 
844  Bool_t doSFit_;
848  std::vector<Double_t> sWeights_;
851 
852  // Fit timers
853 
855  TStopwatch timer_;
857  TStopwatch cumulTimer_;
858 
861 
862  // Comparison toy MC related variables
863 
872 
873  // sPlot related variables
874 
876  TString sPlotFileName_;
878  TString sPlotTreeName_;
881 
882  ClassDef(LauAbsFitModel,0) // Abstract interface to fit/toyMC model
883 };
884 
885 #endif
TString fitToyMCTableName_
The output table name for Toy MC.
Double_t mean_
The mean value of the Gaussian constraint to be applied.
virtual void addSPlotNtupleIntegerBranch(const TString &name)
Add a branch to the sPlot tree for storing an integer.
virtual Bool_t twoStageFit() const
Determine whether the two-stage fit is enabled.
virtual Bool_t genExpt()=0
The method that actually generates the toy MC events for the given experiment.
File containing declaration of LauFormulaPar class.
void createFitToyMC(const TString &mcFileName, const TString &tableFileName)
Create a toy MC sample from the fitted parameters.
UInt_t firstExpt() const
Obtain the number of the first experiment.
std::vector< LauParameter > LauParameterList
List of parameters.
virtual Double_t getEventSum() const =0
Returns the sum of the expected events over all hypotheses; used in the EML fit scenario.
UInt_t eventsPerExpt() const
Obtain the total number of events in the current experiment.
void setGenValues()
Make sure all parameters hold their genValue as the current value.
TString sPlotFileName_
The name of the sPlot file.
virtual void writeOutTable(const TString &outputFile)=0
Write the latex table.
Bool_t writeLatexTable() const
Determine whether writing out of the latex table is enabled.
Bool_t doSFit_
Option to perfom the sFit.
Bool_t writeSPlotData() const
Determine whether the sPlot data is to be written out.
TStopwatch timer_
The fit timer.
UInt_t nParams_
The number of fit parameters.
virtual Double_t getTotNegLogLikelihood()
Calculates the total negative log-likelihood.
LauAbsRValuePList conVars_
Internal vectors of Gaussian parameters.
Bool_t storeDPEff_
Option to store DP efficiencies in the sPlot ntuple.
void cacheInfo(LauPdfList &pdfList, const LauFitDataTree &theData)
Have all PDFs in the list cache the data.
virtual void setGenNtupleIntegerBranchValue(const TString &name, Int_t value)
Set the value of an integer branch in the gen tree.
void writeLatexTable(Bool_t writeTable)
Turn on or off the writing out of the latex table.
virtual void setupBkgndVectors()=0
Method to set up the storage for background-related quantities called by setBkgndClassNames.
LauGenNtuple * genNtuple_
The generated ntuple.
Bool_t withinAsymErrorCalc_
Flag to indicate if the asymmetric error calculation (e.g. MINOS) is currently running.
TString formula_
The formula to be used in the LauFormulaPar.
Bool_t useAsymmFitErrors() const
Determine whether calculation of asymmetric errors is enabled.
virtual void setupGenNtupleBranches()=0
Setup the generation ntuple branches.
UInt_t addFitParameters(LauPdfList &pdfList)
Add parameters of the PDFs in the list to the list of all fit parameters.
virtual void generate(const TString &dataFileName, const TString &dataTreeName, const TString &histFileName, const TString &tableFileNameBase)
Generate toy MC.
virtual void setBkgndClassNames(const std::vector< TString > &names)
Setup the background class names.
Bool_t useDP() const
Is the Dalitz plot term in the likelihood.
void doPoissonSmearing(Bool_t poissonSmear)
Turn Poisson smearing (for the toy MC generation) on or off.
std::multimap< TString, std::pair< TString, TString > > TwoDMap
Type to associate the name of the species that have 2D PDFs with the names of the two variables invol...
Definition: LauSPlot.hh:68
void compareFitData(UInt_t toyMCScale=10, const TString &mcFileName="fitToyMC.root", const TString &tableFileName="fitToyMCTable.tex", Bool_t poissonSmearing=kTRUE)
Specify that a toy MC sample should be created for a successful fit to an experiment.
Bool_t randomFit_
Option to randomise the initial values of the fit parameters.
std::vector< TString > conPars_
The list of LauParameter names to be used in the LauFormulaPar.
virtual void cacheInputSWeights()
Cache the value of the sWeights to be used in the sFit.
virtual void setGenNtupleDoubleBranchValue(const TString &name, Double_t value)
Set the value of a double branch in the gen tree.
virtual void setNSigEvents(LauParameter *nSigEvents)=0
Set the number of signal events.
void eventsPerExpt(UInt_t nEvents)
Set the number of events in the current experiment.
virtual void storePerEvtLlhds()=0
Store the per-event likelihood values.
virtual void printEventInfo(UInt_t iEvt) const
Prints the values of all the fit variables for the specified event - useful for diagnostics.
ClassDef(LauSimFitSlave, 0)
Bool_t pdfsDependOnDP() const
Do any of the PDFs have a dependence on the DP?
virtual ~LauAbsFitModel()
Destructor.
Int_t fitStatus() const
Access the fit status information.
Bool_t compareFitData_
Option to make toy from 1st successful experiment.
Bool_t writeLatexTable_
Option to output a Latex format table.
Double_t prodPdfValue(LauPdfList &pdfList, UInt_t iEvt)
Calculate the product of the per-event likelihoods of the PDFs in the list.
Bool_t emlFit_
Option to perform an extended ML fit.
LauFitDataTree * fitData()
virtual void addConstraint(const TString &formula, const std::vector< TString > &pars, const Double_t mean, const Double_t width)
Store constraint information for fit parameters.
std::vector< LauAbsPdf * > LauPdfList
List of Pdfs.
virtual Int_t getGenNtupleIntegerBranchValue(const TString &name) const
Get the value of an integer branch in the gen tree.
Bool_t poissonSmear_
Option to perform Poisson smearing.
virtual LauSPlot::NumbMap fixdSpeciesNames() const =0
Returns the names and yields of species that are fixed in the fit.
LauBkgndClassMap bkgndClassNames_
The background class names.
Bool_t twoStageFit_
Option to perform a two stage fit.
virtual void setupSPlotNtupleBranches()=0
Setup the branches of the sPlot tuple.
virtual void fillGenNtupleBranches()
Fill the gen tuple branches.
void fitSlave(const TString &dataFileName, const TString &dataTreeName, const TString &histFileName, const TString &tableFileNameBase)
Slaves required when performing a simultaneous fit.
std::set< LauParameter * > LauParameterPSet
Set of parameter pointers.
Bool_t useAsymmFitErrors_
Option to use asymmetric errors.
virtual void setSPlotNtupleDoubleBranchValue(const TString &name, Double_t value)
Set the value of a double branch in the sPlot tree.
void printFitParameters(const LauPdfList &pdfList, std::ostream &fout) const
Print the fit parameters for all PDFs in the list.
virtual UInt_t readExperimentData(const UInt_t exptIndex)
Read in the data for the specified experiment.
Bool_t enableEmbedding_
Option to enable embedding.
std::vector< LauAbsRValue * > LauAbsRValuePList
List of parameter pointers.
LauParameterList & extraPars()
LauFitNtuple * fitNtuple()
virtual Double_t getTotEvtLikelihood(UInt_t iEvt)=0
Calculates the likelihood for a given event.
TStopwatch cumulTimer_
The total fit timer.
virtual void propagateParUpdates()=0
This function (specific to each model) calculates anything that depends on the fit parameter values...
void addConParameters()
Add parameters to the list of Gaussian constrained parameters.
virtual void recalculateNormalisation()=0
Recalculate normalisation the signal DP model(s)
LauFitDataTree * inputFitData_
The input data.
const LauParameterList & extraPars() const
Access the extra variables.
void doEMLFit(Bool_t emlFit)
Choice to perform an extended maximum likelihood fit.
Bool_t doSFit() const
Return the flag to store the status of using an sFit or not.
void run(const TString &applicationCode, const TString &dataFileName, const TString &dataTreeName, const TString &histFileName, const TString &tableFileName="")
Start the toy generation / fitting.
std::vector< LauParameter * > LauParameterPList
List of parameter pointers.
LauParameterList extraVars_
Extra variables that aren&#39;t in the fit but are stored in the ntuple.
std::vector< StoreConstraints > storeCon_
Store the constraints for fit parameters until initialisation is complete.
TMatrixD covMatrix_
The fit covariance matrix.
Abstract interface to the fitting and toy MC model.
UInt_t iExpt() const
Obtain the number of the current experiment.
UInt_t numberBadFits_
The number of bad fits.
virtual void addGenNtupleIntegerBranch(const TString &name)
Add a branch to the gen tree for storing an integer.
const LauFitNtuple * fitNtuple() const
Access the fit ntuple.
virtual void prepareInitialParArray(TObjArray &array)
Package the initial fit parameters for transmission to the master.
UInt_t nExpt() const
Obtain the number of experiments.
virtual void withinAsymErrorCalc(Bool_t inAsymErrCalc)
Mark that the fit is calculating asymmetric errors.
Bool_t doPoissonSmearing() const
Determine whether Poisson smearing is enabled for the toy MC generation.
virtual Double_t getGenNtupleDoubleBranchValue(const TString &name) const
Get the value of a double branch in the gen tree.
const LauAbsRValuePList & conPars() const
Access the Gaussian constrained variables.
void setNExpts(UInt_t nExperiments, UInt_t firstExperiment=0)
Set the number of experiments and the first experiment.
virtual void setAmpCoeffSet(LauAbsCoeffSet *coeffSet)=0
Set the DP amplitude coefficients.
virtual void weightEvents(const TString &dataFileName, const TString &dataTreeName)=0
Reweighting - allows e.g. MC events to be weighted by the DP model.
std::map< TString, Double_t > NumbMap
Type to associate a category name with a double precision number, e.g. a yield or PDF value for a giv...
Definition: LauSPlot.hh:62
Bool_t doEMLFit() const
Determine whether an extended maximum likelihood fit it being performed.
std::map< UInt_t, TString > LauBkgndClassMap
A type to store background classes.
virtual void twoStageFit(Bool_t doTwoStageFit)
Turn on or off the two stage fit.
UInt_t numberOKFits_
The number of good fits.
virtual LauSPlot::NumbMap freeSpeciesNames() const =0
Returns the names and yields of species that are free in the fit.
Class to store the results from the toy MC generation into an ntuple.
Definition: LauGenNtuple.hh:32
File containing declaration of LauSPlot class.
virtual Bool_t splitSignal() const =0
Check if the signal is split into well-reconstructed and mis-reconstructed types. ...
LauParameterPList & fitPars()
Double_t worstLogLike_
The worst LL value found so far.
TString sPlotTreeName_
The name of the sPlot tree.
virtual void initialiseDPModels()=0
Initialise the DP models.
Class for defining the abstract interface for complex coefficient classes.
Double_t nll() const
Access the current NLL value.
LauAbsFitModel()
Constructor.
LauGenNtuple * sPlotNtuple_
The sPlot ntuple.
TString sPlotVerbosity_
Control the verbosity of the sFit.
const TString nullString_
An empty string.
void clearFitParVectors()
Clear the vectors containing fit parameters.
Class for defining the fit parameter objects.
Definition: LauParameter.hh:34
virtual void addSPlotNtupleDoubleBranch(const TString &name)
Add a branch to the sPlot tree for storing a double.
void clearExtraVarVectors()
Clear the vectors containing extra ntuple variables.
Struct to store constraint information until the fit is run.
virtual void setNBkgndEvents(LauParameter *nBkgndEvents)=0
Set the number of background events.
virtual void cacheInputFitVars()=0
Cache the input data values to calculate the likelihood during the fit.
void fitExpt()
Routine to perform the actual fit for a given experiment.
const LauGenNtuple * genNtuple() const
Access the gen ntuple.
LauGenNtuple * sPlotNtuple()
LauGenNtuple * genNtuple()
Double_t sWeightScaleFactor_
The sWeight scaling factor.
Bool_t storeDPEff() const
Determine whether the efficiency information should be stored in the sPlot ntuple.
const LauGenNtuple * sPlotNtuple() const
Access the sPlot ntuple.
UInt_t bkgndClassID(const TString &className) const
The number assigned to a background class.
virtual void writeOutAllFitResults()
Write out any fit results.
File containing declaration of LauSimFitSlave class.
Bool_t useRandomInitFitPars() const
Determine whether the initial values of the fit parameters, in particular the isobar coefficient para...
virtual void finaliseFitResults(const TString &tableFileName)=0
Write the results of the fit into the ntuple.
const LauFitDataTree * fitData() const
Access the data store.
UInt_t firstExpt_
The number of the first experiment to consider.
virtual void checkInitFitParams()=0
Update initial fit parameters if required.
virtual void printVarsInfo() const
Same as printEventInfo, but printing out the values of the variables in the fit.
Bool_t writeSPlotData_
Option to write sPlot data.
Bool_t validBkgndClass(const TString &className) const
Check if the given background class is in the list.
Bool_t fitToyMCPoissonSmear_
Option to perform Poisson smearing.
TString sWeightBranchName_
The name of the sWeight branch.
UInt_t iExpt_
The number of the current experiment.
LauParameterPList fitVars_
Internal vector of fit parameters.
virtual Bool_t scfDPSmear() const =0
Check if the mis-reconstructed signal is to be smeared in the DP.
Bool_t cacheFitData(const TString &dataFileName, const TString &dataTreeName)
Store variables from the input file into the internal data storage.
const LauParameterPSet & resPars() const
Access the fit variables which affect the DP normalisation.
virtual void finaliseResults(const Int_t fitStat, const Double_t NLL, const TObjArray *parsFromMaster, const TMatrixD *covMat, TObjArray &parsToMaster)
Perform all finalisation actions.
void fit(const TString &dataFileName, const TString &dataTreeName, const TString &histFileName, const TString &tableFileNameBase)
Perform the total fit.
void enableEmbedding(Bool_t enable)
Turn on or off embedding of events in the generation.
void pdfsDependOnDP(Bool_t dependOnDP)
Do any of the PDFs have a dependence on the DP?
virtual void setSPlotNtupleIntegerBranchValue(const TString &name, Int_t value)
Set the value of an integer branch in the sPlot tree.
LauAbsRValuePList & conPars()
UInt_t fitToyMCScale_
The scaling factor (toy vs data statistics)
Bool_t runMinimisation()
Routine to perform the minimisation.
File containing declaration of LauFitObject class.
virtual void fillSPlotNtupleBranches()
Fill the sPlot tuple.
virtual void updateCoeffs()=0
TString fitToyMCFileName_
The output file name for Toy MC.
Double_t width_
The width of the Gaussian constraint to be applied.
Bool_t usingDP_
Option to include the DP as part of the fit.
Class to store the results from the fit into an ntuple.
Definition: LauFitNtuple.hh:42
void runSlave(const TString &dataFileName, const TString &dataTreeName, const TString &histFileName, const TString &tableFileName="", const TString &addressMaster="localhost", const UInt_t portMaster=9090)
Start the slave process for simultaneous fitting.
virtual LauSPlot::TwoDMap twodimPDFs() const =0
Returns the species and variables for all 2D PDFs in the fit.
Double_t getLogLikelihoodPenalty()
Calculate the penalty terms to the log likelihood from Gaussian constraints.
Class for defining a complex number.
Definition: LauComplex.hh:47
UInt_t nBkgndClasses() const
Returns the number of background classes.
The base class for any slave process for simultaneous/combined fits.
const TString & bkgndClassName(UInt_t classID) const
Get the name of a background class from the number.
void useRandomInitFitPars(Bool_t boolean)
Randomise the initial values of the fit parameters, in particular the isobar coefficient parameters...
LauParameterPSet resVars_
Internal set of fit parameters upon which the DP normalisation depends.
void useDP(Bool_t usingDP)
Switch on/off the Dalitz plot term in the Likelihood (allows fits to other quantities, e.g. B mass)
Bool_t enableEmbedding() const
Determine whether embedding of events is enabled in the generation.
Double_t NLL_
The negative log-likelihood.
Class for defining the abstract interface for PDF classes.
Definition: LauAbsPdf.hh:41
Double_t getLogLikelihood(UInt_t iStart, UInt_t iEnd)
Calculate the sum of the log-likelihood over the specified events.
const TMatrixD & covarianceMatrix() const
Access the fit covariance matrix.
const LauParameterPList & fitPars() const
Access the fit variables.
UInt_t nExpt_
The number of experiments to consider.
LauFitNtuple * fitNtuple_
The fit ntuple.
virtual LauSPlot::NameSet variableNames() const =0
Returns the names of all variables in the fit.
UInt_t evtsPerExpt_
The number of events per experiment.
virtual void addGenNtupleDoubleBranch(const TString &name)
Add a branch to the gen tree for storing a double.
void useAsymmFitErrors(Bool_t useAsymmErrors)
Turn on or off the computation of asymmetric errors (e.g. MINOS routine in Minuit) ...
void updateFitParameters(LauPdfList &pdfList)
Update the fit parameters for all PDFs in the list.
Bool_t pdfsDependOnDP_
Option to state if pdfs depend on DP position.
LauParameterPSet & resPars()
TString outputTableName_
The output table name.
virtual void setParsFromMinuit(Double_t *par, Int_t npar)
This function sets the parameter values from Minuit.
Pure abstract base class for defining a parameter containing an R value.
Definition: LauAbsRValue.hh:29
Int_t fitStatus_
The status of the fit.
virtual void initialise()=0
Initialise the fit par vectors.
Class to store the input fit variables.
std::set< TString > NameSet
Type to store names, e.g. of the discriminating/control variables.
Definition: LauSPlot.hh:59
The abstract interface for the objects that control the calculation of the likelihood.
Definition: LauFitObject.hh:26
virtual void calculateSPlotData()
Calculate the sPlot data.
LauAbsFitModel & operator=(const LauAbsFitModel &rhs)
Copy assignment operator (not implemented)
std::vector< Double_t > sWeights_
The vector of sWeights.
UInt_t nFreeParams_
The number of free fit parameters.