9 #include <FairLogger.h>
15 #include <TTreeReader.h>
16 #include <TTreeReaderArray.h>
17 #include <TTreeReaderValue.h>
23 constexpr
auto cRED =
"\033[1;31m";
26 constexpr
auto cGREEN =
"\033[1;32m";
29 :
AtUnpacker(map), fNumCobo(numCobo), fIsNegativePolarity(numCobo, false), fIsPadPlaneCobo(numCobo, false),
30 fFPNChannels(numCobo), fPedestal(new
AtPedestal())
37 LOG(error) <<
"Invalid sized vector passed to SetIsPadPlaneCobo! Require size to be " <<
fNumCobo;
45 LOG(error) <<
"Invalid sized vector passed to SetPosotivePolarity! Require size to be " <<
fNumCobo;
55 LOG(info) <<
"Getting fpn channels ";
56 GetFPNChannelsFromROOTFILE();
57 LOG(info) <<
"finished getting event from root file";
58 ProcessROOTFILE(event);
69 void AtROOTUnpacker::GetFPNChannelsFromROOTFILE()
73 std::vector<int> ChannelsFPNpp = {11, 22, 45, 56};
75 std::vector<int> ChannelsFPNsc = {43, 44, 46, 47};
76 Int_t Nr_fpn_found{0};
80 if (RawDataTreeFile->IsZombie()) {
82 <<
"[AtCoreSpecMAT] File containing tree not found, check if "
83 "input file name is correct ("
87 auto *RawDataTree =
dynamic_cast<TTree *
>(RawDataTreeFile->Get(
"EventDataTree"));
90 <<
"[AtCoreSpecMAT] File does not contain raw data ttree (must "
91 "be named EventDataTree)"
93 std::cout <<
"Input file " <<
fInputFileName <<
" contains: " << std::endl;
94 RawDataTreeFile->ls();
99 TTreeReader myReader(RawDataTree);
102 TTreeReaderValue<Int_t> myInternalEventNr(myReader,
"InternalEventNr");
103 TTreeReaderValue<UChar_t> myCoboNr(myReader,
"CoboNr");
104 TTreeReaderValue<UChar_t> myAsadNr(myReader,
"AsadNr");
105 TTreeReaderValue<UChar_t> myAgetNr(myReader,
"AgetNr");
106 TTreeReaderValue<UChar_t> myChannelNr(myReader,
"ChannelNr");
107 TTreeReaderArray<UShort_t> mySamples(myReader,
"Samples");
110 Bool_t EventCompleted =
false;
111 while (myReader.Next() && (!EventCompleted)) {
113 AtPadReference PadRef = {*myCoboNr, *myAsadNr, *myAgetNr, *myChannelNr};
114 for (Int_t i = 0; i < 4; i++) {
121 for (Int_t j = 0; j < 512; j++) {
130 for (Int_t j = 0; j < 512; j++) {
137 EventCompleted =
true;
140 std::cout <<
"A total of " << Nr_fpn_found <<
" fpn channels were found for event nr " <<
fDataEventID << std::endl;
143 void AtROOTUnpacker::ProcessROOTFILE(
AtRawEvent &eventToFill)
147 if (RawDataTreeFile->IsZombie()) {
149 <<
"[AtCoreSpecMAT] File containing tree not found, check if "
150 "input file name is correct ("
154 auto *RawDataTree =
dynamic_cast<TTree *
>(RawDataTreeFile->Get(
"EventDataTree"));
157 <<
"[AtCoreSpecMAT] File does not contain raw data ttree (must "
158 "be named EventDataTree)"
164 TTreeReader myReader(RawDataTree);
167 TTreeReaderValue<Int_t> myInternalEventNr(myReader,
"InternalEventNr");
168 TTreeReaderValue<UChar_t> myCoboNr(myReader,
"CoboNr");
169 TTreeReaderValue<UChar_t> myAsadNr(myReader,
"AsadNr");
170 TTreeReaderValue<UChar_t> myAgetNr(myReader,
"AgetNr");
171 TTreeReaderValue<UChar_t> myChannelNr(myReader,
"ChannelNr");
172 TTreeReaderArray<UShort_t> mySamples(myReader,
"Samples");
175 Bool_t EventCompleted =
false;
176 while (myReader.Next() && (!EventCompleted)) {
179 AtPadReference PadRef = {*myCoboNr, *myAsadNr, *myAgetNr, *myChannelNr};
180 Int_t PadRefNum =
fMap->GetPadNum(PadRef);
185 auto PadCenterCoord =
fMap->CalcPadCenter(PadRefNum);
188 if (PadRefNum != -1 && !IsInhibited) {
196 if ((PadRefNum == -1) || IsInhibited)
201 Int_t rawadc[512] = {0};
202 for (
int i = 0; i < 512; i++) {
203 rawadc[i] = mySamples[i];
206 for (Int_t iTb = 0; iTb < 512; iTb++)
209 Double_t adc[512] = {0};
210 Int_t fpn_adc[512] = {0};
211 for (
int i = 0; i < 512; i++) {
222 for (Int_t iTb = 0; iTb < 512; iTb++) {
223 pad->
SetADC(iTb, adc[iTb]);
231 EventCompleted =
true;
236 Int_t AtROOTUnpacker::GetFPNChannel(Int_t chIdx)
263 void AtROOTUnpacker::SetNumEvents()
266 if (RawDataTreeFile->IsZombie()) {
268 <<
"[AtCoreSpecMAT] File containing tree not found, check if "
269 "input file name is correct ("
273 auto *RawDataTree =
dynamic_cast<TTree *
>(RawDataTreeFile->Get(
"EventDataTree"));
276 <<
"[AtCoreSpecMAT] File does not contain raw data ttree (must "
277 "be named EventDataTree)"
283 TTreeReader myReader(RawDataTree);
286 TTreeReaderValue<Int_t> myInternalEventNr(myReader,
"InternalEventNr");
287 while (myReader.Next())