LCOV - code coverage report
Current view: top level - TEvtGen/EvtGen/EvtGenModels - EvtSVVHelAmp.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 66 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 11 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: EvtSVVHelAmp.cc
      12             : //
      13             : // Description: Routine to decay scalar -> 2 vectors
      14             : //              by specifying the helicity amplitudes
      15             : //
      16             : // Modification history:
      17             : //
      18             : //    RYD       November 24, 1996       Module created
      19             : //
      20             : //------------------------------------------------------------------------
      21             : // 
      22             : #include "EvtGenBase/EvtPatches.hh"
      23             : #include <stdlib.h>
      24             : #include "EvtGenBase/EvtParticle.hh"
      25             : #include "EvtGenBase/EvtGenKine.hh"
      26             : #include "EvtGenBase/EvtPDL.hh"
      27             : #include "EvtGenBase/EvtVector4C.hh"
      28             : #include "EvtGenBase/EvtTensor4C.hh"
      29             : #include "EvtGenBase/EvtVector3C.hh"
      30             : #include "EvtGenBase/EvtVector3R.hh"
      31             : #include "EvtGenBase/EvtTensor3C.hh"
      32             : #include "EvtGenBase/EvtReport.hh"
      33             : #include "EvtGenModels/EvtSVVHelAmp.hh"
      34             : #include "EvtGenBase/EvtId.hh"
      35             : #include <string>
      36             : 
      37           0 : EvtSVVHelAmp::~EvtSVVHelAmp() {}
      38             : 
      39             : std::string EvtSVVHelAmp::getName(){
      40             : 
      41           0 :   return "SVV_HELAMP";     
      42             : 
      43             : }
      44             : 
      45             : 
      46             : EvtDecayBase* EvtSVVHelAmp::clone(){
      47             : 
      48           0 :   return new EvtSVVHelAmp;
      49             : 
      50           0 : }
      51             : 
      52             : void EvtSVVHelAmp::init(){
      53             : 
      54             :   // check that there are 6 arguments
      55           0 :   checkNArg(6);
      56           0 :   checkNDaug(2);
      57             : 
      58           0 :   checkSpinParent(EvtSpinType::SCALAR);
      59             : 
      60           0 :   checkSpinDaughter(0,EvtSpinType::VECTOR);
      61           0 :   checkSpinDaughter(1,EvtSpinType::VECTOR);
      62             : 
      63           0 : }
      64             : 
      65             : 
      66             : void EvtSVVHelAmp::initProbMax(){
      67             : 
      68           0 :   setProbMax(getArg(0)*getArg(0)+getArg(2)*getArg(2)+getArg(4)*getArg(4));
      69             : 
      70           0 : }
      71             : 
      72             : 
      73             : void EvtSVVHelAmp::decay( EvtParticle *p){
      74             : 
      75           0 :   SVVHel(p,_amp2,getDaug(0),getDaug(1),
      76           0 :          EvtComplex(getArg(0)*cos(getArg(1)),getArg(0)*sin(getArg(1))),
      77           0 :          EvtComplex(getArg(2)*cos(getArg(3)),getArg(2)*sin(getArg(3))),
      78           0 :          EvtComplex(getArg(4)*cos(getArg(5)),getArg(4)*sin(getArg(5))));
      79             :                                  
      80           0 :   return ;
      81             : 
      82             : }
      83             : 
      84             : 
      85             : void EvtSVVHelAmp::SVVHel(EvtParticle *parent,EvtAmp& amp,EvtId n_v1,EvtId n_v2,
      86             :                const EvtComplex& hp,const EvtComplex& h0,
      87             :                const EvtComplex& hm){
      88             : 
      89             :   //  Routine to decay a vector into a vector and scalar.  Started
      90             :   //  by ryd on Oct 17, 1996.
      91             :     
      92             :   int tndaug = 2;
      93           0 :   EvtId tdaug[2];
      94           0 :   tdaug[0] = n_v1;
      95           0 :   tdaug[1] = n_v2;
      96             : 
      97             : 
      98           0 :   parent->initializePhaseSpace(tndaug,tdaug);
      99             : 
     100             :   EvtParticle *v1,*v2;
     101           0 :   v1 = parent->getDaug(0);
     102           0 :   v2 = parent->getDaug(1);
     103             : 
     104           0 :   EvtVector4R momv1 = v1->getP4();
     105             :   //EvtVector4R momv2 = v2->getP4();
     106             : 
     107           0 :   EvtVector3R v1dir(momv1.get(1),momv1.get(2),momv1.get(3));
     108           0 :   v1dir=v1dir/v1dir.d3mag();
     109             : 
     110           0 :   EvtComplex a=-0.5*(hp+hm);
     111           0 :   EvtComplex b=EvtComplex(0.0,0.5)*(hp-hm);
     112           0 :   EvtComplex c=h0+0.5*(hp+hm);
     113             : 
     114           0 :   EvtTensor3C M=a*EvtTensor3C::id()+
     115           0 :     b*EvtGenFunctions::eps(v1dir)+
     116           0 :     c*EvtGenFunctions::directProd(v1dir,v1dir);
     117             : 
     118           0 :   EvtVector3C t0=M.cont1(v1->eps(0).vec().conj());
     119           0 :   EvtVector3C t1=M.cont1(v1->eps(1).vec().conj());
     120           0 :   EvtVector3C t2=M.cont1(v1->eps(2).vec().conj());
     121             : 
     122           0 :   EvtVector3C eps0=v2->eps(0).vec().conj();
     123           0 :   EvtVector3C eps1=v2->eps(1).vec().conj();
     124           0 :   EvtVector3C eps2=v2->eps(2).vec().conj();
     125             : 
     126           0 :   amp.vertex(0,0,t0*eps0);
     127           0 :   amp.vertex(0,1,t0*eps1);
     128           0 :   amp.vertex(0,2,t0*eps2);
     129             : 
     130           0 :   amp.vertex(1,0,t1*eps0);
     131           0 :   amp.vertex(1,1,t1*eps1);
     132           0 :   amp.vertex(1,2,t1*eps2);
     133             : 
     134           0 :   amp.vertex(2,0,t2*eps0);
     135           0 :   amp.vertex(2,1,t2*eps1);
     136           0 :   amp.vertex(2,2,t2*eps2);
     137             : 
     138             :   return ;
     139             : 
     140           0 : }
     141             : 
     142             : std::string EvtSVVHelAmp::getParamName(int i) {
     143           0 :   switch(i) {
     144             :   case 0:
     145           0 :     return "plusHelAmp";
     146             :   case 1:
     147           0 :     return "plusHelAmpPhase";
     148             :   case 2:
     149           0 :     return "zeroHelAmp";
     150             :   case 3:
     151           0 :     return "zeroHelAmpPhase";
     152             :   case 4:
     153           0 :     return "minusHelAmp";
     154             :   case 5:
     155           0 :     return "minusHelAmpPhase";
     156             :   default:
     157           0 :     return "";
     158             :   }
     159           0 : }
     160             : 
     161             : std::string EvtSVVHelAmp::getParamDefault(int i) {
     162           0 :   switch(i) {
     163             :   case 0:
     164           0 :     return "1.0";
     165             :   case 1:
     166           0 :     return "0.0";
     167             :   case 2:
     168           0 :     return "1.0";
     169             :   case 3:
     170           0 :     return "0.0";
     171             :   case 4:
     172           0 :     return "1.0";
     173             :   case 5:
     174           0 :     return "0.0";
     175             :   default:
     176           0 :     return "";
     177             :   }
     178           0 : }

Generated by: LCOV version 1.11