7 #include "CAFAna/Core/Cut.h" 42 kNus20NFuzzyProngCut &&
82 kNus20NDDistAllBottomCut &&
83 kNus20NDDistAllEastCut &&
84 kNus20NDDistAllWestCut &&
85 kNus20NDDistAllFrontCut &&
104 kNus20NDFiducialCuts &&
105 kNus20NDSelectionCuts &&
113 kNus20NDTrueVtxOutOfDetY ||
122 kNus20NDTrueContainedY &&
154 kNus20FDDistAllBottomCut &&
155 kNus20FDDistAllEastCut &&
156 kNus20FDDistAllWestCut &&
157 kNus20FDDistAllFrontCut &&
176 kNus20FDMinSliceDistCut &&
177 kNus20FDSelectionCuts &&
178 kNus20FDCosRejCuts &&
187 kNus20FDTrueVtxOutOfDetY ||
Cuts and Vars for the 2020 FD DiF Study.
const Cut kNus20FDTrueVtxOutOfDet
const Var kDistAllBottom([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngbottom)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngbottom);})
Distance of all showers in slice from the bottom edge of detector.
const Cut kNus20NDPreSelection
const Cut kNus20NDTrueVtxOutOfDetX
const Var kDistAllWest([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngwest)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngwest);})
Distance of all showers in slice from the west edge of detector.
const Cut kNus20NDTrueContainedX
const Cut kNus20FHCDecafCut([](const caf::SRProxy *sr){if(sr->sel.cvnloosepreselptp.ncid<=.1) return false;return true;})
const Var kDistAllTop([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngtop)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngtop);})
Distance of all showers in slice from the top edge of detector.
const Cut kNus20FDDistAllBottomCut
const Var kDistAllBack([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngback)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngback);})
Distance of all showers in slice from the back edge of detector.
const Cut kNus20FDSelectionCuts
const Var kNus20Energy([](const caf::SRProxy *sr){if(sr->hdr.det!=caf::kNEARDET &&sr->hdr.det!=caf::kFARDET) return(double) sr->slc.calE;double pars[4][6]={{1.049, 0.795, 0.8409, 0.17, 0.82,-1.00},{1.025, 0.797, 0.9162, 0.53,-0.26,-1.48},{1.000, 1.000, 1.0000, 0.00, 0.00, 0.00},{1.000, 1.000, 1.0000, 0.00, 0.00, 0.00}};int detCur=(sr->hdr.det==caf::kFARDET)+((sr->spill.isRHC)<< 1);double e_EM=ana::kEME_2020(sr);double e_Had=ana::kHADE_2020(sr);double e_Cal=sr->slc.calE;return(e_EM/pars[detCur][0]+e_Had/pars[detCur][1])/(pars[detCur][2]+pars[detCur][3]*std::pow(e_Cal+pars[detCur][4], 2)*std::exp(pars[detCur][5]*e_Cal));})
const Cut kIsLeptonMissing([](const caf::SRProxy *sr){if(sr->mc.nnu > 0){if(sr->mc.nu[0].prim.size()==0){return false;}else if(abs(sr->mc.nu[0].pdg)==16 &&sr->mc.nu[0].iscc){ return true;}else if(abs(sr->mc.nu[0].prim[0].pdg)< 11 ||abs(sr->mc.nu[0].prim[0].pdg) > 16){ return false;}}return true;})
const Cut kNus20NDQualityAndFiducialCut
const Cut kNus20NDTrueVtxOutOfDetZ
const Cut kNusFDFidLoose([](const caf::SRProxy *sr){double buf=10.;if(!sr->vtx.elastic.IsValid) return false;const TVector3 vtx=sr->vtx.elastic.vtx;if(vtx.X()< (FDL+buf)) return false;if(vtx.X() >(FDR-buf)) return false;if(vtx.Y()< (FDB+buf)) return false;if(vtx.Y() >(FDT-buf)) return false;if(vtx.Z()< (FDF+buf)) return false;if(vtx.Z() >(FDE-buf)) return false;return true;})
const Cut kNus20FDDistAllTopCut
const Cut kNus20NDVtxXCut
const Cut kNus20FDDistAllFrontCut
const Cut kNus20NDTrueContainedZ
const Cut kNus20QualityCuts
const Cut kNus20NDTrueVtxOutOfDet
const Cut kNus20FDTrueVtxOutOfDetZ
const Var kDistAllEast([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngeast)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngeast);})
Distance of all showers in slice from the east edge of detector.
const Cut kNus20NDDistAllWestCut
const Cut kNus20NDDistAllBottomCut
const Cut kNusNDFidLoose([](const caf::SRProxy *sr){double buf=10.;if(!sr->vtx.elastic.IsValid) return false;const TVector3 vtx=sr->vtx.elastic.vtx;if(vtx.X()< (NDL+buf)) return false;if(vtx.X() >(NDR-buf)) return false;if(vtx.Y()< (NDB+buf)) return false;if(vtx.Y() >(NDT-buf)) return false;if(vtx.Z()< (NDF+buf)) return false;if(vtx.Z() >(NDE-buf)) return false;return true;})
const Cut kNus20NContPlanesCut
const Cut kNus20NDMinSliceDistCut
const Cut kNus20RHCDecafCut([](const caf::SRProxy *sr){if(sr->sel.cvnloosepreselptp.ncid<=.1) return false;return true;})
const Cut kNus20NDFiducialCuts
const Cut kNus20NDDistAllTopCut
const Cut kNus20EnergyCut
const Cut kNus20FDCosRejCuts
const Cut kNus20NDVtxZCut
const Cut kNus20FDPreSelection
const Cut kNus20FDTrueVtxOutOfDetX
const Cut kNus20NDDistAllFrontCut
const Cut kNus20FDQualityContainment
const Cut kNus20NDSelectionCuts
const Cut kNus20NDDistAllEastCut
const Cut kNus20NDTrueContainedY
const Cut kNus20FDDistAllWestCut
const Cut kNus20NDTrueVtxOutOfDetY
const Var kTrueVtxZ([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return-5.f;return float(sr->mc.nu[0].vtx.Z()/100.);})
const Var kCVNnc_looseptp
const Var kDistAllFront([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngfront)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngfront);})
Distance of all showers in slice from the front edge of detector.
const Cut kNus20NDTrueContained
const Cut kNus20NDDistAllBackCut
const Cut kNus20FDTrueVtxOutOfDetY
const Cut kNus20NDVtxPosCut
const Cut kNus20NDVtxYCut
const Var kNCCosRejBDTG20
const Cut kNus20FDDistAllEastCut
const Cut kNus20FDCuts_ML
const Cut kNus20ElasticProngCut
const Var kTrueVtxX([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return-5555.f;return float(sr->mc.nu[0].vtx.X()/100.);})
const Cut kNus20NFuzzyProngCut
const Cut kNus20FDDistAllBackCut
const Cut kNus20FDMinSliceDistCut
const Var kTrueVtxY([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return-5555.f;return float(sr->mc.nu[0].vtx.Y()/100.);})