ROOT logo
// ////////////////////////////////////////////////////////////////////////////
//   Macro to get TRD signal distribution from all six layers of TRD
//   This function takes the data from following directories 
//   "rmom.6", "rmom.8", "rmom1", "rmom1.5", "rmom2", "rmom3", "rmom4", "rmom5",//   "rmom6", "rmom8", "rmom10"
//    corresponding to momenta
//   0.6, 0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0
//   Running this macro will generate the root file TRDdEdxHistogramsV1.root 
//   containing histograms for all momenta.
//   Prashant Shukla (shukla@physi.uni-heidelberg.de)
// ////////////////////////////////////////////////////////////////////////////

#if !defined( __CINT__) || defined(__MAKECINT__)
#include <TFile.h>
#include <TH1.h>
#include <TH2.h>
#include <TCanvas.h>
#include <TVector3.h>
#include <TPDGCode.h>
#include <TParticle.h>
#include <TTree.h>

#include "AliTRDtrack.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliESD.h"
#include "AliRun.h"
#include "AliStack.h"
#include "AliHeader.h"
#include "AliGenEventHeader.h"
#else
#endif


//_____________________________________________________________________________

Bool_t AliTRDhistTRDpid(Int_t oFile=1)
{
  //
  //

  const Int_t kNMom=11;

  TH1F *h1dEdxEL[kNMom];
  TH1F *h1dEdxPI[kNMom];
  TH1F *h1dEdxMU[kNMom];
  TH1F *h1dEdxKA[kNMom];
  TH1F *h1dEdxPR[kNMom];
  TH1F *h1MaxTimBinEL[kNMom];
  TH1F *h1MaxTimBinPI[kNMom];
  Char_t text[200];
 
  // Histograms for dedx of e and pi track in TRD 
  
  for (Int_t imom = 0; imom < kNMom; imom++) {
    sprintf(text,"h1dEdxEL%01d",imom+1);
    h1dEdxEL[imom] = new TH1F(text,"dE/dx  Dist.",200,0,4000);
    h1dEdxEL[imom]->GetXaxis()->SetTitle("dE/dx_{TRD}(arbitrary units)");
    h1dEdxEL[imom]->GetYaxis()->SetTitle("Entries");
    h1dEdxEL[imom]->SetLineColor(kRed);
    
    sprintf(text,"h1dEdxPI%01d",imom+1);  
    h1dEdxPI[imom] = new TH1F(text,"dE/dx  Dist.",200,0,4000);
    //  TH1F *h1dEdxPI[imom] = new TH1F("","",250,0,2500);
    h1dEdxPI[imom]->GetXaxis()->SetTitle("dE/dx_{TRD} (arbitrary units)");
    h1dEdxPI[imom]->GetYaxis()->SetTitle("Entries");
    h1dEdxPI[imom]->SetLineColor(kBlue);

    sprintf(text,"h1dEdxMU%01d",imom+1);  
    h1dEdxMU[imom] = new TH1F(text,"dE/dx  Dist.",200,0,4000);
    h1dEdxMU[imom]->GetXaxis()->SetTitle("dE/dx_{TRD}(arbitrary units)");
    h1dEdxMU[imom]->GetYaxis()->SetTitle("Entries");
    h1dEdxMU[imom]->SetLineColor(kGreen);
    
    sprintf(text,"h1dEdxKA%01d",imom+1);  
    h1dEdxKA[imom] = new TH1F(text,"dE/dx  Dist.",200,0,4000);
    h1dEdxKA[imom]->GetXaxis()->SetTitle("dE/dx_{TRD}(arbitrary units)");
    h1dEdxKA[imom]->GetYaxis()->SetTitle("Entries");
    h1dEdxKA[imom]->SetLineColor(7);
    
    sprintf(text,"h1dEdxPR%01d",imom+1); 
    h1dEdxPR[imom] = new TH1F(text,"dE/dx  Dist.",200,0,4000);
    h1dEdxPR[imom]->GetXaxis()->SetTitle("dE/dx_{TRD}(arbitrary units)");
    h1dEdxPR[imom]->GetYaxis()->SetTitle("Entries");
    h1dEdxPR[imom]->SetLineColor(6);
    
    sprintf(text,"h1MaxTimBinEL%01d",imom+1);  
    h1MaxTimBinEL[imom] = new TH1F(text,"Dist. Time Bin of max. Cluster for e(Red) and pi(Blue)",30,0,30);
    h1MaxTimBinEL[imom]->GetXaxis()->SetTitle("Time Bin of Maximum Cluster");
    h1MaxTimBinEL[imom]->GetYaxis()->SetTitle("Entries");
    h1MaxTimBinEL[imom]->SetLineColor(2);
    
    sprintf(text,"h1MaxTimBinPI%01d",imom+1);  
    h1MaxTimBinPI[imom] = new TH1F(text,"Time Bin of max. Cluster Pion",30,0,30);
    h1MaxTimBinPI[imom]->SetLineColor(4);
  }
  
  // PID
  Int_t partCode[5] = 
    {kElectron, kMuonMinus, kPiPlus, kKPlus, kProton};
  
  // Files

  Char_t *FileDir[11] = {"rmom.6", "rmom.8", "rmom1", "rmom1.5", "rmom2", "rmom3", "rmom4", "rmom5", "rmom6", "rmom8", "rmom10"}; 

  Float_t mome[11]={0.6, 0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 10.0};

  Char_t gAliceFileName[200];
  Char_t esdFileName[200];
  for (Int_t imom = 0; imom < kNMom; imom++) {

    sprintf(gAliceFileName,"~/work/data/%s/galice.root", FileDir[imom]);
    sprintf(esdFileName,"~/work/data/%s/AliESDs.root", FileDir[imom]);

  // open run loader and load gAlice, kinematics and header
  AliRunLoader* runLoader = AliRunLoader::Open(gAliceFileName);
  if (!runLoader) {
    Error("CheckESD", "getting run loader from file %s failed",gAliceFileName);
    return kFALSE;
  }
  runLoader->LoadgAlice();
  gAlice = runLoader->GetAliRun();
  if (!gAlice) {
    Error("CheckESD", "no galice object found");
    return kFALSE;
  }
  runLoader->LoadKinematics();
  runLoader->LoadHeader();
  
  //  AliKalmanTrack::SetConvConst(1000/0.299792458/gAlice->Field()->SolenoidField());
  // open the ESD file
  TFile* esdFile = TFile::Open(esdFileName);
  if (!esdFile || !esdFile->IsOpen()) {
    Error("CheckESD", "opening ESD file %s failed",esdFileName);
    return kFALSE;
  }
  AliESD* esd = new AliESD;
  TTree* tree = (TTree*) esdFile->Get("esdTree");
  if (!tree) {
    Error("CheckESD", "no ESD tree found");
    return kFALSE;
  }
  tree->SetBranchAddress("ESD", &esd);

  // loop over events
  for (Int_t iEvent = 0; iEvent < runLoader->GetNumberOfEvents(); iEvent++) {
    runLoader->GetEvent(iEvent);
    AliStack* stack = gAlice->Stack();
    Int_t nParticles = stack->GetNtrack();
    TArrayF vertex(3);
    runLoader->GetHeader()->GenEventHeader()->PrimaryVertex(vertex);
    Int_t nGene=0, nGenpi=0;
    for (Int_t iParticle = 0; iParticle < nParticles; iParticle++) {
      TParticle* particle = stack->Particle(iParticle);
      if (!particle) continue;
      if (particle->Pt() < 0.001) continue;
      //      if (TMath::Abs(particle->Eta()) > 0.3) continue;
      TVector3 dVertex(particle->Vx() - vertex[0], 
        	       particle->Vy() - vertex[1],
        	       particle->Vz() - vertex[2]);
      if (dVertex.Mag() > 0.0001) continue;
      if (TMath::Abs(particle->GetPdgCode()) == partCode[0]) nGene++;
      if (TMath::Abs(particle->GetPdgCode()) == partCode[2]) nGenpi++;
    }  // end loop over particles
    printf("Gen Prim. el= %d, Gen Prim. pi= %d in Event No.= %d in File = %s \n", nGene, nGenpi, iEvent, FileDir[imom]);
    
    // get the event summary data
    tree->GetEvent(iEvent);
    if (!esd) {
      Error("CheckESD", "no ESD object found for event %d", iEvent);
      return kFALSE;
    }

    ///////////////////////////////////////////
    //    AliTRDpidESD::MakePID(esd);
    //    AliESDpid::MakePID(esd);
    ///////////////////////////////////////////

    // Initializing number of electrons and pions
    Int_t nne=0, nnpi=0;    
    // loop over tracks
    Int_t nTracks = esd->GetNumberOfTracks();
    printf("Found %d tracks. \n",nTracks);

    for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
      AliESDtrack* track = esd->GetTrack(iTrack);
      // select tracks of selected particles
      Int_t label = TMath::Abs(track->GetLabel());
      if (label > stack->GetNtrack()) continue;     // background
      TParticle* particle = stack->Particle(label);
      //      if (TMath::Abs(particle->Eta()) > 0.3) continue;
      TVector3 dVertex(particle->Vx() - vertex[0], 
        	       particle->Vy() - vertex[1],
        	       particle->Vz() - vertex[2]);
      if (dVertex.Mag() > 0.0001) continue;
      if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) continue;
      if (track->GetConstrainedChi2() > 1e9) continue;
      Double_t p[3];
      track->GetConstrainedPxPyPz(p);
      TVector3 pTrack(p);
      //      Double_t mom = track->GetP();

      // PID/////////////////////////////////////////////////////
      if ((track->GetStatus() & AliESDtrack::kESDpid) == 0) continue;
      Int_t iGen = 5;
      for (Int_t i = 0; i < 5; i++) {
        if (TMath::Abs(particle->GetPdgCode()) == partCode[i]) iGen = i;
      }

      // Filling muon kan and proton//////////////////////////////
      Int_t Itot=0;
      if(track->GetTRDsignal()) Itot=1;
      if(!Itot) continue;

      // dE/dx and TEST TRD
      Double_t TRDsignal = track->GetTRDsignal();
      //      if (iGen == 0) h1dEdxEL[imom]->Fill(TRDsignal); 
      //      if (iGen == 2) h1dEdxPI[imom]->Fill(TRDsignal); 
      //      if (iGen == 1) h1dEdxMU[imom]->Fill(TRDsignal);
      //      if (iGen == 3) h1dEdxKA[imom]->Fill(TRDsignal);
      //      if (iGen == 4) h1dEdxPR[imom]->Fill(TRDsignal);

      //Filling elcron and pions////////////////////////////////
      const Int_t kNPlane = 6;
      // Track Selection 
      Double_t Ise=1.;
      for (Int_t iPlane = 0; iPlane < kNPlane; iPlane++) {
        Ise*=track->GetTRDsignals(iPlane);
      }
      if(Ise==0) continue;
      
      for (Int_t iPlane = 0; iPlane < kNPlane; iPlane++) {
        Double_t TRDsignal = track->GetTRDsignals(iPlane);
        if (iGen == 0) h1dEdxEL[imom]->Fill(TRDsignal);
        if (iGen == 2) h1dEdxPI[imom]->Fill(TRDsignal);
        if (iGen == 1) h1dEdxMU[imom]->Fill(TRDsignal);
        if (iGen == 3) h1dEdxKA[imom]->Fill(TRDsignal);
        if (iGen == 4) h1dEdxPR[imom]->Fill(TRDsignal);

        if (iGen == 0) h1MaxTimBinEL[imom]->Fill(track->GetTRDTimBin(iPlane));
        if (iGen == 2) h1MaxTimBinPI[imom]->Fill(track->GetTRDTimBin(iPlane));
      }
      
      //      Int_t TRDncls = track->GetTRDncls();
      if (iGen == 0) nne++;
      if (iGen == 2) nnpi++;
    } // end of loop over tracks
    printf("Electron Tracks = %d, Pion Tracks =  %d \n", nne, nnpi);
  }// end of loop over events
  delete esd;
  esdFile->Close();
  delete esdFile;
  
  runLoader->UnloadHeader();
  runLoader->UnloadKinematics();
  delete runLoader;
  } // Loop over files
  
    
  Char_t fileprint[200];
  
  // draw the histograms if not in batch mode

  new TCanvas;
  gPad->SetBorderMode(0);
  gPad->SetFillColor(0);
  //  gStyle->SetStatColor(0);
  h1dEdxPI[0]->DrawCopy();
  h1dEdxEL[0]->DrawCopy("SAME");
  //  h1dEdxMU[0]->DrawCopy("SAME");
  //  h1dEdxKA[0]->DrawCopy("SAME");
  //  h1dEdxPR[0]->DrawCopy("SAME");

  new TCanvas;
  gPad->SetBorderMode(0);
  gPad->SetFillColor(0);
  h1MaxTimBinEL[0]->DrawCopy();
  h1MaxTimBinPI[0]->DrawCopy("SAME");


  // write the output histograms to a file
  
  Char_t fileresponse[200];
  sprintf(fileresponse,"TRDdEdxHistogramsV%d.root",oFile);
  
  TFile* outputFile = TFile::Open(fileresponse, "recreate");
  if (!outputFile || !outputFile->IsOpen()) {
    Error("CheckESD", "opening output file check.root failed");
    return kFALSE;
  }

  for (Int_t imom = 0; imom < kNMom; imom++) {
    h1dEdxPI[imom]->Write();
    h1dEdxEL[imom]->Write();
    h1dEdxMU[imom]->Write();
    h1dEdxKA[imom]->Write();
    h1dEdxPR[imom]->Write();
    h1MaxTimBinEL[imom]->Write();
    h1MaxTimBinPI[imom]->Write();
  }

  delete [] h1dEdxPI;  
  delete [] h1dEdxEL;
  delete [] h1dEdxMU;
  delete [] h1dEdxKA;
  delete [] h1dEdxPR;
  delete [] h1MaxTimBinEL;
  delete [] h1MaxTimBinPI;
  delete outputFile;
  
  // result of check
  Info("GetPIDsignals", "GetPIDsignals was successfull");
  return kTRUE;
  
} // end of main program

 AliTRDhistTRDpid.C:1
 AliTRDhistTRDpid.C:2
 AliTRDhistTRDpid.C:3
 AliTRDhistTRDpid.C:4
 AliTRDhistTRDpid.C:5
 AliTRDhistTRDpid.C:6
 AliTRDhistTRDpid.C:7
 AliTRDhistTRDpid.C:8
 AliTRDhistTRDpid.C:9
 AliTRDhistTRDpid.C:10
 AliTRDhistTRDpid.C:11
 AliTRDhistTRDpid.C:12
 AliTRDhistTRDpid.C:13
 AliTRDhistTRDpid.C:14
 AliTRDhistTRDpid.C:15
 AliTRDhistTRDpid.C:16
 AliTRDhistTRDpid.C:17
 AliTRDhistTRDpid.C:18
 AliTRDhistTRDpid.C:19
 AliTRDhistTRDpid.C:20
 AliTRDhistTRDpid.C:21
 AliTRDhistTRDpid.C:22
 AliTRDhistTRDpid.C:23
 AliTRDhistTRDpid.C:24
 AliTRDhistTRDpid.C:25
 AliTRDhistTRDpid.C:26
 AliTRDhistTRDpid.C:27
 AliTRDhistTRDpid.C:28
 AliTRDhistTRDpid.C:29
 AliTRDhistTRDpid.C:30
 AliTRDhistTRDpid.C:31
 AliTRDhistTRDpid.C:32
 AliTRDhistTRDpid.C:33
 AliTRDhistTRDpid.C:34
 AliTRDhistTRDpid.C:35
 AliTRDhistTRDpid.C:36
 AliTRDhistTRDpid.C:37
 AliTRDhistTRDpid.C:38
 AliTRDhistTRDpid.C:39
 AliTRDhistTRDpid.C:40
 AliTRDhistTRDpid.C:41
 AliTRDhistTRDpid.C:42
 AliTRDhistTRDpid.C:43
 AliTRDhistTRDpid.C:44
 AliTRDhistTRDpid.C:45
 AliTRDhistTRDpid.C:46
 AliTRDhistTRDpid.C:47
 AliTRDhistTRDpid.C:48
 AliTRDhistTRDpid.C:49
 AliTRDhistTRDpid.C:50
 AliTRDhistTRDpid.C:51
 AliTRDhistTRDpid.C:52
 AliTRDhistTRDpid.C:53
 AliTRDhistTRDpid.C:54
 AliTRDhistTRDpid.C:55
 AliTRDhistTRDpid.C:56
 AliTRDhistTRDpid.C:57
 AliTRDhistTRDpid.C:58
 AliTRDhistTRDpid.C:59
 AliTRDhistTRDpid.C:60
 AliTRDhistTRDpid.C:61
 AliTRDhistTRDpid.C:62
 AliTRDhistTRDpid.C:63
 AliTRDhistTRDpid.C:64
 AliTRDhistTRDpid.C:65
 AliTRDhistTRDpid.C:66
 AliTRDhistTRDpid.C:67
 AliTRDhistTRDpid.C:68
 AliTRDhistTRDpid.C:69
 AliTRDhistTRDpid.C:70
 AliTRDhistTRDpid.C:71
 AliTRDhistTRDpid.C:72
 AliTRDhistTRDpid.C:73
 AliTRDhistTRDpid.C:74
 AliTRDhistTRDpid.C:75
 AliTRDhistTRDpid.C:76
 AliTRDhistTRDpid.C:77
 AliTRDhistTRDpid.C:78
 AliTRDhistTRDpid.C:79
 AliTRDhistTRDpid.C:80
 AliTRDhistTRDpid.C:81
 AliTRDhistTRDpid.C:82
 AliTRDhistTRDpid.C:83
 AliTRDhistTRDpid.C:84
 AliTRDhistTRDpid.C:85
 AliTRDhistTRDpid.C:86
 AliTRDhistTRDpid.C:87
 AliTRDhistTRDpid.C:88
 AliTRDhistTRDpid.C:89
 AliTRDhistTRDpid.C:90
 AliTRDhistTRDpid.C:91
 AliTRDhistTRDpid.C:92
 AliTRDhistTRDpid.C:93
 AliTRDhistTRDpid.C:94
 AliTRDhistTRDpid.C:95
 AliTRDhistTRDpid.C:96
 AliTRDhistTRDpid.C:97
 AliTRDhistTRDpid.C:98
 AliTRDhistTRDpid.C:99
 AliTRDhistTRDpid.C:100
 AliTRDhistTRDpid.C:101
 AliTRDhistTRDpid.C:102
 AliTRDhistTRDpid.C:103
 AliTRDhistTRDpid.C:104
 AliTRDhistTRDpid.C:105
 AliTRDhistTRDpid.C:106
 AliTRDhistTRDpid.C:107
 AliTRDhistTRDpid.C:108
 AliTRDhistTRDpid.C:109
 AliTRDhistTRDpid.C:110
 AliTRDhistTRDpid.C:111
 AliTRDhistTRDpid.C:112
 AliTRDhistTRDpid.C:113
 AliTRDhistTRDpid.C:114
 AliTRDhistTRDpid.C:115
 AliTRDhistTRDpid.C:116
 AliTRDhistTRDpid.C:117
 AliTRDhistTRDpid.C:118
 AliTRDhistTRDpid.C:119
 AliTRDhistTRDpid.C:120
 AliTRDhistTRDpid.C:121
 AliTRDhistTRDpid.C:122
 AliTRDhistTRDpid.C:123
 AliTRDhistTRDpid.C:124
 AliTRDhistTRDpid.C:125
 AliTRDhistTRDpid.C:126
 AliTRDhistTRDpid.C:127
 AliTRDhistTRDpid.C:128
 AliTRDhistTRDpid.C:129
 AliTRDhistTRDpid.C:130
 AliTRDhistTRDpid.C:131
 AliTRDhistTRDpid.C:132
 AliTRDhistTRDpid.C:133
 AliTRDhistTRDpid.C:134
 AliTRDhistTRDpid.C:135
 AliTRDhistTRDpid.C:136
 AliTRDhistTRDpid.C:137
 AliTRDhistTRDpid.C:138
 AliTRDhistTRDpid.C:139
 AliTRDhistTRDpid.C:140
 AliTRDhistTRDpid.C:141
 AliTRDhistTRDpid.C:142
 AliTRDhistTRDpid.C:143
 AliTRDhistTRDpid.C:144
 AliTRDhistTRDpid.C:145
 AliTRDhistTRDpid.C:146
 AliTRDhistTRDpid.C:147
 AliTRDhistTRDpid.C:148
 AliTRDhistTRDpid.C:149
 AliTRDhistTRDpid.C:150
 AliTRDhistTRDpid.C:151
 AliTRDhistTRDpid.C:152
 AliTRDhistTRDpid.C:153
 AliTRDhistTRDpid.C:154
 AliTRDhistTRDpid.C:155
 AliTRDhistTRDpid.C:156
 AliTRDhistTRDpid.C:157
 AliTRDhistTRDpid.C:158
 AliTRDhistTRDpid.C:159
 AliTRDhistTRDpid.C:160
 AliTRDhistTRDpid.C:161
 AliTRDhistTRDpid.C:162
 AliTRDhistTRDpid.C:163
 AliTRDhistTRDpid.C:164
 AliTRDhistTRDpid.C:165
 AliTRDhistTRDpid.C:166
 AliTRDhistTRDpid.C:167
 AliTRDhistTRDpid.C:168
 AliTRDhistTRDpid.C:169
 AliTRDhistTRDpid.C:170
 AliTRDhistTRDpid.C:171
 AliTRDhistTRDpid.C:172
 AliTRDhistTRDpid.C:173
 AliTRDhistTRDpid.C:174
 AliTRDhistTRDpid.C:175
 AliTRDhistTRDpid.C:176
 AliTRDhistTRDpid.C:177
 AliTRDhistTRDpid.C:178
 AliTRDhistTRDpid.C:179
 AliTRDhistTRDpid.C:180
 AliTRDhistTRDpid.C:181
 AliTRDhistTRDpid.C:182
 AliTRDhistTRDpid.C:183
 AliTRDhistTRDpid.C:184
 AliTRDhistTRDpid.C:185
 AliTRDhistTRDpid.C:186
 AliTRDhistTRDpid.C:187
 AliTRDhistTRDpid.C:188
 AliTRDhistTRDpid.C:189
 AliTRDhistTRDpid.C:190
 AliTRDhistTRDpid.C:191
 AliTRDhistTRDpid.C:192
 AliTRDhistTRDpid.C:193
 AliTRDhistTRDpid.C:194
 AliTRDhistTRDpid.C:195
 AliTRDhistTRDpid.C:196
 AliTRDhistTRDpid.C:197
 AliTRDhistTRDpid.C:198
 AliTRDhistTRDpid.C:199
 AliTRDhistTRDpid.C:200
 AliTRDhistTRDpid.C:201
 AliTRDhistTRDpid.C:202
 AliTRDhistTRDpid.C:203
 AliTRDhistTRDpid.C:204
 AliTRDhistTRDpid.C:205
 AliTRDhistTRDpid.C:206
 AliTRDhistTRDpid.C:207
 AliTRDhistTRDpid.C:208
 AliTRDhistTRDpid.C:209
 AliTRDhistTRDpid.C:210
 AliTRDhistTRDpid.C:211
 AliTRDhistTRDpid.C:212
 AliTRDhistTRDpid.C:213
 AliTRDhistTRDpid.C:214
 AliTRDhistTRDpid.C:215
 AliTRDhistTRDpid.C:216
 AliTRDhistTRDpid.C:217
 AliTRDhistTRDpid.C:218
 AliTRDhistTRDpid.C:219
 AliTRDhistTRDpid.C:220
 AliTRDhistTRDpid.C:221
 AliTRDhistTRDpid.C:222
 AliTRDhistTRDpid.C:223
 AliTRDhistTRDpid.C:224
 AliTRDhistTRDpid.C:225
 AliTRDhistTRDpid.C:226
 AliTRDhistTRDpid.C:227
 AliTRDhistTRDpid.C:228
 AliTRDhistTRDpid.C:229
 AliTRDhistTRDpid.C:230
 AliTRDhistTRDpid.C:231
 AliTRDhistTRDpid.C:232
 AliTRDhistTRDpid.C:233
 AliTRDhistTRDpid.C:234
 AliTRDhistTRDpid.C:235
 AliTRDhistTRDpid.C:236
 AliTRDhistTRDpid.C:237
 AliTRDhistTRDpid.C:238
 AliTRDhistTRDpid.C:239
 AliTRDhistTRDpid.C:240
 AliTRDhistTRDpid.C:241
 AliTRDhistTRDpid.C:242
 AliTRDhistTRDpid.C:243
 AliTRDhistTRDpid.C:244
 AliTRDhistTRDpid.C:245
 AliTRDhistTRDpid.C:246
 AliTRDhistTRDpid.C:247
 AliTRDhistTRDpid.C:248
 AliTRDhistTRDpid.C:249
 AliTRDhistTRDpid.C:250
 AliTRDhistTRDpid.C:251
 AliTRDhistTRDpid.C:252
 AliTRDhistTRDpid.C:253
 AliTRDhistTRDpid.C:254
 AliTRDhistTRDpid.C:255
 AliTRDhistTRDpid.C:256
 AliTRDhistTRDpid.C:257
 AliTRDhistTRDpid.C:258
 AliTRDhistTRDpid.C:259
 AliTRDhistTRDpid.C:260
 AliTRDhistTRDpid.C:261
 AliTRDhistTRDpid.C:262
 AliTRDhistTRDpid.C:263
 AliTRDhistTRDpid.C:264
 AliTRDhistTRDpid.C:265
 AliTRDhistTRDpid.C:266
 AliTRDhistTRDpid.C:267
 AliTRDhistTRDpid.C:268
 AliTRDhistTRDpid.C:269
 AliTRDhistTRDpid.C:270
 AliTRDhistTRDpid.C:271
 AliTRDhistTRDpid.C:272
 AliTRDhistTRDpid.C:273
 AliTRDhistTRDpid.C:274
 AliTRDhistTRDpid.C:275
 AliTRDhistTRDpid.C:276
 AliTRDhistTRDpid.C:277
 AliTRDhistTRDpid.C:278
 AliTRDhistTRDpid.C:279
 AliTRDhistTRDpid.C:280
 AliTRDhistTRDpid.C:281
 AliTRDhistTRDpid.C:282
 AliTRDhistTRDpid.C:283
 AliTRDhistTRDpid.C:284
 AliTRDhistTRDpid.C:285
 AliTRDhistTRDpid.C:286
 AliTRDhistTRDpid.C:287
 AliTRDhistTRDpid.C:288
 AliTRDhistTRDpid.C:289
 AliTRDhistTRDpid.C:290
 AliTRDhistTRDpid.C:291
 AliTRDhistTRDpid.C:292
 AliTRDhistTRDpid.C:293
 AliTRDhistTRDpid.C:294
 AliTRDhistTRDpid.C:295
 AliTRDhistTRDpid.C:296
 AliTRDhistTRDpid.C:297
 AliTRDhistTRDpid.C:298
 AliTRDhistTRDpid.C:299
 AliTRDhistTRDpid.C:300
 AliTRDhistTRDpid.C:301
 AliTRDhistTRDpid.C:302
 AliTRDhistTRDpid.C:303
 AliTRDhistTRDpid.C:304
 AliTRDhistTRDpid.C:305
 AliTRDhistTRDpid.C:306
 AliTRDhistTRDpid.C:307
 AliTRDhistTRDpid.C:308
 AliTRDhistTRDpid.C:309
 AliTRDhistTRDpid.C:310
 AliTRDhistTRDpid.C:311
 AliTRDhistTRDpid.C:312
 AliTRDhistTRDpid.C:313
 AliTRDhistTRDpid.C:314
 AliTRDhistTRDpid.C:315
 AliTRDhistTRDpid.C:316