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: AliTRDqaRecPoints.cxx 23387 2008-01-17 17:25:16Z cblume $ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  Produces the data needed to calculate the quality assurance.          //
//  All data must be mergeable objects.                                   //
//                                                                        //
//  Author:                                                               //
//    Sylwester Radomski (radomski@physi.uni-heidelberg.de)               //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

// --- ROOT system ---
#include <TClonesArray.h>
#include <TFile.h> 
#include <TH1D.h> 
#include <TH2D.h>
#include <TH3D.h>
#include <TProfile.h>
#include <TF1.h>
#include <TCanvas.h>

// --- AliRoot header files ---
#include "AliESDEvent.h"
#include "AliLog.h"
#include "AliTRDcluster.h"
#include "AliTRDqaRecPoints.h"
#include "AliTRDgeometry.h"

#include "AliQAChecker.h"

ClassImp(AliTRDqaRecPoints)

//____________________________________________________________________________ 

AliTRDqaRecPoints::AliTRDqaRecPoints() : 
  TObject(),
  fnEvents(0),
  fHist(0),
  fnPad(0),
  fRef(0)
{
  //
  // Default constructor
  //

  for (Int_t i = 0; i < 540; i++) {
    fRefHist[i] = 0x0;
  }

}

//____________________________________________________________________________ 

AliTRDqaRecPoints::AliTRDqaRecPoints(const AliTRDqaRecPoints &/*qa*/) : 
  TObject(),
  fnEvents(0),
  fHist(0),
  fnPad(0),
  fRef(0)
{
  //
  // Copy constructor
  //

  for (Int_t i = 0; i < 540; i++) {
    fRefHist[i] = 0x0;
  }

}

