diff --git a/Reconstruction/Jet/JetUncertainties/JetUncertainties/ResolutionHelper.h b/Reconstruction/Jet/JetUncertainties/JetUncertainties/ResolutionHelper.h index 1d43653b6737acaa8e29b9cebef334743366b442..063ecfaa11b713f7e0f84c1b48e04f4fd21dc670 100644 --- a/Reconstruction/Jet/JetUncertainties/JetUncertainties/ResolutionHelper.h +++ b/Reconstruction/Jet/JetUncertainties/JetUncertainties/ResolutionHelper.h @@ -23,7 +23,7 @@ class ResolutionHelper : public asg::AsgMessaging public: ResolutionHelper(const std::string& name, const std::string& jetDef); ResolutionHelper(const ResolutionHelper& toCopy); - virtual StatusCode initialize(TEnv& settings, TFile* histFile); + virtual StatusCode initialize(TEnv& settings, TFile* histFile, const TString& MCtype); virtual ~ResolutionHelper(); // Information retrieval @@ -85,7 +85,7 @@ class ResolutionHelper : public asg::AsgMessaging CompMassDef::TypeEnum m_mTopNomMassDefMC; // Helper methods - StatusCode parseInput(TEnv& settings, TFile* histFile, const TString& key, const TString& defaultValue, UncertaintyHistogram*& hist, CompParametrization::TypeEnum& param, CompMassDef::TypeEnum& massDef); + StatusCode parseInput(TEnv& settings, TFile* histFile, const TString& key, const TString& defaultValue, UncertaintyHistogram*& hist, CompParametrization::TypeEnum& param, CompMassDef::TypeEnum& massDef,const TString& MCtype); }; diff --git a/Reconstruction/Jet/JetUncertainties/Root/JetUncertaintiesTool.cxx b/Reconstruction/Jet/JetUncertainties/Root/JetUncertaintiesTool.cxx index aedc961e0dc8f54649518b3e6681b2abdf8e16b6..c86d1c44b1ea0012730ce1792a7649e9e886e8cf 100644 --- a/Reconstruction/Jet/JetUncertainties/Root/JetUncertaintiesTool.cxx +++ b/Reconstruction/Jet/JetUncertainties/Root/JetUncertaintiesTool.cxx @@ -67,7 +67,7 @@ JetUncertaintiesTool::JetUncertaintiesTool(const std::string& name) , m_jetDef("") , m_mcType("") , m_configFile("") - , m_calibArea("CalibArea-06") + , m_calibArea("CalibArea-07") , m_path("") , m_analysisFile("") , m_analysisHistPattern("") @@ -499,7 +499,7 @@ StatusCode JetUncertaintiesTool::initialize() // Attempt to read in nominal resolution information // There may be no such information - this is perfectly normal m_resHelper = new ResolutionHelper(m_name+"_RH",m_jetDef); - if(m_resHelper->initialize(settings,histFile).isFailure()) + if(m_resHelper->initialize(settings,histFile,m_mcType.c_str()).isFailure()) return StatusCode::FAILURE; // Prepare for reading components and groups @@ -2397,8 +2397,9 @@ double JetUncertaintiesTool::getSmearingFactor(const xAOD::Jet& jet, const CompS // We have the smearing factor, so prepare to smear // If the user specified a seed, then use it - // If not, then use the jet's phi times 10^5 - const long long int seed = m_userSeed != 0 ? m_userSeed : 1.e+5*fabs(jet.phi()); + // If not, then use the jet's phi times 1*10^5 in MC, 1.23*10^5 in (pseudo-)data + // Difference in seed between allows for easy use of pseudo-data + const long long int seed = m_userSeed != 0 ? m_userSeed : (m_isData ? 1.23e+5 : 1.00e+5)*fabs(jet.phi()); m_rand.SetSeed(seed); // Calculate and return the smearing factor diff --git a/Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx b/Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx index 90d7fb7b83b9491fe1357d3d1eacf6c3ee685f4a..4279024da6d7a3f07634e4fc6ae8287df32e5475 100644 --- a/Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx +++ b/Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx @@ -118,7 +118,7 @@ ResolutionHelper::~ResolutionHelper() JESUNC_SAFE_DELETE(m_mTopNomHistMC); } -StatusCode ResolutionHelper::parseInput(TEnv& settings, TFile* histFile, const TString& key, const TString& defaultValue, UncertaintyHistogram*& hist, CompParametrization::TypeEnum& param, CompMassDef::TypeEnum& massDef) +StatusCode ResolutionHelper::parseInput(TEnv& settings, TFile* histFile, const TString& key, const TString& defaultValue, UncertaintyHistogram*& hist, CompParametrization::TypeEnum& param, CompMassDef::TypeEnum& massDef, const TString& MCtype) { // Get the string TString value = settings.GetValue(key,defaultValue); @@ -179,8 +179,12 @@ StatusCode ResolutionHelper::parseInput(TEnv& settings, TFile* histFile, const T } } + // Replace generic MCTYPE string with the user-specified type if applicable + TString histName = splitValue.at(0); + histName.ReplaceAll("MCTYPE",MCtype); + // Create the histogram - hist = new UncertaintyHistogram(splitValue.at(0)+"_"+m_jetDef.c_str(),interp); + hist = new UncertaintyHistogram(histName+"_"+m_jetDef.c_str(),interp); // Initialize the histogram if (hist->initialize(histFile).isFailure()) @@ -192,7 +196,7 @@ StatusCode ResolutionHelper::parseInput(TEnv& settings, TFile* histFile, const T return StatusCode::SUCCESS; } -StatusCode ResolutionHelper::initialize(TEnv& settings, TFile* histFile) +StatusCode ResolutionHelper::initialize(TEnv& settings, TFile* histFile, const TString& MCtype) { if (m_isInit) { @@ -222,9 +226,9 @@ StatusCode ResolutionHelper::initialize(TEnv& settings, TFile* histFile) // Start with nominal pT resolution - if (parseInput(settings,histFile,"NominalPtResData","",m_ptNomHistData,m_ptNomParamData,m_ptNomMassDefData).isFailure()) + if (parseInput(settings,histFile,"NominalPtResData","",m_ptNomHistData,m_ptNomParamData,m_ptNomMassDefData,MCtype).isFailure()) return StatusCode::FAILURE; - if (parseInput(settings,histFile,"NominalPtResMC","",m_ptNomHistMC,m_ptNomParamMC,m_ptNomMassDefMC).isFailure()) + if (parseInput(settings,histFile,"NominalPtResMC","",m_ptNomHistMC,m_ptNomParamMC,m_ptNomMassDefMC,MCtype).isFailure()) return StatusCode::FAILURE; if (m_ptNomHistData && !m_ptNomHistMC) { @@ -233,9 +237,9 @@ StatusCode ResolutionHelper::initialize(TEnv& settings, TFile* histFile) } // Now the nominal four-vector resolution - if (parseInput(settings,histFile,"NominalFourVecResData","",m_fvNomHistData,m_fvNomParamData,m_fvNomMassDefData).isFailure()) + if (parseInput(settings,histFile,"NominalFourVecResData","",m_fvNomHistData,m_fvNomParamData,m_fvNomMassDefData,MCtype).isFailure()) return StatusCode::FAILURE; - if (parseInput(settings,histFile,"NominalFourVecResMC","",m_fvNomHistMC,m_fvNomParamMC,m_fvNomMassDefMC).isFailure()) + if (parseInput(settings,histFile,"NominalFourVecResMC","",m_fvNomHistMC,m_fvNomParamMC,m_fvNomMassDefMC,MCtype).isFailure()) return StatusCode::FAILURE; if (m_fvNomHistData && !m_fvNomHistMC) { @@ -248,9 +252,9 @@ StatusCode ResolutionHelper::initialize(TEnv& settings, TFile* histFile) // Lots of code duplication, but time is of the essence, and it works // QCD topology - if (parseInput(settings,histFile,"NominalMassResDataQCD","",m_mQCDNomHistData,m_mQCDNomParamData,m_mQCDNomMassDefData).isFailure()) + if (parseInput(settings,histFile,"NominalMassResDataQCD","",m_mQCDNomHistData,m_mQCDNomParamData,m_mQCDNomMassDefData,MCtype).isFailure()) return StatusCode::FAILURE; - if (parseInput(settings,histFile,"NominalMassResMCQCD","",m_mQCDNomHistMC,m_mQCDNomParamMC,m_mQCDNomMassDefMC).isFailure()) + if (parseInput(settings,histFile,"NominalMassResMCQCD","",m_mQCDNomHistMC,m_mQCDNomParamMC,m_mQCDNomMassDefMC,MCtype).isFailure()) return StatusCode::FAILURE; if (m_mQCDNomHistData && !m_mQCDNomHistMC) { @@ -259,9 +263,9 @@ StatusCode ResolutionHelper::initialize(TEnv& settings, TFile* histFile) } // WZ topology - if (parseInput(settings,histFile,"NominalMassResDataWZ","",m_mWZNomHistData,m_mWZNomParamData,m_mWZNomMassDefData).isFailure()) + if (parseInput(settings,histFile,"NominalMassResDataWZ","",m_mWZNomHistData,m_mWZNomParamData,m_mWZNomMassDefData,MCtype).isFailure()) return StatusCode::FAILURE; - if (parseInput(settings,histFile,"NominalMassResMCWZ","",m_mWZNomHistMC,m_mWZNomParamMC,m_mWZNomMassDefMC).isFailure()) + if (parseInput(settings,histFile,"NominalMassResMCWZ","",m_mWZNomHistMC,m_mWZNomParamMC,m_mWZNomMassDefMC,MCtype).isFailure()) return StatusCode::FAILURE; if (m_mWZNomHistData && !m_mWZNomHistMC) { @@ -270,9 +274,9 @@ StatusCode ResolutionHelper::initialize(TEnv& settings, TFile* histFile) } // Hbb topology - if (parseInput(settings,histFile,"NominalMassResDataHbb","",m_mHbbNomHistData,m_mHbbNomParamData,m_mHbbNomMassDefData).isFailure()) + if (parseInput(settings,histFile,"NominalMassResDataHbb","",m_mHbbNomHistData,m_mHbbNomParamData,m_mHbbNomMassDefData,MCtype).isFailure()) return StatusCode::FAILURE; - if (parseInput(settings,histFile,"NominalMassResMCHbb","",m_mHbbNomHistMC,m_mHbbNomParamMC,m_mHbbNomMassDefMC).isFailure()) + if (parseInput(settings,histFile,"NominalMassResMCHbb","",m_mHbbNomHistMC,m_mHbbNomParamMC,m_mHbbNomMassDefMC,MCtype).isFailure()) return StatusCode::FAILURE; if (m_mHbbNomHistData && !m_mHbbNomHistMC) { @@ -281,9 +285,9 @@ StatusCode ResolutionHelper::initialize(TEnv& settings, TFile* histFile) } // Top topology - if (parseInput(settings,histFile,"NominalMassResDataTop","",m_mTopNomHistData,m_mTopNomParamData,m_mTopNomMassDefData).isFailure()) + if (parseInput(settings,histFile,"NominalMassResDataTop","",m_mTopNomHistData,m_mTopNomParamData,m_mTopNomMassDefData,MCtype).isFailure()) return StatusCode::FAILURE; - if (parseInput(settings,histFile,"NominalMassResMCTop","",m_mTopNomHistMC,m_mTopNomParamMC,m_mTopNomMassDefMC).isFailure()) + if (parseInput(settings,histFile,"NominalMassResMCTop","",m_mTopNomHistMC,m_mTopNomParamMC,m_mTopNomMassDefMC,MCtype).isFailure()) return StatusCode::FAILURE; if (m_mTopNomHistData && !m_mTopNomHistMC) { diff --git a/Reconstruction/Jet/JetUncertainties/testingMacros/run/runMakeUncertaintyPlots.sh b/Reconstruction/Jet/JetUncertainties/testingMacros/run/runMakeUncertaintyPlots.sh index 5d5529c9f1b5273ce03504b4b8ff20b4de8b8b34..7919ff59e8e692b16549a60ed9530f91ba43ff7a 100644 --- a/Reconstruction/Jet/JetUncertainties/testingMacros/run/runMakeUncertaintyPlots.sh +++ b/Reconstruction/Jet/JetUncertainties/testingMacros/run/runMakeUncertaintyPlots.sh @@ -3269,6 +3269,47 @@ function JER_August2018 \ } +function JER_Fall_2018_Compare \ +{ + scaleVar="FourVecResAbs" + jetdef="EMTopo" + jetDefinition="AntiKt4${jetdef};AntiKt4${jetdef};AntiKt4${jetdef}" + MCtype="MC16" + CalibArea="" + configFile="rel21/Fall2018/R4_GlobalReduction_SimpleJER.config;rel21/Fall2018/R4_GlobalReduction_FullJER.config;rel21/Fall2018/R4_AllNuisanceParameters_AllJERNP.config" + outFile="JER-Fall2018-${MCtype}-Compare-${jetdef}.pdf" + compList="JER#@JER#@JER#" + compLabels="Total JER uncertainty, ${jetdef}, 7NP@Total JER uncertainty, ${jetdef}, 12NP@Total JER uncertainty, ${jetdef}, All NP" + options="prefix=JET_;fixedEtaVals=0;fixedPtVals=25;drawTotal=false;scaleVar=${scaleVar};IsData=false" +} + +function JER_Fall_2018_Nominal \ +{ + scaleVar="FourVecResAbs" + jetDefinition="AntiKt4EMTopo;AntiKt4EMPFlow" + MCtype="MC16" + CalibArea="" + configFile="rel21/Fall2018/R4_GlobalReduction_SimpleJER.config;rel21/Summer2018/R4_GlobalReduction_SimpleJER.config" + outFile="JER-Fall2018-${MCtype}-Nominal.pdf" + compList="NOMINALRESMC;NOMINALRESDATA@NOMINALRESMC;NOMINALRESDATA" + compLabels="Nominal MC JER, EMTopo;Nominal data JER, EMTopo@Nominal MC JER, EMPFlow;Nominal data JER,EMPFlow" + options="prefix=JET_;fixedEtaVals=0;fixedPtVals=25;drawTotal=false;scaleVar=${scaleVar};IsData=false;axisMax=0.4" +} + +function JER_Fall2018 \ +{ + scaleVar="FourVecResAbs" + jetDefinition="AntiKt4EMTopo;AntiKt4EMPFlow" + MCtype="MC16" + CalibArea="" + configFile="rel21/Fall2018/R4_AllNuisanceParameters_AllJERNP.config" + outFile="JER-Fall2018-${MCtype}-Recommendations.pdf" + compList="JER_DataVsMC_#;JER_N_#;JER_dijet_c#,JER_dijet_j#,JER_dijet_m#,JER_dijet_p#;JER_dijet_stat#" + compLabels="Nominal data vs MC difference;Noise term, random cones method;Dijet #it{in situ} JER (systematics);Dijet #it{in situ} JER (statistics)" + options="prefix=JET_;fixedEtaVals=0.202;fixedPtVals=40;scaleVar=${scaleVar};IsData=false;axisMax=0.05" +} + +