diff --git a/PhysicsAnalysis/JetTagging/JetTagMonitoring/JetTagMonitoring/JetTagMonitoring.h b/PhysicsAnalysis/JetTagging/JetTagMonitoring/JetTagMonitoring/JetTagMonitoring.h
index e2428eb3e1f165071f16872f520d6e94571f622b..bab6fc68a18dc7dfcebdadcf0a5aa80b1b03ec30 100755
--- a/PhysicsAnalysis/JetTagging/JetTagMonitoring/JetTagMonitoring/JetTagMonitoring.h
+++ b/PhysicsAnalysis/JetTagging/JetTagMonitoring/JetTagMonitoring/JetTagMonitoring.h
@@ -91,6 +91,7 @@ private:
     //void fillBadZone(int zone, double w);
     bool passJetQualityCuts(const xAOD::Jet *jet);
     bool passKinematicCuts(const xAOD::Jet *jet);
+    bool passJVTCuts(const xAOD::Jet *jet);
     Jet_t getTaggabilityLabel(const xAOD::Jet *jet);
     bool isTopEvent(); // added by SARA
 
@@ -140,12 +141,15 @@ private:
     double m_ElectronPtVarCone20Cut; // added by SARA
     double m_MuonTopoEtCone20Cut; // added by SARA
     double m_MuonPtVarCone20Cut; // added by SARA
+    double m_MuonPtVarCone30Cut; // added by SARA
     std::string m_ElectronTrigger_2016; // added by SARA
     std::string m_MuonTrigger_2016; // added by SARA
     std::string m_JetTrigger_2016; // added by SARA
     std::string m_ElectronTrigger_2017; // added by SARA
     std::string m_MuonTrigger_2017; // added by SARA
     std::string m_JetTrigger_2017; // added by SARA
+    std::string m_ElectronTrigger_201X; //Wildcard trigger naming HLT_e*
+    std::string m_MuonTrigger_201X; //Wildcard trigger naming HLT_mu*
 
     /** @brief Master kill if no tools found. */
     bool m_switch_off;
@@ -382,6 +386,7 @@ private:
     TH2F_LW* m_jet_2D_all = nullptr;
     TH2F_LW* m_jet_2D_good = nullptr;
     TH2F_LW* m_jet_2D_kinematic = nullptr;
+    TH2F_LW* m_jet_2D_jvt = nullptr;
     TH2F_LW* m_jet_2D_kinematic_LS = nullptr;
     TH2F_LW* m_jet_2D_quality = nullptr;
     TH2F_LW* m_jet_2D_suspect = nullptr;
@@ -447,9 +452,17 @@ private:
     TH2F_LW* m_tracks_fitProb_2D_LS = nullptr;
     TH2F_LW* m_tracks_fitChi2OnNdfMax_2D_LS = nullptr;
 
+    /** NEW 2018: jets taggers in pileup bins histograms */
+    TH1F_LW* m_n_mu = nullptr;
+    TH1F_LW* m_tag_mv_w_mu0_30 = nullptr;
+    TH1F_LW* m_tag_mv_w_mu30_50 = nullptr;
+    TH1F_LW* m_tag_mv_w_mu50_70 = nullptr;
+    
     TH1F_LW* m_efficiency = nullptr;
 
     unsigned int m_lumiBlockNum = 0;
+    double m_mu = 0.; 
+    unsigned int m_runNumber = 0;
 
     MonGroup* m_monGr_shift = nullptr;
     MonGroup* m_monGr_LowStat = nullptr;
diff --git a/PhysicsAnalysis/JetTagging/JetTagMonitoring/share/JetTagMonitoring_jobOptions.py b/PhysicsAnalysis/JetTagging/JetTagMonitoring/share/JetTagMonitoring_jobOptions.py
index f3cf1f6ec162acbda36c73d0fd5b49c95c3d7838..09136448efd435032301febbe62cdf822d281fab 100644
--- a/PhysicsAnalysis/JetTagging/JetTagMonitoring/share/JetTagMonitoring_jobOptions.py
+++ b/PhysicsAnalysis/JetTagging/JetTagMonitoring/share/JetTagMonitoring_jobOptions.py
@@ -79,6 +79,8 @@ jetTagMonTool.JetTrigger_2016 = "HLT_j15"; # added by SARA
 jetTagMonTool.ElectronTrigger_2017 = "HLT_e28_lhtight_nod0_ivarloose"; # added by SARA
 jetTagMonTool.MuonTrigger_2017 = "HLT_mu26_ivarmedium"; # added by SARA
 jetTagMonTool.JetTrigger_2017 = "HLT_j15"; # added by SARA
