ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)


#include <iostream>

// root
#include <TStyle.h>
#include <TH2.h>
#include <TCanvas.h>
#include <TStyle.h>



// aliroot
#include "AliRun.h"
#include "AliTRDgeometry.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliTRDdigitsManager.h"
#include "AliTRDarrayADC.h"
#include "AliTRDfeeParam.h"
#include "AliTRDdigitsParam.h"



#endif



void AliTRDanadigits()
{
  gStyle->SetNdivisions(005,"X");

  Int_t iev1 = 1;
  Int_t iev2 = 20;
  //
  // Analyzes the digits
  //
  const Int_t kNdet = AliTRDgeometry::Ndet();

  //open run loader and load gAlice, kinematics and header
  AliRunLoader* rl = AliRunLoader::Open("galice.root");
  if (!rl)   return;
  rl->LoadgAlice();
  gAlice = rl->GetAliRun();
  if (!gAlice) return;

  // Import the Trees for the event nEvent in the file
  rl->LoadKinematics();
  rl->GetEvent(0);
  rl->GetHeader();

  AliLoader* loader = rl->GetLoader("TRDLoader");
  if (!loader) {
    cout << "<AliTRDanalyzeHits> No TRDLoader found" << endl;
    return;
  }

  //TH2D
  Int_t detA = 240;//AliTRDgeometry::GetDetector(0,4,1); //layer,stac,sm
  Int_t detB = 250;//AliTRDgeometry::GetDetector(5,4,1);
  printf("detA %d \t detB %d \n",detA,detB);
  TH2D *chA = new TH2D("chA", "chA", kNdet, 0, kNdet, 200, -50, 50);
  TH2D *chB = new TH2D("chB", "chB", kNdet, 0, kNdet, 200, -50, 50);

  AliTRDdigitsManager *digitsManager = new AliTRDdigitsManager();

  for (Int_t ievent = iev1; ievent < iev2; ievent++) {
    printf("Process event %d\n",ievent);
    rl->GetEvent(ievent);
    if (!loader->TreeD()){
      printf("loader Loading Digits ... \n");
      loader->LoadDigits();
    }

    // Read the digits from the file
    if (!(digitsManager->ReadDigits(loader->TreeD()))) {
      cout << "<AliTRDanalyzeDigits> Cannot read the digits" << endl;
      return;
    }
    else {
      printf("digitsManager Read Digits Done\n");
    }

    // loop over selected chambers
    for(Int_t det = detA; det < detB; det++) {

      printf("try in %d :\t",det);
      Int_t        plan = AliTRDgeometry::GetLayer( det );   // Plane
      Int_t        cham = AliTRDgeometry::GetStack( det ); // Chamber
      Int_t        sect = AliTRDgeometry::GetSector( det );  // Sector (=iDDL)
      Int_t        nRow = AliTRDgeometry::GetRowMax( plan, cham, sect );
      Int_t        nCol = AliTRDgeometry::GetColMax( plan );
      printf(" sm %d \t lay %d \t stac %d \n",sect,plan,cham);


      AliTRDarrayADC *digits = (AliTRDarrayADC *) digitsManager->GetDigits(det); //mod
      digits->Expand();
      if (digits->HasData()) { //array

	printf("data\n");

	Int_t nbtimebin  = digitsManager->GetDigitsParam()->GetNTimeBins(det);

	AliTRDfeeParam *feeParam = AliTRDfeeParam::Instance();  
	// Signal for regular pads
	for (Int_t irow = 0; irow < nRow; irow++ ) {
	  for (Int_t icol = 0; icol < nCol; icol++ ) {

	    Int_t rob = feeParam->GetROBfromPad(irow,icol);

	    for(Int_t k = 0; k < nbtimebin; k++){
	      //	      printf(" row %d \t col %d \t timebin %d \t --> signal %d \n",irow,icol,k,signal);
	      Short_t signal = 999;
	      signal = (Short_t) digits->GetData(irow,icol,k);

	      if(signal==999) continue;
	      if(rob%2==0) { chB->Fill(det,signal); }
	      else {chA->Fill(det,signal); }
	    } // loop: ntimebin
	  } // loop: nCol
	} //loop: nRow
      } // if: hasdata
    } // loop: det
    loader->UnloadDigits();  
  }// event

  // Display the detector matrix
  TCanvas *c = new TCanvas("c","",50,50,900,600);
  c->Divide(2,1);

  chA->SetAxisRange(detA,detB-1,"X");
  chA->SetTitle("HalfChamberSide A");
  chA->SetXTitle("Detector number");
  chA->SetYTitle("charge deposit [a.u]");
  chB->SetAxisRange(detA,detB-1,"X");
  chB->SetTitle("HalfChamberSide B");
  chB->SetXTitle("Detector number");
  chB->SetYTitle("charge deposit [a.u]");

  c->cd(1);
  chA->Draw("COLZ");

  c->cd(2);
  chB->Draw("COLZ");

  //c->SaveAs("ChargeDeposit.pdf");
}

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