Public Member Functions | Private Member Functions | Private Attributes | List of all members
skim::SelectionNue2018RHC Class Reference

#include "/cvmfs/nova-development.opensciencegrid.org/novasoft/releases/N20-09-17/AnalysisSkimmer/evaluators/SelectionNue2018RHC.h"

Inheritance diagram for skim::SelectionNue2018RHC:
skim::SelectionBase

Public Member Functions

 SelectionNue2018RHC ()
 
 SelectionNue2018RHC (SelectionNue2018RHC const &)=delete
 
 SelectionNue2018RHC (SelectionNue2018RHC &&)=delete
 
SelectionNue2018RHCoperator= (SelectionNue2018RHC const &)=delete
 
SelectionNue2018RHCoperator= (SelectionNue2018RHC &&)=delete
 
void reconfigure (fhicl::ParameterSet const &p)
 
bool PassesSelection (skim::Parameters *pars, novadaq::cnv::DetId const &detId)
 

Private Member Functions

bool PassesPreselection (skim::ParametersNue const &params)
 
bool KeepNueFarDetectorSlice (skim::ParametersNue const &params)
 
bool KeepNueNearDetectorSlice (skim::ParametersNue const &params)
 
bool CheckSlicePID (skim::ParametersNue const &params)
 

Private Attributes

float fFDDistAllTop
 minimum distance to the top wall More...
 
float fFDDistAllBottom
 minimum distance to the bottom wall More...
 
float fFDDistAllWest
 minimum distance to the west wall More...
 
float fFDDistAllEast
 minimum distance to the east wall More...
 
float fFDDistAllFront
 minimum distance to the front wall More...
 
float fFDDistAllBack
 minimum distance to the back wall More...
 
float fFDMaxSparsenessAsymm
 maximum asymmetry in the zero-hit planes at the start and end of the shower More...
 
float fFDMaxDistAllBack
 maximum distance to the back wall More...
 
float fFarCloseBoundary
 distance at which we are no longer close to top of detector More...
 
float fVeryFarBoundary
 distance at which we are very far from the top of detector More...
 
float fMaxTransverseMomentumClose
 maximum transverse momentum when close to top of detector More...
 
float fMaxTransverseMomentumFar
 maximum transverse momentum when away from top of detector More...
 
float fSliceHitsPerPlane
 maximum number of hits per plane in a slice More...
 
float fFDMinSliceHits
 minimum number of hits required in FD slices. More...
 
float fFDMaxSliceHits
 maximum number of hits required in FD slices. More...
 
float fFDMaxNueEnergy
 max NueEnergy at FD More...
 
float fFDMinNueEnergy
 min NueEnergy at FD More...
 
float fMinCVNVal
 min cvn value optimised on S/sqrt(B) More...
 
float fFDMaxProngLength
 maximum length of longest prong More...
 
float fFDMinProngLength
 minimum length of longest prong More...
 
float fFDClosestSliceTimeBefore
 closest time distance allowed for previous slice More...
 
float fFDClosestSliceTimeAfter
 closest time distance allowed for next slice More...
 
float fFDClosestSliceHighCVNTopDist
 minimum distance from top for closest slice ( CVN > 0.87 ) More...
 
float fFDClosestSliceLowCVNTopDist
 minimum distance from top for closest slice ( 0.75 < CVN < 0.87 ) More...
 
float fFDClosestSliceMinDist
 minimum distance for closest slice More...
 
float fFDClosestSliceCVNBoundary
 CVN boundary for closest slice check. More...
 
float fNDMaxVertexX
 
float fNDMinVertexX
 
float fNDMaxVertexY
 
float fNDMinVertexY
 
float fNDMaxVertexZ
 
float fNDMinVertexZ
 
float fNDMaxShowerW
 
float fNDMinShowerZ
 
float fNDMaxShowerZ
 
float fNDMinSliceHits
 
float fNDMaxSliceHits
 
float fNDMaxNueEnergy
 
float fNDMinNueEnergy
 
float fNDMaxProngLength
 
float fNDMinProngLength
 
unsigned int fNDMinPlanesToFront
 

Detailed Description

Definition at line 17 of file SelectionNue2018RHC.h.

Constructor & Destructor Documentation

skim::SelectionNue2018RHC::SelectionNue2018RHC ( )

Definition at line 11 of file SelectionNue2018RHC.cxx.

12 {
13 
14 }
skim::SelectionNue2018RHC::SelectionNue2018RHC ( SelectionNue2018RHC const &  )
delete
skim::SelectionNue2018RHC::SelectionNue2018RHC ( SelectionNue2018RHC &&  )
delete

Member Function Documentation

bool skim::SelectionNue2018RHC::CheckSlicePID ( skim::ParametersNue const &  params)
private

Definition at line 158 of file SelectionNue2018RHC.cxx.

References skim::ParametersNue::CVNVal(), fMinCVNVal, and LOG_DEBUG.

