8 #include "TDirectoryFile.h"
11 #define NOISEPREFIX "Profile_NoiseFromCondDB__det__"
12 #define PEDESTALPREFIX "Profile_PedestalFromCondDB__det__"
13 #define OCCUPANCYPREFIX "ClusterDigiPosition__det__"
26 bool debugPrint =
false;
27 bool imagePrint =
false;
30 rootfilename = argv[1];
31 modulelistname = argv[2];
32 pnbits = atoi(argv[3]);
37 std::cout <<
"Wrong number of parameters " << argc << std::endl;
41 if (debugPrint)
std::cout <<
"ready to go " << rootfilename <<
' ' << modulelistname << std::endl;
43 TFile*
rootfile = TFile::Open(rootfilename,
"READ");
45 std::cout <<
"Problems with input root file" << std::endl;
49 std::ifstream modulelist(modulelistname);
51 std::stringstream outrootfilename;
52 outrootfilename << prefix <<
"SummaryFile" << postfix <<
".root";
53 TFile* outrootfile = TFile::Open(outrootfilename.str().c_str(),
"RECREATE");
55 TH1D* th_summary =
nullptr;
56 Double_t TotalEvents = 0.0;
57 Double_t TotalDigis = 0.0;
59 TH1D* TotEvents=
new TH1D(
"TotEvents",
"TotEvents",1,0,1);
62 TDirectoryFile* tdir = (TDirectoryFile*) rootfile->FindObjectAny(
"AlCaReco");
63 TH1D*
hist = (TH1D*)tdir->FindObjectAny(
"TotalNumberOfCluster__TIB");
65 TotalEvents = hist->GetEntries();
66 TotEvents->SetBinContent(1,TotalEvents);
70 while (modulelist >> detid) {
71 if (debugPrint)
std::cout <<
" ready to go with detid " << detid <<
" " << pnbits << std::endl;
74 std::stringstream histoname;
76 if (debugPrint)
std::cout <<
" ready to go with histogram " << histoname.str() << std::endl;
77 TH1D*
hist = (TH1D*)rootfile->FindObjectAny(histoname.str().c_str());
79 if (debugPrint)
std::cout << histoname.str() <<
" found!" << std::endl;
80 if (imagePrint)
printPlot(hist,prefix,postfix);
83 std::cout << histoname.str() <<
" NOT found..." << std::endl;
88 std::stringstream histoname;
90 if (debugPrint)
std::cout <<
" ready to go with histogram " << histoname.str() << std::endl;
91 TH1D*
hist = (TH1D*)rootfile->FindObjectAny(histoname.str().c_str());
93 if (debugPrint)
std::cout << histoname.str() <<
" found!" << std::endl;
94 if (imagePrint)
printPlot(hist,prefix,postfix);
97 std::cout << histoname.str() <<
" NOT found..." << std::endl;
102 std::stringstream histoname;
104 std::string SummaryName=
"ClusterDigiPosition__det__Summary";
106 if (debugPrint)
std::cout <<
" ready to go with histogram " << histoname.str() << std::endl;
107 if (th_summary ==
nullptr) th_summary =
new TH1D(SummaryName.c_str(), SummaryName.c_str(), 768, 0.5, 768.5);
108 TH1D*
hist = (TH1D*)rootfile->FindObjectAny(histoname.str().c_str());
110 if (debugPrint)
std::cout << histoname.str() <<
" found!" << hist->GetEntries() << std::endl;
111 for (
int i = 1;
i < hist->GetNbinsX()+1;
i++) {
112 th_summary->AddBinContent(
i, hist->GetBinContent(
i));
113 TotalDigis += hist->GetBinContent(
i);
115 if (imagePrint)
printPlot(hist,prefix,postfix);
118 std::cout << histoname.str() <<
" NOT found..." << std::endl;
123 std::stringstream histoname;
125 if (debugPrint)
std::cout <<
" ready to go with histogram " << histoname.str() << std::endl;
126 TH1D*
hist = (TH1D*)rootfile->FindObjectAny(histoname.str().c_str());
128 if (debugPrint)
std::cout << histoname.str() <<
" found!" << std::endl;
129 std::stringstream histoname_reorder;
131 TH1D* hist_reorder =
new TH1D(histoname_reorder.str().c_str(), histoname_reorder.str().c_str(),
132 hist->GetXaxis()->GetNbins(), hist->GetXaxis()->GetXmin(), hist->GetXaxis()->GetXmax());
133 for (
int i = 0;
i < hist_reorder->GetNbinsX();
i++) {
135 hist_reorder->SetBinContent(
i+1,hist->GetBinContent(chan));
138 hist_reorder->Write();
140 std::cout << histoname.str() <<
" NOT found..." << std::endl;
149 Double_t fac = 1.0/TotalEvents;
150 th_summary->Scale(fac);
151 std::cout <<
" Run Number " << run <<
" Events " << TotalEvents <<
" Total # of Digis " << TotalDigis <<
" Av. Digis " << TotalDigis*fac << std::endl;
152 th_summary->SetEntries(TotalDigis*fac);
159 outrootfile->Close();
167 TCanvas* cc=
new TCanvas;
170 filename << prefix << hist->GetName() << postfix <<
".png";
171 cc->Print(filename.str().c_str());
177 int chan=int(32*fmod(
int(fmod(ival,256.)/2.),4.) +
178 8*
int(
int(fmod(ival,256.)/2.)/4.) -
179 31*
int(
int(fmod(ival,256.)/2.)/16.) +
180 fmod(fmod(ival,256.),2.)*128 +
void printPlot(TH1D *hist, char *prefix, char *postfix)
int getChannelNumber(int ival)