diff --git a/Trigger/TrigT1/TrigT1CaloMonitoring/python/PprMonitorAlgorithm.py b/Trigger/TrigT1/TrigT1CaloMonitoring/python/PprMonitorAlgorithm.py
index 4aa674810cc2738105926dc23dbaddcca9dde58f..7279d52864203671bd634bad997cefe56e2ca8f9 100644
--- a/Trigger/TrigT1/TrigT1CaloMonitoring/python/PprMonitorAlgorithm.py
+++ b/Trigger/TrigT1/TrigT1CaloMonitoring/python/PprMonitorAlgorithm.py
@@ -55,13 +55,17 @@ def PprMonitoringConfig(inputFlags):
     phimax_2d = 64
     phimax_1d = 2.*math.pi 
     maxEnergyRange = 256
+    bcn = 0xdec # 3564 bunches
 
    
     #######################   
     # PPM inputs (LUT-CP) #
     #######################
     histPath = trigPath+'/LUT-CP/Distributions'
-    
+
+    # LUT per BCN
+    myGroup.defineHistogram('cp_BCID;ppm_1d_tt_lutcp_LutPerBCN', title='Number of LUT-CP > 5 GeV/2 per BC; Bunch crossing; # of LUT above limit', type='TH1F', path=histPath, xbins=bcn, xmin=0, xmax=bcn, cutmask='mask_cpET_5')
+      
     # EM distributions
     myGroup.defineHistogram('etaTT_EM;ppm_em_1d_tt_lutcp_Eta', title='EM LUT-CP: Distribution of peak in #eta; #eta', type='TH1F', path=histPath, xbins=etabins, cutmask='mask_EM_cpET_0_noPhi')
 
@@ -88,7 +92,10 @@ def PprMonitoringConfig(inputFlags):
     # PPM inputs (LUT-JEP) #
     ########################
     histPath = trigPath+'/LUT-JEP/Distributions'
-    
+   
+    # LUT per BCN
+    myGroup.defineHistogram('jep_BCID;ppm_1d_tt_lutjep_LutPerBCN', title='Number of LUT-JEP > 5 GeV per BC; Bunch crossing; # of LUT above limit', type='TH1F', path=histPath, xbins=bcn, xmin=0, xmax=bcn, cutmask='mask_jepET_5')
+ 
     # EM distributions
     myGroup.defineHistogram('etaTT_EM;ppm_em_1d_tt_lutjep_Eta', title='EM LUT-JEP: Distribution of peak in #eta', type='TH1F', path=histPath, xbins=etabins, cutmask='mask_EM_jepET_0_noPhi')
 
