ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TError.h>
#include <TROOT.h>
#include <TKey.h>
#include <TH2.h>
#include <TF1.h>
#include <TH1.h>
#include <TFile.h>
#include <TCanvas.h>
#include <TPad.h>
#include <TStyle.h>
#include <TGrid.h>
#include <TGridResult.h>
#include <TEnv.h>
#include <TLegend.h>
#include <TMath.h>
#include <TSpectrum.h>
#include <TTree.h>

#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliGRPObject.h"
#include "AliTriggerInput.h"
#include "AliTriggerConfiguration.h"
#endif

Int_t DrawTrendingV0QA(TString mergedTrendFile ="trending.root")
{
	if(!mergedTrendFile)
	{
		printf("Cannot open merged trend file with V0 QA");
		return 1;
	}
	char outfilename[200]="ProductionQA.hist.root";
	TString plotDir(".");
	
	Int_t runNumber=0, NumberVoieOff=0, numberBadOffset=0;
	TFile*fin=TFile::Open(mergedTrendFile.Data());
	if(!fin)
	{
		Printf("ERROR: trending file not found. Exiting ...\n");
		return -1;
	}
	TTree*ttree=(TTree*)fin->Get("trending");
	if(!ttree)
	{
		printf("Invalid trending tree");
		return 2;
	}
	Float_t TimesA=0.,TimesC=0., BB_BG=0.,BB_EE=0.,AdcA=0.;
    	Float_t AdcC=0.,MultA=0.,MultC=0.;
    	
   	
   	ttree->SetBranchAddress("run",&runNumber);
   	ttree->SetBranchAddress("TimesA",&TimesA);
	ttree->SetBranchAddress("TimesC",&TimesC);
	ttree->SetBranchAddress("BB_BG",&BB_BG);
  	ttree->SetBranchAddress("BB_EE",&BB_EE);
  	ttree->SetBranchAddress("AdcA" ,&AdcA );
  	ttree->SetBranchAddress("AdcC" ,&AdcC );
  	ttree->SetBranchAddress("MultA",&MultA);
  	ttree->SetBranchAddress("MultC",&MultC);
  	ttree->SetBranchAddress("NumberVoieOff",&NumberVoieOff);
  	ttree->SetBranchAddress("numberBadOffset",&numberBadOffset);
  	
  	Int_t nRuns=ttree->GetEntries();
  	TList list;
  	
  	TH1F * hTimeA = new TH1F("hTimeA","BB Leading time;;Time (ns)",nRuns,-0.5,nRuns-0.5);
  	TH1F * hTimeC = new TH1F("hTimeC","BB Leading time;;Time (ns)",nRuns,-0.5,nRuns-0.5);
  	TH1F * hBB_BG = new TH1F("hBB_BG","Trigger ratio",nRuns,-0.5,nRuns-0.5);
  	TH1F * hBB_EE = new TH1F("hBB_EE","Trigger ratio",nRuns,-0.5,nRuns-0.5);
  	TH1F * hAdcA = new TH1F("hAdcA","Average Charge",nRuns,-0.5,nRuns-0.5);
  	TH1F * hAdcC = new TH1F("hAdcC","Average Charge",nRuns,-0.5,nRuns-0.5);
  	TH1F * hMultA = new TH1F("hMultA","Average number of Fired cell",nRuns,-0.5,nRuns-0.5);
  	TH1F * hMultC = new TH1F("hMultC","Average number of Fired cell",nRuns,-0.5,nRuns-0.5);
  	TH1F * hNumberVoieOff=new TH1F("hNumberVoieOff","Number of chanel off",nRuns,-0.5,nRuns-0.5);
  	hNumberVoieOff->SetMaximum(70);
  	TH1F * hNumberBadOffset=new TH1F("hNumberBadOffset","Number of pdestal",nRuns,-0.5,nRuns-0.5);
  	hNumberBadOffset->SetMaximum(70);
  	
  	list.Add(hTimeA);
  	list.Add(hTimeC);
  	list.Add(hBB_BG);
  	list.Add(hBB_EE);
  	list.Add(hAdcA );
  	list.Add(hAdcC );
  	list.Add(hMultA);
  	list.Add(hMultC);
  	list.Add(hNumberVoieOff);
  	list.Add(hNumberBadOffset);
  	char runlabel[6];
  	
  	
  	for(Int_t irun=0;irun<nRuns;irun++)
  	{
  		ttree->GetEntry(irun);
  		sprintf(runlabel,"%i",runNumber);
  		
  		hTimeA->SetBinContent(irun+1,TimesA);
  		hTimeA->GetXaxis()->SetBinLabel(irun+1,runlabel);
  		
    		hTimeC->SetBinContent(irun+1,TimesC);
    		hTimeC->GetXaxis()->SetBinLabel(irun+1,runlabel);
    		
    		hBB_BG->SetBinContent(irun+1,BB_BG);
    		hBB_BG->GetXaxis()->SetBinLabel(irun+1,runlabel);
    		
    		hBB_EE->SetBinContent(irun+1,BB_EE);
    		hBB_EE->GetXaxis()->SetBinLabel(irun+1,runlabel);
    		
    		hAdcA->SetBinContent(irun+1,AdcA);
    		hAdcA ->GetXaxis()->SetBinLabel(irun+1,runlabel);
    		
    		hAdcC->SetBinContent(irun+1,AdcC);
    		hAdcC ->GetXaxis()->SetBinLabel(irun+1,runlabel);
    		
    		hMultA->SetBinContent(irun+1,MultA);
    		hMultA->GetXaxis()->SetBinLabel(irun+1,runlabel);
    		
    		hMultC->SetBinContent(irun+1,MultC);
    		hMultC->GetXaxis()->SetBinLabel(irun+1,runlabel);
    		
    		hNumberVoieOff->SetBinContent(irun+1,NumberVoieOff);
    		hNumberVoieOff->GetXaxis()->SetBinLabel(irun+1,runlabel);
    		
    		hNumberBadOffset->SetBinContent(irun+1,numberBadOffset);
    		hNumberBadOffset->GetXaxis()->SetBinLabel(irun+1,runlabel);
  	}
  	
  	TFile*fout=new TFile(outfilename,"recreate");
  	fout->cd();
  	list.Write();
  	fout->Close();
  	int maxRun =runNumber;
  	ttree->GetEntry(0);
  	int minRun = runNumber;
  	
  	gStyle->SetOptStat(0);
  	hTimeA->SetMarkerStyle(20);
  	hTimeA->SetMarkerColor(2);
  
  	hTimeC->SetMarkerStyle(20);
  	hTimeC->SetMarkerColor(4);

  	
  	
  	
  	TCanvas * c = new TCanvas("c","Leading time versus run number");
  	hTimeA->GetYaxis()->SetRange(0,10);
  	hTimeA->Draw("P");
  	hTimeA->SetMinimum(TMath::Min(hTimeA->GetMinimum(),hTimeC->GetMinimum())-1.);
  	hTimeA->SetMaximum(TMath::Max(hTimeA->GetMaximum(),hTimeC->GetMaximum())+1.);
  
  	hTimeC->GetYaxis()->SetRange(0,10);
  	hTimeC->Draw("Psame");
  	TLegend * lg = new TLegend(0.8,0.9,1,1);
  	lg->AddEntry(hTimeA,"V0A - 8 ns","p");
  	lg->AddEntry(hTimeC,"V0C","p");
  	lg->Draw("same");
  	float shiftA=8.0;
  	TPave * pavA = new TPave(-0.5,TMath::Max(hTimeA->GetMinimum(),1.5-shiftA),nRuns-0.5,TMath::Min(hTimeA->GetMaximum(),33.5-shiftA),0);
  	pavA->SetFillStyle(3004);
  	pavA->SetFillColor(2);
  	TPave * pavC = new TPave(-0.5,TMath::Max(hTimeC->GetMinimum(),0.5),nRuns-0.5,TMath::Min(hTimeC->GetMaximum(),25.5),0);
  	pavC->SetFillStyle(3005);
  	pavC->SetFillColor(4);
  
  	pavA->Draw("same");
  	pavC->Draw("same");

  	
  	c->Print(Form("%s/QA_Resume_%d_%d.pdf(",plotDir.Data(),minRun,maxRun));
  	c->Write();
  
  	TCanvas * c2 = new TCanvas("c2","Trigger ratios");
  	c2->SetGridy();
  
  	hBB_BG->SetMarkerStyle(20);
  	hBB_BG->SetMarkerColor(2);
  	hBB_EE->SetMarkerStyle(20);
  	hBB_EE->SetMarkerColor(4);
  	
  	hBB_BG->Draw("P");
  	hBB_EE->Draw("Psame");
  	TLegend * lg2 = new TLegend(0.8,0.9,1,1);
  	lg2->AddEntry(hBB_BG,"BG / BB","p");
  	lg2->AddEntry(hBB_EE,"EE / BB","p");
  	lg2->Draw("same");
  	
  	c2->Print(Form("%s/QA_Resume_%d_%d.pdf",plotDir.Data(),minRun,maxRun));
  	c2->Write();
  	
  	
  	TCanvas * c3 = new TCanvas("c3","Average Charge");
  	c3->SetGridy();
  	
  	hAdcA->SetMarkerStyle(20);
  	hAdcA->SetMarkerColor(2);
  	hAdcC->SetMarkerStyle(20);
  	hAdcC->SetMarkerColor(4);
  	hAdcA->SetMinimum(0);
  	hAdcA->SetMaximum(100);
  	
  	hAdcA->Draw("P");
  	hAdcC->Draw("Psame");
  	TLegend * lg3 = new TLegend(0.8,0.9,1,1);
  	lg3->AddEntry(hAdcA,"V0A","p");
  	lg3->AddEntry(hAdcC,"V0C","p");
  	lg3->Draw("same");
  	
  	c3->Print(Form("%s/QA_Resume_%d_%d.pdf",plotDir.Data(),minRun,maxRun));
  	c3->Write();
  	
  
  	TCanvas * c4 = new TCanvas("c4","Average number of cell");
  	c4->SetGridy();
  	
  	hMultA->SetMarkerStyle(20);
  	hMultA->SetMarkerColor(2);
  	hMultC->SetMarkerStyle(20);
  	hMultC->SetMarkerColor(4);
  	hMultA->SetMinimum(0);
  	hMultA->SetMaximum(32);
  	
  	hMultA->Draw("P");
  	hMultC->Draw("Psame");
  	TLegend * lg4 = new TLegend(0.8,0.9,1,1);
  	lg4->AddEntry(hMultA,"V0A","p");
  	lg4->AddEntry(hMultC,"V0C","p");
  	lg4->Draw("same");
  	
  	c4->Print(Form("%s/QA_Resume_%d_%d.pdf",plotDir.Data(),minRun,maxRun));
  	c4->Write();

  	TCanvas * c5 = new TCanvas("c5","");
  	c5->cd();
  	hNumberVoieOff->Draw();
  	TCanvas * c6 = new TCanvas("c6","");
  	c6->cd();
  	hNumberBadOffset->Draw();
	c5->Print(Form("%s/QA_Resume_%d_%d.pdf",plotDir.Data(),minRun,maxRun));
	c6->Print(Form("%s/QA_Resume_%d_%d.pdf)",plotDir.Data(),minRun,maxRun));
  	c5->Write();
	return 0;
}
 DrawTrendingV0QA.C:1
 DrawTrendingV0QA.C:2
 DrawTrendingV0QA.C:3
 DrawTrendingV0QA.C:4
 DrawTrendingV0QA.C:5
 DrawTrendingV0QA.C:6
 DrawTrendingV0QA.C:7
 DrawTrendingV0QA.C:8
 DrawTrendingV0QA.C:9
 DrawTrendingV0QA.C:10
 DrawTrendingV0QA.C:11
 DrawTrendingV0QA.C:12
 DrawTrendingV0QA.C:13
 DrawTrendingV0QA.C:14
 DrawTrendingV0QA.C:15
 DrawTrendingV0QA.C:16
 DrawTrendingV0QA.C:17
 DrawTrendingV0QA.C:18
 DrawTrendingV0QA.C:19
 DrawTrendingV0QA.C:20
 DrawTrendingV0QA.C:21
 DrawTrendingV0QA.C:22
 DrawTrendingV0QA.C:23
 DrawTrendingV0QA.C:24
 DrawTrendingV0QA.C:25
 DrawTrendingV0QA.C:26
 DrawTrendingV0QA.C:27
 DrawTrendingV0QA.C:28
 DrawTrendingV0QA.C:29
 DrawTrendingV0QA.C:30
 DrawTrendingV0QA.C:31
 DrawTrendingV0QA.C:32
 DrawTrendingV0QA.C:33
 DrawTrendingV0QA.C:34
 DrawTrendingV0QA.C:35
 DrawTrendingV0QA.C:36
 DrawTrendingV0QA.C:37
 DrawTrendingV0QA.C:38
 DrawTrendingV0QA.C:39
 DrawTrendingV0QA.C:40
 DrawTrendingV0QA.C:41
 DrawTrendingV0QA.C:42
 DrawTrendingV0QA.C:43
 DrawTrendingV0QA.C:44
 DrawTrendingV0QA.C:45
 DrawTrendingV0QA.C:46
 DrawTrendingV0QA.C:47
 DrawTrendingV0QA.C:48
 DrawTrendingV0QA.C:49
 DrawTrendingV0QA.C:50
 DrawTrendingV0QA.C:51
 DrawTrendingV0QA.C:52
 DrawTrendingV0QA.C:53
 DrawTrendingV0QA.C:54
 DrawTrendingV0QA.C:55
 DrawTrendingV0QA.C:56
 DrawTrendingV0QA.C:57
 DrawTrendingV0QA.C:58
 DrawTrendingV0QA.C:59
 DrawTrendingV0QA.C:60
 DrawTrendingV0QA.C:61
 DrawTrendingV0QA.C:62
 DrawTrendingV0QA.C:63
 DrawTrendingV0QA.C:64
 DrawTrendingV0QA.C:65
 DrawTrendingV0QA.C:66
 DrawTrendingV0QA.C:67
 DrawTrendingV0QA.C:68
 DrawTrendingV0QA.C:69
 DrawTrendingV0QA.C:70
 DrawTrendingV0QA.C:71
 DrawTrendingV0QA.C:72
 DrawTrendingV0QA.C:73
 DrawTrendingV0QA.C:74
 DrawTrendingV0QA.C:75
 DrawTrendingV0QA.C:76
 DrawTrendingV0QA.C:77
 DrawTrendingV0QA.C:78
 DrawTrendingV0QA.C:79
 DrawTrendingV0QA.C:80
 DrawTrendingV0QA.C:81
 DrawTrendingV0QA.C:82
 DrawTrendingV0QA.C:83
 DrawTrendingV0QA.C:84
 DrawTrendingV0QA.C:85
 DrawTrendingV0QA.C:86
 DrawTrendingV0QA.C:87
 DrawTrendingV0QA.C:88
 DrawTrendingV0QA.C:89
 DrawTrendingV0QA.C:90
 DrawTrendingV0QA.C:91
 DrawTrendingV0QA.C:92
 DrawTrendingV0QA.C:93
 DrawTrendingV0QA.C:94
 DrawTrendingV0QA.C:95
 DrawTrendingV0QA.C:96
 DrawTrendingV0QA.C:97
 DrawTrendingV0QA.C:98
 DrawTrendingV0QA.C:99
 DrawTrendingV0QA.C:100
 DrawTrendingV0QA.C:101
 DrawTrendingV0QA.C:102
 DrawTrendingV0QA.C:103
 DrawTrendingV0QA.C:104
 DrawTrendingV0QA.C:105
 DrawTrendingV0QA.C:106
 DrawTrendingV0QA.C:107
 DrawTrendingV0QA.C:108
 DrawTrendingV0QA.C:109
 DrawTrendingV0QA.C:110
 DrawTrendingV0QA.C:111
 DrawTrendingV0QA.C:112
 DrawTrendingV0QA.C:113
 DrawTrendingV0QA.C:114
 DrawTrendingV0QA.C:115
 DrawTrendingV0QA.C:116
 DrawTrendingV0QA.C:117
 DrawTrendingV0QA.C:118
 DrawTrendingV0QA.C:119
 DrawTrendingV0QA.C:120
 DrawTrendingV0QA.C:121
 DrawTrendingV0QA.C:122
 DrawTrendingV0QA.C:123
 DrawTrendingV0QA.C:124
 DrawTrendingV0QA.C:125
 DrawTrendingV0QA.C:126
 DrawTrendingV0QA.C:127
 DrawTrendingV0QA.C:128
 DrawTrendingV0QA.C:129
 DrawTrendingV0QA.C:130
 DrawTrendingV0QA.C:131
 DrawTrendingV0QA.C:132
 DrawTrendingV0QA.C:133
 DrawTrendingV0QA.C:134
 DrawTrendingV0QA.C:135
 DrawTrendingV0QA.C:136
 DrawTrendingV0QA.C:137
 DrawTrendingV0QA.C:138
 DrawTrendingV0QA.C:139
 DrawTrendingV0QA.C:140
 DrawTrendingV0QA.C:141
 DrawTrendingV0QA.C:142
 DrawTrendingV0QA.C:143
 DrawTrendingV0QA.C:144
 DrawTrendingV0QA.C:145
 DrawTrendingV0QA.C:146
 DrawTrendingV0QA.C:147
 DrawTrendingV0QA.C:148
 DrawTrendingV0QA.C:149
 DrawTrendingV0QA.C:150
 DrawTrendingV0QA.C:151
 DrawTrendingV0QA.C:152
 DrawTrendingV0QA.C:153
 DrawTrendingV0QA.C:154
 DrawTrendingV0QA.C:155
 DrawTrendingV0QA.C:156
 DrawTrendingV0QA.C:157
 DrawTrendingV0QA.C:158
 DrawTrendingV0QA.C:159
 DrawTrendingV0QA.C:160
 DrawTrendingV0QA.C:161
 DrawTrendingV0QA.C:162
 DrawTrendingV0QA.C:163
 DrawTrendingV0QA.C:164
 DrawTrendingV0QA.C:165
 DrawTrendingV0QA.C:166
 DrawTrendingV0QA.C:167
 DrawTrendingV0QA.C:168
 DrawTrendingV0QA.C:169
 DrawTrendingV0QA.C:170
 DrawTrendingV0QA.C:171
 DrawTrendingV0QA.C:172
 DrawTrendingV0QA.C:173
 DrawTrendingV0QA.C:174
 DrawTrendingV0QA.C:175
 DrawTrendingV0QA.C:176
 DrawTrendingV0QA.C:177
 DrawTrendingV0QA.C:178
 DrawTrendingV0QA.C:179
 DrawTrendingV0QA.C:180
 DrawTrendingV0QA.C:181
 DrawTrendingV0QA.C:182
 DrawTrendingV0QA.C:183
 DrawTrendingV0QA.C:184
 DrawTrendingV0QA.C:185
 DrawTrendingV0QA.C:186
 DrawTrendingV0QA.C:187
 DrawTrendingV0QA.C:188
 DrawTrendingV0QA.C:189
 DrawTrendingV0QA.C:190
 DrawTrendingV0QA.C:191
 DrawTrendingV0QA.C:192
 DrawTrendingV0QA.C:193
 DrawTrendingV0QA.C:194
 DrawTrendingV0QA.C:195
 DrawTrendingV0QA.C:196
 DrawTrendingV0QA.C:197
 DrawTrendingV0QA.C:198
 DrawTrendingV0QA.C:199
 DrawTrendingV0QA.C:200
 DrawTrendingV0QA.C:201
 DrawTrendingV0QA.C:202
 DrawTrendingV0QA.C:203
 DrawTrendingV0QA.C:204
 DrawTrendingV0QA.C:205
 DrawTrendingV0QA.C:206
 DrawTrendingV0QA.C:207
 DrawTrendingV0QA.C:208
 DrawTrendingV0QA.C:209
 DrawTrendingV0QA.C:210
 DrawTrendingV0QA.C:211
 DrawTrendingV0QA.C:212
 DrawTrendingV0QA.C:213
 DrawTrendingV0QA.C:214
 DrawTrendingV0QA.C:215
 DrawTrendingV0QA.C:216
 DrawTrendingV0QA.C:217
 DrawTrendingV0QA.C:218
 DrawTrendingV0QA.C:219
 DrawTrendingV0QA.C:220
 DrawTrendingV0QA.C:221
 DrawTrendingV0QA.C:222
 DrawTrendingV0QA.C:223
 DrawTrendingV0QA.C:224
 DrawTrendingV0QA.C:225
 DrawTrendingV0QA.C:226
 DrawTrendingV0QA.C:227
 DrawTrendingV0QA.C:228
 DrawTrendingV0QA.C:229
 DrawTrendingV0QA.C:230
 DrawTrendingV0QA.C:231
 DrawTrendingV0QA.C:232
 DrawTrendingV0QA.C:233
 DrawTrendingV0QA.C:234
 DrawTrendingV0QA.C:235
 DrawTrendingV0QA.C:236
 DrawTrendingV0QA.C:237
 DrawTrendingV0QA.C:238
 DrawTrendingV0QA.C:239
 DrawTrendingV0QA.C:240
 DrawTrendingV0QA.C:241
 DrawTrendingV0QA.C:242
 DrawTrendingV0QA.C:243
 DrawTrendingV0QA.C:244
 DrawTrendingV0QA.C:245
 DrawTrendingV0QA.C:246
 DrawTrendingV0QA.C:247