laura is hosted by Hepforge, IPPP Durham
Laura++  v3r0
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 // LauSPlot included to get LauSPlot::NameSet typedef
64 #include "LauSPlot.hh"
65 
66 class TMessage;
67 class TMonitor;
68 class TSocket;
69 class TTree;
70 class LauAbsCoeffSet;
71 class LauAbsPdf;
72 class LauComplex;
73 class LauFitDataTree;
74 class LauFitNtuple;
75 class LauGenNtuple;
76 class LauAbsRValue;
77 class LauParameter;
78 
79 class LauAbsFitModel : public LauFitObject {
80 
81  public:
84 
86  virtual ~LauAbsFitModel();
87 
89  Bool_t useDP() const { return usingDP_; }
90 
92 
95  void useDP(Bool_t usingDP) { usingDP_ = usingDP; }
96 
98  Bool_t doSFit() const { return doSFit_; }
99 
101 
105  void doSFit( const TString& sWeightBranchName, Double_t scaleFactor = 1.0 );
106 
108  Bool_t doEMLFit() const {return emlFit_;}
109 
111 
114  void doEMLFit(Bool_t emlFit) {emlFit_ = emlFit;}
115 
117  virtual Bool_t twoStageFit() const {return twoStageFit_;}
118 
120 
130  virtual void twoStageFit(Bool_t doTwoStageFit) {twoStageFit_ = doTwoStageFit;}
131 
133  Bool_t useAsymmFitErrors() const {return useAsymmFitErrors_;}
134 
136 
139  void useAsymmFitErrors(Bool_t useAsymmErrors) {useAsymmFitErrors_ = useAsymmErrors;}
140 
142  Bool_t doPoissonSmearing() const {return poissonSmear_;}
143 
145 
148  void doPoissonSmearing(Bool_t poissonSmear) {poissonSmear_ = poissonSmear;}
149 
151  Bool_t enableEmbedding() const {return enableEmbedding_;}
152 
154 
157  void enableEmbedding(Bool_t enable) {enableEmbedding_ = enable;}
158 
160 
166  virtual void withinAsymErrorCalc(Bool_t inAsymErrCalc) {withinAsymErrorCalc_ = inAsymErrCalc;}
167 
169  Bool_t writeLatexTable() const {return writeLatexTable_;}
170 
172 
175  void writeLatexTable(Bool_t writeTable) {writeLatexTable_ = writeTable;}
176 
178 
184  void writeSPlotData(const TString& fileName, const TString& treeName, Bool_t storeDPEfficiency, const TString& verbosity = "q");
185 
187  Bool_t writeSPlotData() const {return writeSPlotData_;}
188 
190  Bool_t storeDPEff() const {return storeDPEff_;}
191 
193  Bool_t useRandomInitFitPars() const {return randomFit_;}
194 
196  void useRandomInitFitPars(Bool_t boolean) {randomFit_ = boolean;}
197 
199 
203  void setNExpts(UInt_t nExperiments, UInt_t firstExperiment = 0) {
204  nExpt_ = nExperiments;
205  firstExpt_ = firstExperiment;
206  }
207 
209  UInt_t eventsPerExpt() const {return evtsPerExpt_;}
210 
212  UInt_t nExpt() const {return nExpt_;}
213 
215  UInt_t firstExpt() const {return firstExpt_;}
216 
218  UInt_t iExpt() const {return iExpt_;}
219 
221 
224  virtual void setBkgndClassNames( const std::vector<TString>& names );
225 
227  inline UInt_t nBkgndClasses() const {return bkgndClassNames_.size();}
228 
230 
233  virtual void setNSigEvents(LauParameter* nSigEvents) = 0;
234 
236 
242  virtual void setNBkgndEvents(LauParameter* nBkgndEvents) = 0;
243 
245 
248  virtual void setAmpCoeffSet(LauAbsCoeffSet* coeffSet) = 0;
249 
251 
259  void compareFitData(UInt_t toyMCScale = 10, const TString& mcFileName = "fitToyMC.root",
260  const TString& tableFileName = "fitToyMCTable.tex", Bool_t poissonSmearing = kTRUE);
261 
263 
267  virtual void weightEvents( const TString& dataFileName, const TString& dataTreeName ) = 0;
268 
270 
277  void run(const TString& applicationCode, const TString& dataFileName, const TString& dataTreeName,
278  const TString& histFileName, const TString& tableFileName = "");
279 
281 
289  void runSlave(const TString& dataFileName, const TString& dataTreeName,
290  const TString& histFileName, const TString& tableFileName = "",
291  const TString& addressMaster = "localhost", const UInt_t portMaster = 9090);
292 
294 
301  virtual void setParsFromMinuit(Double_t* par, Int_t npar);
302 
304 
308  Double_t getTotNegLogLikelihood();
309 
311 
317  virtual void addConstraint(const TString& formula, const std::vector<TString>& pars, const Double_t mean, const Double_t width);
318 
319  protected:
320 
321  // Some typedefs
322 
324  typedef std::vector<LauAbsPdf*> LauPdfList;
326  typedef std::vector<LauParameter*> LauParameterPList;
328  typedef std::vector<LauAbsRValue*> LauAbsRValuePList;
330  typedef std::set<LauParameter*> LauParameterPSet;
332  typedef std::vector<LauParameter> LauParameterList;
334  typedef std::map<UInt_t,TString> LauBkgndClassMap;
335 
337  void initSockets();
338 
340  void clearFitParVectors();
341 
343  void clearExtraVarVectors();
344 
346 
352  virtual void generate(const TString& dataFileName, const TString& dataTreeName, const TString& histFileName, const TString& tableFileNameBase);
353 
355 
358  virtual Bool_t genExpt() = 0;
359 
361 
367  void fit(const TString& dataFileName, const TString& dataTreeName, const TString& histFileName, const TString& tableFileNameBase);
368 
370 
376  void fitSlave(const TString& dataFileName, const TString& dataTreeName, const TString& histFileName, const TString& tableFileNameBase);
377 
379  void fitExpt();
380 
382 
385  Bool_t runMinimisation();
386 
388 
392  void createFitToyMC(const TString& mcFileName, const TString& tableFileName);
393 
395 
399  Bool_t cacheFitData(const TString& dataFileName, const TString& dataTreeName);
400 
402  virtual void cacheInputFitVars() = 0;
403 
405  virtual void cacheInputSWeights();
406 
408 
414  virtual void initialise() = 0;
415 
417  virtual void recalculateNormalisation() = 0;
418 
420  virtual void initialiseDPModels() = 0;
421 
429  virtual void updateCoeffs() = 0;
430 
432  virtual void propagateParUpdates() = 0;
433 
435 
439  Double_t getLogLikelihood( UInt_t iStart, UInt_t iEnd );
440 
442  Double_t getLogLikelihoodPenalty();
443 
445 
448  virtual Double_t getTotEvtLikelihood(UInt_t iEvt) = 0;
449 
451  virtual Double_t getEventSum() const = 0;
452 
454 
457  virtual void printEventInfo(UInt_t iEvt) const;
458 
460  virtual void printVarsInfo() const;
461 
463  virtual void checkInitFitParams() = 0;
464 
466 
469  virtual void finaliseFitResults(const TString& tableFileName) = 0;
470 
472 
475  virtual void writeOutTable(const TString& outputFile) = 0;
476 
478  virtual void storePerEvtLlhds() = 0;
479 
481  virtual void writeOutAllFitResults();
482 
484  virtual void calculateSPlotData();
485 
487  void setGenValues();
488 
490  virtual void setupBkgndVectors() = 0;
491 
493 
497  Bool_t validBkgndClass( const TString& className ) const;
498 
500 
504  UInt_t bkgndClassID( const TString& className ) const;
505 
507 
511  const TString& bkgndClassName( UInt_t classID ) const;
512 
514  void eventsPerExpt(UInt_t nEvents) {evtsPerExpt_ = nEvents;}
515 
517  virtual void setupGenNtupleBranches() = 0;
518 
520 
523  virtual void addGenNtupleIntegerBranch(const TString& name);
524 
526 
529  virtual void addGenNtupleDoubleBranch(const TString& name);
530 
532 
536  virtual void setGenNtupleIntegerBranchValue(const TString& name, Int_t value);
537 
539 
543  virtual void setGenNtupleDoubleBranchValue(const TString& name, Double_t value);
544 
546 
550  virtual Int_t getGenNtupleIntegerBranchValue(const TString& name) const;
551 
553 
557  virtual Double_t getGenNtupleDoubleBranchValue(const TString& name) const;
558 
560  virtual void fillGenNtupleBranches();
561 
563  virtual void setupSPlotNtupleBranches() = 0;
564 
566 
569  virtual void addSPlotNtupleIntegerBranch(const TString& name);
570 
572 
575  virtual void addSPlotNtupleDoubleBranch(const TString& name);
576 
578 
582  virtual void setSPlotNtupleIntegerBranchValue(const TString& name, Int_t value);
583 
585 
589  virtual void setSPlotNtupleDoubleBranchValue(const TString& name, Double_t value);
590 
592  virtual void fillSPlotNtupleBranches();
593 
595  virtual LauSPlot::NameSet variableNames() const = 0;
596 
598  virtual LauSPlot::NumbMap freeSpeciesNames() const = 0;
599 
601  virtual LauSPlot::NumbMap fixdSpeciesNames() const = 0;
602 
604  virtual LauSPlot::TwoDMap twodimPDFs() const = 0;
605 
607  virtual Bool_t splitSignal() const = 0;
608 
610  virtual Bool_t scfDPSmear() const = 0;
611 
613 
617  UInt_t addFitParameters(LauPdfList& pdfList);
618 
620  void addConParameters();
621 
623 
627  void printFitParameters(const LauPdfList& pdfList, std::ostream& fout) const;
628 
630 
633  void updateFitParameters(LauPdfList& pdfList);
634 
636 
640  void cacheInfo(LauPdfList& pdfList, const LauFitDataTree& theData);
641 
643 
647  Double_t prodPdfValue(LauPdfList& pdfList, UInt_t iEvt);
648 
650 
653  Bool_t pdfsDependOnDP() const {return pdfsDependOnDP_;}
654 
656 
659  void pdfsDependOnDP(Bool_t dependOnDP) { pdfsDependOnDP_ = dependOnDP; }
660 
662  const LauParameterPList& fitPars() const {return fitVars_;}
664 
666  const LauParameterPSet& resPars() const {return resVars_;}
668 
670  const LauParameterList& extraPars() const {return extraVars_;}
672 
674  const LauAbsRValuePList& conPars() const {return conVars_;}
676 
678  const LauFitNtuple* fitNtuple() const {return fitNtuple_;}
680 
682  const LauGenNtuple* genNtuple() const {return genNtuple_;}
684 
686  const LauGenNtuple* sPlotNtuple() const {return sPlotNtuple_;}
688 
690  const LauFitDataTree* fitData() const {return inputFitData_;}
692 
694  Double_t nll() const {return NLL_;}
695 
697  Int_t fitStatus() const {return fitStatus_;}
698 
700  const TMatrixD& covarianceMatrix() const {return covMatrix_;}
701 
702  private:
704  LauAbsFitModel(const LauAbsFitModel& rhs);
705 
708 
709  // Setup a struct to store information on constrained fit parameters
716  TString formula_;
718  std::vector<TString> conPars_;
720  Double_t mean_;
722  Double_t width_;
723  };
724 
726  std::vector<StoreConstraints> storeCon_;
727 
728  // Various control booleans
729 
731  Bool_t twoStageFit_;
741  Bool_t storeDPEff_;
743  Bool_t randomFit_;
745  Bool_t emlFit_;
747  Bool_t poissonSmear_;
751  Bool_t usingDP_;
754 
755  // Info on number of experiments and number of events
756 
758  UInt_t firstExpt_;
760  UInt_t nExpt_;
762  UInt_t evtsPerExpt_;
764  UInt_t iExpt_;
765 
768 
771 
774 
777 
778  // Input data and output ntuple
779 
788 
789  // Fit bookeeping variables
790 
792  Int_t fitStatus_;
794  Double_t NLL_;
796  TMatrixD covMatrix_;
798  UInt_t numberOKFits_;
800  UInt_t numberBadFits_;
802  UInt_t nParams_;
804  UInt_t nFreeParams_;
806  Double_t worstLogLike_;
809 
810  // Background class names
814  const TString nullString_;
815 
816  // sFit related variables
817 
819  Bool_t doSFit_;
823  std::vector<Double_t> sWeights_;
826 
827  // Fit timers
828 
830  TStopwatch timer_;
832  TStopwatch cumulTimer_;
833 
834  // Comparison toy MC related variables
835 
844 
845  // sPlot related variables
846 
848  TString sPlotFileName_;
850  TString sPlotTreeName_;
853 
854  // Parallel fitting variables
855 
857  TSocket* sMaster_;
861  UInt_t slaveId_;
863  UInt_t nSlaves_;
865  Double_t* parValues_;
866 
867  ClassDef(LauAbsFitModel,0) // Abstract interface to fit/toyMC model
868 };
869 
870 #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.
Double_t * parValues_
Parameter values array (for reading from the master)
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.
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.
TSocket * sMaster_
A socket to enable parallel setup.
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.
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.
UInt_t nSlaves_
The total number of slaves.
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.
TMessage * messageFromMaster_
Message from master to the slaves.
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.
Bool_t enableEmbedding_
Option to enable embedding.
std::vector< LauAbsRValue * > LauAbsRValuePList
List of parameter pointers.
UInt_t slaveId_
Slave id number.
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.
void initSockets()
Initialise socket connections for the slaves.
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.
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.
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.
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.
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()
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.