LCOV - code coverage report
Current view: top level - TEvtGen/EvtGen/EvtGenModels - EvtY3SToY1SpipiMoxhay.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 42 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 8 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: EvtGen/EvtVVpipiMoxhay.hh
      12             : //
      13             : // Description: This model is based on the proposal by Tuan and Lipkin
      14             : //              (Phys.Lett.B206:349-353,1988) and the subsequent model
      15             : //              by Moxhay (Phys.Rev.D39:3497,1989) for the dipion spectrum
      16             : //              in Y(3S) -> pi+ pi- Y(1S). Please Note: in Moxhay's paper,
      17             : //              he wrote the fitted value of the parameter Im(B)/A as
      18             : //              -0.2983. However, using his quoted value leads to the wrong
      19             : //              spectrum. Changing the sign of his quoted Im(B)/A fixes the
      20             : //              shape and reproduces his result. Therefore, please pass
      21             : //              Im(B)/A = 0.2983 and Re(B)/A = 0.2196 to get the correct shape
      22             : //              based on his fit to the CLEO data.
      23             : //
      24             : // Example:
      25             : //
      26             : // Decay  Upsilon(3S)
      27             : //  1.0000    Upsilon  pi+  pi-     Y3STOY1SPIPIMOXHAY 0.2196 0.2983;
      28             : // Enddecay
      29             : //
      30             : //   --> the order of parameters is: Re(B)/A Im(B)/A
      31             : //
      32             : // Modification history:
      33             : //
      34             : //    SEKULA  November 02, 2007         Module created
      35             : //
      36             : //------------------------------------------------------------------------
      37             : 
      38             : 
      39             : #include "EvtGenBase/EvtPatches.hh"
      40             : #include <stdlib.h>
      41             : #include "EvtGenBase/EvtParticle.hh"
      42             : #include "EvtGenBase/EvtGenKine.hh"
      43             : #include "EvtGenBase/EvtPDL.hh"
      44             : #include "EvtGenBase/EvtVector4C.hh"
      45             : #include "EvtGenBase/EvtTensor4C.hh"
      46             : #include "EvtGenBase/EvtReport.hh"
      47             : #include "EvtGenModels/EvtY3SToY1SpipiMoxhay.hh"
      48             : #include <string>
      49             : using std::endl;
      50             : 
      51           0 : EvtY3SToY1SpipiMoxhay::~EvtY3SToY1SpipiMoxhay() {}
      52             : 
      53             : std::string EvtY3SToY1SpipiMoxhay::getName(){
      54             : 
      55           0 :   return "Y3STOY1SPIPIMOXHAY";     
      56             : 
      57             : }
      58             : 
      59             : 
      60             : EvtDecayBase* EvtY3SToY1SpipiMoxhay::clone(){
      61             : 
      62           0 :   return new EvtY3SToY1SpipiMoxhay;
      63             : 
      64           0 : }
      65             : 
      66             : void EvtY3SToY1SpipiMoxhay::init(){
      67             : 
      68           0 :   static EvtId PIP=EvtPDL::getId("pi+");
      69           0 :   static EvtId PIM=EvtPDL::getId("pi-");
      70           0 :   static EvtId PI0=EvtPDL::getId("pi0");
      71             : 
      72             :   // check that there are 2 arguments
      73           0 :   checkNArg(2);
      74           0 :   checkNDaug(3);
      75             : 
      76           0 :   checkSpinParent(EvtSpinType::VECTOR);
      77           0 :   checkSpinDaughter(0,EvtSpinType::VECTOR);
      78             : 
      79             : 
      80             : 
      81           0 :   if ((!(getDaug(1)==PIP&&getDaug(2)==PIM))&&
      82           0 :       (!(getDaug(1)==PI0&&getDaug(2)==PI0))) {
      83           0 :     report(Severity::Error,"EvtGen") << "EvtY3SToY1SpipiMoxhay generator expected "
      84           0 :                            << " pi+ and pi- (or pi0 and pi0) "
      85           0 :                            << "as 2nd and 3rd daughter. "<<endl;
      86           0 :     report(Severity::Error,"EvtGen") << "Will terminate execution!"<<endl;
      87           0 :     ::abort();
      88             :   }
      89             : 
      90           0 : }
      91             : 
      92             : void EvtY3SToY1SpipiMoxhay::initProbMax() {
      93           0 :   setProbMax(0.2);
      94           0 : }      
      95             : 
      96             : void EvtY3SToY1SpipiMoxhay::decay( EvtParticle *p){
      97             : 
      98           0 :   p->initializePhaseSpace(getNDaug(),getDaugs());
      99             : 
     100             :   EvtParticle *v,*s1,*s2;
     101             :   
     102           0 :   v=p->getDaug(0);
     103           0 :   s1=p->getDaug(1);
     104           0 :   s2=p->getDaug(2);
     105             : 
     106             : 
     107             :   // setup the parameters needed for this model
     108             :   double g_spp = 0.64;
     109             :   double lambda = -0.73;
     110             :   double m_sigma = 0.71;
     111             :   double f_pi = 0.094;
     112           0 :   double m_pi = s1->getP4().mass();
     113             : 
     114           0 :   double MV1  = p->getP4().mass();
     115           0 :   double MV2  = v->getP4().mass();
     116             : 
     117           0 :   double q    = (s1->getP4()+s2->getP4()).mass();
     118             : 
     119           0 :   double EV2  = (MV1*MV1 - MV2*MV2 - q*q)/(2.0 * q);
     120             : 
     121           0 :   double ReB_over_A = getArg(0);
     122           0 :   double ImB_over_A = getArg(1);
     123             : 
     124             : 
     125           0 :   EvtComplex Xi;
     126             : 
     127           0 :   Xi = EvtComplex( 2.0/EvtConst::pi * ( 1.0 - sqrt(1.0 - 4*m_pi*m_pi/(q*q)) * log( (sqrt(q*q) + sqrt(q*q-4.0*m_pi*m_pi))/(2*m_pi) )),
     128             :                    sqrt(1.0 - 4*m_pi*m_pi/(q*q)));
     129             :   
     130             :   // The form factor
     131           0 :   EvtComplex F;
     132             :   
     133           0 :   F = (g_spp*g_spp + lambda*(m_sigma*m_sigma - q*q)) / ( ( (m_sigma*m_sigma - q*q)*(1.0 - lambda*Xi) - (g_spp*g_spp*Xi) ) * 1.0/(8.0 * EvtConst::pi * f_pi*f_pi) * q * q  );
     134             : 
     135           0 :   EvtComplex B_over_A;
     136           0 :   B_over_A = EvtComplex(ReB_over_A, ImB_over_A);
     137             : 
     138             :   // The dGamma/d(M_pipi) spectrum
     139           0 :   EvtComplex dGdMpp;
     140             :   
     141           0 :   dGdMpp = abs2((q*q*F - B_over_A)) * q * sqrt(q*q - 4 * m_pi *m_pi) * sqrt(EV2 * EV2 - MV2*MV2); 
     142             :   
     143             : 
     144           0 :   setProb( real(dGdMpp) );
     145             :   return ;
     146             : 
     147           0 : }
     148             : 
     149             : 
     150             : 
     151             : 

Generated by: LCOV version 1.11