Skip to content
Snippets Groups Projects
Commit 72fb0c6c authored by Pierre-Alain Loizeau's avatar Pierre-Alain Loizeau Committed by Pierre-Alain Loizeau
Browse files

Add Multiplicity plots in online DigiEvents Checker

parent 7f834d0d
No related branches found
No related tags found
1 merge request!1825Add analysis tools for checking content of online digievent rra files
......@@ -46,187 +46,226 @@ void CbmMcbm2024CheckEventsDt::Exec(Option_t*)
TDirectory* oldDir = gDirectory;
TFile* oldFile = gFile;
gROOT->cd();
fHistDtBmon = new TH1I("histDtBmon", "Time difference to event seed, BMON; dt [ns]", 1000, -500., 500.);
fHistDtSts = new TH1I("histDtSts", "Time difference to event seed, STS; dt [ns]", 1000, -500., 500.);
fHistDtMuch = new TH1I("histDtMuch", "Time difference to event seed, MUCH; dt [ns]", 1000, -500., 500.);
fHistDtTrd1d = new TH1I("histDtTrd1d", "Time difference to event seed, TRD1D; dt [ns]", 1000, -500., 500.);
fHistDtTrd2d = new TH1I("histDtTrd2d", "Time difference to event seed, TRD2D; dt [ns]", 1000, -500., 500.);
fHistDtTof = new TH1I("histDtTof", "Time difference to event seed, TOF; dt [ns]", 1000, -500., 500.);
fHistDtRich = new TH1I("histDtRich", "Time difference to event seed, RICH; dt [ns]", 1000, -500., 500.);
fHistDtFsd = new TH1I("histDtFsd", "Time difference to event seed, FSD; dt [ns]", 1000, -500., 500.);
fHistDtEvoBmon = new TH2I("histDtEvoBmon", "Time difference to event seed vs TS, BMON; TS []; dt [ns]", //
100, 0., 1000., 1000, -500., 500.);
fHistDtEvoSts = new TH2I("histDtEvoSts", "Time difference to event seed vs TS, STS; TS []; dt [ns]", //
100, 0., 1000., 1000, -500., 500.);
fHistDtEvoMuch = new TH2I("histDtEvoMuch", "Time difference to event seed vs TS, MUCH; TS []; dt [ns", //
100, 0., 1000., 1000, -500., 500.);
fHistDtEvoTrd1d = new TH2I("histDtEvoTrd1d", "Time difference to event seed vs TS, TRD1D; TS []; dt [ns]", //
100, 0., 1000., 1000, -500., 500.);
fHistDtEvoTrd2d = new TH2I("histDtEvoTrd2d", "Time difference to event seed vs TS, TRD2D; TS []; dt [ns]", //
100, 0., 1000., 1000, -500., 500.);
fHistDtEvoTof = new TH2I("histDtEvoTof", "Time difference to event seed vs TS, TOF; TS []; dt [ns]", //
100, 0., 1000., 1000, -500., 500.);
fHistDtEvoRich = new TH2I("histDtEvoRich", "Time difference to event seed vs TS, RICH; TS []; dt [ns]", //
100, 0., 1000., 1000, -500., 500.);
fHistDtEvoFsd = new TH2I("histDtEvoFsd", "Time difference to event seedvs TS, FSD; TS []; dt [ns]", //
100, 0., 1000., 1000, -500., 500.);
fCanvDt = new TCanvas("canvDt", "Time differences to event seed");
fCanvDt->Divide(3, 3);
fCanvDt->cd(1);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtBmon->Draw("hist");
fCanvDt->cd(2);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtSts->Draw("hist");
fCanvDt->cd(3);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtMuch->Draw("hist");
for (std::string sDet : fvDets) {
fHistDt[sDet] = new TH1I(Form("histDt%s", sDet.data()),
Form("Time difference to event seed, %s; dt [ns]", sDet.data()), 1000, -500., 500.);
fHistDtEvo[sDet] = new TH2I(Form("histDtEvo%s", sDet.data()),
Form("Time difference to event seed vs TS, %s; TS []; dt [ns]", sDet.data()), //
100, 0., 1000., 1000, -500., 500.);
fCanvDt->cd(4);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtTrd1d->Draw("hist");
fHistDtToBmon[sDet] =
new TH1I(Form("histDtToBmon%s", sDet.data()),
Form("Time difference to first/single BMon, %s; dt [ns]", sDet.data()), 1000, -500., 500.);
fHistDtToBmonEvo[sDet] =
new TH2I(Form("histDtToBmonEvo%s", sDet.data()),
Form("Time difference to first/single BMon vs TS, %s; TS []; dt [ns]", sDet.data()), //
100, 0., 1000., 1000, -500., 500.);
fCanvDt->cd(5);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtTrd2d->Draw("hist");
fHistMul[sDet] =
new TH1I(Form("histMul%s", sDet.data()), Form("Nb %s digis per event; N []", sDet.data()), 100, -0.5, 99.5);
fHistDtMul[sDet] =
new TH2I(Form("histDtMul%s", sDet.data()), Form("Dt Bmon vs Nb %s digis per event; dt [ns]; N []", sDet.data()),
1000, -500., 500., 100, -0.5, 99.5);
}
fCanvDt->cd(6);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtTof->Draw("hist");
fCanvDt->cd(7);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtRich->Draw("hist");
fCanvDt = new TCanvas("canvDt", "Time differences to event seed");
fCanvDt->Divide(3, 3);
fCanvDt->cd(8);
uint32_t uPadIdx = 1;
for (std::string sDet : fvDets) {
fCanvDt->cd(uPadIdx);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtFsd->Draw("hist");
fHistDt[sDet]->Draw("hist");
uPadIdx++;
}
fCanvDtEvo = new TCanvas("canvDtEvo", "Time differences to event seed vs TS");
fCanvDtEvo->Divide(3, 3);
fCanvDtEvo->cd(1);
uPadIdx = 1;
for (std::string sDet : fvDets) {
fCanvDtEvo->cd(uPadIdx);
gPad->SetLogz();
gPad->SetGridx();
gPad->SetGridy();
fHistDtEvoBmon->Draw("colz");
fHistDtEvo[sDet]->Draw("colz");
uPadIdx++;
}
fCanvDtEvo->cd(2);
gPad->SetLogz();
gPad->SetGridx();
gPad->SetGridy();
fHistDtEvoSts->Draw("colz");
fCanvDtEvo->cd(3);
gPad->SetLogz();
gPad->SetGridx();
gPad->SetGridy();
fHistDtEvoMuch->Draw("colz");
fCanvDtToBmon = new TCanvas("canvDtToBmon", "Time differences to event seed");
fCanvDtToBmon->Divide(3, 3);
fCanvDtEvo->cd(4);
gPad->SetLogz();
uPadIdx = 1;
for (std::string sDet : fvDets) {
fCanvDtToBmon->cd(uPadIdx);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtEvoTrd1d->Draw("colz");
fHistDtToBmon[sDet]->Draw("hist");
uPadIdx++;
}
fCanvDtEvo->cd(5);
gPad->SetLogz();
gPad->SetGridx();
gPad->SetGridy();
fHistDtEvoTrd2d->Draw("colz");
fCanvDtToBmonEvo = new TCanvas("canvDtToBmonEvo", "Time differences to event seed vs TS");
fCanvDtToBmonEvo->Divide(3, 3);
fCanvDtEvo->cd(6);
uPadIdx = 1;
for (std::string sDet : fvDets) {
fCanvDtToBmonEvo->cd(uPadIdx);
gPad->SetLogz();
gPad->SetGridx();
gPad->SetGridy();
fHistDtEvoTof->Draw("colz");
fHistDtToBmonEvo[sDet]->Draw("colz");
uPadIdx++;
}
fCanvDtEvo->cd(7);
gPad->SetLogz();
for (std::string sDet : fvDets) {
fCanvMul[sDet] = new TCanvas(Form("canvMul%s", sDet.data()), Form("Multiplicity %s", sDet.data()));
fCanvMul[sDet]->Divide(2);
fCanvMul[sDet]->cd(1);
gPad->SetLogy();
gPad->SetGridx();
gPad->SetGridy();
fHistDtEvoRich->Draw("colz");
fHistMul[sDet]->Draw("hist");
fCanvDtEvo->cd(8);
fCanvMul[sDet]->cd(2);
gPad->SetLogz();
gPad->SetGridx();
gPad->SetGridy();
fHistDtEvoFsd->Draw("colz");
fHistDtMul[sDet]->Draw("colz");
}
gFile = oldFile;
gDirectory = oldDir;
}
size_t numEventsInTs = 0;
std::string sDet = "Bmon";
for (auto& event : *fEvents) {
bool bSingleBmon = false;
double_t dSingleBmonTime = 0.;
if (0 < event.fData.fBmon.Size()) {
if (1 == event.fData.fBmon.Size()) {
bSingleBmon = true;
}
dSingleBmonTime = event.fData.fBmon.fDigis[0].GetTime();
}
sDet = "Bmon";
fHistMul[sDet]->Fill(event.fData.fBmon.Size());
for (auto& digi : event.fData.fBmon.fDigis) {
double_t dDt = digi.GetTime() - event.fTime;
fHistDtBmon->Fill(dDt);
fHistDtEvoBmon->Fill(fNumTs, dDt);
fHistDt[sDet]->Fill(dDt);
fHistDtEvo[sDet]->Fill(fNumTs, dDt);
fHistDtMul[sDet]->Fill(dDt, event.fData.fBmon.Size());
// Special case: make internal Dt to first BMon instead of Dt to single Bmon
dDt = digi.GetTime() - dSingleBmonTime;
fHistDtToBmon[sDet]->Fill(dDt);
fHistDtToBmonEvo[sDet]->Fill(fNumTs, dDt);
}
sDet = "Sts";
fHistMul[sDet]->Fill(event.fData.fSts.Size());
for (auto& digi : event.fData.fSts.fDigis) {
double_t dDt = digi.GetTime() - event.fTime;
fHistDtSts->Fill(dDt);
fHistDtEvoSts->Fill(fNumTs, dDt);
fHistDt[sDet]->Fill(dDt);
fHistDtEvo[sDet]->Fill(fNumTs, dDt);
fHistDtMul[sDet]->Fill(dDt, event.fData.fSts.Size());
if (bSingleBmon) {
dDt = digi.GetTime() - dSingleBmonTime;
fHistDtToBmon[sDet]->Fill(dDt);
fHistDtToBmonEvo[sDet]->Fill(fNumTs, dDt);
}
}
sDet = "Much";
fHistMul[sDet]->Fill(event.fData.fMuch.Size());
for (auto& digi : event.fData.fMuch.fDigis) {
double_t dDt = digi.GetTime() - event.fTime;
fHistDtMuch->Fill(dDt);
fHistDtEvoMuch->Fill(fNumTs, dDt);
fHistDt[sDet]->Fill(dDt);
fHistDtEvo[sDet]->Fill(fNumTs, dDt);
fHistDtMul[sDet]->Fill(dDt, event.fData.fMuch.Size());
if (bSingleBmon) {
dDt = digi.GetTime() - dSingleBmonTime;
fHistDtToBmon[sDet]->Fill(dDt);
fHistDtToBmonEvo[sDet]->Fill(fNumTs, dDt);
}
}
sDet = "Trd1d";
fHistMul[sDet]->Fill(event.fData.fTrd.Size());
for (auto& digi : event.fData.fTrd.fDigis) {
double_t dDt = digi.GetTime() - event.fTime;
fHistDtTrd1d->Fill(dDt);
fHistDtEvoTrd1d->Fill(fNumTs, dDt);
fHistDt[sDet]->Fill(dDt);
fHistDtEvo[sDet]->Fill(fNumTs, dDt);
fHistDtMul[sDet]->Fill(dDt, event.fData.fTrd.Size());
if (bSingleBmon) {
dDt = digi.GetTime() - dSingleBmonTime;
fHistDtToBmon[sDet]->Fill(dDt);
fHistDtToBmonEvo[sDet]->Fill(fNumTs, dDt);
}
}
sDet = "Trd2d";
fHistMul[sDet]->Fill(event.fData.fTrd2d.Size());
for (auto& digi : event.fData.fTrd2d.fDigis) {
double_t dDt = digi.GetTime() - event.fTime;
fHistDtTrd2d->Fill(dDt);
fHistDtEvoTrd2d->Fill(fNumTs, dDt);
fHistDt[sDet]->Fill(dDt);
fHistDtEvo[sDet]->Fill(fNumTs, dDt);
fHistDtMul[sDet]->Fill(dDt, event.fData.fTrd2d.Size());
if (bSingleBmon) {
dDt = digi.GetTime() - dSingleBmonTime;
fHistDtToBmon[sDet]->Fill(dDt);
fHistDtToBmonEvo[sDet]->Fill(fNumTs, dDt);
}
}
sDet = "Tof";
fHistMul[sDet]->Fill(event.fData.fTof.Size());
for (auto& digi : event.fData.fTof.fDigis) {
double_t dDt = digi.GetTime() - event.fTime;
fHistDtTof->Fill(dDt);
fHistDtEvoTof->Fill(fNumTs, dDt);
fHistDt[sDet]->Fill(dDt);
fHistDtEvo[sDet]->Fill(fNumTs, dDt);
fHistDtMul[sDet]->Fill(dDt, event.fData.fTof.Size());
if (bSingleBmon) {
dDt = digi.GetTime() - dSingleBmonTime;
fHistDtToBmon[sDet]->Fill(dDt);
fHistDtToBmonEvo[sDet]->Fill(fNumTs, dDt);
}
}
sDet = "Rich";
fHistMul[sDet]->Fill(event.fData.fRich.Size());
for (auto& digi : event.fData.fRich.fDigis) {
double_t dDt = digi.GetTime() - event.fTime;
fHistDtRich->Fill(dDt);
fHistDtEvoRich->Fill(fNumTs, dDt);
fHistDt[sDet]->Fill(dDt);
fHistDtEvo[sDet]->Fill(fNumTs, dDt);
fHistDtMul[sDet]->Fill(dDt, event.fData.fRich.Size());
if (bSingleBmon) {
dDt = digi.GetTime() - dSingleBmonTime;
fHistDtToBmon[sDet]->Fill(dDt);
fHistDtToBmonEvo[sDet]->Fill(fNumTs, dDt);
}
}
sDet = "Fsd";
fHistMul[sDet]->Fill(event.fData.fFsd.Size());
for (auto& digi : event.fData.fFsd.fDigis) {
double_t dDt = digi.GetTime() - event.fTime;
fHistDtFsd->Fill(dDt);
fHistDtEvoFsd->Fill(fNumTs, dDt);
fHistDt[sDet]->Fill(dDt);
fHistDtEvo[sDet]->Fill(fNumTs, dDt);
fHistDtMul[sDet]->Fill(dDt, event.fData.fFsd.Size());
if (bSingleBmon) {
dDt = digi.GetTime() - dSingleBmonTime;
fHistDtToBmon[sDet]->Fill(dDt);
fHistDtToBmonEvo[sDet]->Fill(fNumTs, dDt);
}
}
numEventsInTs++;
}
......
......
......@@ -64,27 +64,22 @@ class CbmMcbm2024CheckEventsDt : public FairTask {
size_t fNumTs = 0; ///< Number of processed timeslices
size_t fNumEvents = 0; ///< Number of events
TH1* fHistDtBmon = nullptr;
TH1* fHistDtSts = nullptr;
TH1* fHistDtMuch = nullptr;
TH1* fHistDtTrd1d = nullptr;
TH1* fHistDtTrd2d = nullptr;
TH1* fHistDtTof = nullptr;
TH1* fHistDtRich = nullptr;
TH1* fHistDtFsd = nullptr;
TH2* fHistDtEvoBmon = nullptr;
TH2* fHistDtEvoSts = nullptr;
TH2* fHistDtEvoMuch = nullptr;
TH2* fHistDtEvoTrd1d = nullptr;
TH2* fHistDtEvoTrd2d = nullptr;
TH2* fHistDtEvoTof = nullptr;
TH2* fHistDtEvoRich = nullptr;
TH2* fHistDtEvoFsd = nullptr;
std::vector<std::string> fvDets = {"Bmon", "Sts", "Much", "Trd1d", "Trd2d", "Tof", "Rich", "Fsd"};
std::map<std::string, TH1*> fHistDt = {};
std::map<std::string, TH2*> fHistDtEvo = {};
std::map<std::string, TH1*> fHistDtToBmon = {};
std::map<std::string, TH2*> fHistDtToBmonEvo = {};
std::map<std::string, TH1*> fHistMul = {};
std::map<std::string, TH2*> fHistDtMul = {};
TCanvas* fCanvDt = nullptr;
TCanvas* fCanvDtEvo = nullptr;
TCanvas* fCanvDtToBmon = nullptr;
TCanvas* fCanvDtToBmonEvo = nullptr;
std::map<std::string, TCanvas*> fCanvMul = {};
ClassDef(CbmMcbm2024CheckEventsDt, 1);
};
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment