ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

// $Id$

// Macro to process the files with histograms generated by 
// digitsDET.C macros for all included detectors and to produce plots 
// with histograms. 
// The histogram files are aerched in the directories,
// which names are specified in label[] array;
// the labels will be then used at the histogram titles.
// 
// By E. Sicking, CERN; I. Hrivnacova, IPN Orsay

void plotDetDigits(string a = "ITS", string b = "")
{
  string label[10];
  string histoName[10];
  string histoTitle[10];
  TFile* file[10];
  Int_t color[10];
  TH1F* histo[10][10];

  // Fill values by hand
  //
  Int_t ndirs = 3;  
  Int_t nhistos = 2;

  // Histogram labels (per directory)
  label[0] = "g3";    
  label[1] = "g4_sc";
  label[2] = "g4";

  // Histogram names & title (per histogram)
  histoName[0] = "hadc"; 
  histoName[1] = "hadclog"; 
  histoTitle[0] = "Number of ADC in "; 
  histoTitle[1] = "Log_{10}(Number of ADC in "; 
  
  // The histogram colors (per directory)
  color[0] = kBlack;
  color[1] = kRed;
  color[2] = kBlue;
  //
  // end hand made definitions
  
  // generate detname
  string detname = a;
  if ( b.size() > 0 ) { 
    detname.append(".");
    detname.append(b);
  }

  cout << "Processing " << detname << " ... " << endl;
 
  // generate filename
  string filename = "digits.";
  filename.append(detname);
  filename.append(".root");
  
  // label for all histos
  string labelall;
  for ( Int_t i=0; i<ndirs; i++ ) {
    labelall.append(label[i]);
    if (i<ndirs-1) labelall.append("+");
  }  

  // open files
  for ( Int_t i=0; i<ndirs; i++ ) {
    string filepath = label[i];
    filepath.append("/");
    filepath.append(filename);
    file[i] = TFile::Open(filepath.data());
    if ( ! file[i] ) { 
      cerr << "Cannot open " << file[i] << endl;
    }  
  }  

  double scale=1.5;

  //extract histograms
  for ( Int_t j=0; j<nhistos; j++ ) {
    for ( Int_t i=0; i<ndirs; i++ ) {
      histo[i][j] = (TH1F *)file[i]->Get(histoName[j].data());
      if ( ! histo[i][j] ) {
        histo[i][j] = (TH1F *)file[i]->Get("hadcLog");
      }  
      //histo[i][j]->SetLineWidth(3);
      //histo[i][j]->SetLineStyle(3+i);
      histo[i][j]->SetLineColor(color[i]);
      //histo[i][j]->Sumw2();
    }
  }  

  // style & legend
  gROOT->SetStyle("Plain");
  //gStyle->SetOptStat(0);

  // ???
  TLegend *legp;
  TF1 *fun1p;
  TF1 *fun2p;
  TF1 *fun3p;
  legp= new TLegend(0.9,0.75,0.7,0.9);
  fun1p= new TF1("fun1p","gaus",-5.0,5.0);
  fun2p= new TF1("fun2p","gaus",-5.0,5.0);
  fun3p= new TF1("fun3p","gaus",-5.0,5.0);
  fun1p->SetLineColor(kBlue);
  fun2p->SetLineColor(kRed);
  fun2p->SetLineStyle(2);
  fun3p->SetLineColor(kBlack);
  fun3p->SetLineStyle(3);
  legp->SetFillColor(kWhite);
  legp->AddEntry(fun1p,"Geant3","l");   
  legp->AddEntry(fun2p,"Geant4","l"); 
  legp->AddEntry(fun3p,"Fluka","l"); 
  
  //Draw
  TCanvas* c1 
    = new TCanvas (detname.data(), detname.data(), 100, 100, 1000,1560);
  c1->Divide(nhistos, ndirs+1 );
 
  // All plots
  Int_t counter = 0;
  for ( Int_t j=0; j<nhistos ; ++j ) {
    c1->cd(++counter);
    for ( Int_t i=0; i<ndirs; i++ ) {
      histo[i][j]->SetTitle(labelall.data());
      string xtitle = histoTitle[j];
      xtitle.append(detname);
      histo[i][j]->SetXTitle(xtitle.data());
      string option("");
      if ( i>0 ) option = "same";
      histo[i][j]->Draw(option.data());
      histo[i][j]->SetMaximum(histo[i][j]->GetMaximum()*scale);
      //histo[i][j]->Sumw2();
      gPad->SetLogy();
      //legp->Draw();
    } 
  }   

  // Plots per case
  for ( Int_t i=0; i<ndirs; i++ ) {
    for ( Int_t j=0; j<nhistos ; ++j ) {
      c1->cd(++counter);
      // gPad->SetLeftMargin(0.15);
      // gPad->SetBottomMargin(0.15);
      histo[i][j]->SetTitle(label[i].data());
      string xtitle = histoTitle[j];
      xtitle.append(detname);
      histo[i][j]->SetXTitle(xtitle.data());
      histo[i][j]->Draw("");
      histo[i][j]->SetMaximum(histo[i][j]->GetMaximum()*scale);
      //histo[i][j]->Sumw2();
      gPad->SetLogy();
     //legp->Draw();
    } 
  }   
  
  string outName = detname;
  outName += ".gif";
  c1->SaveAs(outName.data());
}

