10#include <framework/core/HistoModule.h>
11#include <top/modules/TOPWaveformQualityPlotter/TOPWaveformQualityPlotterModule.h>
18#include <TGraphErrors.h>
43 "histogram directory in ROOT file",
string(
"TOP"));
52 TDirectory* oldDir = gDirectory;
55 m_samples =
new TH1F(
"ADCvalues",
"ADC values ", 100, -50, 50);
56 m_samples->GetXaxis()->SetTitle(
"ADC Value");
57 m_samples->GetYaxis()->SetTitle(
"Number of Samples");
58 m_scrod_id =
new TH1F(
"scrodID",
"scrodID", 100, 0, 100);
59 m_asic =
new TH1F(
"IRSX",
"IRSX", 4, 0, 4);
60 m_carrier =
new TH1F(
"carrier",
"asic col", 4, 0, 4);
61 m_asic_ch =
new TH1F(
"asicCh",
"channel", 8, 0, 8);
62 m_errorFlag =
new TH1F(
"errorFlag",
"errorFlag", 1000, 0, 1000);
63 m_asic_win =
new TH1F(
"window",
"window", 4, 0, 4);
64 m_entries =
new TH1F(
"entries",
"entries", 100, 0, 2600);
65 m_moduleID =
new TH1F(
"moduleID",
"moduleID", 16, 1, 17);
66 m_pixelID =
new TH1F(
"pixelID",
"pixelID", 512, 1, 513);
82 int scrodid = v.getScrodID();
83 int asicid = v.getASICNumber();
84 int channelid = v.getASICChannel();
85 int carrierid = v.getCarrierNumber();
96 m_hitmap[scrodid] =
new TH2F((
string(
"scrod_") + to_string(scrodid) +
string(
"Hitmap")).c_str(),
97 (
string(
"scrod ") + to_string(scrodid) +
string(
" carrier vs. asic;asic;carrier")).c_str(), 4, 0, 4, 4, 0, 4);
99 m_hitmap[scrodid]->Fill(asicid, carrierid);
100 const vector<short>& waveform = v.getWaveform();
101 if (waveform.empty()) {
104 for (
short adc : waveform) {
112 vector<short> waveform = v.getWaveform();
113 if (waveform.empty()) {
116 int scrodid = v.getScrodID();
121 int asicNumber = v.getASICNumber();
122 int carrierNumber = v.getCarrierNumber();
123 int iChannel = v.getASICChannel();
124 string gname = string(
"scrod_") + to_string(scrodid) + string(
"_carrier") + to_string(carrierNumber) + string(
"_asic") + to_string(
125 asicNumber) + to_string(iChannel);
126 if (
m_waveformHists[scrodid][carrierNumber][asicNumber].find(iChannel) ==
129 auto h =
new TProfile(gname.c_str(), gname.c_str(), 256, 0, 256);
134 for (
size_t i = 0; i < 256; ++i) {
136 if (i >= waveform.size()) {
139 m_waveformHists[scrodid][carrierNumber][asicNumber][iChannel]->Fill(i + 0.5, iChannel * 1500 + waveform[i]);
157 auto channelID = evtwave.getChannel();
158 const vector<short> v_samples = evtwave.getWaveform();
159 size_t nsamples = v_samples.size();
161 string idName = string(
"noise_") + to_string(channelID);
162 m_channelNoiseMap.insert(make_pair(channelID,
new TH1F(idName.c_str(), idName.c_str(), 200, -100, 100)));
167 for (
size_t s = 0; s < nsamples; s++) {
168 double adc = v_samples.at(s);
170 if (s < nsamples - 1) {
171 noise->Fill(v_samples[s + 1] - adc);
189 int scrodid = scrod_it.first;
190 string name = string(
"scrod_") + to_string(scrodid);
191 TCanvas* c =
new TCanvas(name.c_str(), name.c_str());
194 for (
auto carrier_it : scrod_it.second) {
195 int carrierNumber = carrier_it.first;
196 for (
auto asic_it : carrier_it.second) {
197 int asicNumber = asic_it.first;
199 string gname = string(
"scrod_") + to_string(scrodid) + string(
"_carrier") + to_string(carrierNumber) + string(
"_asic") + to_string(
201 TMultiGraph* mg =
new TMultiGraph(gname.c_str(), gname.c_str());
202 for (
auto channel_it : asic_it.second) {
204 TGraphErrors* g =
new TGraphErrors(channel_it.second);
205 g->SetMarkerStyle(7);
209 TH2F* h =
new TH2F(gname.c_str(), gname.c_str(), 256, 0, 256, 8, -500, -500 + 8 * 1500);
210 for (
int ibin = 0; ibin < 8; ibin++) {
211 h->GetYaxis()->SetBinLabel(ibin + 1, to_string(ibin).c_str());
213 h->GetYaxis()->SetTickSize(0);
214 h->GetYaxis()->SetTickLength(0);
HistoModule()
Constructor.
void setDescription(const std::string &description)
Sets the description of the module.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
void initialize() override
Module initialization, calls defineHisto and gets waveform.
TOPWaveformQualityPlotterModule()
Constructor.
void event() override
Event processor.
void endRun() override
End-of-run action.
void basicDebuggingPlots(const TOPRawWaveform &rawwave)
Fills the debugging 1D histograms and hitmaps.
void drawWaveforms(const TOPRawWaveform &rawwave)
Draws the full waveforms onto the TProfiles.
void defineHisto() override
Books the empty histograms.
Abstract base class for different kinds of events.