ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include<iostream.h>
#include<TROOT.h>
#include<TArrayI.h>
#include<TBranch.h>
#include<TCanvas.h>
#include<TClassTable.h>
#include<TClonesArray.h>
#include<TFile.h>
#include<TH1.h>
#include<TH2.h>
#include<TLegend.h>
#include<TObject.h>
#include<TObjArray.h>
#include<TTree.h>
#include <AliRun.h>
#include <AliITS.h>
#include <AliITSgeom.h>
#include <AliITSDetType.h>
#include <AliITSRecPoint.h>
#include <AliITSdigit.h>
#include <AliITShit.h>
#include <AliITSmodule.h> 
#include <AliITSsegmentation.h>
#include <AliITSsegmentationSPD.h> 
#include <AliITSsegmentationSDD.h>
#include <AliITSsegmentationSSD.h>
#endif

Int_t GetModuleHits (TObject* its, Int_t ID, Float_t*& X, Float_t*& Y, Float_t*& Z, Bool_t*& St);
Int_t GetModuleRecPoints (TObject *its, Int_t ID, Float_t*& X, Float_t*& Z, Int_t isfastpoints);
Int_t GetModuleDigits(TObject *its, Int_t ID, Int_t dtype, Float_t*& X, Float_t*& Z);

Int_t AliITSReadPlotData( Int_t evNum = 0, char *filename = "galice.root", TString FileDigits="galice.root", TString FileRec="galice.root", Int_t isfastpoints = 0) {

  /*********************************************************************
   *                                                                   *
   *  Macro used to read hits, digits and recpoints for a module       *
   *  It draws 3 TH2Fs where stores the 2-D coordinates of these       *
   *  data for a specified module (for which the macro asks when       *
   *  it starts, with some checks to avoid wrong detector coords.      *
   *                                                                   *
   *  Only a little 'experimental' warning:                            *
   *  with all the tests I have made, I wasn't able to plot the        *
   *  digits fo the 5th layer...                                       *
   *  I skipped this problem with an alert to beware th user, while    *
   *  in this situation the macro plots only recpoints and hits        *
   *                                                                   *
   *  Author: Alberto Pulvirenti                                       *
   *                                                                   *
   *********************************************************************/

	
  // First of all, here are put some variable declarations
  // that are useful in the following part:
  Int_t nparticles; // number of particles
  // ITS module coordinates [layer = 1, ladder = 2, det = 3] and absolute ID[0] of module [0]
  TArrayI ID(4);
  Int_t nmodules, dtype; // Total number of modules and module type (SSD, SPD, SDD)
  Float_t *x = 0, *y = 0, *z = 0; // Arrays where to store read coords
  Bool_t *St = 0; // Status of the track (hits only)
  /*
	// It's necessary to load the gAlice shared libs
	// if they aren't already stored in memory...
	if (gClassTable->GetID("AliRun") < 0) {
   	gROOT->LoadMacro("loadlibs.C");
    loadlibs();
	}
    // Anyway, this macro needs to read a gAlice file, so it
    // clears the gAlice object if there is already one in memory...
    else {
  */
  if(gAlice){
    delete gAlice;
    gAlice = 0;
  }
  //	}

  // Now is opened the Root input file containing Geometry, Kine and Hits
  // by default its name must be "galice.root".
  // When the file is opened, its contens are shown.
  TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
  if (!file) file = new TFile(filename);
  file->ls();
	
  // Then, the macro gets the AliRun object from file.
  // If this object is not present, an error occurs
  // and the execution is stopped.
  // Anyway, this operation needs some time,
  // don't worry about an apparent absence of output and actions...
  cout << "\nSearching in '" << filename << "' for an AliRun object ... " << flush;
  gAlice = (AliRun*)file->Get("gAlice");
  if (gAlice)
    cout << "FOUND!" << endl;
  else {
    cout<<"NOT FOUND! The Macro can't continue!" << endl;
    return 0;
  }
  if(!(FileDigits.Data() == filename)){
    gAlice->SetTreeDFileName(FileDigits);
  }
  if(!(FileRec.Data() == filename)){
    gAlice->SetTreeRFileName(FileRec);
  }
	
  // Then, the macro selects the event number specified. Default is 0.
  nparticles = gAlice->GetEvent(evNum);
  cout << "\nNumber of particles   = " << nparticles << endl;
  if (!nparticles) {
    cout << "With no particles I can't do much... Goodbye!" << endl;
    return 0;
  }
	
  // The next step is filling the ITS from the AliRun object.
  AliITS *ITS = (AliITS*)gAlice->GetModule("ITS");
  ITS->InitModules(-1, nmodules);
  cout << "Number of ITS modules = " << nmodules << endl;
  cout << "\nFilling modules (it takes a while, now)..." << flush;
  ITS->FillModules(0, 0, nmodules, " ", " ");
  cout << "DONE!" << endl;
  AliITSgeom *gm = ITS->GetITSgeom();
  //	AliITSDetType *det = ITS->DetType(dtype);	
  //	AliITSsegmentation *seg = det->GetSegmentationModel();	
	
  for(;;) {

    // Input phase.
    // The macro asks if the user wants to put a detector ID[0]
    // or prefers to input layer, ladder and detector.
    for (Int_t i = 0; i < 4; i++) ID[i] = -1;
    Int_t answ;
    do {
      cout << "\nSelection modes:" << endl;
      cout << "1) by layer - ladder - detector numbers" << endl;
      cout << "2) by unique detector ID" << endl;
      cout << "0) exit macro" << endl;
      cout << "\nEnter your choice: ";
      cin >> answ;
    } while (answ < 0 || answ > 2);
    switch (answ) {
    case 0:
      // input = 0 ---> EXIT
      return 0;
      break;
    case 1:
      // input = 1 ---> SELECTION BY COORD
      do {
        cout << "\nLayer number [1-6, 0 to exit]: ";
        cin >> ID[1];
        if (!ID[1]) return 0;
      } while (ID[1] < 0 || ID[1] > 6);
				
      // Detector type: 0 --> SPD, 1 --> SDD, 2 --> SSD.
      // Layer 1,2 --> 0 / Layer 3,4 --> 1 / Layer 5,6 --> 2
      dtype = (ID[1] - 1) / 2;
				
      // Once fixed the layer number, the macro calculates the max number
      // for ladder and detector from geometry, and accepts only suitable values.
      do {
        ID[2] = gm->GetNladders(ID[1]);
        cout << "Ladder number [1-" << ID[2] << ", 0 to exit]: ";
        cin >> ID[2];
        if (!ID[2]) return 0;
      } while (ID[2] < 0 || ID[2] > gm->GetNladders(ID[1]));
      do {
        ID[3] = gm->GetNdetectors(ID[1]);
        cout << "Detector number [1-" << ID[3] << ", 0 to exit]: ";
        cin >> ID[3];
        if (!ID[3]) return 0;
      } while (ID[3] < 0 || ID[3] > gm->GetNdetectors(ID[1]));
      break;
    case 2:
      // input = 2 ---> SELECTION BY ID[0]
      do {
        ID[0] = gm->GetIndexMax();
        cout << "\n Detector ID number [0-" << ID[0]-1 << ", -1 to exit]: ";
        cin >> ID[0];
        ID[0]++;
        if (ID[0] == -1) return 0;
      } while (ID[0] < 0 || ID[0] > gm->GetIndexMax());
      break;
    };

    if (ID[0] == -1)
      // If ID[0] = -1 the chioce was by coords, so it's necessary to assign the ID:
      ID[0] = gm->GetModuleIndex(ID[1], ID[2], ID[3]);
    else {	
      // Else we must get the layer, ladder and detector by the ID;
      // ...but first we must remember that the ID goest from 0 to NModules - 1!
      ID[0]--;
      ID[1] = ITS->GetModule(ID[0])->GetLayer();
      ID[2] = ITS->GetModule(ID[0])->GetLadder();
      ID[3] = ITS->GetModule(ID[0])->GetDet();
    }
				
    // Defines the histograms inside the `for' cycle, so they are destroyed at the end
    // of every read sequqnce, in order to mek another withour segmentation faults
    Text_t msg[250];
    Float_t xm = 0.0, zm = 0.0;
    dtype = (ID[1] - 1) / 2;
    switch (dtype) {
    case 0: xm = 1.5; zm = 7.0; break;
    case 1: xm = 7.5; zm = 8.0; break;
    case 2: xm = 7.5; zm = 4.5; break;
    }
    sprintf(msg, "Module index=%d lay=%d lad=%d det=%d", ID[0], ID[1], ID[2], ID[3]);
    TH2F *hhits = new TH2F("hhits", msg, 500, -xm, xm, 500, -zm, zm);     // Histogram of hits
    TH2F *hrecs = new TH2F("hrecs", msg, 500, -xm, xm, 500, -zm, zm);     // Histogram of recpoints
    TH2F *hdigits = new TH2F("hdigits", msg, 500, -xm, xm, 500, -zm, zm); // Histogram of digits
		
    cout << endl;
		
    // Reads hits...
    Int_t tmpint = ID[0];
    Int_t hits = GetModuleHits(ITS, tmpint, x, y, z, St);
    if (!hits) {
      cout << "No hits in module!" << endl;
      continue;
    }
    else
      cout << "Hits scanned..." << endl;
    for (Int_t i = 0; i < hits; i++) if (!St[i]) hhits->Fill(x[i], z[i]);
		
    // Reads recpoints...
    Int_t recs = GetModuleRecPoints(ITS, ID[0], x, z, isfastpoints);
    if (!recs) {
      cout << "No recpoints in module!" << endl;
      continue;
    }
    else
      cout << "Recpoints scanned..." << endl;
    for (Int_t i = 0; i < recs; i++) hrecs->Fill(x[i], z[i]);
		
    // Reads digits...
    Int_t digits = GetModuleDigits(ITS, ID[0], dtype, x, z);
    if (!digits) {
      cout << "No digits in module!" << endl;
      //continue;
    }
    else
      cout << "Digits scanned..." << endl;
    for (Int_t i = 0; i < digits; i++) hdigits->Fill(x[i], z[i]);

    // Draws read data...
    // HITS -------> red (2) crosses.
    // DIGITS -----> green (8) boxes.
    // REC-POINTS -> blue (4) St. Andrew's crosses.

    TCanvas *viewer = new TCanvas("viewer", "Module viewer canvas", 0, 0, 800, 800);
    viewer->cd();
		
    hdigits->SetMarkerStyle(25);
    hdigits->SetMarkerColor(8);
    hdigits->SetMarkerSize(2);
    hdigits->SetStats(kFALSE);
    hdigits->SetXTitle("Local X (cm)");
    hdigits->SetYTitle("Local Z (cm)");
    hdigits->Draw();
		
    hhits->SetMarkerStyle(5);
    hhits->SetMarkerColor(2);
    hhits->SetMarkerSize(3);
    hhits->SetStats(kFALSE);
    hhits->Draw("same");
	
    hrecs->SetMarkerStyle(2);
    hrecs->SetMarkerColor(4);
    hrecs->SetMarkerSize(3);
    hrecs->SetStats(kFALSE);
    hrecs->Draw("same");
		
    TLegend *legend = new TLegend(0.7, 0.8, 0.9, 0.9);
    legend->SetMargin(0.2);
    legend->AddEntry(hhits, "hits","P");
    legend->AddEntry(hrecs, "recpoints","P");
    legend->AddEntry(hdigits, "digits","P");
    legend->SetTextSizePixels(14);
    legend->Draw();
		
    viewer->Update();
		
		
    Text_t fname[250],ans;
    cout << "Do you want to save the current canvas on a file (y/n) ? ";
    cin >> ans;
    if(ans == 'y' || ans == 'Y') {
      cout << "Enter filename: ";
      cin >> fname;
      TString *control = new TString(fname);
      Bool_t ok=control->Contains(".C") || control->Contains(".root") || control->Contains(".ps") || control->Contains(".eps") || control->Contains(".gif");
      if(!ok){ 
        cout << "File extension is not recognized. The canvas will be saved as Postscript file";
        strcat(fname,".ps");
      }  
      viewer->SaveAs(fname);
    }
  }
	
  cout << "Done. Goodbye" << endl;
  return 0;
}

Int_t GetModuleHits(TObject* its, Int_t ID, Float_t*& X, Float_t*& Y, Float_t*& Z, Bool_t*& St) {	
  // First of all, the macro selects the specified module,
  // then gets the array of hits in it and their number.
  AliITS *ITS = (AliITS*) its;
  AliITSmodule *module = ITS->GetModule(ID);
  TObjArray *hits_array = module->GetHits();
  Int_t hits_num = hits_array->GetEntriesFast();
	
	// Now, if this count returns 0, there's nothing to do,
	// while, if it doesn't, the first thing to do is dimensioning
	// the coordinate arrays, and then the loop can start.
  if (!hits_num)
    return 0;
  else {
    if (X) delete [] X;	
    if (Y) delete [] Y;
    if (Z) delete [] Z;
    if (St) delete [] St;
    X = new Float_t[hits_num];
    Y = new Float_t[hits_num];
    Z = new Float_t[hits_num];
    St = new Bool_t[hits_num];
  }

  for (Int_t j = 0; j < hits_num; j++) {
    AliITShit *hit = (AliITShit*) hits_array->At(j);
    X[j]  = hit->GetXL();
    Y[j]  = hit->GetYL();
    Z[j]  = hit->GetZL();
    St[j] = hit->StatusEntering();
  }
  return hits_num;
}

