Skip to content

Commit c3ef8a9

Browse files
pgruselljose-luis-rs
authored andcommitted
feat(actaf/online): add event viewer for the online
style(actaf/online): removed a hardcoded variable
1 parent 387a6af commit c3ef8a9

2 files changed

Lines changed: 101 additions & 3 deletions

File tree

actaf/online/R3BActafOnlineSpectra.cxx

Lines changed: 84 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ InitStatus R3BActafOnlineSpectra::Init()
199199

200200
countsPerRing[iside][iring] = 0;
201201

202-
std::string sideName = iside == 0 ? "DOWN" : "UP";
202+
std::string sideName = iside == 0 ? "UP" : "DOWN";
203203

204204
std::string nameCanvas = sideName + "_RING_" + std::to_string(iring + 1) + "_traces_map";
205205
auto* cMap = new TCanvas(nameCanvas.c_str(), "mapped info", 10, 10, 500, 500);
@@ -814,6 +814,10 @@ InitStatus R3BActafOnlineSpectra::Init()
814814
// Register command to reset histograms
815815
run->GetHttpServer()->RegisterCommand("Reset_Actaf_HIST", Form("/Objects/%s/->Reset_Histo()", GetName()));
816816

817+
run->GetHttpServer()->RegisterCommand("Next_event", Form("/Objects/%s/->Next_event()", GetName()));
818+
run->GetHttpServer()->RegisterCommand("Prev_event", Form("/Objects/%s/->Prev_event()", GetName()));
819+
run->GetHttpServer()->RegisterCommand("Reset_event", Form("/Objects/%s/->Reset_event()", GetName()));
820+
817821
return kSUCCESS;
818822
}
819823

@@ -825,6 +829,67 @@ InitStatus R3BActafOnlineSpectra::ReInit()
825829
return kSUCCESS;
826830
}
827831

832+
// Event viewer controls
833+
834+
void R3BActafOnlineSpectra::plotSingleEventCanvas()
835+
{
836+
if (eventViewerNb >= maxEventViewerBatch)
837+
{
838+
839+
fh2_XYPos_Evts[0]->Reset("");
840+
fh2_XYPos_Evts[1]->Reset("");
841+
842+
for (int ipad = 0; ipad < 128; ipad++)
843+
{
844+
int iside = ipad > 63 ? 1 : 0;
845+
846+
double x = eventCountsX[selectEvent][ipad];
847+
double y = eventCountsY[selectEvent][ipad];
848+
double energy = eventCountsE[selectEvent][ipad];
849+
850+
if (energy > 0)
851+
{
852+
auto bin = fh2_XYPos_Evts[iside]->FindBin(x, y);
853+
fh2_XYPos_Evts[iside]->SetBinContent(bin, energy);
854+
}
855+
}
856+
}
857+
else
858+
{
859+
std::cout << "The buffer is being filled. Please wait some events more.\n";
860+
}
861+
}
862+
863+
void R3BActafOnlineSpectra::Next_event()
864+
{
865+
if (selectEvent < maxEventViewerBatch - 1)
866+
selectEvent++;
867+
else
868+
{
869+
std::cout << "You have reached the last event of the buffer. Time to reset!\n";
870+
}
871+
872+
plotSingleEventCanvas();
873+
}
874+
875+
void R3BActafOnlineSpectra::Prev_event()
876+
{
877+
if (selectEvent > 0)
878+
selectEvent--;
879+
else
880+
{
881+
std::cout << "You are already in the first event of the buffer.\n";
882+
}
883+
884+
plotSingleEventCanvas();
885+
}
886+
887+
void R3BActafOnlineSpectra::Reset_event()
888+
{
889+
eventViewerNb = 0;
890+
selectEvent = 0;
891+
}
892+
828893
void R3BActafOnlineSpectra::Reset_Histo()
829894
{
830895
R3BLOG(info, "");
@@ -1076,11 +1141,15 @@ void R3BActafOnlineSpectra::Exec(Option_t* /*option*/)
10761141
}
10771142

10781143
// Fill hit data
1144+
/*
10791145
if (fNEvents % updateRate == 0)
10801146
{
10811147
for (auto& hist : fh2_XYPos_Evts)
10821148
hist->Reset("");
10831149
}
1150+
*/
1151+
1152+
bool goodEventForView = false;
10841153

10851154
if (fHitItems && fHitItems->GetEntriesFast() > 0)
10861155
{
@@ -1108,8 +1177,18 @@ void R3BActafOnlineSpectra::Exec(Option_t* /*option*/)
11081177
fh1_RingCounts[side]->Fill(ring);
11091178
fh2_XYPos[side]->Fill(x, y);
11101179

1111-
auto bin = fh2_XYPos_Evts[side]->FindBin(x, y);
1112-
fh2_XYPos_Evts[side]->SetBinContent(bin, energy);
1180+
if (eventViewerNb < maxEventViewerBatch)
1181+
{
1182+
if (energy < 10)
1183+
continue;
1184+
1185+
goodEventForView = true;
1186+
eventCountsX[eventViewerNb][pad - 1] = x;
1187+
eventCountsY[eventViewerNb][pad - 1] = y;
1188+
eventCountsE[eventViewerNb][pad - 1] = energy;
1189+
}
1190+
// auto bin = fh2_XYPos_Evts[side]->FindBin(x, y);
1191+
// fh2_XYPos_Evts[side]->SetBinContent(bin, energy);
11131192

11141193
fh1_PhiCounts[side]->Fill(phi);
11151194
fh1_CountsPerSide->Fill(side + 1);
@@ -1196,6 +1275,8 @@ void R3BActafOnlineSpectra::Exec(Option_t* /*option*/)
11961275
}
11971276

11981277
fNEvents++;
1278+
if (goodEventForView)
1279+
eventViewerNb++;
11991280
return;
12001281
}
12011282

actaf/online/R3BActafOnlineSpectra.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,15 @@ class R3BActafOnlineSpectra : public FairTask
9999
*/
100100
virtual void Reset_Histo();
101101

102+
/*
103+
* Methods to control de event viewer
104+
*/
105+
106+
virtual void Next_event();
107+
virtual void Prev_event();
108+
virtual void Reset_event();
109+
virtual void plotSingleEventCanvas();
110+
102111
/**
103112
* Method for setting the trigger value.
104113
*/
@@ -247,6 +256,14 @@ class R3BActafOnlineSpectra : public FairTask
247256
TH2F* fh2_timetag_signal = nullptr;
248257
TCanvas* cRates = nullptr;
249258

259+
// Params for the event viewer
260+
int eventViewerNb = 0;
261+
static constexpr int maxEventViewerBatch = 100;
262+
int selectEvent = 0;
263+
std::array<std::array<double, fPads>, maxEventViewerBatch> eventCountsX;
264+
std::array<std::array<double, fPads>, maxEventViewerBatch> eventCountsY;
265+
std::array<std::array<double, fPads>, maxEventViewerBatch> eventCountsE;
266+
250267
public:
251268
ClassDefOverride(R3BActafOnlineSpectra, 1);
252269
};

0 commit comments

Comments
 (0)