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

          Line data    Source code
       1             : /*****************************************************************************
       2             :  * Project: BaBar detector at the SLAC PEP-II B-factory
       3             :  * Package: EvtGenBase
       4             :  *    File: $Id: EvtDalitzReso.hh,v 1.1 2009-03-16 16:50:49 robbep Exp $
       5             :  *
       6             :  * Description:
       7             :  *   Class to compute Dalitz amplitudes based on many models that cannot be
       8             :  *     handled with EvtResonance.
       9             :  *
      10             :  * Modification history:
      11             :  *   Jordi Garra Ticó     2008/07/03         File created
      12             :  *****************************************************************************/
      13             : 
      14             : #ifndef __EVTDALITZRESO_HH__
      15             : #define __EVTDALITZRESO_HH__
      16             : 
      17             : #include <string>
      18             : #include <vector>
      19             : #include <map>
      20             : 
      21             : #include "EvtGenBase/EvtComplex.hh"
      22             : #include "EvtGenBase/EvtCyclic3.hh"
      23             : #include "EvtGenBase/EvtSpinType.hh"
      24             : #include "EvtGenBase/EvtTwoBodyVertex.hh"
      25             : #include "EvtGenBase/EvtDalitzPoint.hh"
      26             : #include "EvtGenBase/EvtDecayAmp.hh"
      27             : #include "EvtGenBase/EvtBlattWeisskopf.hh"
      28             : #include "EvtGenBase/EvtFlatte.hh"
      29             : 
      30             : using std::vector;
      31             : using std::map;
      32             : 
      33             : class EvtBlattWeisskopf;
      34             : 
      35           0 : class EvtDalitzReso
      36             : {
      37             : public:
      38             :   // Numerator type
      39             :   enum NumType { NBW            = 0 , RBW_ZEMACH        = 1 , RBW_KUEHN  = 2 , RBW_CLEO        = 3 ,
      40             :                  RBW_ZEMACH2    = 4 , GS_CLEO           = 5 , K_MATRIX   = 6 , RBW_CLEO_ZEMACH = 7 ,
      41             :                  GS_CLEO_ZEMACH = 8 , LASS              = 9 , K_MATRIX_I = 10, K_MATRIX_II     = 11,
      42             :                  GAUSS_CLEO     = 12, GAUSS_CLEO_ZEMACH = 13, FLATTE = 14, NON_RES = 15,
      43             :      NON_RES_LIN    = 16, NON_RES_EXP       = 17 };
      44             : 
      45             :   // Coupling type
      46             :   //  ChgPion : pi+ pi-
      47             :   //  NeuPion : pi0 pi0
      48             :   //  Pion    : 0.5*[(pi+ pi-) + (pi0 pi0)]
      49             :   //  ChgKaon : K+ K-
      50             :   //  NeuKaon : K0 K0
      51             :   //  Kaon    : 0.5*[(K+ K-) + (K0 K0)]
      52             :   //  EtaPion : eta pi0
      53             :   enum CouplingType {Undefined=0,PicPic=1,PizPiz,PiPi,KcKc,KzKz,KK,EtaPic,EtaPiz,PicPicKK,WA76};
      54             : 
      55           0 :   EvtDalitzReso() : _typeN(NON_RES) {};
      56             : 
      57           0 :   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, NumType typeN, double alpha=0.0) : _dp(dp), _pairRes(pairRes), _typeN(typeN), _alpha(alpha) {};
      58             : 
      59             :   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, 
      60             :                 EvtSpinType::spintype spin, double m0, double g0, NumType typeN, double f_b=0.0, double f_d=1.5);
      61             : 
      62             :   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, 
      63             :                 EvtSpinType::spintype spin, double m0, double g0, NumType typeN,
      64             :                 double m0_mix, double g0_mix, double delta_mix, EvtComplex amp_mix);
      65             : 
      66             :   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, 
      67             :                 EvtSpinType::spintype spin, double m0, NumType typeN, double g1, double g2, CouplingType coupling2);
      68             : 
      69             :   // K-matrix
      70             :   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, std::string nameIndex, NumType typeN,
      71             :                 EvtComplex fr12prod, EvtComplex fr13prod, EvtComplex fr14prod, EvtComplex fr15prod, double s0prod);
      72             : 
      73             :   // LASS
      74             :   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0, double g0,
      75             :                 double a, double r, double B, double phiB, double R, double phiR, double cutoff=-1, bool scaleByMOverQ=false);
      76             : 
      77             :   //Flatte
      78             :   EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0);
      79             : 
      80             :   EvtDalitzReso(const EvtDalitzReso& other);
      81             : 
      82             :   ~EvtDalitzReso();
      83             : 
      84             :   EvtDalitzReso* clone() const { return new EvtDalitzReso(*this); }
      85             : 
      86             :   EvtComplex evaluate(const EvtDalitzPoint& p);
      87             : 
      88             :   void set_fd( double R ) { _vd.set_f( R ); }
      89             :   void set_fb( double R ) { _vb.set_f( R ); }
      90             : 
      91           0 :   void addFlatteParam(const EvtFlatteParam& param) { _flatteParams.push_back(param); }
      92             : 
      93             : private:
      94             :   EvtComplex psFactor(double& ma, double& mb, double& m);
      95             :   EvtComplex psFactor(double& ma1, double& mb1, double& ma2, double& mb2, double& m);
      96             :   EvtComplex propGauss(const double& m0, const double& s0, const double& m);
      97             :   EvtComplex propBreitWigner(const double& m0, const double& g0, const double& m); 
      98             :   EvtComplex propBreitWignerRel(const double& m0, const double& g0, const double& m);
      99             :   EvtComplex propBreitWignerRel(const double& m0, const EvtComplex& g0, const double& m);
     100             :   EvtComplex propBreitWignerRelCoupled(const double& m0, const EvtComplex& g1, const EvtComplex& g2, const double& m); 
     101             :   EvtComplex propGounarisSakurai(const double& m0, const double& g0, const double& k0, 
     102             :                                  const double& m, const double& g, const double& k);
     103             :   inline double GS_f(const double& m0, const double& g0, const double& k0, const double& m, const double& k);
     104             :   inline double GS_h(const double& m, const double& k);
     105             :   inline double GS_dhods(const double& m0, const double& k0); 
     106             :   inline double GS_d(const double& m0, const double& k0); 
     107             : 
     108             :   EvtComplex numerator(const EvtDalitzPoint& p, const EvtTwoBodyKine& vb, const EvtTwoBodyKine& vd);
     109             :   double angDep(const EvtDalitzPoint& p);
     110             :   EvtComplex mixFactor(EvtComplex prop, EvtComplex prop_mix);
     111             :   EvtComplex Fvector( double s, int index );
     112             :   EvtComplex lass(double s);
     113             :   EvtComplex flatte(const double& m);
     114             : 
     115           0 :   inline EvtComplex sqrtCplx(double in) { return (in > 0) ? EvtComplex(sqrt(in), 0) : EvtComplex(0, sqrt(-in)); }
     116             : 
     117             :   // Dalitz plot
     118             :   EvtDalitzPlot _dp; 
     119             : 
     120             :   // Pairing indices:
     121             :   EvtCyclic3::Pair _pairAng;    // angular  
     122             :   EvtCyclic3::Pair _pairRes;    // resonance
     123             : 
     124             :   // Spin
     125             :   EvtSpinType::spintype _spin;                                  
     126             : 
     127             :   // Numerator type
     128             :   NumType _typeN;
     129             : 
     130             :   // Nominal mass and width
     131             :   double _m0,_g0; 
     132             : 
     133             :   // Vertices
     134             :   EvtTwoBodyVertex _vb;
     135             :   EvtTwoBodyVertex _vd;
     136             : 
     137             :   // Daughter masses
     138             :   double _massFirst,_massSecond;
     139             : 
     140             :   // variables for electromagnetic mass mixing 
     141             :   double _m0_mix,_g0_mix,_delta_mix;
     142             :   EvtComplex _amp_mix;   
     143             : 
     144             :   // variables for coupled Breit-Wigner
     145             :   double _g1,_g2;
     146             :   CouplingType _coupling2;
     147             : 
     148             :   // variables for Blatt-Weisskopf form factors
     149             :   double _f_b, _f_d;
     150             : 
     151             :   // K-matrix 
     152             :   int _kmatrix_index;
     153             :   EvtComplex _fr12prod,_fr13prod,_fr14prod,_fr15prod;
     154             :   double _s0prod;
     155             : 
     156             :   // LASS
     157             :   double _a;
     158             :   double _r;
     159             :   double _Blass;
     160             :   double _phiB;
     161             :   double _R;
     162             :   double _phiR;
     163             :   double _cutoff;
     164             :   bool _scaleByMOverQ;
     165             : 
     166             :   //Nonresonant
     167             :   double _alpha;
     168             : 
     169             :   // Flatte
     170             :   std::vector<EvtFlatteParam> _flatteParams;
     171             : 
     172             : };
     173             : 
     174             : #endif
     175             : 

Generated by: LCOV version 1.11