Referenced by PassesSelection().

159 {
160  // only get rid of an event if both PID values are less than the minimum
161  // required. keep the event if it satisfies either cut.
162 
163  if( params.CVNVal() < fMinCVNVal){
164  LOG_DEBUG("SelectionNue2018RHC")
165  << "failed PID Cuts"
166  << "\nCVN: " << params.CVNVal() << " " << fMinCVNVal;
167  return false;
168  }
169 
170  return true;
171 }
#define LOG_DEBUG(stream)
Definition: Messenger.h:149
float fMinCVNVal
min cvn value optimised on S/sqrt(B)
bool skim::SelectionNue2018RHC::KeepNueFarDetectorSlice ( skim::ParametersNue const &  params)
private

Definition at line 189 of file SelectionNue2018RHC.cxx.

References skim::ParametersNue::ClosestSliceDistFromTop(), skim::ParametersNue::ClosestSliceMinDist(), skim::ParametersNue::ClosestSliceTime(), skim::ParametersNue::CVNVal(), skim::ParametersNue::DistAllBack(), skim::ParametersNue::DistAllBottom(), skim::ParametersNue::DistAllEast(), skim::ParametersNue::DistAllFront(), skim::ParametersNue::DistAllTop(), skim::ParametersNue::DistAllWest(), fFarCloseBoundary, fFDClosestSliceCVNBoundary, fFDClosestSliceHighCVNTopDist, fFDClosestSliceLowCVNTopDist, fFDClosestSliceMinDist, fFDClosestSliceTimeAfter, fFDClosestSliceTimeBefore, fFDDistAllBack, fFDDistAllBottom, fFDDistAllEast, fFDDistAllFront, fFDDistAllTop, fFDDistAllWest, fFDMaxDistAllBack, fFDMaxProngLength, fFDMaxSliceHits, fFDMaxSparsenessAsymm, fFDMinProngLength, fFDMinSliceHits, fMaxTransverseMomentumClose, fMaxTransverseMomentumFar, fMinCVNVal, fVeryFarBoundary, LOG_DEBUG, PassesPreselection(), skim::ParametersNue::ProngLength(), skim::ParametersNue::ShowerMaxY(), skim::ParametersNue::ShowerPt(), skim::ParametersNue::SliceHits(), skim::ParametersNue::SparsenessAsymm(), and skim::ParametersNue::VetoKeepNue().

Referenced by PassesSelection().

