FlyoDoc_2011 Pisa 2011 by GmP --- 011

flyopunta/src/src_par/partp00p.cpp

00001 /***************************************************************************
00002                           partp00p.cpp  -  description
00003                              -------------------
00004     begin                : Tue Apr 30 2002
00005     copyright            : (C) 2002 by Giuseppe Pierazzini
00006     email                : peppe@unipi.it
00007   ***************************************************************************
00008   *                                                                         *
00009   *   NA48  simulation program.                                             *
00010   *                                                                         *
00011   ***************************************************************************/
00012 
00013 
00014 #include "flyoh.h"
00015 
00016 using namespace std;
00017 // decadimento del K+ e K- in pic+ p00p 
00018 // p00p -> pi0 pi0
00019 // particella virtuale  che attiva questa procedura   p00p
00020 
00021 // constructor
00022 Partp00p::Partp00p(){
00023   mpadre=0.;
00024 }
00025 
00026 
00027 //---------------
00028  void  Partp00p::Get_MatrixParm()
00029 {
00030   // decay  K->pic p00p ; p00p-> pi0 pi0
00031   // ovvero    mpadre -> mfrate mchd1 mchd2 
00032   par_a0 =  0.220;        // +/- 0.005 (articolo Cabibbo)
00033         par_a2 = -0.0444;       // +/- 0.0010   ibid.
00034   madiff=0.66667*(par_a0 -par_a2);
00035   par_A0v= 1.;      
00036   par_Apv= 2.*par_A0v;      
00037         par_gzero = 0.652;
00038   par_gplus = -0.2154;
00039   Ethres   = 4.*mfrateq;
00040   mfrateq2 = 2.*mfrateq;
00041   Mtxthr=par_Apv*(1. + par_gplus*(mpadreq-9.*mfrateq)/(12.*mfrateq));
00042 //--------
00043   normprb = 0;
00044 // prob max finding to speed up the  generation...
00045    wmtr_max=0.0;
00046    for (mresq=mminq+0.000001;mresq<mminq+dmq;mresq+=dmq*0.01)
00047    {Get_MatrixValue();
00048     if(prb>wmtr_max) wmtr_max=prb;
00049 
00050 //    mres=sqrt(mresq);    //per debug
00051 //    double prbf = Fspace(mres, mchd1, mchd2) * Fspace(mpadre, mfrate, mres);
00052 //    double prbb =prbf*prb;
00053 //    double prb0 =Mtx0*Mtx0*prbf;
00054 
00055    }
00056   Gout<<"\n p00p Wmtr_max  "<< wmtr_max<<" "<<SelRea->Get_Titolo();
00057   normprb=1;    // switch on = norm prob n done
00058  }
00059 //---------------
00060 
00061 
00062  int  Partp00p::Get_MatrixValue()
00063 { // see  cabibbo matrx
00064  double s3=mresq;    // mresq and s0 from  PartFase::Get_PhaseSpace() and Get_PhaseParm()
00065  Mtx0= par_A0v*(1. + par_gzero*(s3-s0)/mfrateq2);
00066 
00067  if((sdum= (Ethres -s3)/s3 )>0.0)      // select on threshold
00068     {
00069       par_j= sqrt(sdum);
00070       Mtx1 =-madiff*Mtxthr*par_j;    // nota qui  sempre negativo.
00071       prb = Mtx0*Mtx0 + Mtx1*Mtx1 + 2.*Mtx0*Mtx1 ;  // S3< 4.mpic**2
00072     }
00073  else
00074     { par_j= sqrt(-sdum);     // in verita'  par_j= (-img)*PIGREC*sqrt(-sdum);
00075       Mtx1 = madiff*Mtxthr*par_j;    // = (+img)*madiff*Mtxthr*par_j   immag positivo  ==>
00076                                      // prb= Mtx0*Mtx0 + [(+img)*Mtx1]**2 ;
00077       prb = Mtx0*Mtx0 + Mtx1*Mtx1 ;                // S3> 4.mpic**2
00078     }                                              
00079 
00080  if(prb>wmtr_max&& normprb==1)
00081     {
00082     Gout<<"\n Wmtr off: Ev "
00083         <<setprecision(4)<<fixed
00084         <<setw(6)<<evento_.Gen.Event<<" iter="
00085         <<setw(4)<<itermtr<<" pb="
00086         <<setw(7)<<prb<<" pbx="
00087         <<setw(7)<<wmtr_max <<" e0="
00088         <<setprecision(2)<<fixed
00089         <<setw(6)<<e0<<" e1="
00090         <<setw(6)<<e1<<" "
00091         <<setw(25)<<SelRea->Get_Titolo()<<std::endl;  
00092         
00093         
00094       wmtr_max=prb*1.01; // aggiorno ma informo.... dovrebbe  accadere poche volte!
00095     }
00096     
00097  if((wmtr_max*Pran())<prb) return 1;
00098  else return 0;
00099 }
 All Classes Namespaces Files Functions Variables