40 const double core = .015;
41 const double peri = .012;
50 if(sr->
mc.
nnu == 0)
return;
51 if(
abs(sr->
mc.
nu[0].pdg) == 12 &&
abs(sr->
mc.
nu[0].pdgorig) == 14 && sr->
mc.
nu[0].iscc)
return;
53 if(
abs(sr->
mc.
nu[0].pdg) == 16 && sr->
mc.
nu[0].iscc)
return;
55 if(sigma == 0)
return;
57 double kFDBkgCorr = core;
63 weight *= 1+kFDBkgCorr*
sigma;
75 if(sr->
mc.
nnu == 0)
return;
78 abs(sr->
mc.
nu[0].pdgorig) != 14 ||
90 const std::string kWeightNameFHC =
"Cos_FD_KinematicsCorrection_FHC";
92 TFile weightsFileFHC (kWeightsFnameFHC.c_str(),
"read");
94 if(weightsFileFHC.IsZombie()){
99 fWeightHistFHC = (TH1*) weightsFileFHC.Get(kWeightNameFHC.c_str())->
Clone();
102 fWeightHistFHC -> SetDirectory(0);
104 weightsFileFHC.Close();
110 double kFDSignalWeight = 1;
112 if(fWeightHistFHC->GetBinContent(kAnaBin) != 0)
113 kFDSignalWeight = fWeightHistFHC->GetBinContent(kAnaBin);
115 weight *= 1+(kFDSignalWeight-1)*sigma;
128 if(sr->
mc.
nnu == 0)
return;
131 abs(sr->
mc.
nu[0].pdgorig) != 14 ||
146 kWeightsFnameFHC =
FindCAFAnaDir()+
"/data/3flavor/FD_KinematicsCorrection_FHC.root";
147 kWeightNameFHC =
"trueQ2_FD_KinematicsCorrection_FHC";
150 kWeightsFnameFHC =
FindCAFAnaDir()+
"/data/3flavor/FD_KinematicsCorrection_pTExtrap_FHC.root";
151 kWeightNameFHC =
"PtP_FD_KinematicsCorrection_FHC";
154 std::cerr <<
"Error: Only pT extrap or no extrap options are available for acceptance syst!" <<
std::endl;
158 TFile weightsFileFHC (kWeightsFnameFHC.c_str(),
"read");
160 if(weightsFileFHC.IsZombie()){
165 fWeightHistFHC = (TH1*) weightsFileFHC.Get(kWeightNameFHC.c_str())->
Clone();
168 fWeightHistFHC -> SetDirectory(0);
170 weightsFileFHC.Close();
176 double kFDSignalWeight = 1;
178 if(fWeightHistFHC->GetBinContent(kAnaBin) != 0)
179 kFDSignalWeight = fWeightHistFHC->GetBinContent(kAnaBin);
181 weight *= 1+(kFDSignalWeight-1)*sigma;
192 const double core = .041;
193 const double peri = .023;
202 if(sr->
mc.
nnu == 0)
return;
203 if(
abs(sr->
mc.
nu[0].pdg) == 12 &&
abs(sr->
mc.
nu[0].pdgorig) == 14 && sr->
mc.
nu[0].iscc)
return;
205 if(
abs(sr->
mc.
nu[0].pdg) == 16 && sr->
mc.
nu[0].iscc)
return;
207 if(sigma == 0)
return;
209 double kFDBkgCorr = core;
215 weight *= 1+kFDBkgCorr*
sigma;
227 if(sr->
mc.
nnu == 0)
return;
230 abs(sr->
mc.
nu[0].pdgorig) != 14 ||
242 const std::string kWeightNameRHC =
"trueQ2_FD_KinematicsCorrection_RHC";
244 TFile weightsFileRHC (kWeightsFnameRHC.c_str(),
"read");
246 if(weightsFileRHC.IsZombie()){
251 fWeightHistRHC = (TH1*) weightsFileRHC.Get(kWeightNameRHC.c_str())->
Clone();
254 fWeightHistRHC -> SetDirectory(0);
256 weightsFileRHC.Close();
262 double kFDSignalWeight = 1;
264 if(fWeightHistRHC->GetBinContent(kAnaBin) != 0)
265 kFDSignalWeight = fWeightHistRHC->GetBinContent(kAnaBin);
267 weight *= 1+(kFDSignalWeight-1)*sigma;
280 if(sr->
mc.
nnu == 0)
return;
283 abs(sr->
mc.
nu[0].pdgorig) != 14 ||
298 kWeightsFnameRHC =
FindCAFAnaDir()+
"/data/3flavor/FD_KinematicsCorrection_RHC.root";
299 kWeightNameRHC =
"PtP_FD_KinematicsCorrection_RHC";
302 kWeightsFnameRHC =
FindCAFAnaDir()+
"/data/3flavor/FD_KinematicsCorrection_pTExtrap_RHC.root";
303 kWeightNameRHC =
"Cos_FD_KinematicsCorrection_RHC";
306 std::cerr <<
"Error: Only pT extrap and no extrap options are available for acceptance syst!" <<
std::endl;
310 TFile weightsFileRHC (kWeightsFnameRHC.c_str(),
"read");
312 if(weightsFileRHC.IsZombie()){
317 fWeightHistRHC = (TH1*) weightsFileRHC.Get(kWeightNameRHC.c_str())->
Clone();
320 fWeightHistRHC -> SetDirectory(0);
322 weightsFileRHC.Close();
328 double kFDSignalWeight = 1;
330 if(fWeightHistRHC->GetBinContent(kAnaBin) != 0)
331 kFDSignalWeight = fWeightHistRHC->GetBinContent(kAnaBin);
333 weight *= 1+(kFDSignalWeight-1)*sigma;
Far Detector at Ash River.
Cuts and Vars for the 2020 FD DiF Study.
const NueAcceptSystSignalKin2018RHC kNueAcceptSystSignalKin2018RHC
caf::Proxy< caf::SRHeader > hdr
Proxy for caf::StandardRecord.
caf::Proxy< std::vector< caf::SRNeutrino > > nu
void Shift(double sigma, caf::SRProxy *sr, double &weight) const override
FHC implementation.
caf::Proxy< short int > nnu
void Shift(double sigma, caf::SRProxy *sr, double &weight) const override
RHC implementation.
void Shift(double sigma, caf::SRProxy *sr, double &weight) const override
Perform the systematic shift.
const NueAcceptSystSignalKin2020FHC kNueAcceptSystSignalKin2020FHC
std::string FindCAFAnaDir()
const Var kNue2018AnaBin([](const caf::SRProxy *sr){int selBin=kNue2018SelectionBin(sr);float nuE=kNueEnergy2018(sr);int nuEBin=nuE/0.5;assert(nuEBin<=8 &&"An event with nuE > 4.5 should never happen");int anaBin=9 *selBin+nuEBin;return anaBin;})
Use this Analysis Binning for Ana2018, official Binning.
void Shift(double sigma, caf::SRProxy *sr, double &weight) const override
Perform the systematic shift.
const NueAcceptSystBkg2018RHC kNueAcceptSystBkg2018RHC
RHC.
void Shift(double sigma, caf::SRProxy *sr, double &weight) const override
Perform the systematic shift.
const NueAcceptSystSignalKin2018FHC kNueAcceptSystSignalKin2018FHC
const NueAcceptSystSignalKin2020FHC kNueAcceptSystSignalKinPtExtrap2020FHC(ana::kExtrapPt,"accept_signalkin_pTextrap_FHC_2020")
const NueAcceptSystBkg2018FHC kNueAcceptSystBkg2018FHC
FHC.
const Cut kNue2018FDPeripheral(kNue2018FDPeripheralFunc)
caf::Proxy< caf::SRTruthBranch > mc
const Cut kIsRHC([](const caf::SRProxy *sr){return sr->spill.isRHC;})
const Var kNue2020AnaBin([](const caf::SRProxy *sr){int selBin=kNue2020SelectionBin(sr);float nuE=kNueEnergy2020(sr);int nuEBin=nuE/0.5;assert(nuEBin<=8 &&"An event with nuE > 4.5 should never happen");int anaBin=9 *selBin+nuEBin;return anaBin;})
Use this Analysis Binning for Ana2020, official Binning.
const Cut kNue2018FDAllSamples
const Cut kNue2020FDAllSamples
const NueAcceptSystSignalKin2020RHC kNueAcceptSystSignalKinPtExtrap2020RHC(ana::kExtrapPt,"accept_signalkin_pTextrap_RHC_2020")
void Shift(double sigma, caf::SRProxy *sr, double &weight) const override
Perform the systematic shift.
const NueAcceptSystSignalKin2020RHC kNueAcceptSystSignalKin2020RHC