void plotDigits() {
  plotDetDigits("ITS","SDD");
  plotDetDigits("ITS","SPD");
  plotDetDigits("ITS","SSD");
  plotDetDigits("TPC");
  plotDetDigits("TRD");
  plotDetDigits("TOF");
  plotDetDigits("EMCAL");
  plotDetDigits("HMPID");
  plotDetDigits("PHOS");
}
 plotDigits.C:1
 plotDigits.C:2
 plotDigits.C:3
 plotDigits.C:4
 plotDigits.C:5
 plotDigits.C:6
 plotDigits.C:7
 plotDigits.C:8
 plotDigits.C:9
 plotDigits.C:10
 plotDigits.C:11
 plotDigits.C:12
 plotDigits.C:13
 plotDigits.C:14
 plotDigits.C:15
 plotDigits.C:16
 plotDigits.C:17
 plotDigits.C:18
 plotDigits.C:19
 plotDigits.C:20
 plotDigits.C:21
 plotDigits.C:22
 plotDigits.C:23
 plotDigits.C:24
 plotDigits.C:25
 plotDigits.C:26
 plotDigits.C:27
 plotDigits.C:28
 plotDigits.C:29
 plotDigits.C:30
 plotDigits.C:31
 plotDigits.C:32
 plotDigits.C:33
 plotDigits.C:34
 plotDigits.C:35
 plotDigits.C:36
 plotDigits.C:37
 plotDigits.C:38
 plotDigits.C:39
 plotDigits.C:40
 plotDigits.C:41
 plotDigits.C:42
 plotDigits.C:43
 plotDigits.C:44
 plotDigits.C:45
 plotDigits.C:46
 plotDigits.C:47
 plotDigits.C:48
 plotDigits.C:49
 plotDigits.C:50
 plotDigits.C:51
 plotDigits.C:52
 plotDigits.C:53
 plotDigits.C:54
 plotDigits.C:55
 plotDigits.C:56
 plotDigits.C:57
 plotDigits.C:58
 plotDigits.C:59
 plotDigits.C:60
 plotDigits.C:61
 plotDigits.C:62
 plotDigits.C:63
 plotDigits.C:64
 plotDigits.C:65
 plotDigits.C:66
 plotDigits.C:67
 plotDigits.C:68
 plotDigits.C:69
 plotDigits.C:70
 plotDigits.C:71
 plotDigits.C:72
 plotDigits.C:73
 plotDigits.C:74
 plotDigits.C:75
 plotDigits.C:76
 plotDigits.C:77
 plotDigits.C:78
 plotDigits.C:79
 plotDigits.C:80
 plotDigits.C:81
 plotDigits.C:82
 plotDigits.C:83
 plotDigits.C:84
 plotDigits.C:85
 plotDigits.C:86
 plotDigits.C:87
 plotDigits.C:88
 plotDigits.C:89
 plotDigits.C:90
 plotDigits.C:91
 plotDigits.C:92
 plotDigits.C:93
 plotDigits.C:94
 plotDigits.C:95
 plotDigits.C:96
 plotDigits.C:97
 plotDigits.C:98
 plotDigits.C:99
 plotDigits.C:100
 plotDigits.C:101
 plotDigits.C:102
 plotDigits.C:103
 plotDigits.C:104
 plotDigits.C:105
 plotDigits.C:106
 plotDigits.C:107
 plotDigits.C:108
 plotDigits.C:109
 plotDigits.C:110
 plotDigits.C:111
 plotDigits.C:112
 plotDigits.C:113
 plotDigits.C:114
 plotDigits.C:115
 plotDigits.C:116
 plotDigits.C:117
 plotDigits.C:118
 plotDigits.C:119
 plotDigits.C:120
 plotDigits.C:121
 plotDigits.C:122
 plotDigits.C:123
 plotDigits.C:124
 plotDigits.C:125
 plotDigits.C:126
 plotDigits.C:127
 plotDigits.C:128
 plotDigits.C:129
 plotDigits.C:130
 plotDigits.C:131
 plotDigits.C:132
 plotDigits.C:133
 plotDigits.C:134
 plotDigits.C:135
 plotDigits.C:136
 plotDigits.C:137
 plotDigits.C:138
 plotDigits.C:139
 plotDigits.C:140
 plotDigits.C:141
 plotDigits.C:142
 plotDigits.C:143
 plotDigits.C:144
 plotDigits.C:145
 plotDigits.C:146
 plotDigits.C:147
 plotDigits.C:148
 plotDigits.C:149
 plotDigits.C:150
 plotDigits.C:151
 plotDigits.C:152
 plotDigits.C:153
 plotDigits.C:154
 plotDigits.C:155
 plotDigits.C:156
 plotDigits.C:157
 plotDigits.C:158
 plotDigits.C:159
 plotDigits.C:160
 plotDigits.C:161
 plotDigits.C:162
 plotDigits.C:163
 plotDigits.C:164
 plotDigits.C:165
 plotDigits.C:166
 plotDigits.C:167
 plotDigits.C:168
 plotDigits.C:169
 plotDigits.C:170
 plotDigits.C:171
 plotDigits.C:172
 plotDigits.C:173
 plotDigits.C:174
 plotDigits.C:175
 plotDigits.C:176
 plotDigits.C:177
 plotDigits.C:178
 plotDigits.C:179
 plotDigits.C:180
 plotDigits.C:181
 plotDigits.C:182
 plotDigits.C:183
 plotDigits.C:184
 plotDigits.C:185
 plotDigits.C:186
 plotDigits.C:187
 plotDigits.C:188