//____________________________________________________________________________ 
void AliTRDqaRecPoints::Process(const char* filename)
{
  //
  // Detector specific actions at end of cycle
  //
  //TStopwatch watch;
  //watch.Start();
  
  AliInfo("End of TRD cycle");
  
  //if (task == AliQAv1::kRECPOINTS) {
  
  TH1D *hist = new TH1D("fitHist", "", 200, -0.5, 199.5);
  //fHist->Print();
  
  // fill detector map;
  for(int i=0; i<540; i++) {
    Double_t v = ((TH1D*)fHist->At(0))->GetBinContent(i+1);
    Int_t sm = i/30;
    Int_t det = i%30;
    
    TH2D *detMap = (TH2D*)fHist->At(87);
    Int_t bin = detMap->FindBin(sm, det);
    detMap->SetBinContent(bin, v);
  }
  
  
  // Rec points full chambers
  for (Int_t i=0; i<540; i++) {
    
    //AliInfo(Form("I = %d", i));
    
    //TH1D *h = ((TH2D*)fHist->At(1))->ProjectionY(Form("qaTRD_recPoints_amp_%d",i), i+1, i+1);
    hist->Reset();
    for(Int_t b=1; b<hist->GetXaxis()->GetNbins()-1; b++) {
      Double_t xvalue = hist->GetBinCenter(b);
      Int_t bin = ((TH2D*)fHist->At(1))->FindBin(i,xvalue);
      Double_t value =  ((TH2D*)fHist->At(1))->GetBinContent(bin);
      hist->SetBinContent(b, value);
    }
    
    //printf("Sum = %d %f\n", i, hist->GetSum());
    if (hist->GetSum() < 100) continue; // chamber not present
    
    hist->Fit("landau", "q0", "goff", 10, 180);
    TF1 *fit = hist->GetFunction("landau");
    ((TH1D*)fHist->At(12))->Fill(fit->GetParameter(1));
    ((TH1D*)fHist->At(13))->Fill(fit->GetParameter(2));
  }
  
  // time-bin by time-bin sm by sm
  for(Int_t i=0; i<18; i++) { // loop over super-modules
    
    for(Int_t j=0; j<35; j++) { // loop over time bins
      
      //TH1D *h =  ((TH3D*)fHist->At(10))->ProjectionZ(Form("ampTime_%d",i), i+1, i+1, j+1, j+1);     
      hist->Reset();
      for(Int_t b=1; b<hist->GetXaxis()->GetNbins()-1; b++) {
	Double_t xvalue = hist->GetBinCenter(b);
	Double_t svalue = 0;
	
	for(Int_t det=i*30; det<(i+1)*30; det++) { // loop over detectors
	  Int_t bin = ((TH3D*)fHist->At(10))->FindBin(det,j,xvalue);
	  Double_t value =  ((TH3D*)fHist->At(10))->GetBinContent(bin);
	  svalue += value;
	}
	//printf("v = %f\n", value);
	hist->SetBinContent(b, svalue);
      }
      
      if (hist->GetSum() < 100) continue;
      //printf("fitting %d %d %f\n", i, j, hist->GetSum());
      
      hist->Fit("landau", "q0", "goff", 10, 180);
      TF1 *fit = hist->GetFunction("landau");
      
      TH1D *h1 = (TH1D*)fHist->At(14+18+i);
      Int_t bin = h1->FindBin(j);
      // printf("%d %d %d\n", det, j, bin);
      h1->SetBinContent(bin, TMath::Abs(fit->GetParameter(1)));
    }
  }
  

  // time-bin by time-bin chamber by chamber

  for (Int_t i=0; i<540; i++) {
    
    //TH1D *test = ((TH3D*)fHist->At(10))->ProjectionZ(Form("ampTime_%d",i), i+1, i+1, 0, 35);     
    //if (test->GetSum() < 100) continue;
    
    //AliInfo(Form("fitting det = %d", i));
    
    for(Int_t j=0; j<35; j++) {
      
      //TH1D *h =  ((TH3D*)fHist->At(10))->ProjectionZ(Form("ampTime_%d",i), i+1, i+1, j+1, j+1);     
      hist->Reset();
      for(Int_t b=1; b<hist->GetXaxis()->GetNbins()-1; b++) {
	Double_t xvalue = hist->GetBinCenter(b);
	Int_t bin = ((TH3D*)fHist->At(10))->FindBin(i,j,xvalue);
	Double_t value =  ((TH3D*)fHist->At(10))->GetBinContent(bin);
	//printf("v = %f\n", value);
	hist->SetBinContent(b, value);
      }
      
      if (hist->GetSum() < 100) continue;
      //printf("fitting %d %d %f\n", i, j, hist->GetSum());
      
      hist->Fit("landau", "q0", "goff", 10, 180);
      TF1 *fit = hist->GetFunction("landau");
      
      Int_t sm = i/30;
      Int_t det = i%30;
      TH2D *h2 = (TH2D*)fHist->At(14+sm);
      Int_t bin = h2->FindBin(det,j);
      // printf("%d %d %d\n", det, j, bin);
      h2->SetBinContent(bin, TMath::Abs(fit->GetParameter(1)));
      h2->SetBinError(bin,fit->GetParError(1));
    }
  }
    
  if (hist) delete hist;
    
  
  TFile *outFile = new TFile(filename, "RECREATE");
  outFile->mkdir("TRD");
  gDirectory->cd("TRD");
  gDirectory->mkdir("RecPoints");
  gDirectory->cd("RecPoints");
  fHist->Write();

  if (fRef) {
    for(Int_t i=0; i<540; i++) {
      //fRefHist[i]->Scale(1./fnEvents);
      fRefHist[i]->Write();
    }
  }

  outFile->Close();

}

//____________________________________________________________________________ 

