FlyoDoc_2011 Pisa 2011 by GmP --- 011

flyopunta/src/src_par/partpvv.cpp

00001 /***************************************************************************
00002  *   Copyright (C) 2005 by Giuseppe Pierazzini          Pisa 20.02.05      *
00003  *   pierazzini@unipi.it                                                   *
00004  *                                     F l y o                             *
00005  *   Epsi/NA48                                                             *
00006  ***************************************************************************/
00007 
00008 
00009 #include "flyoh.h"
00010 
00011 using namespace std;
00012 //-------------------------------------------------------
00020 // constructor
00021 PartPvv::PartPvv ( )
00022 {
00023   // si usa questa procedura se il decadimento e'mediato dalla
00024   // risonanza virtuale pvv che va esplicitamente scritta nella catenata
00025   // della reazione in Epc.
00026   mas_pip=ptr_Pip->Get_Massa();
00027   mas_kp= ptr_Kapp->Get_Massa();
00028   masq_kp=mas_kp*mas_kp;
00029   masq_pip=mas_pip*mas_pip;
00030   Gout<<"\n PartPvv done ";
00031 
00032 
00033 }
00034 
00035 //--------------------------------------------------------------*/
00036 //       D e c P a r m   ==>   vedi PartFase::DecParm()         */
00037 //--------------------------------------------------------------*/
00038 //------------------------------------------
00039 void PartPvv::Get_PhaseParm()
00040 {
00041 //-------------------------------------------
00042 // define the particle links.....
00043   PartFase::Get_PhaseParm();
00044 
00045 
00046 
00047   if ( p2->Get_Nome() !=p3->Get_Nome() )
00048   {
00049     Gout<<"\n Particle error in 3 pions decay; pic2 -> "
00050     << p2->Get_Nome() <<" "<<p3->Get_Nome()
00051     <<"   not equal ..  malformed.... exit!"<<std::endl;
00052     exit ( 0 );
00053   }
00054 }
00055 //---------------
00056 void  PartPvv::Get_MatrixParm()
00057 {
00058   // calcolare qui il massimo della matrice
00059   wmtr_max=0.013;
00060   Gout<<"\nPvv  done:   prob_max "<<setprecision ( 3 ) <<setw ( 8 ) << wmtr_max;
00061 }
00062 
00063 //
00064 
00065 int  PartPvv::Get_MatrixValue()
00066 {
00067   // Compute weight
00068   double Eprime,a,q2,v;
00069   Eprime = ( masq_kp +masq_pip ) / ( 2.*mas_kp )-e0;
00070   a      = mas_kp* ( 2.*e1*e2-mas_kp*Eprime );
00071   q2     = masq_kp +masq_pip-2.*mas_kp*e0;
00072   v      = 1.+0.0286*q2/ ( masq_pip );
00073   prb = a*pow ( v,2 );
00074 
00075   // Check against wmtr_max
00076   if ( prb>wmtr_max )
00077   {
00078     Gout<<"\n Wmtr off: Ev "
00079     <<setprecision ( 4 ) <<fixed
00080     <<setw ( 6 ) <<evento_.Gen.Event
00081     <<" pb="<<setw ( 7 ) <<prb
00082     <<" pbx="<<setw ( 7 ) <<wmtr_max
00083     <<" e0="<<setprecision ( 2 )
00084     <<fixed <<setw ( 6 ) <<e0
00085     <<" e1="<<setw ( 6 )
00086     <<e1<<" " <<setw ( 25 )
00087     <<SelRea->Get_Titolo() <<std::endl;
00088     wmtr_max=prb*1.001;
00089   }
00090   if ( ( wmtr_max*Pran() ) <prb ) return 1;
00091   else return 0;
00092 }
00093 
 All Classes Namespaces Files Functions Variables