22#include "EvtGenBase/EvtPatches.hh"
23#include "EvtGenBase/EvtPatches.hh"
24#include "EvtGenBase/EvtParticle.hh"
25#include "EvtGenBase/EvtGenKine.hh"
26#include "EvtGenBase/EvtPDL.hh"
27#include "EvtGenBase/EvtReport.hh"
28#include "EvtGenBase/EvtVector4C.hh"
29#include "EvtGenBase/EvtTensor4C.hh"
30#include "EvtGenBase/EvtDiracSpinor.hh"
31#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
32#include "EvtGenBase/EvtId.hh"
33#include "EvtGenBase/EvtAmp.hh"
34#include "EvtGenBase/EvtScalarParticle.hh"
35#include "EvtGenBase/EvtVectorParticle.hh"
36#include "EvtGenBase/EvtTensorParticle.hh"
64 scalar_part->
init(parent,p_init);
78 amp.
init(parent,3,listdaug);
98 double m = root_part->
mass();
103 double q2, elepton, plepton;
105 double erho,prho,costl;
107 double maxfoundprob = 0.0;
111 for (massiter=0;massiter<3;massiter++){
129 q2 = ((i+0.5)*q2max)/25.0;
131 erho = ( m*m +
mass[0]*
mass[0] - q2 )/(2.0*m);
133 prho = sqrt(erho*erho-
mass[0]*
mass[0]);
135 p4meson.
set(erho,0.0,0.0,-1.0*prho);
136 p4w.
set(m-erho,0.0,0.0,prho);
139 elepton = (q2+
mass[1]*
mass[1])/(2.0*sqrt(q2));
140 plepton = sqrt(elepton*elepton-
mass[1]*
mass[1]);
146 costl = 0.99*(j - 1.0);
150 p4lepton.
set(elepton,0.0,
151 plepton*sqrt(1.0-costl*costl),plepton*costl);
152 p4nu.
set(plepton,0.0,
153 -1.0*plepton*sqrt(1.0-costl*costl),-1.0*plepton*costl);
156 p4lepton=
boostTo(p4lepton,boost);
161 daughter->
init(meson,p4meson);
162 lep->
init(lepton,p4lepton);
163 trino->
init(nudaug,p4nu);
165 CalcAmp(root_part,amp,FormFactors);
180 double b=0.5*(probctl[2]-probctl[0]);
181 double c=0.5*(probctl[2]+probctl[0])-probctl[1];
184 if (probctl[1]>prob) prob=probctl[1];
185 if (probctl[2]>prob) prob=probctl[2];
188 double ctlx=-0.5*
b/c;
190 double probtmp=a+
b*ctlx+c*ctlx*ctlx;
191 if (probtmp>prob) prob=probtmp;
201 if ( prob > maxfoundprob ) {
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
void init(EvtId p, int ndaug, EvtId *daug)
EvtSpinDensity getSpinDensity()
static double getWidth(EvtId i)
static double getMeanMass(EvtId i)
static double getMinMass(EvtId i)
static double getMaxMass(EvtId i)
static double getMass(EvtId i)
void makeDaughters(int ndaug, EvtId *id)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
int getSpinStates() const
void setDiagonalSpinDensity()
EvtParticle * getDaug(int i)
void init(EvtId part_n, double e, double px, double py, double pz)
virtual void CalcAmp(EvtParticle *parent, EvtAmp &, EvtSemiLeptonicFF *FormFactors)
double CalcMaxProb(EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug, EvtSemiLeptonicFF *FormFactors)
double NormalizedProb(const EvtSpinDensity &d)
void set(int i, double d)