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