Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

NuCutImps::CCA_NC Class Reference

#include <NuCutImps.h>

Inheritance diagram for NuCutImps::CCA_NC:

NuCut List of all members.

Public Member Functions

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

Protected Member Functions

void FDCleaning (const NuEvent &nu)
void FDCosmics (const NuEvent &nu)
void NDCleaning (const NuEvent &nu)

Private Attributes

CCAPresel fCCAPresel

Constructor & Destructor Documentation

NuCutImps::CCA_NC::CCA_NC const NuPlots plots = 0  ) 
 

Definition at line 582 of file NuCutImps.cxx.

References plots(), and NuCut::SetFidVol().

00582                                      : 
00583     NuCut("CCA_NC", plots)
00584   {
00585     // Match CC fiducial volume for simplicity
00586     // TODO CJB - will this try to use the track vertex? Is that bad?
00587     SetFidVol("cc2008");
00588   }


Member Function Documentation

void NuCutImps::CCA_NC::FDCleaning const NuEvent nu  )  [protected]
 

Definition at line 632 of file NuCutImps.cxx.

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

Referenced by Preselection().

00633   {
00634     // See NCUtils/Cuts/NCAnalysisCutsNC for original version
00635 
00636     Cut_If(nu.nevt == 0, "NumEvents");
00637 
00638     const double phFrac = nu.evtphsigcor/max(nu.snarlPulseHeight, 1e-10);
00639       Cut_If(nu.nevt > 2 || (nu.nevt == 2 && phFrac < .75), "PHfrac");
00640 
00641     FDCosmics(nu); // Cut out cosmics
00642 
00643     Cut_If(nu.evtphsigcor < 5000 && nu.nstripEvt <= 4, "FibreNoise");
00644 
00645     // Timing cut. Data only
00646     const double dt_spill = nu.trigtime*Munits::s - nu.nearestSpillNanosec*Munits::ns;
00647 
00648     Cut_Data_If(dt_spill < -2*Munits::microsecond ||
00649                 dt_spill > 12*Munits::microsecond,
00650                 nu, "Timing");
00651   }

void NuCutImps::CCA_NC::FDCosmics const NuEvent nu  )  [protected]
 

Definition at line 656 of file NuCutImps.cxx.

Referenced by FDCleaning().

00657   {
00658     //Ultra-steep showers
00659     Cut_If(nu.planeEvtN == 0 || nu.nstripEvt >= SQR(nu.planeEvtN),
00660            "UltraSteep");
00661 
00662     //Steep showers
00663     const double tRMS = TMath::Sqrt(SQR(nu.transverseRMSU)+
00664                                     SQR(nu.transverseRMSV));
00665     Cut_If(nu.nshw > 0 && tRMS > .3+.1901*TMath::Log10(nu.planeEvtN), "Steep");
00666 
00667       //Track angle
00668     Cut_If(nu.ntrk > 0 && nu.trkvtxdcosz < 0.4, "TrkDCosZ");
00669 
00670       const bool upExitTrack = ((nu.zTrkEnd > 28.78 ||
00671                                  nu.endMetersToCloseEdge < .5) &&
00672                                 nu.yTrkEnd > -1.657);
00673 
00674     Cut_If(nu.ntrk > 0 && upExitTrack && nu.dtdz < -.5 && nu.trkvtxdcosy < -.4,
00675              "UpExitTrack");
00676   }

Bool_t NuCutImps::CCA_NC::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 591 of file NuCutImps.cxx.

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

Referenced by Preselection().

00592   {
00593     // If there's a track and it's longer than the shower then use its
00594     // vertex, otherwise use the event vertex. This is what is done in
00595     // the NC analysis.
00596     // TODO CJB - is this maximally consistent with the CC analysis?
00597     if(nu.ntrk > 0 && nu.trknplane > nu.nplaneShw){
00598       // Move trk vtx upstream by 3.92cm from scintillator to steel
00599       NuEvent nuc = nu;
00600       nuc.zTrkVtx = nu.zTrkVtx - (0.0392*Munits::m);
00601       return NuCut::InFidVol(nuc);
00602     }
00603     return NuCut::InFidVolEvt(nu);
00604   }

void NuCutImps::CCA_NC::NDCleaning const NuEvent nu  )  [protected]
 

Definition at line 679 of file NuCutImps.cxx.

References NuCut::Cut_If().

Referenced by Preselection().

00680   {
00681     // See NCUtils/Cuts/NCAnalysisCuts::IsMultiCutsClean for original version
00682 
00683     // 35ns timing cut
00684     Cut_If(TMath::Abs(nu.minTimeSeparation) < 35e-9, "TimeSep");
00685 
00686     // tiny events are mostly junk
00687     Cut_If(nu.nstripEvt < 5, "TotalStrips");
00688 
00689     // this cuts very steep showers, leaking in
00690     Cut_If(nu.nstripEvt > 1.15*SQR(nu.planeEvtN), "Steep");
00691 
00692     // this cuts leakage which leaves activity in partially instrumented
00693     // region
00694     Cut_If(nu.edgeActivityStrips > 2 &&
00695            nu.edgeActivityPH > 1000 &&
00696            nu.energy < 5 &&
00697            nu.nplaneShw > nu.trknplane,
00698            "Leakage");
00699 
00700     Cut_If(nu.oppEdgeStrips > 2 &&
00701            nu.energy < 5.0 &&
00702            nu.nplaneShw > nu.trknplane,
00703            "OppositeEdge");
00704 
00705     // make additional deltaZ cuts if (|minDeltaT|<175ns)
00706     Cut_If(TMath::Abs(nu.closeTimeDeltaZ) < 1.0 &&
00707            TMath::Abs(nu.minTimeSeparation) < 175e-9,
00708            "dz&dt");
00709   }

void NuCutImps::CCA_NC::Preselection const NuEvent nu  )  [virtual]
 

Implements NuCut.

Definition at line 607 of file NuCutImps.cxx.

References NuCut::Defer_Preselection(), NuEvent::detector, fCCAPresel, FDCleaning(), InFidVol(), NuCut::Keep_If(), and NDCleaning().

00608   {
00609     Defer_Preselection(fCCAPresel, nu);
00610 
00611     // Now do the rest of the preselection
00612 
00613     // No good track cut
00614 
00615     // Is it in the fiducial volume?
00616     Keep_If(InFidVol(nu), "FidVol");
00617 
00618     // No track fit pass or direction cosines or track reclamation
00619 
00620     // TODO CJB - check CC cuts don't overcut these
00621     if(nu.detector == Detector::kFar ) FDCleaning(nu);
00622     if(nu.detector == Detector::kNear) NDCleaning(nu);
00623   }

void NuCutImps::CCA_NC::Selection const NuEvent nu  )  [virtual]
 

Implements NuCut.

Definition at line 626 of file NuCutImps.cxx.

References NuCut::Keep_If(), and NuEvent::roID.

00627   {
00628     Keep_If(nu.roID < 0.3, "RoID");
00629   }


Member Data Documentation

CCAPresel NuCutImps::CCA_NC::fCCAPresel [private]
 

Definition at line 138 of file NuCutImps.h.

Referenced by Preselection().


The documentation for this class was generated from the following files:
Generated on Mon Feb 15 11:10:39 2010 for loon by  doxygen 1.3.9.1