void AliTRDqaRecPoints::Init()
{
  //
  // Create Reconstructed Points histograms in RecPoints subdir
  //

  //const Int_t kNhist = 14 + 4 * 18 + 2;
  const Int_t kNhist = 88+2*18+1;
  TH1 *hist[kNhist];

  hist[0] = new TH1D("qaTRD_recPoints_det", ";Detector ID of the cluster", 540, -0.5, 539.5);
  hist[1] = new TH2D("qaTRD_recPoints_amp", ";Amplitude", 540, -0.5, 539, 200, -0.5, 199.5);
  hist[2] = new TH1D("qaTRD_recPoints_npad", ";Number of Pads", 12, -0.5, 11.5);

  hist[3] = new TH1D("qaTRD_recPoints_dist2", ";residuals [2pad]", 100, -1, 1);
  hist[4] = new TH1D("qaTRD_recPoints_dist3", ";residuals [3pad]", 100, -1, 1);
  hist[5] = new TH1D("qaTRD_recPoints_dist4", ";residuals [4pad]", 100, -1, 1);
  hist[6] = new TH1D("qaTRD_recPoints_dist5", ";residuals [5pad]", 100, -1, 1);

  hist[7] = new TH2D("qaTRD_recPoints_rowCol", ";row;col", 16, -0.5, 15.5, 145, -0.5, 144.5);
  hist[8] = new TH1D("qaTRD_recPoints_time", ";time bin", 35, -0.5, 34.5);
  hist[9] = new TH1D("qaTRD_recPoints_nCls", ";number of clusters", 500, -0.5, 499.5);

  hist[10] = new TH3D("qaTRD_recPoints_sigTime", ";chamber;time bin;signal", 
		      540, -0.5, 539.5, 35, -0.5, 34.5, 200, -0.5, 199.5);
  hist[11] = new TProfile("qaTRD_recPoints_prf", ";distance;center of gravity"
                         , 120, -0.6, 0.6, -1.2, 1.2, "");

  hist[12] = new TH1D("qaTRD_recPoints_ampMPV", ";amplitude MPV", 150, 0, 150);
  hist[13] = new TH1D("qaTRD_recPoints_ampSigma", ";amplitude Sigma", 200, 0, 200); 
  
  // chamber by chamber
  for(Int_t i=0; i<18; i++) {
    hist[14+i] = new TH2D(Form("qaTRD_recPoints_sigTime_sm%d",i), Form("sm%d;det;time bin",i), 
			30, -0.5, 29.5, 35, -0.5, 34.5);
    hist[14+i]->SetMinimum(20);
    hist[14+i]->SetMaximum(40);
  }
 
  // time bin by time bin sm-by-sm
  for(Int_t i=0; i<18; i++) {
    hist[14+18+i] = new TH1D(Form("qaTRD_recPoints_sigTimeShape_sm%d", i), 
			     Form("sm%d;time bin;signal",i),
			     35, -0.5, 34.5);

    hist[14+18+i]->SetMaximum(120);    
  }

  // str = 50
  for(Int_t i=0; i<18; i++) {
    hist[50+i] = new TH1D(Form("qaTRD_recPoints_nCls_sm%d",i),
			  Form("sm%d;time bin;number of clusters",i),
			  35, -0.5, 34.5);
  }

  // str = 68
  for(Int_t i=0; i<18; i++) {
    hist[68+i] = new TH1D(Form("qaTRD_recPoints_totalCharge_sm%d", i),
			  Form("sm%d;time bin;total charge", i),
			  35, -0.5, 34.5);
  }

  hist[86] = new TH1D("qaTRD_recPoints_signal", ";amplitude", 200, -0.5, 199.5);
  hist[87] = new TH2D("qaTRD_recPoints_detMap", ";sm;chamber", 18, -0.5, 17.5, 30, -0.5, 29.5);

  for(Int_t i=0; i<18; i++)
    hist[88+i] = new TH2D(Form("qaTRD_recPoints_XY_sm%d", i), 
			  Form("SM%d;Y;X",i), 240, -60, 60, 200, 290, 370);

  for(Int_t i=0; i<18; i++)
    hist[106+i] = new TH2D(Form("qaTRD_recPoints_XPad_sm%d", i), 
			  Form("SM%d;Y;X",i), 144, -0.5, 143.5, 200, 290, 370);

 
  hist[124] = new TH1D("qRef", "ref", 100, 0, 1e4);

  fHist = new TObjArray(200);
  for(Int_t i=0; i<kNhist; i++) {
    //hist[i]->Sumw2();
    fHist->AddAt(hist[i], i);
  }

  // reference histograms
  if (fRef) {
    for(Int_t i=0; i<540; i++) {
      fRefHist[i] = new TH2D(Form("refRecPoints_sm%d", i), "",
			     16, -0.5, 15.5, 144, -0.5, 143.5); //, 30, -0.5, 29.5);
    }
  } else {
    
    TFile *refFile = new TFile("outRef.root");
    refFile->cd("TRD/RecPoints");

    for(Int_t i=0; i<540; i++) {
      fRefHist[i] = (TH2D*)gDirectory->Get(Form("refRecPoints_sm%d", i));
    }
  }
}

//____________________________________________________________________________ 

