63 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();
101 double q2, elepton, plepton;
103 double erho, prho, costl;
105 double maxfoundprob = 0.0;
109 for ( massiter = 0; massiter < 3; massiter++ ) {
113 if ( massiter == 1 ) {
116 if ( massiter == 2 ) {
118 if ( ( mass[0] + mass[1] + mass[2] ) > m )
119 mass[0] = m - mass[1] - mass[2] - 0.00001;
122 q2min = mass[1] * mass[1];
123 q2max = ( m - mass[0] ) * ( m - mass[0] );
127 for ( i = 0; i < nQ2Bins; i++ ) {
128 q2 = q2min + ( ( i + 0.5 ) * ( q2max - q2min ) ) / nQ2Bins;
130 erho = ( m * m + mass[0] * mass[0] - q2 ) / ( 2.0 * m );
132 prho = sqrt( erho * erho - mass[0] * mass[0] );
134 p4meson.
set( erho, 0.0, 0.0, -1.0 * prho );
135 p4w.
set( m - erho, 0.0, 0.0, prho );
138 elepton = ( q2 + mass[1] * mass[1] ) / ( 2.0 * sqrt( q2 ) );
139 plepton = sqrt( elepton * elepton - mass[1] * mass[1] );
143 for ( j = 0; j < 3; j++ ) {
144 costl = 0.99 * ( j - 1.0 );
148 p4lepton.
set( elepton, 0.0, plepton * sqrt( 1.0 - costl * costl ),
150 p4nu.
set( plepton, 0.0,
151 -1.0 * plepton * sqrt( 1.0 - costl * costl ),
152 -1.0 * plepton * costl );
154 EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
155 p4lepton =
boostTo( p4lepton, boost );
160 daughter->
init( meson, p4meson );
161 lep->
init( lepton, p4lepton );
162 trino->
init( nudaug, p4nu );
164 CalcAmp( root_part, amp, FormFactors );
178 double a = probctl[1];
179 double b = 0.5 * ( probctl[2] - probctl[0] );
180 double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
183 if ( probctl[1] > prob )
185 if ( probctl[2] > prob )
188 if ( fabs( c ) > 1e-20 ) {
189 double ctlx = -0.5 * b / c;
190 if ( fabs( ctlx ) < 1.0 ) {
191 double probtmp = a + b * ctlx + c * ctlx * ctlx;
192 if ( probtmp > prob )
197 if ( prob > maxfoundprob ) {
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
int getSpinStates() const
void setDiagonalSpinDensity()
EvtParticle * getDaug(const int i)
void makeDaughters(size_t ndaug, const EvtId *id)
void init(EvtId part_n, double e, double px, double py, double pz)