FlyoDoc_2011 Pisa 2011 by GmP --- 011

flyopunta/src/src_ana/anauser.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 #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 }
 All Classes Namespaces Files Functions Variables