laura is hosted by Hepforge, IPPP Durham
Laura++  v3r2
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauIsobarDynamics.hh
Go to the documentation of this file.
1 
2 // Copyright University of Warwick 2005 - 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 
19 #ifndef LAU_ISOBAR_DYNAMICS
20 #define LAU_ISOBAR_DYNAMICS
21 
22 #include <set>
23 #include <vector>
24 
25 #include "TString.h"
26 
27 #include "LauAbsResonance.hh"
28 #include "LauComplex.hh"
29 
30 class LauCacheData;
31 class LauDaughters;
32 class LauAbsEffModel;
33 class LauAbsIncohRes;
34 class LauFitDataTree;
37 class LauKinematics;
38 
40 
41  public:
43  typedef std::map<Int_t,LauAbsEffModel*> LauTagCatScfFractionModelMap;
44 
46  enum ToyMCStatus {
50  };
51 
53 
58  LauIsobarDynamics(LauDaughters* daughters, LauAbsEffModel* effModel, LauAbsEffModel* scfFractionModel = 0);
59 
61 
66  LauIsobarDynamics(LauDaughters* daughters, LauAbsEffModel* effModel, LauTagCatScfFractionModelMap scfFractionModel);
67 
69  virtual ~LauIsobarDynamics();
70 
72 
75  void initialise(const std::vector<LauComplex>& coeffs);
76 
79 
81 
84  inline void setIntFileName(const TString& fileName) {intFileName_ = fileName;}
85 
86  // Integration
88 
101  void setIntegralBinWidths(const Double_t m13BinWidth, const Double_t m23BinWidth,
102  const Double_t mPrimeBinWidth = 0.001, const Double_t thPrimeBinWidth = 0.001);
103 
105 
111  void setNarrowResonanceThreshold(const Double_t narrowWidth) { narrowWidth_ = narrowWidth; }
112 
114 
120  void setIntegralBinningFactor(const Double_t binningFactor) { binningFactor_ = binningFactor; }
121 
123 
128  void forceSymmetriseIntegration(const Bool_t force) { forceSymmetriseIntegration_ = force; }
129 
131 
142  LauAbsResonance* addResonance(const TString& resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType, const LauBlattWeisskopfFactor::BlattWeisskopfCategory bwCategory = LauBlattWeisskopfFactor::Default);
143 
145 
155  LauAbsResonance* addIncoherentResonance(const TString& resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType);
156 
158 
166  void defineKMatrixPropagator(const TString& propName, const TString& paramFileName,
167  Int_t resPairAmpInt, Int_t nChannels, Int_t nPoles, Int_t rowIndex = 1);
168 
170 
180  void addKMatrixProdPole(const TString& poleName, const TString& propName, Int_t poleIndex, Bool_t useProdAdler = kFALSE);
181 
183 
193  void addKMatrixProdSVP(const TString& SVPName, const TString& propName, Int_t channelIndex, Bool_t useProdAdler = kFALSE);
194 
196 
199  inline void setASqMaxValue(Double_t value) {aSqMaxSet_ = value;}
200 
202 
205  inline Double_t getASqMaxSetValue() const { return aSqMaxSet_; }
206 
208 
211  inline Double_t getASqMaxVarValue() const { return aSqMaxVar_; }
212 
214 
217  Bool_t generate();
218 
220 
225  ToyMCStatus checkToyMC(Bool_t printErrorMessages = kTRUE, Bool_t printInfoMessages = kFALSE);
226 
228 
231  inline Int_t maxGenIterations() const {return iterationsMax_;}
232 
234 
237  void calcLikelihoodInfo(const UInt_t iEvt);
238 
240 
244  void calcLikelihoodInfo(const Double_t m13Sq, const Double_t m23Sq);
245 
247 
253  void calcLikelihoodInfo(const Double_t m13Sq, const Double_t m23Sq, const Int_t tagCat);
254 
256 
259  void calcExtraInfo(const Bool_t init = kFALSE);
260 
262 
266  Bool_t gotReweightedEvent();
267 
269 
272  Double_t getEventWeight();
273 
275 
278  inline const LauComplex& getEvtDPAmp() const {return totAmp_;}
279 
281 
284  inline Double_t getEvtm13Sq() const {return m13Sq_;}
285 
287 
290  inline Double_t getEvtm23Sq() const {return m23Sq_;}
291 
293 
296  inline Double_t getEvtmPrime() const {return mPrime_;}
297 
299 
302  inline Double_t getEvtthPrime() const {return thPrime_;}
303 
305 
308  inline Double_t getEvtEff() const {return eff_;}
309 
311 
314  inline Double_t getEvtScfFraction() const {return scfFraction_;}
315 
317 
320  inline Double_t getEvtJacobian() const {return jacobian_;}
321 
323 
326  inline Double_t getEvtIntensity() const {return ASq_;}
327 
329 
335  inline Double_t getEvtLikelihood() const {return evtLike_;}
336 
338 
342  inline LauComplex getDynamicAmp(const Int_t resID) const {return ff_[resID].scale(fNorm_[resID]);}
343 
345 
349  inline LauComplex getFullAmplitude(const Int_t resID) const {return Amp_[resID] * this->getDynamicAmp(resID);}
350 
352 
355  inline const std::vector< std::vector<LauComplex> >& getFiFjSum() const {return fifjSum_;}
356 
358 
361  inline const std::vector< std::vector<LauComplex> >& getFiFjEffSum() const {return fifjEffSum_;}
362 
364 
367  inline const std::vector<Double_t>& getFNorm() const {return fNorm_;}
368 
370 
373  void fillDataTree(const LauFitDataTree& fitDataTree);
374 
376  void modifyDataTree();
377 
379 
383  Bool_t hasResonance(const TString& resName) const;
384 
386 
390  Int_t resonanceIndex(const TString& resName) const;
391 
393 
397  TString getConjResName(const TString& resName) const;
398 
400 
404  const LauAbsResonance* findResonance(const TString& resName) const;
405 
407 
411  const LauAbsResonance* getResonance(const UInt_t resIndex) const;
412 
414 
417  void updateCoeffs(const std::vector<LauComplex>& coeffs);
418 
420 
423  inline void flipHelicityForCPEigenstates(Bool_t boolean) {flipHelicity_ = boolean;}
424 
426 
429  inline const LauParameter& getMeanEff() const {return meanDPEff_;}
430 
432 
435  inline const LauParameter& getDPRate() const {return DPRate_;}
436 
438 
441  inline const LauParArray& getFitFractions() const {return fitFrac_;}
442 
444 
448 
450 
453  inline UInt_t getnTotAmp() const {return nAmp_+nIncohAmp_;}
454 
456 
459  inline UInt_t getnCohAmp() const {return nAmp_;}
460 
462 
465  inline UInt_t getnIncohAmp() const {return nIncohAmp_;}
466 
468 
471  inline Double_t getDPNorm() const {return DPNorm_;}
472 
474 
477  inline const LauDaughters* getDaughters() const {return daughters_;}
478 
480 
483  inline const LauKinematics* getKinematics() const {return kinematics_;}
484 
486 
490 
492 
495  inline const LauAbsEffModel* getEffModel() const {return effModel_;}
496 
498 
501  inline Bool_t usingScfModel() const { return ! scfFractionModel_.empty(); }
502 
504 
507  inline const std::vector<LauParameter>& getExtraParameters() const {return extraParameters_;}
508 
510 
513  inline std::vector<LauParameter*>& getFloatingParameters() {return resonancePars_;}
514 
515  protected:
517  void initSummary();
518 
520  void initialiseVectors();
521 
523  void resetNormVectors();
524 
526  void calcDPNormalisation();
527 
529 
535  std::vector< std::pair<Double_t,Double_t> > formGapsFromRegions(const std::vector< std::pair<Double_t,Double_t> >& regions, const Double_t min, const Double_t max) const;
536 
538 
541  void cullNullRegions(std::vector<LauDPPartialIntegralInfo*>& regions) const;
542 
544 
556  LauDPPartialIntegralInfo* newDPIntegrationRegion(const Double_t minm13, const Double_t maxm13,
557  const Double_t minm23, const Double_t maxm23,
558  const Double_t m13BinWidth, const Double_t m23BinWidth,
559  const Double_t precision,
560  const UInt_t nAmp,
561  const UInt_t nIncohAmp) const;
562 
564 
568  void correctDPOverlap(std::vector< std::pair<Double_t,Double_t> >& regions, const std::vector<Double_t>& binnings) const;
569 
571 
583  std::vector<LauDPPartialIntegralInfo*> m23IntegrationRegions(const std::vector< std::pair<Double_t,Double_t> >& m13Regions,
584  const std::vector< std::pair<Double_t,Double_t> >& m23Regions,
585  const std::vector<Double_t>& m13Binnings,
586  const std::vector<Double_t>& m23Binnings,
587  const Double_t precision,
588  const Double_t defaultBinning) const;
589 
591 
602  std::vector<LauDPPartialIntegralInfo*> m13IntegrationRegions(const std::vector< std::pair<Double_t,Double_t> >& m13Regions,
603  const std::vector< std::pair<Double_t,Double_t> >& m23Regions,
604  const std::vector<Double_t>& m13Binnings,
605  const Double_t precision,
606  const Double_t defaultBinning) const;
607 
610 
613 
615 
619 
621  void writeIntegralsFile();
622 
624 
629  void setFFTerm(const UInt_t index, const Double_t realPart, const Double_t imagPart);
630 
632 
636  void setIncohIntenTerm(const UInt_t index, const Double_t value);
637 
639  void calculateAmplitudes();
640 
642 
647  void calculateAmplitudes( LauDPPartialIntegralInfo* intInfo, const UInt_t m13Point, const UInt_t m23Point );
648 
650 
653  void addGridPointToIntegrals(const Double_t weight);
654 
656 
659  void calcTotalAmp(const Bool_t useEff);
660 
662 
665  Double_t retrieveEfficiency();
666 
668 
672  Double_t retrieveScfFraction(Int_t tagCat);
673 
675 
678  inline void setASqMaxVarValue(Double_t value) {aSqMaxVar_ = value;}
679 
681 
684  Double_t calcSigDPNorm();
685 
687 
690  LauComplex resAmp(const UInt_t index);
691 
693 
696  Double_t incohResAmp(const UInt_t index);
697 
699 
702  void setDataEventNo(UInt_t iEvt);
703 
705 
709  LauAbsResonance* findResonance(const TString& resName);
710 
712 
716  LauAbsResonance* getResonance(const UInt_t resIndex);
717 
719 
722  void removeCharge(TString& string) const;
723 
725 
730  Bool_t gotKMatrixMatch(UInt_t resAmpInt, const TString& propName) const;
731 
732  private:
735 
738 
740  typedef std::map<TString, LauKMatrixPropagator*> KMPropMap;
741 
743  typedef std::map<TString, TString> KMStringMap;
744 
747 
750 
753 
755 
760 
762  UInt_t nAmp_;
763 
765  UInt_t nIncohAmp_;
766 
768  std::vector<LauComplex> Amp_;
769 
771  Double_t DPNorm_;
772 
775 
778 
781 
784 
786  std::vector<LauCacheData*> data_;
787 
790 
792  std::vector<LauParameter> extraParameters_;
793 
795  std::vector<LauAbsResonance*> sigResonances_;
796 
798  std::vector<LauAbsIncohRes*> sigIncohResonances_;
799 
802 
805 
807  std::vector<TString> resTypAmp_;
808 
810  std::vector<Int_t> resPairAmp_;
811 
813  std::vector<TString> incohResTypAmp_;
814 
816  std::vector<Int_t> incohResPairAmp_;
817 
819  std::vector<Int_t> typDaug_;
820 
823 
826 
828  Bool_t flavConjDP_;
829 
832 
835 
838 
840  std::vector<LauDPPartialIntegralInfo*> dpPartialIntegralInfo_;
841 
843  TString intFileName_;
844 
846  Double_t m13BinWidth_;
847 
849  Double_t m23BinWidth_;
850 
852  Double_t mPrimeBinWidth_;
853 
856 
858  Double_t narrowWidth_;
859 
861  Double_t binningFactor_;
862 
864  Double_t m13Sq_;
865 
867  Double_t m23Sq_;
868 
870  Double_t mPrime_;
871 
873  Double_t thPrime_;
874 
876  Int_t tagCat_;
877 
879  Double_t eff_;
880 
882  Double_t scfFraction_;
883 
885  Double_t jacobian_;
886 
888  Double_t ASq_;
889 
891  Double_t evtLike_;
892 
895 
897 
900  std::vector< std::vector<LauComplex> > fifjEffSum_;
901 
903 
906  std::vector< std::vector<LauComplex> > fifjSum_;
907 
909  std::vector<LauComplex> ff_;
910 
912  std::vector<Double_t> incohInten_;
913 
915  std::vector<Double_t> fSqSum_;
916 
918  std::vector<Double_t> fSqEffSum_;
919 
921  std::vector<Double_t> fNorm_;
922 
925 
928 
930  Double_t aSqMaxSet_;
931 
933  Double_t aSqMaxVar_;
934 
937 
940 
942  std::vector<LauParameter*> resonancePars_;
943 
945  std::vector<Double_t> resonanceParValues_;
946 
948  std::vector< std::vector<UInt_t> > resonanceParResIndex_;
949 
951  std::set<UInt_t> integralsToBeCalculated_;
952 
953  ClassDef(LauIsobarDynamics,0)
954 };
955 
956 #endif
KMStringMap kMatrixPropSet_
The names of the M-matrix components in the model mapped to their propagators.
std::vector< LauComplex > Amp_
The complex coefficients for the amplitude components.
void modifyDataTree()
Recache the amplitude values for those that have changed.
Int_t nSigGenLoop_
The number of unsucessful attempts to generate an event so far.
Double_t getASqMaxVarValue() const
Retrieve the maximum of A squared that has been found while generating.
std::vector< LauDPPartialIntegralInfo * > m23IntegrationRegions(const std::vector< std::pair< Double_t, Double_t > > &m13Regions, const std::vector< std::pair< Double_t, Double_t > > &m23Regions, const std::vector< Double_t > &m13Binnings, const std::vector< Double_t > &m23Binnings, const Double_t precision, const Double_t defaultBinning) const
Create the integration grid objects for the m23 narrow resonance regions, including the overlap regio...
const LauParameter & getDPRate() const
Retrieve the overall Dalitz plot rate.
std::vector< LauDPPartialIntegralInfo * > m13IntegrationRegions(const std::vector< std::pair< Double_t, Double_t > > &m13Regions, const std::vector< std::pair< Double_t, Double_t > > &m23Regions, const std::vector< Double_t > &m13Binnings, const Double_t precision, const Double_t defaultBinning) const
Create the integration grid objects for the m13 narrow resonance regions, excluding the overlap regio...
void setIntegralBinWidths(const Double_t m13BinWidth, const Double_t m23BinWidth, const Double_t mPrimeBinWidth=0.001, const Double_t thPrimeBinWidth=0.001)
Set the widths of the bins to use when integrating across the Dalitz plot or square Dalitz plot...
Bool_t recalcNormalisation_
Flag to recalculate the normalisation.
LauAbsResonance * addResonance(const TString &resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType, const LauBlattWeisskopfFactor::BlattWeisskopfCategory bwCategory=LauBlattWeisskopfFactor::Default)
Add a resonance to the Dalitz plot.
virtual ~LauIsobarDynamics()
Destructor.
const std::vector< Double_t > & getFNorm() const
Retrieve the normalisation factors for the dynamic parts of the amplitudes for all of the amplitude c...
void updateCoeffs(const std::vector< LauComplex > &coeffs)
Update the complex coefficients for the resonances.
std::set< UInt_t > integralsToBeCalculated_
Resonance indices for which the amplitudes and integrals should be recalculated.
Double_t m13BinWidth_
The bin width to use when integrating over m13.
Bool_t flipHelicity_
The helicity flip flag for new amplitude components.
Double_t incohResAmp(const UInt_t index)
Calculate the dynamic part of the intensity for a given incoherent component at the current point in ...
std::vector< std::pair< Double_t, Double_t > > formGapsFromRegions(const std::vector< std::pair< Double_t, Double_t > > &regions, const Double_t min, const Double_t max) const
Form the regions that are produced by the spaces between narrow resonances.
std::vector< Int_t > resPairAmp_
The index of the daughter not produced by the resonance for each amplitude component.
Bool_t hasResonance(const TString &resName) const
Check whether this model includes a named resonance.
const LauParameter & getMeanEff() const
Retrieve the mean efficiency across the Dalitz plot.
const LauAbsResonance * findResonance(const TString &resName) const
Retrieve the named resonance.
std::vector< LauParameter > extraParameters_
any extra parameters/quantities (e.g. K-matrix total fit fractions)
const LauKinematics * getKinematics() const
Retrieve the Dalitz plot kinematics.
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:33
Double_t getEvtJacobian() const
Retrieve the Jacobian, for the transformation into square DP coordinates, for the current event...
void defineKMatrixPropagator(const TString &propName, const TString &paramFileName, Int_t resPairAmpInt, Int_t nChannels, Int_t nPoles, Int_t rowIndex=1)
Define a new K-matrix Propagator.
Double_t getDPNorm() const
Retrieve the normalisation factor for the log-likelihood function.
std::vector< Double_t > fSqEffSum_
The event-by-event running total of the dynamical amplitude squared for each amplitude component...
void calcDPNormalisationScheme()
Calculate the Dalitz plot normalisation integrals across the whole Dalitz plot.
LauAbsEffModel * effModel_
The efficiency model across the Dalitz plot.
void calcExtraInfo(const Bool_t init=kFALSE)
Calculate the fit fractions, mean efficiency and total DP rate.
std::vector< Int_t > incohResPairAmp_
The index of the daughter not produced by the resonance for each incoherent amplitude component...
void setASqMaxValue(Double_t value)
Set the maximum value of A squared to be used in the accept/reject.
Double_t DPNorm_
The normalisation factor for the log-likelihood function.
LauTagCatScfFractionModelMap scfFractionModel_
The self cross feed fraction models across the Dalitz plot.
LauParArray fitFrac_
The fit fractions for the amplitude components.
Double_t aSqMaxVar_
The maximum value of A squared that has been seen so far while generating.
void forceSymmetriseIntegration(const Bool_t force)
Force the symmetrisation of the integration in m13 &lt;-&gt; m23 for non-symmetric but flavour-conjugate fi...
Double_t scfFraction_
The fraction of events that are poorly reconstructed (the self cross feed fraction) at the current po...
Abstract class for defining incoherent resonant amplitude models.
Double_t m13Sq_
The invariant mass squared of the first and third daughters.
Int_t iterationsMax_
The maximum allowed number of attempts when generating an event.
LauComplex totAmp_
The total amplitude for the current event.
Double_t getEvtthPrime() const
Retrieve the square Dalitz plot coordinate, theta&#39;, for the current event.
Double_t getASqMaxSetValue() const
Retrieve the maximum value of A squared to be used in the accept/reject.
TString getConjResName(const TString &resName) const
Retrieve the name of the charge conjugate of a named resonance.
std::vector< std::vector< LauParameter > > LauParArray
Type to define an array of parameters.
Double_t aSqMaxSet_
The maximum allowed value of A squared.
std::vector< Double_t > resonanceParValues_
List of floating resonance parameter values from previous calculation.
Bool_t symmetricalDP_
Whether the Dalitz plot is symmetrical.
UInt_t getnIncohAmp() const
Retrieve the number of incoherent amplitude components.
Pure abstract base class for defining the efficiency description across the signal Dalitz plot...
void setIncohIntenTerm(const UInt_t index, const Double_t value)
Set the dynamic part of the intensity for a given incoherent amplitude component at the current point...
Class for defining (a section of) the Dalitz plot integration binning scheme.
Class to contain cached data relating to an event.
Definition: LauCacheData.hh:30
void calcDPNormalisation()
Calculate the Dalitz plot normalisation integrals across the whole Dalitz plot.
LauComplex getFullAmplitude(const Int_t resID) const
Retrieve the Amplitude of resonance resID.
const LauParArray & getFitFractions() const
Retrieve the fit fractions for the amplitude components.
void recalculateNormalisation()
recalculate Normalization
std::vector< TString > incohResTypAmp_
The resonance types of all of the incoherent amplitude components.
std::vector< LauAbsIncohRes * > sigIncohResonances_
The incoherent resonances in the model.
void setASqMaxVarValue(Double_t value)
Set the maximum of A squared that has been found.
Double_t getEvtScfFraction() const
Retrieve the fraction of events that are poorly reconstructed (the self cross feed fraction) for the ...
LauParameter DPRate_
The overall Dalitz plot rate.
void calcLikelihoodInfo(const UInt_t iEvt)
Calculate the likelihood (and all associated information) for the given event number.
ToyMCStatus
The possible statuses for toy MC generation.
KMPropMap kMatrixPropagators_
The K-matrix propagators.
std::vector< Double_t > fSqSum_
The event-by-event running total of the dynamical amplitude squared for each amplitude component...
LauComplex resAmp(const UInt_t index)
Calculate the dynamic part of the amplitude for a given component at the current point in the Dalitz ...
Bool_t usingScfModel() const
Check whether a self cross feed fraction model is being used.
const LauAbsResonance * getResonance(const UInt_t resIndex) const
Retrieve a resonance by its index.
Double_t getEvtmPrime() const
Retrieve the square Dalitz plot coordinate, m&#39;, for the current event.
UInt_t nAmp_
The number of amplitude components.
Double_t m23Sq_
The invariant mass squared of the second and third daughters.
Double_t thPrime_
The square Dalitz plot coordinate theta&#39;.
Double_t evtLike_
The normalised likelihood for the current event.
void setIntegralBinningFactor(const Double_t binningFactor)
Set the factor relating the width of a narrow resonance and the binning size in its integration regio...
std::vector< std::vector< LauComplex > > fifjEffSum_
The event-by-event running total of efficiency corrected amplitude cross terms for each pair of ampli...
void initSummary()
Print a summary of the model to be used.
Bool_t fullySymmetricDP_
Whether the Dalitz plot is fully symmetric.
void fillDataTree(const LauFitDataTree &fitDataTree)
Fill the internal data structure that caches the resonance dynamics.
void resetNormVectors()
Zero the various values used to store integrals info.
Double_t ASq_
The value of A squared for the current event.
Bool_t flavConjDP_
Whether the Dalitz plot is a flavour-conjugate final state.
const std::vector< std::vector< LauComplex > > & getFiFjSum() const
Retrieve the event-by-event running totals of amplitude cross terms for all pairs of amplitude compon...
Double_t getEvtm23Sq() const
Retrieve the invariant mass squared of the second and third daughters in the current event...
Double_t m23BinWidth_
The bin width to use when integrating over m23.
TString intFileName_
The name of the file to save integrals to.
LauDPPartialIntegralInfo * newDPIntegrationRegion(const Double_t minm13, const Double_t maxm13, const Double_t minm23, const Double_t maxm23, const Double_t m13BinWidth, const Double_t m23BinWidth, const Double_t precision, const UInt_t nAmp, const UInt_t nIncohAmp) const
Wrapper for LauDPPartialIntegralInfo constructor.
std::vector< LauParameter * > & getFloatingParameters()
Retrieve the floating parameters of the resonance models.
void setNarrowResonanceThreshold(const Double_t narrowWidth)
Set the value below which a resonance width is considered to be narrow.
void addKMatrixProdPole(const TString &poleName, const TString &propName, Int_t poleIndex, Bool_t useProdAdler=kFALSE)
Add a K-matrix production pole term to the model.
void calcTotalAmp(const Bool_t useEff)
Calculate the total Dalitz plot amplitude at the current point in the Dalitz plot.
const LauComplex & getEvtDPAmp() const
Retrieve the total amplitude for the current event.
Double_t retrieveScfFraction(Int_t tagCat)
Obtain the self cross feed fraction of the current event from the model.
std::vector< TString > resTypAmp_
The resonance types of all of the amplitude components.
LauKinematics * getKinematics()
Retrieve the Dalitz plot kinematics.
LauIsobarDynamics(LauDaughters *daughters, LauAbsEffModel *effModel, LauAbsEffModel *scfFractionModel=0)
Constructor.
Int_t tagCat_
The tagging category.
LauCacheData * currentEvent_
The cached data for the current event.
void initialiseVectors()
Initialise the internal storage for this model.
Double_t jacobian_
The Jacobian, for the transformation into square DP coordinates at the current point in the Dalitz pl...
LauDaughters * daughters_
The daughters of the decay.
std::map< Int_t, LauAbsEffModel * > LauTagCatScfFractionModelMap
The type used for containing multiple self cross feed fraction models for different categories (e...
const LauDaughters * getDaughters() const
Retrieve the daughters.
Double_t narrowWidth_
The value below which a resonance width is considered to be narrow.
File containing declaration of LauComplex class.
const LauParArray & getFitFractionsEfficiencyUncorrected() const
Retrieve the fit fractions for the amplitude components.
std::vector< std::vector< LauComplex > > fifjSum_
The event-by-event running total of the amplitude cross terms for each pair of amplitude components...
Class for defining the fit parameter objects.
Definition: LauParameter.hh:35
UInt_t getnTotAmp() const
Retrieve the total number of amplitude components.
Double_t calcSigDPNorm()
Calculate the normalisation factor for the log-likelihood function.
const LauAbsEffModel * getEffModel() const
Retrieve the model for the efficiency across the Dalitz plot.
void addGridPointToIntegrals(const Double_t weight)
Add the amplitude values (with the appropriate weight) at the current grid point to the running integ...
Double_t getEvtIntensity() const
Retrieve the total intensity multiplied by the efficiency for the current event.
Double_t thPrimeBinWidth_
The bin width to use when integrating over thetaPrime.
Bool_t generate()
Generate a toy MC signal event.
void removeCharge(TString &string) const
Remove the charge from the given particle name.
std::vector< Int_t > typDaug_
The PDG codes of the daughters.
LauResonanceModel
Define the allowed resonance types.
void flipHelicityForCPEigenstates(Bool_t boolean)
Set the helicity flip flag for new amplitude components.
Double_t eff_
The efficiency at the current point in the Dalitz plot.
void calculateAmplitudes()
Calculate the amplitudes for all resonances for the current kinematics.
void correctDPOverlap(std::vector< std::pair< Double_t, Double_t > > &regions, const std::vector< Double_t > &binnings) const
Correct regions to ensure that the finest integration grid takes precedence.
Int_t maxGenIterations() const
Retrieve the maximum number of iterations allowed when generating an event.
Int_t resonanceIndex(const TString &resName) const
Retrieve the index for the given resonance.
Bool_t gotReweightedEvent()
Calculates whether an event with the current kinematics should be accepted in order to produce a dist...
Abstract class for defining type for resonance amplitude models (Breit-Wigner, Flatte etc...
Double_t binningFactor_
The factor relating the width of the narrowest resonance and the binning size.
std::vector< LauCacheData * > data_
The cached data for all events.
void findIntegralsToBeRecalculated()
Determine which amplitudes and integrals need to be recalculated.
Class for defining signal dynamics using the isobar model.
Double_t getEventWeight()
Calculate the acceptance rate, for events with the current kinematics, when generating events accordi...
void setIntFileName(const TString &fileName)
Set the name of the file to which to save the results of the integrals.
LauAbsResonance * addIncoherentResonance(const TString &resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType)
Add an incoherent resonance to the Dalitz plot.
void addKMatrixProdSVP(const TString &SVPName, const TString &propName, Int_t channelIndex, Bool_t useProdAdler=kFALSE)
Add a K-matrix slowly-varying part (SVP) term to the model.
void writeIntegralsFile()
Write the results of the integrals (and related information) to a file.
File containing declaration of LauAbsResonance class.
void calcDPPartialIntegral(LauDPPartialIntegralInfo *intInfo)
Calculate the Dalitz plot normalisation integrals over a given range.
Double_t mPrimeBinWidth_
The bin width to use when integrating over mPrime.
ToyMCStatus checkToyMC(Bool_t printErrorMessages=kTRUE, Bool_t printInfoMessages=kFALSE)
Check the status of the toy MC generation.
LauKinematics * kinematics_
The kinematics of the decay.
UInt_t getnCohAmp() const
Retrieve the number of coherent amplitude components.
LauIsobarDynamics & operator=(const LauIsobarDynamics &rhs)
Copy assignment operator (not implemented)
Class for defining a complex number.
Definition: LauComplex.hh:47
Double_t getEvtEff() const
Retrieve the efficiency for the current event.
UInt_t nIncohAmp_
The number of incoherent amplitude components.
Bool_t gotKMatrixMatch(UInt_t resAmpInt, const TString &propName) const
Check whether a resonance is a K-matrix component of a given propagator.
Double_t getEvtLikelihood() const
Retrieve the likelihood for the current event.
std::vector< LauDPPartialIntegralInfo * > dpPartialIntegralInfo_
The storage of the integration scheme.
std::map< TString, TString > KMStringMap
The type used for mapping K-matrix components to their propagators.
void cullNullRegions(std::vector< LauDPPartialIntegralInfo * > &regions) const
Removes entries in the vector of LauDPPartialIntegralInfo* that are null.
void setDataEventNo(UInt_t iEvt)
Load the data for a given event.
std::map< TString, LauKMatrixPropagator * > KMPropMap
The type used for containing the K-matrix propagators.
Class for calculating 3-body kinematic quantities.
Bool_t normalizationSchemeDone_
Whether the scheme for the integration has been determined.
std::vector< LauParameter * > resonancePars_
List of floating resonance parameters.
std::vector< std::vector< UInt_t > > resonanceParResIndex_
Indices in sigResonances_ to point to the corresponding signal resonance(s) for each floating paramet...
BlattWeisskopfCategory
Define resonance categories that will share common barrier factor radii.
LauParameter meanDPEff_
The mean efficiency across the Dalitz plot.
Bool_t integralsDone_
Whether the integrals have been performed.
std::vector< Double_t > incohInten_
The dynamic part of the intensity for each incoherent amplitude component at the current point in the...
std::vector< LauComplex > ff_
The dynamic part of the amplitude for each amplitude component at the current point in the Dalitz plo...
const std::vector< LauParameter > & getExtraParameters() const
Retrieve any extra parameters/quantities (e.g. K-matrix total fit fractions)
Bool_t forceSymmetriseIntegration_
Force the symmetrisation of the integration in m13 &lt;-&gt; m23 for non-symmetric but flavour-conjugate fi...
void initialise(const std::vector< LauComplex > &coeffs)
Initialise the Dalitz plot dynamics.
const std::vector< std::vector< LauComplex > > & getFiFjEffSum() const
Retrieve the event-by-event running totals of efficiency corrected amplitude cross terms for all pair...
Double_t getEvtm13Sq() const
Retrieve the invariant mass squared of the first and third daughters in the current event...
Double_t mPrime_
The square Dalitz plot coordinate, m&#39;.
std::vector< Double_t > fNorm_
The normalisation factors for the dynamic parts of the amplitude for each amplitude component...
LauComplex getDynamicAmp(const Int_t resID) const
Retrieve the normalised dynamic part of the amplitude of the given amplitude component at the current...
Class to store the input fit variables.
std::vector< LauAbsResonance * > sigResonances_
The resonances in the model.
void setFFTerm(const UInt_t index, const Double_t realPart, const Double_t imagPart)
Set the dynamic part of the amplitude for a given amplitude component at the current point in the Dal...
Double_t retrieveEfficiency()
Obtain the efficiency of the current event from the model.
LauParArray fitFracEffUnCorr_
The efficiency-uncorrected fit fractions for the amplitude components.
Class for defining a K-matrix propagator.