ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TCanvas.h>
#include <TClassTable.h>
#include <TGraph.h>
#include <TGraph2D.h>
#include <TGeoManager.h>
#include <TStyle.h>
#include <TH1.h>
#include <TH2.h>
#include <TInterpreter.h>
#include "AliGeomManager.h"
#include "AliCDBManager.h"
#include "AliHeader.h"
#include "AliITS.h"
#include "AliITSdigit.h"
#include "AliITSDetTypeRec.h"
#include "AliITSgeomTGeo.h"
#include "AliITSRecPoint.h"
#include "AliRun.h"
#endif

// Macro to display the SDD digits for 1 ladder
// Origin: F. Prino,   prino@to.infn.it


Int_t PlotSDDDigits(Int_t lay, Int_t lad, Int_t iev=0){
    if (gClassTable->GetID("AliRun") < 0) {
    gInterpreter->ExecuteMacro("loadlibs.C");
  }


  AliCDBManager* man = AliCDBManager::Instance();
  if (!man->IsDefaultStorageSet()) {
    printf("Setting a local default storage and run number 0\n");
    man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
    man->SetRun(0);
  }
  else {
    printf("Using deafult storage \n");
  }
 
  // retrives geometry 
  if(!gGeoManager){
    AliGeomManager::LoadGeometry("geometry.root");
  }

  AliRunLoader* rl = AliRunLoader::Open("galice.root");
  if (rl == 0x0){
    cerr<<"Can not open session RL=NULL"<< endl;
    return -1;
  }
  Int_t retval = rl->LoadgAlice();
  if (retval){
    cerr<<"AliITSGeoPlot.C : LoadgAlice returned error"<<endl;
    return -1;
  }
  gAlice=rl->GetAliRun();

  retval = rl->LoadHeader();
  if (retval){
    cerr<<"LoadHeader returned error"<<endl;
    return -1;
  }


  AliITSLoader* ITSloader =  (AliITSLoader*) rl->GetLoader("ITSLoader");
  if(!ITSloader){
    cerr<<"ITS loader not found"<<endl;
    return -1;
  }
  AliITSgeom *geom = ITSloader->GetITSgeom();

  ITSloader->LoadDigits("read");
  rl->GetEvent(iev);
  AliITS *ITS  = (AliITS*)gAlice->GetModule("ITS");
  ITS->SetTreeAddress();

  TTree *TD = ITSloader->TreeD();
  AliITSDetTypeRec* detTypeRec = new AliITSDetTypeRec();
  detTypeRec->SetITSgeom(geom);
  detTypeRec->SetDefaults();
  TClonesArray *ITSdigits  = ITS->DigitsAddress(1);
  detTypeRec->ResetDigits();
  Int_t maxmod=6;
  if(lay==4) maxmod=8;
  TH2F **hdig0=new TH2F*[8];
  TH2F **hdig1=new TH2F*[8];
  Char_t histtit[100], histname[10];
  Int_t nbytes;
  for(Int_t i=0; i<maxmod; i++){
    Int_t nmod=AliITSgeomTGeo::GetModuleIndex(lay,lad,i+1);
    nbytes = TD->GetEvent(nmod);
    Int_t ndigits = ITSdigits->GetEntries();
    printf("Module %d  ndigits=%d\n",nmod,ndigits);
    sprintf(histname,"hdig%ds0",nmod);
    sprintf(histtit,"Digit mod %d side 0",nmod);
    hdig0[i]=new TH2F(histname,histtit,256,-0.5,255.5,256,-0.5,255.5);
    sprintf(histname,"hdig%ds1",nmod);
    sprintf(histtit,"Digit mod %d side 1",nmod);
    hdig1[i]=new TH2F(histname,histtit,256,-0.5,255.5,256,-0.5,255.5);
    hdig0[i]->SetStats(0);
    hdig1[i]->SetStats(0);
    for (Int_t idig=0; idig<ndigits; idig++) {
      AliITSdigit *dig=(AliITSdigit*)ITSdigits->UncheckedAt(idig);
      Int_t iz=dig->GetCoord1();  // cell number z
      Int_t ix=dig->GetCoord2();  // cell number x
      Int_t sig=dig->GetSignal();
      if(iz<256){
	hdig0[i]->SetBinContent(ix+1,iz+1,sig);
      }else{
	iz-=256;
	hdig1[i]->SetBinContent(ix+1,iz+1,sig);
      }
    }
  }
  gStyle->SetPalette(1);
  TCanvas *c1=new TCanvas("c1","",1200,900);
  c1->Divide(4,maxmod/2);
  for(Int_t i=0;i<maxmod;i++){
    c1->cd(1+2*i);
    hdig0[i]->Draw("colz");
    hdig0[i]->GetXaxis()->SetTitle("Time bin");
    hdig0[i]->GetYaxis()->SetTitle("Anode");
    c1->cd(2+2*i);
    hdig1[i]->Draw("colz");
    hdig1[i]->GetXaxis()->SetTitle("Time bin");
    hdig1[i]->GetYaxis()->SetTitle("Anode");
  }
  return 0;
}
 PlotSDDDigits.C:1
 PlotSDDDigits.C:2
 PlotSDDDigits.C:3
 PlotSDDDigits.C:4
 PlotSDDDigits.C:5
 PlotSDDDigits.C:6
 PlotSDDDigits.C:7
 PlotSDDDigits.C:8
 PlotSDDDigits.C:9
 PlotSDDDigits.C:10
 PlotSDDDigits.C:11
 PlotSDDDigits.C:12
 PlotSDDDigits.C:13
 PlotSDDDigits.C:14
 PlotSDDDigits.C:15
 PlotSDDDigits.C:16
 PlotSDDDigits.C:17
 PlotSDDDigits.C:18
 PlotSDDDigits.C:19
 PlotSDDDigits.C:20
 PlotSDDDigits.C:21
 PlotSDDDigits.C:22
 PlotSDDDigits.C:23
 PlotSDDDigits.C:24
 PlotSDDDigits.C:25
 PlotSDDDigits.C:26
 PlotSDDDigits.C:27
 PlotSDDDigits.C:28
 PlotSDDDigits.C:29
 PlotSDDDigits.C:30
 PlotSDDDigits.C:31
 PlotSDDDigits.C:32
 PlotSDDDigits.C:33
 PlotSDDDigits.C:34
 PlotSDDDigits.C:35
 PlotSDDDigits.C:36
 PlotSDDDigits.C:37
 PlotSDDDigits.C:38
 PlotSDDDigits.C:39
 PlotSDDDigits.C:40
 PlotSDDDigits.C:41
 PlotSDDDigits.C:42
 PlotSDDDigits.C:43
 PlotSDDDigits.C:44
 PlotSDDDigits.C:45
 PlotSDDDigits.C:46
 PlotSDDDigits.C:47
 PlotSDDDigits.C:48
 PlotSDDDigits.C:49
 PlotSDDDigits.C:50
 PlotSDDDigits.C:51
 PlotSDDDigits.C:52
 PlotSDDDigits.C:53
 PlotSDDDigits.C:54
 PlotSDDDigits.C:55
 PlotSDDDigits.C:56
 PlotSDDDigits.C:57
 PlotSDDDigits.C:58
 PlotSDDDigits.C:59
 PlotSDDDigits.C:60
 PlotSDDDigits.C:61
 PlotSDDDigits.C:62
 PlotSDDDigits.C:63
 PlotSDDDigits.C:64
 PlotSDDDigits.C:65
 PlotSDDDigits.C:66
 PlotSDDDigits.C:67
 PlotSDDDigits.C:68
 PlotSDDDigits.C:69
 PlotSDDDigits.C:70
 PlotSDDDigits.C:71
 PlotSDDDigits.C:72
 PlotSDDDigits.C:73
 PlotSDDDigits.C:74
 PlotSDDDigits.C:75
 PlotSDDDigits.C:76
 PlotSDDDigits.C:77
 PlotSDDDigits.C:78
 PlotSDDDigits.C:79
 PlotSDDDigits.C:80
 PlotSDDDigits.C:81
 PlotSDDDigits.C:82
 PlotSDDDigits.C:83
 PlotSDDDigits.C:84
 PlotSDDDigits.C:85
 PlotSDDDigits.C:86
 PlotSDDDigits.C:87
 PlotSDDDigits.C:88
 PlotSDDDigits.C:89
 PlotSDDDigits.C:90
 PlotSDDDigits.C:91
 PlotSDDDigits.C:92
 PlotSDDDigits.C:93
 PlotSDDDigits.C:94
 PlotSDDDigits.C:95
 PlotSDDDigits.C:96
 PlotSDDDigits.C:97
 PlotSDDDigits.C:98
 PlotSDDDigits.C:99
 PlotSDDDigits.C:100
 PlotSDDDigits.C:101
 PlotSDDDigits.C:102
 PlotSDDDigits.C:103
 PlotSDDDigits.C:104
 PlotSDDDigits.C:105
 PlotSDDDigits.C:106
 PlotSDDDigits.C:107
 PlotSDDDigits.C:108
 PlotSDDDigits.C:109
 PlotSDDDigits.C:110
 PlotSDDDigits.C:111
 PlotSDDDigits.C:112
 PlotSDDDigits.C:113
 PlotSDDDigits.C:114
 PlotSDDDigits.C:115
 PlotSDDDigits.C:116
 PlotSDDDigits.C:117
 PlotSDDDigits.C:118
 PlotSDDDigits.C:119
 PlotSDDDigits.C:120
 PlotSDDDigits.C:121
 PlotSDDDigits.C:122
 PlotSDDDigits.C:123
 PlotSDDDigits.C:124
 PlotSDDDigits.C:125
 PlotSDDDigits.C:126
 PlotSDDDigits.C:127
 PlotSDDDigits.C:128
 PlotSDDDigits.C:129
 PlotSDDDigits.C:130
 PlotSDDDigits.C:131