laura is hosted by Hepforge, IPPP Durham
Laura++  v3r5
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,
76  Pole,
90  };
91 
93  enum LauSpinType {
98  };
99 
101 
105  static bool isIncoherentModel(LauResonanceModel model);
106 
108 
113  LauAbsResonance(LauResonanceInfo* resInfo, const Int_t resPairAmpInt, const LauDaughters* daughters);
114 
116 
121  LauAbsResonance(const TString& resName, const Int_t resPairAmpInt, const LauDaughters* daughters);
122 
124  virtual ~LauAbsResonance();
125 
127  virtual void initialise() = 0;
128 
130 
134  virtual LauComplex amplitude(const LauKinematics* kinematics);
135 
137 
140  virtual LauResonanceModel getResonanceModel() const = 0;
141 
143 
147 
149 
152  const TString& getResonanceName() const {return resName_;}
153 
155 
158  const TString& getSanitisedName() const {return sanitisedName_;}
159 
161 
164  Int_t getPairInt() const {return resPairAmpInt_;}
165 
167 
170  Int_t getSpin() const {return resSpin_;}
171 
173 
176  Int_t getCharge() const {return resCharge_;}
177 
179 
182  Double_t getMass() const {return (resMass_!=0) ? resMass_->unblindValue() : -1.0;}
183 
185 
188  Double_t getWidth() const {return (resWidth_!=0) ? resWidth_->unblindValue() : -1.0;}
189 
191 
195 
197 
201 
203 
206  virtual const std::vector<LauParameter*>& getFloatingParameters() { return this->getParameters(); };
207 
209 
214  virtual Bool_t preSymmetrised() const {return kFALSE;}
215 
217 
220  Bool_t flipHelicity() const {return flipHelicity_;}
221 
223 
226  void flipHelicity(const Bool_t boolean) {flipHelicity_ = boolean;}
227 
229 
234  Bool_t ignoreMomenta() const {return ignoreMomenta_;}
235 
237 
242  void ignoreMomenta(const Bool_t boolean) {ignoreMomenta_ = boolean;}
243 
245 
249  Bool_t ignoreSpin() const {return ignoreSpin_;}
250 
252 
256  void ignoreSpin(const Bool_t boolean) {ignoreSpin_ = boolean;}
257 
259 
264 
266 
270  void ignoreBarrierScaling(const Bool_t boolean) {ignoreBarrierScaling_ = boolean;}
271 
273 
282  void changeResonance(const Double_t newMass, const Double_t newWidth, const Int_t newSpin);
283 
285 
293  void changeBWBarrierRadii(const Double_t resRadius, const Double_t parRadius);
294 
296 
300  virtual void setResonanceParameter(const TString& name, const Double_t value);
301 
303 
306  virtual void floatResonanceParameter(const TString& name);
307 
309 
313  virtual LauParameter* getResonanceParameter(const TString& name);
314 
316 
319  void fixMass(const Bool_t parFixed) { if (resMass_!=0) { resMass_->fixed(parFixed); } }
320 
322 
325  void fixWidth(const Bool_t parFixed) { if (resWidth_!=0) { resWidth_->fixed(parFixed); } }
326 
328 
331  Bool_t fixMass() const { return (resMass_!=0) ? resMass_->fixed() : kTRUE; }
332 
334 
337  Bool_t fixWidth() const { return (resWidth_!=0) ? resWidth_->fixed() : kTRUE; }
338 
340 
343  void setSpinType(const LauSpinType spinType) {spinType_ = spinType;}
344 
346 
351  {
352  resBWFactor_ = resFactor;
353  parBWFactor_ = parFactor;
354  }
355 
357  void fixBarrierRadii(const Bool_t fixResRadius, const Bool_t fixParRadius);
358 
360  Bool_t fixResRadius() const;
361 
363  Bool_t fixParRadius() const;
364 
366  Double_t getResRadius() const;
367 
369  Double_t getParRadius() const;
370 
371  protected:
373  TString getNameParent() const;
375  TString getNameDaug1() const;
377  TString getNameDaug2() const;
379  TString getNameBachelor() const;
381  Double_t getMassParent() const;
383  Double_t getMassDaug1() const;
385  Double_t getMassDaug2() const;
387  Double_t getMassBachelor() const;
389  Int_t getChargeParent() const;
391  Int_t getChargeDaug1() const;
393  Int_t getChargeDaug2() const;
395  Int_t getChargeBachelor() const;
396 
398  Double_t getQ() const {return q_;}
400  Double_t getP() const {return p_;}
402  Double_t getPstar() const {return pstar_;}
404  Double_t getCovFactor() const {return covFactor_;}
405 
412 
415 
417  const LauDaughters* getDaughters() const {return daughters_;}
418 
420 
423  Double_t calcZemachSpinFactor( const Double_t pProd ) const;
424 
426 
429  Double_t calcCovSpinFactor( const Double_t pProd );
430 
432 
435  void calcCovFactor( const Double_t erm );
436 
438 
441  Double_t calcLegendrePoly() const;
442 
444 
447  Double_t calcLegendrePoly( const Double_t cosHel );
448 
450 
454  virtual LauComplex resAmp(Double_t mass, Double_t spinTerm) = 0;
455 
458 
460 
463  void addFloatingParameter( LauParameter* param );
464 
466  std::vector<LauParameter*>& getParameters() { return resParameters_; }
467 
468  private:
470  LauAbsResonance(const LauAbsResonance& rhs);
471 
474 
477 
480 
482  TString nameParent_;
484  TString nameDaug1_;
486  TString nameDaug2_;
488  TString nameBachelor_;
489 
493  Int_t chargeDaug1_;
495  Int_t chargeDaug2_;
498 
500  Double_t massParent_;
502  Double_t massDaug1_;
504  Double_t massDaug2_;
505  // Bachelor mass
506  Double_t massBachelor_;
507 
509  TString resName_;
510 
512  TString sanitisedName_;
513 
518 
520  std::vector<LauParameter*> resParameters_;
521 
523  Int_t resSpin_;
525  Int_t resCharge_;
532 
535 
541  Bool_t ignoreSpin_;
544 
545  // Event kinematics information
546 
548  Double_t mass_;
550  Double_t cosHel_;
551 
553  Double_t q_;
555  Double_t p_;
557  Double_t pstar_;
558 
560 
569  Double_t erm_;
570 
572  Double_t covFactor_;
573 
574  ClassDef(LauAbsResonance,0) // Abstract resonance class
575 
576 };
577 
578 #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.