49 static_assert(
sizeof(
ScalarFrame) == 88,
"Scaler frame size incorrect!");
51 LOG(DEBUG) <<
"ScalerUnpack : Unpacking frame... size/bytes = " << size ;
52 LOG(DEBUG) <<
"PSW = " << df->PSW ;
53 LOG(DEBUG) <<
"SPW = " << df->SPW ;
54 LOG(DEBUG) <<
"POT from SPS = " << df->scalars[0] ;
55 LOG(DEBUG) <<
"S1raw = " << df->scalars[1] ;
56 LOG(DEBUG) <<
"S1strobed = " << df->scalars[2] ;
57 LOG(DEBUG) <<
"S1*S2 TrgRaw = " << df->scalars[3] ;
58 LOG(DEBUG) <<
"S1*S2 TrgStrobed = " << df->scalars[4] ;
59 for (
auto i : ROOT::MakeSeq(df->getSliceCount())) {
60 LOG(DEBUG) <<
"Slice " << i <<
"= " << df->slices[i] ;
62 auto f =
fMan->GetOutFile();
63 tree =
dynamic_cast<TTree *
>(f->Get(
"scalers"));
64 if (
tree ==
nullptr) {
65 tree =
new TTree(
"scalers",
"scalers");
67 tree->Branch(
"PSW", &(df->PSW));
68 tree->Branch(
"SPW", &(df->SPW));
69 for (
auto i : ROOT::MakeSeq(16)) {
72 fGoliath = int(
int(df->scalars[i]) / 0x10000);
73 fDavid = int(
int(df->scalars[i]) % 0x10000);
76 LOG(INFO) <<
"David: " <<
fDavid ;
77 LOG(INFO) <<
"Goliath: " <<
fGoliath ;
81 LOG(INFO) <<
"Spill type: " << df->scalars[i] ;
82 tree->Branch(
"spill_type", &(df->scalars[i]));
84 default:
tree->Branch(TString::Format(
"SC%.2d", i), &(df->scalars[i]));
87 auto slices = df->getSliceCount() > 0 ? std::vector<uint32_t>(df->slices, df->slices + df->getSliceCount())
88 : std::vector<uint32_t>();
89 tree->Branch(
"slices",
"vector<uint32_t>", &slices);
91 tree->Write(
"", TObject::kOverwrite);