190 {
191  if(!this->PassesPreselection(params)) return false;
192 
193  // cuts based on slice info include cuts on number of hits,
194  // energy of slice, fraction of slice hits in 3D showers
195  //
196  if(params.SliceHits() < fFDMinSliceHits ||
197  params.SliceHits() > fFDMaxSliceHits
198  // params.NueEnergy() > fFDMaxNueEnergy ||
199  // params.NueEnergy() < fFDMinNueEnergy
200  ){
201  LOG_DEBUG("SelectionNue2018RHC")
202  << "failed Cell/Hit Checks"
203  << "\nSliceHits: " << params.SliceHits();
204 
205  return false;
206  }
207 
208  // check the prong length
209  if(params.ProngLength() <= fFDMinProngLength ||
210  params.ProngLength() >= fFDMaxProngLength ){
211  LOG_DEBUG("SelectionNue2018RHC")
212  << "failed shower length cuts"
213  << "\nProngLength: " << params.ProngLength() << " " << fFDMaxProngLength
214  << "\nProngLength: " << params.ProngLength() << " " << fFDMinProngLength;
215  return false;
216  }
217 
218 
219  // cuts based on the showers - we already checked the number of showers
220  // in the KeepSlice method, so don't bother doing it again
221  if((params.ShowerMaxY() >= fVeryFarBoundary && params.ShowerMaxY() < fFarCloseBoundary && params.ShowerPt() >= fMaxTransverseMomentumFar ) ||
222  (params.ShowerMaxY() >= fFarCloseBoundary && params.ShowerPt() >= fMaxTransverseMomentumClose)
223  ){
224  LOG_DEBUG("SelectionNue2018RHC")
225  << "\nMinTopDist: " << params.ShowerMaxY() << " " << fVeryFarBoundary
226  << "\nMinTopDist: " << params.ShowerMaxY() << " " << fFarCloseBoundary
227  << "\nShowerPt: " << params.ShowerPt() << " " << fMaxTransverseMomentumFar
228  << "\nShowerPt: " << params.ShowerPt() << " " << fMaxTransverseMomentumClose;
229  return false;
230  }
231 
232 
233  // check the containment
234  if(params.DistAllTop() <= fFDDistAllTop ||
235  params.DistAllBottom() <= fFDDistAllBottom ||
236  params.DistAllWest() <= fFDDistAllWest ||
237  params.DistAllEast() <= fFDDistAllEast ||
238  params.DistAllFront() <= fFDDistAllFront ||
239  params.DistAllBack() <= fFDDistAllBack ){
240  LOG_DEBUG("SelectionNue2018RHC")
241  << "failed containment"
242  << "\nDistAllTop: " << params.DistAllTop() << " " << fFDDistAllTop
243  << "\nDistAllBottom: " << params.DistAllBottom() << " " << fFDDistAllBottom
244  << "\nDistAllWest: " << params.DistAllWest() << " " << fFDDistAllWest
245  << "\nDistAllEast: " << params.DistAllEast() << " " << fFDDistAllEast
246  << "\nDistAllFront: " << params.DistAllFront() << " " << fFDDistAllFront
247  << "\nDistAllBack: " << params.DistAllBack() << " " << fFDDistAllBack;
248 
249  return false;
250  }
251 
252  // FD backward cosmic photon rejection cut
253  if(params.DistAllBack() < fFDMaxDistAllBack &&
254  params.SparsenessAsymm() >= fFDMaxSparsenessAsymm ){
255  LOG_DEBUG("SelectionNue2018RHC")
256  << "failed backward cosmic photon rejection cut"
257  << "\nDistAllBack: " << params.DistAllBack() << " " << fFDMaxDistAllBack
258  << "\nSparsenessAsymm: " << params.SparsenessAsymm() << " " << fFDMaxSparsenessAsymm;
259 
260  return false;
261  }
262 
263 
264  //FD Nerest Slice
265  if( params.CVNVal() > fMinCVNVal &&
266  params.CVNVal() < fFDClosestSliceCVNBoundary &&
267  params.ClosestSliceTime() > fFDClosestSliceTimeBefore &&
268  params.ClosestSliceTime() < fFDClosestSliceTimeAfter &&
269  params.ClosestSliceMinDist() < fFDClosestSliceMinDist &&
270  params.ClosestSliceDistFromTop() < fFDClosestSliceLowCVNTopDist ){
271 
272  LOG_DEBUG("SelectionNue2018RHC")
273  << "failed nearest slice cut"
274  << "\nMinCVNVal " << params.CVNVal() << fMinCVNVal
275  << "\nFDClosestSliceCVNBoundary " << params.CVNVal() << fFDClosestSliceCVNBoundary
276  << "\nFDClosestSliceTimeBefore " << params.ClosestSliceTime() << fFDClosestSliceTimeBefore
277  << "\nFDClosestSliceTimeAfter " << params.ClosestSliceTime() << fFDClosestSliceTimeAfter
278  << "\nFDClosestSliceMinDist " << params.ClosestSliceMinDist() << fFDClosestSliceMinDist
279  << "\nFDClosestSliceLowCVNTopDist " << params.ClosestSliceDistFromTop() << fFDClosestSliceLowCVNTopDist;
280 
281  return false;
282  }
283 
284  if( params.CVNVal() > fFDClosestSliceCVNBoundary &&
285  params.ClosestSliceTime() > fFDClosestSliceTimeBefore &&
286  params.ClosestSliceTime() < fFDClosestSliceTimeAfter &&
287  params.ClosestSliceMinDist() < fFDClosestSliceMinDist &&
288  params.ClosestSliceDistFromTop() < fFDClosestSliceHighCVNTopDist ){
289 
290  LOG_DEBUG("SelectionNue2018RHC")
291  << "failed nearest slice cut"
292  << "\nFDClosestSliceCVNBoundary " << params.CVNVal() << fFDClosestSliceCVNBoundary
293  << "\nFDClosestSliceTimeBefore " << params.ClosestSliceTime() << fFDClosestSliceTimeBefore
294  << "\nFDClosestSliceTimeAfter " << params.ClosestSliceTime() << fFDClosestSliceTimeAfter
295  << "\nFDClosestSliceMinDist " << params.ClosestSliceMinDist() << fFDClosestSliceMinDist
296  << "\nFDClosestSliceHighCVNTopDist " << params.ClosestSliceDistFromTop() << fFDClosestSliceHighCVNTopDist;
297 
298  return false;
299  }
300 
301  // cosmic veto cut
302  if (!params.VetoKeepNue()){
303  LOG_DEBUG("SelectionNue2018RHC")
304  << "failed cosmic veto cut"
305  << "\nVetoKeepNue: " << params.VetoKeepNue() ;
306  return false;
307  }
308 
309  return true;
310 }
#define LOG_DEBUG(stream)
Definition: Messenger.h:149
float fFarCloseBoundary
distance at which we are no longer close to top of detector
float fFDClosestSliceTimeBefore
closest time distance allowed for previous slice
float fFDMaxSliceHits
maximum number of hits required in FD slices.
float fFDClosestSliceTimeAfter
closest time distance allowed for next slice
float fFDDistAllTop
minimum distance to the top wall
float fVeryFarBoundary
distance at which we are very far from the top of detector
float fFDMinProngLength
minimum length of longest prong
float fMinCVNVal
min cvn value optimised on S/sqrt(B)
float fFDDistAllWest
minimum distance to the west wall
float fFDMinSliceHits
minimum number of hits required in FD slices.
float fFDClosestSliceHighCVNTopDist
minimum distance from top for closest slice ( CVN > 0.87 )
float fFDMaxProngLength
maximum length of longest prong
float fFDDistAllFront
minimum distance to the front wall
float fFDMaxSparsenessAsymm
maximum asymmetry in the zero-hit planes at the start and end of the shower
float fMaxTransverseMomentumFar
maximum transverse momentum when away from top of detector
bool PassesPreselection(skim::ParametersNue const &params)
float fFDClosestSliceMinDist
minimum distance for closest slice
float fFDDistAllBottom
minimum distance to the bottom wall
float fFDClosestSliceLowCVNTopDist
minimum distance from top for closest slice ( 0.75 < CVN < 0.87 )
float fFDDistAllBack
minimum distance to the back wall
float fFDClosestSliceCVNBoundary
CVN boundary for closest slice check.
float fFDMaxDistAllBack
maximum distance to the back wall
float fFDDistAllEast
minimum distance to the east wall
float fMaxTransverseMomentumClose
maximum transverse momentum when close to top of detector
bool skim::SelectionNue2018RHC::KeepNueNearDetectorSlice ( skim::ParametersNue const &  params)
private

