File indexing completed on 2024-04-06 11:58:31
0001 #include "TROOT.h"
0002 #include "TSystem.h"
0003 #include "TH1D.h"
0004 #include "THStack.h"
0005 #include "TChain.h"
0006 #include "TTree.h"
0007 #include "TLegend.h"
0008 #include "TFile.h"
0009 #include "TCanvas.h"
0010 #include "TLorentzVector.h"
0011 #include <iostream>
0012 #include <sstream>
0013 #include <fstream.h>
0014 #include "TPostScript.h"
0015 using namespace std;
0016
0017 void NoiseAnalyzer();
0018
0019 void NoiseAnalyzer()
0020 {
0021
0022
0023 TFile *f1 = new TFile("DTNoiseCalib.root");
0024
0025
0026 TPostScript *ps = new TPostScript("DTNoise.ps", 112);
0027 ofstream summaryOutput("summaryNoise.txt");
0028 ofstream detailedOutput("detailedNoise.txt");
0029
0030 TCanvas* c = new TCanvas("prova", "prova");
0031 TLegend *leg=new TLegend(0.2,0.75,0.9,0.88);
0032
0033
0034 for(int W=-2; W<=2; W++){
0035 std::stringstream wheel; wheel << W;
0036 for(int Sec=1; Sec<=14; Sec++){
0037 std::stringstream sector; sector << Sec;
0038 for(int St=1; St<=4; St++){
0039 double counterSomehowNoisyCells=0;
0040 double counterNoisyCells=0;
0041 bool StationHasData=false;
0042 std::stringstream station; station << St;
0043 for(int SL=1; SL<=3; SL++){
0044 leg->Clear();
0045 bool SLhasData=false;
0046 bool pageWritten=false;
0047 std::stringstream superlayer; superlayer << SL;
0048 TString newHistoName="AverageNoise_W"+wheel.str()+"_St"+station.str()+"_Sec"+sector.str()+"_SL"+superlayer.str();
0049 for(int L=1; L<=4; L++){
0050 std::stringstream layer; layer << L;
0051
0052
0053 TString histoName="DigiOccupancy_W"+wheel.str()+"_St"+station.str()+"_Sec"+sector.str()+"_SL"+superlayer.str()+"_L"+layer.str();
0054 TH1F* h =((TH1F*) f1->Get(histoName));
0055 if(h){
0056 StationHasData=true;
0057 SLhasData=true;
0058
0059 c->cd();
0060 TString legend= "layer_"+layer.str();
0061 if(L==1){
0062 h->SetTitle(newHistoName);
0063 h->SetLineColor(L);
0064 h->SetLineWidth(2);
0065 h->Draw();
0066 leg->AddEntry(h,legend,"L");
0067 }
0068 else{
0069 h->SetLineColor(L);
0070 h->SetLineWidth(2);
0071 h->Draw("same");
0072 leg->AddEntry(h,legend,"L");
0073 }
0074
0075 int numBin = h->GetXaxis()->GetNbins();
0076 for (int bin=1; bin<=numBin; bin++){
0077 if(h->GetBinContent(bin)>100 && h->GetBinContent(bin)<500){
0078 counterSomehowNoisyCells++;
0079 detailedOutput<<"somehowNoisyCell: W"<<W<<" St"<<St<<" Sec"<<Sec<<" SL"<<SL<<" L"<<L<<" wire"<<bin<<endl;
0080 }
0081 if(h->GetBinContent(bin)>500){
0082 counterNoisyCells++;
0083 detailedOutput<<"noisyCell: W"<<W<<" St"<<St<<" Sec"<<Sec<<" SL"<<SL<<" L"<<L<<" wire"<<bin<<endl;
0084 }
0085 }
0086 }
0087
0088 }
0089 if(SLhasData && !(pageWritten)){
0090 pageWritten=true;
0091 leg->Draw("same");
0092 gPad->SetLogy();
0093 c->Update();
0094 }
0095
0096 }
0097 if(StationHasData){
0098 summaryOutput<<" ------------ "<<endl;
0099 summaryOutput<<"MB"<<St<<"_W"<<W<<"_Sec"<<Sec<<endl;
0100 summaryOutput<<"# of somehow noisy cells: "<<counterSomehowNoisyCells<<endl;
0101 summaryOutput<<"# of noisy cells: "<<counterNoisyCells<<endl;
0102 }
0103
0104 }
0105 }
0106 }
0107
0108 ps->Close();
0109 }