NuCutImps::NuCutsSelection Class Reference

#include <NuCutsSelection.h>

Inheritance diagram for NuCutImps::NuCutsSelection:
NuCut

List of all members.

Public Member Functions

 NuCutsSelection (const NuPlots *plots=0)
 NuCutsSelection (Int_t CutVersion, const NuPlots *plots=0)
void MakePostPreSelectionPlots (const NuEvent &nu) const
void PrintSummary (void)
 Prints a summary of all cuts.
virtual Bool_t InFidVol (const NuEvent &nu) const
virtual Bool_t InFidVolEvt (const NuEvent &nu) const
virtual Bool_t InFidVolTrueEvt (const NuMCEvent &mc) const

Protected Member Functions

void Preselection (const NuEvent &nu)
void Selection (const NuEvent &nu)

Private Member Functions

Bool_t IsGoodPreSelectionCuts (const NuEvent &nu) const
Bool_t IsGoodStdCuts (const NuEvent &nu) const

Detailed Description

Old-style Selection - defers to NuCuts

Definition at line 15 of file NuCutsSelection.h.


Constructor & Destructor Documentation

NuCutImps::NuCutsSelection::NuCutsSelection ( const NuPlots plots = 0  ) 

Definition at line 27 of file NuCutsSelection.cxx.

References NuCuts::kUnknown, and NuCut::SetAnaVersion().

00027                                                          :
00028       NuCut("NuCutsSelection", plots)
00029     {
00030       SetAnaVersion(NuCuts::kUnknown);
00031     }

NuCutImps::NuCutsSelection::NuCutsSelection ( Int_t  CutVersion,
const NuPlots plots = 0 
)

Definition at line 33 of file NuCutsSelection.cxx.

References NuCut::SetAnaVersion().

00033                                                                            :
00034       NuCut("NuCutsSelection", plots)
00035     {
00036       SetAnaVersion(anaVersion);
00037     }


Member Function Documentation

Bool_t NuCutImps::NuCutsSelection::InFidVol ( const NuEvent nu  )  const [virtual]

Fiducial volume calculation function. This is the basic 'infid' derived version, and should be overridden/passed to for any more complicated evaluations.

Reimplemented from NuCut.

Definition at line 207 of file NuCutsSelection.cxx.

References NuEvent::anaVersion, NuCut::AnaVersion(), NuLibrary::cuts, NuLibrary::Instance(), and NuCuts::IsInFidVolTrk().

00208     {
00209       NuLibrary& lib=NuLibrary::Instance();
00210       NuEvent tmp = nu;
00211       tmp.anaVersion = this->AnaVersion();
00212       return lib.cuts.IsInFidVolTrk(tmp);
00213     }

Bool_t NuCutImps::NuCutsSelection::InFidVolEvt ( const NuEvent nu  )  const [virtual]

Duplicate of InFidVol except acting on event vertex instead of track vertex.

Reimplemented from NuCut.

Definition at line 215 of file NuCutsSelection.cxx.

References NuEvent::anaVersion, NuCut::AnaVersion(), NuLibrary::cuts, NuLibrary::Instance(), and NuCuts::IsInFidVolEvt().

00216     {
00217       NuLibrary& lib=NuLibrary::Instance();
00218       NuEvent tmp = nu;
00219       tmp.anaVersion = this->AnaVersion();
00220       return lib.cuts.IsInFidVolEvt(tmp);
00221     }

Bool_t NuCutImps::NuCutsSelection::InFidVolTrueEvt ( const NuMCEvent mc  )  const [virtual]

Determines if a MC event is truly in the fiducial volume. Behaves just like InFidVol

Reimplemented from NuCut.

Definition at line 223 of file NuCutsSelection.cxx.

References NuMCEvent::anaVersion, NuCut::AnaVersion(), NuLibrary::cuts, NuLibrary::Instance(), and NuCuts::IsInFidVolTrueEvt().

00224     {
00225       NuLibrary& lib=NuLibrary::Instance();
00226       NuMCEvent tmp(mc);
00227       tmp.anaVersion = this->AnaVersion();
00228       return lib.cuts.IsInFidVolTrueEvt(tmp);
00229     }

Bool_t NuCutImps::NuCutsSelection::IsGoodPreSelectionCuts ( const NuEvent nu  )  const [private]

Definition at line 69 of file NuCutsSelection.cxx.

References NuLibrary::cnt, NuLibrary::cuts, NuCounter::evtNotIsLI, NuCounter::evtWithTrkCounter, NuPlots::FillEvtAndSpillTimingPlots(), NuCut::fPlots, NuCounter::goodBeamInfoDBCounter, NuCounter::goodDataQualityCounter, NuCounter::goodDirectionCosineCounter, NuCounter::goodTimeToNearestSpillCounter, NuCounter::goodTrkPassCounter, NuLibrary::Instance(), NuCuts::IsGoodBeam(), NuCuts::IsGoodBeamDetPOTCountingStage(), NuCuts::IsGoodDataQuality(), NuCuts::IsGoodDirCos(), NuCuts::IsGoodNumberOfTracks(), NuCuts::IsGoodTimeToNearestSpill(), NuCuts::IsGoodTrackFitPass(), NuCuts::IsInFidVolTrk(), NuCuts::IsLI(), and NuCounter::trkInFidVolCounter.

