laura is hosted by Hepforge, IPPP Durham
Laura++  v3r5
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  whichAmpSq_(0)
63 {
64 
65  // Create the rho and omega lineshapes depending on the resonance type enumeration.
66  // The narrow omega is always a relativistic Breit-Wigner (RBW), but the broader rho
67  // can either be a RBW or a Gounaris-Sakurai lineshape. The" _1" form for the resonance type
68  // specifies that we want to assume the amplitude denominator correction term is set to 1.
69  // In principle, the rho lineshape can be any resonance defined by the resInfo pointer, so we
70  // use that to extract all relevant information about the first resonance.
71 
72  // We do not need the barrier nor spin factor terms for the components separately, since
73  // they will be added after the lineshapes have been combined
74 
76 
78 
80  rhoType = LauAbsResonance::GS;
81  }
82 
83  rhoRes_ = resMaker.getResonance(daughters, resInfo->getName(), resPairAmpInt, rhoType,
85 
86  LauResonanceInfo* omegaInfo = resMaker.getResInfo("omega(782)");
87  omegaRes_ = resMaker.getResonance(daughters, omegaInfo->getName(), resPairAmpInt, LauAbsResonance::RelBW,
89 
90  // Check to see if we want to set the denominator factor to unity
92  useDenom_ = kFALSE;
93  }
94 
95  // Initialise various parameters that can be used in the model
96  const TString& parNameBase = this->getSanitisedName();
97 
98  // Pole mass of the omega (2nd) resonance. Initialise using the resonance maker (PDG) info
99  mOmega0_ = omegaInfo->getMass()->unblindValue();
100  // Also set the current internal value of the omega mass for initialisation logic
101  mOmegaCur_ = mOmega0_;
102 
103  TString mOmegaName(parNameBase); mOmegaName += "_mOmega";
104  mOmega_ = resInfo->getExtraParameter(mOmegaName);
105  if (!mOmega_) {
106  mOmega_ = new LauParameter(mOmegaName, mOmega0_, 0.0, 100.0, kTRUE);
107  mOmega_->secondStage(kTRUE);
108  resInfo->addExtraParameter(mOmega_);
109  }
110 
111  // Pole width of the omega (2nd) resonance. Initialise using the resonance maker (PDG) info
112  wOmega0_ = omegaInfo->getWidth()->unblindValue();
113  // Also set the current internal value of the omega width for initialisation logic
114  wOmegaCur_ = wOmega0_;
115 
116  TString wOmegaName(parNameBase); wOmegaName += "_wOmega";
117  wOmega_ = resInfo->getExtraParameter(wOmegaName);
118  if (!wOmega_) {
119  wOmega_ = new LauParameter(wOmegaName, wOmega0_, 0.0, 100.0, kTRUE);
120  wOmega_->secondStage(kTRUE);
121  resInfo->addExtraParameter(wOmega_);
122  }
123 
124  // Set the magnitude and phase of the omega amplitude mixing term.
125  // These should be fitted
126  const Double_t magBVal = 1.0;
127  const Double_t phiBVal = 0.0;
128 
129  TString magBName(parNameBase); magBName += "_magB";
130  magB_ = resInfo->getExtraParameter(magBName);
131  if (!magB_) {
132  magB_ = new LauParameter(magBName, magBVal, 0.0, 100.0, kTRUE);
133  magB_->secondStage(kTRUE);
134  resInfo->addExtraParameter(magB_, kTRUE); // the kTRUE here allows this value to vary between B and Bbar - TODO: maybe make this configurable?
135  }
136 
137  TString phiBName(parNameBase); phiBName += "_phiB";
138  phiB_ = resInfo->getExtraParameter(phiBName);
139  if (!phiB_) {
140  phiB_ = new LauParameter(phiBName, phiBVal, -10.0, 10.0, kTRUE);
141  phiB_->secondStage(kTRUE);
142  resInfo->addExtraParameter(phiB_, kTRUE); // the kTRUE here allows this value to vary between B and Bbar - TODO: maybe make this configurable?
143  }
144 
145  // Set the delta parameter for the omega amplitude mixing term. This
146  // is usually fixed but should be varied for systematic error checks.
147  // In theory, this parameter can be complex, but we only use its magnitude
148  // in the mixing amplitude, since its usually very small: (2.15 +- 0.35) MeV/c^2
149  const Double_t deltaVal = 2.15e-3;
150 
151  TString deltaName(parNameBase); deltaName += "_delta";
152  delta_ = resInfo->getExtraParameter(deltaName);
153  if (!delta_) {
154  delta_ = new LauParameter(deltaName, deltaVal, 0.0, 100.0, kTRUE);
155  delta_->secondStage(kTRUE);
156  resInfo->addExtraParameter(delta_);
157  }
158 
159 }
160 
162 {
163 }
164 
166 {
167 
168  // Initialise the two resonances. This is done within each amplitude() function
169  // call and so floating parameters are checked every time, although secondary
170  // initialisation checks will be "skipped" since the parameters will be unchanged
171  // for the given set of kinematic variables/parameters
172  this->initialiseRho();
173  this->initialiseOmega();
174 
175 }
176 
178 {
179  // Propagate settings
180  rhoRes_->setSpinType( this->getSpinType() );
181  rhoRes_->flipHelicity( this->flipHelicity() );
182  rhoRes_->ignoreMomenta( this->ignoreMomenta() );
183  rhoRes_->ignoreSpin( this->ignoreSpin() );
185 
186  // Do the initialisation
187  rhoRes_->initialise();
188 
189  // Keep track of the current pole mass and barrier factor terms so that
190  // we can reinitialise the rho resonance if they change
191  rhoMass_ = rhoRes_->getMass();
194 
195 }
196 
198 {
199  // Set the pole mass and width of the omega resonance if this has changed
200  // using the parameters mOmega_ and wOmega_
201 
202  Double_t newOmegaM(-1.0), newOmegaW(-1.0);
203  const Int_t newOmegaSpin(-1);
204 
205  // See if the new pole mass is different from the current value
206  Double_t tmpOmegaM = mOmega_->unblindValue();
207  if (fabs(tmpOmegaM - mOmegaCur_) > 1e-10) {
208  newOmegaM = tmpOmegaM;
209  }
210 
211  // See if the new pole width is different from the current value
212  Double_t tmpOmegaW = wOmega_->unblindValue();
213  if (fabs(tmpOmegaW - wOmegaCur_) > 1e-10) {
214  newOmegaW = tmpOmegaW;
215  }
216 
217  // If any parameter is negative, they are unchanged
218  omegaRes_->changeResonance(newOmegaM, newOmegaW, newOmegaSpin);
219 
220  Bool_t changedOmegaM(kFALSE);
221  if (newOmegaM > -1.0) {
222  changedOmegaM = kTRUE;
223  }
224 
225  if (doneFirstInit_ == kFALSE) {
226 
227  // Let the omega resonance pointer know if the mass or width are fixed or floating
228  omegaRes_->fixMass(this->fixmOmegaValue());
230 
231  // We do not need to use the spin terms for the omega lineshape, since we
232  // use those from the rho for the full amplitude later on
233  // (as such we do not need to propagate the flip helicity setting to the omega, just to the rho)
234  omegaRes_->ignoreSpin(kTRUE);
235 
236  // We want to ignore momentum-dependent width effects: just use the constant pole width
237  omegaRes_->ignoreMomenta(kTRUE);
238 
239  // And we also need to ignore barrier scaling
241 
242  // Initialise the omega resonance pointer
244 
245  doneFirstInit_ = kTRUE;
246 
247  } else {
248 
249  // Reinitialise the omega resonance pointer only if we have changed
250  // its pole mass. It has no barrier factor
251 
252  if (changedOmegaM == kTRUE) {
254  }
255 
256  }
257 
258  // Keep track of the current values of the mass and width of the omega (floating/fixed)
259  mOmegaCur_ = tmpOmegaM;
260  wOmegaCur_ = tmpOmegaW;
261 
262 }
263 
265 
266  // This function overrides and returns the complex dynamical amplitude for the
267  // rho-omega mass mixing amplitude given the kinematics
268 
269  // Check to see if we need to reinitialise the rho resonance pointer
270  const Double_t resMass = rhoRes_->getMass();
271  const Double_t resRadius = rhoRes_->getResRadius();
272  const Double_t parRadius = rhoRes_->getParRadius();
273 
274  if ( ( (!this->fixMass()) && fabs(resMass - rhoMass_) > 1e-10) ||
275  ( (!this->fixResRadius()) && fabs(resRadius - rhoResRadius_) > 1e-10 ) ||
276  ( (!this->fixParRadius()) && fabs(parRadius - rhoParRadius_) > 1e-10 ) ) {
277 
278  this->initialiseRho();
279 
280  }
281 
282  // Always check the initialisaton of the omega resonance in case we have varied
283  // its mass/width via the fit parameters
284  this->initialiseOmega();
285 
286  // First, get the amplitude of the first (rho) resonance.
287  // This will include the full barrier and spin terms
288  const LauComplex rhoAmp = rhoRes_->amplitude(kinematics);
289 
290  // Next, get the amplitude of the second (omega) resonance. This ignores barrier
291  // and spin terms, and uses the pole width only (no momentum dependence)
292  const LauComplex omegaAmp = omegaRes_->amplitude(kinematics);
293 
294  // The Delta parameter, which we assume is purely real. Theoretically, delta can
295  // be complex, but in practice we only use its (usually small) magnitude
296  const Double_t Delta = (resMass + mOmegaCur_)*this->getdeltaValue();
297 
298  // The B amplitude term
299  const Double_t magBVal = this->getmagBValue()*Delta;
300  const Double_t phiBVal = this->getphiBValue();
301  const LauComplex BTerm = LauComplex(magBVal*cos(phiBVal), magBVal*sin(phiBVal));
302 
303  // The mass mixing term
304  const LauComplex unity(1.0, 0.0);
305  const LauComplex mixingTerm = BTerm*omegaAmp + unity;
306 
307  // Now form the full amplitude
308  LauComplex resAmplitude = rhoAmp*mixingTerm;
309 
310  // Add the mixing correction denominator term if required
311  if (useDenom_) {
312 
313  // Here, we need to disable the rho barrier & spin factors, since they are
314  // only needed for the numerator term of the full amplitude. Note that we still
315  // need to use the momentum-dependent width (with its resonance barrier term)
316 
317  // Disable barrier scaling factors for the amplitude (not width)
319  // Also ignore spin terms for now
320  rhoRes_->ignoreSpin(kTRUE);
321 
322  const LauComplex rhoAmp2 = rhoRes_->amplitude(kinematics);
323 
324  // Reinstate barrier scaling and spin term flags
325  rhoRes_->ignoreBarrierScaling(kFALSE);
326  rhoRes_->ignoreSpin(kFALSE);
327 
328  // Denominator term
329  const LauComplex DeltaSq = LauComplex(Delta*Delta, 0.0);
330  const LauComplex denomTerm = unity - DeltaSq*rhoAmp2*omegaAmp;
331 
332  // Modify the full amplitude
333  resAmplitude = resAmplitude/denomTerm;
334 
335  if (this->whichAmpSq_ == 1) {
336  // For omega fit fraction
337  return LauComplex(sqrt(omegaAmp.abs() * Delta * magBVal), 0.0);
338  } else if (this->whichAmpSq_ == 2) {
339  // For rho fit fraction
340  return rhoAmp;
341  }
342 
343  }
344 
345  return resAmplitude;
346 
347 }
348 
349 LauComplex LauRhoOmegaMix::resAmp(Double_t mass, Double_t spinTerm)
350 {
351  std::cerr << "ERROR in LauRhoOmegaMix : This method should never be called." << std::endl;
352  std::cerr << " : Returning zero amplitude for mass = " << mass << " and spinTerm = " << spinTerm << "." << std::endl;
353  return LauComplex(0.0, 0.0);
354 }
355 
356 const std::vector<LauParameter*>& LauRhoOmegaMix::getFloatingParameters() {
357 
358  this->clearFloatingParameters();
359 
360  if ( ! this->fixmOmegaValue() ) {
361  this->addFloatingParameter( mOmega_ );
362  }
363 
364  if ( ! this->fixwOmegaValue() ) {
365  this->addFloatingParameter( wOmega_ );
366  }
367 
368  if ( ! this->fixmagBValue() ) {
369  this->addFloatingParameter( magB_ );
370  }
371 
372  if ( ! this->fixphiBValue() ) {
373  this->addFloatingParameter( phiB_ );
374  }
375 
376  if ( ! this->fixdeltaValue() ) {
377  this->addFloatingParameter( delta_ );
378  }
379 
380  if ( ! this->fixMass() ) {
381  this->addFloatingParameter( this->getMassPar() );
382  }
383 
384  if ( ! this->fixWidth() ) {
385  this->addFloatingParameter( this->getWidthPar() );
386  }
387 
388  if ( ! this->fixResRadius() ) {
389  this->addFloatingParameter( this->getResBWFactor()->getRadiusParameter() );
390  }
391 
392  if ( ! this->fixParRadius() ) {
393  this->addFloatingParameter( this->getParBWFactor()->getRadiusParameter() );
394  }
395 
396  return this->getParameters();
397 }
398 
399 void LauRhoOmegaMix::setResonanceParameter(const TString& name, const Double_t value) {
400 
401  // Set various parameters for the lineshape
402  if (name == "mOmega") {
403  this->setmOmegaValue(value);
404  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter mOmega = " << this->getmOmegaValue() << std::endl;
405  } else if (name == "wOmega") {
406  this->setwOmegaValue(value);
407  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter wOmega = " << this->getwOmegaValue() << std::endl;
408  } else if (name == "magB") {
409  this->setmagBValue(value);
410  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter magB = " << this->getmagBValue() << std::endl;
411  } else if (name == "phiB") {
412  this->setphiBValue(value);
413  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter phiB = " << this->getphiBValue() << std::endl;
414  } else if (name == "delta") {
415  this->setdeltaValue(value);
416  std::cout << "INFO in LauRhoOmegaMix::setResonanceParameter : Setting parameter delta = " << this->getdeltaValue() << std::endl;
417  } else {
418  std::cerr << "WARNING in LauSigmaRes::setResonanceParameter: Parameter name "<<name<<" not recognised. No parameter changes made." << std::endl;
419  }
420 
421 }
422 
424 
425  if (name == "mOmega") {
426  if ( mOmega_->fixed() ) {
427  mOmega_->fixed( kFALSE );
428  this->addFloatingParameter( mOmega_ );
429  } else {
430  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
431  }
432  } else if (name == "wOmega") {
433  if ( wOmega_->fixed() ) {
434  wOmega_->fixed( kFALSE );
435  this->addFloatingParameter( wOmega_ );
436  } else {
437  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
438  }
439  } else if (name == "magB") {
440  if ( magB_->fixed() ) {
441  magB_->fixed( kFALSE );
442  this->addFloatingParameter( magB_ );
443  } else {
444  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
445  }
446  } else if (name == "phiB") {
447  if ( phiB_->fixed() ) {
448  phiB_->fixed( kFALSE );
449  this->addFloatingParameter( phiB_ );
450  } else {
451  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
452  }
453  } else if (name == "delta") {
454  if ( delta_->fixed() ) {
455  delta_->fixed( kFALSE );
456  this->addFloatingParameter( delta_ );
457  } else {
458  std::cerr << "WARNING in LauRhoOmegaMix::floatResonanceParameter: Parameter "<<name<<" already floating. No parameter changes made." << std::endl;
459  }
460  }
461 
462 }
463 
465 
466  if (name == "mOmega") {
467  return mOmega_;
468  } else if (name == "wOmega") {
469  return wOmega_;
470  } else if (name == "magB") {
471  return magB_;
472  } else if (name == "phiB") {
473  return phiB_;
474  } else if (name == "delta") {
475  return delta_;
476  } else {
477  std::cerr << "WARNING in LauRhoOmegaMix::getResonanceParameter: Parameter name "<<name<<" not reconised." << std::endl;
478  return 0;
479  }
480 }
481 
482 void LauRhoOmegaMix::setmOmegaValue(const Double_t mOmega) {
483  mOmega_->value( mOmega );
484  mOmega_->genValue( mOmega );
485  mOmega_->initValue( mOmega );
486 }
487 
488 void LauRhoOmegaMix::setwOmegaValue(const Double_t wOmega) {
489  wOmega_->value( wOmega );
490  wOmega_->genValue( wOmega );
491  wOmega_->initValue( wOmega );
492 }
493 
494 void LauRhoOmegaMix::setmagBValue(const Double_t magB) {
495  magB_->value( magB );
496  magB_->genValue( magB );
497  magB_->initValue( magB );
498 }
499 
500 void LauRhoOmegaMix::setphiBValue(const Double_t phiB) {
501  phiB_->value( phiB );
502  phiB_->genValue( phiB );
503  phiB_->initValue( phiB );
504 }
505 
506 void LauRhoOmegaMix::setdeltaValue(const Double_t delta) {
507  delta_->value( delta );
508  delta_->genValue( delta );
509  delta_->initValue( delta );
510 }
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.
Int_t whichAmpSq_
Which amplitude to calculate for rho/omega fit fractions.
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)
Bool_t flipHelicity() const
Get the helicity flip flag.
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
LauSpinType getSpinType() const
Get the spin type.
Class for calculating 3-body kinematic quantities.
void setSpinType(const LauSpinType spinType)
Set the spin formalism to be used.
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.