void AliTRDqaRecPoints::AddEvent(TTree * clustersTree)
{
  //  
  // Makes data from RecPoints
  // 
  
  //  Info("MakeRecPoints", "making");

  Int_t nsize = Int_t(clustersTree->GetTotBytes() / (sizeof(AliTRDcluster))); 
  TObjArray *clusterArray = new TObjArray(nsize+1000); 

  TBranch *branch = clustersTree->GetBranch("TRDcluster");
  if (!branch) {
    AliError("Can't get the branch !");
    return;
  }
  branch->SetAddress(&clusterArray); 

  // Loop through all entries in the tree
  Int_t nEntries   = (Int_t) clustersTree->GetEntries();
  Int_t nbytes     = 0;
  AliTRDcluster *c = 0;
  Int_t nDet[540];
  for (Int_t i=0; i<540; i++) nDet[i] = 0;

  for (Int_t iEntry = 0; iEntry < nEntries; iEntry++) {    

    //printf("Entry = %d\n", iEntry);

    // Import the tree
    nbytes += clustersTree->GetEvent(iEntry);  

    // Get the number of points in the detector
    Int_t nCluster = clusterArray->GetEntriesFast();  

    // Loop through all TRD digits
    for (Int_t iCluster = 0; iCluster < nCluster; iCluster++) { 
      c = (AliTRDcluster *) clusterArray->UncheckedAt(iCluster);

      Int_t iDet = c->GetDetector();
      if (iDet < 0 || iDet > 539) continue;

      
      Int_t iSM = iDet / 30;
      //Int_t iStack = iDet % 30;
      Int_t nPad = c->GetNPads();

      if (fnPad && nPad != fnPad) continue;
      
      //if (iSM == 0 && iStack == 29) continue;
      //if (iSM == 8 && iStack == 11) continue;
      //if (iSM == 8 && iStack == 7)  continue;      
      
      Int_t padRow = c->GetPadRow();
      Int_t padCol = c->GetPadCol();
      //Int_t timeBin = c->GetPadTime();

      Double_t refQ = 0;

      if (fRef) {
	fRefHist[iDet]->Fill(padRow, padCol, c->GetQ());
      } else {
	Int_t bin = fRefHist[iDet]->FindBin(padRow, padCol);
	refQ = fRefHist[iDet]->GetBinContent(bin);
	//printf("bin = %d\n", bin);
      }

      ((TH1D*)fHist->At(124))->Fill(refQ);
      //printf("ref Q = %lf\n", refQ);
      
      Double_t charge = c->GetQ() - (refQ / (490. * 30));
      if (charge < 0) continue;

      if (charge > 20) {
	((TH2D*)fHist->At(88+iSM))->Fill(c->GetY(), c->GetX());
	((TH2D*)fHist->At(106+iSM))->Fill(c->GetPadCol(), c->GetX());
      }

      nDet[iDet]++;
      ((TH1D*)fHist->At(0))->Fill(iDet);
      ((TH1D*)fHist->At(86))->Fill(charge);
      ((TH1D*)fHist->At(1))->Fill(iDet, charge);
      ((TH1D*)fHist->At(2))->Fill(c->GetNPads());
      if (c->GetNPads() < 6)
	((TH1D*)fHist->At(1+c->GetNPads()))->Fill(c->GetCenter());
      
      //if (c->GetPadTime() < 5)
      ((TH2D*)fHist->At(7))->Fill(padRow, c->GetPadCol());
      ((TH1D*)fHist->At(8))->Fill(c->GetPadTime());

      ((TH3D*)fHist->At(10))->Fill(iDet, c->GetPadTime(), charge);
   
      ((TH1D*)fHist->At(50+iSM))->Fill(c->GetPadTime());
      ((TH1D*)fHist->At(68+iSM))->Fill(c->GetPadTime(), charge);

      // PRF for 2pad
      //if (c->GetNPads() == 2) {
      Short_t *sig = c->GetSignals();
      Double_t frac = -10;

      if (sig[0] == 0 && sig[1] == 0 && sig[2] == 0 && sig[5] == 0 && sig[6] == 0) 
	frac = 1. * sig[4] / (sig[3] + sig[4]);

      if (sig[0] == 0 && sig[1] == 0 && sig[4] == 0 && sig[5] == 0 && sig[6] == 0)
	frac = -1. * sig[2] / (sig[2] + sig[3]);

      if (frac > -10)  ((TProfile*)fHist->At(11))->Fill(c->GetCenter(), frac);
	
      //}
    }
  }

  for(Int_t i=0; i<540; i++) 
    if (nDet[i] > 0) ((TH1D*)fHist->At(9))->Fill(nDet[i]);

  delete clusterArray;

  /*
  TFile *outFile = new TFile("outQA.root", "RECREATE");
  outFile->mkdir("TRD");
  gDirectory->cd("TRD");
  gDirectory->mkdir("RecPoints");
  gDirectory->cd("RecPoints");
  fHist->Write();
  outFile->Close();
  */
}

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