diff --git a/Trigger/TrigT1/TrigT1CaloMonitoring/src/PprMonitorAlgorithm.cxx b/Trigger/TrigT1/TrigT1CaloMonitoring/src/PprMonitorAlgorithm.cxx
index ab734bcf4c803e29f9fd1446f8a7a0911b54821e..492f7eacda70025f5e7189f76464adf70c3ab9b6 100644
--- a/Trigger/TrigT1/TrigT1CaloMonitoring/src/PprMonitorAlgorithm.cxx
+++ b/Trigger/TrigT1/TrigT1CaloMonitoring/src/PprMonitorAlgorithm.cxx
@@ -28,8 +28,8 @@ StatusCode PprMonitorAlgorithm::initialize() {
   ATH_MSG_DEBUG("m_TT_ADC_HitMap_Thresh " << m_TT_ADC_HitMap_Thresh);
 
   // we initialise all the containers that we need
-  ATH_CHECK(m_xAODTriggerTowerContainerName.initialize());
-
+  ATH_CHECK( m_xAODTriggerTowerContainerName.initialize() );
+  
   // retrieve any tools if needed
   //ATH_CHECK(myTool.retrieve());
   
@@ -45,15 +45,19 @@ StatusCode PprMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
   // Contains the variables to monitor
   std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> variables;
 
-
-  //Retrieve Trigger Towers from SG
+  // Retrieve event info from SG
+  
+  uint32_t bunchCrossing = 0;
+  bunchCrossing = ctx.eventID().bunch_crossing_id();
+  ATH_MSG_DEBUG("BCID: " << bunchCrossing);
+  
+  // Retrieve Trigger Towers from SG
   SG::ReadHandle<xAOD::TriggerTowerContainer> triggerTowerTES(m_xAODTriggerTowerContainerName, ctx);
   if(!triggerTowerTES.isValid()){
     ATH_MSG_ERROR("No Trigger Tower container found in TES  "<< m_xAODTriggerTowerContainerName); 
     return StatusCode::FAILURE;
   }
 
-
   // Create a vector of trigger towers with quantities to be monitored
   std::vector<MonitorTT> vecMonTT_EM;  // EM towers
   std::vector<MonitorTT> vecMonTT_HAD; // HAD towers
@@ -70,7 +74,7 @@ StatusCode PprMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
 
 
   // Variables to monitor 
-  
+ 
   // EM towers
   // eta for 2-d eta-phi maps (contains "duplicate" entries to account for granularity of multiple phi bins in forward region)
   auto etaTT_EM = Monitored::Collection("etaTT_EM", vecMonTT_EM, []( const auto &emTower ){return emTower.tower->eta();});
@@ -130,13 +134,17 @@ StatusCode PprMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
   std::vector<int> vec_EM_jepET_0_noDuplicates = {};
   std::vector<int> vec_EM_jepET_5 = {};
   std::vector<int> vec_EM_jepET_5_noDuplicates = {};
-
+  std::vector<int> vec_cpET_5 = {};
+  std::vector<int> vec_jepET_5 = {};
+  
   // Weights
   std::vector<int> vec_EM_ADC = {};
 
   // For average ADC plots
   std::vector<double> vec_EM_maxADCPlus1 = {};
 
+  std::vector<uint32_t> vec_cp_BCID = {};
+  std::vector<uint32_t> vec_jep_BCID = {};
 
   for (auto& emTower : vecMonTT_EM) {
   
@@ -144,6 +152,8 @@ StatusCode PprMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
     int cpET = (emTower.tower)->cpET();
     int jepET = emTower.jepET;
     bool isDuplicate = emTower.isDuplicate;
+    vec_cp_BCID.push_back(bunchCrossing);
+    vec_jep_BCID.push_back(bunchCrossing);
 
     ATH_MSG_DEBUG("cpET: " << cpET << " jepET: " << jepET);
 
@@ -153,11 +163,12 @@ StatusCode PprMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
     vec_EM_cpET_0_noDuplicates.push_back((cpET > 0) && !isDuplicate);   // For plots not binned in phi
     vec_EM_cpET_5.push_back(cpET > 5);
     vec_EM_cpET_5_noDuplicates.push_back((cpET > 5) && !isDuplicate);
+    vec_cpET_5.push_back((cpET > 5) && !isDuplicate);
     vec_EM_jepET_0.push_back(jepET > 0);
     vec_EM_jepET_0_noDuplicates.push_back((jepET > 0) && !isDuplicate);
     vec_EM_jepET_5.push_back(jepET > 5);
     vec_EM_jepET_5_noDuplicates.push_back((jepET > 5) && !isDuplicate); 
-      
+    vec_jepET_5.push_back((jepET > 5) && !isDuplicate);      
 
     // -------- ADC hitmaps per timeslice --------
     unsigned int tslice = (emTower.tower)->adcPeak();
@@ -212,6 +223,8 @@ StatusCode PprMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
     int cpET = (hadTower.tower)->cpET();
     int jepET = hadTower.jepET;
     bool isDuplicate = hadTower.isDuplicate;
+    vec_cp_BCID.push_back(bunchCrossing);
+    vec_jep_BCID.push_back(bunchCrossing);
 
     if (cpET > 0) ATH_MSG_DEBUG("HAD tower cpET: " << cpET << " jepET: " << jepET);
 
@@ -221,10 +234,12 @@ StatusCode PprMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
     vec_HAD_cpET_0_noDuplicates.push_back((cpET > 0) && !isDuplicate);   // For plots not binned in phi
     vec_HAD_cpET_5.push_back(cpET > 5);
     vec_HAD_cpET_5_noDuplicates.push_back((cpET > 5) && !isDuplicate);
+    vec_cpET_5.push_back((cpET > 5) && !isDuplicate);
     vec_HAD_jepET_0.push_back(jepET > 0);
     vec_HAD_jepET_0_noDuplicates.push_back((jepET > 0) && !isDuplicate);
     vec_HAD_jepET_5.push_back(jepET > 5);
     vec_HAD_jepET_5_noDuplicates.push_back((jepET > 5) && !isDuplicate);
+    vec_jepET_5.push_back((jepET > 5) && !isDuplicate);
 
     // -------- ADC hitmaps per timeslice -------- 
     unsigned int tslice = (hadTower.tower)->adcPeak();
@@ -253,6 +268,13 @@ StatusCode PprMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
 
   } // End loop over vector of HAD towers 
  
+
+  // Define additional monitored variables (BCID)
+  auto cp_BCID = Monitored::Collection("cp_BCID", vec_cp_BCID);
+  variables.push_back(cp_BCID);
+
+  auto jep_BCID = Monitored::Collection("jep_BCID", vec_jep_BCID);
+  variables.push_back(jep_BCID);
   
   // Define additional monitored variables (EM) 
   auto maxADCPlus1_EM = Monitored::Collection("maxADCPlus1_EM", vec_EM_maxADCPlus1);
@@ -262,6 +284,13 @@ StatusCode PprMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const
   auto maxADCPlus1_HAD = Monitored::Collection("maxADCPlus1_HAD", vec_HAD_maxADCPlus1);
   variables.push_back(maxADCPlus1_HAD);
 
+  // Define cutmask
+  auto mask_cpET_5 = Monitored::Collection("mask_cpET_5", vec_cpET_5);
+  variables.push_back(mask_cpET_5);
+
+  auto mask_jepET_5 = Monitored::Collection("mask_jepET_5", vec_jepET_5);
+  variables.push_back(mask_jepET_5);
+
   // Define the cutmasks (EM)
   auto mask_EM_noDuplicates = Monitored::Collection("mask_EM_noDuplicates", vec_EM_noDuplicates);
   variables.push_back(mask_EM_noDuplicates);