ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TRD/AliTRDcluster.h>
#include <AliRunLoader.h>
#include <TCanvas.h>
#include <TF1.h>
#include <TH1.h>
#include <TH2.h>
#include <TLine.h>
#include <TMath.h>
#include <TObjArray.h>
#include <TPad.h>
#include <TROOT.h>
#include <TStyle.h>
#include <TSystem.h>
#include <TTree.h>
#endif

//#define EVENT_BY_EVENT      // Show amplitude event-by-event
//#define EVENT_BY_EVENT2     // Show tracks event-by-event
//#define PRINT_OTHER         // Display various additional histograms

// Number of noisy detectors
const Int_t numNoisyDets = 10;

// Holds the detector number of detectors that produce too much noise and
// are therefore excluded from the calculation
const Int_t exDets[numNoisyDets] = {25, 511, 515, 538, 523, 249, 294, 27, 24, 247};   

Bool_t isBadCluster(Int_t det, Int_t Q, Int_t PadCol, Int_t PadRow)
{  
  if (Q < 20) return 1;

  // Exclude bad cols
  if (PadCol == 142 || PadCol == 136 || PadCol == 66 || PadCol == 65 || PadCol <= 2) return 1;
  //if (PadCol == 142 || PadCol == 66 || PadCol == 65 || PadCol <= 2) return 1;
  //if (PadCol == 142 || PadCol <= 2) return 1;
  
  // Exclude noisy detectors
  for (Int_t indDet = 0; indDet < numNoisyDets; indDet++)
  {
    if (det == exDets[indDet])
    {
      // Exclude several regions of bad detectors
      if ((PadCol >= 134 && PadRow <= 5) || (PadCol == 141 && PadRow >= 10)) return 1;
      //if (PadRow == 15 || (PadCol >= 134 && PadRow <= 11) || (PadCol >= 119 && PadCol <= 123 && PadRow == 11)) return 1; 

      break;
    }
  }
  
  // Cluster seems to be clean
  return 0;
}


//=====================================

