CbmRoot
CbmMcbm2018UnpackerAlgoPsd.cxx
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------
2 // ----- -----
3 // ----- CbmMcbm2018UnpackerAlgoPsd -----
4 // ----- Created 09.10.2019 by N.Karpushkin -----
5 // ----- based on CbmMcbm2018UnpackerAlgoTof by P.-A. Loizeau -----
6 // ----- -----
7 // -----------------------------------------------------------------------------
8 
10 
12 #include "CbmMcbm2018PsdPar.h"
13 #include "CbmPsdAddress.h"
14 
15 #include <Logger.h>
16 
17 #include "TCanvas.h"
18 #include "TH1.h"
19 #include "TH2.h"
20 #include "TList.h"
21 #include "TProfile.h"
22 #include "TROOT.h"
23 #include "TString.h"
24 
25 #include <fstream>
26 #include <iomanip>
27 #include <iostream>
28 #include <stdint.h>
29 
30 // -------------------------------------------------------------------------
32  : CbmStar2019Algo()
33  ,
35  fbMonitorMode(kFALSE)
36  , fbDebugMonitorMode(kFALSE)
37  , fvbMaskedComponents()
38  , fUnpackPar(nullptr)
39  , fuNrOfGdpbs(0)
40  , fGdpbIdIndexMap()
41  , fuNrOfFeePerGdpb(0)
42  , fuNrOfChannelsPerFee(0)
43  , fuNrOfChannelsPerGdpb(0)
44  , fuNrOfGbtx(0)
45  , fuNrOfModules(0)
46  , fdTimeOffsetNs(0.0)
47  , fulCurrentTsIdx(0)
48  , fulCurrentMsIdx(0)
49  , fuCurrentMsSysId(0)
50  , fdTsStartTime(-1.0)
51  , fdTsStopTimeCore(-1.0)
52  , fdMsTime(-1.0)
53  , fuMsIndex(0)
54  , fuCurrentEquipmentId(0)
55  , fuCurrDpbId(0)
56  , fuCurrDpbIdx(0)
57  , fiRunStartDateTimeSec(-1)
58  , fiBinSizeDatePlots(-1)
59  , fvulCurrentEpoch()
60  , fvulCurrentEpochCycle()
61  , fvulCurrentEpochFull()
62  , fdStartTime(-1.0)
63  , fdStartTimeMsSz(0.0)
64  , ftStartTimeUnix(std::chrono::steady_clock::now()) {}
67 }
68 
69 // -------------------------------------------------------------------------
71  LOG(info) << "Initializing mCBM PSD 2019 unpacker algo";
72 
73  return kTRUE;
74 }
77 
78 // -------------------------------------------------------------------------
80  LOG(info) << "Init parameter containers for CbmMcbm2018UnpackerAlgoPsd";
81  Bool_t initOK = ReInitContainers();
82 
83  return initOK;
84 }
86  LOG(info) << "**********************************************";
87  LOG(info) << "ReInit parameter containers for CbmMcbm2018UnpackerAlgoPsd";
88 
89  fUnpackPar = (CbmMcbm2018PsdPar*) fParCList->FindObject("CbmMcbm2018PsdPar");
90  if (nullptr == fUnpackPar) return kFALSE;
91 
92  Bool_t initOK = InitParameters();
93 
94  return initOK;
95 }
97  if (nullptr == fParCList) fParCList = new TList();
98  fUnpackPar = new CbmMcbm2018PsdPar("CbmMcbm2018PsdPar");
99  fParCList->Add(fUnpackPar);
100 
101  return fParCList;
102 }
105  LOG(info) << "Nr. of Tof GDPBs: " << fuNrOfGdpbs;
106 
108  LOG(info) << "Nr. of FEEs per Psd GDPB: " << fuNrOfFeePerGdpb;
109 
111  LOG(info) << "Nr. of channels per FEE: " << fuNrOfChannelsPerFee;
112 
114  LOG(info) << "Nr. of channels per GDPB: " << fuNrOfChannelsPerGdpb;
115 
116  fGdpbIdIndexMap.clear();
117  for (UInt_t i = 0; i < fuNrOfGdpbs; ++i) {
119  LOG(info) << "GDPB Id of PSD " << i << " : " << std::hex
120  << fUnpackPar->GetGdpbId(i) << std::dec;
121  } // for( UInt_t i = 0; i < fuNrOfGdpbs; ++i )
122 
124  LOG(info) << "Nr. of GBTx: " << fuNrOfGbtx;
125 
126  //Temporary until creation of full psd map
127  UInt_t uNrOfModules = 1;
128  UInt_t uNrOfSections = 32;
129  UInt_t uNrOfChannels = uNrOfModules * uNrOfSections;
130  LOG(info) << "Nr. of possible Psd channels: " << uNrOfChannels;
131  fviPsdChUId.resize(uNrOfChannels);
132 
133  UInt_t iCh = 0;
134  for (UInt_t iModule = 0; iModule < uNrOfModules; ++iModule) {
135  for (UInt_t iSection = 0; iSection < uNrOfSections; ++iSection) {
136  iCh = iModule * uNrOfSections + iSection;
137  fviPsdChUId[iCh] = CbmPsdAddress::GetAddress(iModule, iSection);
138  }
139  }
140 
142  fvulCurrentEpoch.resize(fuNrOfGdpbs, 0);
145 
146  return kTRUE;
147 }
148 // -------------------------------------------------------------------------
149 
151  UShort_t usDetectorId) {
153  for (UInt_t uCompIdx = 0; uCompIdx < fvMsComponentsList.size(); ++uCompIdx)
154  if (component == fvMsComponentsList[uCompIdx]) return;
155 
157  fvMsComponentsList.push_back(component);
158 
159  LOG(info) << "CbmMcbm2018UnpackerAlgoPsd::AddMsComponentToList => Component "
160  << component << " with detector ID 0x" << std::hex << usDetectorId
161  << std::dec << " added to list";
162 }
163 // -------------------------------------------------------------------------
164 
165 Bool_t CbmMcbm2018UnpackerAlgoPsd::ProcessTs(const fles::Timeslice& ts) {
166 
167  fulCurrentTsIdx = ts.index();
168  fdTsStartTime = static_cast<Double_t>(ts.descriptor(0, 0).idx);
169 
171  if (0 == fulCurrentTsIdx) { return kTRUE; } // if( 0 == fulCurrentTsIdx )
172 
174  if (-1.0 == fdTsCoreSizeInNs) {
175  fuNbCoreMsPerTs = ts.num_core_microslices();
176  fuNbOverMsPerTs = ts.num_microslices(0) - ts.num_core_microslices();
179  LOG(info) << "Timeslice parameters: each TS has " << fuNbCoreMsPerTs
180  << " Core MS and " << fuNbOverMsPerTs
181  << " Overlap MS, for a core duration of " << fdTsCoreSizeInNs
182  << " ns and a full duration of " << fdTsFullSizeInNs << " ns";
183 
186  if (kFALSE == fbIgnoreOverlapMs) fuNbMsLoop += fuNbOverMsPerTs;
187  LOG(info) << "In each TS " << fuNbMsLoop << " MS will be looped over";
188  } // if( -1.0 == fdTsCoreSizeInNs )
189 
192  // LOG(info) << Form( "TS %5d Start %12f Stop %12f", fulCurrentTsIdx, fdTsStartTime, fdTsStopTimeCore );
193 
195  for (fuMsIndex = 0; fuMsIndex < fuNbMsLoop; fuMsIndex++) {
197  for (UInt_t uMsCompIdx = 0; uMsCompIdx < fvMsComponentsList.size();
198  ++uMsCompIdx) {
199  UInt_t uMsComp = fvMsComponentsList[uMsCompIdx];
200 
201  if (kFALSE == ProcessMs(ts, uMsComp, fuMsIndex)) {
202  LOG(error) << "Failed to process ts " << fulCurrentTsIdx << " MS "
203  << fuMsIndex << " for component " << uMsComp;
204  return kFALSE;
205  } // if( kFALSE == ProcessMs( ts, uMsCompIdx, fuMsIndex ) )
206  } // for( UInt_t uMsCompIdx = 0; uMsCompIdx < fvMsComponentsList.size(); ++uMsCompIdx )
207  } // for( fuMsIndex = 0; fuMsIndex < uNbMsLoop; fuMsIndex ++ )
208 
210  std::sort(fDigiVect.begin(),
211  fDigiVect.end(),
212  [](const CbmPsdDigi& a, const CbmPsdDigi& b) -> bool {
213  return a.GetTime() < b.GetTime();
214  });
215 
216  return kTRUE;
217 }
218 
219 
220 Bool_t CbmMcbm2018UnpackerAlgoPsd::ProcessMs(const fles::Timeslice& ts,
221  size_t uMsCompIdx,
222  size_t uMsIdx) {
223  auto msDescriptor = ts.descriptor(uMsCompIdx, uMsIdx);
224  fuCurrentEquipmentId = msDescriptor.eq_id;
225  const uint8_t* msContent =
226  reinterpret_cast<const uint8_t*>(ts.content(uMsCompIdx, uMsIdx));
227 
228  uint32_t uSize = msDescriptor.size;
229  fulCurrentMsIdx = msDescriptor.idx;
230 
231  fdMsTime = (1e-9) * static_cast<double>(fulCurrentMsIdx);
232 
233  LOG(debug) << "Microslice: " << fulCurrentMsIdx << " from EqId " << std::hex
234  << fuCurrentEquipmentId << std::dec << " has size: " << uSize;
235 
236  if (0 == fvbMaskedComponents.size())
237  fvbMaskedComponents.resize(ts.num_components(), kFALSE);
238 
239  fuCurrDpbId = static_cast<uint32_t>(fuCurrentEquipmentId & 0xFFFF);
240 
242  auto it = fGdpbIdIndexMap.find(fuCurrDpbId);
243  if (it == fGdpbIdIndexMap.end()) {
244  if (kFALSE == fvbMaskedComponents[uMsCompIdx]) {
245  LOG(info)
246  << "---------------------------------------------------------------";
247 
248  LOG(info) << FormatMsHeaderPrintout(msDescriptor);
249  LOG(warning) << "Could not find the gDPB index for AFCK id 0x" << std::hex
250  << fuCurrDpbId << std::dec << " in timeslice "
251  << fulCurrentTsIdx << " in microslice " << uMsIdx
252  << " component " << uMsCompIdx << "\n"
253  << "If valid this index has to be added in the PSD "
254  "parameter file in the DbpIdArray field";
255  fvbMaskedComponents[uMsCompIdx] = kTRUE;
256  } // if( kFALSE == fvbMaskedComponents[ uMsComp ] )
257  else
258  return kTRUE;
259 
262 
263 
264  return kFALSE;
265 
266  } // if( it == fGdpbIdIndexMap.end() )
267  else
269 
270  fuCurrentMsSysId = static_cast<unsigned int>(msDescriptor.sys_id);
271 
272  // If not integer number of message in input buffer, print warning/error
273  if (0 != (uSize % kuBytesPerMessage))
274  LOG(error) << "The input microslice buffer does NOT "
275  << "contain only complete nDPB messages!";
276 
278  if (fdStartTime < 0) fdStartTime = fdMsTime;
279 
280  // If MS time is less than start time print error and return
281  if (fdMsTime - fdStartTime < 0) {
282  LOG(error) << "negative time! ";
283  return kFALSE;
284  }
285 
286  // Compute the number of complete messages in the input microslice buffer
287  uint32_t uNbMessages =
288  (uSize - (uSize % kuBytesPerMessage)) / kuBytesPerMessage;
289 
290  // Prepare variables for the loop on contents
291  const uint64_t* pInBuff = reinterpret_cast<const uint64_t*>(msContent);
292 
293  PsdData::PsdGbtReader PsdReader(pInBuff);
294  //PsdReader.SetPrintOutMode(true);
295  if (uSize != 0) {
296  while (PsdReader.GetTotalGbtWordsRead() < uNbMessages) {
297  int ReadResult = PsdReader.ReadEventFles();
298  if (PsdReader.EvHdrAb.uHitsNumber > fviPsdChUId.size()) {
299  LOG(error) << "too many triggered channels! In header: "
300  << PsdReader.EvHdrAb.uHitsNumber
301  << " in PSD: " << fviPsdChUId.size();
302  break;
303  }
304 
305  if (ReadResult == 0) {
306  //hit loop
307  for (int hit_iter = 0; hit_iter < PsdReader.EvHdrAb.uHitsNumber;
308  hit_iter++) {
309  UInt_t uHitChannel = PsdReader.VectHitHdr.at(hit_iter).uHitChannel;
310  UInt_t uSignalCharge =
311  PsdReader.VectHitHdr.at(hit_iter).uSignalCharge;
312  UInt_t uZeroLevel = PsdReader.VectHitHdr.at(hit_iter).uZeroLevel;
313  std::vector<uint16_t> uWfm = PsdReader.VectHitData.at(hit_iter).uWfm;
314 
315  if (uHitChannel >= fviPsdChUId.size()) {
316  LOG(error) << "hit channel number out of range! channel index: "
317  << uHitChannel << " max: " << fviPsdChUId.size();
318  break;
319  }
320 
321  UInt_t uChId = uHitChannel;
322  UInt_t uRpdChId = uChId; //Should be map(uChId) TODO
323  UInt_t uChanUId = fviPsdChUId[uRpdChId]; //unique ID
324 
325  UInt_t uHitAmlpitude = 0;
326  UInt_t uHitChargeWfm = 0;
327  for (UInt_t wfm_iter = 0; wfm_iter < uWfm.size(); wfm_iter++) {
328  if (uWfm.at(wfm_iter) > uHitAmlpitude)
329  uHitAmlpitude = uWfm.at(wfm_iter);
330  uHitChargeWfm += uWfm.at(wfm_iter) - uZeroLevel;
331  }
332  uHitAmlpitude -= uZeroLevel;
333 
334  //printf("0x%08x %u %u %u %f %f\n", uChanUId, uChId, CbmPsdAddress::GetModuleId(uChanUId), CbmPsdAddress::GetSectionId(uChanUId), (double)PsdReader.VectHitHdr.at(hit_iter).uSignalCharge, (double)PsdReader.EvHdrAc.uAdcTime );
335 
336  Double_t dAdcTime = (double) PsdReader.EvHdrAb.ulMicroSlice
337  + (double) PsdReader.EvHdrAc.uAdcTime * 12.5
338  - fdTimeOffsetNs;
339 
340  LOG(debug) << Form("Insert 0x%08x digi with charge ", uChanUId)
341  << uSignalCharge
342  << Form(", at %u,", PsdReader.EvHdrAc.uAdcTime)
343  << " epoch: " << PsdReader.EvHdrAb.ulMicroSlice;
344 
345  fDigiVect.emplace_back(uChanUId, (double) uSignalCharge, dAdcTime);
346 
347  fDigiVect.back().SetAmpl(uHitAmlpitude);
348  fDigiVect.back().SetEdepWfm(uHitChargeWfm);
349  fDigiVect.back().SetZL(uZeroLevel);
350 
351  } // for(int hit_iter = 0; hit_iter < PsdReader.EvHdrAb.uHitsNumber; hit_iter++)
352  } else if (ReadResult == 1) {
353  LOG(error) << "no event headers in message!";
354  break;
355  } else if (ReadResult == 2) {
356  LOG(error) << "check number of waveform points! In header: "
357  << PsdReader.HitHdr.uWfmPoints << " should be: " << 8;
358  break;
359  } else if (ReadResult == 3) {
360  LOG(error) << "wrong amount of hits read! In header: "
361  << PsdReader.EvHdrAb.uHitsNumber
362  << " in hit vector: " << PsdReader.VectHitHdr.size();
363  break;
364  } else {
365  LOG(error)
366  << "PsdGbtReader.ReadEventFles() didn't return expected values";
367  break;
368  }
369 
370  } // while(PsdReader.GetTotalGbtWordsRead()<uNbMessages)
371 
372  if (uNbMessages != PsdReader.GetTotalGbtWordsRead())
373  LOG(error) << "Wrong amount of messages read!"
374  << " in microslice " << uNbMessages << " by PsdReader "
375  << PsdReader.GetTotalGbtWordsRead() << "\n";
376 
377  if (fulCurrentMsIdx != PsdReader.EvHdrAb.ulMicroSlice)
378  LOG(error) << "Wrong MS index!"
379  << " in microslice " << fulCurrentMsIdx << " by PsdReader "
380  << PsdReader.EvHdrAb.ulMicroSlice << "\n";
381 
382  } //if(uSize != 0)
383 
384  return kTRUE;
385 }
386 
387 
391 // -------------------------------------------------------------------------
CbmMcbm2018UnpackerAlgoPsd::GetParList
TList * GetParList()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:96
CbmMcbm2018UnpackerAlgoPsd::fuCurrentMsSysId
size_t fuCurrentMsSysId
Idx of the current MS in TS (0 to fuTotalMsNb)
Definition: CbmMcbm2018UnpackerAlgoPsd.h:105
CbmMcbm2018UnpackerAlgoPsd::fdStartTime
Double_t fdStartTime
Epoch + Epoch Cycle.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:133
CbmMcbm2018UnpackerAlgoPsd::~CbmMcbm2018UnpackerAlgoPsd
~CbmMcbm2018UnpackerAlgoPsd()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:65
CbmStar2019Algo< CbmPsdDigi >::fdMsSizeInNs
Double_t fdMsSizeInNs
/‍** Ignore Overlap Ms: all fuOverlapMsNb MS at the end of timeslice **‍/
Definition: CbmStar2019Algo.h:117
CbmMcbm2018PsdPar::GetNrOfChannelsPerFee
Int_t GetNrOfChannelsPerFee()
Definition: CbmMcbm2018PsdPar.h:64
CbmMcbm2018UnpackerAlgoPsd::ProcessTs
Bool_t ProcessTs(const fles::Timeslice &ts)
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:165
CbmPsdAddress.h
CbmStar2019Algo< CbmPsdDigi >::fuNbMsLoop
size_t fuNbMsLoop
Definition: CbmStar2019Algo.h:114
CbmMcbm2018UnpackerAlgoPsd::fuCurrDpbId
UInt_t fuCurrDpbId
Current equipment ID, tells from which DPB the current MS is originating.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:118
PsdData::PsdGbtReader::VectHitData
std::vector< PsdHitData > VectHitData
Definition: PsdGbtReader.h:34
CbmMcbm2018UnpackerAlgoPsd.h
CbmMcbm2018UnpackerAlgoPsd::fviPsdChUId
std::vector< Int_t > fviPsdChUId
Definition: CbmMcbm2018UnpackerAlgoPsd.h:90
CbmMcbm2018UnpackerAlgoPsd::fuCurrentEquipmentId
UInt_t fuCurrentEquipmentId
Index of current MS within the TS.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:116
CbmMcbm2018UnpackerAlgoPsd::FillHistograms
Bool_t FillHistograms()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:389
CbmMcbm2018UnpackerAlgoPsd::fvulCurrentEpochCycle
std::vector< ULong64_t > fvulCurrentEpochCycle
Current epoch index, per DPB.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:128
CbmMcbm2018UnpackerAlgoPsd::fvulCurrentEpochFull
std::vector< ULong64_t > fvulCurrentEpochFull
Epoch cycle from the Ms Start message and Epoch counter flip.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:129
CbmMcbm2018UnpackerAlgoPsd::InitParameters
Bool_t InitParameters()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:103
CbmMcbm2018PsdPar.h
CbmMcbm2018UnpackerAlgoPsd::Finish
virtual void Finish()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:76
CbmMcbm2018PsdPar::GetNrOfGbtx
Int_t GetNrOfGbtx()
Definition: CbmMcbm2018PsdPar.h:66
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
CbmStar2019Algo< CbmPsdDigi >::fuNbOverMsPerTs
size_t fuNbOverMsPerTs
Definition: CbmStar2019Algo.h:113
CbmMcbm2018UnpackerAlgoPsd::fGdpbIdIndexMap
std::map< UInt_t, UInt_t > fGdpbIdIndexMap
Total number of GDPBs in the system.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:78
CbmMcbm2018UnpackerAlgoPsd::ReInitContainers
Bool_t ReInitContainers()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:85
CbmMcbm2018UnpackerAlgoPsd::fdTimeOffsetNs
Double_t fdTimeOffsetNs
User settings: Data correction parameters.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:93
CbmMcbm2018UnpackerAlgoPsd::CbmMcbm2018UnpackerAlgoPsd
CbmMcbm2018UnpackerAlgoPsd()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:31
CbmMcbm2018UnpackerAlgoPsd::ProcessMs
Bool_t ProcessMs(const fles::Timeslice &ts, size_t uMsCompIdx, size_t uMsIdx)
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:220
CbmStar2019Algo< CbmPsdDigi >::fuNbCoreMsPerTs
size_t fuNbCoreMsPerTs
Definition: CbmStar2019Algo.h:112
CbmMcbm2018UnpackerAlgoPsd::fUnpackPar
CbmMcbm2018PsdPar * fUnpackPar
Settings from parameter file.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:75
PsdData::PsdGbtReader::EvHdrAc
PsdEventHeaderAC EvHdrAc
Definition: PsdGbtReader.h:29
PsdData::PsdGbtReader
Definition: PsdGbtReader.h:17
CbmPsdAddress::GetAddress
static UInt_t GetAddress(Int_t moduleId, Int_t sectionId)
Return address from system ID, module, Section.
Definition: CbmPsdAddress.h:38
CbmMcbm2018UnpackerAlgoPsd::Reset
virtual void Reset()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:75
CbmStar2019Algo< CbmPsdDigi >::fdTsFullSizeInNs
Double_t fdTsFullSizeInNs
Total size of the core MS in a TS, [nanoseconds].
Definition: CbmStar2019Algo.h:121
CbmStar2019Algo< CbmPsdDigi >::fParCList
TList * fParCList
Parameter management.
Definition: CbmStar2019Algo.h:108
CbmMcbm2018UnpackerAlgoPsd::kuBytesPerMessage
static const UInt_t kuBytesPerMessage
Definition: CbmMcbm2018UnpackerAlgoPsd.h:98
CbmStar2019Algo< CbmPsdDigi >::fvMsComponentsList
std::vector< size_t > fvMsComponentsList
Parameters related to FLES containers.
Definition: CbmStar2019Algo.h:111
CbmMcbm2018UnpackerAlgoPsd::fulCurrentTsIdx
ULong64_t fulCurrentTsIdx
Definition: CbmMcbm2018UnpackerAlgoPsd.h:103
PsdData::PsdGbtReader::ReadEventFles
int ReadEventFles()
Definition: PsdGbtReader.cxx:98
CbmMcbm2018UnpackerAlgoPsd::fuNrOfGbtx
UInt_t fuNrOfGbtx
Number of channels per GDPB.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:84
PsdData::PsdGbtReader::GetTotalGbtWordsRead
uint32_t GetTotalGbtWordsRead()
Definition: PsdGbtReader.h:48
CbmMcbm2018UnpackerAlgoPsd::fdMsTime
Double_t fdMsTime
End Time in ns of current TS Core from the index of the first MS first component.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:111
CbmMcbm2018UnpackerAlgoPsd::fuNrOfChannelsPerFee
UInt_t fuNrOfChannelsPerFee
Number of FEBs per GDPB.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:80
PsdData::PsdEventHeaderAC::uAdcTime
uint32_t uAdcTime
Empty bits.
Definition: PsdGbtDataFormat.h:58
PsdData::PsdGbtReader::EvHdrAb
PsdEventHeaderAB EvHdrAb
Definition: PsdGbtReader.h:28
CbmMcbm2018UnpackerAlgoPsd::Init
virtual Bool_t Init()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:70
CbmStar2019Algo
Definition: CbmStar2019Algo.h:43
CbmMcbm2018UnpackerAlgoPsd::InitContainers
Bool_t InitContainers()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:79
CbmMcbm2018PsdPar
Definition: CbmMcbm2018PsdPar.h:19
CbmMcbm2018PsdPar::GetNrOfGdpbs
Int_t GetNrOfGdpbs()
Definition: CbmMcbm2018PsdPar.h:61
CbmMcbm2018UnpackerAlgoPsd::AddMsComponentToList
void AddMsComponentToList(size_t component, UShort_t usDetectorId)
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:150
CbmStar2019Algo< CbmPsdDigi >::fdTsCoreSizeInNs
Double_t fdTsCoreSizeInNs
Size of a single MS, [nanoseconds].
Definition: CbmStar2019Algo.h:119
CbmMcbm2018UnpackerAlgoPsd::fuNrOfGdpbs
UInt_t fuNrOfGdpbs
Definition: CbmMcbm2018UnpackerAlgoPsd.h:77
CbmStar2019Algo< CbmPsdDigi >::fDigiVect
std::vector< CbmPsdDigi > fDigiVect
Vector of pointers to canvases + optional folder name.
Definition: CbmStar2019Algo.h:140
PsdData::PsdHitHeader::uWfmPoints
uint8_t uWfmPoints
Definition: PsdGbtDataFormat.h:88
FormatMsHeaderPrintout
std::string FormatMsHeaderPrintout(const fles::MicrosliceDescriptor &msDescriptor)
Definition: CbmFormatMsHeaderPrintout.cxx:5
PsdData::PsdEventHeaderAB::uHitsNumber
uint8_t uHitsNumber
Should be AB.
Definition: PsdGbtDataFormat.h:26
CbmMcbm2018PsdPar::GetNrOfFeesPerGdpb
Int_t GetNrOfFeesPerGdpb()
Definition: CbmMcbm2018PsdPar.h:63
CbmMcbm2018UnpackerAlgoPsd::CreateHistograms
Bool_t CreateHistograms()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:388
CbmMcbm2018UnpackerAlgoPsd::fuNrOfFeePerGdpb
UInt_t fuNrOfFeePerGdpb
gDPB ID to index map
Definition: CbmMcbm2018UnpackerAlgoPsd.h:79
CbmMcbm2018UnpackerAlgoPsd::fuNrOfChannelsPerGdpb
UInt_t fuNrOfChannelsPerGdpb
Number of channels in each FEE.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:81
PsdData::PsdGbtReader::HitHdr
PsdHitHeader HitHdr
Definition: PsdGbtReader.h:30
CbmMcbm2018UnpackerAlgoPsd::fuCurrDpbIdx
UInt_t fuCurrDpbIdx
Temp holder until Current equipment ID is properly filled in MS.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:120
CbmMcbm2018UnpackerAlgoPsd::fvulCurrentEpoch
std::vector< ULong64_t > fvulCurrentEpoch
Bin size in s for the plots with date as X axis.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:126
CbmMcbm2018UnpackerAlgoPsd::ResetHistograms
Bool_t ResetHistograms()
Definition: CbmMcbm2018UnpackerAlgoPsd.cxx:390
CbmPsdDigi
Data class for PSD digital information.
Definition: CbmPsdDigi.h:31
CbmMcbm2018UnpackerAlgoPsd::fulCurrentMsIdx
ULong64_t fulCurrentMsIdx
Idx of the current TS.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:104
CbmMcbm2018UnpackerAlgoPsd::fdTsStartTime
Double_t fdTsStartTime
SysId of the current MS in TS (0 to fuTotalMsNb)
Definition: CbmMcbm2018UnpackerAlgoPsd.h:107
CbmMcbm2018UnpackerAlgoPsd::fvbMaskedComponents
std::vector< Bool_t > fvbMaskedComponents
Switch ON the filling of a additional set of histograms.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:72
CbmMcbm2018UnpackerAlgoPsd::fuMsIndex
UInt_t fuMsIndex
Start Time in ns of current MS from its index field in header.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:112
PsdData::PsdEventHeaderAB::ulMicroSlice
uint64_t ulMicroSlice
Total number of hits.
Definition: PsdGbtDataFormat.h:27
CbmStar2019Algo< CbmPsdDigi >::fbIgnoreOverlapMs
Bool_t fbIgnoreOverlapMs
Definition: CbmStar2019Algo.h:116
CbmMcbm2018PsdPar::GetGdpbId
Int_t GetGdpbId(Int_t i)
Definition: CbmMcbm2018PsdPar.h:62
CbmFormatMsHeaderPrintout.h
CbmMcbm2018UnpackerAlgoPsd::fdTsStopTimeCore
Double_t fdTsStopTimeCore
Time in ns of current TS from the index of the first MS first component.
Definition: CbmMcbm2018UnpackerAlgoPsd.h:109
PsdData::PsdGbtReader::VectHitHdr
std::vector< PsdHitHeader > VectHitHdr
Definition: PsdGbtReader.h:33