NuCutImps::NC0720Std Class Reference

#include <NuCutImps.h>

Inheritance diagram for NuCutImps::NC0720Std:
NuCut

List of all members.

Public Member Functions

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

Protected Member Functions

void FDCosmics (const NuEvent &nu)

Private Attributes

Preselection2010 fPreselection2010
CC0720Std fCC0720Std

Detailed Description

Definition at line 340 of file NuCutImps.h.


Constructor & Destructor Documentation

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

Definition at line 2189 of file NuCutImps.cxx.

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

02189                                            :
02190     NuCut("NC0720Std", plots)
02191   {
02192     //Match CC fiducial volume for simplicity
02193     SetFidVol("cc2008");
02194     SetAnaVersion(NuCuts::kCC0720Std);//deliberately CC
02195   }


Member Function Documentation

void NuCutImps::NC0720Std::FDCleaning ( const NuEvent nu  ) 

Definition at line 2254 of file NuCutImps.cxx.

References NuCut::Cut_If(), MuELoss::e, NuEvent::evtphsigcor, FDCosmics(), max, NuEvent::nevt, NuEvent::nstripEvt, and NuEvent::snarlPulseHeight.

Referenced by Preselection(), and NuCutImps::RetroToFNC::Preselection().

02255   {
02256     // See NCUtils/Cuts/NCAnalysisCutsNC for original version
02257 
02258     Cut_If(nu.nevt == 0, "NumEvents");
02259 
02260     const double phFrac = nu.evtphsigcor/max(nu.snarlPulseHeight, 1e-10);
02261     Cut_If(nu.nevt > 2 || (nu.nevt == 2 && phFrac < .75), "PHfrac");
02262 
02263     FDCosmics(nu); // Cut out cosmics
02264 
02265     Cut_If(nu.evtphsigcor < 5000 && nu.nstripEvt <= 4, "FibreNoise");
02266 
02267     //NO NEED TO DO TIMING CUT HERE, ALREADY DONE IN PRESELECTION
02268     // Timing cut. Data only
02269     //const double dt_spill = nu.trigtime*Munits::s -
02270     //nu.nearestSpillNanosec*Munits::ns;
02271     //Cut_Data_If(dt_spill < -2*Munits::microsecond ||
02272     // dt_spill > 12*Munits::microsecond,
02273     // nu, "Timing");
02274   }

void NuCutImps::NC0720Std::FDCosmics ( const NuEvent nu  )  [protected]

Definition at line 2279 of file NuCutImps.cxx.

References NuCut::Cut_If(), NuEvent::dtdz, NuEvent::endMetersToCloseEdge, NuEvent::nshw, NuEvent::nstripEvt, NuEvent::ntrk, NuEvent::planeEvtN, NuCutImps::SQR(), NuEvent::transverseRMSU, NuEvent::transverseRMSV, NuEvent::trkvtxdcosy, NuEvent::trkvtxdcosz, NuEvent::yTrkEnd, and NuEvent::zTrkEnd.

Referenced by FDCleaning().

02280   {
02281     //Ultra-steep showers
02282     Cut_If(nu.planeEvtN == 0 || nu.nstripEvt >= SQR(nu.planeEvtN),
02283           "UltraSteep");
02284 
02285     //Steep showers
02286     const double tRMS = TMath::Sqrt(SQR(nu.transverseRMSU)+
02287       SQR(nu.transverseRMSV));
02288     Cut_If(nu.nshw > 0 && tRMS > .3+.1901*TMath::Log10(nu.planeEvtN), "Steep");
02289 
02290     //Track angle
02291     Cut_If(nu.ntrk > 0 && nu.trkvtxdcosz < 0.4, "TrkDCosZ");
02292 
02293     const bool upExitTrack = ((nu.zTrkEnd > 28.78 ||
02294       nu.endMetersToCloseEdge < .5) &&
02295       nu.yTrkEnd > -1.657);
02296 
02297     Cut_If(nu.ntrk > 0 && upExitTrack && nu.dtdz < -.5 && nu.trkvtxdcosy < -.4,
02298           "UpExitTrack");
02299   }

Bool_t NuCutImps::NC0720Std::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 2198 of file NuCutImps.cxx.

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

Referenced by Preselection(), and NuCutImps::RetroToFNC::Preselection().

02199   {
02200     // If there's a track and it's longer than the shower then use its
02201     // vertex, otherwise use the event vertex. This is what is done in
02202     // the NC analysis.
02203     if(nu.ntrk > 0 && nu.trknplane > nu.nplaneShw){
02204       // Move trk vtx upstream by 3.92cm from scintillator to steel
02205       NuEvent nuc = nu;
02206       nuc.zTrkVtx = nu.zTrkVtx - (0.0392*Munits::m);
02207       return NuCut::InFidVol(nuc);
02208     }
02209     return NuCut::InFidVolEvt(nu);
02210   }