Int_t GetModuleRecPoints (TObject *its, Int_t ID, Float_t*& X, Float_t*& Z, Int_t isfastpoints) {
	
  // First of all, the macro selects the specified module,
  // then gets the array of recpoints in it and their number.
  AliITS *ITS = (AliITS*) its;
  TTree *TR = gAlice->TreeR();
  ITS->ResetRecPoints();
	
  TClonesArray *recs_array = ITS->RecPoints();

  TBranch *branch = 0;
  if(TR && recs_array){
    if(isfastpoints==1){
      branch = gAlice->TreeR()->GetBranch("ITSRecPointsF");
      cout<<"using fast points\n";
    }
    else {
      branch = gAlice->TreeR()->GetBranch("ITSRecPoints");
    }
    if(branch)branch->SetAddress(&recs_array);
  }
        
  branch->GetEvent(ID);

  Int_t recs_num = recs_array->GetEntries();


  // Now, if this count returns 0, there's nothing to do,
  // while, if it doesn't, the first thing to do is dimensioning
  // the coordinate and energy loss arrays, and then the loop can start.
  if (!recs_num)
    return 0;
  else {
    if (X) delete [] X;	
    if (Z) delete [] Z;
    X = new Float_t[recs_num];
    Z = new Float_t[recs_num];
  }
  for(Int_t j = 0; j < recs_num; j++) {
    AliITSRecPoint *recp = (AliITSRecPoint*)recs_array->At(j);
    X[j] = recp->GetX();
    Z[j] = recp->GetZ();
  }
  return recs_num;	
}

