Example #1
0
void EvtPropSLPole::decay( EvtParticle *p ){

  if(! _isProbMaxSet){

     EvtId parnum,mesnum,lnum,nunum;

     parnum = getParentId();
     mesnum = getDaug(0);
     lnum = getDaug(1);
     nunum = getDaug(2);

     double mymaxprob = calcMaxProb(parnum,mesnum,
                           lnum,nunum,SLPoleffmodel);

     setProbMax(mymaxprob);

     _isProbMaxSet = true;

  }

  double minKstMass = EvtPDL::getMinMass(p->getDaug(0)->getId());
  double maxKstMass = EvtPDL::getMaxMass(p->getDaug(0)->getId());

  EvtIntervalFlatPdf flat(minKstMass, maxKstMass);
  EvtPdfGen<EvtPoint1D> gen(flat);
  EvtPoint1D point = gen(); 
 
  double massKst = point.value();

  p->getDaug(0)->setMass(massKst);
  p->initializePhaseSpace(getNDaug(),getDaugs());

//  EvtVector4R p4meson = p->getDaug(0)->getP4();

  calcamp->CalcAmp(p,_amp2,SLPoleffmodel); 

  EvtParticle *mesonPart = p->getDaug(0);
  
  double meson_BWAmp = calBreitWigner(mesonPart, point);  

  int list[2];
  list[0]=0; list[1]=0;
  _amp2.vertex(0,0,_amp2.getAmp(list)*meson_BWAmp);
  list[0]=0; list[1]=1;
  _amp2.vertex(0,1,_amp2.getAmp(list)*meson_BWAmp);

  list[0]=1; list[1]=0;
  _amp2.vertex(1,0,_amp2.getAmp(list)*meson_BWAmp);
  list[0]=1; list[1]=1;
  _amp2.vertex(1,1,_amp2.getAmp(list)*meson_BWAmp);

  list[0]=2; list[1]=0;
  _amp2.vertex(2,0,_amp2.getAmp(list)*meson_BWAmp);
  list[0]=2; list[1]=1;
  _amp2.vertex(2,1,_amp2.getAmp(list)*meson_BWAmp);
     
  
  return;

}
Example #2
0
EvtComplex EvtMassAmp::amplitude(const EvtPoint1D& p) const 
{
  // Modified vertex

  double m = p.value();
  // keep things from crashing..

  if ( m< (_vd.mA()+_vd.mB()) ) return EvtComplex(0.,0.);

  EvtTwoBodyKine vd(_vd.mA(),_vd.mB(),m);
  
  // Compute mass-dependent width for relativistic propagator

  EvtPropBreitWignerRel bw(_prop.m0(),_prop.g0()*_vd.widthFactor(vd)); 
  EvtComplex amp = bw.evaluate(m);


  // Birth vertex factors

  if(_useBirthFact) {

    assert(_vb);
    if ( (m+_vb->mB()) < _vb->mAB() ) {  
      EvtTwoBodyKine vb(m,_vb->mB(),_vb->mAB());
      amp *= _vb->phaseSpaceFactor(vb,EvtTwoBodyKine::AB);
      amp *= sqrt((vb.p() / _vb->pD()));

      if(_useBirthFactFF) {
	
	assert(_vb);
	amp *= _vb->formFactor(vb);
      }
    }
    else{
      if ( _vb->L() != 0 ) amp=0.;
    }
  }


  // Decay vertex factors

  if(_useDeathFact) {
    amp *= _vd.phaseSpaceFactor(vd,EvtTwoBodyKine::AB);
    amp *= sqrt((vd.p() / _vd.pD()));
  }
  if(_useDeathFactFF) amp *= _vd.formFactor(vd);

  return amp;
}
EvtComplex EvtPropBreitWigner::amplitude(const EvtPoint1D& x) const
{
  double m = x.value();
  EvtComplex value = sqrt(_g0/EvtConst::twoPi)/(m-_m0-EvtComplex(0.0,_g0/2.));
  return value;
}