9 #include "CAFAna/Core/Binning.h" 19 #include "CAFAna/Systs/EnergySysts2018.h" 94 {
"nominal",
"nd_fhc_remid-hotfix_caf_minus_muonid_training_minus_fakedata"},
95 {
"nom_good_seventh",
"nd_fhc_remid-hotfix_goodseventh_common_subruns"},
96 {
"lightdown",
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_lightmodel-lightdown-calibup_v1_good_seventh"},
97 {
"lightup",
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_lightmodel-lightup-calibdown_v1_good_seventh"},
98 {
"ckv",
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_ckv-proton-shift-down_v1"},
99 {
"calibneg",
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_calib-shift-nd-xyview-neg-offset_v1_good_seventh"},
100 {
"calibpos",
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_calib-shift-nd-xyview-pos-offset_v1_good_seventh"},
101 {
"calibshift",
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_calib-shift-nd-func_v1_good_seventh"},
102 {
"neutron",
"prod_caf_R17-11-14-prod4reco.neutron-respin.c_nd_genie_nonswap_fhc_nova_v08_full_v1"},
103 {
"neutron_nom",
"prod_caf_R17-11-14-prod4reco.neutron-respin.c_nd_genie_nonswap_fhc_nova_v08_full_v1"}
110 {
"muoneup",
"MuESUp"},
111 {
"muonedw",
"MuESDw"}
127 std::map<std::string, ana::SpectrumLoaderBase*> vloaders;
128 std::map<std::string, std::map<std::string, ana::xsec::UnfoldingVariable*>> vUnfoldingVars;
131 for (
unsigned int isyst = 0; isyst < systs.size(); isyst++){
139 cout <<
"Creating spectrums for spec: " << syst <<
" on dataset: " << dataset <<
endl;
143 if (vloaders.find(dataset) != vloaders.end())
144 loader = vloaders[dataset];
244 cerr <<
"Attempt to run on unknown systematic. Syst: " << syst <<
"Not found. Skipping." <<
endl;
250 for(pair<std::string, ana::SpectrumLoaderBase*>
loader : vloaders){
255 TFile*
fOut =
new TFile(
outfile.c_str(),
"RECREATE");
260 for (std::pair<
std::string, std::map<std::string, ana::xsec::UnfoldingVariable*> > systVars : vUnfoldingVars){
262 std::map<std::string, ana::xsec::UnfoldingVariable*> unfoldVars = systVars.second;
270 dir = fOut->mkdir(syst.c_str());
272 for (std::pair<std::string, ana::xsec::UnfoldingVariable*> unfoldVar : unfoldVars){
276 TDirectory * varDir = dir->mkdir(varName.c_str());
289 outfile =
"fSystSpec_" + syst +
".root";
292 "cv",
"muoneup",
"muonedw",
"angleup",
"angledw",
"2kA",
301 "MagneticFieldinDecayPipe",
304 "lightdown",
"lightup",
"ckv",
305 "calibneg",
"calibpos",
"calibshift",
306 "neutron_nom",
"nom_good_seventh" const HistAxis kRecoEStandardAxis_MuonEUp("Reconstructed Neutrino Energy (GeV)", enubins, kRecoEUp)
const NuTruthCut kIsTrueSigST
const HistAxis kRecoQ2StandardAxis("Reco Q2 (GeV)", q2bins, kRecoq2)
const HistAxis kRecoQ2StandardAxis_MuonEDw("Reco Q2 (GeV)", q2bins, kRecoq2_MuonEDw)
void SaveSpectrums(TDirectory *d)
Save each necessary Spectrum to its own subfolder of dir.
const BeamSyst kBeamTarget((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"7mmTargetZ","+/- 7mm Target z Position")
Target z position shift +/-7mm.
const NuTruthCut kIsTrueSig1DST
Simple record of shifts applied to systematic parameters.
const BeamSyst kBeamHornCurrent((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"2kA","2kAHornCurrent","+/- 2kA Horn Current")
Horn Current +/-2kA.
const ana::NuTruthVar wgtST
void SetSpillCut(const SpillCut &cut)
const NeutronVisEScaleSyst2018 kNeutronVisEScalePrimariesSyst2018(false)
Encapsulate code to systematically shift a caf::SRProxy.
const HistAxis kRecoQ2StandardAxis_AngleDw("Reco Q2 (GeV)", q2bins, kRecoq2_AngleDw)
const BeamSyst kBeamGeomWater((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"1mmHornWater","+/- 1mm water on Horn 1")
Water layer on horn 1: +/- 1mm.
std::map< string, const std::string > syst_to_folder
Override folder naming in certain cases.
std::map< string, const std::string > dataset_to_samdef
Systematics that use a different dataset.
const HistAxis kRecoQ2StandardAxis_AngleUp("Reco Q2 (GeV)", q2bins, kRecoq2_AngleUp)
const HistAxis kRecoMuKEVsCosVsEavailStandardAxisAngleDw("Reco. T_{#mu} vs cos #{theta} vs Available Energy (GeV)", angvsmukevseavailbins, kRecoMuKEVsCosVsEavailAngleDw)
const NuTruthHistAxis kTrueQ2StandardAxisST("True Q2 (GeV)", q2bins, kTrueQ2_NT)
const BeamSyst kBeamH1PosX((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"3mmHorn1X","+/- 3mm Horn 1 X Position")
Horn 1 and 2 position +-3mm in X and Y separately.
const ana::NuTruthVar wgt_xsST
Define the weights. Build off of each other, and default to "1".
const HistAxis kRecoMuKEVsCosVsEavailStandardAxisUp("Reco. T_{#mu} vs cos #{theta} vs Available Energy (GeV)", angvsmukevseavailbins, kRecoMuKEVsCosVsEavailUp)
std::map< string, const ana::BeamSyst * > beamSystematics
Systematics defined by a BeamSyst.
const HistAxis kRecoEStandardAxis_MuonEDw("Reconstructed Neutrino Energy (GeV)", enubins, kRecoEDw)
std::map< string, const vector< const ana::HistAxis * > > histaxis_systematics
Macro to create a given xsec systematic for the numucc inc analysis.
const NuTruthVar kXSecCVWgt2018_smallerDISScale_NT
std::map< string, const ana::ISyst * > otherSystematics
Other pre-defined systematics.
const SystShifts kNoShift
const BeamSyst kBeamPosY((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"1mmBeamShiftY","Beam Position Y")
Base class for the various types of spectrum loader.
const Cut kAllNumuCC1DCuts
Var VarFromNuTruthVar(const NuTruthVar &stv, double _default)
const BeamSyst kBeamH1PosY((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"3mmHorn1Y","+/- 3mm Horn 1 Y Position")
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const BeamSyst kBeamSpotSize((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"0.2mmBeamSpotSize","0p2mmBeamSpotSize"," 1.3 +/- 0.2 mm Spot Size")
Beam Spot Size 1.3 +/- 0.2 mm both XY.
const HistAxis kRecoMuKEVsCosVsEavailStandardAxisAngleUp("Reco. T_{#mu} vs cos #{theta} vs Available Energy (GeV)", angvsmukevseavailbins, kRecoMuKEVsCosVsEavailAngleUp)
const BeamSyst kBeamH2PosX((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"3mmHorn2X","+/- 3mm Horn 2 X Position")
void specprod_systematics(const std::vector< std::string > systs, const std::string outfile="fSystSpec.root")
Process all systs input, and store output in outfile.
const BeamSyst kBeamPosX((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"1mmBeamShiftX","Beam Position X")
Beam position on target +-1 mm, X/Y separately.
const NuTruthHistAxis kTrueMuKEVsCosVsEavailStandardAxisST("True T_{#mu} vs cos #{theta} vs Neutrino Energy (GeV)", angvsmukevseavailbins, kTrueMuKEVsCosVsEavailST)
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
std::vector< std::string > standardVars
Systematics that run on the nominal dataset.
const HistAxis kRecoMuKEVsCosVsEavailStandardAxis("Reco. T_{#mu} vs cos #{theta} vs Available Energy (GeV)", angvsmukevseavailbins, kRecoMuKEVsCosVsEavail)
const BeamSyst kBeamH2PosY((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"3mmHorn2Y","+/- 3mm Horn 2 Y Position")
const BeamSyst kBeamMagField((FindCAFAnaDir()+"/data/beam/TABeamSyst_2018Dec11.root"),"Magnetic Field in Decay Pipe","MagnFieldDecayPipe","Magnetic Field in Decay Pipe")
Constant magnetic field in decay pipe.
Template for Var and SpillVar.
const HistAxis kRecoMuKEVsCosVsEavailStandardAxisDw("Reco. T_{#mu} vs cos #{theta} vs Available Energy (GeV)", angvsmukevseavailbins, kRecoMuKEVsCosVsEavailDw)
const HistAxis kRecoEStandardAxis("Reconstructed Neutrino Energy (GeV)", enubins, kRecoE)
const NuTruthHistAxis kTrueEStandardAxisST("True Neutrino Energy (GeV)", enubins, kTrueEST)
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.
const HistAxis kRecoQ2StandardAxis_MuonEUp("Reco Q2 (GeV)", q2bins, kRecoq2_MuonEUp)