laura is hosted by Hepforge, IPPP Durham
Laura++  v3r4
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauRhoOmegaMix.cc
Go to the documentation of this file.
1 
2 /*
3 Copyright 2016 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 
29 #include <iostream>
30 
32 #include "LauConstants.hh"
33 #include "LauDaughters.hh"
34 #include "LauParameter.hh"
35 #include "LauRhoOmegaMix.hh"
36 #include "LauResonanceInfo.hh"
37 #include "LauResonanceMaker.hh"
38 
40 
41 
43  const Int_t resPairAmpInt, const LauDaughters* daughters) :
44  LauAbsResonance(resInfo, resPairAmpInt, daughters),
45  model_(resType),
46  rhoMass_(0.0),
47  rhoResRadius_(0.0),
48  rhoParRadius_(0.0),
49  mOmega_(0),
50  mOmega0_(0.0),
51  mOmegaCur_(0.0),
52  wOmega_(0),
53  wOmega0_(0.0),
54  wOmegaCur_(0.0),
55  magB_(0),
56  phiB_(0),
57  delta_(0),
58  useDenom_(kTRUE),
59  doneFirstInit_(kFALSE),
60  rhoRes_(0),
61  omegaRes_(0)
62 {
63 
64  // Create the rho and omega lineshapes depending on the resonance type enumeration.
65  // The narrow omega is always a relativistic Breit-Wigner (RBW), but the broader rho
66  // can either be a RBW or a Gounaris-Sakurai lineshape. The" _1" form for the resonance type
67  // specifies that we want to assume the amplitude denominator correction term is set to 1.
68  // In principle, the rho lineshape can be any resonance defined by the resInfo pointer, so we
69  // use that to extract all relevant information about the first resonance.
70 
71  // We do not need the barrier nor spin factor terms for the components separately, since
72  // they will be added after the lineshapes have been combined
73 
75 
77 
79  rhoType = LauAbsResonance::GS;
80  }
81 
82  rhoRes_ = resMaker.getResonance(daughters, resInfo->getName(), resPairAmpInt, rhoType,
84 
85  LauResonanceInfo* omegaInfo = resMaker.getResInfo("omega(782)");
86  omegaRes_ = resMaker.getResonance(daughters, omegaInfo->getName(), resPairAmpInt, LauAbsResonance::RelBW,
88 
89  // Check to see if we want to set the denominator factor to unity
91  useDenom_ = kFALSE;
92  }
93 
94  // Initialise various parameters that can be used in the model
95  const TString& parNameBase = this->getSanitisedName();
96 
97  // Pole mass of the omega (2nd) resonance. Initialise using the resonance maker (PDG) info
98  mOmega0_ = omegaInfo->getMass()->unblindValue();
99  // Also set the current internal value of the omega mass for initialisation logic
100  mOmegaCur_ = mOmega0_;
101 
102  TString mOmegaName(parNameBase); mOmegaName += "_mOmega";
103  mOmega_ = resInfo->getExtraParameter(mOmegaName);
104  if (!mOmega_) {
105  mOmega_ = new LauParameter(mOmegaName, mOmega0_, 0.0, 100.0, kTRUE);
106  mOmega_->secondStage(kTRUE);
107  resInfo->addExtraParameter(mOmega_);
108  }
109 
110  // Pole width of the omega (2nd) resonance. Initialise using the resonance maker (PDG) info
111  wOmega0_ = omegaInfo->getWidth()->unblindValue();
112  // Also set the current internal value of the omega width for initialisation logic
113  wOmegaCur_ = wOmega0_;
114 
115  TString wOmegaName(parNameBase); wOmegaName += "_wOmega";
116  wOmega_ = resInfo->getExtraParameter(wOmegaName);
117  if (!wOmega_) {
118  wOmega_ = new LauParameter(wOmegaName, wOmega0_, 0.0, 100.0, kTRUE);
119  wOmega_->secondStage(kTRUE);
120  resInfo->addExtraParameter(wOmega_);
121  }
122 
123  // Set the magnitude and phase of the omega amplitude mixing term.
124  // These should be fitted
125  const Double_t magBVal = 1.0;
126  const Double_t phiBVal = 0.0;
127 
128  TString magBName(parNameBase); magBName += "_magB";
129  magB_ = resInfo->getExtraParameter(magBName);
130  if (!magB_) {
131  magB_ = new LauParameter(magBName, magBVal, 0.0, 100.0, kTRUE);
132  magB_->secondStage(kTRUE);
133  resInfo->addExtraParameter(magB_, kTRUE); // the kTRUE here allows this value to vary between B and Bbar - TODO: maybe make this configurable?
134  }
135 
136  TString phiBName(parNameBase); phiBName += "_phiB";
137  phiB_ = resInfo->getExtraParameter(phiBName);
138  if (!phiB_) {
139  phiB_ = new LauParameter(phiBName, phiBVal, -10.0, 10.0, kTRUE);
140  phiB_->secondStage(kTRUE);
141  resInfo->addExtraParameter(phiB_, kTRUE); // the kTRUE here allows this value to vary between B and Bbar - TODO: maybe make this configurable?
142  }
143 
144  // Set the delta parameter for the omega amplitude mixing term. This
145  // is usually fixed but should be varied for systematic error checks.
146  // In theory, this parameter can be complex, but we only use its magnitude
147  // in the mixing amplitude, since its usually very small: (2.15 +- 0.35) MeV/c^2
148  const Double_t deltaVal = 2.15e-3;
149 
150  TString deltaName(parNameBase); deltaName += "_delta";
151  delta_ = resInfo->getExtraParameter(deltaName);
152  if (!delta_) {
153  delta_ = new LauParameter(deltaName, deltaVal, 0.0, 100.0, kTRUE);
154  delta_->secondStage(kTRUE);
155  resInfo->addExtraParameter(delta_);
156  }
157 
158 }
159 
161 {
162 }
163 
165 {
166 
167  // Initialise the two resonances. This is done within each amplitude() function
168  // call and so floating parameters are checked every time, although secondary
169  // initialisation checks will be "skipped" since the parameters will be unchanged
170  // for the given set of kinematic variables/parameters
171  this->initialiseRho();
172  this->initialiseOmega();
173 
174 }
175 
177 {
178  rhoRes_->initialise();
179 
180  // Keep track of the current pole mass and barrier factor terms so that
181  // we can reinitialise the rho resonance if they change
182  rhoMass_ = rhoRes_->getMass();
185 
186 }
187 
189 {
190  // Set the pole mass and width of the omega resonance if this has changed
191  // using the parameters mOmega_ and wOmega_
192 
193  Double_t newOmegaM(-1.0), newOmegaW(-1.0);
194  const Int_t newOmegaSpin(-1);
195 
196  // See if the new pole mass is different from the current value
197  Double_t tmpOmegaM = mOmega_->unblindValue();
198  if (fabs(tmpOmegaM - mOmegaCur_) > 1e-10) {
199  newOmegaM = tmpOmegaM;
200  }
201 
202  // See if the new pole width is different from the current value
203  Double_t tmpOmegaW = wOmega_->unblindValue();
204  if (fabs(tmpOmegaW - wOmegaCur_) > 1e-10) {
205  newOmegaW = tmpOmegaW;
206  }
207 
208  // If any parameter is negative, they are unchanged
209  omegaRes_->changeResonance(newOmegaM, newOmegaW, newOmegaSpin);
210 
211  Bool_t changedOmegaM(kFALSE);
212  if (newOmegaM > -1.0) {
213  changedOmegaM = kTRUE;
214  }
215 
216  // Let the omega resonance pointer know if the mass or width are fixed or floating
217  if (doneFirstInit_ == kFALSE) {
218 
219  omegaRes_->fixMass(this->fixmOmegaValue());
221 
222  // We do not need to use the spin terms for the omega lineshape, since we
223  // use those from the rho for the full amplitude later on
224  omegaRes_->ignoreSpin(kTRUE);
225 
226  // We want to ignore momentum-dependent width effects: just use the constant pole width
227  omegaRes_->ignoreMomenta(kTRUE);
228 
229  // And we also need to ignore barrier scaling
231 
232  // Initialise the omega resonance pointer
234 
235  doneFirstInit_ = kTRUE;
236 
237  } else {
238 
239  // Reinitialise the omega resonance pointer only if we have changed
240  // its pole mass. It has no barrier factor
241 
242  if (changedOmegaM == kTRUE) {
244  }
245 
246  }
247 
248  // Keep track of the current values of the mass and width of the omega (floating/fixed)
249  mOmegaCur_ = tmpOmegaM;
250  wOmegaCur_ = tmpOmegaW;
251 
252 }
253 
255 
256  // This function overrides and returns the complex dynamical amplitude for the
257  // rho-omega mass mixing amplitude given the kinematics
258 
259  // Check to see if we need to reinitialise the rho resonance pointer
260  const Double_t resMass = rhoRes_->getMass();
261  const Double_t resRadius = rhoRes_->getResRadius();
262  const Double_t parRadius = rhoRes_->getParRadius();
263 
264  if ( ( (!this->fixMass()) && fabs(resMass - rhoMass_) > 1e-10) ||
265  ( (!this->fixResRadius()) && fabs(resRadius - rhoResRadius_) > 1e-10 ) ||
266  ( (!this->fixParRadius()) && fabs(parRadius - rhoParRadius_) > 1e-10 ) ) {
267 
268  this->initialiseRho();
269 
270  }
271 
272  // Always check the initialisaton of the omega resonance in case we have varied
273  // its mass/width via the fit parameters
274  this->initialiseOmega();
275 
276  // First, get the amplitude of the first (rho) resonance.
277  // This will include the full barrier and spin terms
278  const LauComplex rhoAmp = rhoRes_->amplitude(kinematics);
279 
280  // Next, get the amplitude of the second (omega) resonance. This ignores barrier
281  // and spin terms, and uses the pole width only (no momentum dependence)
282  const LauComplex omegaAmp = omegaRes_->amplitude(kinematics);
283 
284  // The Delta parameter, which we assume is purely real. Theoretically, delta can
285  // be complex, but in practice we only use its (usually small) magnitude
286  const Double_t Delta = (resMass + mOmegaCur_)*this->getdeltaValue();
287 
288  // The B amplitude term
289  const Double_t magBVal = this->getmagBValue()*Delta;
290  const Double_t phiBVal = this->getphiBValue();
291  const LauComplex BTerm = LauComplex(magBVal*cos(phiBVal), magBVal*sin(phiBVal));
292 
293  // The mass mixing term
294  const LauComplex unity(1.0, 0.0);
295  const LauComplex mixingTerm = BTerm*omegaAmp + unity;
296 
297  // Now form the full amplitude
298  LauComplex resAmplitude = rhoAmp*mixingTerm;
299 
300  // Add the mixing correction denominator term if required
301  if (useDenom_) {
302 
303  // Here, we need to disable the rho barrier & spin factors, since they are
304  // only needed for the numerator term of the full amplitude. Note that we still
305  // need to use the momentum-dependent width (with its resonance barrier term)
306 
307  // Disable barrier scaling factors for the amplitude (not width)
309  // Also ignore spin terms for now
310  rhoRes_->ignoreSpin(kTRUE);
311 
312  const LauComplex rhoAmp2 = rhoRes_->amplitude(kinematics);
313 
314  // Reinstate barrier scaling and spin term flags
315  rhoRes_->ignoreBarrierScaling(kFALSE);
316  rhoRes_->ignoreSpin(kFALSE);
317 
318  // Denominator term
319  const LauComplex DeltaSq = LauComplex(Delta*Delta, 0.0);
320  const LauComplex denomTerm = unity - DeltaSq*rhoAmp2*omegaAmp;
321 
322  // Modify the full amplitude
323  resAmplitude = resAmplitude/denomTerm;
324 
325  }
326 
327  return resAmplitude;
328 
329 }
330 
331 LauComplex LauRhoOmegaMix::resAmp(Double_t mass, Double_t spinTerm)
332 {
333  std::cerr << "ERROR in LauRhoOmegaMix : This method should never be called." << std::endl;
334  std::cerr << " : Returning zero amplitude for mass = " << mass << " and spinTerm = " << spinTerm << "." << std::endl;
335  return LauComplex(0.0, 0.0);
336 }
337 
338 const std::vector<LauParameter*>& LauRhoOmegaMix::getFloatingParameters() {
339 
340  this->clearFloatingParameters();
341 
342  if ( ! this->fixmOmegaValue() ) {
343  this->addFloatingParameter( mOmega_ );
344  }
345 
346  if ( ! this->fixwOmegaValue() ) {
347  this->addFloatingParameter( wOmega_ );
348  }
349 
350  if ( ! this->fixmagBValue() ) {
351  this->addFloatingParameter( magB_ );
352  }
353 
354  if ( ! this->fixphiBValue() ) {
355  this->addFloatingParameter( phiB_ );
356  }
357 
358  if ( ! this->fixdeltaValue() ) {
359  this->addFloatingParameter( delta_ );
360  }
361 
362  if ( ! this->fixMass() ) {
363  this->addFloatingParameter( this->getMassPar() );
364  }
365 
366  if ( ! this->fixWidth() ) {
367  this->addFloatingParameter( this->getWidthPar() );
368  }
369 
370  if ( ! this->fixResRadius() ) {
371  this->addFloatingParameter( this->getResBWFactor()->getRadiusParameter() );
372  }
373 
374  if ( ! this->fixParRadius() ) {
375  this->addFloatingParameter( this->getParBWFactor()->getRadiusParameter() );
376  }
377 
378  return this->getParameters();
379 }
380 
381 void LauRhoOmegaMix::setResonanceParameter(const TString& name, const Double_t value) {
382 
383  // Set various parameters for the lineshape
384  if (name == "mOmega") {
385  this->setmOmegaValue(value);
386  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter mOmega = " << this->getmOmegaValue() << std::endl;
387  } else if (name == "wOmega") {
388  this->setwOmegaValue(value);
389  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter wOmega = " << this->getwOmegaValue() << std::endl;
390  } else if (name == "magB") {
391  this->setmagBValue(value);
392  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter magB = " << this->getmagBValue() << std::endl;
393  } else if (name == "phiB") {
394  this->setphiBValue(value);
395  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter phiB = " << this->getphiBValue() << std::endl;
396  } else if (name == "delta") {
397  this->setdeltaValue(value);
398  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter delta = " << this->getdeltaValue() << std::endl;
399  } else {
400  std::cerr << "WARNING in LauSigmaRes::setResonanceParameter: Parameter name "<<name<<" not recognised. No parameter changes made." << std::endl;
401  }
402 
403 }
404 
406 
407  if (name == "mOmega") {
408  if ( mOmega_->fixed() ) {
409  mOmega_->fixed( kFALSE );
410  this->addFloatingParameter( mOmega_ );
411  } else {
412  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
413  }
414  } else if (name == "wOmega") {
415  if ( wOmega_->fixed() ) {
416  wOmega_->fixed( kFALSE );
417  this->addFloatingParameter( wOmega_ );
418  } else {
419  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
420  }
421  } else if (name == "magB") {
422  if ( magB_->fixed() ) {
423  magB_->fixed( kFALSE );
424  this->addFloatingParameter( magB_ );
425  } else {
426  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
427  }
428  } else if (name == "phiB") {
429  if ( phiB_->fixed() ) {
430  phiB_->fixed( kFALSE );
431  this->addFloatingParameter( phiB_ );
432  } else {
433  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
434  }
435  } else if (name == "delta") {
436  if ( delta_->fixed() ) {
437  delta_->fixed( kFALSE );
438  this->addFloatingParameter( delta_ );
439  } else {
440  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
441  }
442  }
443 
444 }
445 
447 
448  if (name == "mOmega") {
449  return mOmega_;
450  } else if (name == "wOmega") {
451  return wOmega_;
452  } else if (name == "magB") {
453  return magB_;
454  } else if (name == "phiB") {
455  return phiB_;
456  } else if (name == "delta") {
457  return delta_;
458  } else {
459  std::cerr << "WARNING in LauRhoOmegaMix::getResonanceParameter: Parameter name "<<name<<" not reconised." << std::endl;
460  return 0;
461  }
462 }
463 
464 void LauRhoOmegaMix::setmOmegaValue(const Double_t mOmega) {
465  mOmega_->value( mOmega );
466  mOmega_->genValue( mOmega );
467  mOmega_->initValue( mOmega );
468 }
469 
470 void LauRhoOmegaMix::setwOmegaValue(const Double_t wOmega) {
471  wOmega_->value( wOmega );
472  wOmega_->genValue( wOmega );
473  wOmega_->initValue( wOmega );
474 }
475 
476 void LauRhoOmegaMix::setmagBValue(const Double_t magB) {
477  magB_->value( magB );
478  magB_->genValue( magB );
479  magB_->initValue( magB );
480 }
481 
482 void LauRhoOmegaMix::setphiBValue(const Double_t phiB) {
483  phiB_->value( phiB );
484  phiB_->genValue( phiB );
485  phiB_->initValue( phiB );
486 }
487 
488 void LauRhoOmegaMix::setdeltaValue(const Double_t delta) {
489  delta_->value( delta );
490  delta_->genValue( delta );
491  delta_->initValue( delta );
492 }
493 
virtual const std::vector< LauParameter * > & getFloatingParameters()
Retrieve the resonance parameters, e.g. so that they can be loaded into a fit.
virtual void initialise()=0
Initialise the model.
TString getName() const
Retrieve the name of the resonant particle.
virtual LauComplex resAmp(Double_t mass, Double_t spinTerm)
This is not called, amplitude is used directly instead.
LauParameter * getMassPar()
Get the mass parameter of the resonance.
Bool_t fixed() const
Check whether the parameter is fixed or floated.
void initialiseOmega()
Initialise the omega resonance.
LauParameter * getMass() const
Retrieve the mass of the resonant particle.
Bool_t fixWidth() const
Get the status of resonance width (fixed or released)
Double_t getMass() const
Get the mass of the resonance.
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.
File containing declaration of LauResonanceInfo class.
ClassImp(LauAbsCoeffSet)
Bool_t fixwOmegaValue() const
Fix the omega pole width parameter value.
LauParameter()
Default constructor.
Definition: LauParameter.cc:44
Bool_t fixmOmegaValue() const
Fix the omega pole mass parameter value.
Class for defining the properties of a resonant particle.
const TString & name() const
The parameter name.
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:47
LauParameter * getWidth() const
Retrieve the width of the resonant particle.
LauParameter * delta_
delta parameter of the omega mixing contribution
File containing declaration of LauDaughters class.
void setwOmegaValue(const Double_t wOmega)
Set the omega pole width parameter.
LauParameter * wOmega_
Pole width of the omega contribution.
Double_t rhoParRadius_
Previous value of the parents barrier radius of the rho resonance.
LauParameter * mOmega_
Pole mass of the omega contribution.
void setmagBValue(const Double_t magB)
Set the omega B magnitude mixing parameter.
Double_t mOmegaCur_
Current value of the omega pole mass (floating or fixed)
Bool_t fixdeltaValue() const
Fix the omega mixing parameter delta value.
Double_t rhoMass_
Previous value of the pole mass of the rho resonance.
Bool_t fixmagBValue() const
Fix the omega B magnitude mixing parameter value.
Bool_t fixResRadius() const
Get the status of resonance barrier radius (fixed or released)
Double_t getParRadius() const
Get the radius of the parent barrier factor.
Bool_t fixMass() const
Get the status of resonance mass (fixed or released)
LauParameter * phiB_
B phase parameter of the omega mixing contribution.
Double_t rhoResRadius_
Previous value of the barrier radius of the rho resonance.
virtual LauParameter * getResonanceParameter(const TString &name)
Access the given resonance parameter.
void addFloatingParameter(LauParameter *param)
Add parameter to the list of floating parameters.
LauBlattWeisskopfFactor * getParBWFactor()
Get the centrifugal barrier for the parent decay.
Singleton factory class for creating resonances.
Bool_t fixphiBValue() const
Fix the omega B phase mixing parameter value.
Double_t getdeltaValue() const
Get the omega mixing parameter delta.
Double_t wOmegaCur_
Current value of the omega pole mass (floating or fixed)
File containing declaration of LauBlattWeisskopfFactor class.
File containing declaration of LauResonanceMaker class.
File containing declaration of LauRhoOmegaMix class.
Double_t getwOmegaValue() const
Get the omega pole width parameter value.
File containing declaration of LauParameter class.
virtual LauComplex amplitude(const LauKinematics *kinematics)
Get the complex dynamical amplitude.
std::vector< LauParameter * > & getParameters()
Access the list of floating parameters.
LauParameter * getWidthPar()
Get the width parameter of the resonance.
Class for defining the fit parameter objects.
Definition: LauParameter.hh:49
Bool_t ignoreMomenta() const
Get the ignore momenta flag.
virtual ~LauRhoOmegaMix()
Destructor.
Class for defining the rho-omega resonance mixing model.
Double_t getmOmegaValue() const
Get the omega pole mass parameter value.
void setdeltaValue(const Double_t delta)
Set the omega mixing parameter delta.
LauAbsResonance * omegaRes_
Pointer to the omega (second) resonance lineshape.
LauResonanceModel
Define the allowed resonance types.
Double_t getResRadius() const
Get the radius of the resonance barrier factor.
LauAbsResonance * getResonance(const LauDaughters *daughters, const TString &resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType, const LauBlattWeisskopfFactor::BlattWeisskopfCategory bwCategory=LauBlattWeisskopfFactor::Default)
Create a resonance.
Bool_t fixParRadius() const
Get the status of parent barrier radius (fixed or released)
Bool_t useDenom_
Boolean to specify if we want to use the denominator factor.
void initialiseRho()
Initialise the rho resonance.
void fixWidth(const Bool_t parFixed)
Fix or release the resonance width.
void setmOmegaValue(const Double_t mOmega)
Set the omega pole mass parameter.
Abstract class for defining type for resonance amplitude models (Breit-Wigner, Flatte etc...
virtual void setResonanceParameter(const TString &name, const Double_t value)
Set value of the various parameters.
Bool_t doneFirstInit_
Boolean to specify if we have performed the first initialisation.
Double_t initValue() const
The initial value of the parameter.
File containing LauConstants namespace.
LauParameter * magB_
B magnitude parameter of the omega mixing contribution.
LauAbsResonance * rhoRes_
Pointer to the rho (or first) resonance lineshape.
LauBlattWeisskopfFactor * getResBWFactor()
Get the centrifugal barrier for the resonance decay.
Double_t unblindValue() const
The unblinded value of the parameter.
void setphiBValue(const Double_t phiB)
Set the omega B phase mixing parameter.
Class for defining a complex number.
Definition: LauComplex.hh:61
Class for calculating 3-body kinematic quantities.
Double_t value() const
The value of the parameter.
Double_t getmagBValue() const
Get the omega B magnitude mixing parameter.
static LauResonanceMaker & get()
Get the factory instance.
void fixMass(const Bool_t parFixed)
Fix or release the resonance mass.
Bool_t ignoreSpin() const
Get the ignore spin flag.
virtual LauComplex amplitude(const LauKinematics *kinematics)
Calculate the complex amplitude.
virtual void initialise()
Initialise the model.
Double_t genValue() const
The value generated for the parameter.
virtual void floatResonanceParameter(const TString &name)
Allow the various parameters to float in the fit.
Double_t getphiBValue() const
Get the omega B phase mixing parameter.
LauResonanceInfo * getResInfo(const TString &resName) const
Get the information for the given resonance name.
Bool_t ignoreBarrierScaling() const
Get the ignore barrier factor scaling flag.
void clearFloatingParameters()
Clear list of floating parameters.