+jetTagMonTool.ElectronTrigger_201X = "HLT_e[2-9][0-9]_.*"; # electrons 20-99 GeV
+jetTagMonTool.MuonTrigger_201X = "HLT_mu.*"; # muons *all* GeV
 
 #ToolSvc += jetTagMonTool
 monManJetTag.AthenaMonTools += [ jetTagMonTool ]
diff --git a/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitoring.cxx b/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitoring.cxx
index e6b6998e9e6fed9d19d0dbe59b874819c1590c8c..9c04937ff2ca6ae786ceba74953599914347553b 100755
--- a/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitoring.cxx
+++ b/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitoring.cxx
@@ -112,6 +112,7 @@ JetTagMonitoring::JetTagMonitoring(const std::string & type, const std::string &
   declareProperty( "MuonTopoEtCone20Cut", m_MuonTopoEtCone20Cut = 0.06 ); // added by SARA -0.06 corresponds to the FixedTightCut working point
   declareProperty( "ElectronPtVarCone20Cut", m_ElectronPtVarCone20Cut = 0.06 ); // added by SARA -0.06 corresponds to the FixedTightCut working point
   declareProperty( "MuonPtVarCone20Cut", m_MuonPtVarCone20Cut = 0.06 ); // added by SARA -0.06 corresponds to the FixedTightCut working point
+  declareProperty( "MuonPtVarCone30Cut", m_MuonPtVarCone30Cut = 0.06 );// corresponds to the FixedTightCut working point  
   
   declareProperty( "ElectronTrigger_2016", m_ElectronTrigger_2016 = "HLT_e26_lhtight_nod0_ivarloose" ); // added by SARA
   declareProperty( "MuonTrigger_2016", m_MuonTrigger_2016 = "HLT_mu26_ivarmedium" ); // added by SARA
@@ -119,6 +120,8 @@ JetTagMonitoring::JetTagMonitoring(const std::string & type, const std::string &
   declareProperty( "ElectronTrigger_2017", m_ElectronTrigger_2017 = "HLT_e28_lhtight_nod0_ivarloose" ); // added by SARA
   declareProperty( "MuonTrigger_2017", m_MuonTrigger_2017 = "HLT_mu26_ivarmedium" ); // added by SARA
   declareProperty( "JetTrigger_2017", m_JetTrigger_2017 = "HLT_j15" ); // added by SARA
+  declareProperty( "ElectronTrigger_201X", m_ElectronTrigger_201X = "HLT_e[2-9][0-9]_.*" ); // e20-e99 triggers
+  declareProperty( "MuonTrigger_201X", m_MuonTrigger_201X = "HLT_mu.*" ); // all mu triggers (including mu4 for Special Runs)
 
   m_isNewLumiBlock = false;
 }
@@ -237,7 +240,7 @@ StatusCode JetTagMonitoring::bookHistograms() {
   // General histograms //
   ////////////////////////
 
-  registerHist(*m_monGr_shift, m_jet_n = TH1F_LW::create("jet_n","Number of Jets; Number of jets",20,0.,20.));
+  registerHist(*m_monGr_shift, m_jet_n = TH1F_LW::create("jet_n","Number of Jets; Number of jets",50,0.,50.));
   registerHist(*m_monGr_shift, m_jet_et  = TH1F_LW::create("jet_et","Jet pT; pT [GeV]",100,0.,500.)); // this is actually filled with pT although called et...
   registerHist(*m_monGr_shift, m_jet_eta = TH1F_LW::create("jet_eta","Jet #eta; #eta",100,-5.,5.));
   registerHist(*m_monGr_shift, m_jet_phi = TH1F_LW::create("jet_phi","Jet #phi; #phi",100,-3.15,3.15));
@@ -246,8 +249,7 @@ StatusCode JetTagMonitoring::bookHistograms() {
   registerHist(*m_monGr_shift, m_global_xPrimVtx = TH1F_LW::create("global_xPrimVtx","Primary Vertex x Position; PV x [mm]",100,-5.0,5.0));
   registerHist(*m_monGr_shift, m_global_yPrimVtx = TH1F_LW::create("global_yPrimVtx","Primary Vertex y Position; PV y [mm]",100,-5.0,5.0));
   registerHist(*m_monGr_shift, m_global_zPrimVtx = TH1F_LW::create("global_zPrimVtx","Primary Vetex z Position; PV z [mm]",100,-250.,250.));
-  registerHist(*m_monGr_shift, m_priVtx_trks = TH1F_LW::create("priVtx_trks","Number of Tracks in PV; Number of tracks",100,-0.5,99.5));
-  //m_priVtx_trks->GetXaxis()->SetTitle("Primary Vertex #trks"); // removed by SARA (put correct title above instead)
+  registerHist(*m_monGr_shift, m_priVtx_trks = TH1F_LW::create("priVtx_trks","Number of Tracks in PV; Number of tracks",150,-0.5,149.5));
 
   registerHist(*m_monGr_shift, m_trackParticle_n = TH1F_LW::create("NTrackParticle","Number of TrackParticles; Number of tracks",100,0.,1000.));
   registerHist(*m_monGr_shift, m_global_BLayerHits = TH1F_LW::create("global_BLayerHits","Number of IBL Hits on TrackParticle; Number of IBL hits",5,0.,5.)); // updated by SARA // IBL hits in Run-2, old b-layer in Run-1
@@ -286,7 +288,7 @@ StatusCode JetTagMonitoring::bookHistograms() {
   m_trigPassed->GetXaxis()->SetBinLabel(7,m_MuonTrigger_2017.c_str());
   m_trigPassed->GetXaxis()->SetBinLabel(8,(m_ElectronTrigger_2017+"_OR_"+m_MuonTrigger_2017).c_str());
   m_trigPassed->GetXaxis()->SetBinLabel(9,m_JetTrigger_2017.c_str());
-
+  
   ///////////////////////
   // Cutflow hitograms //
   ///////////////////////
@@ -307,6 +309,16 @@ StatusCode JetTagMonitoring::bookHistograms() {
   m_cutflow_jet->GetXaxis()->SetBinLabel(4,"Taggable");
   m_cutflow_jet->GetXaxis()->SetBinLabel(5,"Taggable Good");
   m_cutflow_jet->GetXaxis()->SetBinLabel(6,"Taggable Suspect");
+  
+  ///////////////////////
+  // Pileup histograms //
+  ///////////////////////
+
+  registerHist(*m_monGr_shift, m_n_mu =  TH1F_LW::create("n_mu","Number of pile up interactions; <#mu>",100,-0.5,99.5));
+
+  registerHist(*m_monGr_shift, m_tag_mv_w_mu0_30   = TH1F_LW::create("tag_MV_w_mu0_30"  ,(m_mv_algorithmName+" Tag Weight (Taggable Good Jets, mu = [0,30]); "+m_mv_algorithmName+" tag weight").c_str(),100,-1.,1.));
+  registerHist(*m_monGr_shift, m_tag_mv_w_mu30_50   = TH1F_LW::create("tag_MV_w_mu30_50"  ,(m_mv_algorithmName+" Tag Weight (Taggable Good Jets, mu = [30,50]); "+m_mv_algorithmName+" tag weight").c_str(),100,-1.,1.));
+  registerHist(*m_monGr_shift, m_tag_mv_w_mu50_70   = TH1F_LW::create("tag_MV_w_mu50_70"  ,(m_mv_algorithmName+" Tag Weight (Taggable Good Jets, mu = [50,70]); "+m_mv_algorithmName+" tag weight").c_str(),100,-1.,1.));
 
   ////////////////////////////
   // Taggability histograms //
@@ -340,6 +352,7 @@ StatusCode JetTagMonitoring::bookHistograms() {
 
   registerHist(*m_monGr_shift, m_jet_2D_all = TH2F_LW::create("jet_2D_all", "Number of Jets (No Cuts);#eta;#phi", 25, -2.5, 2.5, 25, -TMath::Pi(), TMath::Pi()));
   registerHist(*m_monGr_shift, m_jet_2D_good = TH2F_LW::create("jet_2D_good", "Number of Jets (Quality Cuts);#eta;#phi", 25, -2.5, 2.5, 25, -TMath::Pi(), TMath::Pi()));
+  registerHist(*m_monGr_shift, m_jet_2D_jvt = TH2F_LW::create("jet_2D_jvt", "Number of Jets (JVT Cut);#eta;#phi", 25, -2.5, 2.5, 25, -TMath::Pi(), TMath::Pi()));
   registerHist(*m_monGr_shift, m_jet_2D_kinematic = TH2F_LW::create("jet_2D_kinematic", "Number of Jets (Kinematic Cuts);#eta;#phi", 25, -2.5, 2.5, 25, -TMath::Pi(), TMath::Pi()));
   registerHist(*m_monGr_shift, m_jet_2D_quality = TH2F_LW::create("jet_2D_quality", "Number of Jets (Taggable Good);#eta;#phi", 25, -2.5, 2.5, 25, -TMath::Pi(), TMath::Pi()));
   registerHist(*m_monGr_shift, m_jet_2D_suspect = TH2F_LW::create("jet_2D_suspect", "Number of Jets (Taggable Suspect);#eta;#phi", 25, -2.5, 2.5, 25, -TMath::Pi(), TMath::Pi()));
@@ -584,6 +597,17 @@ StatusCode JetTagMonitoring::fillHistograms() {
 
   ATH_MSG_DEBUG("Lumiblock ID: " << m_lumiBlockNum);
 
+  m_runNumber = thisEventInfo->runNumber();
+
+ // r21 MV2c10 Working Points (https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTaggingBenchmarksRelease21) for 2018 data
+  if(m_runNumber > 343000)
+    {
+      m_mv_60_weight_cut=0.94;
+      m_mv_70_weight_cut=0.83;
+      m_mv_77_weight_cut=0.64;
+      m_mv_85_weight_cut=0.11;
+    }
+
   ////////////////////////////////
   //* Event cleaning           *//
   ////////////////////////////////
@@ -597,23 +621,30 @@ StatusCode JetTagMonitoring::fillHistograms() {
     
   m_cutflow->Fill(1.);
 
+  //////////////////////
+  //* Get Pileup     *//
+  //////////////////////
+
+  m_mu = thisEventInfo->actualInteractionsPerCrossing();
+  m_n_mu->Fill(m_mu); 
+
   ///////////////////////////////
   //* Trigger container       *//
   ///////////////////////////////
 
-  if (m_use_trigdectool && m_trigDecTool != 0) {
+  if (m_use_trigdectool && m_trigDecTool != 0) { // only require trigger if m_use_trigdectool is true (false for express stream) and trigDecTool is ok
 
     ATH_MSG_DEBUG("TrigDecTool: " << m_trigDecTool);
-    
+
     ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_ElectronTrigger_2016 << "): " << m_trigDecTool->isPassed(m_ElectronTrigger_2016));
     ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_MuonTrigger_2016 << "): " << m_trigDecTool->isPassed(m_MuonTrigger_2016));
-    ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_JetTrigger_2016 << "): " << m_trigDecTool->isPassed(m_JetTrigger_2016));
     
-    ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_ElectronTrigger_2016 << "): " << m_trigDecTool->isPassed(m_ElectronTrigger_2016));
-    ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_MuonTrigger_2016 << "): " << m_trigDecTool->isPassed(m_MuonTrigger_2016));
-    ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_JetTrigger_2016 << "): " << m_trigDecTool->isPassed(m_JetTrigger_2016));
-  
- 
+    ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_ElectronTrigger_2017 << "): " << m_trigDecTool->isPassed(m_ElectronTrigger_2017));
+    ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_MuonTrigger_2017 << "): " << m_trigDecTool->isPassed(m_MuonTrigger_2017));
+
+    ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_ElectronTrigger_201X << "): " << m_trigDecTool->isPassed(m_ElectronTrigger_201X));
+    ATH_MSG_DEBUG("m_use_trigdectool: " << m_use_trigdectool << ", (m_trigDecTool->isPassed(" << m_MuonTrigger_201X << "): " << m_trigDecTool->isPassed(m_MuonTrigger_201X));
+    
     auto chainGroup = m_trigDecTool->getChainGroup(".*");
     for (auto & trig : chainGroup->getListOfTriggers()) {
       ATH_MSG_DEBUG("Found trigger " << trig);
@@ -621,18 +652,37 @@ StatusCode JetTagMonitoring::fillHistograms() {
     
     m_trigPassed->Fill(0.);
 
-    // 2016 menu
-    if (m_trigDecTool->isPassed(m_ElectronTrigger_2016)) m_trigPassed->Fill(1.);
-    if (m_trigDecTool->isPassed(m_MuonTrigger_2016)) m_trigPassed->Fill(2.);
-    if (m_trigDecTool->isPassed(m_ElectronTrigger_2016) && m_trigDecTool->isPassed(m_MuonTrigger_2016)) m_trigPassed->Fill(3.);
-    if (m_trigDecTool->isPassed(m_JetTrigger_2016)) m_trigPassed->Fill(4.);
-
-    // 2017 menu
-    if (m_trigDecTool->isPassed(m_ElectronTrigger_2017)) m_trigPassed->Fill(5.);
-    if (m_trigDecTool->isPassed(m_MuonTrigger_2017)) m_trigPassed->Fill(6.);
-    if (m_trigDecTool->isPassed(m_ElectronTrigger_2017) && m_trigDecTool->isPassed(m_MuonTrigger_2017)) m_trigPassed->Fill(7.);
-    if (m_trigDecTool->isPassed(m_JetTrigger_2017)) m_trigPassed->Fill(8.);
-
+    if(m_runNumber > 343000) // 2018 data
+      {
+	// 201X menu triggers
+	m_trigPassed->GetXaxis()->SetBinLabel(2,m_ElectronTrigger_201X.c_str());
+	m_trigPassed->GetXaxis()->SetBinLabel(3,m_MuonTrigger_201X.c_str());
+	m_trigPassed->GetXaxis()->SetBinLabel(4,(m_ElectronTrigger_201X+"_OR_"+m_MuonTrigger_201X).c_str());
+	m_trigPassed->GetXaxis()->SetBinLabel(5,(m_ElectronTrigger_201X+"_AND_"+m_MuonTrigger_201X).c_str());
+	m_trigPassed->GetXaxis()->SetBinLabel(6,"");
+	m_trigPassed->GetXaxis()->SetBinLabel(7,"");
+	m_trigPassed->GetXaxis()->SetBinLabel(8,"");
+	m_trigPassed->GetXaxis()->SetBinLabel(9,"");
+	// 201X menu triggers
+	if (m_trigDecTool->isPassed(m_ElectronTrigger_201X)) m_trigPassed->Fill(1.);
+	if (m_trigDecTool->isPassed(m_MuonTrigger_201X)) m_trigPassed->Fill(2.);
+	if (m_trigDecTool->isPassed(m_ElectronTrigger_201X) || m_trigDecTool->isPassed(m_MuonTrigger_201X)) m_trigPassed->Fill(3.);
+	if (m_trigDecTool->isPassed(m_ElectronTrigger_201X) && m_trigDecTool->isPassed(m_MuonTrigger_201X)) m_trigPassed->Fill(4.);
+      }
+    else
+      {
+	// 2016 menu
+	if (m_trigDecTool->isPassed(m_ElectronTrigger_2016)) m_trigPassed->Fill(1.);
+	if (m_trigDecTool->isPassed(m_MuonTrigger_2016)) m_trigPassed->Fill(2.);
+	if (m_trigDecTool->isPassed(m_ElectronTrigger_2016) && m_trigDecTool->isPassed(m_MuonTrigger_2016)) m_trigPassed->Fill(3.);
+	if (m_trigDecTool->isPassed(m_JetTrigger_2016)) m_trigPassed->Fill(4.);
+	
+	// 2017 menu
+	if (m_trigDecTool->isPassed(m_ElectronTrigger_2017)) m_trigPassed->Fill(5.);
+	if (m_trigDecTool->isPassed(m_MuonTrigger_2017)) m_trigPassed->Fill(6.);
+	if (m_trigDecTool->isPassed(m_ElectronTrigger_2017) && m_trigDecTool->isPassed(m_MuonTrigger_2017)) m_trigPassed->Fill(7.);
+	if (m_trigDecTool->isPassed(m_JetTrigger_2017)) m_trigPassed->Fill(8.);
+      }
   }
 
   //////////////////////
@@ -708,12 +758,22 @@ StatusCode JetTagMonitoring::fillHistograms() {
   //     int    vtxNDoF  = primaryRecVertex.fitQuality().numberDoF();
 
   //     double vtxProb  = vtxChiSq / vtxNDoF;
+      
 
   if (m_use_trigdectool && m_trigDecTool != 0) { // only require trigger if m_use_trigdectool is true (will be false eg for express stream) and trigDecTool is ok
     // Require emu tigger to have unbiased sample of jets (and larger fraction of b-jets since many of these are ttbar events)
-    if (!m_trigDecTool->isPassed(m_ElectronTrigger_2016) && !m_trigDecTool->isPassed(m_MuonTrigger_2016) && // 2016 menu
-	!m_trigDecTool->isPassed(m_ElectronTrigger_2017) && !m_trigDecTool->isPassed(m_MuonTrigger_2017)) // 2017 menu
+
+  if(m_runNumber > 343000) // 2018 data
+    {
+      if (!m_trigDecTool->isPassed(m_ElectronTrigger_201X) && !m_trigDecTool->isPassed(m_MuonTrigger_201X)) // 201X menu triggers
       return StatusCode::SUCCESS;
+    }
+  else
+    {
+      if (!m_trigDecTool->isPassed(m_ElectronTrigger_2016) && !m_trigDecTool->isPassed(m_MuonTrigger_2016) && // 2016 menu
+	  !m_trigDecTool->isPassed(m_ElectronTrigger_2017) && !m_trigDecTool->isPassed(m_MuonTrigger_2017)) // 2017 menu
+	return StatusCode::SUCCESS;
+    }
   }
   
   m_cutflow->Fill(4.);
@@ -929,14 +989,28 @@ bool JetTagMonitoring::isTopEvent() { // added by SARA for 2017 data taking
     if ((*muonItr) -> pt() / Gaudi::Units::GeV < m_MuonPtCut) continue;
     bool inAcceptance = TMath::Abs((*muonItr) -> eta()) < m_MuonEtaCut;
     if (!inAcceptance) continue;
-    // medium muons
-    if ((*muonItr)->quality() != 1) continue; // 1 = medium muon
-    float topoetcone20_value = -999.;
-    float ptvarcone20_value = -999.;
-    (*muonItr)-> isolation(topoetcone20_value, xAOD::Iso::topoetcone20);
-    (*muonItr)-> isolation(ptvarcone20_value, xAOD::Iso::ptvarcone20);
-    if (topoetcone20_value/(*muonItr)->pt() > m_MuonTopoEtCone20Cut) continue;
-    if (ptvarcone20_value/(*muonItr)->pt() > m_MuonPtVarCone20Cut) continue;
+
+    if(m_runNumber > 343000) // 2018 data
+      {
+	// medium muons
+	if ((*muonItr)->quality() > 1) continue; // 0 tight, 1 medium, medium <= 1 (includes 0)
+	float topoetcone20_value = -999.;
+	float ptvarcone30_value = -999.;
+	(*muonItr)-> isolation(topoetcone20_value, xAOD::Iso::topoetcone20);
+	(*muonItr)-> isolation(ptvarcone30_value, xAOD::Iso::ptvarcone30);
+	if (topoetcone20_value/(*muonItr)->pt() > m_MuonTopoEtCone20Cut) continue;
+	if (ptvarcone30_value/(*muonItr)->pt() > m_MuonPtVarCone30Cut) continue;
+      }
+    else
+      {  // medium muons
+	if ((*muonItr)->quality() != 1) continue; // 1 = medium muon
+	float topoetcone20_value = -999.;
+	float ptvarcone20_value = -999.;
+	(*muonItr)-> isolation(topoetcone20_value, xAOD::Iso::topoetcone20);
+	(*muonItr)-> isolation(ptvarcone20_value, xAOD::Iso::ptvarcone20);
+	if (topoetcone20_value/(*muonItr)->pt() > m_MuonTopoEtCone20Cut) continue;
+	if (ptvarcone20_value/(*muonItr)->pt() > m_MuonPtVarCone20Cut) continue;
+      }
     isoMuonItr = muonItr;
     ++n_isoMuons;
   }
@@ -1095,6 +1169,21 @@ void JetTagMonitoring::fillJetHistograms() {
     // Jets passing kinemtic cuts
 
     m_cutflow_jet->Fill(2.); // jets passing kinematic cuts
+
+    if(m_runNumber > 343000) // 2018 data
+      {
+	//Fix cutflow bin labels
+	m_cutflow_jet->GetXaxis()->SetBinLabel(4,"Pass JVT cut");
+	m_cutflow_jet->GetXaxis()->SetBinLabel(5,"Taggable");
+	m_cutflow_jet->GetXaxis()->SetBinLabel(6,"Taggable Good");
+	m_cutflow_jet->GetXaxis()->SetBinLabel(7,"Taggable Suspect");
+
+	if ( !passJVTCuts(*jetItr) ) continue; 
+	// Jets passing JVT cuts
+	m_cutflow_jet->Fill(3.); // passing JVT cuts (Jet Vertex Tagger, against pile-up jets)
+	m_jet_2D_jvt->Fill((*jetItr)->eta(), (*jetItr)->phi(), 1.);
+      }
+
     if (n_jets_kinematic == 0) firstKinematicjetItr = jetItr; // added by SARA - save this iterator since I will need to fill top histograms also for this 1st one if I find a 2nd kinematic jet later
     ++n_jets_kinematic; // added by SARA
 
@@ -1124,18 +1213,28 @@ void JetTagMonitoring::fillJetHistograms() {
     
     //if ( m_do_cuts && quality == badJet ) continue; // removed by SARA (otherwise we never fill the badJet histograms below)
     
+
     if ( taggabilityLabel == goodJet || taggabilityLabel == suspectJet ) {
-      m_cutflow_jet->Fill(3.); // added by SARA
+    if(m_runNumber > 343000) // 2018 data
+      {m_cutflow_jet->Fill(4.);} // added by SARA
+    else
+      {m_cutflow_jet->Fill(3.);} // added by SARA
       fillDetailedHistograms(*jetItr, taggabilityLabel); // SARA: added if statement to make sure we don't fill the detailed histograms for bad jets (since I removed the continue statement above)	
     }
     
     if ( taggabilityLabel == goodJet ) {
-      m_cutflow_jet->Fill(4.); // added by SARA
+    if(m_runNumber > 343000) // 2018 data
+      {m_cutflow_jet->Fill(5.);} // added by SARA
+    else
+      {m_cutflow_jet->Fill(4.);} // added by SARA
       m_jet_2D_quality->Fill((*jetItr)->eta(), (*jetItr)->phi(), 1.);
       fillGoodJetHistos(*jetItr);
     }
     else if ( taggabilityLabel == suspectJet ) {
-      m_cutflow_jet->Fill(5.); // added by SARA
+    if(m_runNumber > 343000) // 2018 data
+      {m_cutflow_jet->Fill(6.);} // added by SARA
+    else
+      {m_cutflow_jet->Fill(5.);} // added by SARA
       m_jet_2D_suspect->Fill((*jetItr)->eta(), (*jetItr)->phi(), 1.);
       fillSuspectJetHistos(*jetItr);
     }
@@ -1395,6 +1494,13 @@ void JetTagMonitoring::fillGoodJetHistos(const xAOD::Jet *jet) {
   m_tag_mv_w->Fill(mv);   
   m_tag_mv_w_LS->Fill(mv);   
 
+  // Plots Tagger in pile up bins
+  double mu = m_mu; 
+
+  if ( mu > 0. && mu < 30. ) m_tag_mv_w_mu0_30->Fill(mv);
+  else if ( mu > 30. && mu < 50. ) m_tag_mv_w_mu30_50->Fill(mv);
+  else if ( mu > 50. && mu < 70. ) m_tag_mv_w_mu50_70->Fill(mv);
+
   if      ( jet->pt() / Gaudi::Units::GeV > 200. ) m_tag_mv_w_pT200->Fill(mv);   
   else if ( jet->pt() / Gaudi::Units::GeV > 100. ) m_tag_mv_w_pT100_200->Fill(mv);   
   else if ( jet->pt() / Gaudi::Units::GeV >  50. ) m_tag_mv_w_pT50_100->Fill(mv);   
@@ -1557,6 +1663,19 @@ void JetTagMonitoring::fillBadJetHistos(const xAOD::Jet *jet) {
 
 }
 
+bool JetTagMonitoring::passJVTCuts(const xAOD::Jet *jet) {
+
+  ATH_MSG_DEBUG("passJVTCuts()");
+  
+  static SG::AuxElement::Accessor<float> JVT( "Jvt" ); //JVT > 0.59 (60 GeV)
+  double jvt = JVT(*jet);
+
+  if( !( ((jet->pt()<60000)&&(abs(jet->eta())<2.4)&&(jvt > 0.59))||((jet->pt()<60000)&&(abs(jet->eta())>2.4))||(jet->pt()>60000) ) ) return false;
+
+  return true;
+}
+
+
 /*
   void JetTagMonitoring::fillBadZone(int zone, double ip3d) {