Skip to content
Snippets Groups Projects
Commit 6c60d616 authored by Axel Puntke's avatar Axel Puntke Committed by Pierre-Alain Loizeau
Browse files

Add NT Correlation Plot to TRD Online Monitor

parent e79b3242
No related branches found
No related tags found
1 merge request!873Changes from mCBM 2022 prod to TRD unpacking and reco
...@@ -120,6 +120,7 @@ Bool_t CbmTrdUnpackAlgoBaseR::initParSet(CbmTrdParSetDigi* parset) ...@@ -120,6 +120,7 @@ Bool_t CbmTrdUnpackAlgoBaseR::initParSet(CbmTrdParSetDigi* parset)
asics = static_cast<CbmTrdParSetAsic*>((pair.second).get()); asics = static_cast<CbmTrdParSetAsic*>((pair.second).get());
} }
initOk &= fMonitor->Init(parset, asics); initOk &= fMonitor->Init(parset, asics);
fMonitor->SetDigiOutputVec(&fOutputVec);
} }
return initOk; return initOk;
......
...@@ -205,6 +205,12 @@ void CbmTrdUnpackMonitor::createHisto(eDigiHistos kHisto) ...@@ -205,6 +205,12 @@ void CbmTrdUnpackMonitor::createHisto(eDigiHistos kHisto)
newhisto->SetXTitle("ChannelId"); newhisto->SetXTitle("ChannelId");
newhisto->SetYTitle("#DeltaT(Digi(n)-Digi(n-1)) [ns]"); newhisto->SetYTitle("#DeltaT(Digi(n)-Digi(n-1)) [ns]");
break; break;
case eDigiHistos::kDigiNtCorr:
newhisto = std::make_shared<TH2I>(histoname.data(), histoname.data(), nchannels, -0.5, (nchannels - 0.5),
nchannels, -0.5, (nchannels - 0.5));
newhisto->SetXTitle("NT AddressChannel");
newhisto->SetYTitle("ST AddressChannel");
break;
// default: return; break; // default: return; break;
} }
LOG(debug) << Class_Name() << "::CreateHisto() HistoDigi " << static_cast<size_t>(kHisto) << " Module " << moduleid LOG(debug) << Class_Name() << "::CreateHisto() HistoDigi " << static_cast<size_t>(kHisto) << " Module " << moduleid
...@@ -391,6 +397,7 @@ void CbmTrdUnpackMonitor::fillHisto(CbmTrdDigi* digi, eDigiHistos kHisto, std::u ...@@ -391,6 +397,7 @@ void CbmTrdUnpackMonitor::fillHisto(CbmTrdDigi* digi, eDigiHistos kHisto, std::u
break; break;
} }
case eDigiHistos::kDigiDeltaT: histo->Fill(digi->GetAddressChannel(), getDeltaT(digi)); break; case eDigiHistos::kDigiDeltaT: histo->Fill(digi->GetAddressChannel(), getDeltaT(digi)); break;
case eDigiHistos::kDigiNtCorr: fillNtCorrHisto(histo, digi); break;
default: return; break; default: return; break;
} }
...@@ -464,6 +471,33 @@ std::double_t CbmTrdUnpackMonitor::getDeltaT(CbmTrdDigi* digi) ...@@ -464,6 +471,33 @@ std::double_t CbmTrdUnpackMonitor::getDeltaT(CbmTrdDigi* digi)
} }
} }
// ---- fillNtCorrHisto ----
void CbmTrdUnpackMonitor::fillNtCorrHisto(std::shared_ptr<TH1> histo, CbmTrdDigi* digi)
{
Double_t newDigiTime = digi->GetTime();
Int_t newDigiAddrCh = digi->GetAddressChannel();
Int_t newDigiAddrModule = digi->GetAddressModule();
int nTrdDigis = fDigiOutputVec->size();
for (int iDigi = nTrdDigis - 1; iDigi > 0; --iDigi) {
const CbmTrdDigi digiRef = fDigiOutputVec->at(iDigi);
Double_t refDigiTime = digiRef.GetTime();
if (digiRef.GetAddressModule() == newDigiAddrModule) {
if (digiRef.GetTriggerType() == static_cast<Int_t>(CbmTrdDigi::eTriggerType::kNeighbor)
&& digi->GetTriggerType() == static_cast<Int_t>(CbmTrdDigi::eTriggerType::kSelf))
histo->Fill(digiRef.GetAddressChannel(), newDigiAddrCh);
else if (digiRef.GetTriggerType() == static_cast<Int_t>(CbmTrdDigi::eTriggerType::kSelf)
&& digi->GetTriggerType() == static_cast<Int_t>(CbmTrdDigi::eTriggerType::kNeighbor))
histo->Fill(newDigiAddrCh, digiRef.GetAddressChannel());
}
if (refDigiTime < newDigiTime - 500 /*|| iDigi < nTrdDigis - 20*/) break;
}
}
// ---- getHistoName ---- // ---- getHistoName ----
std::string CbmTrdUnpackMonitor::getHistoName(eDigiHistos kHisto) std::string CbmTrdUnpackMonitor::getHistoName(eDigiHistos kHisto)
{ {
...@@ -481,6 +515,7 @@ std::string CbmTrdUnpackMonitor::getHistoName(eDigiHistos kHisto) ...@@ -481,6 +515,7 @@ std::string CbmTrdUnpackMonitor::getHistoName(eDigiHistos kHisto)
case eDigiHistos::kChannel_Nt: histoname += "Channel_Nt"; break; case eDigiHistos::kChannel_Nt: histoname += "Channel_Nt"; break;
case eDigiHistos::kTriggerType: histoname += "TriggerType"; break; case eDigiHistos::kTriggerType: histoname += "TriggerType"; break;
case eDigiHistos::kDigiDeltaT: histoname += "DigiDeltaT"; break; case eDigiHistos::kDigiDeltaT: histoname += "DigiDeltaT"; break;
case eDigiHistos::kDigiNtCorr: histoname += "DigiNtCorr"; break;
} }
return histoname; return histoname;
} }
......
...@@ -63,7 +63,8 @@ public: ...@@ -63,7 +63,8 @@ public:
kCharge_St, kCharge_St,
kCharge_Nt, kCharge_Nt,
kTriggerType, kTriggerType,
kDigiDeltaT kDigiDeltaT,
kDigiNtCorr
}; };
/** @brief Enum for the predefined raw histograms. */ /** @brief Enum for the predefined raw histograms. */
...@@ -143,6 +144,9 @@ public: ...@@ -143,6 +144,9 @@ public:
fDoWriteToFile = true; fDoWriteToFile = true;
} }
/** @brief Set digi outpout vector (to make it usable for correlations) */
void SetDigiOutputVec(std::vector<CbmTrdDigi>* digiOutputVec) { fDigiOutputVec = digiOutputVec; }
protected: protected:
template<class histotype> template<class histotype>
...@@ -319,6 +323,9 @@ protected: ...@@ -319,6 +323,9 @@ protected:
return nhistos; return nhistos;
} }
/** @brief Fill the NeighborTrigger Checking Histogram */
void fillNtCorrHisto(std::shared_ptr<TH1> histo, CbmTrdDigi* digi);
// Member variables // Member variables
/** @brief Digi histogram pointers stored in a map together with the module id */ /** @brief Digi histogram pointers stored in a map together with the module id */
std::map<eDigiHistos, std::map<std::uint32_t, std::shared_ptr<TH1>>> fDigiHistoMap = {}; std::map<eDigiHistos, std::map<std::uint32_t, std::shared_ptr<TH1>>> fDigiHistoMap = {};
...@@ -363,6 +370,9 @@ protected: ...@@ -363,6 +370,9 @@ protected:
/** @brief Map with the last digi time for each channel of a given module */ /** @brief Map with the last digi time for each channel of a given module */
std::map<std::uint32_t, std::vector<size_t>> fLastDigiTimeMap = {}; std::map<std::uint32_t, std::vector<size_t>> fLastDigiTimeMap = {};
/** @brief Variable which holds a reference to the TRD digi output vector (for correlations) */
std::vector<CbmTrdDigi>* fDigiOutputVec = {};
// All other parameters and containers // All other parameters and containers
std::shared_ptr<CbmTrdSpadic> fSpadic = nullptr; std::shared_ptr<CbmTrdSpadic> fSpadic = nullptr;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment