NuCutImps::CC2014 Class Reference

#include <NuCutImps.h>

Inheritance diagram for NuCutImps::CC2014:
NuCut

List of all members.

Public Member Functions

 CC2014 (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 188 of file NuCutImps.h.


Constructor & Destructor Documentation

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

Definition at line 1394 of file NuCutImps.cxx.

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

01394                                      :
01395     NuCut("CC2014", plots)
01396   {
01397     SetFidVol("cc2008");
01398     SetAnaVersion(NuCuts::kCC2014);
01399   }


Member Function Documentation

Bool_t NuCutImps::CC2014::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 1403 of file NuCutImps.cxx.

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

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

01404   {
01405     if (nu.ntrk > 0){
01406       // Move trk vtx upstream by 3.92cm from scintillator to steel
01407       // for this analysis version
01408       NuEvent nuc = nu;
01409       nuc.zTrkVtx = nu.zTrkVtx - (0.0392*Munits::m);
01410 
01411       return NuCut::InFidVol(nuc);
01412     }
01413     //this else statement is not strictly necessary
01414     //the events with no track will get removed by the ntrk cut
01415     //this else statement was put here so that we could fill the
01416     //nu.isInFidVolCC flag without knowing the final CC/NC pid
01417     else return NuCut::InFidVolEvt(nu);
01418   }

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

Definition at line 1483 of file NuCutImps.cxx.

References NuEvent::roID.

Referenced by Selection().

01484   {
01485     // Half of one bin in the kNN (which uses 80 bins).
01486     // This removes potential ambiguity from floating point arithmetic
01487     const double eps = 1/160.;
01488     // Cut on CC/NC PID
01489     // use roID only for MINOS+
01490     // 0.3 was found to be optimal, see DocDB 10443
01491     Bool_t goodPID = (nu.roID > 0.3+eps);
01492 
01493     return goodPID;
01494   }

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

Implements NuCut.

Definition at line 1421 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.

01422   {
01423     // Do the base preselection (shared between CC and NC)
01424     Defer_Preselection(fPreselection2010, nu);
01425 
01426     //require a track
01427     Keep_If(nu.ntrk >= 1, "GoodNumberofTracks");
01428 
01429     // Is it in the fiducial volume?
01430     // ntrk cut to suppress warnings
01431     Keep_If(nu.ntrk > 0 && InFidVol(nu), "FidVol");
01432 
01433     // Per-detector cuts
01434     if (nu.detector == Detector::kFar) {
01435       // TrackFitPass
01436       Keep_If(nu.trkfitpass == 1, "trackfitpassFD");
01437 
01438       // Cut on track direction angle
01439       Keep_If(nu.dirCosNu > 0.6, "dirCosNu");
01440     }
01441     else if (nu.detector == Detector::kNear) {
01442       // Need to implement ND Trackfitpass (uses reclamation)
01443       // See Zeynep talk DocDB-6382 - mentions 'Nikis Reclamation'
01444 
01445       Keep_If(NuCuts::IsGoodTrackFitPassReclamation(nu), "trackfitreclamation");
01446       //Keep_If(nu.trkfitpass == 1, "trackfitpassND");
01447       
01448     }
01449   }

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

Implements NuCut.

Definition at line 1452 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, and NuEvent::xTrkEnd.

01453   {
01454     //sanity check that we're picking up the correct beam types
01455     //also sanity checks the hornCurrent
01456     Keep_If(NuCuts::IsGoodBeamTypeCC2008(nu),
01457             "goodBeamType");
01458 
01459     //sanity check that we're picking up the correct coil current
01460     Keep_If(NuCuts::IsGoodCoilCurrentDirectionCC2008(nu),
01461             "goodCoilCurrentDirection");
01462 
01463     //make the pid cut
01464     Keep_If(IsGoodPID(nu),"pid");
01465     //New ND Cuts to remove badly reconstructed events
01466 
01467     //sigqp == 1e-4 is an error code
01468     Keep_If(nu.sigqp > 0.00011 || nu.sigqp < 0.000099, "sigqp");
01469 
01470     //Only use the largest event in a FD snarl. If there are more than
01471     //two events in a FD snarl, don't use any of them.
01472     const double phFrac = nu.evtphsigcor/max(nu.snarlPulseHeight, 1e-10);
01473     Keep_If(nu.detector == Detector::kNear || (nu.detector==Detector::kFar && (nu.nevt < 2 || (nu.nevt == 2 && phFrac > 0.75))), "PHfrac");
01474 
01475     Cut_If(Detector::kNear == nu.detector && 2 == nu.containmentFlag, "ndCalorExit");
01476     Keep_If(nu.trkfitpass == 1, "allTFpass");
01477     Keep_If(nu.detector == Detector::kFar || (nu.rTrkEnd > 0.6 && nu.xTrkEnd > 0.0), "ndCoilHole");
01478 
01479 
01480   }


Member Data Documentation

Definition at line 199 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