diff --git a/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx b/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx
index 1b030220c20dd61ee813969ced421645e5c51940..1c2d221f41b9086a6547e749cdcbbf4cf1a839a0 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx
+++ b/reco/detectors/sts/unpack/CbmStsUnpackAlgo.cxx
@@ -454,7 +454,10 @@ void CbmStsUnpackAlgo::processHitInfo(const stsxyter::Message& mess)
   if (fMonitor) fMonitor->CountRawHit(uFebIdx, uChanInFeb);
 
   /// Store hit for output only if it is mapped to a module!!!
-  if (0 != fviFebAddress[uFebIdx] && fdAdcCut < usRawAdc) {
+  bool apply_adc_cut  = fdAdcCut_perFeb.find(uFebIdx) != fdAdcCut_perFeb.end() ? 
+                        fdAdcCut_perFeb[uFebIdx] < usRawAdc :
+                        fdAdcCut < usRawAdc ;
+  if ( fviFebAddress[uFebIdx] != 0 && apply_adc_cut ) {
     /// Store only if masking is disabled or if channeld is not masked
     /// 2D vector is safe as always right size if masking enabled
     if (false == fbUseChannelMask || false == fvvbMaskedChannels[uFebIdx][uChanInFeb]) {
diff --git a/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.h b/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.h
index 65ca023c6ef43d77d44a9687f7c5675f2f6ae4aa..2459400cce627c79cd80f2115d4ca0963f3bccf2 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.h
+++ b/reco/detectors/sts/unpack/CbmStsUnpackAlgoBase.h
@@ -58,6 +58,8 @@ public:
 
   /** @brief Set the minimum adc cut value @param[in] value */
   void SetMinAdcCut(uint32_t value) { fdAdcCut = value; }
+  
+  void SetMinAdcCut(uint32_t febid, uint32_t value) { fdAdcCut_perFeb[febid] = value; }
 
   /** @brief Set the time offset per Asic */
   void SetAsicTimeOffsetVec(std::vector<double> value) { fvdTimeOffsetNsAsics.swap(value); }
@@ -110,6 +112,9 @@ protected:
   /** @brief Minimum adc cut to store a hit */
   uint32_t fdAdcCut = 0;
 
+  /** @brief Minimum adc cut per Feb to store a hit */
+  std::map<uint32_t,uint32_t> fdAdcCut_perFeb;
+
   /** @brief Time offsets per Asic??? @todo expert confirmation required */
   std::vector<double> fvdTimeOffsetNsAsics = {};
 
diff --git a/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx b/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx
index 3c12a48db0c9fe8da20237de57b1805501f562a8..a3b519b3e4f2a9b4194fe9aee7b46785f4dd2910 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx
+++ b/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx
@@ -44,6 +44,11 @@ void CbmStsUnpackConfig::InitUnpacker()
   // Set the minimum adc cut
   algo->SetMinAdcCut(fdAdcCut);
 
+  // Set the minimum adc cut Feb independent
+  for (auto cut=fdAdcCut_perFeb.begin() ; cut!=fdAdcCut_perFeb.end() ; cut++){
+    algo->SetMinAdcCut(cut->first,cut->second);
+  }
+
   // Set the single asics time offsets
   algo->SetAsicTimeOffsetVec(fvdTimeOffsetNsAsics);
 
diff --git a/reco/detectors/sts/unpack/CbmStsUnpackConfig.h b/reco/detectors/sts/unpack/CbmStsUnpackConfig.h
index 83522fc08d3514501dbf64e582b666c6808edee2..eefd2cca0e3e9a64006fd45c7fb7cdd5032b4fa9 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackConfig.h
+++ b/reco/detectors/sts/unpack/CbmStsUnpackConfig.h
@@ -103,6 +103,8 @@ public:
   /** @brief Set the minimum adc cut value @param[in] value */
   void SetMinAdcCut(uint32_t value) { fdAdcCut = value; }
 
+  void SetMinAdcCut(uint32_t febid, uint32_t value) { fdAdcCut_perFeb[febid] = value; }
+
   /** @brief Add a monitor to the unpacker. @param value CbmStsUnpackMonitor */
   void SetMonitor(std::shared_ptr<CbmStsUnpackMonitor> value) { fMonitor = value; }
 
@@ -121,6 +123,9 @@ protected:
   /** @brief Minimum adc cut to store a hit */
   uint32_t fdAdcCut = 0;
 
+  /** @brief Minimum adc cut per Feb to store a hit */
+  std::map<uint32_t,uint32_t> fdAdcCut_perFeb;
+
   /** @brief Vector with the Asic time offsets */
   std::vector<double> fvdTimeOffsetNsAsics = {};