83 int nbx = std::round(xmax - xmin);
84 if (mTransmitted ==
nullptr) {
87 if (mFired ==
nullptr) {
90 if (mLoss ==
nullptr) {
92 setModuleLabel(mLoss.get());
94 if (mError ==
nullptr) {
96 setModuleLabel(mError.get());
98 if (mOve ==
nullptr) {
100 setModuleLabel(mOve.get());
102 if (mBits ==
nullptr) {
104 setTriggerYLabel(mBits.get());
105 setModuleLabel(mBits.get());
107 if (mBitsH ==
nullptr) {
109 setTriggerYLabel(mBitsH.get());
110 setModuleLabel(mBitsH.get());
115 if (mBaseline[
i] ==
nullptr) {
116 TString hname = TString::Format(
"hp%d%d", imod, ich);
117 TString htit = TString::Format(
"Baseline mod. %d ch. %d;Average orbit baseline", imod, ich);
119 mBaseline[
i] = std::make_unique<TH1F>(hname, htit, 65536, -32768.5, 32767.5);
121 if (mCounts[
i] ==
nullptr) {
122 TString hname = TString::Format(
"hc%d%d", imod, ich);
123 TString htit = TString::Format(
"Counts mod. %d ch. %d; Orbit hits", imod, ich);
126 if (mSignalA[
i] ==
nullptr) {
127 TString hname = TString::Format(
"hsa%d%d", imod, ich);
128 TString htit = TString::Format(
"Signal mod. %d ch. %d ALICET; Sample; ADC", imod, ich);
129 mSignalA[
i] = std::make_unique<TH2F>(hname, htit, nbx, xmin, xmax,
ADCRange,
ADCMin - 0.5,
ADCMax + 0.5);
131 if (mSignalT[
i] ==
nullptr) {
132 TString hname = TString::Format(
"hst%d%d", imod, ich);
133 TString htit = TString::Format(
"Signal mod. %d ch. %d AUTOT; Sample; ADC", imod, ich);
134 mSignalT[
i] = std::make_unique<TH2F>(hname, htit, nbx, xmin, xmax,
ADCRange,
ADCMin - 0.5,
ADCMax + 0.5);
136 if (mSignalTH[
i] ==
nullptr) {
137 TString hname = TString::Format(
"hsth%d%d", imod, ich);
138 TString htit = TString::Format(
"Signal mod. %d ch. %d AUTOT & Hit; Sample; ADC", imod, ich);
141 if (mBunchA[
i] ==
nullptr) {
142 TString hname = TString::Format(
"hba%d%d", imod, ich);
143 TString htit = TString::Format(
"Bunch mod. %d ch. %d ALICET; Sample; ADC", imod, ich);
144 mBunchA[
i] = std::make_unique<TH2F>(hname, htit, 100, -0.5, 99.5, 36, -35.5, 0.5);
146 if (mBunchT[
i] ==
nullptr) {
147 TString hname = TString::Format(
"hbt%d%d", imod, ich);
148 TString htit = TString::Format(
"Bunch mod. %d ch. %d AUTOT; Sample; ADC", imod, ich);
149 mBunchT[
i] = std::make_unique<TH2F>(hname, htit, 100, -0.5, 99.5, 36, -35.5, 0.5);
151 if (mBunchH[
i] ==
nullptr) {
152 TString hname = TString::Format(
"hbh%d%d", imod, ich);
153 TString htit = TString::Format(
"Bunch mod. %d ch. %d AUTOT Hit; Sample; ADC", imod, ich);
154 mBunchH[
i] = std::make_unique<TH2F>(hname, htit, 100, -0.5, 99.5, 36, -35.5, 0.5);
239 if (word ==
nullptr) {
244 if ((word[0] & 0x3) ==
Id_w0) {
248 }
else if ((word[0] & 0x3) ==
Id_w1) {
249 if (mCh.
f.fixed_0 ==
Id_w0) {
254 LOGF(error,
"Wrong word sequence: %04x %08x %08x id=%u *%u*", *((uint16_t*)&word[2]), word[1], word[0], mCh.
f.fixed_0, word[0] & 0x3);
259 }
else if ((word[0] & 0x3) ==
Id_w2) {
266 LOGF(error,
"Wrong word sequence: %04x %08x %08x id=%u %u *%u*", *((uint16_t*)&word[2]), word[1], word[0], mCh.
f.fixed_0, mCh.
f.fixed_1, word[0] & 0x3);
273 LOGF(error,
"Event format error on word %04x %08x %08x id=%u", *((uint16_t*)&word[2]), word[1], word[0], word[0] & 0x3);
295 if (mVerbosity > 1) {
296 for (int32_t iw = 0; iw <
NWPerBc; iw++) {
301 mTransmitted->Fill(
f.board,
f.ch);
303 mFired->Fill(
f.board,
f.ch);
324 for (int32_t
i = 0;
i < 12;
i++) {
337 for (int32_t
i = 0;
i < 12;
i++) {
338 mSignalA[ih]->Fill(
i - 36.,
double(s[
i]));
346 for (int32_t
i = 0;
i < 12;
i++) {
347 mSignalA[ih]->Fill(
i - 24.,
double(s[
i]));
355 for (int32_t
i = 0;
i < 12;
i++) {
356 mSignalA[ih]->Fill(
i - 12.,
double(s[
i]));
364 for (int32_t
i = 0;
i < 12;
i++) {
365 mSignalA[ih]->Fill(
i + 0.,
double(s[
i]));
367 double bc_d = uint32_t(
f.bc / 100);
368 double bc_m = uint32_t(
f.bc % 100);
369 mBunchA[ih]->Fill(bc_m, -bc_d);
376 for (int32_t
i = 0;
i < 12;
i++) {
377 mSignalT[ih]->Fill(
i - 36.,
double(s[
i]));
385 for (int32_t
i = 0;
i < 12;
i++) {
386 mSignalT[ih]->Fill(
i - 24.,
double(s[
i]));
394 for (int32_t
i = 0;
i < 12;
i++) {
395 mSignalT[ih]->Fill(
i - 12.,
double(s[
i]));
402 if ((prev_orbit[ih] ==
f.orbit && (
f.bc - prev_bc[ih]) == 1) || ((
f.orbit - prev_orbit[ih]) == 1 && prev_bc[ih] == 3563 &&
f.bc == 0)) {
403 for (int32_t
i = 0;
i < 12;
i++) {
404 mSignalTH[ih]->Fill(
i + 0.,
double(s[
i]));
409 for (int32_t
i = 0;
i < 12;
i++) {
410 mSignalT[ih]->Fill(
i + 0.,
double(s[
i]));
412 double bc_d = uint32_t(
f.bc / 100);
413 double bc_m = uint32_t(
f.bc % 100);
414 mBunchT[ih]->Fill(bc_m, -bc_d);
421 for (int32_t
i = 0;
i < 12;
i++) {
422 mSignalT[ih]->Fill(
i + 12.,
double(s[
i]));
425 if (!(
f.Alice_3 ||
f.Alice_2 ||
f.Alice_1 ||
f.Alice_0 ||
f.Alice_1 ||
f.Auto_3 ||
f.Auto_2 ||
f.Auto_1 ||
f.Auto_0 ||
f.Auto_m)) {
432 double bc_d = uint32_t(
f.bc / 100);
433 double bc_m = uint32_t(
f.bc % 100);
434 mBunchH[ih]->Fill(bc_m, -bc_d);
440 if (
f.bc == last_bc) {
441 word16.uns =
f.offset;
442 mBaseline[ih]->Fill(word16.sig);
443 mCounts[ih]->Fill(
f.hits & 0xfff);
452 prev_orbit[ih] =
f.orbit;
454 for (int32_t
i = 0;
i < 12;
i++) {
455 prev_s[ih][
i] = s[
i];