58 throw std::runtime_error(
"nusdata directory not found! Exiting.");
59 ret =
string(cpath) +
"/nus20";
70 if (systKey.find(
key) != string::npos)
return true;
78 if (systKey.find(
key) != string::npos)
return true;
87 ret.push_back(
"key_neardet_"+
name);
88 ret.push_back(
"key_fardet_"+
name);
90 ret.push_back(
"key_"+
name);
97 vector<const KeySyst*>
ret;
99 for (
string key : keys) {
100 const KeySyst* keySyst =
nullptr;
105 keySyst =
dynamic_cast<const KeySyst*
>(syst);
107 ret.push_back(keySyst);
119 TFile*
inFile = TFile::Open(filePath.c_str(),
"read");
120 TDirectory*
dir = inFile->GetDirectory(dirName.c_str());
123 std::vector<const ISyst*>
systs;
124 TIter
next(dir->GetListOfKeys());
126 while ((key = (TKey*)
next())) {
134 systs.push_back(syst);
137 cout <<
"Syst loading code works, but requires an overhaul." <<
endl;
138 TObjString*
str = (TObjString*)((TDirectory*)key->ReadObj())->
Get(
"type");
139 if (str->GetString() ==
"NueSyst")
141 else if (str->GetString() ==
"NumuSyst")
143 else if (str->GetString() ==
"NCSyst")
146 throw std::runtime_error(
"Syst " + str->GetString() +
" not recognised!");
184 string filePath =
InputPath() +
"/systs/isysts.root";
185 string dirName =
"isysts_" + s.GetTag();
188 systs.push_back(syst);
196 if (syst->ShortName() ==
"MECShape2020Nu" ||
197 syst->ShortName() ==
"MECShape2020AntiNu")
continue;
198 systs.push_back(syst);
222 for (
int i = 0;
i < 5; ++
i)
230 systs.push_back(&kNusAna2020KaonSyst);
240 systs.push_back(&kNusAna2020TauSyst);
256 vector<const ISyst*>
ret;
274 vector<const ISyst*>
ret;
278 ret.push_back(dynamic_cast<const ISyst*>(syst));
312 string keyND =
"key_neardet_"+systName;
314 if (!keySyst) keySyst =
new KeySyst(keyND, keyND);
315 const ISyst* childSyst;
321 sample.SetSystAlias(keySyst, childSyst);
325 if (!keySyst) keySyst =
new KeySyst(keyFD, keyFD);
331 sample.SetSystAlias(keySyst, childSyst);
337 if (!keySyst) keySyst =
new KeySyst(key, key);
339 sample.SetSystAlias(keySyst, childSyst);
345 vector<const ISyst*> numuSysts;
347 for (
const ISyst* keySyst : numuSysts) sample.SetSystAlias(keySyst,
nullptr);
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DNorm_2(kGauss2DNorm_2Nux,"Norm_2Nux")
Cuts and Vars for the 2020 FD DiF Study.
void AddNusAna2020FileSysts(vector< const ISyst * > &systs, Sample &s)
void AddNusAna2020XSecSysts(vector< const ISyst * > &systs)
bool IsOneSided(string systKey)
const std::vector< std::string > kOneSidedSysts
vector< const ISyst * > getNusAna2020AllSysts(covmx::Sample &s)
void SetSystAlias(Sample &sample)
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DMeanQ0_1(kGauss2DMeanQ0_1Nux,"MeanQ0_1Nux")
std::vector< const ISyst * > getAllXsecNuTruthSysts_2020()
Get master XSec syst list for 2020 analyses.
const NusAna2020TauSyst kNusAna2020TauSyst
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DMeanQ3_2(kGauss2DMeanQ3_2Nux,"MeanQ3_2Nux")
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DCorr_2(kGauss2DCorr_2Nux,"Corr_2Nux")
void AddNusAna2020NeutronSyst(vector< const ISyst * > &systs)
cout<< "Opened file "<< fin<< " ixs= "<< ixs<< endl;if(ixs==0) hhh=(TH1F *) fff-> Get("h1")
std::string pnfs2xrootd(std::string loc, bool unauth)
vector< string > GetKeySystNames()
void AddNusAna2020NormSysts(vector< const ISyst * > &systs, Sample &s)
const NeutronVisEScaleSyst2018 kNeutronVisEScalePrimariesSyst2018(false)
const NusAna2020KaonSyst kNusAna2020KaonSyst
Encapsulate code to systematically shift a caf::SRProxy.
const covmx::NormSyst kNusAna2020NormPOT("POT","POT uncertainty", 0.0055)
const covmx::NormSyst kNusAna2020NormMissingLepton("MissingLepton","Missing lepton bug", 0.008)
const UnCorrFDMuEScaleSyst2020 kUnCorrFDMuEScaleSyst2020(0.0015)
const MECDoubleGaussEnhSystNux kNusAna2020MECBaseline(kBaselineNux,"Baseline_2Nux")
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DMeanQ3_1(kGauss2DMeanQ3_1Nux,"MeanQ3_1Nux")
const std::string kNus20Path
static std::unique_ptr< NumuSyst > LoadFrom(TDirectory *dir)
LoadFrom implementation for NumuSyst.
std::string getenv(std::string const &name)
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DMeanQ0_2(kGauss2DMeanQ0_2Nux,"MeanQ0_2Nux")
BeamSyst * GetFluxPrincipals2020(int PCIdx)
vector< const KeySyst * > GetKeySysts()
void AddNusAna2020TauSyst(vector< const ISyst * > &systs)
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DSigmaQ0_2(kGauss2DSigmaQ0_2Nux,"SigmaQ0_2Nux")
static std::unique_ptr< NCSyst > LoadFrom(TDirectory *dir)
LoadFrom implementation for NCSyst.
void AddNusAna2020KaonSyst(vector< const ISyst * > &systs)
const covmx::NormSyst kNusAna2020NormNDNCOverlay("NDNCOverlay","ND NC selection overlay", 0.01)
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DSigmaQ3_2(kGauss2DSigmaQ3_2Nux,"SigmaQ3_2Nux")
string GetString(xmlDocPtr xml_doc, string node_path)
const PileupMuESyst2020 kPileupMuESyst2020(0.46, 1.3)
vector< const ISyst * > LoadSystsFromFile(string filePath, string dirName)
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DCorr_1(kGauss2DCorr_1Nux,"Corr_1Nux")
const covmx::NormSyst kNusAna2020NormNDMass("NDMass","Near detector mass", 0.003)
const std::vector< std::string > kDetectorSystNames
void AddNusAna2020MECSysts(vector< const ISyst * > &systs)
const CorrMuEScaleSyst2020 kCorrMuEScaleSyst2020(0.0074, 0.0074, 0.0013)
const UnCorrNDMuEScaleSyst2020 kUnCorrNDMuEScaleSyst2020(0.0013)
string shortName
THUMBNAIL BLOCK: We need to make a thumbnail for each.
static std::unique_ptr< NueSyst > LoadFrom(TDirectory *dir)
LoadFrom implementation for NueSyst.
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DNorm_1(kGauss2DNorm_1Nux,"Norm_1Nux")
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DSigmaQ0_1(kGauss2DSigmaQ0_1Nux,"SigmaQ0_1Nux")
const std::vector< std::string > kUncorrelatedSysts
Prevent histograms being added to the current directory.
const UnCorrMuCatMuESyst2020 kUnCorrMuCatMuESyst2020(0.0048)
void AddNusAna2020NumuSysts(vector< const ISyst * > &systs)
const covmx::NormSyst kNusAna2020NormFDMass("FDMass","Far detector mass", 0.003)
static const T * ShortNameToPtr(const std::string &s, bool allowFail=false)
bool IsDetUncorrelated(string systKey)
const MECDoubleGaussEnhSystNux kNusAna2020MECGauss2DSigmaQ3_1(kGauss2DSigmaQ3_1Nux,"SigmaQ3_1Nux")
void AddNusAna2020BeamSysts(vector< const ISyst * > &systs)
const covmx::NormSyst kNusAna2020NormNDNumuOverlay("NDNumuOverlay","ND numu selection overlay", 0.0021)