diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXAlgos/src/jFexEmulatedTowers.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXAlgos/src/jFexEmulatedTowers.cxx
index bfe0b386dc72d5a812e9b5cfd5e26aef27a22394..88046adf29ceeef86b48bff4d6185f757df01ab3 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXAlgos/src/jFexEmulatedTowers.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXAlgos/src/jFexEmulatedTowers.cxx
@@ -135,6 +135,7 @@ StatusCode jFexEmulatedTowers::execute(const EventContext& ctx) const {
             }
         
             float Total_Et = 0;
+            unsigned int countMasked = 0;
             for (auto const& SCellID : it_TTower2SCells->second ) {
                 
                 //check that the SCell Identifier exists in the map
@@ -150,6 +151,7 @@ StatusCode jFexEmulatedTowers::execute(const EventContext& ctx) const {
                 if( (myCell->provenance() >> 7 & 0x1) and m_apply_masking ) {
                     //if masked then Et = 0
                     et = 0.0;
+                    countMasked++;
                 }
                 
                 if(myCell->quality() == 1){
@@ -160,7 +162,7 @@ StatusCode jFexEmulatedTowers::execute(const EventContext& ctx) const {
                 
             }      
             
-            Total_Et_encoded = jFEXCompression::Compress( Total_Et ); 
+            Total_Et_encoded = jFEXCompression::Compress( Total_Et, countMasked == (it_TTower2SCells->second).size() ? true : false ); 
             
         }
         else{
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXAlgos/src/jFexTower2SCellDecorator.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXAlgos/src/jFexTower2SCellDecorator.cxx
index 65bb16bf99e44e684158df9e0e798fef51735fcd..a841ca7d910beb817f6ada85143e5f4b6d9d6fd9 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXAlgos/src/jFexTower2SCellDecorator.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXAlgos/src/jFexTower2SCellDecorator.cxx
@@ -194,8 +194,15 @@ StatusCode jFexTower2SCellDecorator::execute(const EventContext& ctx) const {
             for(const auto& tmpet : scEt){
                 tmpSCellEt += tmpet;
             }
+            
+            //How many SCell are masked? if all then send invalid code
+            unsigned int count_scMask =0;
+            for(const auto& masked : scMask){
+                if(masked) count_scMask++;
+            }
+            
             SCellEt = tmpSCellEt;
-            jFexEtencoded = jFEXCompression::Compress( tmpSCellEt );
+            jFexEtencoded = jFEXCompression::Compress( tmpSCellEt, count_scMask == scMask.size() ? true : false );
             jFexEt        = jFEXCompression::Expand( jTower->jTowerEt() );
         }
         else if(source == 1){
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXCompression.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXCompression.h
index 9dd8655f462d2f894a71fe751144c4b6a5779d68..bddb2c219ff1bdf20d5bf9ee57cf3bb644205da2 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXCompression.h
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXCompression.h
@@ -31,7 +31,7 @@ class jFEXCompression {
 
 public: 
   /** Compress data */
-  static unsigned int Compress(float floatEt);
+  static unsigned int Compress(float floatEt, bool empty = false);
   /** Uncompress data */
   static int Expand(unsigned int code);
   /** Apply threshold to compressed data */
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXCompression.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXCompression.cxx
index a322e5021b1523500726961a8ac7f4556f0ed9c3..db8365057c1a70abe6c516037c5387bcc71880aa 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXCompression.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXCompression.cxx
@@ -17,7 +17,10 @@ const int jFEXCompression::s_steps[] = {25, 50, 100, 200, 400};
 const int jFEXCompression::s_minET[] = {-3150, 6400, 25600, 102400, 409600};
 const int jFEXCompression::s_minCode[] = {2, 384, 768, 1536, 3072};
 
-unsigned int jFEXCompression::Compress(float floatEt) {
+unsigned int jFEXCompression::Compress(float floatEt, bool empty) {
+    
+    //If all Scells are masked, then send empty/data not available
+    if(empty) return s_NoData;
     
     int Et = std::round(floatEt);
 
diff --git a/Trigger/TrigT1/TrigT1CaloMonitoring/python/JfexInputMonitorAlgorithm.py b/Trigger/TrigT1/TrigT1CaloMonitoring/python/JfexInputMonitorAlgorithm.py
index 38d94d2785a814c89c8201480957adf4a817ed8c..df4dc76ea06878883f88345092ec8c0b7eb5e9b8 100644
--- a/Trigger/TrigT1/TrigT1CaloMonitoring/python/JfexInputMonitorAlgorithm.py
+++ b/Trigger/TrigT1/TrigT1CaloMonitoring/python/JfexInputMonitorAlgorithm.py
@@ -20,7 +20,7 @@ def JfexInputMonitoringConfig(inputFlags):
         
         #Decorator for the DataTowers
         from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CaloFEXDecoratorCfg
-        result.merge(L1CaloFEXDecoratorCfg(inputFlags,"jFexTower2SCellDecorator"))
+        result.merge(L1CaloFEXDecoratorCfg(inputFlags,"jFexTower2SCellDecorator",ExtraInfo = False))
         
         #jfex emulated input: EmulatedTowers
         from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
@@ -76,11 +76,11 @@ def JfexInputMonitoringConfig(inputFlags):
         DetailsGroup.append( helper.addGroup(JfexInputMonAlg, groupName+"_details_"+str(i)   , mainDir))
         
         if(i == 1):
-            DetailsGroup[i].defineHistogram('DataEt,EmuSum;SumSCell_vs_Data_'+Calosource_names[i], title='Data Et vs Tile Et ('+ Calosource_names[i]+'); Data Et [GeV]; Tile Et [GeV]',
+            DetailsGroup[i].defineHistogram('DataEt_Tile,EmulatedEt_Tile;SumSCell_vs_Data_'+Calosource_names[i], title='Data Et vs Tile Et ('+ Calosource_names[i]+'); Data Et [GeV]; Tile Et [GeV]',
                             type='TH2F',path=trigPath+"expert/", xbins=200,xmin=0,xmax=100,ybins=200,ymin=0,ymax=100)
                             
         else:    
-            DetailsGroup[i].defineHistogram('DataEt,EmuSum;SumSCell_vs_Data_'+Calosource_names[i], title='Data vs SCell Sum Et ('+ Calosource_names[i]+'); Data Et [MeV]; SCell Sum Et [MeV]',
+            DetailsGroup[i].defineHistogram('DataEt,EmulatedEt;SumSCell_vs_Data_'+Calosource_names[i], title='Data vs SCell Sum Et ('+ Calosource_names[i]+'); Data Et [MeV]; SCell Sum Et [MeV]',
                             type='TH2F',path=trigPath+"expert/", xbins=160,xmin=-2000,xmax=2000,ybins=160,ymin=-2000,ymax=2000)
                             
         
@@ -88,7 +88,10 @@ def JfexInputMonitoringConfig(inputFlags):
     myGroup.defineHistogram('region,type;DataErrors', title='jFEX Data mismatches per region; Region; Type',
                             type='TH2F',path=trigPath, xbins=7,xmin=0,xmax=7,ybins=2,ymin=0,ymax=2,xlabels=Calosource_names,ylabels=["Invalid codes","Data mismatch"])
 
-    myGroup.defineHistogram('TowerEtaInvalid,TowerPhiInvalid;2Dmap_InvalidCodes', title='jFex DataTower Invalid Et codes; #eta; #phi',
+    myGroup.defineHistogram('TowerEtaInvalid,TowerPhiInvalid;2Dmap_InvalidCodes', title='jFex DataTower Invalid Et codes (4095); #eta; #phi',
+                            type='TH2F',path=trigPath, **eta_phi_bins)
+
+    myGroup.defineHistogram('TowerEtaEmpty,TowerPhiEmpty;2Dmap_EmptyCodes', title='jFex DataTower Empty Et codes (0); #eta; #phi',
                             type='TH2F',path=trigPath, **eta_phi_bins)
                             
     DecorGroup.defineHistogram('TowerEta,TowerPhi;2Dmap_MismatchedEts', title='jFex DataTower mismatches (no invalid codes); #eta; #phi',
diff --git a/Trigger/TrigT1/TrigT1CaloMonitoring/src/JfexInputMonitorAlgorithm.cxx b/Trigger/TrigT1/TrigT1CaloMonitoring/src/JfexInputMonitorAlgorithm.cxx
index f5f8ca93f7350160f7a07081402ee1778a75e2a1..17e4b7937aca662f7e516af51041d606eea02ef5 100644
--- a/Trigger/TrigT1/TrigT1CaloMonitoring/src/JfexInputMonitorAlgorithm.cxx
+++ b/Trigger/TrigT1/TrigT1CaloMonitoring/src/JfexInputMonitorAlgorithm.cxx
@@ -86,20 +86,23 @@ StatusCode JfexInputMonitorAlgorithm::fillHistograms( const EventContext& ctx )
    
     
     
-    // monitored variables for histogramscd 
+    // monitored variables for histograms 
     auto nJfexTowers = Monitored::Scalar<int>("NJfexTowers",0.0);
     auto Towereta = Monitored::Scalar<float>("TowerEta",0.0);
     auto Towerphi = Monitored::Scalar<float>("TowerPhi",0.0);
     auto ToweretaDeco = Monitored::Scalar<float>("TowerEtaDeco",0.0);
     auto TowerphiDeco = Monitored::Scalar<float>("TowerPhiDeco",0.0);
     auto DataEt = Monitored::Scalar<float>("DataEt",0.0);
-    auto SCellSum = Monitored::Scalar<float>("SCellSum",0.0);
-    auto EmuSum = Monitored::Scalar<float>("EmuSum",0.0);
+    auto EmulatedEt = Monitored::Scalar<float>("EmulatedEt",0.0);
+    auto DataEt_Tile = Monitored::Scalar<float>("DataEt_Tile",0.0);
+    auto EmulatedEt_Tile = Monitored::Scalar<float>("EmulatedEt_Tile",0.0);
     auto region = Monitored::Scalar<int>("region",0.0);
     auto type = Monitored::Scalar<int>("type",0.0);
     auto frac_SCellSum = Monitored::Scalar<float>("frac_SCellSum",0.0);
     auto ToweretaInvalid = Monitored::Scalar<float>("TowerEtaInvalid",-99.0);
     auto TowerPhiInvalid = Monitored::Scalar<float>("TowerPhiInvalid",-99.0);
+    auto ToweretaEmpty = Monitored::Scalar<float>("TowerEtaEmpty",-99.0);
+    auto TowerPhiEmpty = Monitored::Scalar<float>("TowerPhiEmpty",-99.0);
     auto Towerglobaleta = Monitored::Scalar<int>("TowerGlobalEta",0);
     auto Towerglobalphi = Monitored::Scalar<uint32_t>("TowerGlobalPhi",0);
     auto Towermodule = Monitored::Scalar<uint8_t>("TowerModule",0);
@@ -145,25 +148,63 @@ StatusCode JfexInputMonitorAlgorithm::fillHistograms( const EventContext& ctx )
                 ATH_MSG_WARNING("DataTower: "<<TTID<< " with Calosource: "<<source<< "is repeated. It shouldn't! ");
             }
             
+            DataEt         = jTowerEtMeV(*dataTower);
+            EmulatedEt     = SCellEtMeV(*dataTower);
+
             
+            // If Tile (Calosource == 1) then use Tile information
+            if(source == 1){
+                EmulatedEt      = TileEtMeV(*dataTower);
+               
+                DataEt_Tile     = DataEt/Gaudi::Units::GeV;
+                EmulatedEt_Tile = EmulatedEt/Gaudi::Units::GeV;
+                fill(m_Grouphist+"_details_"+std::to_string(source),DataEt_Tile,EmulatedEt_Tile); 
+            }
+            else{
+                fill(m_Grouphist+"_details_"+std::to_string(source),DataEt,EmulatedEt); 
+            }          
+                                    
+            fill(m_Grouphist+"_decorated_all" ,DataEt,EmulatedEt);
             
-            DataEt = jTowerEtMeV(*dataTower);
-            SCellSum = SCellEtMeV(*dataTower);
-                       
-            fill(m_Grouphist+"_decorated_all",DataEt,SCellSum);
+             
             
-            //Looking at decorated variables
+            //Looking at decorated variables. Is real time path data Et the same as the simulated one (encoded Et)?
             if( (dataTower->et_count()).at(0) != emulated_jtowerEt(*dataTower)) {
                 
                 std::string location = "EM layer";
-                // if source is Tile, HEC, FCAL2 and FCAL3 then location is HAD
-                if(dataTower->Calosource()== 1 || dataTower->Calosource()== 3 || dataTower->Calosource() == 5 ||  dataTower->Calosource() == 6 ){
+                if(dataTower->Calosource()== 1 || dataTower->Calosource()== 3 || dataTower->Calosource() == 5 ||  dataTower->Calosource() == 6 ){ // if source is Tile, HEC, FCAL2 and FCAL3 then location is HAD
                     location="HAD layer";
                 } 
                 
                 if( (dataTower->et_count()).at(0) != m_InvalidCode ){
-                    frac_SCellSum = DataEt != 0 ? (SCellSum - DataEt)/DataEt : 0;
-                    fill(m_Grouphist+"_decorated",Towereta,Towerphi,DataEt,SCellSum,frac_SCellSum);
+                    ATH_MSG_WARNING("Tower:"<< TTID << " source:"<< +dataTower->Calosource() << " for eventNumber:"<< GetEventInfo(ctx)->eventNumber()<< " and LB:"<<GetEventInfo(ctx)->lumiBlock() << ". DataTower Et:"<< (dataTower->et_count()).at(0) <<"/"<< DataEt<<" vs EmulatedTower Et:" << emulated_jtowerEt(*dataTower)<<"/"<< EmulatedEt);
+                    
+                    
+                    /*Commented block, needed for further debugging
+                    for(uint i=0;i<(dataTower->SCellEt()).size();i++){
+                        printf("%11.1f ",(dataTower->SCellEt()).at(i) );
+                    }
+                    printf("\n");
+                    
+                    for(uint i=0;i<(dataTower->SCellEta()).size();i++){
+                        printf("%5.2f/%5.2f ",(dataTower->SCellEta()).at(i),(dataTower->SCellPhi()).at(i) );
+                    }
+                    printf("\n");
+                    
+                    for(uint i=0;i<(dataTower->SCellEta()).size();i++){
+                        printf(" 0x%08x ",(dataTower->SCellID()).at(i) );
+                    }
+                    printf("\n");
+                    
+                    
+                    for(uint i=0;i<(dataTower->SCellEta()).size();i++){
+                        printf("%11d ",(dataTower->SCellMask()).at(i) );
+                    }
+                    printf("\n");
+                    */
+                    
+                    frac_SCellSum = DataEt != 0 ? (EmulatedEt - DataEt)/DataEt : 0;
+                    fill(m_Grouphist+"_decorated",Towereta,Towerphi,DataEt,EmulatedEt,frac_SCellSum);
                     genError("Input_Mismatch", location);
                 }
                 else{
@@ -176,14 +217,6 @@ StatusCode JfexInputMonitorAlgorithm::fillHistograms( const EventContext& ctx )
                 fill(m_Grouphist,region,type);
                     
             }
-            
-            EmuSum = SCellEtMeV(*dataTower);
-            if(source == 1){
-               DataEt /= 1e3; 
-               EmuSum = TileEtMeV(*dataTower)/1e3;
-            }
-            fill(m_Grouphist+"_details_"+std::to_string(source),DataEt,EmuSum);
-            
         }
         
         fill(m_Grouphist,Towereta,Towerphi);
@@ -219,12 +252,21 @@ StatusCode JfexInputMonitorAlgorithm::fillHistograms( const EventContext& ctx )
         Toweretcount_fcal2=Toweret_count.at(0);
         Toweretcount_fcal3=Toweret_count.at(0);
         
-        if(Toweret_count.at(0) == m_InvalidCode){
-            ToweretaInvalid=dataTower->eta();
-            TowerPhiInvalid=dataTower->phi();
-            fill(m_Grouphist,ToweretaInvalid,TowerPhiInvalid);
+        if(dataTower->Calosource() != 1){ // Only for LATOME, not Tile
+            if(Toweret_count.at(0) == m_InvalidCode){
+                ToweretaInvalid=dataTower->eta();
+                TowerPhiInvalid=dataTower->phi();
+                fill(m_Grouphist,ToweretaInvalid,TowerPhiInvalid);
+            }
+            
+            if(Toweret_count.at(0) == m_EmptyCode){
+                ToweretaEmpty=dataTower->eta();
+                TowerPhiEmpty=dataTower->phi();
+                fill(m_Grouphist,ToweretaEmpty,TowerPhiEmpty);
+            }            
         }
 
+
         if(Towercalosource==0) {
             fill(m_Grouphist,Toweretcount_barrel);
         }
diff --git a/Trigger/TrigT1/TrigT1CaloMonitoring/src/JfexInputMonitorAlgorithm.h b/Trigger/TrigT1/TrigT1CaloMonitoring/src/JfexInputMonitorAlgorithm.h
index 2b33753d968e58dd7d3dfd0cd4b25fc4c83d3c9e..1a42f2e16f5d10404f7e934744d4459583cfce90 100644
--- a/Trigger/TrigT1/TrigT1CaloMonitoring/src/JfexInputMonitorAlgorithm.h
+++ b/Trigger/TrigT1/TrigT1CaloMonitoring/src/JfexInputMonitorAlgorithm.h
@@ -39,6 +39,7 @@ class JfexInputMonitorAlgorithm : public AthMonitorAlgorithm {
 
 
         unsigned int m_InvalidCode = 4095;
+        unsigned int m_EmptyCode = 0;
 
         int codedVal(int, int) const;