51 const std::string fGENIE =
"dataset_def_name_newest_snapshot prod_caf_R17-03-01-prod3reco.d_nd_genie_nonswap_fhc_nova_v08_full_v1";
54 const std::string fFakeData =
"dataset_def_name_newest_snapshot prod_caf_R17-03-01-prod3reco.d_nd_genie_nonswap_fhc_nova_v08_full_v1 with stride 4 with offset 3";
128 Spectrum* SigWtdTrueKE_unf_RecopiKE =
133 Spectrum* SigWtdTrueKE_unf_RecopiCOS =
138 Spectrum* SigWtdTrueKE_unf_TruepiKE =
143 Spectrum* SigWtdTrueKE_unf_TruepiCOS =
153 std::vector<SystShifts> shiftsups;
154 std::vector<SystShifts> shiftsdowns;
156 std::vector<Spectrum*> spects_unf_RecopiKE;
157 std::vector<Spectrum*> spects_unf_TruepiKE;
158 std::vector<Spectrum*> spects_unf_RecopiCOS;
159 std::vector<Spectrum*> spects_unf_TruepiCOS;
162 for(
uint i = 0;
i < systs.size();
i++){
186 for(
uint i = 0;
i < systs.size();
i++){
213 std::string outname =
"UnfoldingSpectra_S17_11_16.root";
214 TFile *
outf =
new TFile(outname.c_str(),
"recreate");
217 response_unf_RecopiKE->
SaveTo(outf->mkdir(
"response_unf_RecopiKE"));
218 response_unf_RecopiCOS->
SaveTo(outf->mkdir(
"response_unf_RecopiCOS"));
220 NrmlWt_unf_RecopiKE->
SaveTo(outf->mkdir(
"NrmlWt_unf_RecopiKE"));
221 NrmlWt_unf_RecopiCOS->
SaveTo(outf->mkdir(
"NrmlWt_unf_RecopiCOS"));
222 NrmlWt_unf_TruepiKE->
SaveTo(outf->mkdir(
"NrmlWt_unf_TruepiKE"));
223 NrmlWt_unf_TruepiCOS->
SaveTo(outf->mkdir(
"NrmlWt_unf_TruepiCOS"));
226 SigUp_unf_RecopiKE->
SaveTo(outf->mkdir(
"SigUp_unf_RecopiKE"));
227 SigUp_unf_RecopiCOS->
SaveTo(outf->mkdir(
"SigUp_unf_RecopiCOS"));
228 SigUp_unf_TruepiKE->
SaveTo(outf->mkdir(
"SigUp_unf_TruepiKE"));
229 SigUp_unf_TruepiCOS->
SaveTo(outf->mkdir(
"SigUp_unf_TruepiCOS"));
231 SigWtdTrueKE_unf_RecopiKE->
SaveTo(outf->mkdir(
"SigWtdTrueKE_unf_RecopiKE"));
232 SigWtdTrueKE_unf_RecopiCOS->
SaveTo(outf->mkdir(
"SigWtdTrueKE_unf_RecopiCOS"));
233 SigWtdTrueKE_unf_TruepiKE->
SaveTo(outf->mkdir(
"SigWtdTrueKE_unf_TruepiKE"));
234 SigWtdTrueKE_unf_TruepiCOS->
SaveTo(outf->mkdir(
"SigWtdTrueKE_unf_TruepiCOS"));
238 uint numSysts = systs.size();
239 for(
uint i = 0;
i < systs.size();
i++){
241 char name_up_unf_RecopiKE[50];
242 char name_up_unf_RecopiCOS[50];
244 sprintf(name_up_unf_RecopiKE,
"unf_RecopiKE_up_%i",
i);
245 sprintf(name_up_unf_RecopiCOS,
"unf_RecopiCOS_up_%i",
i);
247 spects_unf_RecopiKE[
i]->SaveTo(outf->mkdir(name_up_unf_RecopiKE));
248 spects_unf_RecopiCOS[
i]->SaveTo(outf->mkdir(name_up_unf_RecopiCOS));
250 char name_down_unf_RecopiKE[50];
251 char name_down_unf_RecopiCOS[50];
253 sprintf(name_down_unf_RecopiKE,
"unf_RecopiKE_down_%i",
i);
254 sprintf(name_down_unf_RecopiCOS,
"unf_RecopiCOS_down_%i",
i);
256 spects_unf_RecopiKE[
i+numSysts]->SaveTo(outf->mkdir(name_down_unf_RecopiKE));
257 spects_unf_RecopiCOS[
i+numSysts]->SaveTo(outf->mkdir(name_down_unf_RecopiCOS));
264 for(
uint i = 0;
i < systs.size();
i++){
266 char name_up_unf_TruepiKE[50];
267 char name_up_unf_TruepiCOS[50];
269 sprintf(name_up_unf_TruepiKE,
"unf_TruepiKE_up_%i",
i);
270 sprintf(name_up_unf_TruepiCOS,
"unf_TruepiCOS_up_%i",
i);
272 spects_unf_TruepiKE[
i]->SaveTo(outf->mkdir(name_up_unf_TruepiKE));
273 spects_unf_TruepiCOS[
i]->SaveTo(outf->mkdir(name_up_unf_TruepiCOS));
275 char name_down_unf_TruepiKE[50];
276 char name_down_unf_TruepiCOS[50];
278 sprintf(name_down_unf_TruepiKE,
"unf_TruepiKE_down_%i",
i);
279 sprintf(name_down_unf_TruepiCOS,
"unf_TruepiCOS_down_%i",
i);
281 spects_unf_TruepiKE[
i+numSysts]->SaveTo(outf->mkdir(name_down_unf_TruepiKE));
282 spects_unf_TruepiCOS[
i+numSysts]->SaveTo(outf->mkdir(name_down_unf_TruepiCOS));
Cuts and Vars for the 2020 FD DiF Study.
Simple record of shifts applied to systematic parameters.
void SetSpillCut(const SpillCut &cut)
Representation of a spectrum in any variable, with associated POT.
const SpillCut kTightBeamQualityCuts([](const caf::SRSpillProxy *s){if(s->ismc) return true; if(s->trigger==2) return true;if(s->spilltimesec==0 &&s->deltaspilltimensec==0 &&s->widthx==0) return bool(s->isgoodspill);if(std::abs(s->deltaspilltimensec) > 0.5e9) return false;if(s->spillpot< 2e12) return false;if(s->hornI< -202|| s->hornI >-198) return false;if(s->posx< -2.00|| s->posx >+2.00) return false;if(s->posy< -2.00|| s->posy >+2.00) return false;return kBeamWidthCut(s);})
const mHistAxisDef analysis_vars_unf[kEnAngVars]
const NuTruthVar kSigUpST([](const caf::SRNeutrinoProxy *nu){float MassOfPi0=0.135;float kinetic=0.0f;float en=0.0f;int nbOfPi=0;int nbofprim=nu->prim.size();for(int i=0;i< nbofprim;i++){if(nu->prim[i].pdg==111){nbOfPi++;en=nu->prim[i].p.E;kinetic=en-MassOfPi0;}}if(((nu->pdg==14 &&nu->pdgorig==14)||(nu->pdg==12 &&nu->pdgorig==12))&&(nu->iscc==0)&&(kinetic >0.1)) return 1.10;else return 1.;})
const SpillCut kStandardDQCuts([](const caf::SRSpillProxy *spill){if(spill->dcmedgematchfrac==0 &&spill->fracdcm3hits==0 &&spill->nmissingdcmslg==0) return bool(spill->isgoodspill); if(spill->det==caf::kNEARDET && (spill->fracdcm3hits > 0.45|| spill->nmissingdcms > 0)) return false; if(spill->eventincomplete) return false; if(spill->det==caf::kFARDET && spill->nmissingdcmslg > 0) return false; if(spill->det==caf::kFARDET && !spill->ismc && spill->dcmedgematchfrac<=0.2) return false;return true;})
Cut out events with a noisy detector or with parts missing.
virtual void Go() override
Load all the registered spectra.
void SaveTo(TDirectory *dir, const std::string &name) const
std::vector< float > Spectrum
const NuTruthVar kSigHighWtST([](const caf::SRNeutrinoProxy *nu){float MassOfPi0=0.135;float kinetic=0.0f;float en=0.0f;int nbOfPi=0;int nbofprim=nu->prim.size();for(int i=0;i< nbofprim;i++){if(nu->prim[i].pdg==111){nbOfPi++;en=nu->prim[i].p.E;kinetic=en-MassOfPi0;}}double wt=1.1+(kinetic *0.11);if(((nu->pdg==14 &&nu->pdgorig==14)||(nu->pdg==12 &&nu->pdgorig==12))&&(nu->iscc==0)&&(kinetic >0.1)) return wt;else return 1.;})
const SystShifts kNoShift
Var VarFromNuTruthVar(const NuTruthVar &stv, double _default)
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const NuTruthVar kXSecCVWgt2017ST
2017 analysis master weight
Template for Var and SpillVar.
const NuTruthVar kPPFXFluxCVWgtST([](const caf::SRNeutrinoProxy *nu){ if(nu->rwgt.ppfx.cv!=nu->rwgt.ppfx.cv){return 1.f;}if(nu->rwgt.ppfx.cv >90){return 1.f;}return float(nu->rwgt.ppfx.cv);})
weight events with the flux PPFX Central value correction.
std::vector< const ISyst * > getAllXsecSysts_2017()
Get master XSec syst list for 2017 analyses.