Definition at line 313 of file SelectionNue2018RHC.cxx.

References std::abs(), fNDMaxProngLength, fNDMaxShowerW, fNDMaxShowerZ, fNDMaxSliceHits, fNDMaxVertexX, fNDMaxVertexY, fNDMaxVertexZ, fNDMinPlanesToFront, fNDMinProngLength, fNDMinShowerZ, fNDMinSliceHits, fNDMinVertexX, fNDMinVertexY, fNDMinVertexZ, LOG_DEBUG, std::max(), PassesPreselection(), skim::ParametersNue::PlanesToFront(), skim::ParametersNue::ProngLength(), skim::ParametersNue::ShowerMaxEndZ(), skim::ParametersNue::ShowerMaxVtxZ(), skim::ParametersNue::ShowerMaxX(), skim::ParametersNue::ShowerMaxY(), skim::ParametersNue::ShowerMinEndZ(), skim::ParametersNue::ShowerMinVtxZ(), skim::ParametersNue::ShowerMinX(), skim::ParametersNue::ShowerMinY(), skim::ParametersNue::SliceHits(), and skim::ParametersNue::Vertex().

Referenced by PassesSelection().

314 {
315 
316  if(!this->PassesPreselection(params)) return false;
317 
318  // cuts based on slice info
319  if(params.PlanesToFront() < fNDMinPlanesToFront ||
320  params.SliceHits() < fNDMinSliceHits ||
321  params.SliceHits() > fNDMaxSliceHits
322  // params.NueEnergy() > fNDMaxNueEnergy ||
323  // params.NueEnergy() < fNDMinNueEnergy
324  ){
325  LOG_DEBUG("SelectionNue2018RHC")
326  << "failed Cells/Calorimetry"
327  << "\nPlanesToFront: " << params.PlanesToFront() << " " << fNDMinPlanesToFront
328  << "\nSliceHits: " << params.SliceHits() << " " << fNDMinSliceHits
329  << "\nSliceHits: " << params.SliceHits() << " " << fNDMaxSliceHits;
330 
331  return false;
332  }
333 
334 
335  // cuts based on the showers - we already checked the number of showers
336  // in the KeepSlice method, so don't bother doing it again
337  if(params.ProngLength() < fNDMinProngLength ||
338  params.ProngLength() > fNDMaxProngLength ){
339  LOG_DEBUG("SelectionNue2018RHC")
340  << "failed shower length cuts"
341  << "\nProngLength: " << params.ProngLength() << " " << fNDMaxProngLength
342  << "\nProngLength: " << params.ProngLength() << " " << fNDMinProngLength;
343 
344  return false;
345  }
346 
347 
348  float maxW = std::max(std::max(std::abs(params.ShowerMaxX()), std::abs(params.ShowerMinX())),
349  std::max(std::abs(params.ShowerMaxY()), std::abs(params.ShowerMinY())));
350 
351 
352  // check the containment
353  if(params.Vertex().X() < fNDMinVertexX ||
354  params.Vertex().X() > fNDMaxVertexX ||
355  params.Vertex().Y() < fNDMinVertexY ||
356  params.Vertex().Y() > fNDMaxVertexY ||
357  params.Vertex().Z() < fNDMinVertexZ ||
358  params.Vertex().Z() > fNDMaxVertexZ ||
359  maxW > fNDMaxShowerW ||
360  params.ShowerMinVtxZ() < fNDMinShowerZ ||
361  params.ShowerMinEndZ() < fNDMinShowerZ ||
362  params.ShowerMaxVtxZ() > fNDMaxShowerZ ||
363  params.ShowerMaxEndZ() > fNDMaxShowerZ){
364  LOG_DEBUG("SelectionNue2018RHC")
365  << "failed containment cuts"
366  << "\nVertexX: " << params.Vertex().X() << " " << fNDMinVertexX
367  << "\nVertexX: " << params.Vertex().X() << " " << fNDMaxVertexX
368  << "\nVertexY: " << params.Vertex().Y() << " " << fNDMinVertexY
369  << "\nVertexY: " << params.Vertex().Y() << " " << fNDMaxVertexY
370  << "\nVertexZ: " << params.Vertex().Z() << " " << fNDMinVertexZ
371  << "\nVertexZ: " << params.Vertex().Z() << " " << fNDMaxVertexZ
372  << "\nShowerMaxX: " << params.ShowerMaxX() << " " << fNDMaxShowerW
373  << "\nShowerMaxY: " << params.ShowerMaxY() << " " << fNDMaxShowerW
374  << "\nmaxW: " << maxW << " " << fNDMaxShowerW
375  << "\nShowerMinVtxZ: " << params.ShowerMinVtxZ() << " " << fNDMinShowerZ
376  << "\nShowerMinEndZ: " << params.ShowerMinEndZ() << " " << fNDMinShowerZ
377  << "\nShowerMaxVtxZ: " << params.ShowerMaxVtxZ() << " " << fNDMaxShowerZ
378  << "\nShowerMaxEndZ: " << params.ShowerMaxEndZ() << " " << fNDMaxShowerZ;
379 
380  return false;
381  }
382 
383 
384  return true;
385 }
T max(const caf::Proxy< T > &a, T b)
#define LOG_DEBUG(stream)
Definition: Messenger.h:149
float abs(float number)
Definition: d0nt_math.hpp:39
bool PassesPreselection(skim::ParametersNue const &params)
SelectionNue2018RHC& skim::SelectionNue2018RHC::operator= ( SelectionNue2018RHC const &  )
delete
SelectionNue2018RHC& skim::SelectionNue2018RHC::operator= ( SelectionNue2018RHC &&  )
delete
bool skim::SelectionNue2018RHC::PassesPreselection ( skim::ParametersNue const &  params)
private