Referenced by IsGoodStdCuts(), and Preselection().

00070     {
00071       //get an instance of the code library
00072       NuLibrary& lib=NuLibrary::Instance();
00073 
00074       //cut on the sntp good beam and that coil is on
00075       if (!lib.cuts.IsGoodBeamDetPOTCountingStage(nu)) return false;
00076       //lib.cnt.goodBeamDetPOTCountingStage++;
00077 
00078       //ensure good number of tracks in the event
00079       if (!lib.cuts.IsGoodNumberOfTracks(nu)) return false;
00080       lib.cnt.evtWithTrkCounter++;
00081 
00082       //check if the trk is in the fiducial volume
00083       if (!lib.cuts.IsInFidVolTrk(nu)) return false;
00084       lib.cnt.trkInFidVolCounter++;
00085 
00086       //cut on LI
00087       if (lib.cuts.IsLI(nu)) return false;
00088       lib.cnt.evtNotIsLI++;
00089 
00090       //cut on the data quality
00091       if (!lib.cuts.IsGoodDataQuality(nu)) return false;
00092       lib.cnt.goodDataQualityCounter++;
00093 
00094       //cut on the spill time
00095       if (fPlots) fPlots->FillEvtAndSpillTimingPlots(nu);
00096       if (!lib.cuts.IsGoodTimeToNearestSpill(nu)) return false;
00097       lib.cnt.goodTimeToNearestSpillCounter++;
00098 
00099       //cut on the beam
00100       if (!lib.cuts.IsGoodBeam(nu)) return false;
00101       lib.cnt.goodBeamInfoDBCounter++;
00102 
00103       //require a good trk fit
00104       if (!lib.cuts.IsGoodTrackFitPass(nu)) return false;
00105       lib.cnt.goodTrkPassCounter++;
00106 
00107       //require a forward going neutrino about beam direction
00108       if (!lib.cuts.IsGoodDirCos(nu)) return false;
00109       lib.cnt.goodDirectionCosineCounter++;
00110 
00111       return true;
00112     }

Bool_t NuCutImps::NuCutsSelection::IsGoodStdCuts ( const NuEvent nu  )  const [private]

this function provides all the std cuts and plots to avoid duplication all over the place

Definition at line 116 of file NuCutsSelection.cxx.

References NuLibrary::cnt, NuLibrary::cuts, NuPlots::FillDPIdSigmaQPFailDpIDCutPlots(), NuPlots::FillDPIdSigmaQPFailProbCutPlots(), NuPlots::FillDPIdSigmaQPFailSigQPCutPlots(), NuPlots::FillDPIdSigmaQPPassDpIDCutPlots(), NuPlots::FillDPIdSigmaQPPassSigQPCutPlots(), NuPlots::FillN_1Plots(), NuCut::fPlots, NuCounter::goodFitProbCounter, NuCounter::goodFitSigQPCounter, NuCounter::goodPIDCounter, NuLibrary::Instance(), NuCuts::IsGoodFitProb(), NuCuts::IsGoodMajorityCurvature(), NuCuts::IsGoodPID(), IsGoodPreSelectionCuts(), NuCuts::IsGoodRelAngle(), NuCuts::IsGoodSigmaQP_QP(), NuCuts::IsGoodTrackLength(), NuCuts::IsGoodTrackLengthInUV(), and MakePostPreSelectionPlots().

Referenced by Selection().

00117     {
00120 
00121       //get an instance of the code library
00122       NuLibrary& lib=NuLibrary::Instance();
00123 
00124       //make the preselection cuts
00125       if (!this->IsGoodPreSelectionCuts(nu)) return false;
00126 
00127       //make the post-preselection plots
00128       if (fPlots) this->MakePostPreSelectionPlots(nu);
00129       if (fPlots) fPlots->FillN_1Plots(nu);
00130 
00131       //cut on the PID
00132       if (!lib.cuts.IsGoodPID(nu)) {
00133         if (fPlots) fPlots->FillDPIdSigmaQPFailDpIDCutPlots(nu);
00134         return false;
00135       }
00136 
00137       lib.cnt.goodPIDCounter++;
00138       if (fPlots) fPlots->FillDPIdSigmaQPPassDpIDCutPlots(nu);
00139 
00140       //cut on the fractional track momentum and sign error
00141       if (!lib.cuts.IsGoodSigmaQP_QP(nu)) {
00142         if (fPlots) fPlots->FillDPIdSigmaQPFailSigQPCutPlots(nu);
00143         return false;
00144       }
00145       lib.cnt.goodFitSigQPCounter++;
00146       if (fPlots) fPlots->FillDPIdSigmaQPPassSigQPCutPlots(nu);
00147 
00148       //cut on the track fit probability
00149       if (!lib.cuts.IsGoodFitProb(nu)) {
00150         if (fPlots) fPlots->FillDPIdSigmaQPFailProbCutPlots(nu);
00151         return false;
00152       }
00153       lib.cnt.goodFitProbCounter++;
00154 
00155       //cut on majority curvature
00156       if (!lib.cuts.IsGoodMajorityCurvature(nu)){
00157         return false;
00158       }
00159 
00160       // Cut on the track length
00161       if (!lib.cuts.IsGoodTrackLength(nu)) {
00162         return false;
00163       }
00164 
00165       // Cut on the track length in UV
00166       if (!lib.cuts.IsGoodTrackLengthInUV(nu)) {
00167         return false;
00168       }
00169 
00170       // Cut on the relative angle
00171       if (!lib.cuts.IsGoodRelAngle(nu)) {
00172         return false;
00173       }
00174 
00175       return true;
00176     }

