NuCutImps::CC2014NewCoilCut Class Reference

#include <NuCutImps.h>

Inheritance diagram for NuCutImps::CC2014NewCoilCut:
NuCut

List of all members.

Public Member Functions

 CC2014NewCoilCut (const NuPlots *plots=0)
Bool_t InFidVol (const NuEvent &nu) const
void Preselection (const NuEvent &nu)
void Selection (const NuEvent &nu)

Static Public Member Functions

static Bool_t IsGoodPID (const NuEvent &nu)

Private Attributes

Preselection2010 fPreselection2010

Detailed Description

Definition at line 204 of file NuCutImps.h.


Constructor & Destructor Documentation

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

Definition at line 1502 of file NuCutImps.cxx.

References NuCuts::kCC2014NewCoilCut, NuCut::SetAnaVersion(), and NuCut::SetFidVol().

01502                                                          :
01503     NuCut("CC2014NewCoilCut", plots)
01504   {
01505     SetFidVol("cc2008");
01506     SetAnaVersion(NuCuts::kCC2014NewCoilCut);
01507   }


Member Function Documentation

Bool_t NuCutImps::CC2014NewCoilCut::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 1511 of file NuCutImps.cxx.

References NuCut::InFidVolEvt(), Munits::m, NuEvent::ntrk, and NuEvent::zTrkVtx.

Referenced by NuCutImps::CC2014NewCoilCutResolution::InFidVol(), and Preselection().

01512   {
01513     if (nu.ntrk > 0){
01514       // Move trk vtx upstream by 3.92cm from scintillator to steel
01515       // for this analysis version
01516       NuEvent nuc = nu;
01517       nuc.zTrkVtx = nu.zTrkVtx - (0.0392*Munits::m);
01518 
01519       return NuCut::InFidVol(nuc);
01520     }
01521     //this else statement is not strictly necessary
01522     //the events with no track will get removed by the ntrk cut
01523     //this else statement was put here so that we could fill the
01524     //nu.isInFidVolCC flag without knowing the final CC/NC pid
01525     else return NuCut::InFidVolEvt(nu);
01526   }

Bool_t NuCutImps::CC2014NewCoilCut::IsGoodPID ( const NuEvent nu  )  [static]

Definition at line 1591 of file NuCutImps.cxx.

References NuEvent::roID.

Referenced by Selection().

01592   {
01593     // Half of one bin in the kNN (which uses 80 bins).
01594     // This removes potential ambiguity from floating point arithmetic
01595     const double eps = 1/160.;
01596     // Cut on CC/NC PID
01597     // use roID only for MINOS+
01598     // 0.3 was found to be optimal, see DocDB 10443
01599     Bool_t goodPID = (nu.roID > 0.3+eps);
01600 
01601     return goodPID;
01602   }

void NuCutImps::CC2014NewCoilCut::Preselection ( const NuEvent nu  )  [virtual]

Implements NuCut.

Definition at line 1529 of file NuCutImps.cxx.

References NuCut::Defer_Preselection(), NuEvent::detector, NuEvent::dirCosNu, fPreselection2010, InFidVol(), NuCuts::IsGoodTrackFitPassReclamation(), NuCut::Keep_If(), Detector::kFar, Detector::kNear, NuEvent::ntrk, and NuEvent::trkfitpass.

01530   {
01531     // Do the base preselection (shared between CC and NC)
01532     Defer_Preselection(fPreselection2010, nu);
01533 
01534     //require a track
01535     Keep_If(nu.ntrk >= 1, "GoodNumberofTracks");
01536 
01537     // Is it in the fiducial volume?
01538     // ntrk cut to suppress warnings
01539     Keep_If(nu.ntrk > 0 && InFidVol(nu), "FidVol");
01540 
01541     // Per-detector cuts
01542     if (nu.detector == Detector::kFar) {
01543       // TrackFitPass
01544       Keep_If(nu.trkfitpass == 1, "trackfitpassFD");
01545 
01546       // Cut on track direction angle
01547       Keep_If(nu.dirCosNu > 0.6, "dirCosNu");
01548     }
01549     else if (nu.detector == Detector::kNear) {
01550       // Need to implement ND Trackfitpass (uses reclamation)
01551       // See Zeynep talk DocDB-6382 - mentions 'Nikis Reclamation'
01552 
01553       Keep_If(NuCuts::IsGoodTrackFitPassReclamation(nu), "trackfitreclamation");
01554       //Keep_If(nu.trkfitpass == 1, "trackfitpassND");
01555       
01556     }
01557   }

void NuCutImps::CC2014NewCoilCut::Selection ( const NuEvent nu  )  [virtual]

Implements NuCut.

Definition at line 1560 of file NuCutImps.cxx.

References NuEvent::containmentFlag, NuCut::Cut_If(), NuEvent::detector, MuELoss::e, NuEvent::evtphsigcor, NuCuts::IsGoodBeamTypeCC2008(), NuCuts::IsGoodCoilCurrentDirectionCC2008(), IsGoodPID(), NuCut::Keep_If(), Detector::kFar, Detector::kNear, max, NuEvent::nevt, NuEvent::rTrkEnd, NuEvent::sigqp, NuEvent::snarlPulseHeight, NuEvent::trkfitpass, NuEvent::xTrkEnd, and NuEvent::zTrkEnd.

01561   {
01562     //sanity check that we're picking up the correct beam types
01563     //also sanity checks the hornCurrent
01564     Keep_If(NuCuts::IsGoodBeamTypeCC2008(nu),
01565             "goodBeamType");
01566 
01567     //sanity check that we're picking up the correct coil current
01568     Keep_If(NuCuts::IsGoodCoilCurrentDirectionCC2008(nu),
01569             "goodCoilCurrentDirection");
01570 
01571     //make the pid cut
01572     Keep_If(IsGoodPID(nu),"pid");
01573     //New ND Cuts to remove badly reconstructed events
01574 
01575     //sigqp == 1e-4 is an error code
01576     Keep_If(nu.sigqp > 0.00011 || nu.sigqp < 0.000099, "sigqp");
01577 
01578     //Only use the largest event in a FD snarl. If there are more than
01579     //two events in a FD snarl, don't use any of them.
01580     const double phFrac = nu.evtphsigcor/max(nu.snarlPulseHeight, 1e-10);
01581     Keep_If(nu.detector == Detector::kNear || (nu.detector==Detector::kFar && (nu.nevt < 2 || (nu.nevt == 2 && phFrac > 0.75))), "PHfrac");
01582 
01583     Cut_If(Detector::kNear == nu.detector && 2 == nu.containmentFlag, "ndCalorExit");
01584     Keep_If(nu.trkfitpass == 1, "allTFpass");
01585     Keep_If(nu.detector == Detector::kFar || ((nu.zTrkEnd > 7.15 && nu.xTrkEnd > 0.0) || (nu.zTrkEnd <= 7.15 && nu.rTrkEnd > 0.6 && nu.xTrkEnd > 0.0)), "ndCoilHole");
01586 
01587 
01588   }


Member Data Documentation

Definition at line 215 of file NuCutImps.h.

Referenced by Preselection().


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

Generated on 15 Jul 2018 for loon by  doxygen 1.6.1