Definition at line 174 of file SelectionNue2018RHC.cxx.

References skim::ParametersNue::CellsPerPlane(), fSliceHitsPerPlane, and LOG_DEBUG.

Referenced by KeepNueFarDetectorSlice(), and KeepNueNearDetectorSlice().

175 {
176 
177  if(params.CellsPerPlane() >= fSliceHitsPerPlane ){
178  LOG_DEBUG("SelectionNue2018RHC")
179  << "failed preselection cuts"
180  << "\nCellsPerPlane: " << params.CellsPerPlane() << " " << fSliceHitsPerPlane;
181  return false;
182  }
183 
184  return true;
185 }
#define LOG_DEBUG(stream)
Definition: Messenger.h:149
float fSliceHitsPerPlane
maximum number of hits per plane in a slice
bool skim::SelectionNue2018RHC::PassesSelection ( skim::Parameters pars,
novadaq::cnv::DetId const &  detId 
)
virtual

Implements skim::SelectionBase.

Definition at line 141 of file SelectionNue2018RHC.cxx.

References CheckSlicePID(), KeepNueFarDetectorSlice(), KeepNueNearDetectorSlice(), novadaq::cnv::kFARDET, and novadaq::cnv::kNEARDET.

143 {
144  skim::ParametersNue *params = dynamic_cast<skim::ParametersNue*>(pars);
145 
146  // check the PID values
147  if( !this->CheckSlicePID(*params) ) return false;
148 
149  // if the nue criteria are satified, keep the slice
150  if (detId == novadaq::cnv::kFARDET) return this->KeepNueFarDetectorSlice (*params);
151  else if(detId == novadaq::cnv::kNEARDET) return this->KeepNueNearDetectorSlice(*params);
152 
153  return false;
154 
155 }
Far Detector at Ash River, MN.
bool KeepNueNearDetectorSlice(skim::ParametersNue const &params)
Near Detector in the NuMI cavern.
bool CheckSlicePID(skim::ParametersNue const &params)
bool KeepNueFarDetectorSlice(skim::ParametersNue const &params)
void skim::SelectionNue2018RHC::reconfigure ( fhicl::ParameterSet const &  p)
virtual

Implements skim::SelectionBase.

Definition at line 17 of file SelectionNue2018RHC.cxx.

