laura is hosted by Hepforge, IPPP Durham
Laura++  v3r4
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauAbsResonance.hh
Go to the documentation of this file.
1 
2 /*
3 Copyright 2004 University of Warwick
4 
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
8 
9  http://www.apache.org/licenses/LICENSE-2.0
10 
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16 */
17 
18 /*
19 Laura++ package authors:
20 John Back
21 Paul Harrison
22 Thomas Latham
23 */
24 
38 #ifndef LAU_ABS_RESONANCE
39 #define LAU_ABS_RESONANCE
40 
41 #include "TString.h"
42 
44 #include "LauComplex.hh"
45 #include "LauParameter.hh"
46 
47 class LauDaughters;
48 class LauKinematics;
49 class LauResonanceInfo;
50 
52 
53  public:
56  BW,
58  GS,
63  LASS,
83  };
84 
86  enum LauSpinType {
91  };
92 
94 
98  static bool isIncoherentModel(LauResonanceModel model);
99 
101 
106  LauAbsResonance(LauResonanceInfo* resInfo, const Int_t resPairAmpInt, const LauDaughters* daughters);
107 
109 
114  LauAbsResonance(const TString& resName, const Int_t resPairAmpInt, const LauDaughters* daughters);
115 
117  virtual ~LauAbsResonance();
118 
120  virtual void initialise() = 0;
121 
123 
127  virtual LauComplex amplitude(const LauKinematics* kinematics);
128 
130 
133  virtual LauResonanceModel getResonanceModel() const = 0;
134 
136 
140 
142 
145  const TString& getResonanceName() const {return resName_;}
146 
148 
151  const TString& getSanitisedName() const {return sanitisedName_;}
152 
154 
157  Int_t getPairInt() const {return resPairAmpInt_;}
158 
160 
163  Int_t getSpin() const {return resSpin_;}
164 
166 
169  Int_t getCharge() const {return resCharge_;}
170 
172 
175  Double_t getMass() const {return (resMass_!=0) ? resMass_->unblindValue() : -1.0;}
176 
178 
181  Double_t getWidth() const {return (resWidth_!=0) ? resWidth_->unblindValue() : -1.0;}
182 
184 
188 
190 
194 
196 
199  virtual const std::vector<LauParameter*>& getFloatingParameters() { return this->getParameters(); };
200 
202 
207  virtual Bool_t preSymmetrised() const {return kFALSE;}
208 
210 
213  Bool_t flipHelicity() const {return flipHelicity_;}
214 
216 
219  void flipHelicity(const Bool_t boolean) {flipHelicity_ = boolean;}
220 
222 
227  Bool_t ignoreMomenta() const {return ignoreMomenta_;}
228 
230 
235  void ignoreMomenta(const Bool_t boolean) {ignoreMomenta_ = boolean;}
236 
238 
242  Bool_t ignoreSpin() const {return ignoreSpin_;}
243 
245 
249  void ignoreSpin(const Bool_t boolean) {ignoreSpin_ = boolean;}
250 
252 
257 
259 
263  void ignoreBarrierScaling(const Bool_t boolean) {ignoreBarrierScaling_ = boolean;}
264 
266 
275  void changeResonance(const Double_t newMass, const Double_t newWidth, const Int_t newSpin);
276 
278 
286  void changeBWBarrierRadii(const Double_t resRadius, const Double_t parRadius);
287 
289 
293  virtual void setResonanceParameter(const TString& name, const Double_t value);
294 
296 
299  virtual void floatResonanceParameter(const TString& name);
300 
302 
306  virtual LauParameter* getResonanceParameter(const TString& name);
307 
309 
312  void fixMass(const Bool_t parFixed) { if (resMass_!=0) { resMass_->fixed(parFixed); } }
313 
315 
318  void fixWidth(const Bool_t parFixed) { if (resWidth_!=0) { resWidth_->fixed(parFixed); } }
319 
321 
324  Bool_t fixMass() const { return (resMass_!=0) ? resMass_->fixed() : kTRUE; }
325 
327 
330  Bool_t fixWidth() const { return (resWidth_!=0) ? resWidth_->fixed() : kTRUE; }
331 
333 
336  void setSpinType(const LauSpinType spinType) {spinType_ = spinType;}
337 
339 
344  {
345  resBWFactor_ = resFactor;
346  parBWFactor_ = parFactor;
347  }
348 
350  void fixBarrierRadii(const Bool_t fixResRadius, const Bool_t fixParRadius);
351 
353  Bool_t fixResRadius() const;
354 
356  Bool_t fixParRadius() const;
357 
359  Double_t getResRadius() const;
360 
362  Double_t getParRadius() const;
363 
364  protected:
366  TString getNameParent() const;
368  TString getNameDaug1() const;
370  TString getNameDaug2() const;
372  TString getNameBachelor() const;
374  Double_t getMassParent() const;
376  Double_t getMassDaug1() const;
378  Double_t getMassDaug2() const;
380  Double_t getMassBachelor() const;
382  Int_t getChargeParent() const;
384  Int_t getChargeDaug1() const;
386  Int_t getChargeDaug2() const;
388  Int_t getChargeBachelor() const;
389 
391  Double_t getQ() const {return q_;}
393  Double_t getP() const {return p_;}
395  Double_t getPstar() const {return pstar_;}
397  Double_t getCovFactor() const {return covFactor_;}
398 
405 
408 
410  const LauDaughters* getDaughters() const {return daughters_;}
411 
413 
416  Double_t calcZemachSpinFactor( const Double_t pProd ) const;
417 
419 
422  Double_t calcCovSpinFactor( const Double_t pProd );
423 
425 
428  void calcCovFactor( const Double_t erm );
429 
431 
434  Double_t calcLegendrePoly() const;
435 
437 
440  Double_t calcLegendrePoly( const Double_t cosHel );
441 
443 
447  virtual LauComplex resAmp(Double_t mass, Double_t spinTerm) = 0;
448 
451 
453 
456  void addFloatingParameter( LauParameter* param );
457 
459  std::vector<LauParameter*>& getParameters() { return resParameters_; }
460 
461  private:
463  LauAbsResonance(const LauAbsResonance& rhs);
464 
467 
470 
473 
475  TString nameParent_;
477  TString nameDaug1_;
479  TString nameDaug2_;
481  TString nameBachelor_;
482 
486  Int_t chargeDaug1_;
488  Int_t chargeDaug2_;
491 
493  Double_t massParent_;
495  Double_t massDaug1_;
497  Double_t massDaug2_;
498  // Bachelor mass
499  Double_t massBachelor_;
500 
502  TString resName_;
503 
505  TString sanitisedName_;
506 
511 
513  std::vector<LauParameter*> resParameters_;
514 
516  Int_t resSpin_;
518  Int_t resCharge_;
525 
528 
534  Bool_t ignoreSpin_;
537 
538  // Event kinematics information
539 
541  Double_t mass_;
543  Double_t cosHel_;
544 
546  Double_t q_;
548  Double_t p_;
550  Double_t pstar_;
551 
553 
562  Double_t erm_;
563 
565  Double_t covFactor_;
566 
567  ClassDef(LauAbsResonance,0) // Abstract resonance class
568 
569 };
570 
571 #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:47
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:49
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:61
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.