LCOV - code coverage report
Current view: top level - TEvtGen/EvtGen/EvtGenBase - EvtMassAmp.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 40 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 8 0.0 %

          Line data    Source code
       1             : //-----------------------------------------------------------------------
       2             : // File and Version Information: 
       3             : //      $Id: EvtMassAmp.cpp,v 1.3 2009-03-16 15:47:10 robbep Exp $
       4             : // 
       5             : // Environment:
       6             : //      This software is part of the EvtGen package developed jointly
       7             : //      for the BaBar and CLEO collaborations. If you use all or part
       8             : //      of it, please give an appropriate acknowledgement.
       9             : //
      10             : // Copyright Information:
      11             : //      Copyright (C) 1998 Caltech, UCSB
      12             : //
      13             : // Module creator:
      14             : //      Alexei Dvoretskii, Caltech, 2001-2002.
      15             : //-----------------------------------------------------------------------
      16             : #include "EvtGenBase/EvtPatches.hh"
      17             : 
      18             : #include "EvtGenBase/EvtMassAmp.hh"
      19             : 
      20             : EvtMassAmp::EvtMassAmp(const EvtPropBreitWignerRel& prop, const EvtTwoBodyVertex& vd)
      21           0 :   : EvtAmplitude<EvtPoint1D>()
      22           0 :   ,_prop(prop), _vd(vd), _vb(0)
      23           0 :   ,_useBirthFact(false), _useDeathFact(false)
      24           0 :   ,_useBirthFactFF(false), _useDeathFactFF(false)
      25           0 : {}
      26             : 
      27             : EvtMassAmp::EvtMassAmp(const EvtMassAmp& other)
      28           0 :   : EvtAmplitude<EvtPoint1D>(other)
      29           0 :   ,_prop(other._prop), _vd(other._vd)
      30           0 :   ,_vb(other._vb ? new EvtTwoBodyVertex(*other._vb) : 0)
      31           0 :   ,_useBirthFact(other._useBirthFact)
      32           0 :   ,_useDeathFact(other._useDeathFact)
      33           0 :   ,_useBirthFactFF(other._useBirthFactFF)
      34           0 :   ,_useDeathFactFF(other._useDeathFactFF)
      35           0 : {}
      36             : 
      37             : 
      38             : EvtMassAmp::~EvtMassAmp() 
      39           0 : {
      40           0 :   if(_vb) delete _vb;
      41           0 : }
      42             : 
      43             : 
      44             : EvtComplex EvtMassAmp::amplitude(const EvtPoint1D& p) const 
      45             : {
      46             :   // Modified vertex
      47             : 
      48           0 :   double m = p.value();
      49             :   // keep things from crashing..
      50             : 
      51           0 :   if ( m< (_vd.mA()+_vd.mB()) ) return EvtComplex(0.,0.);
      52             : 
      53           0 :   EvtTwoBodyKine vd(_vd.mA(),_vd.mB(),m);
      54             :   
      55             :   // Compute mass-dependent width for relativistic propagator
      56             : 
      57           0 :   EvtPropBreitWignerRel bw(_prop.m0(),_prop.g0()*_vd.widthFactor(vd)); 
      58           0 :   EvtComplex amp = bw.evaluate(m);
      59             : 
      60             : 
      61             :   // Birth vertex factors
      62             : 
      63           0 :   if(_useBirthFact) {
      64             : 
      65           0 :     assert(_vb);
      66           0 :     if ( (m+_vb->mB()) < _vb->mAB() ) {  
      67           0 :       EvtTwoBodyKine vb(m,_vb->mB(),_vb->mAB());
      68           0 :       amp *= _vb->phaseSpaceFactor(vb,EvtTwoBodyKine::AB);
      69           0 :       amp *= sqrt((vb.p() / _vb->pD()));
      70             : 
      71           0 :       if(_useBirthFactFF) {
      72             :         
      73           0 :         assert(_vb);
      74           0 :         amp *= _vb->formFactor(vb);
      75           0 :       }
      76           0 :     }
      77             :     else{
      78           0 :       if ( _vb->L() != 0 ) amp=0.;
      79             :     }
      80             :   }
      81             : 
      82             : 
      83             :   // Decay vertex factors
      84             : 
      85           0 :   if(_useDeathFact) {
      86           0 :     amp *= _vd.phaseSpaceFactor(vd,EvtTwoBodyKine::AB);
      87           0 :     amp *= sqrt((vd.p() / _vd.pD()));
      88           0 :   }
      89           0 :   if(_useDeathFactFF) amp *= _vd.formFactor(vd);
      90             : 
      91           0 :   return amp;
      92           0 : }
      93             : 
      94             : 
      95             : 
      96             : 
      97             : 
      98             : 

Generated by: LCOV version 1.11