References fFarCloseBoundary, fFDClosestSliceCVNBoundary, fFDClosestSliceHighCVNTopDist, fFDClosestSliceLowCVNTopDist, fFDClosestSliceMinDist, fFDClosestSliceTimeAfter, fFDClosestSliceTimeBefore, fFDDistAllBack, fFDDistAllBottom, fFDDistAllEast, fFDDistAllFront, fFDDistAllTop, fFDDistAllWest, fFDMaxDistAllBack, fFDMaxNueEnergy, fFDMaxProngLength, fFDMaxSliceHits, fFDMaxSparsenessAsymm, fFDMinNueEnergy, fFDMinProngLength, fFDMinSliceHits, fMaxTransverseMomentumClose, fMaxTransverseMomentumFar, fMinCVNVal, fNDMaxNueEnergy, fNDMaxProngLength, fNDMaxShowerW, fNDMaxShowerZ, fNDMaxSliceHits, fNDMaxVertexX, fNDMaxVertexY, fNDMaxVertexZ, fNDMinNueEnergy, fNDMinPlanesToFront, fNDMinProngLength, fNDMinShowerZ, fNDMinSliceHits, fNDMinVertexX, fNDMinVertexY, fNDMinVertexZ, fSliceHitsPerPlane, fVeryFarBoundary, and fhicl::ParameterSet::get().

