diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/EventSaverFlatNtuple.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/EventSaverFlatNtuple.cxx index 8b8e1751f10914a75d363afd6a30ef4b07f54406..7f0335b5b49a01f424f957d3505473cdea7833e1 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/EventSaverFlatNtuple.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/EventSaverFlatNtuple.cxx @@ -142,6 +142,7 @@ namespace top { m_makeRCJets(false), m_makeVarRCJets(false), m_useRCJSS(false), + m_useVarRCJSS(false), m_met_met(0.), m_met_phi(0.) { @@ -218,6 +219,7 @@ namespace top { boost::split(m_VarRCJetRho, config->VarRCJetRho(), boost::is_any_of(",")); boost::split(m_VarRCJetMassScale, config->VarRCJetMassScale(), boost::is_any_of(",")); + m_useVarRCJSS=config->useVarRCJetSubstructure(); } // end make VarRC jets @@ -816,7 +818,7 @@ namespace top { systematicTree->makeOutputVariable(m_VarRCjetsubBranches[VarRC+"_"+name+"_sub_e"], VarRC+"sub_"+name+"_e"); systematicTree->makeOutputVariable(m_VarRCjetsubBranches[VarRC+"_"+name+"_sub_mv2c10"], VarRC+"sub_"+name+"_mv2c10"); - if (m_useRCJSS){ + if (m_useVarRCJSS){ systematicTree->makeOutputVariable(m_VarRCjetBranches["vrrcjet_"+name+"_pt"], "vrrcjet_"+name+"_pt" ); systematicTree->makeOutputVariable(m_VarRCjetBranches["vrrcjet_"+name+"_eta"],"vrrcjet_"+name+"_eta"); systematicTree->makeOutputVariable(m_VarRCjetBranches["vrrcjet_"+name+"_phi"],"vrrcjet_"+name+"_phi"); @@ -1259,7 +1261,7 @@ namespace top { m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetsubBranchesParticle[VarRC+"_"+name+"_sub_phi"], VarRC+"sub_"+name+"_phi"); m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetsubBranchesParticle[VarRC+"_"+name+"_sub_e"], VarRC+"sub_"+name+"_e"); - if (m_useRCJSS){ + if (m_useVarRCJSS){ m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle["vrrcjet_"+name+"_pt"], "vrrcjet_"+name+"_pt" ); m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle["vrrcjet_"+name+"_eta"],"vrrcjet_"+name+"_eta"); m_particleLevelTreeManager->makeOutputVariable(m_VarRCjetBranchesParticle["vrrcjet_"+name+"_phi"],"vrrcjet_"+name+"_phi"); @@ -2505,7 +2507,7 @@ namespace top { m_VarRCjetsubBranches[VarRC+"_"+name+"_sub_e"].resize(sizeOfRCjets, std::vector<float>()); m_VarRCjetsubBranches[VarRC+"_"+name+"_sub_mv2c10"].resize(sizeOfRCjets, std::vector<float>()); - if (m_useRCJSS){ + if (m_useVarRCJSS){ m_VarRCjetBranches["vrrcjet_"+name+"_pt"].resize(sizeOfRCjets,-999.); m_VarRCjetBranches["vrrcjet_"+name+"_eta"].resize(sizeOfRCjets,-999.); m_VarRCjetBranches["vrrcjet_"+name+"_phi"].resize(sizeOfRCjets,-999.); @@ -2557,7 +2559,7 @@ namespace top { m_VarRCjetBranches[VarRC+"_"+name+"_d12"][i] = (VarRCSplit12.isAvailable(*rc_jet)) ? VarRCSplit12(*rc_jet) : -999.; m_VarRCjetBranches[VarRC+"_"+name+"_d23"][i] = (VarRCSplit23.isAvailable(*rc_jet)) ? VarRCSplit23(*rc_jet) : -999.; - if (m_useRCJSS){ + if (m_useVarRCJSS){ m_VarRCjetBranches["vrrcjet_"+name+"_pt"][i] = (RRCJet_pt.isAvailable(*rc_jet)) ? RRCJet_pt(*rc_jet) : -999.; m_VarRCjetBranches["vrrcjet_"+name+"_eta"][i] = (RRCJet_eta.isAvailable(*rc_jet)) ? RRCJet_eta(*rc_jet) : -999.; m_VarRCjetBranches["vrrcjet_"+name+"_phi"][i] = (RRCJet_phi.isAvailable(*rc_jet)) ? RRCJet_phi(*rc_jet) : -999.; @@ -3603,7 +3605,7 @@ namespace top { m_VarRCjetsubBranchesParticle[VarRC+"_"+name+"_sub_eta"].resize(sizeOfRCjets, std::vector<float>()); m_VarRCjetsubBranchesParticle[VarRC+"_"+name+"_sub_phi"].resize(sizeOfRCjets, std::vector<float>()); m_VarRCjetsubBranchesParticle[VarRC+"_"+name+"_sub_e"].resize(sizeOfRCjets, std::vector<float>()); - if (m_useRCJSS){ + if (m_useVarRCJSS){ m_VarRCjetBranchesParticle["vrrcjet_"+name+"_pt"].resize(sizeOfRCjets,-999.); m_VarRCjetBranchesParticle["vrrcjet_"+name+"_eta"].resize(sizeOfRCjets,-999.); m_VarRCjetBranchesParticle["vrrcjet_"+name+"_phi"].resize(sizeOfRCjets,-999.); @@ -3654,7 +3656,7 @@ namespace top { m_VarRCjetBranchesParticle[VarRC+"_"+name+"_d12"][i] = (VarRCSplit12.isAvailable(*rc_jet)) ? VarRCSplit12(*rc_jet) : -999.; m_VarRCjetBranchesParticle[VarRC+"_"+name+"_d23"][i] = (VarRCSplit23.isAvailable(*rc_jet)) ? VarRCSplit23(*rc_jet) : -999.; - if (m_useRCJSS){ + if (m_useVarRCJSS){ m_VarRCjetBranchesParticle["vrrcjet_"+name+"_pt"][i] = (RRCJet_pt.isAvailable(*rc_jet)) ? RRCJet_pt(*rc_jet) : -999.; m_VarRCjetBranchesParticle["vrrcjet_"+name+"_eta"][i] = (RRCJet_eta.isAvailable(*rc_jet)) ? RRCJet_eta(*rc_jet) : -999.; m_VarRCjetBranchesParticle["vrrcjet_"+name+"_phi"][i] = (RRCJet_phi.isAvailable(*rc_jet)) ? RRCJet_phi(*rc_jet) : -999.; diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/TopAnalysis/EventSaverFlatNtuple.h b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/TopAnalysis/EventSaverFlatNtuple.h index 180bfea73378c21174567eab5a202967a97f51b6..00466867adcb9c6541f7e4665cc5217bb31ffe43 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/TopAnalysis/EventSaverFlatNtuple.h +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/TopAnalysis/EventSaverFlatNtuple.h @@ -580,6 +580,7 @@ private: bool m_makeRCJets; // making re-clustered jets bool m_makeVarRCJets; // making VarRC jets bool m_useRCJSS; // write RCJSS variables + bool m_useVarRCJSS; // write Variable-R RCJSS variables std::string m_RCJetContainer; // name for RC jets container in TStore std::vector<std::string> m_VarRCJetRho; std::vector<std::string> m_VarRCJetMassScale; diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx index b07a7f13eaff2c1cd07d24856c5cba93cab231a0..3cb8962617d9518067f90c3aa18de6003c51d496 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx @@ -130,6 +130,7 @@ ConfigurationSettings::ConfigurationSettings() : m_configured(false) { registerParameter("VarRCJetRho", "Reclustered Jet (variable-R) list of rho values (). Default 2.", "2"); registerParameter("VarRCJetMassScale", "Reclustered Jet (variable-R) list of mass scale values (m_w,m_z,m_h,m_t). By default use all.", "m_w,m_z,m_h,m_t"); registerParameter("UseVarRCJets", "Use Reclustered Jets (Variable-R Jets). Default False.", "False"); + registerParameter("UseVarRCJetSubstructure", "Calculate Variable-R Reclustered Jet Substructure Variables. Default False", "False"); registerParameter("TauPt", "Pt cut applied to both tight and loose taus (in MeV)." diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx index b2ace14f2c252ba02c593b15edaef7458f08eeed..dcd31f1bf7dfa840ddd13d68ccbe6d3f79e64f5c 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx @@ -758,7 +758,11 @@ namespace top{ this->VarRCJetMassScale(settings->value("VarRCJetMassScale")); if (settings->value("UseVarRCJets") == "True" || settings->value("UseVarRCJets") == "true") this->m_useVarRCJets = true; - + if (settings->value("UseVarRCJetSubstructure") == "True" || settings->value("UseVarRCJetSubstructure") == "true") + this->m_useVarRCJetSubstructure = true; + else + this->m_useVarRCJetSubstructure = false; + // for top mass analysis, per default set to 1.0! m_JSF = std::stof(settings->value("JSF")); m_bJSF = std::stof(settings->value("bJSF")); diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h index 32889e0eb10e66b3083dece7623e664e88d3bead..c4430497a82511c0f48b48367fd07302415a40ea 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h @@ -523,6 +523,7 @@ class TopConfig final { inline virtual float VarRCJetMaxRadius() const {return m_VarRCJetMaxRadius;} inline virtual const std::string& VarRCJetRho() const {return m_VarRCJetRho;} inline virtual const std::string& VarRCJetMassScale() const {return m_VarRCJetMassScale;} + inline virtual bool useVarRCJetSubstructure() const {return m_useVarRCJetSubstructure;} inline virtual void VarRCJetPtcut(const float pt) {if(!m_configFixed){m_VarRCJetPtcut = pt;}} inline virtual void VarRCJetEtacut(const float eta) {if(!m_configFixed){m_VarRCJetEtacut = eta;}} @@ -530,6 +531,7 @@ class TopConfig final { inline virtual void VarRCJetMaxRadius(const float radius) {if(!m_configFixed){m_VarRCJetMaxRadius = radius;}} inline virtual void VarRCJetRho(const std::string& rho) {if(!m_configFixed){m_VarRCJetRho = rho;}} inline virtual void VarRCJetMassScale(const std::string& mass_scale) {if(!m_configFixed){m_VarRCJetMassScale = mass_scale;}} + inline virtual void useVarRCJetSubstructure(const bool use) {if (!m_configFixed){m_useVarRCJetSubstructure = use;}} inline virtual void jetUncertainties_BunchSpacing( const std::string& s ){if(!m_configFixed){m_jetUncertainties_BunchSpacing = s;}} inline virtual const std::string& jetUncertainties_BunchSpacing() const {return m_jetUncertainties_BunchSpacing;} @@ -1164,6 +1166,7 @@ class TopConfig final { float m_VarRCJetMaxRadius; std::string m_VarRCJetRho; std::string m_VarRCJetMassScale; + bool m_useVarRCJetSubstructure; // these are needed for the top mass analysis, per default should be 1.0 float m_JSF; diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopEvent/Root/RCJetMC15.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopEvent/Root/RCJetMC15.cxx index 4f4ef6476f3b3dfd611d1f6d0860830fc5967699..0a319cc85fee35ac03c43bc2352d7cd358c55d5f 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopEvent/Root/RCJetMC15.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopEvent/Root/RCJetMC15.cxx @@ -104,7 +104,7 @@ StatusCode RCJetMC15::initialize(){ float m_scale = mass_scales.at(m_VarRCjets_mass_scale); m_massscale = rho*m_scale*1e-3; // e.g., 2*m_top; in [GeV]! - if (m_config->useRCJetSubstructure())m_useJSS=true; + m_useJSS=m_config->useVarRCJetSubstructure(); } else{ @@ -114,7 +114,7 @@ StatusCode RCJetMC15::initialize(){ m_radius = std::stof( configSettings->value("RCJetRadius") ); // for initialize m_minradius = -1.0; m_massscale = -1.0; - if (m_config->useRCJetSubstructure())m_useJSS=true; + m_useJSS=m_config->useRCJetSubstructure(); } if (m_useJSS){ diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopParticleLevel/Root/ParticleLevelRCJetObjectLoader.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopParticleLevel/Root/ParticleLevelRCJetObjectLoader.cxx index 68e1572628e11dd2572f5f3ef1badf24af0d9d12..6388fd3a17afd0c9bf7fc9df92e81f4a465ef4db 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopParticleLevel/Root/ParticleLevelRCJetObjectLoader.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopParticleLevel/Root/ParticleLevelRCJetObjectLoader.cxx @@ -84,7 +84,7 @@ StatusCode ParticleLevelRCJetObjectLoader::initialize(){ float m_scale = mass_scales.at(m_VarRCjets_mass_scale); m_massscale = rho*m_scale*1e-3; - if (m_config->useRCJetSubstructure())m_useJSS=true; + m_useJSS=m_config->useVarRCJetSubstructure(); } else { m_ptcut = m_config->RCJetPtcut() ; // for initialize [GeV] & passSelection @@ -94,7 +94,7 @@ StatusCode ParticleLevelRCJetObjectLoader::initialize(){ m_minradius = -1.0; m_massscale = -1.0; - if (m_config->useRCJetSubstructure())m_useJSS=true; + m_useJSS=m_config->useRCJetSubstructure(); }