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 <TH1F.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 "AliZDCTDCCalib.h"

#endif


void PlotTDCcalibvsTime(Int_t year=2011, Int_t firstRun=166000, 
		   Int_t lastRun=169000)
{


  TGrid::Connect("alien:",0,0,"t");
  gSystem->Exec(Form("gbbox find \"/alice/data/%d/OCDB/ZDC/Calib/TDCCalib/\" \"Run*.root\" > TDCcalibAlienFiles.txt",year));
  FILE* listruns=fopen("TDCcalibAlienFiles.txt","r");
  
  const int kNchannels=6;
  TGraphErrors* graph[6];
  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,"TDC.%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);
    printf(" Checking for %s\n",filnam);
    if(!strstr(filnam,directory)) continue;
    sscanf(filnam,"/alice/data/%d/OCDB/ZDC/Calib/TDCCalib/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");
    AliZDCTDCCalib *calibdata = dynamic_cast<AliZDCTDCCalib*>  (entry->GetObject());
    
    for(int i=0; i<kNchannels; i++){
        graph[i]->SetPoint(iPoint, (Double_t)nrun, calibdata->GetMeanTDC(i));
        graph[i]->SetPointError(iPoint, 0., calibdata->GetWidthTDC(i));
    }
    iPoint++;
    f->Close();
 }

 TFile *outfile=new TFile(Form("TDCCalib%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","TDC mean values",0,0,1000,800);
 cHadPeds->Divide(3,2);
 for(int ic=0; ic<6; ic++){
   // *** ZNC pedestals
   cHadPeds->cd(ic+1);
   //
   TH1F *haxis1 = gPad->DrawFrame(firstRun-100, -100, lastRun+100, -10);
   haxis1->GetXaxis()->SetNoExponent();
   haxis1->SetXTitle("RUN no.");
   if(ic==0) haxis1->SetYTitle("ZNC TDC calib");
   else if(ic==1)  haxis1->SetYTitle("ZNA TDC calib");
   else if(ic==2)  haxis1->SetYTitle("ZPC TDC calib");
   else if(ic==3)  haxis1->SetYTitle("ZPA TDC calib");
   else if(ic==4)  haxis1->SetYTitle("ZEM1 TDC calib");
   else if(ic==5)  haxis1->SetYTitle("ZEM2 TDC calib");
   //
   graph[ic]->SetMarkerStyle(20);
   graph[ic]->SetMarkerColor(kAzure+ic);
   graph[ic]->Draw("P, SAME");
 }
 cHadPeds->SaveAs("ZDCTDCvsTime.gif");
 cHadPeds->SaveAs("ZDCTDCvsTime.C");

 
}
 PlotTDCcalibvsTime.C:1
 PlotTDCcalibvsTime.C:2
 PlotTDCcalibvsTime.C:3
 PlotTDCcalibvsTime.C:4
 PlotTDCcalibvsTime.C:5
 PlotTDCcalibvsTime.C:6
 PlotTDCcalibvsTime.C:7
 PlotTDCcalibvsTime.C:8
 PlotTDCcalibvsTime.C:9
 PlotTDCcalibvsTime.C:10
 PlotTDCcalibvsTime.C:11
 PlotTDCcalibvsTime.C:12
 PlotTDCcalibvsTime.C:13
 PlotTDCcalibvsTime.C:14
 PlotTDCcalibvsTime.C:15
 PlotTDCcalibvsTime.C:16
 PlotTDCcalibvsTime.C:17
 PlotTDCcalibvsTime.C:18
 PlotTDCcalibvsTime.C:19
 PlotTDCcalibvsTime.C:20
 PlotTDCcalibvsTime.C:21
 PlotTDCcalibvsTime.C:22
 PlotTDCcalibvsTime.C:23
 PlotTDCcalibvsTime.C:24
 PlotTDCcalibvsTime.C:25
 PlotTDCcalibvsTime.C:26
 PlotTDCcalibvsTime.C:27
 PlotTDCcalibvsTime.C:28
 PlotTDCcalibvsTime.C:29
 PlotTDCcalibvsTime.C:30
 PlotTDCcalibvsTime.C:31
 PlotTDCcalibvsTime.C:32
 PlotTDCcalibvsTime.C:33
 PlotTDCcalibvsTime.C:34
 PlotTDCcalibvsTime.C:35
 PlotTDCcalibvsTime.C:36
 PlotTDCcalibvsTime.C:37
 PlotTDCcalibvsTime.C:38
 PlotTDCcalibvsTime.C:39
 PlotTDCcalibvsTime.C:40
 PlotTDCcalibvsTime.C:41
 PlotTDCcalibvsTime.C:42
 PlotTDCcalibvsTime.C:43
 PlotTDCcalibvsTime.C:44
 PlotTDCcalibvsTime.C:45
 PlotTDCcalibvsTime.C:46
 PlotTDCcalibvsTime.C:47
 PlotTDCcalibvsTime.C:48
 PlotTDCcalibvsTime.C:49
 PlotTDCcalibvsTime.C:50
 PlotTDCcalibvsTime.C:51
 PlotTDCcalibvsTime.C:52
 PlotTDCcalibvsTime.C:53
 PlotTDCcalibvsTime.C:54
 PlotTDCcalibvsTime.C:55
 PlotTDCcalibvsTime.C:56
 PlotTDCcalibvsTime.C:57
 PlotTDCcalibvsTime.C:58
 PlotTDCcalibvsTime.C:59
 PlotTDCcalibvsTime.C:60
 PlotTDCcalibvsTime.C:61
 PlotTDCcalibvsTime.C:62
 PlotTDCcalibvsTime.C:63
 PlotTDCcalibvsTime.C:64
 PlotTDCcalibvsTime.C:65
 PlotTDCcalibvsTime.C:66
 PlotTDCcalibvsTime.C:67
 PlotTDCcalibvsTime.C:68
 PlotTDCcalibvsTime.C:69
 PlotTDCcalibvsTime.C:70
 PlotTDCcalibvsTime.C:71
 PlotTDCcalibvsTime.C:72
 PlotTDCcalibvsTime.C:73
 PlotTDCcalibvsTime.C:74
 PlotTDCcalibvsTime.C:75
 PlotTDCcalibvsTime.C:76
 PlotTDCcalibvsTime.C:77
 PlotTDCcalibvsTime.C:78
 PlotTDCcalibvsTime.C:79
 PlotTDCcalibvsTime.C:80
 PlotTDCcalibvsTime.C:81
 PlotTDCcalibvsTime.C:82
 PlotTDCcalibvsTime.C:83
 PlotTDCcalibvsTime.C:84
 PlotTDCcalibvsTime.C:85
 PlotTDCcalibvsTime.C:86
 PlotTDCcalibvsTime.C:87
 PlotTDCcalibvsTime.C:88
 PlotTDCcalibvsTime.C:89
 PlotTDCcalibvsTime.C:90
 PlotTDCcalibvsTime.C:91
 PlotTDCcalibvsTime.C:92
 PlotTDCcalibvsTime.C:93
 PlotTDCcalibvsTime.C:94
 PlotTDCcalibvsTime.C:95
 PlotTDCcalibvsTime.C:96
 PlotTDCcalibvsTime.C:97
 PlotTDCcalibvsTime.C:98
 PlotTDCcalibvsTime.C:99
 PlotTDCcalibvsTime.C:100
 PlotTDCcalibvsTime.C:101
 PlotTDCcalibvsTime.C:102
 PlotTDCcalibvsTime.C:103
 PlotTDCcalibvsTime.C:104
 PlotTDCcalibvsTime.C:105
 PlotTDCcalibvsTime.C:106
 PlotTDCcalibvsTime.C:107
 PlotTDCcalibvsTime.C:108
 PlotTDCcalibvsTime.C:109
 PlotTDCcalibvsTime.C:110
 PlotTDCcalibvsTime.C:111
 PlotTDCcalibvsTime.C:112
 PlotTDCcalibvsTime.C:113
 PlotTDCcalibvsTime.C:114
 PlotTDCcalibvsTime.C:115
 PlotTDCcalibvsTime.C:116
 PlotTDCcalibvsTime.C:117
 PlotTDCcalibvsTime.C:118
 PlotTDCcalibvsTime.C:119
 PlotTDCcalibvsTime.C:120
 PlotTDCcalibvsTime.C:121
 PlotTDCcalibvsTime.C:122
 PlotTDCcalibvsTime.C:123
 PlotTDCcalibvsTime.C:124
 PlotTDCcalibvsTime.C:125