From 22fd2674e12b69e53121f9f3e8869409ffbed569 Mon Sep 17 00:00:00 2001
From: Alexandru Bercuci <abercuci@niham.nipne.ro>
Date: Wed, 2 Nov 2022 13:07:23 +0200
Subject: [PATCH] fix pad addressing in Trd2D for measured data.

---
 core/detectors/trd/CbmTrdParAsic.h                 | 4 ----
 core/detectors/trd/CbmTrdParFasp.h                 | 6 +++---
 reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx | 8 +++-----
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/core/detectors/trd/CbmTrdParAsic.h b/core/detectors/trd/CbmTrdParAsic.h
index 8f66342b8f..d8395bb14f 100644
--- a/core/detectors/trd/CbmTrdParAsic.h
+++ b/core/detectors/trd/CbmTrdParAsic.h
@@ -44,10 +44,6 @@ public:
   virtual size_t GetComponentId() const { return fComponentId; }
   virtual Int_t GetNchannels() const = 0;
   virtual Int_t GetFebGrouping() const { return fFebGrouping; }
-  virtual Int_t GetChannelAddress(Int_t ich) const
-  {
-    return ((ich < 0 || ich >= GetNchannels()) ? 0 : fChannelAddresses[ich]);
-  }
   virtual std::vector<Int_t> GetChannelAddresses() const { return fChannelAddresses; }
   virtual void LoadParams(FairParamList*) { ; }
   virtual void Print(Option_t* opt = "") const;
diff --git a/core/detectors/trd/CbmTrdParFasp.h b/core/detectors/trd/CbmTrdParFasp.h
index b97bb87057..9e023c0749 100644
--- a/core/detectors/trd/CbmTrdParFasp.h
+++ b/core/detectors/trd/CbmTrdParFasp.h
@@ -79,11 +79,11 @@ public:
   const CbmTrdParFaspChannel* GetChannel(Int_t pad_address, UChar_t pair) const;
   const CbmTrdParFaspChannel* GetChannel(Int_t ch_address) const;
   virtual Int_t GetNchannels() const { return NFASPCH; };
-
-  Int_t GetPadAddress(Int_t ich) const
+  virtual Int_t GetChannelAddress(Int_t ich) const
   {
-    return ((ich < 0 || ich >= GetNchannels()) ? 0 : 0.5 * fChannelAddresses[ich]);
+    return ((ich < 0 || ich >= GetNchannels()) ? 0 : fChannelAddresses[ich]);
   }
+  Int_t GetPadAddress(Int_t ich) const { return 0.5 * GetChannelAddress(ich); }
   Double_t GetSizeX() const { return fgSizeX; }
   Double_t GetSizeY() const { return fgSizeY; }
   Double_t GetSizeZ() const { return fgSizeZ; }
diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
index 56afd94e85..126f5ad995 100644
--- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
+++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx
@@ -59,13 +59,11 @@ Bool_t CbmTrdUnpackFaspAlgo::initParSet(FairParGenericSet* parset)
   if (strcmp(parset->ClassName(), "CbmTrdParSetAsic") == 0) {
     CbmTrdParSetAsic* setPar = static_cast<CbmTrdParSetAsic*>(parset);
     for (auto did : fModuleId) {
-      printf("AB :: check did %d\n", did);
       const CbmTrdParSetAsic* setDet = static_cast<const CbmTrdParSetAsic*>(setPar->GetModuleSet(did));
       if (!setDet) continue;
       if (setDet->GetAsicType() != Int_t(CbmTrdDigi::eCbmTrdAsicType::kFASP)) continue;
       if (fMonitor) fMonitor->addParam(did, setDet);
       nModules++;
-      printf("AB :: register ASIC params for module %d\n", did);
       std::vector<Int_t> a;
       setDet->GetAsicAddresses(&a);
       for (auto add : a) {
@@ -161,7 +159,7 @@ void CbmTrdUnpackFaspAlgo::PrintAsicMapping()
   for (auto imod : (*fFaspMap)) {
     printf("Mod [%6d] :", imod.first);
     for (int ifasp(0); ifasp < NFASPMOD; ifasp++) {
-      if (ifasp % 30 == 0) printf("\n");
+      if (ifasp % 9 == 0) printf("\n");
       int jfasp = imod.second[ifasp];
       printf("%3d ", (jfasp == 0xff ? -1 : jfasp));
     }
@@ -248,13 +246,13 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas
       }
       // TODO temporary add DAQ time calibration for FASPRO.
       // Should be absorbed in the ASIC parameter definition
-      if (digiPar->GetPadRow(faspPar->GetChannelAddress(imess.ch)) % 2) tdaqOffset = 3;
+      if (digiPar->GetPadRow(faspPar->GetPadAddress(imess.ch)) % 2 == 0) tdaqOffset = 3;
 
       if (VERBOSE) faspPar->Print();
     }
     if (VERBOSE) mess_prt(&imess);
 
-    pad     = faspPar->GetChannelAddress(imess.ch);
+    pad     = faspPar->GetPadAddress(imess.ch);
     chCalib = faspPar->GetChannel(imess.ch);
     ch      = 2 * pad + chCalib->HasPairingR();
     lTime   = fTime + tdaqOffset + imess.tlab;
-- 
GitLab