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

          Line data    Source code
       1             : #include "EvtGenBase/EvtPatches.hh"
       2             : /*******************************************************************************
       3             :  * Project: BaBar detector at the SLAC PEP-II B-factory
       4             :  * Package: EvtGenBase
       5             :  *    File: $Id: EvtBlattWeisskopf.cpp,v 1.3 2009-03-16 15:56:37 robbep Exp $
       6             :  *  Author: Alexei Dvoretskii, dvoretsk@slac.stanford.edu, 2001-2002
       7             :  *
       8             :  * Copyright (C) 2002 Caltech
       9             :  *******************************************************************************/
      10             : 
      11             : #include <iostream>
      12             : #include <assert.h>
      13             : #include <math.h>
      14             : #include "EvtGenBase/EvtBlattWeisskopf.hh"
      15             : #include "EvtGenBase/EvtReport.hh"
      16             : using std::endl;
      17             : 
      18             : EvtBlattWeisskopf::EvtBlattWeisskopf(int LL, double R, double p0)
      19           0 :   : _LL(LL), _radial(R), _p0(p0)
      20           0 : {
      21           0 :   if(R < 0) {
      22             : 
      23           0 :     report(Severity::Info,"EvtGen") << "Radius " << R << " negative" << endl;
      24           0 :     assert(0);
      25             :   }
      26             : 
      27           0 :   _radial = R;
      28             : 
      29             :   // compute formula for nominal momentum
      30             : 
      31           0 :   _F0 = compute(_p0);
      32           0 :   if(_F0 <= 0) {
      33             :     
      34           0 :     report(Severity::Info,"EvtGen") << "Invalid nominal form factor computed " << _F0 << endl;
      35           0 :     assert(0);
      36             :   } 
      37           0 : }
      38             : 
      39             : EvtBlattWeisskopf::EvtBlattWeisskopf(const EvtBlattWeisskopf& other)
      40           0 :   : _LL(other._LL), _radial(other._radial), _p0(other._p0), _F0(other._F0)
      41           0 : {}
      42             : 
      43             : EvtBlattWeisskopf::~EvtBlattWeisskopf()
      44           0 : {}
      45             : 
      46             : double EvtBlattWeisskopf::operator()(double p) const
      47             : {
      48           0 :   double ret = compute(p)/_F0;
      49             :   //  report(Severity::Info,"EvtGen") << p << " " << _p0 << " " << _F0 << " " << _LL << " " << _radial << " " << ret << endl;
      50           0 :   return ret;
      51             : }
      52             : 
      53             : // Blatt-Weisskopf form factors
      54             : // see e.g. hep-ex/0011065
      55             : // Dalitz Analysis of the Decay D0->K-pi+pi0 (CLEO)
      56             : //
      57             : // p   - momentum of either daugher in the meson rest frame,
      58             : //       the mass of the meson is used
      59             : // pAB - momentum of either daughter in the candidate rest frame
      60             : //       the mass of the candidate is used
      61             : // R - meson radial parameter
      62             : // 
      63             : // In the CLEO paper R=5 GeV-1 for D0, R=1.5 for intermediate resonances
      64             : 
      65             : double EvtBlattWeisskopf::compute(double p) const
      66             : {
      67             : 
      68             :   double value(1.0);
      69             : 
      70           0 :   double z = p*_radial;
      71           0 :   double zSq = z*z;
      72             : 
      73           0 :   if (_LL == 0) {
      74             :     value = 1.0;
      75           0 :   } else if (_LL == 1) {
      76           0 :     value = sqrt(1.0/(1.0 + zSq));
      77           0 :   } else if (_LL == 2) {
      78           0 :     value = sqrt(1.0/(zSq*(zSq + 3.0) + 9.0));
      79           0 :   } else if (_LL == 3) {
      80           0 :     double denom = zSq*(zSq*(zSq + 6.0) + 45.0) + 225.0;
      81           0 :     value = sqrt(1.0/denom);
      82           0 :   } else if (_LL == 4) {
      83           0 :     double denom = zSq*(zSq*(zSq*(zSq + 10.0) + 135.0) + 1575.0) + 11025.0;
      84           0 :     value = sqrt(1.0/denom);
      85           0 :   } else if (_LL == 5) {
      86           0 :     double denom = zSq*(zSq*(zSq*(zSq*(zSq + 15.0) + 315.0) + 6300.0) + 99225.0) + 893025.0;
      87           0 :     value = sqrt(1.0/denom);
      88           0 :   }
      89             : 
      90           0 :   return value;
      91             : 
      92             : }

Generated by: LCOV version 1.11