22#include "EvtGenBase/EvtParticle.hh"
23#include "EvtGenBase/EvtGenKine.hh"
24#include "EvtGenBase/EvtPDL.hh"
25#include "EvtGenBase/EvtVector4C.hh"
26#include "EvtGenBase/EvtVector4R.hh"
27#include "EvtGenBase/EvtReport.hh"
28#include "EvtGenBase/EvtRandom.hh"
29#include "EvtGenModels/EvtVPHOtoVISRHi.hh"
38 model_name=
"VPHOTOVISRHI";
91 double L=2.0*log(
w/0.000511);
100 double minResMass = md1+md2;
103 minResMass = minResMass + md3;
107 double pgmax=(
s-minResMass*minResMass)/(2.0*
w);
118 double mres=p4res.
mass();
130 if (mres<=3.9)
sigma = 0.00001;
132 bool sigmacomputed(
false);
141 sigma*=5./9.*(1.-1.*sqrt((4.18-mres)*(4.18-mres))/(4.3-4.18));
143 else if(mres>4.07 && mres<=4.18) {
146 else if (mres<=4.07&&mres>4.03)
148 sigma*=(5./9. - 1.5/9.*sqrt((4.07-mres)*(4.07-mres))/(4.07-4.03));
150 else if (mres<=4.03&& mres>=4.013)
152 sigma*=(3.5/9. - 3.5/9.*sqrt((4.03-mres)*(4.03-mres))/(4.03-4.013));
157 sigmacomputed =
true;
174 else if( mres>4.06 && mres<4.2){
175 sigma*=((1.5/9.+2.5/9.*sqrt((4.2-mres)*(4.2-mres))/(4.2-4.06)));
177 else if(mres>=4.015 && mres<4.06){
178 sigma*=((4./9.+3./9.*sqrt((4.06-mres)*(4.06-mres))/(4.06-4.015)));
180 else if (mres<4.015 && mres>=3.9){
181 sigma*=((7./9.-7/9.*sqrt((4.015-mres)*(4.015-mres))/(4.015-3.9)));
186 sigmacomputed =
true;
193 if(mres>(2.112+2.112)){
201 sigmacomputed =
true;
214 else if (mres>4.18 && mres<=4.26){
215 sigma*=1./9.*(0.05+0.95*sqrt((4.26-mres)*(4.26-mres))/(4.26-4.18));
217 else if (mres>4.16 && mres<=4.18){
220 else if (mres<=4.16 && mres>4.08){
221 sigma*=1/9.*(1-sqrt((4.16-mres)*(4.16-mres))/(4.16-4.08));
223 else if (mres<=(4.08)){
226 sigmacomputed =
true;
236 sigmacomputed =
true;
243 sigmacomputed =
true;
255 sigmacomputed =
true;
259 if (! sigmacomputed) {
260 report(
ERROR,
"EvtGen") <<
"VPHOTOVISRHI: This model requires daughters to be listed in a particular order." << endl
261 <<
"The following are acceptable:" << endl
262 <<
"D0 anti-D0" << endl
264 <<
"D*0 anti-D0" << endl
265 <<
"anti-D*0 D0" << endl
268 <<
"D*0 anti-D*0" << endl
270 <<
"D_s+ D_s-" << endl
271 <<
"D_s*+ D_s-" << endl
272 <<
"D_s*- D_s+" << endl
273 <<
"D_s*+ D_s*-" << endl
274 <<
"(D* D pi can be in any order)" << endl
275 <<
"Aborting..." << endl;
295 double norm=sqrt(
sigma);
EvtComplex exp(const EvtComplex &c)
ostream & report(Severity severity, const char *facility)
DOUBLE_PRECISION count[3]
void vertex(const EvtComplex &)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
static double getMeanMass(EvtId i)
static EvtId getId(const std::string &name)
virtual EvtVector4C epsParent(int i) const
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtVector4R getP4Restframe()
EvtParticle * getDaug(int i)
virtual EvtVector4C eps(int i) const
void decay(EvtParticle *p)
virtual ~EvtVPHOtoVISRHi()
void getName(std::string &name)