File indexing completed on 2024-04-06 12:06:33
0001 #include "SiStripQualityHistoryPlots.h"
0002 #include <iostream>
0003 #include <algorithm>
0004 #include <vector>
0005 #include <string>
0006 #include <map>
0007 #include "TPad.h"
0008 #include "TFile.h"
0009 #include "TH2F.h"
0010 #include "TH1F.h"
0011 #include "TProfile.h"
0012 #include "TGraph.h"
0013 #include "DPGAnalysis/SiStripTools/interface/CommonAnalyzer.h"
0014 #include "TCanvas.h"
0015 #include "TStyle.h"
0016
0017 TH1D* AverageRunBadChannels(TFile& ff, const char* module, const char* histo, const bool excludeLastBins) {
0018 CommonAnalyzer camult(&ff, "", module);
0019
0020 TH1D* badchannels = new TH1D("badchannels", "Average Number of Bad Channels vs run", 10, 0., 10.);
0021 badchannels->SetCanExtend(TH1::kXaxis);
0022
0023 std::vector<unsigned int> runs = camult.getRunList();
0024 std::sort(runs.begin(), runs.end());
0025
0026 {
0027 for (unsigned int i = 0; i < runs.size(); ++i) {
0028 char runlabel[100];
0029 sprintf(runlabel, "%d", runs[i]);
0030 char runpath[100];
0031 sprintf(runpath, "run_%d", runs[i]);
0032 camult.setPath(runpath);
0033
0034 TProfile* multvstime = nullptr;
0035 if (multvstime == nullptr)
0036 multvstime = (TProfile*)camult.getObject(histo);
0037 if (multvstime) {
0038
0039
0040 if (excludeLastBins) {
0041 int lastbin = multvstime->GetNbinsX() + 1;
0042 int firstbin = 1;
0043 for (int ibin = multvstime->GetNbinsX() + 1; ibin > 0; --ibin) {
0044 if (multvstime->GetBinEntries(ibin) != 0) {
0045 lastbin = ibin;
0046 break;
0047 }
0048 }
0049
0050 std::cout << "Restricted range: " << firstbin << " " << lastbin << std::endl;
0051 multvstime->GetXaxis()->SetRangeUser(multvstime->GetBinLowEdge(firstbin),
0052 multvstime->GetBinLowEdge(lastbin - 2));
0053 }
0054
0055 badchannels->Fill(runlabel, multvstime->GetMean(2));
0056 }
0057 }
0058 }
0059 return badchannels;
0060 }
0061
0062 TCanvas* StripCompletePlot(TFile& ff, const char* module, const bool excludeLastBins) {
0063 TCanvas* cc = new TCanvas();
0064
0065 TH1D* cabling = AverageRunBadChannels(ff, module, "badmodrun_Cabling", excludeLastBins);
0066 TH1D* runinfo = AverageRunBadChannels(ff, module, "badmodrun_RunInfo", excludeLastBins);
0067 TH1D* badchannel = AverageRunBadChannels(ff, module, "badmodrun_BadChannel", excludeLastBins);
0068 TH1D* dcs = AverageRunBadChannels(ff, module, "badmodrun_DCS", excludeLastBins);
0069 TH1D* badfiber = AverageRunBadChannels(ff, module, "badmodrun_BadFiber", excludeLastBins);
0070
0071 cabling->SetLineColor(kRed);
0072 runinfo->SetLineColor(kMagenta);
0073 badchannel->SetLineColor(kCyan);
0074 dcs->SetLineColor(kGreen);
0075 badfiber->SetLineColor(kBlue);
0076
0077 badfiber->Draw();
0078 dcs->Draw("same");
0079 badchannel->Draw("same");
0080 runinfo->Draw("same");
0081 cabling->Draw("same");
0082
0083 return cc;
0084 }