18 {
19 
20 
21  /*******
22  ///////////////////////// FD ///////////////////////////////////////////////////////////////
23 
24  const Cut kNue2018FD = kNue2018CorePresel && kNue2018CVNCut && kNearestSliceCosRej2018;
25 
26  const Cut kNue2018CorePresel = kNue2017BasicPart && kNue2018CorePart;
27 
28  const Cut kNue2018CorePart =
29  kNue2018Presel && //<<<<< Changes the Energy variable Cut,
30  // presently not used in the skimmer. All the rest is the same.
31  kNue2017ProngContainment &&
32  kNue2017PtPCutCVN &&
33  kNue2017BackwardCut;
34 
35  const Cut kNue2018RHCCVNCut = kCVNSSe >= kNue2018CVNRHCLowEdge; --> 0.89
36  const Var kCVNSSe([](const caf::SRProxy* sr){return sr->sel.cvnProd3Train.nueid;});
37 
38  const Cut kNearestSliceCosRej2018([](const caf::SRProxy* sr) { ///<<< different cvn variable. Missing : kNue2017CorePresel(sr) && sr->sel.cvn.nueid > 0.75 , which are redundant anyway.
39  /// depends on FHC vs RHC
40  const double topcut = (kCVNSSe(sr) >= hibin) ? 50 : 400; // highbin = 0.98 for RHC
41  return (fabs(sr->slc.closestslicetime) >= 100 ||
42  sr->slc.closestsliceminfromtop >= topcut ||
43  sr->slc.closestslicemindist >= 500);
44 
45  ////////////////// //////////////// ND ///////////////////////////////////////////////////////////////
46 
47 
48  const Cut kNue2018NDCVNSsb = kNue2018NDPresel && kNue2018CVNCut;
49 
50  const Cut kNue2018NDEnergy = kNueEnergy2018 < 4.5; // Not presently used in Skimmer
51 
52  const Cut kNue2018NDPresel = kNueDQ2017CVN && <<<<<<<< const Cut kNue2017NDPresel = kNueDQ2017CVN &&
53  kNue2017NDFiducial && kNue2017NDFiducial &&
54  kNue2017NDContain && kNue2017NDContain &&
55  kNue2017NDFrontPlanes && kNue2017NDFrontPlanes &&
56  kNue2017NDNHits && kNue2017NDNHits &&
57  kNue2018NDEnergy && <<<<<<<< kNue2017NDEnergy &&
58  kNue2017NDProngLength; kNue2017NDProngLength;
59 
60 
61 
62 
63  *******/
64 
65  // Pt/P kNue2017PtPCutCVN
66  fFarCloseBoundary = p.get<float>("FarCloseBoundary", 590. ); // ok
67  fVeryFarBoundary = p.get<float>("VeryFarBoundary", 350. ); // ok
68  fMaxTransverseMomentumClose = p.get<float>("MaxTransverseMomentumClose", 0.58 ); // ok
69  fMaxTransverseMomentumFar = p.get<float>("MaxTransverseMomentumFar", 0.80 ); // ok
70 
71  // kNueDQ2017CVN
72  fSliceHitsPerPlane = p.get<float>("SliceHitsPerPlane", 8. ); //
73 
74  // kNue2017CVNCut
75  fMinCVNVal = p.get<float>("MinCVNVal", 0.89 ); // ok
76 
77  // FD specific Cuts
78  //Preselection (kNue2017Presel)
79  fFDMinSliceHits = p.get<float>("FDMinSliceHits", 31. ); // ok
80  fFDMaxSliceHits = p.get<float>("FDMaxSliceHits", 149. ); // ok
81  fFDMaxProngLength = p.get<float>("FDMaxProngLength", 500. ); // ok
82  fFDMinProngLength = p.get<float>("FDMinProngLength", 100. ); // ok
83  //------------> Energy Cut Not Applied
84  fFDMaxNueEnergy = p.get<float>("FDMaxNueEnergy", 3. ); //
85  fFDMinNueEnergy = p.get<float>("FDMinNueEnergy", 1. ); //
86  //<------------
87 
88  // Containment kNue2017ProngContainment
89  fFDDistAllEast = p.get<float>("FDDistAllEast", 12. ); // ok
90  fFDDistAllWest = p.get<float>("FDDistAllWest", 12. ); // ok
91  fFDDistAllTop = p.get<float>("FDDistAllTop", 63. ); // ok
92  fFDDistAllBottom = p.get<float>("FDDistAllBottom", 12. ); // ok
93  fFDDistAllFront = p.get<float>("FDDistAllFront", 18. ); // ok
94  fFDDistAllBack = p.get<float>("FDDistAllBack", 18. ); // ok
95 
96  //kNearestSlice ...
97  fFDClosestSliceTimeBefore = p.get<float>("FDClosestSliceTimeBefore", -100); // ok
98  fFDClosestSliceTimeAfter = p.get<float>("FDClosestSliceTimeAfter", 100); // ok
99  fFDClosestSliceHighCVNTopDist = p.get<float>("FDClosestSliceHighCVNTopDist", 50); // ok
100  fFDClosestSliceLowCVNTopDist = p.get<float>("FDClosestSliceLowCVNTopDist", 400); // ok
101  fFDClosestSliceMinDist = p.get<float>("FDClosestSliceMinDist", 500); // ok
102  fFDClosestSliceCVNBoundary = p.get<float>("FDClosestSliceCVNBoundary", 0.98); // ok
103 
104 
105  // Backward Photon kNue2017BackwardCut
106  fFDMaxDistAllBack = p.get<float>("FDMaxDistAllBack", 200. ); // ok
107  fFDMaxSparsenessAsymm = p.get<float>("FDMaxSparsenessAsymm", -0.1 ); // ok
108 
109  // ND specific -------------------------------------------------------
110  // kNue2017NDFiducial
111  fNDMaxVertexX = p.get<float>("NDMaxVertexX", 160. ); // ok
112  fNDMinVertexX = p.get<float>("NDMinVertexX", -100. ); // ok
113  fNDMaxVertexY = p.get<float>("NDMaxVertexY", 100. ); // ok
114  fNDMinVertexY = p.get<float>("NDMinVertexY", -160. ); // ok
115  fNDMaxVertexZ = p.get<float>("NDMaxVertexZ", 900. ); // ok
116  fNDMinVertexZ = p.get<float>("NDMinVertexZ", 150. ); // ok
117 
118  // kNue2017NDContain - Containment selections
119  fNDMaxShowerW = p.get<float>("NDMaxShowerW", 170. ); // ok
120  fNDMinShowerZ = p.get<float>("NDMinShowerZ", 100. ); // ok
121  fNDMaxShowerZ = p.get<float>("NDMaxShowerZ", 1225.); // ok
122 
123  // kNue2017NDNHits
124  fNDMinSliceHits = p.get<float>("NDMinSliceHits", 20. ); // ok
125  fNDMaxSliceHits = p.get<float>("NDMaxSliceHits", 200. ); // ok
126 
127  fNDMaxNueEnergy = p.get<float>("NDMaxNueEnergy", 5. ); // Not Used
128  fNDMinNueEnergy = p.get<float>("fNDMinNueEnergy", 0. ); // Not Used
129 
130  // kNue2017NDProngLength
131  fNDMaxProngLength = p.get<float>("NDMaxProngLength", 500. );
132  fNDMinProngLength = p.get<float>("NDMinProngLength", 100. );
133 
134  // kNue2017NDFrontPlanes
135  fNDMinPlanesToFront = p.get<unsigned int>("NDMinPlanesToFront", 7 ); // ok
136 
137  return;
138 }
float fSliceHitsPerPlane
maximum number of hits per plane in a slice
float fFarCloseBoundary
distance at which we are no longer close to top of detector
float fFDClosestSliceTimeBefore
closest time distance allowed for previous slice
const char * p
Definition: xmltok.h:285
float fFDMaxSliceHits
maximum number of hits required in FD slices.
float fFDMinNueEnergy
min NueEnergy at FD
float fFDClosestSliceTimeAfter
closest time distance allowed for next slice
float fFDDistAllTop
minimum distance to the top wall
float fFDMinProngLength
minimum length of longest prong
float fVeryFarBoundary
distance at which we are very far from the top of detector
float fMinCVNVal
min cvn value optimised on S/sqrt(B)
float fFDDistAllWest
minimum distance to the west wall
float fFDMinSliceHits
minimum number of hits required in FD slices.
float fFDClosestSliceHighCVNTopDist
minimum distance from top for closest slice ( CVN > 0.87 )
float fFDMaxProngLength
maximum length of longest prong
float fFDDistAllFront
minimum distance to the front wall
float fFDMaxSparsenessAsymm
maximum asymmetry in the zero-hit planes at the start and end of the shower
float fMaxTransverseMomentumFar
maximum transverse momentum when away from top of detector
float fFDMaxNueEnergy
max NueEnergy at FD
float fFDClosestSliceMinDist
minimum distance for closest slice
float fFDDistAllBottom
minimum distance to the bottom wall
float fFDClosestSliceLowCVNTopDist
minimum distance from top for closest slice ( 0.75 < CVN < 0.87 )
float fFDDistAllBack
minimum distance to the back wall
float fFDClosestSliceCVNBoundary
CVN boundary for closest slice check.
float fFDMaxDistAllBack
maximum distance to the back wall
float fFDDistAllEast
minimum distance to the east wall
float fMaxTransverseMomentumClose
maximum transverse momentum when close to top of detector

