From 0516f9deaa03b7bdc8182e93c01ef5e2c2d38a43 Mon Sep 17 00:00:00 2001 From: "P.-A. Loizeau" <p.-a.loizeau@gsi.de> Date: Mon, 4 Jul 2022 17:09:20 +0200 Subject: [PATCH] [Evt Builder] in BuildRawEvent algo + task, add setter per det for max Digi Nb in histos --- .../digis/CbmAlgoBuildRawEvents.cxx | 47 +++++++++++++++---- .../digis/CbmAlgoBuildRawEvents.h | 6 ++- .../digis/CbmTaskBuildRawEvents.h | 4 ++ 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx index 5d99e3a836..67f99aa114 100644 --- a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx +++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.cxx @@ -1056,13 +1056,18 @@ void CbmAlgoBuildRawEvents::CreateHistograms() new TH1F("fhEventDt", "interval in seed time of consecutive events; Seed time dt [ns]; Events", 10000, 0, 100000); // fhEventDt->SetCanExtend(TH1::kAllAxes); // Breaks the MQ histogram server as cannot be merged! - fhEventSize = new TH1F("hEventSize", "nb of all digis in the event; Nb Digis []; Events []", 10000, 0, 10000); + double_t dHistMaxTotDigis = fRefDet.fdHistMaxDigiNb; + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { + dHistMaxTotDigis += (*det).fdHistMaxDigiNb; + } + fhEventSize = new TH1F("hEventSize", "nb of all digis in the event; Nb Digis []; Events []", dHistMaxTotDigis, 0, + dHistMaxTotDigis); // fhEventSize->SetCanExtend(TH1::kAllAxes); // Breaks the MQ histogram server as cannot be merged! fhNbDigiPerEvtTime = new TH2I("hNbDigiPerEvtTime", "nb of all digis per event vs seed time of the events; Seed time " "[s]; Nb Digis []; Events []", - 1000, 0, 0.2, 5000, 0, 5000); + 1000, 0, 0.2, dHistMaxTotDigis, 0, dHistMaxTotDigis); // fhNbDigiPerEvtTime->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged! fhCpuTimePerTs = new TH1D("hCpuTimePerTs", "CPU Processing time of TS vs TS; Ts; CPU time [ms]", 6000, 0, 6000); @@ -1102,13 +1107,13 @@ void CbmAlgoBuildRawEvents::CreateHistograms() Form("nb of %s digis per event vs seed time of the events; Seed time in TS " "[s]; Nb Digis []; Events []", (*det).sName.data()), - 1000, 0, 0.2, 5000, 0, 5000); + 1000, 0, 0.2, (*det).fdHistMaxDigiNb, 0, (*det).fdHistMaxDigiNb); // hNbDigiPerEvtTimeDet->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged! fvhNbDigiPerEvtTimeDet.push_back(hNbDigiPerEvtTimeDet); - TH1* hNbDigiPerEvtDet = - new TH1I(Form("hNbDigiPerEvt%s", (*det).sName.data()), - Form("nb of %s digis per event; Nb Digis []", (*det).sName.data()), 10000, 0, 10000); + TH1* hNbDigiPerEvtDet = new TH1I(Form("hNbDigiPerEvt%s", (*det).sName.data()), + Form("nb of %s digis per event; Nb Digis []", (*det).sName.data()), + (*det).fdHistMaxDigiNb, 0, (*det).fdHistMaxDigiNb); fvhNbDigiPerEvtDet.push_back(hNbDigiPerEvtDet); TH1* hTDiff = @@ -1150,12 +1155,12 @@ void CbmAlgoBuildRawEvents::CreateHistograms() Form("nb of %s digis per event vs seed time of the events; Seed time in TS " "[s]; Nb Digis []; Events []", fRefDet.sName.data()), - 1000, 0, 0.2, 5000, 0, 5000); + 1000, 0, 0.2, fRefDet.fdHistMaxDigiNb, 0, fRefDet.fdHistMaxDigiNb); fvhNbDigiPerEvtTimeDet.push_back(hNbDigiPerEvtTimeDet); - TH1I* hNbDigiPerEvtDet = - new TH1I(Form("hNbDigiPerEvt%s", fRefDet.sName.data()), - Form("nb of %s digis per event; Nb Digis []", fRefDet.sName.data()), 10000, 0, 10000); + TH1I* hNbDigiPerEvtDet = new TH1I(Form("hNbDigiPerEvt%s", fRefDet.sName.data()), + Form("nb of %s digis per event; Nb Digis []", fRefDet.sName.data()), + fRefDet.fdHistMaxDigiNb, 0, fRefDet.fdHistMaxDigiNb); fvhNbDigiPerEvtDet.push_back(hNbDigiPerEvtDet); TH1I* hTDiff = @@ -1923,6 +1928,28 @@ void CbmAlgoBuildRawEvents::SetTriggerWindow(ECbmModuleId selDet, Double_t dWinB UpdateWidestTimeWinRange(); } +void CbmAlgoBuildRawEvents::SetHistogramMaxDigiNb(ECbmModuleId selDet, Double_t dVal) +{ + /// Check first if reference detector + if (fRefDet.detId == selDet) { + fRefDet.fdHistMaxDigiNb = dVal; + LOG(debug) << "Set histogram max digi nb for " << fRefDet.sName << " to " << dVal; + return; + } + + /// Loop on selection detectors + for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { + if ((*det).detId == selDet) { + (*det).fdHistMaxDigiNb = dVal; + LOG(debug) << "Set histogram max digi nb " << (*det).sName << " to " << dVal; + return; + } + } + LOG(warning) << "CbmAlgoBuildRawEvents::SetHistogramMaxDigiNb => " + "Doing nothing, detector neither reference nor in selection list!" + << selDet; +} + void CbmAlgoBuildRawEvents::UpdateTimeWinBoundariesExtrema() { /// Initialize with reference detector or explicit times diff --git a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h index 3c0b3722ca..fc6dc4b8ac 100644 --- a/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h +++ b/reco/eventbuilder/digis/CbmAlgoBuildRawEvents.h @@ -58,7 +58,7 @@ public: RawEventBuilderDetector(ECbmModuleId detIdIn, ECbmDataType dataTypeIn, std::string sNameIn, UInt_t uTriggerMinDigisIn, Int_t iTriggerMaxDigisIn, Double_t fdTimeWinBegIn, Double_t fdTimeWinEndIn, - UInt_t uTriggerMinLayersIn = 0) + UInt_t uTriggerMinLayersIn = 0, Double_t fdHistMaxDigiNbIn = 1000) : RawEventBuilderDetector(detIdIn, dataTypeIn, sNameIn) { fuTriggerMinDigis = uTriggerMinDigisIn; @@ -66,6 +66,7 @@ public: fuTriggerMinLayers = uTriggerMinLayersIn; fdTimeWinBeg = fdTimeWinBegIn; fdTimeWinEnd = fdTimeWinEndIn; + fdHistMaxDigiNb = fdHistMaxDigiNbIn; } bool operator==(const RawEventBuilderDetector& other) const { return (other.detId == this->detId); } @@ -86,6 +87,8 @@ public: /// Selection Window Double_t fdTimeWinBeg = -100; Double_t fdTimeWinEnd = 100; + /// Histo configuration + Double_t fdHistMaxDigiNb = 1000; /// Book-keeping variables UInt_t fuStartIndex = 0; UInt_t fuEndIndex = 0; @@ -152,6 +155,7 @@ public: void SetTriggerMaxNumber(ECbmModuleId selDet, Int_t iVal); void SetTriggerMinLayersNumber(ECbmModuleId selDet, UInt_t uVal); void SetTriggerWindow(ECbmModuleId selDet, Double_t dWinBeg, Double_t dWinEnd); + void SetHistogramMaxDigiNb(ECbmModuleId selDet, Double_t dDigiNbMax); void SetTsParameters(Double_t dTsStartTime, Double_t dTsLength, Double_t dTsOverLength) { diff --git a/reco/eventbuilder/digis/CbmTaskBuildRawEvents.h b/reco/eventbuilder/digis/CbmTaskBuildRawEvents.h index 33e6305f43..6c902ad7c8 100644 --- a/reco/eventbuilder/digis/CbmTaskBuildRawEvents.h +++ b/reco/eventbuilder/digis/CbmTaskBuildRawEvents.h @@ -96,6 +96,10 @@ public: { if (nullptr != fpAlgo) fpAlgo->SetTriggerMinLayersNumber(selDet, uVal); } + void SetHistogramMaxDigiNb(ECbmModuleId selDet, UInt_t uVal) + { + if (nullptr != fpAlgo) fpAlgo->SetHistogramMaxDigiNb(selDet, uVal); + } void SetTriggerWindow(ECbmModuleId det, Double_t dWinBeg, Double_t dWinEnd) { if (nullptr != fpAlgo) fpAlgo->SetTriggerWindow(det, dWinBeg, dWinEnd); -- GitLab