Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

HighHitVarsAna.cxx

Go to the documentation of this file.
00001 #include "StandardNtuple/NtpStRecord.h"
00002 #include "CandNtupleSR/NtpSRRecord.h"
00003 #include "CandNtupleSR/NtpSREvent.h"
00004 #include "CandNtupleSR/NtpSRTrack.h"
00005 #include "CandNtupleSR/NtpSRShower.h"
00006 #include "CandNtupleSR/NtpSRStrip.h"
00007 #include "NueAna/NueAnaTools/SntpHelpers.h"
00008 #include "AnalysisNtuples/ANtpDefaultValue.h"
00009 #include "VertexFinder/NtpVtxFinder/NtpVtxFinder.h"
00010 #include "HighHitVars.h"
00011 #include "HighHitVarsAna.h"
00012 #include "MessageService/MsgService.h"
00013 #include "TPad.h"
00014 #include "TLatex.h"
00015 #include "TNtuple.h"
00016 #include "TFile.h"
00017 #include "TMath.h"
00018 #include <cassert>
00019 #include <vector>
00020 #include <algorithm>
00021 #include <iostream>
00022 #include <fstream>
00023 
00024 using namespace std;
00025 
00026 
00027 HighHitVarsAna::HighHitVarsAna(HighHitVars &hhv):
00028   fHighHitVars(hhv)
00029 {
00030 }
00031 
00032 
00033 HighHitVarsAna::~HighHitVarsAna()
00034 {}
00035 
00036 void HighHitVarsAna::Analyze(int evtn,  RecRecordImp<RecCandHeader> *srobj)
00037 {
00038   if(srobj==0){
00039     return;
00040   }
00041   
00042   if(((dynamic_cast<NtpStRecord *>(srobj))==0)&&
00043      ((dynamic_cast<NtpSRRecord *>(srobj))==0)){
00044     return;
00045   }
00046   
00047   NtpSRShower *shower = SntpHelpers::GetPrimaryShower(evtn,srobj);
00048   Analyze(srobj,shower);
00049 
00050 
00051 }
00052 
00053 void HighHitVarsAna::Analyze(RecRecordImp<RecCandHeader> *srobj, NtpSRShower* ntpShower=0)
00054 {  
00055 
00056  fHighHitVars.Reset();
00057 
00058  if(srobj==0){
00059    return;
00060  }
00061   
00062  if (ntpShower==0) {
00063    return;
00064  }
00065   
00066  if(((dynamic_cast<NtpStRecord *>(srobj))==0)&&
00067     ((dynamic_cast<NtpSRRecord *>(srobj))==0)){
00068    return;
00069  }
00070   
00071 
00072   float A1, A2, A3, A4, A5, A6;
00073   float A0, B0, C0, D0, E0, F0;
00074 
00075   A0=0;
00076   B0=0;
00077   C0=0;
00078   D0=0;
00079   E0=0;
00080   F0=0;
00081 
00082   int showerstrips;
00083   showerstrips=ntpShower->nstrip;
00084 
00085   int j, k, l, m, n;
00086   j = k = l = m = n = 0;
00087 
00088   for(int i=0;i<showerstrips;i++){
00089     Int_t index = ntpShower->stp[i]; 
00090      NtpSRStrip *strip = SntpHelpers::GetStrip(index,srobj);
00091       if(!strip){
00092          continue;
00093       }
00094 
00096       A1 = evtstp0mip[index] + evtstp1mip[index];
00097 
00098       if(A1>A0){
00099         fHighHitVars.high_hit_1_ph = strip->ph0.sigcor+strip->ph1.sigcor;
00100         fHighHitVars.high_hit_1_mip = A1;
00101         fHighHitVars.high_hit_1_strip = strip->strip;
00102         fHighHitVars.high_hit_1_plane = strip->plane;
00103         fHighHitVars.high_hit_1_planeview = strip->planeview;
00104         fHighHitVars.high_hit_1_zpos = strip->z;
00105         fHighHitVars.high_hit_1_tpos = strip->tpos;
00106         j=i;
00107       }
00108 
00109       if(A1<=A0){
00110         continue;
00111       }
00112 
00113     A0 = fHighHitVars.high_hit_1_mip;
00114 
00115   }
00116 
00118 
00119 
00120   Float_t hit1;
00121   hit1=fHighHitVars.high_hit_1_mip;
00122 
00123   for(int i=0;i<showerstrips;i++){
00124       Int_t index = ntpShower->stp[i];
00125       NtpSRStrip *strip = SntpHelpers::GetStrip(index,srobj);
00126       if(!strip){
00127          continue;
00128       }
00129 
00130   if(showerstrips>1){
00131   
00132      A2 = evtstp0mip[index] + evtstp1mip[index];
00133 
00134      if(A2<=hit1&&A2>B0&&i!=j){
00135         fHighHitVars.high_hit_2_ph = strip->ph0.sigcor+strip->ph1.sigcor;
00136         fHighHitVars.high_hit_2_mip = A2;
00137         fHighHitVars.high_hit_2_strip = strip->strip;
00138         fHighHitVars.high_hit_2_plane = strip->plane;
00139         fHighHitVars.high_hit_2_planeview = strip->planeview;
00140         fHighHitVars.high_hit_2_zpos = strip->z;
00141         fHighHitVars.high_hit_2_tpos = strip->tpos;
00142         k=i;
00143      }
00144      if(A2<B0){
00145        continue;
00146      }
00147 
00148     B0 = fHighHitVars.high_hit_2_mip;
00149   }
00150 
00151   if(showerstrips<=1){
00152         fHighHitVars.high_hit_2_ph = ANtpDefVal::kFloat;
00153         fHighHitVars.high_hit_2_mip = ANtpDefVal::kFloat;
00154         fHighHitVars.high_hit_2_strip = ANtpDefVal::kInt;
00155         fHighHitVars.high_hit_2_plane = ANtpDefVal::kInt;
00156         fHighHitVars.high_hit_2_planeview = ANtpDefVal::kInt;
00157         fHighHitVars.high_hit_2_zpos = ANtpDefVal::kFloat;
00158         fHighHitVars.high_hit_2_tpos = ANtpDefVal::kFloat;
00159   }
00160   }
00162 
00163 
00164   Float_t hit2;
00165   hit2=fHighHitVars.high_hit_2_mip;
00166 
00167 
00168   for(int i=0;i<showerstrips;i++){
00169       Int_t index = ntpShower->stp[i];
00170       NtpSRStrip *strip = SntpHelpers::GetStrip(index,srobj);
00171       if(!strip){
00172          continue;
00173       }
00174 
00175 
00176   if(showerstrips>2){
00177 
00178      A3 = evtstp0mip[index] + evtstp1mip[index];
00179 
00180      if(A3<=hit2&&A3>C0&&i!=j&&i!=k){
00181         fHighHitVars.high_hit_3_ph = strip->ph0.sigcor+strip->ph1.sigcor;
00182         fHighHitVars.high_hit_3_mip = A3;
00183         fHighHitVars.high_hit_3_strip = strip->strip;
00184         fHighHitVars.high_hit_3_plane = strip->plane;
00185         fHighHitVars.high_hit_3_planeview = strip->planeview;
00186         fHighHitVars.high_hit_3_zpos = strip->z;
00187         fHighHitVars.high_hit_3_tpos = strip->tpos;
00188         l=i;
00189      }
00190      if(A3<C0){
00191        continue;
00192      }
00193 
00194     C0 = fHighHitVars.high_hit_3_mip;
00195   }
00196 
00197   if(showerstrips<=2){
00198         fHighHitVars.high_hit_3_ph = ANtpDefVal::kFloat;
00199         fHighHitVars.high_hit_3_mip = ANtpDefVal::kFloat;
00200         fHighHitVars.high_hit_3_strip = ANtpDefVal::kInt;
00201         fHighHitVars.high_hit_3_plane = ANtpDefVal::kInt;
00202         fHighHitVars.high_hit_3_planeview = ANtpDefVal::kInt;
00203         fHighHitVars.high_hit_3_zpos = ANtpDefVal::kFloat;
00204         fHighHitVars.high_hit_3_tpos = ANtpDefVal::kFloat;
00205   }
00206   }
00208 
00209 
00210   Float_t hit3;
00211   hit3=fHighHitVars.high_hit_3_mip;
00212 
00213   for(int i=0;i<showerstrips;i++){
00214       Int_t index = ntpShower->stp[i];
00215       NtpSRStrip *strip = SntpHelpers::GetStrip(index,srobj);
00216       if(!strip){
00217          continue;
00218       }
00219 
00220 
00221   if(showerstrips>3){
00222 
00223      A4 = evtstp0mip[index] + evtstp1mip[index];
00224 
00225      if(A4<=hit3&&A4>D0&&i!=j&&i!=k&&i!=l){
00226         fHighHitVars.high_hit_4_ph = strip->ph0.sigcor+strip->ph1.sigcor;
00227         fHighHitVars.high_hit_4_mip = A4;
00228         fHighHitVars.high_hit_4_strip = strip->strip;
00229         fHighHitVars.high_hit_4_plane = strip->plane;
00230         fHighHitVars.high_hit_4_planeview = strip->planeview;
00231         fHighHitVars.high_hit_4_zpos = strip->z;
00232         fHighHitVars.high_hit_4_tpos = strip->tpos;
00233         m=i;
00234      }
00235      if(A4<D0){
00236        continue;
00237      }
00238 
00239     D0 = fHighHitVars.high_hit_4_mip;
00240   }
00241 
00242   if(showerstrips<=3){
00243         fHighHitVars.high_hit_4_ph = ANtpDefVal::kFloat;
00244         fHighHitVars.high_hit_4_mip = ANtpDefVal::kFloat;
00245         fHighHitVars.high_hit_4_strip = ANtpDefVal::kInt;
00246         fHighHitVars.high_hit_4_plane = ANtpDefVal::kInt;
00247         fHighHitVars.high_hit_4_planeview = ANtpDefVal::kInt;
00248         fHighHitVars.high_hit_4_zpos = ANtpDefVal::kFloat;
00249         fHighHitVars.high_hit_4_tpos = ANtpDefVal::kFloat;
00250   }
00251   }
00253 
00254   Float_t hit4;
00255   hit4=fHighHitVars.high_hit_4_mip;
00256 
00257 
00258   for(int i=0;i<showerstrips;i++){
00259       Int_t index = ntpShower->stp[i];
00260       NtpSRStrip *strip = SntpHelpers::GetStrip(index,srobj);
00261       if(!strip){
00262          continue;
00263       }
00264 
00265   if(showerstrips>4){
00266 
00267      A5 = evtstp0mip[index] + evtstp1mip[index];
00268 
00269      if(A5<=hit4&&A5>E0&&i!=j&&i!=k&&i!=l&&i!=m){
00270         fHighHitVars.high_hit_5_ph = strip->ph0.sigcor+strip->ph1.sigcor;
00271         fHighHitVars.high_hit_5_mip = A5;
00272         fHighHitVars.high_hit_5_strip = strip->strip;
00273         fHighHitVars.high_hit_5_plane = strip->plane;
00274         fHighHitVars.high_hit_5_planeview = strip->planeview;
00275         fHighHitVars.high_hit_5_zpos = strip->z;
00276         fHighHitVars.high_hit_5_tpos = strip->tpos;
00277         n=i;
00278      }
00279      if(A5<E0){
00280        continue;
00281      }
00282 
00283     E0 = fHighHitVars.high_hit_5_mip;
00284   }
00285 
00286   if(showerstrips<=4){
00287         fHighHitVars.high_hit_5_ph = ANtpDefVal::kFloat;
00288         fHighHitVars.high_hit_5_mip = ANtpDefVal::kFloat;
00289         fHighHitVars.high_hit_5_strip = ANtpDefVal::kInt;
00290         fHighHitVars.high_hit_5_plane = ANtpDefVal::kInt;
00291         fHighHitVars.high_hit_5_planeview = ANtpDefVal::kInt;
00292         fHighHitVars.high_hit_5_zpos = ANtpDefVal::kFloat;
00293         fHighHitVars.high_hit_5_tpos = ANtpDefVal::kFloat;
00294   }
00295   }
00297 
00298   Float_t hit5;
00299   hit5=fHighHitVars.high_hit_5_mip;
00300 
00301   for(int i=0;i<showerstrips;i++){
00302       Int_t index = ntpShower->stp[i];
00303       NtpSRStrip *strip = SntpHelpers::GetStrip(index,srobj);
00304       if(!strip){
00305          continue;
00306       }
00307 
00308   if(showerstrips>5){
00309 
00310      A6 = evtstp0mip[index] + evtstp1mip[index];
00311 
00312      if(A6<=hit5&&A6>F0&&i!=j&&i!=k&&i!=l&&i!=m&&i!=n){
00313         fHighHitVars.high_hit_6_ph = strip->ph0.sigcor+strip->ph1.sigcor;
00314         fHighHitVars.high_hit_6_mip = A6;
00315         fHighHitVars.high_hit_6_strip = strip->strip;
00316         fHighHitVars.high_hit_6_plane = strip->plane;
00317         fHighHitVars.high_hit_6_planeview = strip->planeview;
00318         fHighHitVars.high_hit_6_zpos = strip->z;
00319         fHighHitVars.high_hit_6_tpos = strip->tpos;
00320      }
00321      if(A6<F0){
00322        continue;
00323      }
00324 
00325     F0 = fHighHitVars.high_hit_6_mip;
00326   }
00327 
00328   if(showerstrips<=5){
00329         fHighHitVars.high_hit_6_ph = ANtpDefVal::kFloat;
00330         fHighHitVars.high_hit_6_mip = ANtpDefVal::kFloat;
00331         fHighHitVars.high_hit_6_strip = ANtpDefVal::kInt;
00332         fHighHitVars.high_hit_6_plane = ANtpDefVal::kInt;
00333         fHighHitVars.high_hit_6_planeview = ANtpDefVal::kInt;
00334         fHighHitVars.high_hit_6_zpos = ANtpDefVal::kFloat;
00335         fHighHitVars.high_hit_6_tpos = ANtpDefVal::kFloat;
00336   }
00337   }
00339 
00340 
00341   fHighHitVars.showervtx_plane=ntpShower->vtx.plane;
00342   fHighHitVars.showervtx_u_pos=ntpShower->vtx.u;
00343   fHighHitVars.showervtx_v_pos=ntpShower->vtx.v;
00344   fHighHitVars.showerbeg_plane=ntpShower->plane.beg;
00345 
00346 
00347  
00348 
00349 
00350 }
00351 

Generated on Mon Feb 15 11:06:47 2010 for loon by  doxygen 1.3.9.1