LCOV - code coverage report
Current view: top level - TEvtGen/EvtGen/EvtGenModels - EvtBaryonPCR.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 97 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 10 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:
       9             : //      Copyright (C) 1998      Caltech, UCSB
      10             : //
      11             : // Module: EvtBaryonVminusA.cc
      12             : //
      13             : // Description: Routine to implement semileptonic decays using realistic
      14             : //              dynamics.  The form factors are from 
      15             : //              M.Pervin,S.Capstick,W. Roberts, Phys.Rev. C72 035201(2005).
      16             : //              
      17             : //
      18             : // Modification history:
      19             : //
      20             : //    R.J. Tesarek     May 28, 2004     Module created
      21             : //    Karen Gibson     1/20/2006        Module updated for 1/2+->1/2+,
      22             : //                                      1/2+->1/2-, 1/2+->3/2- Lambda decays
      23             : //
      24             : //------------------------------------------------------------------------
      25             : 
      26             : #include "EvtGenBase/EvtPatches.hh"
      27             : #include <stdlib.h>
      28             : #include "EvtGenBase/EvtParticle.hh"
      29             : #include "EvtGenBase/EvtGenKine.hh"
      30             : #include "EvtGenBase/EvtPDL.hh"
      31             : #include "EvtGenBase/EvtReport.hh"
      32             : #include "EvtGenModels/EvtBaryonPCR.hh"
      33             : #include "EvtGenBase/EvtConst.hh"
      34             : #include "EvtGenBase/EvtIdSet.hh"
      35             : #include <string>
      36             : #include "EvtGenModels/EvtBaryonPCRFF.hh"
      37             : 
      38             : using namespace std;
      39             : #ifdef D0
      40             : #undef D0
      41             : #endif
      42           0 : EvtBaryonPCR::EvtBaryonPCR():
      43           0 :   baryonpcrffmodel(0)
      44           0 :   ,calcamp(0)
      45           0 : {}
      46             : 
      47             : 
      48           0 : EvtBaryonPCR::~EvtBaryonPCR() {
      49           0 :   delete baryonpcrffmodel;
      50           0 :   baryonpcrffmodel=0;
      51           0 :   delete calcamp;
      52           0 :   calcamp=0;
      53           0 : }
      54             : 
      55             : std::string EvtBaryonPCR::getName(){
      56             :   
      57           0 :   return "BaryonPCR";     
      58             :   
      59             : }
      60             : 
      61             : 
      62             : 
      63             : EvtDecayBase* EvtBaryonPCR::clone(){
      64             :   
      65           0 :   return new EvtBaryonPCR;
      66             :   
      67           0 : }
      68             : 
      69             : void EvtBaryonPCR::decay( EvtParticle *p ){
      70             :   
      71             :   //This is a kludge to avoid warnings because the K_2* mass becomes to large.
      72           0 :   static EvtIdSet regenerateMasses("K_2*+","K_2*-","K_2*0","anti-K_2*0",
      73           0 :                                    "K_1+","K_1-","K_10","anti-K_10",
      74           0 :                                    "D'_1+","D'_1-","D'_10","anti-D'_10");
      75             :   
      76           0 :   if (regenerateMasses.contains(getDaug(0))){
      77           0 :     p->resetFirstOrNot();
      78           0 :   }
      79             :   
      80           0 :   p->initializePhaseSpace(getNDaug(),getDaugs());
      81             :   
      82           0 :   EvtComplex r00(getArg(0), 0.0 );
      83           0 :   EvtComplex r01(getArg(1), 0.0 );
      84           0 :   EvtComplex r10(getArg(2), 0.0 );
      85           0 :   EvtComplex r11(getArg(3), 0.0 );
      86             : 
      87           0 :   calcamp->CalcAmp(p,_amp2,baryonpcrffmodel, r00, r01, r10, r11);
      88             :   
      89           0 : }
      90             : 
      91             : void EvtBaryonPCR::initProbMax() {
      92             : 
      93             :   // Baryons (partial list 5/28/04)
      94             : 
      95           0 :   static EvtId SIGC0=EvtPDL::getId("Sigma_c0");
      96           0 :   static EvtId SIGC0B=EvtPDL::getId("anti-Sigma_c0");
      97           0 :   static EvtId SIGCP=EvtPDL::getId("Sigma_c+");
      98           0 :   static EvtId SIGCM=EvtPDL::getId("anti-Sigma_c-");
      99           0 :   static EvtId SIGCPP=EvtPDL::getId("Sigma_c++");
     100           0 :   static EvtId SIGCMM=EvtPDL::getId("anti-Sigma_c--");
     101           0 :   static EvtId LAMCP=EvtPDL::getId("Lambda_c+");
     102           0 :   static EvtId LAMCM=EvtPDL::getId("anti-Lambda_c-");
     103           0 :   static EvtId LAMC1P=EvtPDL::getId("Lambda_c(2593)+");
     104           0 :   static EvtId LAMC1M=EvtPDL::getId("anti-Lambda_c(2593)-");
     105           0 :   static EvtId LAMC2P=EvtPDL::getId("Lambda_c(2625)+");
     106           0 :   static EvtId LAMC2M=EvtPDL::getId("anti-Lambda_c(2625)-");
     107           0 :   static EvtId LAMB=EvtPDL::getId("Lambda_b0");
     108           0 :   static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
     109             :   
     110           0 :   EvtId parnum,barnum,lnum;
     111             :   
     112           0 :   parnum = getParentId();
     113           0 :   barnum = getDaug(0);
     114           0 :   lnum = getDaug(1);
     115             : 
     116           0 :   if( parnum==LAMB || parnum==LAMBB ) {
     117           0 :     if( barnum==LAMCP|| barnum==LAMCM 
     118           0 :         || barnum==LAMC1P || barnum==LAMC1M || barnum==LAMC2P || barnum==LAMC2M
     119           0 :         || barnum==SIGC0 || barnum==SIGC0B || barnum==SIGCP || barnum==SIGCM 
     120           0 :         || barnum==SIGCPP || barnum==SIGCMM ) {
     121           0 :       setProbMax(22000.0);
     122           0 :       return;
     123             :     }
     124             :   }
     125             :   
     126             :   //This is a real cludge.. (ryd)
     127           0 :   setProbMax(0.0);
     128             :   
     129           0 : }
     130             : 
     131             : void EvtBaryonPCR::init(){
     132             :   
     133             :   //if (getNArg()!=0) {
     134           0 :   if (getNArg()!=4) {
     135             : 
     136           0 :     report(Severity::Error,"EvtGen") << "EvtBaryonPCR generator expected "
     137           0 :                            << " 4 arguments but found:"<<getNArg()<<endl;
     138             :       //<< " 0 arguments but found:"<<getNArg()<<endl;
     139           0 :     report(Severity::Error,"EvtGen") << "Will terminate execution!"<<endl;
     140           0 :     ::abort();
     141             : 
     142             :   }
     143             : 
     144           0 :   if ( getNDaug()!=3 ) {
     145           0 :      report(Severity::Error,"EvtGen") 
     146           0 :        << "Wrong number of daughters in EvtBaryonPCR.cc " 
     147           0 :        << " 3 daughters expected but found: "<<getNDaug()<<endl;
     148           0 :      report(Severity::Error,"EvtGen") << "Will terminate execution!"<<endl;
     149           0 :      ::abort();
     150             :   }
     151             : 
     152             : 
     153             :   //We expect the parent to be a scalar 
     154             :   //and the daughters to be X lepton neutrino
     155             : 
     156           0 :   EvtSpinType::spintype parenttype=EvtPDL::getSpinType(getParentId());
     157           0 :   EvtSpinType::spintype baryontype=EvtPDL::getSpinType(getDaug(0));
     158           0 :   EvtSpinType::spintype leptontype=EvtPDL::getSpinType(getDaug(1));
     159           0 :   EvtSpinType::spintype neutrinotype=EvtPDL::getSpinType(getDaug(2));
     160             : 
     161           0 :   if ( parenttype != EvtSpinType::DIRAC ) {
     162           0 :     report(Severity::Error,"EvtGen") << "EvtBaryonPCR generator expected "
     163           0 :                            << " a DIRAC parent, found:"<<
     164           0 :                            EvtPDL::name(getParentId())<<endl;
     165           0 :     report(Severity::Error,"EvtGen") << "Will terminate execution!"<<endl;
     166           0 :     ::abort();
     167             :   }
     168           0 :   if ( leptontype != EvtSpinType::DIRAC ) {
     169           0 :     report(Severity::Error,"EvtGen") << "EvtBaryonPCR generator expected "
     170           0 :                            << " a DIRAC 2nd daughter, found:"<<
     171           0 :                            EvtPDL::name(getDaug(1))<<endl;
     172           0 :     report(Severity::Error,"EvtGen") << "Will terminate execution!"<<endl;
     173           0 :     ::abort();
     174             :   }
     175           0 :   if ( neutrinotype != EvtSpinType::NEUTRINO ) {
     176           0 :     report(Severity::Error,"EvtGen") << "EvtBaryonPCR generator expected "
     177           0 :                            << " a NEUTRINO 3rd daughter, found:"<<
     178           0 :                            EvtPDL::name(getDaug(2))<<endl;
     179           0 :     report(Severity::Error,"EvtGen") << "Will terminate execution!"<<endl;
     180           0 :     ::abort();
     181             :   }
     182             : 
     183           0 :   baryonpcrffmodel = new EvtBaryonPCRFF;
     184             :   
     185           0 :   if ( baryontype==EvtSpinType::DIRAC 
     186           0 :        || baryontype==EvtSpinType::RARITASCHWINGER) { 
     187           0 :     calcamp = new EvtSemiLeptonicBaryonAmp; 
     188             :   }
     189             :   else {
     190           0 :     report(Severity::Error,"EvtGen") 
     191           0 :       << "Wrong baryon spin type in EvtBaryonPCR.cc " 
     192           0 :       << "Expected spin type " << EvtSpinType::DIRAC 
     193           0 :       << ", found spin type " << baryontype <<endl;
     194           0 :     report(Severity::Error,"EvtGen") << "Will terminate execution!" <<endl;
     195           0 :      ::abort();
     196             :   }
     197             :   
     198           0 : }
     199             : 

Generated by: LCOV version 1.11