Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F7877343
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
16 KB
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
R563 testingHerwigHG
Event Timeline
Log In to Comment