5 #include "CAFAna/Core/Var.h"
Cuts and Vars for the 2020 FD DiF Study.
const NuTruthVar kHitNuc_NT([](const caf::SRNeutrinoProxy *sr){return int(sr->hitnuc);})
identity of struck nucleon, or in case of MEC, NN pair
const NuTruthVar kTrueQ0_NT([](const caf::SRNeutrinoProxy *nu){return nu->y *nu->E;})
True energy transfer (q0 = 0th component of four-momentum transfer)
const NuTruthVar kTruePartonZ_NT([](const caf::SRNeutrinoProxy *nu){double totalE=0;double leadingHadE=0;for(const auto &part:nu->prim){if(abs(part.pdg)< 100||abs(part.pdg) > 1000000) continue;auto hadE=(part.pdg==2212||part.pdg==2112)?((part.p.Gamma()-1)*part.p.E):static_cast< float >(part.p.E);if(hadE > leadingHadE) leadingHadE=hadE;totalE+=hadE;}if(totalE<=0) return-1.;return leadingHadE/totalE;})
True PDG code.
const NuTruthVar kTrueQ3_NT([](const caf::SRNeutrinoProxy *nu){return sqrt(nu->q2+util::sqr(kTrueQ0_NT(nu)));})
True magnitude of three-momentum transfer.
const NuTruthVar kTruePDG_NT([](const caf::SRNeutrinoProxy *nu){return nu->pdg;})
True PDG code.
const NuTruthVar kTrueW_NT([](const caf::SRNeutrinoProxy *nu){if(std::isnan(1.*nu->W2)) return-5.f;return float(sqrt(nu->W2));})
const NuTruthVar kWOscDumb_NT([](const caf::SRNeutrinoProxy *nu){return nu->woscdumb;})
const Var kWOscDumb([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return 0.f;return float(sr->mc.nu[0].woscdumb);})
Var VarFromNuTruthVar(const NuTruthVar &stv, double _default)
const Var kDytmanMEC_Disable
const NuTruthVar kTrueEavail_NT([](const caf::SRNeutrinoProxy *nu){double eAvail=0;for(const auto &particle:nu->prim){double particle_Eavail=0;if(particle.pdg==2212||abs(particle.pdg)==211){double gamma=particle.p.Gamma();particle_Eavail=(gamma-1)/gamma *particle.p.E;}else if(particle.pdg==111 or abs(particle.pdg)==11 or particle.pdg==22) particle_Eavail=particle.p.E;else if(particle.pdg >=2000000000){}else if(particle.pdg >=1000000000){}else if(particle.pdg >=2000 &&particle.pdg!=2212 &&particle.pdg!=2112){particle_Eavail=particle.p.E-0.9382;}else if(particle.pdg<=-2000){particle_Eavail=particle.p.E+0.9382;}else if(particle.pdg!=2112 &&(abs(particle.pdg)< 11||abs(particle.pdg) > 16)){particle_Eavail=particle.p.E;}eAvail+=particle_Eavail;}return eAvail;})
MINERvA "true Eavail" (used in 2p2h xsec)
const NuTruthVar kTrueQ2_NT([](const caf::SRNeutrinoProxy *nu){return nu->q2;})
True square of four-momentum transfer.
const NuTruthVar kDytmanMEC_DisableST([](const caf::SRNeutrinoProxy *nu){if(nu->mode!=caf::kMEC) return 1.;return 0.;})
weight all 'MEC' events to 0. leave everything else alone.