ROOT logo
/****************************************************************************
 *           Origin: I.Belikov, CERN, Jouri.Belikov@cern.ch                 *
 ****************************************************************************/

#ifndef __CINT__
#include <Riostream.h>
#include <TFile.h>
#include <TTree.h>
#include <TCanvas.h>
#include <TStyle.h>
#include <TH2.h>

#include "AliTPCParam.h"
#include "AliSimDigits.h"
#endif

Int_t AliTPCDisplayDigits(Int_t eventn, int sec, int row, int lab=-1,
                 int max_t_chan=500, float min_t=0., float max_t=500.,
                 int max_p_chan=150, float min_p=0., float max_p=150.)
{
   cerr<<"Displaying digits...\n";

// Connect the Root Galice file containing Geometry, Kine and Hits
   TFile *f = TFile::Open("rfio:galice.root");
   if (!f->IsOpen()) {cerr<<"Can't open galice.root !\n"; return 1;}

   
   
   AliTPCParam *par=(AliTPCParam *)f->Get("75x40_100x60_150x60");
   if (!par) { cerr<<"TPC parameters have not been found !\n"; return 2; }

   Char_t s[80];
   sprintf(s,"Sector %d   Row %d\n",sec,row);
   TH2F *h = new TH2F("h",s,max_t_chan,min_t,max_t,max_p_chan,min_p,max_p);
   
   Char_t  name[100];
   sprintf(name,"TreeD_75x40_100x60_150x60_%d",eventn);

   TTree *t=(TTree*)f->Get(name);
   if (!t) { cerr<<"TPC digits have not been found !\n"; return 3; }
   AliSimDigits dummy, *digit=&dummy;
   t->GetBranch("Segment")->SetAddress(&digit);
   Int_t sbr=(Int_t)t->GetEntries();
   for (Int_t i=0; i<sbr; i++) {
       if (!t->GetEvent(i)) continue;
       Int_t s,r;
       par->AdjustSectorRow(digit->GetID(),s,r);
       if (s==sec && r==row) goto ok;
   }
   return 4;
   
ok:

   Int_t imax=0, jmax=0, qmax=0;
   digit->First();
   do {
     //Short_t dig=digit->CurrentDigit();
      Int_t i=digit->CurrentRow(), j=digit->CurrentColumn();
      Short_t dig=digit->GetDigit(i,j);
      if (lab >= 0) {
         Int_t lab0=digit->GetTrackID(i,j,0);
         Int_t lab1=digit->GetTrackID(i,j,1);
         Int_t lab2=digit->GetTrackID(i,j,2);
         if (lab0!=lab) if (lab1!=lab) if (lab2!=lab) continue;
         if (dig>qmax) {imax=i; jmax=j; qmax=dig;}
         cerr<<lab0<<' '<<lab1<<' '<<lab2<<endl;
      }
      h->Fill(i,j,dig);
   } while (digit->Next());
   if (qmax>0){cerr<<"Peak (time,pad,q) : "<<imax<<' '<<jmax<<' '<<qmax<<endl;}

   h->SetMaximum(100);
   gStyle->SetOptStat(0);
   TCanvas *c1=new TCanvas("ddisplay","TPC digits display",0,0,1110,680);
   TPad *p1=new TPad("p1","",0,0,1,0.5);
   p1->Draw();
   TPad *p2=new TPad("p2","",0,0.5,1,1);
   p2->Draw();
   p2->cd();
   h->DrawCopy("lego");
   p1->cd();
   h->DrawCopy("colz");

   c1->Modified(); c1->Update(); 

   f->Close();
   return 0;
}

 AliTPCDisplayDigits.C:1
 AliTPCDisplayDigits.C:2
 AliTPCDisplayDigits.C:3
 AliTPCDisplayDigits.C:4
 AliTPCDisplayDigits.C:5
 AliTPCDisplayDigits.C:6
 AliTPCDisplayDigits.C:7
 AliTPCDisplayDigits.C:8
 AliTPCDisplayDigits.C:9
 AliTPCDisplayDigits.C:10
 AliTPCDisplayDigits.C:11
 AliTPCDisplayDigits.C:12
 AliTPCDisplayDigits.C:13
 AliTPCDisplayDigits.C:14
 AliTPCDisplayDigits.C:15
 AliTPCDisplayDigits.C:16
 AliTPCDisplayDigits.C:17
 AliTPCDisplayDigits.C:18
 AliTPCDisplayDigits.C:19
 AliTPCDisplayDigits.C:20
 AliTPCDisplayDigits.C:21
 AliTPCDisplayDigits.C:22
 AliTPCDisplayDigits.C:23
 AliTPCDisplayDigits.C:24
 AliTPCDisplayDigits.C:25
 AliTPCDisplayDigits.C:26
 AliTPCDisplayDigits.C:27
 AliTPCDisplayDigits.C:28
 AliTPCDisplayDigits.C:29
 AliTPCDisplayDigits.C:30
 AliTPCDisplayDigits.C:31
 AliTPCDisplayDigits.C:32
 AliTPCDisplayDigits.C:33
 AliTPCDisplayDigits.C:34
 AliTPCDisplayDigits.C:35
 AliTPCDisplayDigits.C:36
 AliTPCDisplayDigits.C:37
 AliTPCDisplayDigits.C:38
 AliTPCDisplayDigits.C:39
 AliTPCDisplayDigits.C:40
 AliTPCDisplayDigits.C:41
 AliTPCDisplayDigits.C:42
 AliTPCDisplayDigits.C:43
 AliTPCDisplayDigits.C:44
 AliTPCDisplayDigits.C:45
 AliTPCDisplayDigits.C:46
 AliTPCDisplayDigits.C:47
 AliTPCDisplayDigits.C:48
 AliTPCDisplayDigits.C:49
 AliTPCDisplayDigits.C:50
 AliTPCDisplayDigits.C:51
 AliTPCDisplayDigits.C:52
 AliTPCDisplayDigits.C:53
 AliTPCDisplayDigits.C:54
 AliTPCDisplayDigits.C:55
 AliTPCDisplayDigits.C:56
 AliTPCDisplayDigits.C:57
 AliTPCDisplayDigits.C:58
 AliTPCDisplayDigits.C:59
 AliTPCDisplayDigits.C:60
 AliTPCDisplayDigits.C:61
 AliTPCDisplayDigits.C:62
 AliTPCDisplayDigits.C:63
 AliTPCDisplayDigits.C:64
 AliTPCDisplayDigits.C:65
 AliTPCDisplayDigits.C:66
 AliTPCDisplayDigits.C:67
 AliTPCDisplayDigits.C:68
 AliTPCDisplayDigits.C:69
 AliTPCDisplayDigits.C:70
 AliTPCDisplayDigits.C:71
 AliTPCDisplayDigits.C:72
 AliTPCDisplayDigits.C:73
 AliTPCDisplayDigits.C:74
 AliTPCDisplayDigits.C:75
 AliTPCDisplayDigits.C:76
 AliTPCDisplayDigits.C:77
 AliTPCDisplayDigits.C:78
 AliTPCDisplayDigits.C:79
 AliTPCDisplayDigits.C:80
 AliTPCDisplayDigits.C:81
 AliTPCDisplayDigits.C:82
 AliTPCDisplayDigits.C:83
 AliTPCDisplayDigits.C:84
 AliTPCDisplayDigits.C:85
 AliTPCDisplayDigits.C:86
 AliTPCDisplayDigits.C:87
 AliTPCDisplayDigits.C:88
 AliTPCDisplayDigits.C:89
 AliTPCDisplayDigits.C:90