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

TreePIDAna.cxx

Go to the documentation of this file.
00001 
00020 #include "NueAna/TreePIDAna.h"
00021 #include "NueAna/NueAnaTools/NueConvention.h"
00022 #include "NueAna/NueRecord.h"
00023 #include "AnalysisNtuples/ANtpDefaultValue.h"
00024 #include "MessageService/MsgService.h"
00025 
00026 CVSID("$Id: TreePIDAna.cxx,v 1.11 2008/11/19 18:22:51 rhatcher Exp $");
00027 
00028 
00029 ClassImp(TreePIDAna)
00030 
00031 TreePIDAna::TreePIDAna(NueRecord &nr, TreePID &tp):
00032     nueRec(nr),
00033     fTreePID(tp)
00034 {}
00035 
00036 TreePIDAna::~TreePIDAna()
00037 {}
00038 
00039 void TreePIDAna::Analyze()
00040 {
00041     NueRecord *nr=&nueRec;
00042 
00043     fTreePID.fPassBCuts=1;
00044     fTreePID.fCutPID=1;
00045     fTreePID.fCutClass=1;
00046     fTreePID.fCutPID1=1;
00047     fTreePID.fCutClass1=1;
00048     fTreePID.fCutPID2=1;
00049     fTreePID.fCutClass2=1;
00050     fTreePID.fCutPID3=1;
00051     fTreePID.fCutClass3=1;
00052 
00053       // Cut for no reco event
00054       if (nr->GetHeader().GetEventNo()<0) fTreePID.fPassBCuts=0;
00055       // Cut for Fiducial volume
00056       if (nr->anainfo.inFiducialVolume != 1) fTreePID.fPassBCuts=0;
00057       // Cut for Full Containment, note difference in Near/Far
00058       if (nr->GetHeader().GetVldContext().GetDetector()== Detector::kFar
00059           && nr->anainfo.isFullyContained != 1) fTreePID.fPassBCuts=0;
00060       if (nr->GetHeader().GetVldContext().GetDetector()== Detector::kNear
00061           && nr->anainfo.isFullyContained != 1 
00062           && nr->anainfo.isFullyContained != -2) fTreePID.fPassBCuts=0;
00063 
00064 
00065       Int_t kHiPlaneTrackCut=25;
00066       Int_t kPhProngCut=5000; //sigcor
00067       Int_t kMeuEnergyCut=150; //Meu
00068       Int_t kHiTrackLikeCut=18;
00069       Int_t kLoPlaneEventCut=-1;
00070       Int_t kHiEnergyCut=-1;//Meu
00071       Int_t kLoEnergyCut=-1;//Meu
00072       Int_t kHiEnergyShowerCut=-1; //gev
00073       Int_t kLoEnergyShowerCut=-1; //gev
00074       Int_t kLoPhNStripCut=-1;
00075       Int_t kLoPhNPlaneCut=-1;
00076 
00077       // Cut for max number of planes in Track
00078       if (nr->srtrack.planes>=kHiPlaneTrackCut&&kHiPlaneTrackCut>=0
00079           ) fTreePID.fPassBCuts=0;
00080       // Cut on max total event energy in Meu
00081       if(nr->srevent.phMip>kMeuEnergyCut&&kMeuEnergyCut>=0) fTreePID.fPassBCuts=0;
00082       // Cut on min Total pulse height per prong (sigcor)
00083       if(TMath::Max(nr->srtrack.pulseHeight,nr->srshower.pulseHeight)
00084          <kPhProngCut&&kPhProngCut>=0) fTreePID.fPassBCuts=0;
00085       // Cut on max number of trklike planes in Track
00086       if (nr->srtrack.trklikePlanes>=kHiTrackLikeCut&&kHiTrackLikeCut>=0
00087          ) fTreePID.fPassBCuts=0;
00088       // Cut on min number of planes in Event
00089       if (nr->srevent.planes<kLoPlaneEventCut&&kLoPlaneEventCut>=0
00090           ) fTreePID.fPassBCuts=0;
00091       // Cut on max total event energy in Meu
00092       if (nr->srevent.phMip>=kHiEnergyCut
00093           &&kHiEnergyCut>=0) fTreePID.fPassBCuts=0;
00094       // Cut on min total event energy in Meu
00095       if (nr->srevent.phMip<kLoEnergyCut
00096           &&kLoEnergyCut>=0) fTreePID.fPassBCuts=0;
00097       // Cut on max shower energy (in gev) 
00098       if (nr->srevent.phNueGeV>=kHiEnergyShowerCut
00099           &&kHiEnergyShowerCut>=0) fTreePID.fPassBCuts=0;
00100       // Cut on min shower energy (in gev) 
00101       if (nr->srevent.phNueGeV<kLoEnergyShowerCut
00102           &&kLoEnergyShowerCut>=0) fTreePID.fPassBCuts=0;
00103       // Cut on min number of strips with above a threshold ph
00104       if (nr->shwfit.hiPhStripCount<kLoPhNStripCut
00105           &&kLoPhNStripCut>=0) fTreePID.fPassBCuts=0;
00106       // Cut on min number of planes with above a threshold ph
00107       if (nr->shwfit.hiPhPlaneCount<kLoPhNPlaneCut
00108           &&kLoPhNPlaneCut>=0) fTreePID.fPassBCuts=0;
00109 
00110       
00111       if((nr->srevent.planes<1.5||nr->srevent.planes>15.5) ||
00112          (nr->hitcalc.fHitLongEnergy<42.8||nr->hitcalc.fHitLongEnergy>315.)||
00113          (nr->shwfit.uv_molrad_vert<0.70||nr->shwfit.uv_molrad_vert>5.13)||
00114          (nr->shwfit.par_b<0.26||nr->shwfit.par_b>2.4)) fTreePID.fCutPID=0;
00115 
00116       if((nr->shwfit.uv_rms<1.28||nr->shwfit.uv_rms>3.28) ||
00117          (nr->hitcalc.fHitLongEnergy<35.0||nr->hitcalc.fHitLongEnergy>313.5)||
00118          (nr->shwfit.par_b<0.26||nr->shwfit.par_b>1.80)||
00119          (nr->shwfit.uv_kurt<21.67)||
00120          (nr->shwfit.shwmaxplane>44.5)||
00121          (nr->angclusterfit.fACluFitKurt<124.37)||
00122          (nr->srshower.planes>14.5)) fTreePID.fCutPID1=0;
00123 
00124 
00125      if((nr->srevent.planes<6.5||nr->srevent.planes>14.5) ||
00126          (nr->hitcalc.fHitLongEnergy<54.7||nr->hitcalc.fHitLongEnergy>298.2)||
00127          (nr->shwfit.uv_molrad_vert<1.71||nr->shwfit.uv_molrad_vert>6.06)||
00128          (nr->shwfit.par_b<0.32||nr->shwfit.par_b>1.31)) fTreePID.fCutPID2=0;
00129 
00130 
00131       if(!fTreePID.fPassBCuts||!fTreePID.fCutPID) fTreePID.fCutClass=0;
00132       if(!fTreePID.fPassBCuts||!fTreePID.fCutPID1) fTreePID.fCutClass1=0;
00133       if(!fTreePID.fPassBCuts||!fTreePID.fCutPID2) fTreePID.fCutClass2=0;
00134 
00135 }
00136   
00137 void TreePIDAna::Reset()
00138 {}

Generated on Mon Feb 15 11:07:43 2010 for loon by  doxygen 1.3.9.1