62 scalar_part->
init( parent, p_init );
76 amp.
init( parent, 3, listdaug );
79 daughter = root_part->
getDaug( 0 );
81 trino = root_part->
getDaug( 2 );
95 double m = root_part->
mass();
100 double q2, elepton, plepton;
102 double erho, prho, costl;
104 double maxfoundprob = 0.0;
108 for ( massiter = 0; massiter < 3; massiter++ )
121 q2max = ( m -
mass[0] ) * ( m -
mass[0] );
125 for ( i = 0; i < 25; i++ )
127 q2 = ( ( i + 0.5 ) * q2max ) / 25.0;
129 erho = ( m * m +
mass[0] *
mass[0] - q2 ) / ( 2.0 * m );
131 prho = sqrt( erho * erho -
mass[0] *
mass[0] );
133 p4meson.
set( erho, 0.0, 0.0, -1.0 * prho );
134 p4w.
set( m - erho, 0.0, 0.0, prho );
137 elepton = ( q2 +
mass[1] *
mass[1] ) / ( 2.0 * sqrt( q2 ) );
138 plepton = sqrt( elepton * elepton -
mass[1] *
mass[1] );
142 for ( j = 0; j < 3; j++ )
145 costl = 0.99 * ( j - 1.0 );
149 p4lepton.
set( elepton, 0.0, plepton * sqrt( 1.0 - costl * costl ), plepton * costl );
150 p4nu.
set( plepton, 0.0, -1.0 * plepton * sqrt( 1.0 - costl * costl ),
151 -1.0 * plepton * costl );
153 EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
154 p4lepton =
boostTo( p4lepton, boost );
159 daughter->
init( meson, p4meson );
160 lep->
init( lepton, p4lepton );
161 trino->
init( nudaug, p4nu );
163 CalcAmp( root_part, amp, FormFactors );
177 double a = probctl[1];
178 double b = 0.5 * ( probctl[2] - probctl[0] );
179 double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
182 if ( probctl[1] > prob ) prob = probctl[1];
183 if ( probctl[2] > prob ) prob = probctl[2];
185 if ( fabs( c ) > 1e-20 )
187 double ctlx = -0.5 * b / c;
188 if ( fabs( ctlx ) < 1.0 )
190 double probtmp = a + b * ctlx + c * ctlx * ctlx;
191 if ( probtmp > prob ) prob = probtmp;
200 if ( prob > maxfoundprob ) { maxfoundprob = prob; }
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)