NuCutImps::CC1070Std Class Reference

#include <NuCutImps.h>

Inheritance diagram for NuCutImps::CC1070Std:
NuCut

List of all members.

Public Member Functions

 CC1070Std (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 172 of file NuCutImps.h.


Constructor & Destructor Documentation

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

Definition at line 1287 of file NuCutImps.cxx.

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

01287                                            :
01288     NuCut("CC1070Std", plots)
01289   {
01290     SetFidVol("cc2008");
01291     SetAnaVersion(NuCuts::kCC1070Std);
01292   }


Member Function Documentation

Bool_t NuCutImps::CC1070Std::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 1296 of file NuCutImps.cxx.

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

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

01297   {
01298     if (nu.ntrk > 0){
01299       // Move trk vtx upstream by 3.92cm from scintillator to steel
01300       // for this analysis version
01301       NuEvent nuc = nu;
01302       nuc.zTrkVtx = nu.zTrkVtx - (0.0392*Munits::m);
01303 
01304       return NuCut::InFidVol(nuc);
01305     }
01306     //this else statement is not strictly necessary
01307     //the events with no track will get removed by the ntrk cut
01308     //this else statement was put here so that we could fill the
01309     //nu.isInFidVolCC flag without knowing the final CC/NC pid
01310     else return NuCut::InFidVolEvt(nu);
01311   }

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

Definition at line 1376 of file NuCutImps.cxx.

References NuEvent::jmID, and NuEvent::roID.

Referenced by Selection().

01377   {
01378     // Half of one bin in the kNN (which uses 80 bins).
01379     // This removes potential ambiguity from floating point arithmetic
01380     const double eps = 1/160.;
01381     // Cut on CC/NC PID
01382     Bool_t goodPID=(nu.roID > 0.25+eps) ||
01383       (nu.jmID > 0.5+eps);
01384 
01385     return goodPID;
01386   }

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

Implements NuCut.

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

01315   {
01316     // Do the base preselection (shared between CC and NC)
01317     Defer_Preselection(fPreselection2010, nu);
01318 
01319     //require a track
01320     Keep_If(nu.ntrk >= 1, "GoodNumberofTracks");
01321 
01322     // Is it in the fiducial volume?
01323     // ntrk cut to suppress warnings
01324     Keep_If(nu.ntrk > 0 && InFidVol(nu), "FidVol");
01325 
01326     // Per-detector cuts
01327     if (nu.detector == Detector::kFar) {
01328       // TrackFitPass
01329       Keep_If(nu.trkfitpass == 1, "trackfitpassFD");
01330 
01331       // Cut on track direction angle
01332       Keep_If(nu.dirCosNu > 0.6, "dirCosNu");
01333     }
01334     else if (nu.detector == Detector::kNear) {
01335       // Need to implement ND Trackfitpass (uses reclamation)
01336       // See Zeynep talk DocDB-6382 - mentions 'Nikis Reclamation'
01337 
01338       Keep_If(NuCuts::IsGoodTrackFitPassReclamation(nu), "trackfitreclamation");
01339       //Keep_If(nu.trkfitpass == 1, "trackfitpassND");
01340       
01341     }
01342   }

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

Implements NuCut.

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

01346   {
01347     //sanity check that we're picking up the correct beam types
01348     //also sanity checks the hornCurrent
01349     Keep_If(NuCuts::IsGoodBeamTypeCC2008(nu),
01350             "goodBeamType");
01351 
01352     //sanity check that we're picking up the correct coil current
01353     Keep_If(NuCuts::IsGoodCoilCurrentDirectionCC2008(nu),
01354             "goodCoilCurrentDirection");
01355 
01356     //make the pid cut
01357     Keep_If(IsGoodPID(nu),"pid");
01358     //New ND Cuts to remove badly reconstructed events
01359 
01360     //sigqp == 1e-4 is an error code
01361     Keep_If(nu.sigqp > 0.00011 || nu.sigqp < 0.000099, "sigqp");
01362 
01363     //Only use the largest event in a FD snarl. If there are more than
01364     //two events in a FD snarl, don't use any of them.
01365     const double phFrac = nu.evtphsigcor/max(nu.snarlPulseHeight, 1e-10);
01366     Keep_If(nu.detector == Detector::kNear || (nu.detector==Detector::kFar && (nu.nevt < 2 || (nu.nevt == 2 && phFrac > 0.75))), "PHfrac");
01367 
01368     Cut_If(Detector::kNear == nu.detector && 2 == nu.containmentFlag, "ndCalorExit");
01369     Keep_If(nu.trkfitpass == 1, "allTFpass");
01370     Keep_If(nu.detector == Detector::kFar || (nu.rTrkEnd > 0.6 && nu.xTrkEnd > 0.0), "ndCoilHole");
01371 
01372 
01373   }


Member Data Documentation

Definition at line 183 of file NuCutImps.h.

Referenced by Preselection().


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

Generated on 11 Jan 2018 for loon by  doxygen 1.6.1