void NuCutImps::NC0720Std::NDCleaning ( const NuEvent nu  ) 

Definition at line 2302 of file NuCutImps.cxx.

References NuEvent::closeTimeDeltaZ, NuCut::Cut_If(), MuELoss::e, NuEvent::edgeActivityPH, NuEvent::edgeActivityStrips, NuEvent::energy, NuEvent::minTimeSeparation, NuEvent::nplaneShw, NuEvent::nstripEvt, NuEvent::oppEdgeStrips, NuEvent::planeEvtN, NuCutImps::SQR(), and NuEvent::trknplane.

Referenced by Preselection().

02303   {
02304     // See NCUtils/Cuts/NCAnalysisCuts::IsMultiCutsClean for original version
02305 
02306     // 35ns timing cut
02307     Cut_If(TMath::Abs(nu.minTimeSeparation) < 35e-9, "TimeSep");
02308 
02309     // tiny events are mostly junk
02310     Cut_If(nu.nstripEvt < 5, "TotalStrips");
02311 
02312     // this cuts very steep showers, leaking in
02313     Cut_If(nu.nstripEvt > 1.15*SQR(nu.planeEvtN), "Steep");
02314 
02315     // this cuts leakage which leaves activity in partially instrumented
02316     // region
02317     Cut_If(nu.edgeActivityStrips > 2 &&
02318       nu.edgeActivityPH > 1000 &&
02319       nu.energy < 5 &&
02320       nu.nplaneShw > nu.trknplane,
02321       "Leakage");
02322 
02323     Cut_If(nu.oppEdgeStrips > 2 &&
02324       nu.energy < 5.0 &&
02325       nu.nplaneShw > nu.trknplane,
02326       "OppositeEdge");
02327 
02328     // make additional deltaZ cuts if (|minDeltaT|<175ns)
02329     Cut_If(TMath::Abs(nu.closeTimeDeltaZ) < 1.0 &&
02330       TMath::Abs(nu.minTimeSeparation) < 175e-9,
02331       "dz&dt");
02332   }

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

Implements NuCut.

Definition at line 2213 of file NuCutImps.cxx.

References NuCut::Defer_Preselection(), NuEvent::detector, FDCleaning(), fPreselection2010, InFidVol(), NuCut::Keep_If(), Detector::kFar, Detector::kNear, and NDCleaning().

02214   {
02215     Defer_Preselection(fPreselection2010, nu);
02216 
02217     // Now do the rest of the preselection
02218 
02219     // No good track cut
02220 
02221     // Is it in the fiducial volume?
02222     Keep_If(InFidVol(nu), "FidVol");
02223 
02224     // No track fit pass or direction cosines or track reclamation
02225 
02226     // TODO CJB - check CC cuts don't overcut these
02227     if(nu.detector == Detector::kFar ) FDCleaning(nu);
02228     if(nu.detector == Detector::kNear) NDCleaning(nu);
02229   }

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

Implements NuCut.

Definition at line 2232 of file NuCutImps.cxx.

References NuCut::Cut_If(), fCC0720Std, NuCuts::IsGoodBeamTypeCC2008(), NuCuts::IsGoodCoilCurrentDirectionCC2008(), NuCutImps::CC0720Std::IsGoodPID(), NuCut::Keep_If(), NuCut::MakeCuts(), and NuCut::Passed().

02233   {
02234     //sanity check that we're picking up the correct beam types
02235     //also sanity checks the hornCurrent
02236     Keep_If(NuCuts::IsGoodBeamTypeCC2008(nu),
02237             "goodBeamType");
02238 
02239     //sanity check that we're picking up the correct coil current
02240     Keep_If(NuCuts::IsGoodCoilCurrentDirectionCC2008(nu),
02241             "goodCoilCurrentDirection");
02242 
02243     //rather than code this up twice, just make the anti-CC pid cut
02244     Keep_If(!fCC0720Std.IsGoodPID(nu),"pid");
02245 
02246     //to be extra sure that we're not including events twice in
02247     //the different event samples, make sure that the NC events
02248     //are not CC events
02249     fCC0720Std.MakeCuts(nu);
02250     Cut_If(fCC0720Std.Passed(),"notCC");
02251   }


Member Data Documentation

Definition at line 357 of file NuCutImps.h.

Referenced by Selection().

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