Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • le.koch/cbmroot
  • patrick.pfistner_AT_kit.edu/cbmroot
  • lena.rossel_AT_stud.uni-frankfurt.de/cbmroot
  • i.deppner/cbmroot
  • fweig/cbmroot
  • karpushkin_AT_inr.ru/cbmroot
  • v.akishina/cbmroot
  • rishat.sultanov_AT_cern.ch/cbmroot
  • l_fabe01_AT_uni-muenster.de/cbmroot
  • pwg-c2f/cbmroot
  • j.decuveland/cbmroot
  • a.toia/cbmroot
  • i.vassiliev/cbmroot
  • n.herrmann/cbmroot
  • o.lubynets/cbmroot
  • se.gorbunov/cbmroot
  • cornelius.riesen_AT_physik.uni-giessen.de/cbmroot
  • zhangqn17_AT_mails.tsinghua.edu.cn/cbmroot
  • bartosz.sobol/cbmroot
  • ajit.kumar/cbmroot
  • computing/cbmroot
  • a.agarwal_AT_vecc.gov.in/cbmroot
  • osingh/cbmroot
  • wielanek_AT_if.pw.edu.pl/cbmroot
  • malgorzata.karabowicz.stud_AT_pw.edu.pl/cbmroot
  • m.shiroya/cbmroot
  • s.roy/cbmroot
  • p.-a.loizeau/cbmroot
  • a.weber/cbmroot
  • ma.beyer/cbmroot
  • d.klein/cbmroot
  • d.smith/cbmroot
  • mvdsoft/cbmroot
  • d.spicker/cbmroot
  • y.h.leung/cbmroot
  • aksharma/cbmroot
  • m.deveaux/cbmroot
  • mkunold/cbmroot
  • h.darwish/cbmroot
  • pk.sharma_AT_vecc.gov.in/cbmroot
  • f_fido01_AT_uni-muenster.de/cbmroot
  • g.kozlov/cbmroot
  • d.emschermann/cbmroot
  • evgeny.lavrik/cbmroot
  • v.friese/cbmroot
  • f.uhlig/cbmroot
  • ebechtel_AT_ikf.uni-frankfurt.de/cbmroot
  • a.senger/cbmroot
  • praisig/cbmroot
  • s.lebedev/cbmroot
  • redelbach_AT_compeng.uni-frankfurt.de/cbmroot
  • p.subramani/cbmroot
  • a_meye37_AT_uni-muenster.de/cbmroot
  • om/cbmroot
  • o.golosov/cbmroot
  • l.chlad/cbmroot
  • a.bercuci/cbmroot
  • d.ramirez/cbmroot
  • v.singhal/cbmroot
  • h.schiller/cbmroot
  • apuntke/cbmroot
  • f.zorn/cbmroot
  • rubio_AT_physi.uni-heidelberg.de/cbmroot
  • p.chudoba/cbmroot
  • apuntke/mcbmroot
  • r.karabowicz/cbmroot
