CbmRoot
CbmStar2019TofFeeThr.cxx
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------
2 // ----- -----
3 // ----- CbmStar2019TofFeeThr -----
4 // ----- Created 10.07.2018 by P.-A. Loizeau -----
5 // ----- -----
6 // -----------------------------------------------------------------------------
7 
8 #include "CbmStar2019TofFeeThr.h"
9 #include "CbmStar2019TofPar.h"
10 
11 #include "CbmHistManager.h"
12 
13 #include "FairLogger.h"
14 #include "FairRootManager.h"
15 #include "FairRun.h"
16 #include "FairRunOnline.h"
17 #include "FairRuntimeDb.h"
18 
19 #include "Rtypes.h"
20 #include "TCanvas.h"
21 #include "TClonesArray.h"
22 #include "TF1.h"
23 #include "TH1.h"
24 #include "TH2.h"
25 #include "THStack.h"
26 #include "THttpServer.h"
27 #include "TMath.h"
28 #include "TPaveStats.h"
29 #include "TProfile.h"
30 #include "TProfile2D.h"
31 #include "TROOT.h"
32 #include "TString.h"
33 #include "TStyle.h"
34 
35 #include <algorithm>
36 #include <ctime>
37 #include <iomanip>
38 #include <iostream>
39 #include <stdint.h>
40 
43 
45  : CbmMcbmUnpack()
46  , fvMsComponentsList()
47  , fuNbCoreMsPerTs(0)
48  , fuNbOverMsPerTs(0)
49  , fbIgnoreOverlapMs(kFALSE)
50  , fsHistoFileFullname("data/TofPulserHistos.root")
51  , fuMsAcceptsPercent(100)
52  , fuTotalMsNb(0)
53  , fuOverlapMsNb(0)
54  , fuCoreMs(0)
55  , fdMsSizeInNs(0.0)
56  , fdTsCoreSizeInNs(0.0)
57  , fuMinNbGdpb(0)
58  , fuCurrNbGdpb(0)
59  , fUnpackPar()
60  , fuNrOfGdpbs(0)
61  , fuNrOfFeePerGdpb(0)
62  , fuNrOfGet4PerFee(0)
63  , fuNrOfChannelsPerGet4(0)
64  , fuNrOfChannelsPerFee(0)
65  , fuNrOfGet4(0)
66  , fuNrOfGet4PerGdpb(0)
67  , fuNrOfChannelsPerGdpb(0)
68  , fulCurrentTsIndex(0)
69  , fuCurrentMs(0)
70  , fuCurrentMsSysId(0)
71  , fdMsIndex(0)
72  , fuGdpbId(0)
73  , fuGdpbNr(0)
74  , fuGet4Id(0)
75  , fuGet4Nr(0)
76  , fiEquipmentId(0)
77  , fviMsgCounter(11, 0)
78  , // length of enum MessageTypes initialized with 0
79  fhGdpbAsicSpiCounts(nullptr)
80  , fvuPadiToGet4()
81  , fvuGet4ToPadi()
82  , fvuElinkToGet4()
83  , fvuGet4ToElink() {}
84 
86 
88  LOG(info) << "Initializing Get4 monitor";
89 
90  FairRootManager* ioman = FairRootManager::Instance();
91  if (ioman == NULL) {
92  LOG(fatal) << "No FairRootManager instance";
93  } // if( ioman == NULL )
94 
95  return kTRUE;
96 }
97 
99  LOG(info) << "Setting parameter containers for " << GetName();
100  fUnpackPar =
101  (CbmStar2019TofPar*) (FairRun::Instance()->GetRuntimeDb()->getContainer(
102  "CbmStar2019TofPar"));
103 }
104 
106  LOG(info) << "Init parameter containers for " << GetName();
107  Bool_t initOK = ReInitContainers();
108 
110 
111  return initOK;
112 }
113 
115  LOG(info) << "ReInit parameter containers for " << GetName();
116 
118  LOG(info) << "Nr. of Tof GDPBs: " << fuNrOfGdpbs;
120 
122  30;
123  LOG(info) << "Nr. of FEEs per Tof GDPB: " << fuNrOfFeePerGdpb;
124 
126  LOG(info) << "Nr. of GET4 per Tof FEE: " << fuNrOfGet4PerFee;
127 
129  LOG(info) << "Nr. of channels per GET4: " << fuNrOfChannelsPerGet4;
130 
132  LOG(info) << "Nr. of channels per FEE: " << fuNrOfChannelsPerFee;
133 
135  LOG(info) << "Nr. of GET4s: " << fuNrOfGet4;
136 
138  LOG(info) << "Nr. of GET4s per GDPB: " << fuNrOfGet4PerGdpb;
139 
141  LOG(info) << "Nr. of channels per GDPB: " << fuNrOfChannelsPerGdpb;
142 
143  fGdpbIdIndexMap.clear();
144  for (UInt_t i = 0; i < fuNrOfGdpbs; ++i) {
146  LOG(info) << "GDPB Id of TOF " << i << " : " << std::hex
147  << fUnpackPar->GetGdpbId(i) << std::dec;
148  } // for( UInt_t i = 0; i < fuNrOfGdpbs; ++i )
149 
151  LOG(info) << "Nr. of GBTx: " << fuNrOfGbtx;
152 
156  LOG(info) << "Timeslice parameters: " << fuTotalMsNb
157  << " MS per link, of which " << fuOverlapMsNb
158  << " overlap MS, each MS is " << fdMsSizeInNs << " ns";
159 
163  /*
164  UInt_t uGet4topadi[32] = {
165  4, 3, 2, 1, // provided by Jochen
166  24, 23, 22, 21,
167  8, 7, 6, 5,
168  28, 27, 26, 25,
169  12, 11, 10, 9,
170  32, 31, 30, 29,
171  16, 15, 14, 13,
172  20, 19, 18, 17 };
173 */
175  UInt_t uGet4topadi[32] = {4, 3, 2, 1, // provided by Jochen
176  8, 7, 6, 5, 12, 11, 10, 9, 16, 15,
177  14, 13, 20, 19, 18, 17, 24, 23, 22, 21,
178  28, 27, 26, 25, 32, 31, 30, 29};
179 
180  UInt_t uPaditoget4[32] = {4, 3, 2, 1, // provided by Jochen
181  12, 11, 10, 9, 20, 19, 18, 17, 28, 27,
182  26, 25, 32, 31, 30, 29, 8, 7, 6, 5,
183  16, 15, 14, 13, 24, 23, 22, 21};
184 
185  for (UInt_t uChan = 0; uChan < fuNrOfChannelsPerFee; ++uChan) {
186  fvuPadiToGet4[uChan] = uPaditoget4[uChan] - 1;
187  fvuGet4ToPadi[uChan] = uGet4topadi[uChan] - 1;
188  } // for( UInt_t uChan = 0; uChan < fuNrOfChannelsPerFee; ++uChan )
189 
190 
194  UInt_t kuElinkToGet4[kuNbGet4PerGbtx] = {
195  27, 2, 7, 3, 31, 26, 30, 1, 33, 37, 32, 13, 9, 14,
196  10, 15, 17, 21, 16, 35, 34, 38, 25, 24, 0, 6, 20, 23,
197  18, 22, 28, 4, 29, 5, 19, 36, 39, 8, 12, 11};
198  UInt_t kuGet4ToElink[kuNbGet4PerGbtx] = {
199  24, 7, 1, 3, 31, 33, 25, 2, 37, 12, 14, 39, 38, 11,
200  13, 15, 18, 16, 28, 34, 26, 17, 29, 27, 23, 22, 5, 0,
201  30, 32, 6, 4, 10, 8, 20, 19, 35, 9, 21, 36};
202 
203  for (UInt_t uLinkAsic = 0; uLinkAsic < kuNbGet4PerGbtx; ++uLinkAsic) {
204  fvuElinkToGet4[uLinkAsic] = kuElinkToGet4[uLinkAsic];
205  fvuGet4ToElink[uLinkAsic] = kuGet4ToElink[uLinkAsic];
206  } // for( UInt_t uChan = 0; uChan < fuNrOfChannelsPerFee; ++uChan )
207 
208  return kTRUE;
209 }
210 
211 
213  UShort_t usDetectorId) {
215  for (UInt_t uCompIdx = 0; uCompIdx < fvMsComponentsList.size(); ++uCompIdx)
216  if (component == fvMsComponentsList[uCompIdx]) return;
217 
219  fvMsComponentsList.push_back(component);
220 }
221 void CbmStar2019TofFeeThr::SetNbMsInTs(size_t uCoreMsNb, size_t uOverlapMsNb) {
222  fuNbCoreMsPerTs = uCoreMsNb;
223  fuNbOverMsPerTs = uOverlapMsNb;
224 
225  // UInt_t uNbMsTotal = fuNbCoreMsPerTs + fuNbOverMsPerTs;
226 }
227 
229  LOG(info) << "create Histos for " << fuNrOfGdpbs << " gDPBs ";
230 
231  THttpServer* server = FairRunOnline::Instance()->GetHttpServer();
232 
233  fhGdpbAsicSpiCounts = new TH2I(
234  "hGdpbAsicSpiCounts",
235  "SPI messages count per GDPB and ASIC; ASIC Idx []; GDPB []; SPI msg[]",
237  -0.5,
238  fuNrOfGet4PerGdpb - 0.5,
239  fuNrOfGdpbs,
240  -0.5,
241  fuNrOfGdpbs - 0.5);
242 
243  if (server) {
244  server->Register("/", fhGdpbAsicSpiCounts);
245  server->RegisterCommand("/Reset_All_eTOF",
246  "bStar2019TofFeeThrResetHistos=kTRUE");
247  server->RegisterCommand("/Save_All_eTof",
248  "bStar2019TofFeeThrSaveHistos=kTRUE");
249 
250  server->Restrict("/Reset_All_eTof", "allow=admin");
251  server->Restrict("/Save_All_eTof", "allow=admin");
252  } // if( server )
253 
254  LOG(info) << "Leaving CreateHistograms";
255 }
256 
257 Bool_t CbmStar2019TofFeeThr::DoUnpack(const fles::Timeslice& ts,
258  size_t component) {
260  LOG(info) << "Reset eTOF STAR histos ";
261  ResetAllHistos();
263  } // if( bStar2019TofFeeThrResetHistos )
265  LOG(info) << "Start saving eTOF STAR histos ";
266  SaveAllHistos("data/histos_Shift_StarTof.root");
268  } // if( bSaveStsHistos )
269 
270 
271  LOG(debug1) << "Timeslice contains " << ts.num_microslices(component)
272  << "microslices.";
273 
275  UInt_t uNbMsLoop = fuNbCoreMsPerTs;
276  if (kFALSE == fbIgnoreOverlapMs) uNbMsLoop += fuNbOverMsPerTs;
277 
278  Int_t messageType = -111;
279  Double_t dTsStartTime = -1;
280 
282  for (UInt_t uMsIdx = 0; uMsIdx < uNbMsLoop; uMsIdx++) {
283  if (fuMsAcceptsPercent < uMsIdx) continue;
284 
285  fuCurrentMs = uMsIdx;
286 
287  if (0 == fulCurrentTsIndex && 0 == uMsIdx) {
288  for (UInt_t uMsCompIdx = 0; uMsCompIdx < fvMsComponentsList.size();
289  ++uMsCompIdx) {
290  UInt_t uMsComp = fvMsComponentsList[uMsCompIdx];
291  auto msDescriptor = ts.descriptor(uMsComp, uMsIdx);
292  LOG(info)
293  << "hi hv eqid flag si sv idx/start crc size offset";
294  LOG(info) << Form(
295  "%02x %02x %04x %04x %02x %02x %016lx %08x %08x %016lx",
296  static_cast<unsigned int>(msDescriptor.hdr_id),
297  static_cast<unsigned int>(msDescriptor.hdr_ver),
298  msDescriptor.eq_id,
299  msDescriptor.flags,
300  static_cast<unsigned int>(msDescriptor.sys_id),
301  static_cast<unsigned int>(msDescriptor.sys_ver),
302  msDescriptor.idx,
303  msDescriptor.crc,
304  msDescriptor.size,
305  msDescriptor.offset);
306  } // for( UInt_t uMsCompIdx = 0; uMsCompIdx < fvMsComponentsList.size(); ++uMsCompIdx )
307  } // if( 0 == fulCurrentTsIndex && 0 == uMsIdx )
308 
310  for (UInt_t uMsCompIdx = 0; uMsCompIdx < fvMsComponentsList.size();
311  ++uMsCompIdx) {
312  constexpr uint32_t kuBytesPerMessage = 8;
313 
314  UInt_t uMsComp = fvMsComponentsList[uMsCompIdx];
315  auto msDescriptor = ts.descriptor(uMsComp, uMsIdx);
316  fiEquipmentId = msDescriptor.eq_id;
317  fdMsIndex = static_cast<double>(msDescriptor.idx);
318  fuCurrentMsSysId = static_cast<unsigned int>(msDescriptor.sys_id);
319  const uint8_t* msContent =
320  reinterpret_cast<const uint8_t*>(ts.content(uMsComp, uMsIdx));
321 
322  uint32_t size = msDescriptor.size;
323  // fulLastMsIdx = msDescriptor.idx;
324  if (size > 0)
325  LOG(debug) << "Microslice: " << msDescriptor.idx
326  << " has size: " << size;
327 
328  // If not integer number of message in input buffer, print warning/error
329  if (0 != (size % kuBytesPerMessage))
330  LOG(error) << "The input microslice buffer does NOT "
331  << "contain only complete nDPB messages!";
332 
333  // Compute the number of complete messages in the input microslice buffer
334  uint32_t uNbMessages =
335  (size - (size % kuBytesPerMessage)) / kuBytesPerMessage;
336 
337  // Get the gDPB ID from the MS header
339 
341  auto it = fGdpbIdIndexMap.find(fuGdpbId);
342  if (it == fGdpbIdIndexMap.end()) {
343  LOG(info)
344  << "---------------------------------------------------------------";
345  LOG(info)
346  << "hi hv eqid flag si sv idx/start crc size offset";
347  LOG(info) << Form(
348  "%02x %02x %04x %04x %02x %02x %016lx %08x %08x %016lx",
349  static_cast<unsigned int>(msDescriptor.hdr_id),
350  static_cast<unsigned int>(msDescriptor.hdr_ver),
351  msDescriptor.eq_id,
352  msDescriptor.flags,
353  static_cast<unsigned int>(msDescriptor.sys_id),
354  static_cast<unsigned int>(msDescriptor.sys_ver),
355  msDescriptor.idx,
356  msDescriptor.crc,
357  msDescriptor.size,
358  msDescriptor.offset);
359  LOG(warning) << "Could not find the gDPB index for AFCK id 0x"
360  << std::hex << fuGdpbId << std::dec << " in timeslice "
361  << fulCurrentTsIndex << " in microslice " << fdMsIndex
362  << " component " << uMsCompIdx << "\n"
363  << "If valid this index has to be added in the TOF "
364  "parameter file in the RocIdArray field";
365  continue;
366  } // if( it == fGdpbIdIndexMap.end() )
367  else
369 
370  // Prepare variables for the loop on contents
371  const uint64_t* pInBuff = reinterpret_cast<const uint64_t*>(msContent);
372  for (uint32_t uIdx = 0; uIdx < uNbMessages; uIdx++) {
373  // Fill message
374  uint64_t ulData = static_cast<uint64_t>(pInBuff[uIdx]);
375 
377  if (0 == uIdx) { continue; } // if( 0 == uIdx )
378 
379  gdpbv100::Message mess(ulData);
380 
381  // Increment counter for different message types
382  // and fill the corresponding histogram
383  messageType = mess.getMessageType();
384  fviMsgCounter[messageType]++;
385 
389  if (0x90 == fuCurrentMsSysId) fuGet4Id = mess.getGdpbGenChipId();
391 
392  if (fuNrOfGet4PerGdpb <= fuGet4Id && !mess.isStarTrigger()
394  LOG(warning) << "Message with Get4 ID too high: " << fuGet4Id
395  << " VS " << fuNrOfGet4PerGdpb << " set in parameters.";
396 
397  switch (messageType) {
398  case gdpbv100::MSG_HIT:
399  case gdpbv100::MSG_EPOCH: break;
400  case gdpbv100::MSG_SLOWC: {
401  PrintSlcInfo(mess);
402  break;
403  } // case gdpbv100::MSG_SLOWC:
404  case gdpbv100::MSG_SYST:
408  case gdpbv100::MSG_STAR_TRI_D: break;
409  default:
410  LOG(error) << "Message type " << std::hex << std::setw(2)
411  << static_cast<uint16_t>(messageType)
412  << " not included in Get4 unpacker.";
413  } // switch( mess.getMessageType() )
414  } // for (uint32_t uIdx = 0; uIdx < uNbMessages; uIdx ++)
415  } // for( UInt_t uMsCompIdx = 0; uMsCompIdx < fvMsComponentsList.size(); ++uMsCompIdx )
416  } // for( UInt_t uMsIdx = 0; uMsIdx < uNbMsLoop; uMsIdx ++ )
417 
418 
420 
421  return kTRUE;
422 }
423 
425  if (fGdpbIdIndexMap.end() != fGdpbIdIndexMap.find(fuGdpbId)) {
426  UInt_t uChan = mess.getGdpbSlcChan();
427  UInt_t uEdge = mess.getGdpbSlcEdge();
428  UInt_t uData = mess.getGdpbSlcData();
429  UInt_t uType = mess.getGdpbSlcType();
430 
431  Double_t dGdpbChId = fuGet4Id * fuNrOfChannelsPerGet4
432  + mess.getGdpbSlcChan() + 0.5 * mess.getGdpbSlcEdge();
433  Double_t dFullChId = fuGet4Nr * fuNrOfChannelsPerGet4
434  + mess.getGdpbSlcChan() + 0.5 * mess.getGdpbSlcEdge();
435  Double_t dMessTime = fdMsIndex * 1e-9;
436 
438  if (gdpbv100::GET4_32B_SLC_SPIREAD == uType) {
440  LOG(info) << "GET4 Slow Control message, time "
441  << Form("%3.3f", dMessTime) << " s "
442  << Form(" for board %02u (ID %04x, sector %2u)",
443  fuGdpbNr,
444  fuGdpbId,
445  fuGdpbNr + 13)
446  << "\n"
447  << " +++++++ > Chip = " << std::setw(3) << fuGet4Id
448  << ", Chan = " << std::setw(1) << uChan
449  << ", Edge = " << std::setw(1) << uEdge
450  << ", Type = " << std::setw(1) << mess.getGdpbSlcType() << ", "
451  << Form("channel %1u,", (uData >> 10) & 0xF)
452  << Form("value 0x%03x ", uData & 0x3FF)
453  << Form("(Data = 0x%06x)", uData);
454  } // if( gdpbv100::GET4_32B_SLC_SPIREAD == uType )
455  }
456 }
457 
459 
461  // Printout some stats on what was unpacked
462  TString message_type;
463  for (unsigned int i = 0; i < fviMsgCounter.size(); ++i) {
464  switch (i) {
465  case 0: message_type = "NOP"; break;
466  case 1: message_type = "HIT"; break;
467  case 2: message_type = "EPOCH"; break;
468  case 3: message_type = "SYNC"; break;
469  case 4: message_type = "AUX"; break;
470  case 5: message_type = "EPOCH2"; break;
471  case 6: message_type = "GET4"; break;
472  case 7: message_type = "SYS"; break;
473  case 8: message_type = "GET4_SLC"; break;
474  case 9: message_type = "GET4_32B"; break;
475  case 10: message_type = "GET4_SYS"; break;
476  default: message_type = "UNKNOWN"; break;
477  } // switch(i)
478  LOG(info) << message_type << " messages: " << fviMsgCounter[i];
479  } // for (unsigned int i=0; i< fviMsgCounter.size(); ++i)
480 
482  // SaveAllHistos();
483 }
484 
485 void CbmStar2019TofFeeThr::SaveAllHistos(TString sFileName) {
486  TDirectory* oldDir = NULL;
487  TFile* histoFile = NULL;
488  if ("" != sFileName) {
489  // Store current directory position to allow restore later
490  oldDir = gDirectory;
491  // open separate histo file in recreate mode
492  histoFile = new TFile(sFileName, "RECREATE");
493  histoFile->cd();
494  } // if( "" != sFileName )
495 
496  if ("" != sFileName) {
497  // Restore original directory position
498  histoFile->Close();
499  oldDir->cd();
500  } // if( "" != sFileName )
501 }
502 
504  LOG(info) << "Reseting all TOF histograms.";
505  fhGdpbAsicSpiCounts->Reset();
506 }
gdpbv100::MSG_STAR_TRI_A
@ MSG_STAR_TRI_A
Definition: gDpbMessv100.h:63
gdpbv100::Message
Definition: gDpbMessv100.h:133
gdpbv100::Message::getGdpbSlcType
uint32_t getGdpbSlcType() const
Definition: gDpbMessv100.h:241
CbmStar2019TofFeeThr::ConvertElinkToGet4
UInt_t ConvertElinkToGet4(UInt_t uElinkIdx)
Definition: CbmStar2019TofFeeThr.h:151
CbmStar2019TofFeeThr::fuCurrentMs
size_t fuCurrentMs
Definition: CbmStar2019TofFeeThr.h:119
CbmStar2019TofPar::GetNrOfChannelsPerGet4
static constexpr UInt_t GetNrOfChannelsPerGet4()
Definition: CbmStar2019TofPar.h:45
CbmStar2019TofFeeThr::fuNrOfGet4PerGdpb
UInt_t fuNrOfGet4PerGdpb
Definition: CbmStar2019TofFeeThr.h:106
bStar2019TofFeeThrSaveHistos
Bool_t bStar2019TofFeeThrSaveHistos
Definition: CbmStar2019TofFeeThr.cxx:42
gdpbv100::Message::getGdpbSlcChan
uint32_t getGdpbSlcChan() const
Definition: gDpbMessv100.h:239
CbmStar2019TofFeeThr::fvuGet4ToElink
std::vector< UInt_t > fvuGet4ToElink
Definition: CbmStar2019TofFeeThr.h:150
CbmStar2019TofFeeThr::Finish
virtual void Finish()
Definition: CbmStar2019TofFeeThr.cxx:460
gdpbv100::MSG_HIT
@ MSG_HIT
Definition: gDpbMessv100.h:59
CbmStar2019TofFeeThr::fuNrOfChannelsPerGet4
UInt_t fuNrOfChannelsPerGet4
Definition: CbmStar2019TofFeeThr.h:102
CbmStar2019TofFeeThr::fuNbCoreMsPerTs
size_t fuNbCoreMsPerTs
Definition: CbmStar2019TofFeeThr.h:77
CbmStar2019TofPar::GetNrOfGbtx
Int_t GetNrOfGbtx()
Definition: CbmStar2019TofPar.h:86
CbmStar2019TofFeeThr::fuOverlapMsNb
size_t fuOverlapMsNb
Definition: CbmStar2019TofFeeThr.h:90
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
gdpbv100::MSG_SLOWC
@ MSG_SLOWC
Definition: gDpbMessv100.h:61
CbmStar2019TofFeeThr::fuNrOfGdpbs
UInt_t fuNrOfGdpbs
Definition: CbmStar2019TofFeeThr.h:99
CbmStar2019TofFeeThr::fuGdpbNr
UInt_t fuGdpbNr
Definition: CbmStar2019TofFeeThr.h:124
CbmStar2019TofFeeThr::AddMsComponentToList
virtual void AddMsComponentToList(size_t component, UShort_t usDetectorId)
Definition: CbmStar2019TofFeeThr.cxx:212
CbmStar2019TofFeeThr::SetParContainers
void SetParContainers()
Definition: CbmStar2019TofFeeThr.cxx:98
gdpbv100::MSG_STAR_TRI_D
@ MSG_STAR_TRI_D
Definition: gDpbMessv100.h:66
gdpbv100::Message::getMessageType
uint8_t getMessageType() const
Returns the message type. Valid for all message types. 4 bit.
Definition: gDpbMessv100.h:206
CbmStar2019TofFeeThr::fuNrOfGbtx
UInt_t fuNrOfGbtx
Definition: CbmStar2019TofFeeThr.h:109
CbmStar2019TofFeeThr::fuNrOfFeePerGdpb
UInt_t fuNrOfFeePerGdpb
Definition: CbmStar2019TofFeeThr.h:100
CbmStar2019TofFeeThr::SetNbMsInTs
virtual void SetNbMsInTs(size_t uCoreMsNb, size_t uOverlapMsNb)
Definition: CbmStar2019TofFeeThr.cxx:221
gdpbv100::Message::isStarTrigger
bool isStarTrigger() const
Returns true is message type is MSG_STAR_TRI_A, _B, _C, _D (STAR Trigger message)
Definition: gDpbMessv100.h:329
CbmStar2019TofFeeThr::kuNbGet4PerGbtx
static const UInt_t kuNbGet4PerGbtx
Definition: CbmStar2019TofFeeThr.h:148
CbmHistManager.h
Histogram manager.
CbmStar2019TofPar::GetGdpbId
Int_t GetGdpbId(Int_t i)
Definition: CbmStar2019TofPar.h:39
CbmStar2019TofFeeThr::fviMsgCounter
std::vector< int > fviMsgCounter
Definition: CbmStar2019TofFeeThr.h:130
bStar2019TofFeeThrResetHistos
Bool_t bStar2019TofFeeThrResetHistos
Definition: CbmStar2019TofFeeThr.cxx:41
CbmStar2019TofFeeThr::fuGet4Id
UInt_t fuGet4Id
Definition: CbmStar2019TofFeeThr.h:126
CbmStar2019TofFeeThr::fGdpbIdIndexMap
std::map< UInt_t, UInt_t > fGdpbIdIndexMap
Map of ID to index for the gDPBs.
Definition: CbmStar2019TofFeeThr.h:115
CbmStar2019TofFeeThr::fuGet4Nr
UInt_t fuGet4Nr
Definition: CbmStar2019TofFeeThr.h:128
CbmStar2019TofFeeThr::CreateHistograms
void CreateHistograms()
Definition: CbmStar2019TofFeeThr.cxx:228
CbmStar2019TofFeeThr::SaveAllHistos
void SaveAllHistos(TString sFileName="")
Definition: CbmStar2019TofFeeThr.cxx:485
CbmStar2019TofFeeThr::PrintSlcInfo
void PrintSlcInfo(gdpbv100::Message)
Definition: CbmStar2019TofFeeThr.cxx:424
CbmStar2019TofFeeThr::fbIgnoreOverlapMs
Bool_t fbIgnoreOverlapMs
Definition: CbmStar2019TofFeeThr.h:80
CbmStar2019TofFeeThr::fulCurrentTsIndex
uint64_t fulCurrentTsIndex
Definition: CbmStar2019TofFeeThr.h:118
gdpbv100::MSG_STAR_TRI_C
@ MSG_STAR_TRI_C
Definition: gDpbMessv100.h:65
CbmStar2019TofFeeThr::fdMsIndex
Double_t fdMsIndex
Definition: CbmStar2019TofFeeThr.h:121
CbmStar2019TofFeeThr::DoUnpack
virtual Bool_t DoUnpack(const fles::Timeslice &ts, size_t component)
Definition: CbmStar2019TofFeeThr.cxx:257
CbmStar2019TofFeeThr::fuTotalMsNb
size_t fuTotalMsNb
Definition: CbmStar2019TofFeeThr.h:88
CbmStar2019TofFeeThr.h
CbmStar2019TofFeeThr::fuNrOfChannelsPerFee
UInt_t fuNrOfChannelsPerFee
Definition: CbmStar2019TofFeeThr.h:104
gdpbv100::Message::getGdpbSlcEdge
uint32_t getGdpbSlcEdge() const
Definition: gDpbMessv100.h:240
gdpbv100::kuChipIdMergedEpoch
const uint32_t kuChipIdMergedEpoch
Definition: gDpbMessv100.h:51
CbmStar2019TofFeeThr::InitContainers
Bool_t InitContainers()
Definition: CbmStar2019TofFeeThr.cxx:105
CbmStar2019TofPar::GetNrOfGet4PerFee
static constexpr UInt_t GetNrOfGet4PerFee()
Definition: CbmStar2019TofPar.h:48
ClassImp
ClassImp(CbmConverterManager) InitStatus CbmConverterManager
Definition: CbmConverterManager.cxx:12
CbmStar2019TofFeeThr::CbmStar2019TofFeeThr
CbmStar2019TofFeeThr()
Definition: CbmStar2019TofFeeThr.cxx:44
CbmStar2019TofPar.h
gdpbv100::MSG_SYST
@ MSG_SYST
Definition: gDpbMessv100.h:62
CbmStar2019TofFeeThr::fvMsComponentsList
std::vector< size_t > fvMsComponentsList
FLES containers.
Definition: CbmStar2019TofFeeThr.h:72
CbmStar2019TofFeeThr::ResetAllHistos
void ResetAllHistos()
Definition: CbmStar2019TofFeeThr.cxx:503
CbmStar2019TofFeeThr::fuNbOverMsPerTs
size_t fuNbOverMsPerTs
Definition: CbmStar2019TofFeeThr.h:78
CbmStar2019TofFeeThr::fvuElinkToGet4
std::vector< UInt_t > fvuElinkToGet4
5 FEE with 8 GET4 each
Definition: CbmStar2019TofFeeThr.h:149
CbmStar2019TofFeeThr
Definition: CbmStar2019TofFeeThr.h:33
CbmStar2019TofPar
Definition: CbmStar2019TofPar.h:18
CbmStar2019TofFeeThr::ReInitContainers
Bool_t ReInitContainers()
Definition: CbmStar2019TofFeeThr.cxx:114
CbmStar2019TofFeeThr::fuNrOfChannelsPerGdpb
UInt_t fuNrOfChannelsPerGdpb
Definition: CbmStar2019TofFeeThr.h:107
CbmStar2019TofFeeThr::fvuGet4ToPadi
std::vector< UInt_t > fvuGet4ToPadi
Definition: CbmStar2019TofFeeThr.h:145
CbmStar2019TofFeeThr::fiEquipmentId
Int_t fiEquipmentId
Definition: CbmStar2019TofFeeThr.h:129
gdpbv100::MSG_EPOCH
@ MSG_EPOCH
Definition: gDpbMessv100.h:60
CbmStar2019TofFeeThr::fdTsCoreSizeInNs
Double_t fdTsCoreSizeInNs
Definition: CbmStar2019TofFeeThr.h:93
CbmStar2019TofFeeThr::fuNrOfGet4PerFee
UInt_t fuNrOfGet4PerFee
Definition: CbmStar2019TofFeeThr.h:101
CbmStar2019TofPar::GetNrOfGdpbs
Int_t GetNrOfGdpbs()
Definition: CbmStar2019TofPar.h:38
CbmStar2019TofFeeThr::fuMinNbGdpb
UInt_t fuMinNbGdpb
Definition: CbmStar2019TofFeeThr.h:94
CbmStar2019TofFeeThr::fUnpackPar
CbmStar2019TofPar * fUnpackPar
Definition: CbmStar2019TofFeeThr.h:98
gdpbv100::Message::getGdpbGenChipId
uint16_t getGdpbGenChipId() const
Definition: gDpbMessv100.h:214
CbmStar2019TofFeeThr::fvuPadiToGet4
std::vector< UInt_t > fvuPadiToGet4
Definition: CbmStar2019TofFeeThr.h:144
CbmStar2019TofFeeThr::fuCoreMs
size_t fuCoreMs
Definition: CbmStar2019TofFeeThr.h:91
gdpbv100::MSG_STAR_TRI_B
@ MSG_STAR_TRI_B
Definition: gDpbMessv100.h:64
CbmStar2019TofFeeThr::fuCurrentMsSysId
size_t fuCurrentMsSysId
Definition: CbmStar2019TofFeeThr.h:120
CbmStar2019TofFeeThr::Init
virtual Bool_t Init()
Definition: CbmStar2019TofFeeThr.cxx:87
gdpbv100::Message::getGdpbSlcData
uint32_t getGdpbSlcData() const
Definition: gDpbMessv100.h:242
gdpbv100::GET4_32B_SLC_SPIREAD
@ GET4_32B_SLC_SPIREAD
Definition: gDpbMessv100.h:103
CbmStar2019TofFeeThr::fuGdpbId
UInt_t fuGdpbId
Definition: CbmStar2019TofFeeThr.h:122
CbmStar2019TofFeeThr::fuNrOfGet4
UInt_t fuNrOfGet4
Definition: CbmStar2019TofFeeThr.h:105
CbmStar2019TofFeeThr::~CbmStar2019TofFeeThr
virtual ~CbmStar2019TofFeeThr()
Definition: CbmStar2019TofFeeThr.cxx:85
CbmStar2019TofPar::GetSizeMsInNs
Double_t GetSizeMsInNs()
Definition: CbmStar2019TofPar.h:93
CbmStar2019TofFeeThr::Reset
virtual void Reset()
Definition: CbmStar2019TofFeeThr.cxx:458
CbmMcbmUnpack
Definition: CbmMcbmUnpack.h:15
CbmStar2019TofFeeThr::fuMsAcceptsPercent
size_t fuMsAcceptsPercent
OLD, to be cleaned out !!!!!
Definition: CbmStar2019TofFeeThr.h:87
CbmStar2019TofFeeThr::fhGdpbAsicSpiCounts
TH2 * fhGdpbAsicSpiCounts
Histograms.
Definition: CbmStar2019TofFeeThr.h:133
CbmStar2019TofFeeThr::fsHistoFileFullname
TString fsHistoFileFullname
/‍** Ignore Overlap Ms: all fuOverlapMsNb MS at the end of timeslice **‍/
Definition: CbmStar2019TofFeeThr.h:83
CbmStar2019TofFeeThr::fdMsSizeInNs
Double_t fdMsSizeInNs
Definition: CbmStar2019TofFeeThr.h:92