Int_t GetModuleDigits(TObject *its, Int_t ID, Int_t dtype, Float_t*& X, Float_t*& Z) {

  // First of all, the macro selects the specified module,
  // then gets the array of recpoints in it and their number.
  AliITSdigit *digit;
  AliITS *ITS = (AliITS*)its;
  TTree *TD = gAlice->TreeD();
  ITS->ResetDigits();
  TD->GetEvent(ID);
  TClonesArray *digits_array = ITS->DigitsAddress(dtype);
  AliITSgeom *gm = ITS->GetITSgeom();	
  AliITSDetType *det = ITS->DetType(dtype);	
  AliITSsegmentation *seg = det->GetSegmentationModel();	
  TArrayI ssdone(5000);  // used to match p and n side digits of strips
  TArrayI pair(5000);    // as above 	
  Int_t digits_num = digits_array->GetEntries();
  // Now, if this count returns 0, there's nothing to do,
  // while, if it doesn't, the first thing to do is dimensioning
  // the coordinate and energy loss arrays, and then the loop can start.

  if(dtype==2){
    Int_t layer, ladder, detec;
    gm->GetModuleId(ID,layer,ladder,detec);
    seg->SetLayer(layer);
  }

  if (!digits_num)
    return 0;
  else {
    cout << "Digits to scan: " << digits_num << endl;
    if (X) delete [] X;			
    if (Z) delete [] Z;
    X = new Float_t[digits_num];		
    Z = new Float_t[digits_num];
  }
	
  // Get the coordinates of the module
  if (dtype == 2) {
    for (Int_t j = 0; j < digits_num; j++) {
      ssdone[j] = 0;			
      pair[j] = 0;
    }
  }
  //    AliITSdigit *digit;
  for (Int_t j = 0; j < digits_num; j++) {
    digit = (AliITSdigit*)digits_array->UncheckedAt(j);
    Int_t iz=digit->fCoord1;  // cell number z
    Int_t ix=digit->fCoord2;  // cell number x
    // Get local coordinates of the element (microns)
    // ******************************* PARTE CORRETTA ***************************************
    if(dtype < 2) {
      Float_t xx, zz; // aggiunta
      seg->DetToLocal(ix, iz, xx, zz);
      X[j] = xx; // aggiunta
      Z[j] = zz; // aggiunta
    }
    // ******************************* FINE PARTE CORRETTA ***************************************
    else {
      // SSD: if iz==0 ---> N side; if iz==1 P side
      if (ssdone[j] == 0) {
        ssdone[j]=1;
        pair[j]=-1;
        Bool_t pside = (iz == 1);
        Bool_t impaired = kTRUE;
        Int_t pstrip = 0;
        Int_t nstrip = 0;
        if (pside) pstrip = ix; else nstrip = ix;
        for (Int_t k = 0; k < digits_num; k++) {
          if (ssdone[k] == 0 && impaired) {
            AliITSdigitSSD *sdigit=(AliITSdigitSSD*)digits_array->UncheckedAt(k);
            if (sdigit->fCoord1 != iz && sdigit->GetTracks()[0] == digit->GetTracks()[0]) {
              ssdone[k]=2;
              pair[j]=k;
              if (pside) nstrip = sdigit->fCoord2; else pstrip = sdigit->fCoord2;
              impaired=kFALSE;
            }
          }
        }
        if (!impaired) seg->GetPadCxz(pstrip, nstrip, X[j], Z[j]);
        X[j] /= 10000.0;  // convert microns to cm
        Z[j] /= 10000.0;  // convert microns to cm
      }
    }
  }
  return digits_num;
} 










 AliITSReadPlotData.C:1
 AliITSReadPlotData.C:2
 AliITSReadPlotData.C:3
 AliITSReadPlotData.C:4
 AliITSReadPlotData.C:5
 AliITSReadPlotData.C:6
 AliITSReadPlotData.C:7
 AliITSReadPlotData.C:8
 AliITSReadPlotData.C:9
 AliITSReadPlotData.C:10
 AliITSReadPlotData.C:11
 AliITSReadPlotData.C:12
 AliITSReadPlotData.C:13
 AliITSReadPlotData.C:14
 AliITSReadPlotData.C:15
 AliITSReadPlotData.C:16
 AliITSReadPlotData.C:17
 AliITSReadPlotData.C:18
 AliITSReadPlotData.C:19
 AliITSReadPlotData.C:20
 AliITSReadPlotData.C:21
 AliITSReadPlotData.C:22
 AliITSReadPlotData.C:23
 AliITSReadPlotData.C:24
 AliITSReadPlotData.C:25
 AliITSReadPlotData.C:26
 AliITSReadPlotData.C:27
 AliITSReadPlotData.C:28
 AliITSReadPlotData.C:29
 AliITSReadPlotData.C:30
 AliITSReadPlotData.C:31
 AliITSReadPlotData.C:32
 AliITSReadPlotData.C:33
 AliITSReadPlotData.C:34
 AliITSReadPlotData.C:35
 AliITSReadPlotData.C:36
 AliITSReadPlotData.C:37
 AliITSReadPlotData.C:38
 AliITSReadPlotData.C:39
 AliITSReadPlotData.C:40
 AliITSReadPlotData.C:41
 AliITSReadPlotData.C:42
 AliITSReadPlotData.C:43
 AliITSReadPlotData.C:44
 AliITSReadPlotData.C:45
 AliITSReadPlotData.C:46
 AliITSReadPlotData.C:47
 AliITSReadPlotData.C:48
 AliITSReadPlotData.C:49
 AliITSReadPlotData.C:50
 AliITSReadPlotData.C:51
 AliITSReadPlotData.C:52
 AliITSReadPlotData.C:53
 AliITSReadPlotData.C:54
 AliITSReadPlotData.C:55
 AliITSReadPlotData.C:56
 AliITSReadPlotData.C:57
 AliITSReadPlotData.C:58
 AliITSReadPlotData.C:59
 AliITSReadPlotData.C:60
 AliITSReadPlotData.C:61
 AliITSReadPlotData.C:62
 AliITSReadPlotData.C:63
 AliITSReadPlotData.C:64
 AliITSReadPlotData.C:65
 AliITSReadPlotData.C:66
 AliITSReadPlotData.C:67
 AliITSReadPlotData.C:68
 AliITSReadPlotData.C:69
 AliITSReadPlotData.C:70
 AliITSReadPlotData.C:71
 AliITSReadPlotData.C:72
 AliITSReadPlotData.C:73
 AliITSReadPlotData.C:74
 AliITSReadPlotData.C:75
 AliITSReadPlotData.C:76
 AliITSReadPlotData.C:77
 AliITSReadPlotData.C:78
 AliITSReadPlotData.C:79
 AliITSReadPlotData.C:80
 AliITSReadPlotData.C:81
 AliITSReadPlotData.C:82
 AliITSReadPlotData.C:83
 AliITSReadPlotData.C:84
 AliITSReadPlotData.C:85
 AliITSReadPlotData.C:86
 AliITSReadPlotData.C:87
 AliITSReadPlotData.C:88
 AliITSReadPlotData.C:89
 AliITSReadPlotData.C:90
 AliITSReadPlotData.C:91
 AliITSReadPlotData.C:92
 AliITSReadPlotData.C:93
 AliITSReadPlotData.C:94
 AliITSReadPlotData.C:95
 AliITSReadPlotData.C:96
 AliITSReadPlotData.C:97
 AliITSReadPlotData.C:98
 AliITSReadPlotData.C:99
 AliITSReadPlotData.C:100
 AliITSReadPlotData.C:101
 AliITSReadPlotData.C:102
 AliITSReadPlotData.C:103
 AliITSReadPlotData.C:104
 AliITSReadPlotData.C:105
 AliITSReadPlotData.C:106
 AliITSReadPlotData.C:107
 AliITSReadPlotData.C:108
 AliITSReadPlotData.C:109
 AliITSReadPlotData.C:110
 AliITSReadPlotData.C:111
 AliITSReadPlotData.C:112
 AliITSReadPlotData.C:113
 AliITSReadPlotData.C:114
 AliITSReadPlotData.C:115
 AliITSReadPlotData.C:116
 AliITSReadPlotData.C:117
 AliITSReadPlotData.C:118
 AliITSReadPlotData.C:119
 AliITSReadPlotData.C:120
 AliITSReadPlotData.C:121
 AliITSReadPlotData.C:122
 AliITSReadPlotData.C:123
 AliITSReadPlotData.C:124
 AliITSReadPlotData.C:125
 AliITSReadPlotData.C:126
 AliITSReadPlotData.C:127
 AliITSReadPlotData.C:128
 AliITSReadPlotData.C:129
 AliITSReadPlotData.C:130
 AliITSReadPlotData.C:131
 AliITSReadPlotData.C:132
 AliITSReadPlotData.C:133
 AliITSReadPlotData.C:134
 AliITSReadPlotData.C:135
 AliITSReadPlotData.C:136
 AliITSReadPlotData.C:137
 AliITSReadPlotData.C:138
 AliITSReadPlotData.C:139
 AliITSReadPlotData.C:140
 AliITSReadPlotData.C:141
 AliITSReadPlotData.C:142
 AliITSReadPlotData.C:143
 AliITSReadPlotData.C:144
 AliITSReadPlotData.C:145
 AliITSReadPlotData.C:146
 AliITSReadPlotData.C:147
 AliITSReadPlotData.C:148
 AliITSReadPlotData.C:149
 AliITSReadPlotData.C:150
 AliITSReadPlotData.C:151
 AliITSReadPlotData.C:152
 AliITSReadPlotData.C:153
 AliITSReadPlotData.C:154
 AliITSReadPlotData.C:155
 AliITSReadPlotData.C:156
 AliITSReadPlotData.C:157
 AliITSReadPlotData.C:158
 AliITSReadPlotData.C:159
 AliITSReadPlotData.C:160
 AliITSReadPlotData.C:161
 AliITSReadPlotData.C:162
 AliITSReadPlotData.C:163
 AliITSReadPlotData.C:164
 AliITSReadPlotData.C:165
 AliITSReadPlotData.C:166
 AliITSReadPlotData.C:167
 AliITSReadPlotData.C:168
 AliITSReadPlotData.C:169
 AliITSReadPlotData.C:170
 AliITSReadPlotData.C:171
 AliITSReadPlotData.C:172
 AliITSReadPlotData.C:173
 AliITSReadPlotData.C:174
 AliITSReadPlotData.C:175
 AliITSReadPlotData.C:176
 AliITSReadPlotData.C:177
 AliITSReadPlotData.C:178
 AliITSReadPlotData.C:179
 AliITSReadPlotData.C:180
 AliITSReadPlotData.C:181
 AliITSReadPlotData.C:182
 AliITSReadPlotData.C:183
 AliITSReadPlotData.C:184
 AliITSReadPlotData.C:185
 AliITSReadPlotData.C:186
 AliITSReadPlotData.C:187
 AliITSReadPlotData.C:188
 AliITSReadPlotData.C:189
 AliITSReadPlotData.C:190
 AliITSReadPlotData.C:191
 AliITSReadPlotData.C:192
 AliITSReadPlotData.C:193
 AliITSReadPlotData.C:194
 AliITSReadPlotData.C:195
 AliITSReadPlotData.C:196
 AliITSReadPlotData.C:197
 AliITSReadPlotData.C:198
 AliITSReadPlotData.C:199
 AliITSReadPlotData.C:200
 AliITSReadPlotData.C:201
 AliITSReadPlotData.C:202
 AliITSReadPlotData.C:203
 AliITSReadPlotData.C:204
 AliITSReadPlotData.C:205
 AliITSReadPlotData.C:206
 AliITSReadPlotData.C:207
 AliITSReadPlotData.C:208
 AliITSReadPlotData.C:209
 AliITSReadPlotData.C:210
 AliITSReadPlotData.C:211
 AliITSReadPlotData.C:212
 AliITSReadPlotData.C:213
 AliITSReadPlotData.C:214
 AliITSReadPlotData.C:215
 AliITSReadPlotData.C:216
 AliITSReadPlotData.C:217
 AliITSReadPlotData.C:218
 AliITSReadPlotData.C:219
 AliITSReadPlotData.C:220
 AliITSReadPlotData.C:221
 AliITSReadPlotData.C:222
 AliITSReadPlotData.C:223
 AliITSReadPlotData.C:224
 AliITSReadPlotData.C:225
 AliITSReadPlotData.C:226
 AliITSReadPlotData.C:227
 AliITSReadPlotData.C:228
 AliITSReadPlotData.C:229
 AliITSReadPlotData.C:230
 AliITSReadPlotData.C:231
 AliITSReadPlotData.C:232
 AliITSReadPlotData.C:233
 AliITSReadPlotData.C:234
 AliITSReadPlotData.C:235
 AliITSReadPlotData.C:236
 AliITSReadPlotData.C:237
 AliITSReadPlotData.C:238
 AliITSReadPlotData.C:239
 AliITSReadPlotData.C:240
 AliITSReadPlotData.C:241
 AliITSReadPlotData.C:242
 AliITSReadPlotData.C:243
 AliITSReadPlotData.C:244
 AliITSReadPlotData.C:245
 AliITSReadPlotData.C:246
 AliITSReadPlotData.C:247
 AliITSReadPlotData.C:248
 AliITSReadPlotData.C:249
 AliITSReadPlotData.C:250
 AliITSReadPlotData.C:251
 AliITSReadPlotData.C:252
 AliITSReadPlotData.C:253
 AliITSReadPlotData.C:254
 AliITSReadPlotData.C:255
 AliITSReadPlotData.C:256
 AliITSReadPlotData.C:257
 AliITSReadPlotData.C:258
 AliITSReadPlotData.C:259
 AliITSReadPlotData.C:260
 AliITSReadPlotData.C:261
 AliITSReadPlotData.C:262
 AliITSReadPlotData.C:263
 AliITSReadPlotData.C:264
 AliITSReadPlotData.C:265
 AliITSReadPlotData.C:266
 AliITSReadPlotData.C:267
 AliITSReadPlotData.C:268
 AliITSReadPlotData.C:269
 AliITSReadPlotData.C:270
 AliITSReadPlotData.C:271
 AliITSReadPlotData.C:272
 AliITSReadPlotData.C:273
 AliITSReadPlotData.C:274
 AliITSReadPlotData.C:275
 AliITSReadPlotData.C:276
 AliITSReadPlotData.C:277
 AliITSReadPlotData.C:278
 AliITSReadPlotData.C:279
 AliITSReadPlotData.C:280
 AliITSReadPlotData.C:281
 AliITSReadPlotData.C:282
 AliITSReadPlotData.C:283
 AliITSReadPlotData.C:284
 AliITSReadPlotData.C:285
 AliITSReadPlotData.C:286
 AliITSReadPlotData.C:287
 AliITSReadPlotData.C:288
 AliITSReadPlotData.C:289
 AliITSReadPlotData.C:290
 AliITSReadPlotData.C:291
 AliITSReadPlotData.C:292
 AliITSReadPlotData.C:293
 AliITSReadPlotData.C:294
 AliITSReadPlotData.C:295
 AliITSReadPlotData.C:296
 AliITSReadPlotData.C:297
 AliITSReadPlotData.C:298
 AliITSReadPlotData.C:299
 AliITSReadPlotData.C:300
 AliITSReadPlotData.C:301
 AliITSReadPlotData.C:302
 AliITSReadPlotData.C:303
 AliITSReadPlotData.C:304
 AliITSReadPlotData.C:305
 AliITSReadPlotData.C:306
 AliITSReadPlotData.C:307
 AliITSReadPlotData.C:308
 AliITSReadPlotData.C:309
 AliITSReadPlotData.C:310
 AliITSReadPlotData.C:311
 AliITSReadPlotData.C:312
 AliITSReadPlotData.C:313
 AliITSReadPlotData.C:314
 AliITSReadPlotData.C:315
 AliITSReadPlotData.C:316
 AliITSReadPlotData.C:317
 AliITSReadPlotData.C:318
 AliITSReadPlotData.C:319
 AliITSReadPlotData.C:320
 AliITSReadPlotData.C:321
 AliITSReadPlotData.C:322
 AliITSReadPlotData.C:323
 AliITSReadPlotData.C:324
 AliITSReadPlotData.C:325
 AliITSReadPlotData.C:326
 AliITSReadPlotData.C:327
 AliITSReadPlotData.C:328
 AliITSReadPlotData.C:329
 AliITSReadPlotData.C:330
 AliITSReadPlotData.C:331
 AliITSReadPlotData.C:332
 AliITSReadPlotData.C:333
 AliITSReadPlotData.C:334
 AliITSReadPlotData.C:335
 AliITSReadPlotData.C:336
 AliITSReadPlotData.C:337
 AliITSReadPlotData.C:338
 AliITSReadPlotData.C:339
 AliITSReadPlotData.C:340
 AliITSReadPlotData.C:341
 AliITSReadPlotData.C:342
 AliITSReadPlotData.C:343
 AliITSReadPlotData.C:344
 AliITSReadPlotData.C:345
 AliITSReadPlotData.C:346
 AliITSReadPlotData.C:347
 AliITSReadPlotData.C:348
 AliITSReadPlotData.C:349
 AliITSReadPlotData.C:350
 AliITSReadPlotData.C:351
 AliITSReadPlotData.C:352
 AliITSReadPlotData.C:353
 AliITSReadPlotData.C:354
 AliITSReadPlotData.C:355
 AliITSReadPlotData.C:356
 AliITSReadPlotData.C:357
 AliITSReadPlotData.C:358
 AliITSReadPlotData.C:359
 AliITSReadPlotData.C:360
 AliITSReadPlotData.C:361
 AliITSReadPlotData.C:362
 AliITSReadPlotData.C:363
 AliITSReadPlotData.C:364
 AliITSReadPlotData.C:365
 AliITSReadPlotData.C:366
 AliITSReadPlotData.C:367
 AliITSReadPlotData.C:368
 AliITSReadPlotData.C:369
 AliITSReadPlotData.C:370
 AliITSReadPlotData.C:371
 AliITSReadPlotData.C:372
 AliITSReadPlotData.C:373
 AliITSReadPlotData.C:374
 AliITSReadPlotData.C:375
 AliITSReadPlotData.C:376
 AliITSReadPlotData.C:377
 AliITSReadPlotData.C:378
 AliITSReadPlotData.C:379
 AliITSReadPlotData.C:380
 AliITSReadPlotData.C:381
 AliITSReadPlotData.C:382
 AliITSReadPlotData.C:383
 AliITSReadPlotData.C:384
 AliITSReadPlotData.C:385
 AliITSReadPlotData.C:386
 AliITSReadPlotData.C:387
 AliITSReadPlotData.C:388
 AliITSReadPlotData.C:389
 AliITSReadPlotData.C:390
 AliITSReadPlotData.C:391
 AliITSReadPlotData.C:392
 AliITSReadPlotData.C:393
 AliITSReadPlotData.C:394
 AliITSReadPlotData.C:395
 AliITSReadPlotData.C:396
 AliITSReadPlotData.C:397
 AliITSReadPlotData.C:398
 AliITSReadPlotData.C:399
 AliITSReadPlotData.C:400
 AliITSReadPlotData.C:401
 AliITSReadPlotData.C:402
 AliITSReadPlotData.C:403
 AliITSReadPlotData.C:404
 AliITSReadPlotData.C:405
 AliITSReadPlotData.C:406
 AliITSReadPlotData.C:407
 AliITSReadPlotData.C:408
 AliITSReadPlotData.C:409
 AliITSReadPlotData.C:410
 AliITSReadPlotData.C:411
 AliITSReadPlotData.C:412
 AliITSReadPlotData.C:413
 AliITSReadPlotData.C:414
 AliITSReadPlotData.C:415
 AliITSReadPlotData.C:416
 AliITSReadPlotData.C:417
 AliITSReadPlotData.C:418
 AliITSReadPlotData.C:419
 AliITSReadPlotData.C:420
 AliITSReadPlotData.C:421
 AliITSReadPlotData.C:422
 AliITSReadPlotData.C:423
 AliITSReadPlotData.C:424
 AliITSReadPlotData.C:425
 AliITSReadPlotData.C:426
 AliITSReadPlotData.C:427
 AliITSReadPlotData.C:428
 AliITSReadPlotData.C:429
 AliITSReadPlotData.C:430
 AliITSReadPlotData.C:431
 AliITSReadPlotData.C:432
 AliITSReadPlotData.C:433
 AliITSReadPlotData.C:434
 AliITSReadPlotData.C:435
 AliITSReadPlotData.C:436
 AliITSReadPlotData.C:437
 AliITSReadPlotData.C:438
 AliITSReadPlotData.C:439
 AliITSReadPlotData.C:440
 AliITSReadPlotData.C:441
 AliITSReadPlotData.C:442
 AliITSReadPlotData.C:443
 AliITSReadPlotData.C:444
 AliITSReadPlotData.C:445
 AliITSReadPlotData.C:446
 AliITSReadPlotData.C:447
 AliITSReadPlotData.C:448
 AliITSReadPlotData.C:449
 AliITSReadPlotData.C:450
 AliITSReadPlotData.C:451
 AliITSReadPlotData.C:452
 AliITSReadPlotData.C:453
 AliITSReadPlotData.C:454
 AliITSReadPlotData.C:455
 AliITSReadPlotData.C:456
 AliITSReadPlotData.C:457
 AliITSReadPlotData.C:458
 AliITSReadPlotData.C:459
 AliITSReadPlotData.C:460
 AliITSReadPlotData.C:461
 AliITSReadPlotData.C:462
 AliITSReadPlotData.C:463
 AliITSReadPlotData.C:464
 AliITSReadPlotData.C:465
 AliITSReadPlotData.C:466
 AliITSReadPlotData.C:467
 AliITSReadPlotData.C:468
 AliITSReadPlotData.C:469
 AliITSReadPlotData.C:470
 AliITSReadPlotData.C:471
 AliITSReadPlotData.C:472
 AliITSReadPlotData.C:473
 AliITSReadPlotData.C:474
 AliITSReadPlotData.C:475
 AliITSReadPlotData.C:476
 AliITSReadPlotData.C:477
 AliITSReadPlotData.C:478
 AliITSReadPlotData.C:479