FlyoDoc_2011 Pisa 2011 by GmP --- 011
|
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