void AliTRDanalyseRecPoints (const char *filename="galice.root") 
{
  gROOT->SetStyle("Plain");
  gStyle->SetPalette(1);

  // open run loader and load gAlice, kinematics and header
  AliRunLoader* runLoader = AliRunLoader::Open(filename);
  if (!runLoader) 
  {
    printf("Error: readKine:\nGetting run loader from file \"%s\" failed", filename);
    return;
  }

  runLoader->LoadHeader();
  runLoader->LoadRecPoints("TRD");
  TObjArray *module = new TObjArray();

  runLoader->CdGAFile();
  

  // Flag indicating whether the signal comes from a noisy detector
  Bool_t fromNoisyDet = 0;

  // Counts the number of clusters per event
  Int_t clusters = 0;

  // Threshold for the amplitude
  const Int_t kQThreshold = 30;

  // Selection criterions for clusters
  const Int_t kThresholdLower = 30;
  const Int_t kThresholdUpper = 500;

  // Number of events passing the criterion
  Int_t numPassed = 0;

  // hist
#ifdef PRINT_OTHER
  TH1D *mNCls = new TH1D("NCls", ";number of clusters", 400, 0, 400);
  TH1D *mResY = new TH1D("resY", ";sigma Y (cm)", 100, 0, 1);
  TH1D *mResZ = new TH1D("resZ", ";sigma Z (cm)", 100, 1, 3);

  TH1D *mNPads = new TH1D("NPads", ";number of pads", 10, -0.5, 9.5);
  TH1D *mCenter = new TH1D("center", ";center", 100, -1, 1);
  TH1D *mTime = new TH1D("timeBin", ";time bin", 25, -0.5, 24.5);
  TH1D *mPlane = new TH1D("plane", ";plane", 6, -0.5, 5.5);

  TH1D *mX = new TH1D("x", "; X (cm)", 100, 0, 3.5);
  TH1D *mY = new TH1D("y", "; y / chamber width (%)", 100, -1, 1);
  TH1D *mZ = new TH1D("z", "; Z (cm)", 200, -400, 400);

  TH2D *mPlaneY = new TH2D("planeY", ";plane;Y (cm);#Clusters", 6, -0.5, 5.5, 100, -60, 60);
  TH2D *mYX = new TH2D("yx", ";Y (cm);X (cm);#Clusters", 100, -60, 60, 120, 280, 400);
#endif

  TH1D *mChrg = new TH1D("chrg", ";Charge(no pad-filter)", 200, 0, 200);
  TH1D *mChrg2 = new TH1D("chrg2", ";Charge(pads<9)", 200, 0, 200);
  TH1D *mChrg3 = new TH1D("chrg3", ";Charge(2<pads<9)", 200, 0, 200);
  
  TH2D *mQvsPads = new TH2D("QvsPads", ";Number of pads;Q;#Clusters", 15, -0.5, 14.5, 100, 0, 1000);

  // There are 540 detectors
  TH2D *mQvsDetector = new TH2D("QvsDet", ";Number of detector;Q;#Clusters", 540, -0.5, 539.5, 100, 0, 1000);

  // Supermoduleid=int(detectorNum / 30)
  TH2D *mQvsSModId = new TH2D("QvsSModId", ";Supermodule id;Q;#Clusters", 18, -0.5, 17.5, 100, 0, 1000);
  // Histograms for the already installed supermodules
  TH1D *mSMod0 = new TH1D("SMod0", ";Charge", 200, 0, 200);
  TH1D *mSMod8 = new TH1D("SMod8", ";Charge", 200, 0, 200);
  TH1D *mSMod9 = new TH1D("SMod9", ";Charge", 200, 0, 200);
  TH1D *mSMod17 = new TH1D("SMod17", ";Charge", 200, 0, 200);

  // Index + 2 corresponds to the number of activated pads
  TH1D *mPads[14];
  char name[8];
  for (Int_t ind = 0; ind < 14; ind++)
  {
    sprintf(name,"%dPads",ind + 2);
    mPads[ind] = new TH1D(name, ";Charge", 200, 0, 200);
  }

  // Amplitude distribution will be displayed event by event for the first 100 events
  TH1D *mChrgEBE = new TH1D("chrgEBE", ";Charge", 200, 0, 200);

  // Keep track of the number of clusters per event
  TH1D *mClusters = new TH1D("Clusters", ";Number of clusters per event", 300, -0.5, 299.5);

  // Keep track of the number of clusters per chamber with Q < kQThreshold
  char clusTitle[55];
  sprintf(clusTitle,";Number of clusters with Q < %d vs detector", kQThreshold);
  TH1D *mClusCham = new TH1D("ClusCham", clusTitle, 540, -0.5, 539.5);
  // Same but this time noisy detectors excluded
  sprintf(clusTitle,";Number of clusters with Q < %d vs detector", kQThreshold);
  TH1D *mClusChamEx = new TH1D("ClusChamEx", clusTitle, 540, -0.5, 539.5);

  TH2D *mColRow = new TH2D("ColRow", ";Column;Row;#Clusters", 144, -0.5, 143.5, 18, -0.5, 17.5);
  TH2D *mColRowFiltered = new TH2D("ColRowFiltered", ";Column;Row;#Clusters", 144, -0.5, 143.5, 18, -0.5, 17.5);

  TH2D *mColTime = new TH2D("ColTime", ";TimeBin;Column", 18, -0.5, 17.5, 144, -0.5, 143.5);
  TH2D *mColTimeFiltered = new TH2D("ColTimeFiltered", ";TimeBin;Column;#Clusters", 18, -0.5, 17.5, 144, -0.5, 143.5);

  // YX histograms for the already installed supermodules
  TH2D *mTrSMod0 = new TH2D("TrSMod0", ";Col;time+layer*20;#Clusters", 144, -0.5, 143.5, 120, -0.5, 119.5);
  TH2D *mTrSMod8 = new TH2D("TrSMod8", ";Col;time+layer*20;#Clusters", 144, -0.5, 143.5, 120, -0.5, 119.5);
  TH2D *mTrSMod9 = new TH2D("TrSMod9", ";Col;time+layer*20;#Clusters", 144, -0.5, 143.5, 120, -0.5, 119.5);
  TH2D *mTrSMod17 = new TH2D("TrSMod17", ";Col;time+layer*20;#Clusters", 144, -0.5, 143.5, 120, -0.5, 119.5);


#ifdef EVENT_BY_EVENT  
  TCanvas* eventc = new TCanvas("eventc","Amplitude distribution for event 0",700,500);
  char title[40];
#endif

#ifdef EVENT_BY_EVENT2
  TCanvas* sTrc = new TCanvas("sTrc","Track -  Supermodules",800,800);
  sTrc->SetLogz();
  sTrc->Divide(2,2);
  char title2[40];
#endif

 
  int nEvents = runLoader->GetNumberOfEvents();
  
  AliTRDcluster *cls = 0;

  for(Int_t ev = 0; ev < nEvents - 1; ev++) 
  {
    clusters = 0;    

    TTree *tree = runLoader->GetTreeR("TRD", 0);
    tree->SetBranchAddress("TRDcluster", &module);

    int N = tree->GetEntries();

    // Check number of clusters
    for(Int_t ind = 0; ind < N; ind++)
    {
      tree->GetEntry(ind);
      Int_t m = module->GetEntries();
  
      for (Int_t j = 0; j < m; j++)
      {
        if (cls != 0) delete cls;
        cls = (AliTRDcluster*)module->At(j);
        if (!isBadCluster(cls->GetDetector(), (Int_t)cls->GetQ(), cls->GetPadCol(), cls->GetPadRow())) clusters++;
        else
	      {
          // Uncomment the following lines AND comment the next if-clause to display the histograms for the 
          // EXCLUDED clusters

	        //mQvsPads->Fill(cls->GetNPads(),cls->GetQ());
	        //mQvsDetector->Fill(cls->GetDetector(),cls->GetQ());
	        //mQvsSModId->Fill((Int_t)(cls->GetDetector() / 30.),cls->GetQ());	
	        //mColTime->Fill(cls->GetLocalTimeBin(), cls->GetPadCol());
          //mColRow->Fill(cls->GetPadCol(), cls->GetPadRow());    
	        //mClusCham->Fill(cls->GetDetector());
          //mYX->Fill(cls->GetY(), cls->GetX());
        }
      }  
    }

    // Process event, if number of clusters is in the correct range
    if (clusters >= kThresholdLower && clusters <= kThresholdUpper)
    {
      clusters = 0;
      numPassed++;

      for (Int_t i = 0; i < N; i++) 
      {
	      tree->GetEntry(i);
	      int m = module->GetEntries();

#ifdef PRINT_OTHER
	      mNCls->Fill(m);
#endif

	      for(Int_t j = 0; j < m; j++) 
	      {
          fromNoisyDet = 0;
	        clusters++;

          if (cls != 0) delete cls;
	        cls = (AliTRDcluster*)module->At(j);
	      
	        // Filter the clusters of the events, too
          if (cls->GetQ() < 20) continue;
           
	        mColTime->Fill(cls->GetLocalTimeBin(), cls->GetPadCol());

          if (cls->GetQ() <= kQThreshold) 
          {
            mClusCham->Fill(cls->GetDetector());
	        }
          
          // Exclude noisy detectors
          for (Int_t indDet = 0; indDet < numNoisyDets; indDet++)
	        {
	          if (cls->GetDetector() == exDets[indDet])
	          {
          	  fromNoisyDet = 1;
	            break;
	          }
	        }

          // Exclude I
          if (cls->GetPadCol() == 142 || cls->GetPadCol() == 136 || cls->GetPadCol() == 66 || cls->GetPadCol() == 65 || cls->GetPadCol() <= 2) continue;
          //if (cls->GetPadCol() == 142 || cls->GetPadCol() == 66 || cls->GetPadCol() == 65 || cls->GetPadCol() <= 2) continue;
          //if (cls->GetPadCol() == 142 || cls->GetPadCol() <= 2) continue;

	        if (fromNoisyDet) 
	        {
	          mColRow->Fill(cls->GetPadCol(), cls->GetPadRow());    
 
	          // Exclude II
	          //if (cls->GetPadRow() == 15 || (cls->GetPadCol() >= 134 && cls->GetPadRow() <= 11) || (cls->GetPadCol() >= 119 && cls->GetPadCol() <= 123 && cls->GetPadRow() == 11)) continue; 
            
            if ((cls->GetPadCol() >= 134 && cls->GetPadRow() <= 5) || (cls->GetPadCol() == 141 && cls->GetPadRow() >= 10)) continue; 
            
            mColRowFiltered->Fill(cls->GetPadCol(), cls->GetPadRow());
	        }

          mColTimeFiltered->Fill(cls->GetLocalTimeBin(), cls->GetPadCol());

          if (cls->GetQ() <= kQThreshold) 
          {
            mClusChamEx->Fill(cls->GetDetector());
	        }
	        
#ifdef PRINT_OTHER
	        mX->Fill(cls->GetX());
	        mZ->Fill(cls->GetZ());
          mYX->Fill(cls->GetY(), cls->GetX());
	        mResY->Fill(TMath::Sqrt(cls->GetSigmaY2()));
	        mResZ->Fill(TMath::Sqrt(cls->GetSigmaZ2()));
          mNPads->Fill(cls->GetNPads());
          mCenter->Fill(cls->GetCenter());
	        mTime->Fill(cls->GetLocalTimeBin());
#endif

	        if (cls->GetNPads() > 2 && cls->GetNPads() < 9) mChrg3->Fill(cls->GetQ());
          if (cls->GetNPads() < 9) mChrg2->Fill(cls->GetQ());
          mChrg->Fill(cls->GetQ());	         
	        
	        mQvsPads->Fill(cls->GetNPads(),cls->GetQ());
	        mQvsDetector->Fill(cls->GetDetector(),cls->GetQ());
	        mQvsSModId->Fill((Int_t)(cls->GetDetector() / 30.),cls->GetQ());	

          Int_t superModule = (Int_t)(cls->GetDetector() / 30.);

          // Position in supermodule = cls->GetDetector() - superModule * 30
          // There are 6 layers per supermodule:
          Int_t layer = (cls->GetDetector() - superModule * 30) % 6;
	        switch (superModule)
	        {
	          case 0:
	            mSMod0->Fill(cls->GetQ());
                    mTrSMod0->Fill(cls->GetPadCol(), cls->GetLocalTimeBin() + layer * 20);
	            break;
	          case 8:
	            mSMod8->Fill(cls->GetQ());
                    mTrSMod8->Fill(cls->GetPadCol(), cls->GetLocalTimeBin() + layer * 20);
	            break;
	          case 9:
	            mSMod9->Fill(cls->GetQ());
                    mTrSMod9->Fill(cls->GetPadCol(), cls->GetLocalTimeBin() + layer * 20);
	            break;
	          case 17:
	            mSMod17->Fill(cls->GetQ());
                    mTrSMod17->Fill(cls->GetPadCol(), cls->GetLocalTimeBin() + layer * 20);
	            break;
	          default:
	            break;
	        }

	        // Only consider events with maximal 15 pads here
	        if (cls->GetNPads() - 2 < 14 && cls->GetNPads() - 2 >= 0)
	        {
	          mPads[cls->GetNPads() - 2]->Fill(cls->GetQ());
	        }

	        mChrgEBE->Fill(cls->GetQ());
	      }
      }
      

#ifdef EVENT_BY_EVENT  
      // Event by event display for the first 100 events
      if (numPassed < 100)
      {
        sprintf(title,"Charge distribution for event %d", ev);
        eventc->SetTitle(title);
        mChrgEBE->Draw();
        eventc->Update();
        gSystem->Sleep(400);
        mChrgEBE->Reset();
      }
#endif

#ifdef EVENT_BY_EVENT2
      // Event by event display 
      sprintf(title2,"Supermodule tracks for event %d", ev);
      sTrc->SetTitle(title2);
      sTrc->cd(1);
      mTrSMod0->Draw("colz");
      sTrc->cd(2);
      mTrSMod8->Draw("colz");
      sTrc->cd(3);
      mTrSMod9->Draw("colz");
      sTrc->cd(4);
      mTrSMod17->Draw("colz");
      sTrc->Update();
      gSystem->Sleep(400);
      mTrSMod0->Reset();
      mTrSMod8->Reset();
      mTrSMod9->Reset();
      mTrSMod17->Reset();
#endif


      mClusters->Fill(clusters);    
    }
     
    runLoader->GetNextEvent();
  }

#ifdef PRINT_OTHER
  new TCanvas();
  gPad->SetLogy();
  mNCls->Draw();

  new TCanvas();
  gPad->SetLogy();
  mResY->Draw();

  new TCanvas();
  gPad->SetLogy();
  mResZ->Draw();
#endif

  new TCanvas("chrgc", "Charge(no pad-filter)", 700, 500);
  mChrg->Draw();
  // Try landau-fit
  TF1* lFit = new TF1("lFit", "landau", 20, 200);
  cout << "\n\nFit (no pad-filter):\n";
  mChrg->Fit(lFit, "", "", 20, 200);

  new TCanvas("chrg2c", "Charge(pads<9)", 700, 500);
  mChrg2->Draw();
  // Try landau-fit
  TF1* lFit2 = new TF1("lFit2", "landau", 20, 200);
  cout << "\n\nFit (pads<9):\n";
  mChrg2->Fit(lFit2, "", "", 20, 200);

  new TCanvas("chrg3c", "Charge(2<pads<9)", 700, 500);
  mChrg3->Draw();
  // Try landau-fit
  TF1* lFit3 = new TF1("lFit3", "landau", 20, 200);
  cout << "\n\nFit (2<pads<9):\n";
  mChrg3->Fit(lFit3, "", "", 20, 200);

#ifdef PRINT_OTHER
  new TCanvas();
  mNPads->Draw();

  new TCanvas();
  mTime->Draw();

  new TCanvas();
  mX->Draw();

  new TCanvas();
  mY->Draw();

  new TCanvas();
  mZ->Draw();

  new TCanvas();
  mCenter->Draw();

  new TCanvas();
  mYX->Draw("colz");

  new TCanvas();
  mPlane->Draw();

  new TCanvas();
  mPlaneY->Draw("colz");
#endif

  new TCanvas();
  gPad->SetLogz();
  mQvsPads->Draw("colz");  

  new TCanvas();
  gPad->SetLogz();
  mQvsDetector->Draw("colz");
  TLine* tl = 0;
  for (Int_t num = 30; num < 540; num += 30)
  {
    // Draw vertical lines every 30 bins to sketch the layer modules
    tl = new TLine(num - 0.5, 0, num - 0.5, 1000);
    tl->Draw();
  }

  new TCanvas();
  gPad->SetLogz();
  mQvsSModId->Draw("colz");

  TCanvas* sc = new TCanvas("sc","Supermodules", 800, 800);
  sc->SetLogz();
  sc->Divide(2,2);
  sc->cd(1);
  mSMod0->Draw();
  sc->cd(2);
  mSMod8->Draw();
  sc->cd(3);
  mSMod9->Draw();
  sc->cd(4);
  mSMod17->Draw();
 

  TCanvas* padc = new TCanvas("padc","Pads", 1000, 1000);
  padc->Divide(4,4);
  for (Int_t ind = 0; ind < 14; ind++)
  {
    padc->cd(ind + 1);
    mPads[ind]->Draw();
  }

  new TCanvas();
  mClusters->Draw();

  TCanvas* clusChamc = new TCanvas("clusChamc", "Clusters against detector with threshold", 800, 800);
  clusChamc->Divide(1,2);
  clusChamc->cd(1);
  mClusCham->Draw();
  clusChamc->cd(2);
  mClusChamEx->Draw();

  TCanvas* noisyc = new TCanvas("noisyc", "Col/Row of noisy detectors");
  noisyc->Divide(1,2);
  noisyc->cd(1);
  gPad->SetLogz();
  mColRow->Draw("colz");
  noisyc->cd(2);
  gPad->SetLogz();
  mColRowFiltered->Draw("colz");

  TCanvas* ColTimec = new TCanvas("ColTimec", "Col/Time");
  ColTimec->Divide(1,2);
  ColTimec->cd(1);
  gPad->SetLogz();
  mColTime->Draw("colz");
  ColTimec->cd(2);
  gPad->SetLogz();
  mColTimeFiltered->Draw("colz");

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