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 {}
1.3.9.1