Member Data Documentation

float skim::SelectionNue2018RHC::fFarCloseBoundary
private

distance at which we are no longer close to top of detector

Definition at line 69 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDClosestSliceCVNBoundary
private

CVN boundary for closest slice check.

Definition at line 90 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDClosestSliceHighCVNTopDist
private

minimum distance from top for closest slice ( CVN > 0.87 )

Definition at line 87 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDClosestSliceLowCVNTopDist
private

minimum distance from top for closest slice ( 0.75 < CVN < 0.87 )

Definition at line 88 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDClosestSliceMinDist
private

minimum distance for closest slice

Definition at line 89 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDClosestSliceTimeAfter
private

closest time distance allowed for next slice

Definition at line 86 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDClosestSliceTimeBefore
private

closest time distance allowed for previous slice

Definition at line 85 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDDistAllBack
private

minimum distance to the back wall

Definition at line 66 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDDistAllBottom
private

minimum distance to the bottom wall

Definition at line 62 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDDistAllEast
private

minimum distance to the east wall

Definition at line 64 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDDistAllFront
private

minimum distance to the front wall

Definition at line 65 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDDistAllTop
private

minimum distance to the top wall

Definition at line 61 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDDistAllWest
private

minimum distance to the west wall

Definition at line 63 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDMaxDistAllBack
private

maximum distance to the back wall

Definition at line 68 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDMaxNueEnergy
private

max NueEnergy at FD

Definition at line 78 of file SelectionNue2018RHC.h.

Referenced by reconfigure().

float skim::SelectionNue2018RHC::fFDMaxProngLength
private

maximum length of longest prong

Definition at line 83 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDMaxSliceHits
private

maximum number of hits required in FD slices.

Definition at line 75 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDMaxSparsenessAsymm
private

maximum asymmetry in the zero-hit planes at the start and end of the shower

Definition at line 67 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDMinNueEnergy
private

min NueEnergy at FD

Definition at line 79 of file SelectionNue2018RHC.h.

Referenced by reconfigure().

float skim::SelectionNue2018RHC::fFDMinProngLength
private

minimum length of longest prong

Definition at line 84 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fFDMinSliceHits
private

minimum number of hits required in FD slices.

Definition at line 74 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fMaxTransverseMomentumClose
private

maximum transverse momentum when close to top of detector

Definition at line 71 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fMaxTransverseMomentumFar
private

maximum transverse momentum when away from top of detector

Definition at line 72 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fMinCVNVal
private

min cvn value optimised on S/sqrt(B)

Definition at line 82 of file SelectionNue2018RHC.h.

Referenced by CheckSlicePID(), KeepNueFarDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMaxNueEnergy
private

Definition at line 105 of file SelectionNue2018RHC.h.

Referenced by reconfigure().

float skim::SelectionNue2018RHC::fNDMaxProngLength
private

Definition at line 107 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMaxShowerW
private

Definition at line 99 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMaxShowerZ
private

Definition at line 101 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMaxSliceHits
private

Definition at line 103 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMaxVertexX
private

Definition at line 93 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMaxVertexY
private

Definition at line 95 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMaxVertexZ
private

Definition at line 97 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMinNueEnergy
private

Definition at line 106 of file SelectionNue2018RHC.h.

Referenced by reconfigure().

unsigned int skim::SelectionNue2018RHC::fNDMinPlanesToFront
private

Definition at line 109 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMinProngLength
private

Definition at line 108 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMinShowerZ
private

Definition at line 100 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMinSliceHits
private

Definition at line 102 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMinVertexX
private

Definition at line 94 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMinVertexY
private

Definition at line 96 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fNDMinVertexZ
private

Definition at line 98 of file SelectionNue2018RHC.h.

Referenced by KeepNueNearDetectorSlice(), and reconfigure().

float skim::SelectionNue2018RHC::fSliceHitsPerPlane
private

maximum number of hits per plane in a slice

Definition at line 73 of file SelectionNue2018RHC.h.

Referenced by PassesPreselection(), and reconfigure().

float skim::SelectionNue2018RHC::fVeryFarBoundary
private

distance at which we are very far from the top of detector

Definition at line 70 of file SelectionNue2018RHC.h.

Referenced by KeepNueFarDetectorSlice(), and reconfigure().


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