66 results
Show changes
......@@ -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
......
......@@ -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])
{
......
......@@ -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;
......
......@@ -114,6 +114,34 @@ Bool_t CbmTrdUnpackFaspMonitor::Init()
return kTRUE;
}
//_________________________________________________________________________________
void CbmTrdUnpackFaspMonitor::MapMaskedChannels(const CbmTrdParSetAsic* par)
{
int ncol(-1), modAddress(-1);
std::shared_ptr<TH1> histo = nullptr;
std::vector<int> faspAddress;
par->GetAsicAddresses(&faspAddress);
for (auto address : faspAddress) {
CbmTrdParFasp* fasp = (CbmTrdParFasp*) par->GetModulePar(address);
if (modAddress != address / 1000) {
modAddress = address / 1000;
auto modpair = fDigiHistoMap[eDigiHistos::kMap_St];
if (modpair.find(modAddress) == modpair.end()) continue;
if (!(histo = modpair[modAddress])) continue;
if (fModuleDef.find(modAddress) == fModuleDef.end()) continue;
ncol = std::get<1>(fModuleDef[modAddress]);
}
for (int ich(0); ich < NFASPCH; ich++) {
const CbmTrdParFaspChannel* faspCh = fasp->GetChannel(ich);
int pad = fasp->GetPadAddress(ich), row = pad / ncol, col = pad % ncol;
if (faspCh->IsMasked()) histo->Fill(col + (faspCh->HasPairingR() ? 1 : -1) * 0.25, row);
}
}
}
//_________________________________________________________________________
void CbmTrdUnpackFaspMonitor::addParam(uint32_t madd, const CbmTrdParSetAsic* asics)
{
......@@ -123,7 +151,7 @@ void CbmTrdUnpackFaspMonitor::addParam(uint32_t madd, const CbmTrdParSetAsic* as
return;
}
std::vector<int32_t> padToFaspMapping(NFASPMOD * NFASPCH, -1);
std::vector<int32_t> chToFaspMapping(NFASPMOD * NFASPCH, -1);
std::vector<Int_t> add;
asics->GetAsicAddresses(&add);
for (auto afasp : add) {
......@@ -131,11 +159,11 @@ void CbmTrdUnpackFaspMonitor::addParam(uint32_t madd, const CbmTrdParSetAsic* as
int faspid(afasp % 1000), ich(faspid * 100);
for (auto ach : fasp->GetChannelAddresses()) {
padToFaspMapping[ach] = ich;
chToFaspMapping[ach] = ich;
ich++;
}
}
std::get<0>((*moduleDef).second) = padToFaspMapping;
std::get<0>((*moduleDef).second) = chToFaspMapping;
}
//_________________________________________________________________________
......@@ -164,7 +192,7 @@ void CbmTrdUnpackFaspMonitor::createHisto(eDigiHistos kHisto)
auto nrows = std::get<2>(moduleDef.second);
auto nchs = nrows * ncols;
histoname = "Fasp_" + getTypeName(kHisto) + "_" + getHistoName(kHisto);
histoname = getTypeName(kHisto) + getHistoName(kHisto) + "Fasp";
switch (kHisto) {
case eDigiHistos::kMap:
newhisto = std::make_shared<TH2I>(histoname.data(), Form("%s %d", histoname.data(), modId), 2 * ncols, -0.5,
......@@ -174,6 +202,15 @@ void CbmTrdUnpackFaspMonitor::createHisto(eDigiHistos kHisto)
newhisto->SetZTitle("Yield");
break;
case eDigiHistos::kMap_St:
histoname = getTypeName(kHisto) + "MaskFasp";
newhisto = std::make_shared<TH2I>(histoname.data(), Form("%s %d", histoname.data(), modId), 2 * ncols, -0.5,
(ncols - 0.5), nrows, -0.5, (nrows - 0.5));
newhisto->SetXTitle("COL (pad)");
newhisto->SetYTitle("ROW (pad)");
newhisto->SetZTitle("Mask");
break;
case eDigiHistos::kCharge:
newhisto = std::make_shared<TH2I>(histoname.data(), Form("%s %d", histoname.data(), modId), 2 * nchs, -0.5,
(nchs - 0.5), 4095, 0.5, 4095.5);
......@@ -188,13 +225,19 @@ void CbmTrdUnpackFaspMonitor::createHisto(eDigiHistos kHisto)
newhisto->SetYTitle("FASP-Ch");
newhisto->SetZTitle("Yield");
break;
case eDigiHistos::kDigiDeltaT:
case eDigiHistos::kDigiDeltaT: {
const int npointsDecade = 40;
const int nb = 6 * npointsDecade;
double xa[nb + 1], base = std::pow(10, 1. / npointsDecade);
for (int i(-2 * npointsDecade), j(0); i <= 4 * npointsDecade; i++, j++)
xa[j] = std::pow(base, i);
newhisto = std::make_shared<TH2I>(histoname.data(), Form("%s %d", histoname.data(), modId), 2 * nchs, -0.5,
(nchs - 0.5), 1000, 0, 1e2);
(nchs - 0.5), nb, xa);
newhisto->SetXTitle("Pad-Id");
newhisto->SetYTitle("Rate_{SGN} [kHz]");
newhisto->SetZTitle("Yield");
break;
}
default: return;
}
LOG(debug) << Class_Name() << "::CreateHisto() HistoDigi " << static_cast<size_t>(kHisto) << " Module " << modId
......
......@@ -70,6 +70,9 @@ public:
/** @brief Init all required parameter informations */
Bool_t Init();
/** @brief Special call for monitoring the masked channel map*/
void MapMaskedChannels(const CbmTrdParSetAsic* asics);
/** @brief transfer the enums for the histos to be activated to the member vector */
void SetActiveHistos(std::vector<eDigiHistos> vec) { fActiveDigiHistos.swap(vec); }
......