Page MenuHomeHEPForge

No OneTemporary

diff --git a/Decay/FormFactors/KMatrix.h b/Decay/FormFactors/KMatrix.h
--- a/Decay/FormFactors/KMatrix.h
+++ b/Decay/FormFactors/KMatrix.h
@@ -1,113 +1,115 @@
// -*- C++ -*-
#ifndef Herwig_KMatrix_H
#define Herwig_KMatrix_H
//
// This is the declaration of the KMatrix class.
//
#include "ThePEG/Interface/Interfaced.h"
#include "Herwig/Decay/IsoSpin.h"
#include "KMatrix.fh"
#include <boost/numeric/ublas/matrix.hpp>
namespace Herwig {
using namespace ThePEG;
/**
* The KMatrix class is a base class for the implementation of
* K-matrix parameterizations in Herwig
*
* @see \ref KMatrixInterfaces "The interfaces"
* defined for KMatrix.
*/
class KMatrix: public Interfaced {
public:
/**
* Enum for the possible channels
*/
enum Channels { PiPi, KPi, KEta, KEtaPrime};
public:
/**
* The default constructor.
*/
KMatrix(FlavourInfo flavour=FlavourInfo(),
vector<Channels> channels=vector<Channels>(),
vector<Energy2> poles=vector<Energy2>());
/**
* The quantum numbers of the K-matrix
*/
FlavourInfo flavourInfo() const {
return flavour_;
};
/**
* Compute the K-matrix for a given scale
+ * @param s The scale
+ * @param Whether ot not to multiply by \f$\prod_i(1-s/m^2_i\f$ to regularise the poles
*/
- virtual boost::numeric::ublas::matrix<double> K(Energy2 s) = 0;
+ virtual boost::numeric::ublas::matrix<double> K(Energy2 s, bool multiplyByPoles=false) = 0;
/**
* Vector containing the locations of the poles
*/
const vector<Energy2> & poles() const {return poles_;}
public:
/** @name Functions used by the persistent I/O system. */
//@{
/**
* Function used to write out object persistently.
* @param os the persistent output stream written to.
*/
void persistentOutput(PersistentOStream & os) const;
/**
* Function used to read in object persistently.
* @param is the persistent input stream read from.
* @param version the version number of the object when written.
*/
void persistentInput(PersistentIStream & is, int version);
//@}
/**
* The standard Init function used to initialize the interfaces.
* Called exactly once for each class by the class description system
* before the main function starts or
* when this class is dynamically loaded.
*/
static void Init();
private:
/**
* The assignment operator is private and must never be called.
* In fact, it should not even be implemented.
*/
KMatrix & operator=(const KMatrix &);
private:
/**
* The quantum numbers for the K-matrix
*/
FlavourInfo flavour_;
/**
* The mesons in the various channels
*/
vector<Channels> channels_;
/**
* The positions of the poles
*/
vector<Energy2> poles_;
};
}
#endif /* Herwig_KMatrix_H */
diff --git a/Decay/FormFactors/KPiIHalfFOCUSKMatrix.cc b/Decay/FormFactors/KPiIHalfFOCUSKMatrix.cc
--- a/Decay/FormFactors/KPiIHalfFOCUSKMatrix.cc
+++ b/Decay/FormFactors/KPiIHalfFOCUSKMatrix.cc
@@ -1,98 +1,98 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
// functions of the KPiIHalfFOCUSKMatrix class.
//
#include "KPiIHalfFOCUSKMatrix.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/EventRecord/Particle.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
using namespace Herwig;
KPiIHalfFOCUSKMatrix::KPiIHalfFOCUSKMatrix()
: KMatrix(FlavourInfo(IsoSpin::IHalf,IsoSpin::I3Unknown,
Strangeness::PlusOne,Charm::Zero,
Beauty::Zero),
vector<Channels>({KMatrix::KPi,KMatrix::KEtaPrime}),
vector<Energy2>({1.7919*GeV2})),
C11_({0.79299,-0.15099,0.00811}),
C22_({0.15040,-0.038266,0.0022596}),
C12_({0.17054,-0.0219,0.00085655}),
g_({0.31072*GeV,-0.02323*GeV}),
sHalf_(0.23*GeV2)
{}
IBPtr KPiIHalfFOCUSKMatrix::clone() const {
return new_ptr(*this);
}
IBPtr KPiIHalfFOCUSKMatrix::fullclone() const {
return new_ptr(*this);
}
void KPiIHalfFOCUSKMatrix::persistentOutput(PersistentOStream & os) const {
os << C11_ << C22_ << C12_ << ounit(sHalf_,GeV2) << ounit(sNorm_,GeV2);
}
void KPiIHalfFOCUSKMatrix::persistentInput(PersistentIStream & is, int) {
is >> C11_ >> C22_ >> C12_ >> iunit(sHalf_,GeV2) >> iunit(sNorm_,GeV2);
}
// The following static variable is needed for the type
// description system in ThePEG.
DescribeClass<KPiIHalfFOCUSKMatrix,KMatrix>
describeHerwigKPiIHalfFOCUSKMatrix("Herwig::KPiIHalfFOCUSKMatrix", "HwFormFactors.so");
void KPiIHalfFOCUSKMatrix::Init() {
static ClassDocumentation<KPiIHalfFOCUSKMatrix> documentation
("The KPiIHalfFOCUSKMatrix class implements the K-matrix fit of "
"the FOCUS collaboration (Phys.Lett. B653 (2007) 1-11) for the I=1/2 "
"component of the Kpi K-matrix.",
"The KPiIHalfFOCUSKMatrix class implements the K-matrix fit of "
"the FOCUS collaboration \\cite{Pennington:2007se} for the $I=1/2$ "
"component of the $K\\pi$ K-matrix.",
"\\bibitem{Pennington:2007se}"
"J.~M.~Link {\\it et al.} [FOCUS Collaboration],"
"%``Dalitz plot analysis of the $D^{+} \\to K^{-} \\pi^{+} \\pi^{+}$ decay in the FOCUS experiment,''"
"Phys.\\ Lett.\\ B {\\bf 653} (2007) 1"
"doi:10.1016/j.physletb.2007.06.070"
"[arXiv:0705.2248 [hep-ex]]."
"%%CITATION = doi:10.1016/j.physletb.2007.06.070;%%"
"%79 citations counted in INSPIRE as of 14 Jan 2020");
}
void KPiIHalfFOCUSKMatrix::doinit() {
KMatrix::doinit();
Energy mK = getParticleData(ParticleID::Kplus)->mass();
Energy mpi= getParticleData(ParticleID::piplus)->mass();
sNorm_ = sqr(mK)+sqr(mpi);
}
-boost::numeric::ublas::matrix<double> KPiIHalfFOCUSKMatrix::K(Energy2 s) {
+boost::numeric::ublas::matrix<double> KPiIHalfFOCUSKMatrix::K(Energy2 s, bool includePoles) {
double st = s/sNorm_-1.;
double pre = (s-sHalf_)/sNorm_;
- Energy2 denom = poles()[0]-s;
+ Energy2 denom = !includePoles ? poles()[0]-s : poles()[0];
boost::numeric::ublas::matrix<double> output =
boost::numeric::ublas::zero_matrix<double>(2,2);
output(0,0) = g_[0]*g_[0]/denom;
output(0,1) = g_[0]*g_[1]/denom;
output(1,1) = g_[1]*g_[1]/denom;
- double param=1.;
+ double param = !includePoles ? 1. : (1.-s/poles()[0]);
for(unsigned int ix=0;ix<C11_.size();++ix) {
output(0,0) += C11_[ix]*param;
- output(1,1)+= C22_[ix]*param;
- output(0,1)+= C12_[ix]*param;
+ output(1,1) += C22_[ix]*param;
+ output(0,1) += C12_[ix]*param;
param *= st;
}
output(1,0) = output(0,1);
output *= pre;
return output;
}
diff --git a/Decay/FormFactors/KPiIHalfFOCUSKMatrix.h b/Decay/FormFactors/KPiIHalfFOCUSKMatrix.h
--- a/Decay/FormFactors/KPiIHalfFOCUSKMatrix.h
+++ b/Decay/FormFactors/KPiIHalfFOCUSKMatrix.h
@@ -1,123 +1,125 @@
// -*- C++ -*-
#ifndef Herwig_KPiIHalfFOCUSKMatrix_H
#define Herwig_KPiIHalfFOCUSKMatrix_H
//
// This is the declaration of the KPiIHalfFOCUSKMatrix class.
//
#include "KMatrix.h"
namespace Herwig {
using namespace ThePEG;
/**
* The KPiIHalfFOCUSKMatrix class implements the K-matrix fit of
* the FOCUS collaboration (Phys.Lett. B653 (2007) 1-11) for the \f$I=\frac12\f$
* component of the \f$K\pi\f$ K-matrix.
*
* @see \ref KPiIHalfFOCUSKMatrixInterfaces "The interfaces"
* defined for KPiIHalfFOCUSKMatrix.
*/
class KPiIHalfFOCUSKMatrix: public KMatrix {
public:
/**
* The default constructor.
*/
KPiIHalfFOCUSKMatrix();
/**
* Compute the K-matrix for a given scale
+ * @param s The scale
+ * @param Whether or not to multiply by \f$\prod_i(1-s/m^2_i\f$ to regularise the poles
*/
- virtual boost::numeric::ublas::matrix<double> K(Energy2 s);
+ virtual boost::numeric::ublas::matrix<double> K(Energy2 s, bool multiplyByPoles=false);
public:
/** @name Functions used by the persistent I/O system. */
//@{
/**
* Function used to write out object persistently.
* @param os the persistent output stream written to.
*/
void persistentOutput(PersistentOStream & os) const;
/**
* Function used to read in object persistently.
* @param is the persistent input stream read from.
* @param version the version number of the object when written.
*/
void persistentInput(PersistentIStream & is, int version);
//@}
/**
* The standard Init function used to initialize the interfaces.
* Called exactly once for each class by the class description system
* before the main function starts or
* when this class is dynamically loaded.
*/
static void Init();
protected:
/** @name Clone Methods. */
//@{
/**
* Make a simple clone of this object.
* @return a pointer to the new object.
*/
virtual IBPtr clone() const;
/** Make a clone of this object, possibly modifying the cloned object
* to make it sane.
* @return a pointer to the new object.
*/
virtual IBPtr fullclone() const;
//@}
protected:
/** @name Standard Interfaced functions. */
//@{
/**
* Initialize this object after the setup phase before saving an
* EventGenerator to disk.
* @throws InitException if object could not be initialized properly.
*/
virtual void doinit();
//@}
private:
/**
* The assignment operator is private and must never be called.
* In fact, it should not even be implemented.
*/
KPiIHalfFOCUSKMatrix & operator=(const KPiIHalfFOCUSKMatrix &);
private:
/**
* Constants \f$C_{ij,k}\f$ from Eqn 8
*/
vector<double> C11_,C22_,C12_;
/**
* Couplings for the resonances
*/
vector<Energy> g_;
/**
* Adler zero position
*/
Energy2 sHalf_;
/**
* Normalisation scale
*/
Energy2 sNorm_;
};
}
#endif /* Herwig_KPiIHalfFOCUSKMatrix_H */
diff --git a/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.cc b/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.cc
--- a/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.cc
+++ b/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.cc
@@ -1,86 +1,86 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
// functions of the KPiIThreeHalfFOCUSKMatrix class.
//
#include "KPiIThreeHalfFOCUSKMatrix.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/EventRecord/Particle.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
using namespace Herwig;
KPiIThreeHalfFOCUSKMatrix::KPiIThreeHalfFOCUSKMatrix()
: KMatrix(FlavourInfo(IsoSpin::IThreeHalf,IsoSpin::I3Unknown,
Strangeness::PlusOne,Charm::Zero,
Beauty::Zero),
vector<Channels>({KMatrix::KPi})),
D_({-0.22147,0.026637,-0.00092057}),
sThreeHalf_(0.27*GeV2)
{}
IBPtr KPiIThreeHalfFOCUSKMatrix::clone() const {
return new_ptr(*this);
}
IBPtr KPiIThreeHalfFOCUSKMatrix::fullclone() const {
return new_ptr(*this);
}
void KPiIThreeHalfFOCUSKMatrix::persistentOutput(PersistentOStream & os) const {
os << D_ << ounit(sThreeHalf_,GeV2) << ounit(sNorm_,GeV2);
}
void KPiIThreeHalfFOCUSKMatrix::persistentInput(PersistentIStream & is, int) {
is >> D_ >> iunit(sThreeHalf_,GeV2) >> iunit(sNorm_,GeV2);
}
// The following static variable is needed for the type
// description system in ThePEG.
DescribeClass<KPiIThreeHalfFOCUSKMatrix,KMatrix>
describeHerwigKPiIThreeHalfFOCUSKMatrix("Herwig::KPiIThreeHalfFOCUSKMatrix", "HwFormFactors.so");
void KPiIThreeHalfFOCUSKMatrix::Init() {
static ClassDocumentation<KPiIThreeHalfFOCUSKMatrix> documentation
("The KPiIThreeHalfFOCUSKMatrix class implements the K-matrix fit of "
"the FOCUS collaboration (Phys.Lett. B653 (2007) 1-11) for the I=3/2 "
"component of the Kpi K-matrix.",
"The KPiIThreeHalfFOCUSKMatrix class implements the K-matrix fit of "
"the FOCUS collaboration \\cite{Pennington:2007se} for the $I=3/2$ "
"component of the $K\\pi$ K-matrix.",
"\\bibitem{Pennington:2007se}"
"J.~M.~Link {\\it et al.} [FOCUS Collaboration],"
"%``Dalitz plot analysis of the $D^{+} \\to K^{-} \\pi^{+} \\pi^{+}$ decay in the FOCUS experiment,''"
"Phys.\\ Lett.\\ B {\\bf 653} (2007) 1"
"doi:10.1016/j.physletb.2007.06.070"
"[arXiv:0705.2248 [hep-ex]]."
"%%CITATION = doi:10.1016/j.physletb.2007.06.070;%%"
"%79 citations counted in INSPIRE as of 14 Jan 2020");
}
void KPiIThreeHalfFOCUSKMatrix::doinit() {
KMatrix::doinit();
Energy mK = getParticleData(ParticleID::Kplus)->mass();
Energy mpi= getParticleData(ParticleID::piplus)->mass();
sNorm_ = sqr(mK)+sqr(mpi);
}
-boost::numeric::ublas::matrix<double> KPiIThreeHalfFOCUSKMatrix::K(Energy2 s) {
+boost::numeric::ublas::matrix<double> KPiIThreeHalfFOCUSKMatrix::K(Energy2 s,bool) {
double st = s/sNorm_-1.;
double param=1.;
boost::numeric::ublas::matrix<double> output =
boost::numeric::ublas::zero_matrix<double>(1,1);
for(unsigned int ix=0;ix<D_.size();++ix) {
output(0,0) += D_[ix]*param;
param *= st;
}
output *=(s-sThreeHalf_)/sNorm_;
return output;
}
diff --git a/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.h b/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.h
--- a/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.h
+++ b/Decay/FormFactors/KPiIThreeHalfFOCUSKMatrix.h
@@ -1,118 +1,120 @@
// -*- C++ -*-
#ifndef Herwig_KPiIThreeHalfFOCUSKMatrix_H
#define Herwig_KPiIThreeHalfFOCUSKMatrix_H
//
// This is the declaration of the KPiIThreeHalfFOCUSKMatrix class.
//
#include "KMatrix.h"
namespace Herwig {
using namespace ThePEG;
/**
* The KPiIThreeHalfFOCUSKMatrix class implements the K-matrix fit of
* the FOCUS collaboration (Phys.Lett. B653 (2007) 1-11) for the \f$I=\frac32\f$
* component of the \f$K\pi\f$ K-matrix.
*
* @see \ref KPiIThreeHalfFOCUSKMatrixInterfaces "The interfaces"
* defined for KPiIThreeHalfFOCUSKMatrix.
*/
class KPiIThreeHalfFOCUSKMatrix: public KMatrix {
public:
/**
* The default constructor.
*/
KPiIThreeHalfFOCUSKMatrix();
/**
* Compute the K-matrix for a given scale
+ * @param s The scale
+ * @param Whether ot not to multiply by \f$\prod_i(1-s/m^2_i\f$ to regularise the poles
*/
- virtual boost::numeric::ublas::matrix<double> K(Energy2 s);
+ virtual boost::numeric::ublas::matrix<double> K(Energy2 s, bool multiplyByPoles=false);
public:
/** @name Functions used by the persistent I/O system. */
//@{
/**
* Function used to write out object persistently.
* @param os the persistent output stream written to.
*/
void persistentOutput(PersistentOStream & os) const;
/**
* Function used to read in object persistently.
* @param is the persistent input stream read from.
* @param version the version number of the object when written.
*/
void persistentInput(PersistentIStream & is, int version);
//@}
/**
* The standard Init function used to initialize the interfaces.
* Called exactly once for each class by the class description system
* before the main function starts or
* when this class is dynamically loaded.
*/
static void Init();
protected:
/** @name Clone Methods. */
//@{
/**
* Make a simple clone of this object.
* @return a pointer to the new object.
*/
virtual IBPtr clone() const;
/** Make a clone of this object, possibly modifying the cloned object
* to make it sane.
* @return a pointer to the new object.
*/
virtual IBPtr fullclone() const;
//@}
protected:
/** @name Standard Interfaced functions. */
//@{
/**
* Initialize this object after the setup phase before saving an
* EventGenerator to disk.
* @throws InitException if object could not be initialized properly.
*/
virtual void doinit();
//@}
private:
/**
* The assignment operator is private and must never be called.
* In fact, it should not even be implemented.
*/
KPiIThreeHalfFOCUSKMatrix & operator=(const KPiIThreeHalfFOCUSKMatrix &);
private:
/**
* Constants \f$D_{22,i}\f$ from Eqn 9
*/
vector<double> D_;
/**
* Adler zero position
*/
Energy2 sThreeHalf_;
/**
* Normalisation scale
*/
Energy2 sNorm_;
};
}
#endif /* Herwig_KPiIThreeHalfFOCUSKMatrix_H */

File Metadata

Mime Type
text/x-diff
Expires
Tue, Nov 19, 3:19 PM (1 d, 16 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3804931
Default Alt Text
(16 KB)

Event Timeline