ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TSystem.h>
#include <TRandom.h>
#include <TROOT.h>
#include <TStyle.h>
#include <TCanvas.h>
#include <TGraphErrors.h>
#include <TGrid.h>
#include <TFile.h>
#include "AliCDBEntry.h"
#include "AliCDBGrid.h"
#include "AliCDBId.h"
#include "AliCDBLocal.h"
#include "AliCDBManager.h"
#include "AliCDBMetaData.h"
#include "AliCDBPath.h"
#include "AliCDBRunRange.h"
#include "AliCDBStorage.h"
#include "AliDCSValue.h"
#include "AliZDC.h"
#include "AliZDCv3.h"
#include "AliZDCPedestals.h"
#include "AliZDCEnCalib.h"
#include "AliZDCTowerCalib.h"
#include "AliZDCChMap.h"
#include "AliZDCLaserCalib.h"
#include "AliZDCMBCalib.h"
#include "AliZDCDataDCS.h"

#endif


void PlotPedestalsvsTime(Int_t year=2011, Int_t firstRun=141820, 
		   Int_t lastRun=146900, Int_t ipedGainChain=0)
{


  TGrid::Connect("alien:",0,0,"t");
  gSystem->Exec(Form("gbbox find \"/alice/data/%d/OCDB/ZDC/Calib/Pedestals/\" \"Run*.root\" > calibAlienFiles.txt",year));
  FILE* listruns=fopen("calibAlienFiles.txt","r");
  
  const int kNchannels=24;
  TGraphErrors* graph[24];
  for(Int_t i=0; i<kNchannels; i++){
     graph[i] = new TGraphErrors(0);
     char name[50], title[50];
     sprintf(name,"graph%d",i); sprintf(title,"Pedestal ch.%d vs. run#",i);
     graph[i]->SetName("graph");  graph[i]->SetTitle("title");
  }

  Char_t filnam[200], filnamalien[200];
  Int_t iPoint=0;
  Int_t nrun, nrun2, nv, ns;

  while(!feof(listruns)){
    int st = fscanf(listruns,"%s\n",filnam);    
    Char_t directory[100];
    sprintf(directory,"/alice/data/%d",year);
    if(!strstr(filnam,directory)) continue;
    sscanf(filnam,"/alice/data/%d/OCDB/ZDC/Calib/Pedestals/Run%d_%d_v%d_s%d.root",&year,&nrun,&nrun2,&nv,&ns);
    if(nrun<firstRun) continue;
    if(nrun>lastRun) continue;
    sprintf(filnamalien,"alien://%s",filnam);
    printf("Opening file: %s\n",filnam);
    TFile *f = TFile::Open(filnamalien);  
    AliCDBEntry *entry = (AliCDBEntry*)f->Get("AliCDBEntry");
    AliZDCPedestals *calibdata = dynamic_cast<AliZDCPedestals*>  (entry->GetObject());
    
    for(int i=0; i<kNchannels; i++){
      if(ipedGainChain==0){
        graph[i]->SetPoint(iPoint, (Double_t)nrun, calibdata->GetMeanPed(i));
        graph[i]->SetPointError(iPoint, 0., calibdata->GetMeanPedWidth(i));
      }
      else{
        graph[i]->SetPoint(iPoint, (Double_t)nrun, calibdata->GetMeanPed(i+kNchannels));
        graph[i]->SetPointError(iPoint, 0., calibdata->GetMeanPedWidth(i+kNchannels));
      }
    }
    iPoint++;
    f->Close();
 }

 TFile *outfile=new TFile(Form("PedCalib%dVsTime.root",year),"recreate");
 outfile->cd();
 for(int i=0; i<kNchannels; i++) graph[i]->Write();
 outfile->Close();

 //***********************************************************
 // #### ROOT initialization
 gROOT->Reset();
 gStyle->SetCanvasColor(10);
 gStyle->SetFrameFillColor(10);
 gStyle->SetOptTitle(0);
 gStyle->SetOptStat(1111);
 gStyle->SetOptFit(0);
 gStyle->SetTitleTextColor(4);
 gStyle->SetStatTextColor(4);
 gStyle->SetStatX(0.92);
 gStyle->SetStatY(0.92);
 gStyle->SetLineColor(1);
 gStyle->SetPalette(1);
 gStyle->SetPadTopMargin(0.05);
 gStyle->SetPadRightMargin(0.05);
 gStyle->SetPadBottomMargin(0.09);
 gStyle->SetPadLeftMargin(0.09); 
 gStyle->SetTitleOffset(1.1,"Y");  
 // *************************************************************

 TCanvas *cHadPeds = new TCanvas("cHadPeds","Hadronic ZDC pedestals",0,0,1000,800);
 cHadPeds->Divide(5,4);
 for(int ic=0; ic<5; ic++){
   // *** ZNC pedestals
   cHadPeds->cd(ic+1);
   //
   TH1F *haxis1=0;
   if(ipedGainChain==0){
     if(ic==0) haxis1 = gPad->DrawFrame(firstRun-100, 80, lastRun+100, 100);
     else  haxis1 = gPad->DrawFrame(firstRun-100, 50, lastRun+100, 70);
   }
   else{
     if(ic==0) haxis1 = gPad->DrawFrame(firstRun-100, 500, lastRun+100, 800);
     else  haxis1 = gPad->DrawFrame(firstRun-100, 300, lastRun+100, 600);
   }
   haxis1->GetXaxis()->SetNoExponent();
   haxis1->SetXTitle("RUN no.");
   haxis1->SetYTitle("ZNC pedestals");
   //
   graph[ic]->SetMarkerStyle(20);
   graph[ic]->SetMarkerColor(kBlue);
   graph[ic]->Draw("P, SAME");
   // *** ZPC pedestals
   cHadPeds->cd(ic+6);
   //
   TH1F *haxis2=0;
   if(ipedGainChain==0) haxis2= gPad->DrawFrame(firstRun-100, 55, lastRun+100, 85);
   else  haxis2 = gPad->DrawFrame(firstRun-100, 400, lastRun+100, 700);
   haxis2->GetXaxis()->SetNoExponent();
   haxis2->SetXTitle("RUN no.");
   haxis2->SetYTitle("ZPC pedestals");
   //
   graph[ic+5]->SetMarkerStyle(21);
   graph[ic+5]->SetMarkerColor(kBlue+3);
   graph[ic+5]->Draw("P, SAME");
   // *** ZNA pedestals
   cHadPeds->cd(ic+11);
   //
   TH1F *haxis3=0;
   if(ipedGainChain==0) haxis3 = gPad->DrawFrame(firstRun-100, 35, lastRun+100, 85);
   else  haxis3 = gPad->DrawFrame(firstRun-100, 300, lastRun+100, 700);
   haxis3->GetXaxis()->SetNoExponent();
   haxis3->SetXTitle("RUN no.");
   haxis3->SetYTitle("ZNA pedestals");
   //
   graph[ic+12]->SetMarkerStyle(20);
   graph[ic+12]->SetMarkerColor(kRed);
   graph[ic+12]->Draw("P, SAME");
   // *** ZPA pedestals
   cHadPeds->cd(ic+16);
   //
   TH1F *haxis4=0;
   if(ipedGainChain==0) haxis4 = gPad->DrawFrame(firstRun-100, 40, lastRun+100, 80);
   else  haxis4 = gPad->DrawFrame(firstRun-100, 300, lastRun+100, 600);
   haxis4->GetXaxis()->SetNoExponent();
   haxis4->SetXTitle("RUN no.");
   haxis4->SetYTitle("ZPA pedestals");
   //
   graph[ic+17]->SetMarkerStyle(21);
   graph[ic+17]->SetMarkerColor(kRed+1);
   graph[ic+17]->Draw("P, SAME");
 }
 cHadPeds->SaveAs("ZDCPedvsTime1.gif");
 cHadPeds->SaveAs("ZDCPedvsTime1.C");

 TCanvas *cothPeds = new TCanvas("cothPeds","ZEM + Ref. pedestals",800,0,600,600);
 cothPeds->Divide(2,2);
 for(int ic=0; ic<2; ic++){
    // *** ZEM pedestals
    cothPeds->cd(ic+1);
    //
    TH1F *haxis5=0;
    if(ipedGainChain==0) haxis5 = gPad->DrawFrame(firstRun-100, 30, lastRun+20, 70);
    else  haxis5 = gPad->DrawFrame(firstRun-100, 250, lastRun+100, 550);
    haxis5->GetXaxis()->SetNoExponent();
    haxis5->SetXTitle("RUN no.");
    haxis5->SetYTitle("ZEM pedestals");
    //
    graph[ic+10]->SetMarkerStyle(22);
    graph[ic+10]->SetMarkerColor(kGreen+1);
    graph[ic+10]->Draw("P, SAME");
    // *** Ref. pedestals
    cothPeds->cd(ic+3);
    //
    TH1F *haxis6=0; 
    if(ipedGainChain==0) haxis6 = gPad->DrawFrame(firstRun-100, 50, lastRun+100, 90);
    else  haxis6 = gPad->DrawFrame(firstRun-100, 400, lastRun+100, 700);
    haxis6->GetXaxis()->SetNoExponent();
    haxis6->SetXTitle("RUN no.");
    haxis6->SetYTitle("PMRef. pedestals");
    //
    graph[ic+22]->SetMarkerStyle(23);
    graph[ic+22]->SetMarkerColor(kGreen+4);
    graph[ic+22]->Draw("P, SAME");
 }
 cothPeds->SaveAs("ZDCPedvsTime2.gif");
 cothPeds->SaveAs("ZDCPedvsTime2.C");
 
}
 PlotPedestalsvsTime.C:1
 PlotPedestalsvsTime.C:2
 PlotPedestalsvsTime.C:3
 PlotPedestalsvsTime.C:4
 PlotPedestalsvsTime.C:5
 PlotPedestalsvsTime.C:6
 PlotPedestalsvsTime.C:7
 PlotPedestalsvsTime.C:8
 PlotPedestalsvsTime.C:9
 PlotPedestalsvsTime.C:10
 PlotPedestalsvsTime.C:11
 PlotPedestalsvsTime.C:12
 PlotPedestalsvsTime.C:13
 PlotPedestalsvsTime.C:14
 PlotPedestalsvsTime.C:15
 PlotPedestalsvsTime.C:16
 PlotPedestalsvsTime.C:17
 PlotPedestalsvsTime.C:18
 PlotPedestalsvsTime.C:19
 PlotPedestalsvsTime.C:20
 PlotPedestalsvsTime.C:21
 PlotPedestalsvsTime.C:22
 PlotPedestalsvsTime.C:23
 PlotPedestalsvsTime.C:24
 PlotPedestalsvsTime.C:25
 PlotPedestalsvsTime.C:26
 PlotPedestalsvsTime.C:27
 PlotPedestalsvsTime.C:28
 PlotPedestalsvsTime.C:29
 PlotPedestalsvsTime.C:30
 PlotPedestalsvsTime.C:31
 PlotPedestalsvsTime.C:32
 PlotPedestalsvsTime.C:33
 PlotPedestalsvsTime.C:34
 PlotPedestalsvsTime.C:35
 PlotPedestalsvsTime.C:36
 PlotPedestalsvsTime.C:37
 PlotPedestalsvsTime.C:38
 PlotPedestalsvsTime.C:39
 PlotPedestalsvsTime.C:40
 PlotPedestalsvsTime.C:41
 PlotPedestalsvsTime.C:42
 PlotPedestalsvsTime.C:43
 PlotPedestalsvsTime.C:44
 PlotPedestalsvsTime.C:45
 PlotPedestalsvsTime.C:46
 PlotPedestalsvsTime.C:47
 PlotPedestalsvsTime.C:48
 PlotPedestalsvsTime.C:49
 PlotPedestalsvsTime.C:50
 PlotPedestalsvsTime.C:51
 PlotPedestalsvsTime.C:52
 PlotPedestalsvsTime.C:53
 PlotPedestalsvsTime.C:54
 PlotPedestalsvsTime.C:55
 PlotPedestalsvsTime.C:56
 PlotPedestalsvsTime.C:57
 PlotPedestalsvsTime.C:58
 PlotPedestalsvsTime.C:59
 PlotPedestalsvsTime.C:60
 PlotPedestalsvsTime.C:61
 PlotPedestalsvsTime.C:62
 PlotPedestalsvsTime.C:63
 PlotPedestalsvsTime.C:64
 PlotPedestalsvsTime.C:65
 PlotPedestalsvsTime.C:66
 PlotPedestalsvsTime.C:67
 PlotPedestalsvsTime.C:68
 PlotPedestalsvsTime.C:69
 PlotPedestalsvsTime.C:70
 PlotPedestalsvsTime.C:71
 PlotPedestalsvsTime.C:72
 PlotPedestalsvsTime.C:73
 PlotPedestalsvsTime.C:74
 PlotPedestalsvsTime.C:75
 PlotPedestalsvsTime.C:76
 PlotPedestalsvsTime.C:77
 PlotPedestalsvsTime.C:78
 PlotPedestalsvsTime.C:79
 PlotPedestalsvsTime.C:80
 PlotPedestalsvsTime.C:81
 PlotPedestalsvsTime.C:82
 PlotPedestalsvsTime.C:83
 PlotPedestalsvsTime.C:84
 PlotPedestalsvsTime.C:85
 PlotPedestalsvsTime.C:86
 PlotPedestalsvsTime.C:87
 PlotPedestalsvsTime.C:88
 PlotPedestalsvsTime.C:89
 PlotPedestalsvsTime.C:90
 PlotPedestalsvsTime.C:91
 PlotPedestalsvsTime.C:92
 PlotPedestalsvsTime.C:93
 PlotPedestalsvsTime.C:94
 PlotPedestalsvsTime.C:95
 PlotPedestalsvsTime.C:96
 PlotPedestalsvsTime.C:97
 PlotPedestalsvsTime.C:98
 PlotPedestalsvsTime.C:99
 PlotPedestalsvsTime.C:100
 PlotPedestalsvsTime.C:101
 PlotPedestalsvsTime.C:102
 PlotPedestalsvsTime.C:103
 PlotPedestalsvsTime.C:104
 PlotPedestalsvsTime.C:105
 PlotPedestalsvsTime.C:106
 PlotPedestalsvsTime.C:107
 PlotPedestalsvsTime.C:108
 PlotPedestalsvsTime.C:109
 PlotPedestalsvsTime.C:110
 PlotPedestalsvsTime.C:111
 PlotPedestalsvsTime.C:112
 PlotPedestalsvsTime.C:113
 PlotPedestalsvsTime.C:114
 PlotPedestalsvsTime.C:115
 PlotPedestalsvsTime.C:116
 PlotPedestalsvsTime.C:117
 PlotPedestalsvsTime.C:118
 PlotPedestalsvsTime.C:119
 PlotPedestalsvsTime.C:120
 PlotPedestalsvsTime.C:121
 PlotPedestalsvsTime.C:122
 PlotPedestalsvsTime.C:123
 PlotPedestalsvsTime.C:124
 PlotPedestalsvsTime.C:125
 PlotPedestalsvsTime.C:126
 PlotPedestalsvsTime.C:127
 PlotPedestalsvsTime.C:128
 PlotPedestalsvsTime.C:129
 PlotPedestalsvsTime.C:130
 PlotPedestalsvsTime.C:131
 PlotPedestalsvsTime.C:132
 PlotPedestalsvsTime.C:133
 PlotPedestalsvsTime.C:134
 PlotPedestalsvsTime.C:135
 PlotPedestalsvsTime.C:136
 PlotPedestalsvsTime.C:137
 PlotPedestalsvsTime.C:138
 PlotPedestalsvsTime.C:139
 PlotPedestalsvsTime.C:140
 PlotPedestalsvsTime.C:141
 PlotPedestalsvsTime.C:142
 PlotPedestalsvsTime.C:143
 PlotPedestalsvsTime.C:144
 PlotPedestalsvsTime.C:145
 PlotPedestalsvsTime.C:146
 PlotPedestalsvsTime.C:147
 PlotPedestalsvsTime.C:148
 PlotPedestalsvsTime.C:149
 PlotPedestalsvsTime.C:150
 PlotPedestalsvsTime.C:151
 PlotPedestalsvsTime.C:152
 PlotPedestalsvsTime.C:153
 PlotPedestalsvsTime.C:154
 PlotPedestalsvsTime.C:155
 PlotPedestalsvsTime.C:156
 PlotPedestalsvsTime.C:157
 PlotPedestalsvsTime.C:158
 PlotPedestalsvsTime.C:159
 PlotPedestalsvsTime.C:160
 PlotPedestalsvsTime.C:161
 PlotPedestalsvsTime.C:162
 PlotPedestalsvsTime.C:163
 PlotPedestalsvsTime.C:164
 PlotPedestalsvsTime.C:165
 PlotPedestalsvsTime.C:166
 PlotPedestalsvsTime.C:167
 PlotPedestalsvsTime.C:168
 PlotPedestalsvsTime.C:169
 PlotPedestalsvsTime.C:170
 PlotPedestalsvsTime.C:171
 PlotPedestalsvsTime.C:172
 PlotPedestalsvsTime.C:173
 PlotPedestalsvsTime.C:174
 PlotPedestalsvsTime.C:175
 PlotPedestalsvsTime.C:176
 PlotPedestalsvsTime.C:177
 PlotPedestalsvsTime.C:178
 PlotPedestalsvsTime.C:179
 PlotPedestalsvsTime.C:180
 PlotPedestalsvsTime.C:181
 PlotPedestalsvsTime.C:182
 PlotPedestalsvsTime.C:183
 PlotPedestalsvsTime.C:184
 PlotPedestalsvsTime.C:185
 PlotPedestalsvsTime.C:186
 PlotPedestalsvsTime.C:187
 PlotPedestalsvsTime.C:188
 PlotPedestalsvsTime.C:189
 PlotPedestalsvsTime.C:190
 PlotPedestalsvsTime.C:191
 PlotPedestalsvsTime.C:192
 PlotPedestalsvsTime.C:193
 PlotPedestalsvsTime.C:194
 PlotPedestalsvsTime.C:195
 PlotPedestalsvsTime.C:196
 PlotPedestalsvsTime.C:197
 PlotPedestalsvsTime.C:198
 PlotPedestalsvsTime.C:199
 PlotPedestalsvsTime.C:200
 PlotPedestalsvsTime.C:201
 PlotPedestalsvsTime.C:202
 PlotPedestalsvsTime.C:203
 PlotPedestalsvsTime.C:204
 PlotPedestalsvsTime.C:205
 PlotPedestalsvsTime.C:206
 PlotPedestalsvsTime.C:207
 PlotPedestalsvsTime.C:208
 PlotPedestalsvsTime.C:209