laura is hosted by Hepforge, IPPP Durham
Laura++  v3r2
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauAbsResonance.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 
24 #ifndef LAU_ABS_RESONANCE
25 #define LAU_ABS_RESONANCE
26 
27 #include "TString.h"
28 
30 #include "LauComplex.hh"
31 #include "LauParameter.hh"
32 
33 class LauDaughters;
34 class LauKinematics;
35 class LauResonanceInfo;
36 
38 
39  public:
42  BW,
44  GS,
49  LASS,
69  };
70 
72  enum LauSpinType {
77  };
78 
80 
84  static bool isIncoherentModel(LauResonanceModel model);
85 
87 
92  LauAbsResonance(LauResonanceInfo* resInfo, const Int_t resPairAmpInt, const LauDaughters* daughters);
93 
95 
100  LauAbsResonance(const TString& resName, const Int_t resPairAmpInt, const LauDaughters* daughters);
101 
103  virtual ~LauAbsResonance();
104 
106  virtual void initialise() = 0;
107 
109 
113  virtual LauComplex amplitude(const LauKinematics* kinematics);
114 
116 
119  virtual LauResonanceModel getResonanceModel() const = 0;
120 
122 
126 
128 
131  const TString& getResonanceName() const {return resName_;}
132 
134 
137  const TString& getSanitisedName() const {return sanitisedName_;}
138 
140 
143  Int_t getPairInt() const {return resPairAmpInt_;}
144 
146 
149  Int_t getSpin() const {return resSpin_;}
150 
152 
155  Int_t getCharge() const {return resCharge_;}
156 
158 
161  Double_t getMass() const {return (resMass_!=0) ? resMass_->unblindValue() : -1.0;}
162 
164 
167  Double_t getWidth() const {return (resWidth_!=0) ? resWidth_->unblindValue() : -1.0;}
168 
170 
174 
176 
180 
182 
185  virtual const std::vector<LauParameter*>& getFloatingParameters() { return this->getParameters(); };
186 
188 
193  virtual Bool_t preSymmetrised() const {return kFALSE;}
194 
196 
199  Bool_t flipHelicity() const {return flipHelicity_;}
200 
202 
205  void flipHelicity(const Bool_t boolean) {flipHelicity_ = boolean;}
206 
208 
213  Bool_t ignoreMomenta() const {return ignoreMomenta_;}
214 
216 
221  void ignoreMomenta(const Bool_t boolean) {ignoreMomenta_ = boolean;}
222 
224 
228  Bool_t ignoreSpin() const {return ignoreSpin_;}
229 
231 
235  void ignoreSpin(const Bool_t boolean) {ignoreSpin_ = boolean;}
236 
238 
243 
245 
249  void ignoreBarrierScaling(const Bool_t boolean) {ignoreBarrierScaling_ = boolean;}
250 
252 
261  void changeResonance(const Double_t newMass, const Double_t newWidth, const Int_t newSpin);
262 
264 
272  void changeBWBarrierRadii(const Double_t resRadius, const Double_t parRadius);
273 
275 
279  virtual void setResonanceParameter(const TString& name, const Double_t value);
280 
282 
285  virtual void floatResonanceParameter(const TString& name);
286 
288 
292  virtual LauParameter* getResonanceParameter(const TString& name);
293 
295 
298  void fixMass(const Bool_t parFixed) { if (resMass_!=0) { resMass_->fixed(parFixed); } }
299 
301 
304  void fixWidth(const Bool_t parFixed) { if (resWidth_!=0) { resWidth_->fixed(parFixed); } }
305 
307 
310  Bool_t fixMass() const { return (resMass_!=0) ? resMass_->fixed() : kTRUE; }
311 
313 
316  Bool_t fixWidth() const { return (resWidth_!=0) ? resWidth_->fixed() : kTRUE; }
317 
319 
322  void setSpinType(const LauSpinType spinType) {spinType_ = spinType;}
323 
325 
330  {
331  resBWFactor_ = resFactor;
332  parBWFactor_ = parFactor;
333  }
334 
336  void fixBarrierRadii(const Bool_t fixResRadius, const Bool_t fixParRadius);
337 
339  Bool_t fixResRadius() const;
340 
342  Bool_t fixParRadius() const;
343 
345  Double_t getResRadius() const;
346 
348  Double_t getParRadius() const;
349 
350  protected:
352  TString getNameParent() const;
354  TString getNameDaug1() const;
356  TString getNameDaug2() const;
358  TString getNameBachelor() const;
360  Double_t getMassParent() const;
362  Double_t getMassDaug1() const;
364  Double_t getMassDaug2() const;
366  Double_t getMassBachelor() const;
368  Int_t getChargeParent() const;
370  Int_t getChargeDaug1() const;
372  Int_t getChargeDaug2() const;
374  Int_t getChargeBachelor() const;
375 
377  Double_t getQ() const {return q_;}
379  Double_t getP() const {return p_;}
381  Double_t getPstar() const {return pstar_;}
383  Double_t getCovFactor() const {return covFactor_;}
384 
391 
394 
396  const LauDaughters* getDaughters() const {return daughters_;}
397 
399 
402  Double_t calcZemachSpinFactor( const Double_t pProd ) const;
403 
405 
408  Double_t calcCovSpinFactor( const Double_t pProd );
409 
411 
414  void calcCovFactor( const Double_t erm );
415 
417 
420  Double_t calcLegendrePoly() const;
421 
423 
426  Double_t calcLegendrePoly( const Double_t cosHel );
427 
429 
433  virtual LauComplex resAmp(Double_t mass, Double_t spinTerm) = 0;
434 
437 
439 
442  void addFloatingParameter( LauParameter* param );
443 
445  std::vector<LauParameter*>& getParameters() { return resParameters_; }
446 
447  private:
449  LauAbsResonance(const LauAbsResonance& rhs);
450 
453 
456 
459 
461  TString nameParent_;
463  TString nameDaug1_;
465  TString nameDaug2_;
467  TString nameBachelor_;
468 
472  Int_t chargeDaug1_;
474  Int_t chargeDaug2_;
477 
479  Double_t massParent_;
481  Double_t massDaug1_;
483  Double_t massDaug2_;
484  // Bachelor mass
485  Double_t massBachelor_;
486 
488  TString resName_;
489 
491  TString sanitisedName_;
492 
497 
499  std::vector<LauParameter*> resParameters_;
500 
502  Int_t resSpin_;
504  Int_t resCharge_;
511 
514 
520  Bool_t ignoreSpin_;
523 
524  // Event kinematics information
525 
527  Double_t mass_;
529  Double_t cosHel_;
530 
532  Double_t q_;
534  Double_t p_;
536  Double_t pstar_;
537 
539 
548  Double_t erm_;
549 
551  Double_t covFactor_;
552 
553  ClassDef(LauAbsResonance,0) // Abstract resonance class
554 
555 };
556 
557 #endif
Double_t mass_
Invariant mass.
virtual void initialise()=0
Initialise the model.
Double_t getQ() const
Get the current value of the daughter momentum in the resonance rest frame.
Double_t calcCovSpinFactor(const Double_t pProd)
Calculate the amplitude spin term using the covariant tensor formalism.
Int_t getChargeBachelor() const
Get the charge of the bachelor daughter.
LauParameter * getMassPar()
Get the mass parameter of the resonance.
Bool_t fixed() const
Check whether the parameter is fixed or floated.
Double_t massDaug2_
Daughter 2 mass.
Double_t getMassBachelor() const
Get the mass of the bachelor daughter.
void setBarrierRadii(LauBlattWeisskopfFactor *resFactor, LauBlattWeisskopfFactor *parFactor)
Set the form factor model and parameters.
LauAbsResonance(LauResonanceInfo *resInfo, const Int_t resPairAmpInt, const LauDaughters *daughters)
Constructor (for use by standard resonances)
Bool_t fixWidth() const
Get the status of resonance width (fixed or released)
Bool_t ignoreMomenta_
Boolean to ignore the momentum factors in both the spin factor and the mass-dependent width...
Double_t getMass() const
Get the mass of the resonance.
const TString & getResonanceName() const
Get the name of the resonance.
void calcCovFactor(const Double_t erm)
Calculate the spin-dependent covariant factor.
Double_t calcLegendrePoly() const
Calculate the Legendre polynomial for the spin factor.
void changeResonance(const Double_t newMass, const Double_t newWidth, const Int_t newSpin)
Allow the mass, width and spin of the resonance to be changed.
LauAbsResonance & operator=(const LauAbsResonance &rhs)
Copy assignment operator (not implemented)
Double_t getMassParent() const
Get the parent particle mass.
Double_t massDaug1_
Daughter 1 mass.
Class for defining the properties of a resonant particle.
LauResonanceInfo * resInfo_
Information on the resonance.
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:33
void ignoreBarrierScaling(const Bool_t boolean)
Set the ignore barrier factor scaling flag.
TString nameDaug2_
Daughter 2 name.
virtual void floatResonanceParameter(const TString &name)
Allow the various parameters to float in the fit.
Double_t covFactor_
Covariant factor (full spin-dependent expression)
Double_t getPstar() const
Get the current value of the bachelor momentum in the parent rest frame.
Double_t getP() const
Get the current value of the bachelor momentum in the resonance rest frame.
const TString & getSanitisedName() const
Get the name of the resonance.
TString getNameDaug2() const
Get the name of the second daughter of the resonance.
LauParameter * resWidth_
Resonance width.
void ignoreMomenta(const Bool_t boolean)
Set the ignore momenta flag.
LauParameter * resMass_
Resonance mass.
LauBlattWeisskopfFactor * resBWFactor_
Blatt Weisskopf barrier for resonance decay.
const LauBlattWeisskopfFactor * getParBWFactor() const
Double_t massParent_
Parent mass.
Double_t getMassDaug1() const
Get the mass of daughter 1.
LauSpinType
Define the allowed spin formalisms.
const LauDaughters * getDaughters() const
Access the daughters object.
Int_t getPairInt() const
Get the integer to identify which DP axis the resonance belongs to.
Bool_t fixResRadius() const
Get the status of resonance barrier radius (fixed or released)
Bool_t flipHelicity() const
Get the helicity flip flag.
Double_t getParRadius() const
Get the radius of the parent barrier factor.
Double_t calcZemachSpinFactor(const Double_t pProd) const
Calculate the amplitude spin term using the Zemach tensor formalism.
Bool_t fixMass() const
Get the status of resonance mass (fixed or released)
Double_t getMassDaug2() const
Get the mass of daughter 2.
virtual LauParameter * getResonanceParameter(const TString &name)
Access the given resonance parameter.
void flipHelicity(const Bool_t boolean)
Set the helicity flip flag.
void addFloatingParameter(LauParameter *param)
Add parameter to the list of floating parameters.
LauBlattWeisskopfFactor * getParBWFactor()
Get the centrifugal barrier for the parent decay.
TString sanitisedName_
Resonance name with illegal characters removed.
Int_t chargeBachelor_
Bachelor charge.
File containing declaration of LauBlattWeisskopfFactor class.
Int_t getChargeDaug1() const
Get the charge of daughter 1.
const LauDaughters * daughters_
Information on the particles.
virtual LauResonanceModel getResonanceModel() const =0
Get the resonance model type.
void ignoreSpin(const Bool_t boolean)
Set the ignore spin flag.
File containing declaration of LauParameter class.
std::vector< LauParameter * > resParameters_
All parameters of the resonance.
virtual void setResonanceParameter(const TString &name, const Double_t value)
Set value of the various parameters.
Int_t getChargeParent() const
Get the Charge of the parent particle.
File containing declaration of LauComplex class.
virtual ~LauAbsResonance()
Destructor.
LauBlattWeisskopfFactor * parBWFactor_
Blatt Weisskopf barrier for parent decay.
virtual LauComplex resAmp(Double_t mass, Double_t spinTerm)=0
Complex resonant amplitude.
TString getNameParent() const
Get the name of the parent particle.
std::vector< LauParameter * > & getParameters()
Access the list of floating parameters.
Int_t getCharge() const
Get the charge of the resonance.
LauParameter * getWidthPar()
Get the width parameter of the resonance.
TString nameBachelor_
Bachelor name.
Double_t erm_
Covariant factor.
Int_t chargeDaug2_
Daughter 2 charge.
Bool_t flipHelicity_
Boolean to flip helicity.
Class for defining the fit parameter objects.
Definition: LauParameter.hh:35
Bool_t ignoreMomenta() const
Get the ignore momenta flag.
Int_t resCharge_
Resonance charge.
TString nameParent_
Parent name.
Int_t chargeParent_
Parent charge.
TString getNameBachelor() const
Get the name of the daughter that does not originate form the resonance.
Int_t getChargeDaug2() const
Get the charge of daughter 2.
LauResonanceModel
Define the allowed resonance types.
Double_t getResRadius() const
Get the radius of the resonance barrier factor.
Double_t getWidth() const
Get the width of the resonance.
Bool_t fixParRadius() const
Get the status of parent barrier radius (fixed or released)
void fixBarrierRadii(const Bool_t fixResRadius, const Bool_t fixParRadius)
Fix or release the Blatt-Weisskopf barrier radii.
void fixWidth(const Bool_t parFixed)
Fix or release the resonance width.
Bool_t ignoreBarrierScaling_
Boolean to ignore barrier factor scaling in the amplitude numerator, they are still used for the mass...
Abstract class for defining type for resonance amplitude models (Breit-Wigner, Flatte etc...
void changeBWBarrierRadii(const Double_t resRadius, const Double_t parRadius)
Allow the Blatt-Weisskopf radius for the resonance and parent factors to be changed.
Bool_t ignoreSpin_
Boolean to set the spinTerm to unity always.
Double_t getCovFactor() const
Get the current value of the full spin-dependent covariant factor.
TString resName_
Resonance name.
LauSpinType spinType_
Spin formalism.
LauResonanceInfo * getResInfo() const
Access the resonance info object.
Int_t resPairAmpInt_
DP axis identifier.
const LauBlattWeisskopfFactor * getResBWFactor() const
LauBlattWeisskopfFactor * getResBWFactor()
Get the centrifugal barrier for the resonance decay.
Double_t unblindValue() const
The unblinded value of the parameter.
Int_t chargeDaug1_
Daughter 1 charge.
Class for defining a complex number.
Definition: LauComplex.hh:47
Class that implements the Blatt-Weisskopf barrier factor.
LauSpinType getSpinType() const
Get the spin type.
TString getNameDaug1() const
Get the name of the first daughter of the resonance.
Class for calculating 3-body kinematic quantities.
void setSpinType(const LauSpinType spinType)
Set the spin formalism to be used.
Int_t resSpin_
Resonance spin.
virtual const std::vector< LauParameter * > & getFloatingParameters()
Retrieve the resonance parameters, e.g. so that they can be loaded into a fit.
virtual Bool_t preSymmetrised() const
Is the amplitude pre-symmetrised?
void fixMass(const Bool_t parFixed)
Fix or release the resonance mass.
Bool_t ignoreSpin() const
Get the ignore spin flag.
Double_t cosHel_
Helicity angle cosine.
TString nameDaug1_
Daughter 1 name.
virtual LauComplex amplitude(const LauKinematics *kinematics)
Calculate the complex amplitude.
Int_t getSpin() const
Get the spin of the resonance.
static bool isIncoherentModel(LauResonanceModel model)
Is the resonance model incoherent?
Double_t p_
Bachelor momentum in resonance rest frame.
Bool_t ignoreBarrierScaling() const
Get the ignore barrier factor scaling flag.
Double_t pstar_
Bachelor momentum in parent rest frame.
Double_t q_
Daughter momentum in resonance rest frame.
void clearFloatingParameters()
Clear list of floating parameters.