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

          Line data    Source code
       1             : //--------------------------------------------------------------------------
       2             : //
       3             : // Environment:
       4             : //      This software is part of the EvtGen package developed jointly
       5             : //      for the BaBar and CLEO collaborations.  If you use all or part
       6             : //      of it, please give an appropriate acknowledgement.
       7             : //
       8             : // Copyright Information: See EvtGen/COPYRIGHT
       9             : //      Copyright (C) 1998      Caltech, UCSB
      10             : //
      11             : // Module: EvtKstarnunu.cc
      12             : //
      13             : // Description: B ==> K* nu nubar
      14             : //
      15             : // Modification history:
      16             : //
      17             : //    RYD     September 29, 1997        Module created
      18             : //
      19             : //------------------------------------------------------------------------
      20             : //
      21             : // Package:     EVT
      22             : // Module:      EvtKstarnunu
      23             : // 
      24             : //              
      25             : // Implementation:
      26             : //     
      27             : //
      28             : // Author:      RYD 
      29             : // Created:     Sept. 29 1997
      30             : //
      31             : //
      32             : #include "EvtGenBase/EvtPatches.hh"
      33             : #include <stdlib.h>
      34             : #include <iostream>
      35             : #include <string>
      36             : #include "EvtGenBase/EvtParticle.hh"
      37             : #include "EvtGenBase/EvtPDL.hh"
      38             : #include "EvtGenBase/EvtGenKine.hh"
      39             : #include "EvtGenBase/EvtDiracSpinor.hh"
      40             : #include "EvtGenBase/EvtTensor4C.hh"
      41             : #include "EvtGenModels/EvtKstarnunu.hh"
      42             : #include "EvtGenBase/EvtReport.hh"
      43             : #include "EvtGenBase/EvtVector4C.hh"
      44             : 
      45           0 : EvtKstarnunu::~EvtKstarnunu() {}
      46             : 
      47             : std::string EvtKstarnunu::getName(){
      48             : 
      49           0 :   return "KSTARNUNU";     
      50             : 
      51             : }
      52             : 
      53             : 
      54             : EvtDecayBase* EvtKstarnunu::clone(){
      55             : 
      56           0 :   return new EvtKstarnunu;
      57             : 
      58           0 : }
      59             : 
      60             : void EvtKstarnunu::init(){
      61             : 
      62             :   // check that there are 0 arguments
      63           0 :   checkNArg(0);
      64           0 :   checkNDaug(3);
      65             : 
      66             :   //We expect the parent to be a scalar 
      67             :   //and the daughters to be K neutrino netrino
      68             : 
      69           0 :   checkSpinParent(EvtSpinType::SCALAR);
      70             : 
      71           0 :   checkSpinDaughter(0,EvtSpinType::VECTOR);
      72           0 :   checkSpinDaughter(1,EvtSpinType::NEUTRINO);
      73           0 :   checkSpinDaughter(2,EvtSpinType::NEUTRINO);
      74             : 
      75           0 : }
      76             : 
      77             : 
      78             : void EvtKstarnunu::decay(EvtParticle *p){
      79             :   
      80           0 :   static EvtId NUE=EvtPDL::getId("nu_e");
      81           0 :   static EvtId NUM=EvtPDL::getId("nu_mu");
      82           0 :   static EvtId NUT=EvtPDL::getId("nu_tau");
      83           0 :   static EvtId NUEB=EvtPDL::getId("anti-nu_e");
      84           0 :   static EvtId NUMB=EvtPDL::getId("anti-nu_mu");
      85           0 :   static EvtId NUTB=EvtPDL::getId("anti-nu_tau");
      86             : 
      87           0 :   p->initializePhaseSpace(getNDaug(),getDaugs());
      88             :   
      89           0 :   double m_b = p->mass();
      90             : 
      91             :   EvtParticle *meson, *neutrino1, *neutrino2;
      92           0 :   meson = p->getDaug(0);
      93           0 :   neutrino1 = p->getDaug(1);
      94           0 :   neutrino2 = p->getDaug(2);
      95           0 :   EvtVector4R momnu1 = neutrino1->getP4();
      96           0 :   EvtVector4R momnu2 = neutrino2->getP4();
      97           0 :   EvtVector4R momkstar = meson->getP4();
      98             :   
      99             :   double v0_0, a1_0, a2_0;
     100             :   double m2v0, a1_b, a2_b;
     101             :   v0_0 = 0.47;
     102             :   a1_0 = 0.37;
     103             :   a2_0 = 0.40;
     104             :   m2v0 = 5.*5.;
     105             :   a1_b = -0.023;
     106             :   a2_b = 0.034;
     107             : 
     108           0 :   EvtVector4R q = momnu1+momnu2;
     109           0 :   double q2 = q.mass2();   
     110             : 
     111             :   double v0, a1, a2;
     112           0 :   v0 = v0_0/(1-q2/m2v0);
     113           0 :   a1 = a1_0*(1+a1_b*q2);
     114           0 :   a2 = a2_0*(1+a2_b*q2);
     115             : 
     116           0 :   EvtVector4R p4b; p4b.set(m_b,0.,0.,0.);  // Do calcs in mother rest frame
     117             :   
     118           0 :   double m_k = meson->mass();
     119             : 
     120           0 :   EvtTensor4C tds=(-2*v0/(m_b+m_k))*dual(EvtGenFunctions::directProd(p4b,momkstar))
     121           0 :     - EvtComplex(0.0,1.0)*
     122           0 :     ( (m_b+m_k)*a1*EvtTensor4C::g()
     123           0 :       - (a2/(m_b+m_k))*EvtGenFunctions::directProd(p4b-momkstar,p4b+momkstar)); 
     124             :   
     125           0 :   EvtVector4C l;
     126             : 
     127           0 :   if (getDaug(1)==NUE||getDaug(1)==NUM||getDaug(1)==NUT) {
     128           0 :         l=EvtLeptonVACurrent(neutrino1->spParentNeutrino(),
     129           0 :                              neutrino2->spParentNeutrino());
     130           0 :   }
     131           0 :   if (getDaug(1)==NUEB||getDaug(1)==NUMB||getDaug(1)==NUTB) {
     132           0 :         l=EvtLeptonVACurrent(neutrino2->spParentNeutrino(),
     133           0 :                              neutrino1->spParentNeutrino());
     134           0 :   }
     135             : 
     136           0 :   EvtVector4C et0,et1,et2; 
     137           0 :   et0 = tds.cont1( meson->epsParent(0).conj() );
     138           0 :   et1 = tds.cont1( meson->epsParent(1).conj() );
     139           0 :   et2 = tds.cont1( meson->epsParent(2).conj() );
     140             : 
     141           0 :   vertex(0,l*et0);
     142           0 :   vertex(1,l*et1);
     143           0 :   vertex(2,l*et2);
     144             : 
     145             :   return;
     146           0 : }
     147             : 

Generated by: LCOV version 1.11