diff --git a/core/detectors/trd/CbmTrdParFasp.cxx b/core/detectors/trd/CbmTrdParFasp.cxx
index 2889db58d2602c42e4c0f94272117c127a53ef05..1583ec3da964243497bc8a18ccf1d4cad6847182 100644
--- a/core/detectors/trd/CbmTrdParFasp.cxx
+++ b/core/detectors/trd/CbmTrdParFasp.cxx
@@ -48,12 +48,12 @@ bool CbmTrdParFasp::IsChannelMasked(int ch_address) const
 //___________________________________________________________________
 void CbmTrdParFasp::LoadParams(FairParamList* l)
 {
-  printf("CbmTrdParFasp::LoadParams(FairParamList*)\n");
+  // printf("CbmTrdParFasp::LoadParams(FairParamList*)\n");
   TArrayI value(NFASPCH);
   if (l->fill(Form("%dCHS", fAddress), &value)) {
     for (Int_t ich(0); ich < NFASPCH; ich++) {
       Int_t pair = ich % 2;
-      printf("  ch[%2d] pair[%d] value[%d] ChAddress=%d\n", ich, pair, value[ich], 2 * value[ich] + pair);
+      // printf("  ch[%2d] pair[%d] value[%d] ChAddress=%d\n", ich, pair, value[ich], 2 * value[ich] + pair);
       SetChannelAddress(2 * value[ich] + pair);
       fCalib[ich].SetPairing(pair);
     }
@@ -72,7 +72,7 @@ void CbmTrdParFasp::LoadParams(FairParamList* l)
 //___________________________________________________________________
 void CbmTrdParFasp::LoadParams(int* valArray)
 {
-  printf("CbmTrdParFasp::LoadParams(%d)\n", fAddress);
+  // printf("CbmTrdParFasp::LoadParams(%d)\n", fAddress);
   int offset(0);
   SetChannelMask(valArray[offset++]);
   for (Int_t ich(0); ich < NFASPCH; ich++) {
diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
index 7bd65e2e4ef6bf2e0a74d51eeb784ea3ace09bb8..9b0dd3273bd595803d9bf6ea713d4187b3cd4d01 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
@@ -127,16 +127,6 @@ CbmTrdUnpackFaspAlgo::GetParContainerRequest(std::string geoTag, std::uint32_t r
   return &fParContVec;
 }
 
-//_________________________________________________________________________________
-void CbmTrdUnpackFaspAlgo::SetAsicMapping(const std::map<uint32_t, uint8_t[NFASPMOD]>& asicMap)
-{
-  if (!fFaspMap) fFaspMap = new std::map<uint32_t, uint8_t[NFASPMOD]>(asicMap);
-  else {
-    delete fFaspMap;
-    fFaspMap = new std::map<uint32_t, uint8_t[NFASPMOD]>(asicMap);
-  }
-}
-
 //_________________________________________________________________________________
 void CbmTrdUnpackFaspAlgo::SetCrobMapping(const std::map<uint32_t, uint16_t[NCROBMOD]>& map)
 {
@@ -152,25 +142,6 @@ void CbmTrdUnpackFaspAlgo::SetCrobMapping(const std::map<uint32_t, uint16_t[NCRO
   }
 }
 
-//_________________________________________________________________________________
-void CbmTrdUnpackFaspAlgo::PrintAsicMapping()
-{
-  if (!fFaspMap) {
-    LOG(info) << GetName() << "No asic mapping loaded.";
-    return;
-  }
-  LOG(info) << GetName() << "Fasp Asic mapping on modules:";
-  for (auto imod : (*fFaspMap)) {
-    printf("Mod [%6d] :", imod.first);
-    for (int ifasp(0); ifasp < NFASPMOD; ifasp++) {
-      if (ifasp % 9 == 0) printf("\n");
-      int jfasp = imod.second[ifasp];
-      printf("%3d ", (jfasp == 0xff ? -1 : jfasp));
-    }
-    printf("\n");
-  }
-}
-
 //_________________________________________________________________________________
 CbmTrdUnpackFaspAlgo::CbmTrdFaspMessageType CbmTrdUnpackFaspAlgo::mess_type(uint32_t wd)
 {
@@ -251,6 +222,9 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas
   for (auto imess : messes) {
     const Int_t pad                     = faspPar->GetPadAddress(imess.ch);
     const CbmTrdParFaspChannel* chCalib = faspPar->GetChannel(imess.ch);
+    if (chCalib->IsMasked()) {
+      LOG(warn) << GetName() << "::pushDigis - FASP par " << mod_id * 1000 + lFasp << " ch " << int(imess.ch) << " masked but have data. Masks need attention.";
+    }
     const ULong64_t lTime               = fTime + tdaqOffset + imess.tlab;
     const UShort_t lchR                 = chCalib->HasPairingR() ? imess.data : 0;
     const UShort_t lchT                 = chCalib->HasPairingR() ? 0 : imess.data;
@@ -449,8 +423,6 @@ bool CbmTrdUnpackFaspAlgo::unpack(const fles::Timeslice* ts, std::uint16_t icomp
       continue;
     }
 
-    if (fFaspMap) fasp_id = ((*fFaspMap)[mod_id])[fasp_id];
-
     if (lFaspOld != fasp_id) {
       // push
       if (vMess.size()) { pushDigis(vMess, mod_id); }
diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h
index 7ace5f14057be0429ca8e6f1a275c0fb199e7079..bff7160f9d691eab75abd005f430e147d586695e 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.h
@@ -100,7 +100,8 @@ public:
     uint8_t crob   = 0;  ///< CROB id in the module
     uint8_t fasp   = 0;  ///< FASP id in the module
   };
-
+  /** Access the asic parameter list, read-only*/
+  virtual const CbmTrdParSetAsic* GetAsicPar() const { return &fAsicPar; }
   /**
    * @brief Get the requested parameter containers.
    * Return the required parameter containers together with the paths to the ascii
@@ -112,10 +113,7 @@ public:
   */
   virtual std::vector<std::pair<std::string, std::shared_ptr<FairParGenericSet>>>*
   GetParContainerRequest(std::string geoTag, std::uint32_t runId);
-  void PrintAsicMapping();
 
-  /** @brief Introduce fasp index mapping*/
-  void SetAsicMapping(const std::map<uint32_t, uint8_t[NFASPMOD]>& map);
   /** @brief Initialize CROB mapping for all modules*/
   void SetCrobMapping(const std::map<uint32_t, uint16_t[NCROBMOD]>& map);
   /** @brief Set a predefined monitor 
@@ -202,7 +200,6 @@ protected:
 
 private:
   void prt_wd(uint32_t w);
-  std::map<uint32_t, uint8_t[NFASPMOD]>* fFaspMap = nullptr;  ///> FASP mapping update wrt the default setting
   std::map<uint16_t, std::pair<uint16_t, uint16_t>>* fCompMap        = nullptr;  ///> Map eq_id -> (mod_id, crob_id)
   std::array<std::vector<CbmTrdDigi>, NFASPMOD* NFASPCH> fDigiBuffer = {
     {}};  ///> Buffered digi for each pad in CROB component
diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspConfig.cxx b/reco/detectors/trd/unpack/CbmTrdUnpackFaspConfig.cxx
index 9220aeef742173f92b6d7c08fc6d1c27adb50105..61bee84553d6bd20df492f35e8e87d3b9a59dd89 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspConfig.cxx
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspConfig.cxx
@@ -6,7 +6,6 @@
 
 CbmTrdUnpackFaspConfig::CbmTrdUnpackFaspConfig(std::string detGeoSetupTag, UInt_t runid)
   : CbmRecoUnpackConfig("CbmTrdUnpackFaspConfig", detGeoSetupTag, runid)
-  , fFaspMap()
 {
 }
 
@@ -43,9 +42,7 @@ void CbmTrdUnpackFaspConfig::reset()
 void CbmTrdUnpackFaspConfig::InitAlgo()
 {
   if (fDoLog) LOG(info) << fName << "::InitAlgo - Setup Fasp mapping";
-  fAlgo->SetAsicMapping(fFaspMap);
   fAlgo->SetCrobMapping(fCrobMap);
-  /*if (fDoLog) */ fAlgo->PrintAsicMapping();
 
   // If we have a monitor in the config add it to the algo
   if (fMonitor) fAlgo->SetMonitor(fMonitor);
@@ -57,15 +54,10 @@ void CbmTrdUnpackFaspConfig::InitAlgo()
   if (fMonitor) {
     /*if (fDoLog)*/ LOG(info) << fName << "::InitAlgo - Setup monitoring task";
     fMonitor->Init();
+    fMonitor->MapMaskedChannels(fAlgo->GetAsicPar());
   }
 }
 
-//_____________________________________________________________________
-void CbmTrdUnpackFaspConfig::SetFaspMapping(int modAddress, uint8_t faspMap[NFASPMOD])
-{
-  memcpy(fFaspMap[modAddress], faspMap, NFASPMOD * sizeof(uint8_t));
-}
-
 //_____________________________________________________________________
 void CbmTrdUnpackFaspConfig::SetCrobMapping(int modAddress, uint16_t crobMap[NCROBMOD])
 {
diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspConfig.h b/reco/detectors/trd/unpack/CbmTrdUnpackFaspConfig.h
index bd3888642adab60e77f834ae0e75e7c84160864f..c113962944bd3eac06ce00518994d99f1e11f7e6 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspConfig.h
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspConfig.h
@@ -64,11 +64,6 @@ public:
   /** @brief Initialize the algorithm, include all calibration for Trd FASP.*/
   void InitAlgo();
 
-  /** @brief define fasp mapping for each module
-   * @param modAddress module address according to geometry
-   * @param faspMap mapped ids of FASP ASICs for module
-   */
-  void SetFaspMapping(int modAddress, uint8_t faspMap[NFASPMOD]);
   /** @brief define crob id mapping for each module
    * @param modAddress module address according to geometry
    * @param crobMap mapped ids of CROBs eq_id for module
@@ -91,7 +86,6 @@ protected:
   virtual void reset();
 
 private:
-  std::map<uint32_t, uint8_t[NFASPMOD]> fFaspMap;   ///> Module address to FASP id mapping
   std::map<uint32_t, uint16_t[NCROBMOD]> fCrobMap;  ///> Module address to CROB id mapping
   /** @brief pointer to the monitor object */
   std::shared_ptr<CbmTrdUnpackFaspMonitor> fMonitor = nullptr;