83 double pars[4][6] = { {1.049, 0.795, 0.8409, 0.17, 0.82, -1.00},
84 {1.025, 0.797, 0.9162, 0.53, -0.26, -1.48},
85 {1.000, 1.000, 1.0000, 0.00, 0.00, 0.00},
86 {1.000, 1.000, 1.0000, 0.00, 0.00, 0.00} };
111 float mindist = 10000.;
118 return (mindist > 9999. ? (
float)-5. : mindist);
caf::Proxy< caf::SRSpill > spill
Near Detector underground.
int isinf(const stan::math::var &a)
const double FDscaleCalE18
const Var kPartPtp([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.partptp)|| std::isinf(1.*sr->sel.nuecosrej.partptp)) return-5.f;return float(sr->sel.nuecosrej.partptp);})
caf::Proxy< caf::SRFuzzyK > fuzzyk
Far Detector at Ash River.
const NuTruthVar kNus18BeamWeightP_NT([](const caf::SRNeutrinoProxy *nu){if(abs(nu->beam.ptype)==321||nu->beam.ptype==310||nu->beam.ptype==311||nu->beam.ptype==130) return 1.3;return 1.;})
Cuts and Vars for the 2020 FD DiF Study.
const Var kNus18Energy([](const caf::SRProxy *sr){bool h_FHC=sr->spill.isFHC;bool h_RHC=sr->spill.isRHC;double cale=sr->slc.calE;double recoE=0.;if(h_FHC &&sr->hdr.det==caf::kFARDET) recoE=FDscaleCalE18 *cale;else if(h_FHC &&sr->hdr.det==caf::kNEARDET) recoE=NDscaleCalE18 *cale;else if(h_RHC &&sr->hdr.det==caf::kFARDET) recoE=FDscaleCalE18RHC *cale;else if(h_RHC &&sr->hdr.det==caf::kNEARDET) recoE=NDscaleCalE18RHC *cale;return recoE;})
caf::Proxy< float > stoptop
caf::Proxy< float > stopfront
const Var kDistTop([](const caf::SRProxy *sr){return std::min(sr->sel.nuecosrej.starttop, sr->sel.nuecosrej.stoptop);})
Proxy for caf::SRNeutrino.
const Var kShwNHitXOverY([](const caf::SRProxy *sr){double hitRatio=(double) sr->vtx.elastic.fuzzyk.png[0].shwlid.nhitx/(double) sr->vtx.elastic.fuzzyk.png[0].shwlid.nhity;return hitRatio;})
caf::Proxy< caf::SRHeader > hdr
Proxy for caf::StandardRecord.
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));})
caf::Proxy< float > startbottom
const Var kMinDistFace([](const caf::SRProxy *sr){const caf::SRNueCosRejProxy &cr=sr->sel.nuecosrej;float mindist=10000.;mindist=std::min(mindist, std::min(cr.starteast, cr.stopeast));mindist=std::min(mindist, std::min(cr.startwest, cr.stopwest));mindist=std::min(mindist, std::min(cr.starttop, cr.stoptop));mindist=std::min(mindist, std::min(cr.startbottom, cr.stopbottom));mindist=std::min(mindist, std::min(cr.startfront, cr.stopfront));mindist=std::min(mindist, std::min(cr.startback, cr.stopback));return(mindist > 9999.?(float)-5.:mindist);})
caf::Proxy< float > starttop
caf::Proxy< float > stopback
_Var< caf::SRProxy > Var
Representation of a variable to be retrieved from a caf::StandardRecord object.
int isnan(const stan::math::var &a)
const Var kNus17Energy([](const caf::SRProxy *sr){double cale=sr->slc.calE;double recoE=0.;if(sr->hdr.det==caf::kFARDET) recoE=FDscaleCalE17 *cale;if(sr->hdr.det==caf::kNEARDET) recoE=NDscaleCalE17 *cale;return recoE;})
caf::Proxy< float > closestslicetime
caf::Proxy< caf::SRElastic > elastic
caf::Proxy< float > startback
caf::Proxy< caf::SRNueCosRej > nuecosrej
const NuTruthVar kFDTauWgtM_NT([](const caf::SRNeutrinoProxy *nu){if(abs(nu->pdg)==16 &&nu->iscc) return 0.4;return 1.;})
caf::Proxy< std::vector< caf::SRFuzzyKProng > > png
const NuTruthVar kNus18BeamWeightM_NT([](const caf::SRNeutrinoProxy *nu){if(abs(nu->beam.ptype)==321||nu->beam.ptype==310||nu->beam.ptype==311||nu->beam.ptype==130) return 0.7;return 1.;})
caf::Proxy< float > stopeast
caf::Proxy< float > stopbottom
caf::Proxy< float > startfront
fvar< T > exp(const fvar< T > &x)
_Var< caf::SRNeutrinoProxy > NuTruthVar
Var designed to be used over the nuTree, ie all neutrinos, not just those that got slices...
caf::Proxy< float > partptp
caf::Proxy< float > stopwest
caf::Proxy< float > closestsliceminfromtop
caf::Proxy< caf::SRBeam > beam
const NuTruthVar kFDTauWgtP_NT([](const caf::SRNeutrinoProxy *nu){if(abs(nu->pdg)==16 &&nu->iscc) return 1.6;return 1.;})
const Var kClosestSlcMinTop([](const caf::SRProxy *sr){return(float) sr->slc.closestsliceminfromtop;})
const Var kHADE_2020([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return-1.0;if(sr->vtx.elastic.fuzzyk.npng< 1) return-1.0;const double CVNha_CalE=sr->slc.calE;return std::max(CVNha_CalE-kEME_2020(sr), 0.);})
caf::Proxy< float > starteast
const double NDscaleCalE17
const Var kCVNnc_oldpresel
const Var kClosestSlcMinDist([](const caf::SRProxy *sr){return(float) sr->slc.closestslicemindist;})
const Var kShwNHitXPlusY([](const caf::SRProxy *sr){double nHits=sr->vtx.elastic.fuzzyk.png[0].shwlid.nhitx+sr->vtx.elastic.fuzzyk.png[0].shwlid.nhity;return nHits;})
const Var kCVNnc_looseptp
caf::Proxy< caf::SRSlice > slc
caf::Proxy< float > closestslicemindist
Proxy for caf::SRNueCosRej.
#define SIMPLEVAR(CAFNAME)
For Vars where literally all you need is a single CAF variable.
const Var kShwNHitXMinY([](const caf::SRProxy *sr){double nHits=sr->vtx.elastic.fuzzyk.png[0].shwlid.nhitx-sr->vtx.elastic.fuzzyk.png[0].shwlid.nhity;return nHits;})
caf::Proxy< short int > pdg
caf::Proxy< caf::SRIDBranch > sel
T min(const caf::Proxy< T > &a, T b)
const double FDscaleCalE17
caf::Proxy< caf::SRVertexBranch > vtx
caf::Proxy< float > startwest
const double NDscaleCalE18RHC
const Var kNCCosRej
NC Cosmic Rejection (G)BDT variables.
const Var kClosestSlcTime([](const caf::SRProxy *sr){return(float) sr->slc.closestslicetime;})
const double NDscaleCalE18
const Var kEME_2020([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return-1.0;if(sr->vtx.elastic.fuzzyk.npng< 1) return-1.0;double CVNem_CalE=0.0;const caf::SRFuzzyKProngProxy &prim_png=sr->vtx.elastic.fuzzyk.png[0];for(const caf::SRFuzzyKProngProxy &png:sr->vtx.elastic.fuzzyk.png){double png_CalE=png.shwlid.calE;double emPID=((double) png.cvnpart.photonid+ (double) png.cvnpart.pizeroid+ (double) png.cvnpart.electronid);double haPID=((double) png.cvnpart.protonid+ (double) png.cvnpart.pionid+ (double) png.cvnpart.neutronid+ (double) png.cvnpart.otherid+ (double) png.cvnpart.muonid);if(emPID< 0) continue;if(emPID >=haPID ) CVNem_CalE+=png_CalE;else continue;}if(kLongestProng(sr) >=500) CVNem_CalE=prim_png.shwlid.calE;return CVNem_CalE;})
const double FDscaleCalE18RHC