laura is hosted by Hepforge, IPPP Durham
Laura++  v3r2
A maximum likelihood fitting package for performing Dalitz-plot analysis.
LauKMatrixProdSVP.cc
Go to the documentation of this file.
1 
2 // Copyright University of Warwick 2008 - 2014.
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5 
6 // Authors:
7 // Thomas Latham
8 // John Back
9 // Paul Harrison
10 
15 #include "LauKMatrixProdSVP.hh"
16 #include "LauKMatrixPropagator.hh"
17 
18 #include <iostream>
19 
21 
22 LauKMatrixProdSVP::LauKMatrixProdSVP(const TString& SVPName, Int_t channelIndex, Int_t resPairAmpInt,
23  LauKMatrixPropagator* propagator, const LauDaughters* daughters,
24  Bool_t useProdAdler) :
25  LauAbsResonance(SVPName, resPairAmpInt, daughters),
26  thePropagator_(propagator),
27  channelIndex_(channelIndex - 1), // channelIndex goes from 1 to nChannels.
28  useProdAdler_(useProdAdler)
29 {
30  // Constructor
31  if (useProdAdler_) {
32  std::cout<<"Creating K matrix production SVP "<<SVPName<<" with channelIndex = "
33  <<channelIndex<<" with s-dependent production Adler zero term"<<std::endl;
34  } else {
35  std::cout<<"Creating K matrix production SVP "<<SVPName<<" with channelIndex = "
36  <<channelIndex<<" with production Adler zero factor = 1"<<std::endl;
37  }
38 
39 
40 }
41 
43 {
44  // Destructor
45 }
46 
47 LauComplex LauKMatrixProdSVP::resAmp(Double_t mass, Double_t spinTerm)
48 {
49  std::cerr << "ERROR in LauKMatrixProdSVP::resAmp : This method shouldn't get called." << std::endl;
50  std::cerr << " Returning zero amplitude for mass = " << mass << " and spinTerm = " << spinTerm << "." << std::endl;
51  return LauComplex(0.0, 0.0);
52 }
53 
55 {
56 
57  // Calculate the amplitude for the K-matrix production pole.
58  // First, make sure the K-matrix propagator is up-to-date for
59  // the given centre-of-mass squared value ("s") from the kinematics.
60  LauComplex amp(0.0, 0.0);
61 
62  if (thePropagator_ == 0) {
63  std::cerr << "ERROR in LauKMatrixProdSVP::amplitude : The propagator is null" << std::endl;
64  return amp;
65  }
66 
67  thePropagator_->updatePropagator(kinematics);
68 
69  Double_t SVPTerm = thePropagator_->getProdSVPTerm();
70 
72 
73  // Include Adler zero factor if requested
74  Double_t adlerZero(1.0);
75  if (useProdAdler_) {adlerZero = thePropagator_->getAdlerZero();}
76 
77  amp.rescale(SVPTerm*adlerZero);
78 
79  return amp;
80 
81 }
82 
virtual ~LauKMatrixProdSVP()
Destructor.
ClassImp(LauAbsCoeffSet)
Class that defines the particular 3-body decay under study.
Definition: LauDaughters.hh:33
File containing declaration of LauKMatrixProdSVP class.
LauKMatrixPropagator * thePropagator_
The K-matrix propagator.
Bool_t useProdAdler_
Boolean to turn on/off the production Adler zero factor.
File containing declaration of LauKMatrixPropagator class.
virtual LauComplex resAmp(Double_t mass, Double_t spinTerm)
Function not meant to be called.
Int_t channelIndex_
The number of the channel.
Double_t getAdlerZero() const
Get the Adler zero factor, which is set when updatePropagator is called.
void updatePropagator(const LauKinematics *kinematics)
Calculate the invariant mass squared s.
Abstract class for defining type for resonance amplitude models (Breit-Wigner, Flatte etc...
void rescale(Double_t scaleVal)
Scale this by a factor.
Definition: LauComplex.hh:285
Class for defining a complex number.
Definition: LauComplex.hh:47
Class for calculating 3-body kinematic quantities.
Double_t getProdSVPTerm() const
Get the &quot;slowly-varying part&quot; term of the amplitude.
LauComplex getPropTerm(Int_t channelIndex) const
Get the full complex propagator term for a given channel.
virtual LauComplex amplitude(const LauKinematics *kinematics)
The amplitude calculation.
Class for defining a K-matrix production &quot;slowly-varying part&quot; (SVP) amplitude.
Class for defining a K-matrix propagator.