00001
00002
00003
00004
00005
00006
00008 #include "TH1F.h"
00009 #include "TFile.h"
00010 #include "NueAna/NueReadwPID.h"
00011 #include "NueAna/NueRecord.h"
00012 #include "NueAna/NuePID.h"
00013 #include "MessageService/MsgService.h"
00014 #include "MinosObjectMap/MomNavigator.h"
00015 #include "MessageService/MsgService.h"
00016 #include "JobControl/JobCModuleRegistry.h"
00017 #include "HistMan/HistMan.h"
00018 JOBMODULE(NueReadwPID, "NueReadwPID",
00019 "Reads in ana_nue ntuple and pid ntuple");
00020 CVSID("$Id:");
00021
00022
00023 NueReadwPID::NueReadwPID()
00024 {}
00025
00026
00027
00028 NueReadwPID::~NueReadwPID()
00029 {}
00030
00031
00032
00033 JobCResult NueReadwPID::Ana(const MomNavigator* mom)
00034 {
00035
00036
00037
00038 MSG("NueReadwPID",Msg::kDebug)<<"***********IN ANA*****************"<<endl;
00039
00040 TObject *obj=0;
00041 TIter objiter = mom->FragmentIter();
00042 vector<NueRecord *> vr;
00043 vector<NuePID *> vpid;
00044 while((obj=objiter.Next())){
00045 const char *cn=obj->ClassName();
00046 if(strcmp(cn,"NueRecord")==0){
00047 NueRecord *nr = dynamic_cast<NueRecord *>(obj);
00048 MSG("NueReadwPID",Msg::kDebug)<<"Found a NueRecord in MOM"
00049 <<" Snarl "<<nr->GetHeader().GetSnarl()
00050 <<" Event "<<nr->GetHeader().GetEventNo()<<endl;
00051 vr.push_back(nr);
00052 }
00053 else if(strcmp(cn,"NuePID")==0){
00054 NuePID *npid = dynamic_cast<NuePID *>(obj);
00055 MSG("NueReadwPID",Msg::kDebug)<<"Found a NuePID in MOM"
00056 <<" Snarl "<<npid->GetHeader().GetSnarl()
00057 <<" Event "<<npid->GetHeader().GetEventNo()<<endl;
00058 vpid.push_back(npid);
00059 }
00060 else{
00061 continue;
00062 }
00063 }
00064
00065
00066
00067
00068 static HistMan *hm = new HistMan("nueana");
00069 static TH1F *h1=0;
00070 static TH1F *h2=0;
00071 static TH1F *h3=0;
00072 static TH1F *h4=0;
00073 static TH1F *h5=0;
00074 static TH1F *h6=0;
00075 static TH1F *h7=0;
00076 static TH1F *h8=0;
00077 static TH1F *h9=0;
00078
00079 h1=hm->Book<TH1F>("par_a_pass","par_a_pass",200,0,50);
00080 h2=hm->Book<TH1F>("par_b_pass","par_b_pass",200,0,50);
00081 h3=hm->Book<TH1F>("par_e0_pass","par_e0_pass",200,0,50);
00082 h4=hm->Book<TH1F>("par_a_fail","par_a_fail",200,0,50);
00083 h5=hm->Book<TH1F>("par_b_fail","par_b_fail",200,0,50);
00084 h6=hm->Book<TH1F>("par_e0_fail","par_e0_fail",200,0,50);
00085 h7=hm->Book<TH1F>("par_a_hmmm","par_a_hmmm",200,0,50);
00086 h8=hm->Book<TH1F>("par_b_hmmm","par_b_hmmm",200,0,50);
00087 h9=hm->Book<TH1F>("par_e0_hmmm","par_e0_hmmm",200,0,50);
00088
00089
00090
00091
00092 for(unsigned int i=0;i<vr.size();i++){
00093 int event = vr[i]->GetHeader().GetEventNo();
00094 bool foundmatch=false;
00095 for(unsigned int j=0;j<vpid.size();j++){
00096 if(vpid[j]->GetHeader().GetEventNo()==event){
00097 int pass = vpid[j]->IsNue;
00098 MSG("NueReadwPID",Msg::kDebug)<<"Found match!"<<endl
00099 <<" Record snarl: "<<vr[i]->GetHeader().GetSnarl()
00100 <<" event: "<<vr[i]->GetHeader().GetEventNo()<<endl
00101 <<" PID snarl: "<<vpid[j]->GetHeader().GetSnarl()
00102 <<" event: "<<vpid[j]->GetHeader().GetEventNo()<<endl;
00103 MSG("NueReadwPID",Msg::kDebug)<<"pass "<<pass<<" j "<<j<<" "<<vpid[j]->IsNue<<endl;
00104
00105 if(pass==1){
00106 hm->Fill1d("par_a_pass",vr[i]->shwfit.par_a);
00107 hm->Fill1d("par_b_pass",vr[i]->shwfit.par_b);
00108 hm->Fill1d("par_e0_pass",vr[i]->shwfit.par_e0);
00109 }
00110 else if(pass==-1){
00111 hm->Fill1d("par_a_fail",vr[i]->shwfit.par_a);
00112 hm->Fill1d("par_b_fail",vr[i]->shwfit.par_b);
00113 hm->Fill1d("par_e0_fail",vr[i]->shwfit.par_e0);
00114 }
00115 else{
00116 hm->Fill1d("par_a_hmmm",vr[i]->shwfit.par_a);
00117 hm->Fill1d("par_b_hmmm",vr[i]->shwfit.par_b);
00118 hm->Fill1d("par_e0_hmmm",vr[i]->shwfit.par_e0);
00119 }
00120 }
00121
00122 vector<NuePID *>::iterator vi(&(vpid[j]));
00123 vpid.erase(vi);
00124 foundmatch=true;
00125 break;
00126 }
00127 if(!foundmatch){
00128 MSG("NueReadwPID",Msg::kError)<<"Could not find PID match for"
00129 <<" Snarl "<<vr[i]->GetHeader().GetSnarl()
00130 <<" Event "<<vr[i]->GetHeader().GetEventNo()<<endl;
00131 }
00132 }
00133
00134 MSG("NueReadwPID",Msg::kDebug)<<"**********************************"<<endl;
00135
00136 return JobCResult::kPassed;
00137 }
00138