FlyoDoc_2011 Pisa 2011 by GmP --- 011
|
00001 /*************************************************************************** 00002 part3pi0.cpp - description 00003 ------------------- 00004 begin : Sun May 9 2004 00005 copyright : (C) 2004 by gmp 00006 email : peppe@newpeppe 00007 *************************************************************************** 00008 * * 00009 * NA48 simulation program. * 00010 * * 00011 ***************************************************************************/ 00012 #define MPIC 0.13956 00013 #define MPICQ 0.019477 00014 #define MPIO 0.13497 00015 #define MPIOQ 0.0182169 00016 00017 #include "flyoh.h" 00018 00019 using namespace std; 00020 00021 // constructor 00022 Part3pi0::Part3pi0(double pant) 00023 { // si usa questa procedura se il decadimento e'mediato dalla 00024 // risonanza virtuale pi02 che va esplicitamente scritta nella catenata 00025 // della reazione in Epc. 00026 mpadre=0.; 00027 slope=pant; // definisce la slope 00028 Gout<<"\n Pi02 done --- Slope ="<<slope<<std::endl; 00029 }; 00030 //--------------------------------------------------------------*/ 00031 // D e c P a r m ==> vedi PartFase::DecParm() */ 00032 //--------------------------------------------------------------*/ 00033 //------------------------------ 00034 void Part3pi0::Get_PhaseParm() 00035 { 00036 //------------------------------------------- 00037 // define the particle links..... 00038 PartFase::Get_PhaseParm(); 00039 if(p2->Get_Nome()!=p3->Get_Nome()) 00040 { Gout<<"\n Particle error in 3 pions decay; pi02 -> " 00041 << p2->Get_Nome()<<" "<<p3->Get_Nome() 00042 <<" not equal ...malformed.... exit!"<<std::endl; 00043 exit(0); 00044 } 00045 } 00046 //--------------- 00047 void Part3pi0::Get_MatrixParm() 00048 { 00049 // matrix element max weight guess 00050 if(slope >0.0) { wfase_max=1.+slope*2.63;} else wfase_max=1.; 00051 Gout<<"\n Matrix prob max "<< wfase_max<<" "<<SelRea->Get_Titolo()<<std::endl; 00052 } 00053 00054 //--------------- 00055 int Part3pi0::Get_MatrixValue() 00056 { 00057 // attenzioine questa matrix non รจ simmetrica sulla permutazione????? 00058 double su=(mresq-s0)/MPIOQ; 00059 double sv=(2.*mpadre*(e2-e1))/MPIOQ; 00060 double sr=sqrt(su*su+sv*sv); 00061 prb= 1. +slope*sr; 00062 00063 if(prb>wmtr_max) 00064 { 00065 Gout<<"\n Wmtr off: Ev " 00066 <<setprecision(4)<<fixed 00067 <<setw(6)<<evento_.Gen.Event<<" iter=" 00068 <<setw(4)<<itermtr<<" pb=" 00069 <<setw(7)<<prb<<" pbx=" 00070 <<setw(7)<<wmtr_max <<" e0=" 00071 <<setprecision(2)<<fixed 00072 <<setw(6)<<e0<<" e1=" 00073 <<setw(6)<<e1<<" " 00074 <<setw(25)<<SelRea->Get_Titolo()<<std::endl; 00075 wmtr_max=prb*1.0001; // aggiorno ma informo.....non dovrebbe mai accadere! 00076 } 00077 00078 if((wmtr_max*Pran()) <prb) return 1; 00079 else return 0; 00080 } 00081