void NuCutImps::NuCutsSelection::MakePostPreSelectionPlots ( const NuEvent nu  )  const

Definition at line 180 of file NuCutsSelection.cxx.

References NuPlots::FillDPIdSigmaQPPassPreSelCutPlots(), NuPlots::FillDPIdSigmaQPPassUVVtxCutPlots(), NuPlots::FillSigmaQPPlots(), NuPlots::FillTrueAbIDHistos(), NuPlots::FillTrueAbIDHistosPQNQ(), NuPlots::FillTrueDpIDHistos(), NuPlots::FillTrueDpIDHistosPQNQ(), NuPlots::FillTrueRoIDHistos(), NuPlots::FillTrueRoIDHistosPQNQ(), and NuCut::fPlots.

Referenced by IsGoodStdCuts(), and NuDSTAna::MakePostPreSelectionPlots().

00181     {
00182       if (!fPlots) return;
00183       //fill pid plots AFTER pre-selection
00184       fPlots->FillTrueDpIDHistos(nu);
00185       fPlots->FillTrueDpIDHistosPQNQ(nu);
00186       fPlots->FillDPIdSigmaQPPassPreSelCutPlots(nu);
00187       fPlots->FillSigmaQPPlots(nu);//sig, chi, prob plots
00188       // PoID Officially Depracated
00189       //fPlots->FillTruePoIDHistos(nu);
00190       //fPlots->FillTruePoIDHistosPQNQ(nu);
00191       fPlots->FillTrueAbIDHistos(nu);
00192       fPlots->FillTrueAbIDHistosPQNQ(nu);
00193       fPlots->FillTrueRoIDHistos(nu);
00194       fPlots->FillTrueRoIDHistosPQNQ(nu);
00195       fPlots->FillDPIdSigmaQPPassUVVtxCutPlots(nu);//fill these anyway
00196     }

void NuCutImps::NuCutsSelection::Preselection ( const NuEvent nu  )  [protected, virtual]

Implements NuCut.

Definition at line 40 of file NuCutsSelection.cxx.

References NuEvent::anaVersion, NuCut::AnaVersion(), IsGoodPreSelectionCuts(), and NuCut::Keep_If().

00041     {
00042       // Copy and override the NuEvent
00043       NuEvent nu = nuold;
00044       nu.anaVersion = this->AnaVersion();
00045       // Don't do sanity checking for now - this will be reimplemented!
00046       // nuc.anaVersion = fDSTAna->SanityCheckedAnaVersion(nu.anaVersion, fAnaVersion);
00047 
00048       Keep_If(IsGoodPreSelectionCuts(nu), "StdPreselection");
00049 
00050 
00051       // Make the preselection cut
00052       // Keep_If(fDSTAna->IsGoodPreSelectionCuts(fPlots,nuc));
00053     }

void NuCutImps::NuCutsSelection::PrintSummary ( void   )  [virtual]

Prints a summary of all cuts.

Reimplemented from NuCut.

Definition at line 198 of file NuCutsSelection.cxx.

References NuLibrary::cnt, NuLibrary::Instance(), and NuCounter::PrintMicroDST().

00199     {
00200       // Use the NuLibrary counter for this
00201       NuLibrary& lib=NuLibrary::Instance();
00202 
00203       //print out the numbers of events
00204       lib.cnt.PrintMicroDST();
00205     }

void NuCutImps::NuCutsSelection::Selection ( const NuEvent nu  )  [protected, virtual]

Implements NuCut.

Definition at line 56 of file NuCutsSelection.cxx.

References NuEvent::anaVersion, NuCut::AnaVersion(), IsGoodStdCuts(), and NuCut::Keep_If().

00057     {
00058       // Copy and override the NuEvent
00059       NuEvent nuc = nu;
00060       nuc.anaVersion = this->AnaVersion();
00061       // nuc.anaVersion = fDSTAna->SanityCheckedAnaVersion(nu.anaVersion, fAnaVersion);
00062 
00063       // Keep_If(fDSTAna->IsGoodStdCuts(fPlots,nuc));
00064       Keep_If(IsGoodStdCuts(nu), "StdCuts");
00065 
00066     }


The documentation for this class was generated from the following files:

Generated on 24 Jul 2018 for loon by  doxygen 1.6.1