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 #include "flyoh.h" 00009 00010 #include <anauser.h> 00011 00012 00013 //using namespace std; 00014 00015 AnaUser::AnaUser() 00016 : Analisi() 00017 { 00018 tipo=0; 00019 nfit=1; 00020 titol="User analysis... " ; 00021 nome="Auser"; 00022 00023 mas_Kp= ptr_Kapp->Get_Massa(); 00024 mas_pip= ptr_Pip->Get_Massa(); 00025 mas_elec =ptr_Elec->Get_Massa(); 00026 00027 00028 } 00029 AnaUser::~AnaUser() {} 00030 00031 int AnaUser::Fisica() 00032 { 00033 00034 // attenzione attivare la procedura giusta.... 00035 int come=Fisica_rates(); 00036 // int come=Fisica_giudici(); 00037 return come; 00038 } 00039 00040 00041 00042 //========================== 00043 00044 /************************/ 00045 // Test rates pe Ke4 trigger Giudici rompe.... 00046 int AnaUser::Fisica_giudici() 00047 { 00048 00049 count_call++; 00050 00051 // user routine ...for anticoincidence system 00052 chod_acc_0=rich_hit_3=muv3_acc=lkr_4x4_30=lav_12=lav_all=0; 00053 for(int i=0;i<12;i++)lavs[i]=0; 00054 00055 // if(hodo>0&&hodo->mhit>0) chod_acc_0=1; 00056 if(hodox>0&&hodoy>0) 00057 { 00058 if (hodox->mhit>1&&hodoy->mhit>1) chod_acc_0=1;} 00059 00060 if(Rich>0&&Rich->mhit>1) rich_hit_3=1; 00061 // mu veto 00062 // simula mu veto inefficienza 00063 double mueffi=1.80; 00064 if(Pran()<mueffi) 00065 { 00066 if (muvet3>0&&muvet3->mhit>0)muv3_acc=1; 00067 if (mamud>0&&mamud->mhit>0)muv3_acc=1; 00068 } 00069 00070 // calorimetro 00071 00072 DevLkr *lkr= (DevLkr *) lkry; 00073 double dist=lkr->dist_max; 00074 if(dist<0.)lkr_4x4_30=1; 00075 else lkr_4x4_30=0; 00076 if(lkr->epad44>35. && lkr->padhit>1)lkr_4x4_30=1; 00077 00078 //Veto 00079 00080 if (anti[11]>0&& anti[11]->mhit>0) lav_12=1; 00081 00082 for (int i=0;i<12;i++) 00083 { lavs[i]=0; 00084 if (anti[i]>0&&anti[i]->mhit>0) { 00085 lavs[i]=1+i; 00086 lav_all+=1; 00087 00088 } 00089 } 00090 // indice di taglio 00091 // buoncut=chod_acc_0 +rich_hit_3*2+(1-muv3_acc)*4+lkr_4x4_30*8+(1-lav_12)*16+(1-lav_all)*32; 00092 for(int i=1;i<7;i++)buoncut[i]=-10; 00093 buoncut[0]=0; 00094 if (chod_acc_0 ==1) buoncut[1]=1; 00095 if (buoncut[1]==1 &&rich_hit_3==1)buoncut[2]=2; 00096 if (buoncut[2]==2&&muv3_acc==0)buoncut[3]=3; 00097 if (buoncut[3]==3&&lkr_4x4_30==1)buoncut[4]=4; 00098 if (buoncut[4]==4&&lav_12 ==0)buoncut[5]=5; 00099 if (buoncut[5]==5&&lav_all==0)buoncut[6]=6; 00100 00101 count_wnt++; 00102 return 1; 00103 } 00104 /*****************/ 00105 00106 /***************************************************/ 00107 00108 // anauser per calcolo rates di default 00109 int AnaUser::Fisica_rates() 00110 { 00111 00112 // user routine ...for anticoincidence system 00113 chod_acc_0=rich_hit_3=muv3_acc=lkr_4x4_30=lav_12=lav_all=0; 00114 for(int i=0;i<12;i++)lavs[i]=0; 00115 count_call++; 00116 if(hodo>0&&hodo->mhit>0) chod_acc_0=1; 00117 if(hodox>0&&hodoy>0) 00118 { 00119 if (hodox->mhit>0&&hodoy->mhit>0) chod_acc_0=1;} 00120 00121 if(Rich>0&&Rich->mhit>0) rich_hit_3=1; 00122 // mu veto 00123 // simula mu veto inefficienza 00124 double mueffi=1.80; 00125 if(Pran()<mueffi) 00126 { 00127 if (muvet3>0&&muvet3->mhit>0)muv3_acc=1; 00128 if (mamud>0&&mamud->mhit>0)muv3_acc=1; 00129 } 00130 00131 // calorimetro 00132 00133 DevLkr *lkr= (DevLkr *) lkry; 00134 double dist=lkr->dist_max; 00135 if(dist<30.)lkr_4x4_30=1; 00136 else lkr_4x4_30=0; 00137 00138 00139 //Veto 00140 00141 if (anti[11]>0&& anti[11]->mhit>0) lav_12=1; 00142 00143 for (int i=0;i<12;i++) 00144 { lavs[i]=0; 00145 if (anti[i]>0&&anti[i]->mhit>0) { 00146 lavs[i]=1+i; 00147 lav_all+=1; 00148 00149 } 00150 } 00151 // indice di taglio 00152 // buoncut=chod_acc_0 +rich_hit_3*2+(1-muv3_acc)*4+lkr_4x4_30*8+(1-lav_12)*16+(1-lav_all)*32; 00153 for(int i=1;i<7;i++)buoncut[i]=-10; 00154 buoncut[0]=0; 00155 if (chod_acc_0 ==1) buoncut[1]=1; 00156 if (buoncut[1]==1 &&rich_hit_3==1)buoncut[2]=2; 00157 if (buoncut[2]==2&&muv3_acc==0)buoncut[3]=3; 00158 if (buoncut[3]==3&&lkr_4x4_30==1)buoncut[4]=4; 00159 if (buoncut[4]==4&&lav_12 ==0)buoncut[5]=5; 00160 if (buoncut[5]==5&&lav_all==0)buoncut[6]=6; 00161 00162 count_wnt++; 00163 return 1; 00164 } 00165 /*********************************************/ 00166 00167 00168 00169 00170 00171 //------------------- 00172 void AnaUser::print_scale() 00173 { 00174 Gout<<"\n -----> "<<titol<<" Analysis Summary <-------\n"; 00175 Gout<<"\n Fit entries "<<count_call; 00176 Gout<<"\n no Tracks "<<getta_ch; 00177 Gout<<"\n Wrong gammas "<<getta_gg; 00178 Gout<<"\n Good events "<<count_wnt; 00179 Gout<<"\n\n ======> d o n e <============ "<<std::endl; 00180 }