ROOT logo
#ifndef __CINT__
  #include <iostream.h>  

  #include "AliTOF.h"
  #include "AliTOFhit.h"
  #include "AliTPCtrack.h"
  #include "AliTRDtrack.h"
  #include "AliTRDgeometry.h"

  #include "alles.h"  
  #include "TFile.h"
  #include "TParticle.h"
  #include "TStopwatch.h"
#endif     

void AliTRDtoTOFanalysis() 
{

  Int_t nEvent = 0;
  const Int_t maxIndex = 80000;  // max number of primaries to be analysed
  Int_t rtIndex[maxIndex];
  for(Int_t i = 0; i < maxIndex; i++) rtIndex[i] = -1;

  //****** tracking:  Load reconstructed tracks

  TFile *tf=TFile::Open("AliTRDtracks.root");

  if (!tf->IsOpen()) {cerr<<"Can't open AliTRDtracks.root !\n"; return;}
  TObjArray tarray(2000);

  char   tname[100];
  sprintf(tname,"seedsTRDtoTOF2_%d",nEvent);
  //  for other radial positions use different trees:     
  //    sprintf(tname,"seedsTRDtoTOF1_%d",nEvent);     
  //    sprintf(tname,"seedsTRDtoPHOS_%d",nEvent);     
  //    sprintf(tname,"seedsTRDtoRHIC_%d",nEvent);     

  TTree *tracktree=(TTree*)tf->Get(tname);

  TBranch *tbranch=tracktree->GetBranch("tracks");

  Int_t nRecTracks = (Int_t) tracktree->GetEntries();
  cout<<"Found "<<nRecTracks<<" entries in the track tree "<<tname<<endl;

  for (Int_t i=0; i<nRecTracks; i++) {
    AliTPCtrack *iotrack=new AliTPCtrack();
    tbranch->SetAddress(&iotrack);
    tracktree->GetEvent(i);
    tarray.AddLast(iotrack);
    Int_t trackLabel = iotrack->GetLabel();

    //    printf("rt with %d clusters and label %d \n",
    //	   iotrack->GetNumberOfClusters(), trackLabel);

    if(trackLabel < 0) continue;
    if(trackLabel >= maxIndex) continue;
    rtIndex[trackLabel] = i;
  }
  tf->Close();       

  //********

  TH1F *hdx = new TH1F("dx","X(hit) - X(track)",40,-10,10);
  TH1F *hdy = new TH1F("dy","Y(hit) - Y(track)",100,-20,20);
  TH1F *hdz = new TH1F("dz","Z(hit) - Z(track)",100,-20,20);
  TH2F *hdt = new TH2F("dt","T(hit) vs S(track)",100,0,500,500,200,700);


  // Connect the AliRoot file containing Geometry, Kine, Hits, and Digits
  Char_t *alifile = "galice.root";

  TFile *gafl = (TFile*) gROOT->GetListOfFiles()->FindObject(alifile);
  if (!gafl) {
    cout << "Open the ALIROOT-file " << alifile << endl;
    gafl = new TFile(alifile);
  }
  else {
    cout << alifile << " is already open" << endl;
  }

  // Get AliRun object from file or create it if not on file
  gAlice = (AliRun*) gafl->Get("gAlice");
  if (gAlice)
    cout << "AliRun object found on file" << endl;
  else
    gAlice = new AliRun("gAlice","Alice test program");


  // Import the Trees for the event nEvent in the file
  const Int_t nparticles = gAlice->GetEvent(nEvent);
  if (nparticles <= 0) return;

   Float_t x,y,z,mass,e;
   Double_t gX, gY, gZ;   // rec. track coordinates in the global system 
   Double_t Px, Py, Pz;   // rec. track momentum components in the global system 
   Float_t X, Y, Z;     // local tracking coordinates for reconstructed track
   Int_t nbytes = 0;
   Int_t j,hit,ipart;
   Int_t nhits;
   Float_t tof;
   TParticle *particle;            
   AliTPCtrack *rt;

// Get pointers to Alice detectors and Hits containers
   AliDetector *TOF  = gAlice->GetDetector("TOF");
   Int_t ntracks    = (Int_t) gAlice->TreeH()->GetEntries();     

// Start loop on tracks in the hits containers

   for (Int_t track=0; track < ntracks; track++) {

     if(TOF) {
       for(AliTOFhit* tofHit = (AliTOFhit*)TOF->FirstHit(track); 
	   tofHit; 
	   tofHit=(AliTOFhit*)TOF->NextHit()) {

         ipart    = tofHit->GetTrack();
	 if(ipart >= maxIndex) continue;
	 if(rtIndex[ipart] < 0) continue; 

	 x = tofHit->X();
	 y = tofHit->Y();
	 z = tofHit->Z();

	 //******* tracking:  extract track coordinates, momentum, etc. 

	 rt = (AliTPCtrack*) tarray.UncheckedAt(rtIndex[ipart]);
	 Double_t tr_length = rt->GetLength();  // meaningfull only with ITS
	                                        // part fully implemented 

	 AliTRDtrack *trd_rt = new AliTRDtrack(*rt, rt->GetAlpha());
	 trd_rt->GetGlobalXYZ(gX,gY,gZ);  // returns running global coordinates 
	 trd_rt->GetPxPyPz(Px,Py,Pz);  // returns momentum in global system
  
	 /*                                             
	 printf("\n hit position - rec. track position:\n");
	 printf(" X: %f - %f = %f \n", x, gX, x - gX);
	 printf(" Y: %f - %f = %f \n", y, gY, y - gY);
	 printf(" Z: %f - %f = %f \n", z, gZ, z - gZ);
	 printf("\n");
	 */

	 delete trd_rt;

	 // conversion from hit coordinates from global coordinate system 
	 // to "local" tracking system 

	 Float_t phi =TMath::ATan2(y,x);
	 if (phi > 2.*TMath::Pi()) phi -= 2.*TMath::Pi();
	 if (phi < 0.            ) phi += 2.*TMath::Pi();
	 Int_t sec = Int_t(phi/AliTRDgeometry::GetAlpha()) % 18;
	 Float_t alpha = (sec + 0.5) * AliTRDgeometry::GetAlpha();

	 Float_t tmp=x*TMath::Cos(alpha) + y*TMath::Sin(alpha);
	 y= - x*TMath::Sin(alpha) + y*TMath::Cos(alpha);
	 x=tmp;  

	 //         particle = (TParticle*)gAlice->Particle(ipart);
	 //        if (particle->GetFirstMother() < 0) continue;

	 X = (Float_t) rt->GetX();   // radial position in the tracking system
	 Y = (Float_t) rt->GetY();   // r*phi position within the sector
	 Z = (Float_t) rt->GetZ();   // Z position


	 if(TMath::Abs(X-x-1) > 2) continue;

	 hdx->Fill(X-x);
	 hdy->Fill(Y-y);
	 hdz->Fill(Z-z);

	 //**********

       }
     }
   }                     
     
  TCanvas* c1 = new TCanvas("c1", "c1", 210, 210, 910, 940);
  c1->SetFillColor(10);
  c1->Divide(2,2);
  c1->cd(1); hdx->Draw();
  c1->cd(2); hdy->Draw();
  c1->cd(3); hdz->Draw();
  c1->cd(4); hdt->Draw();
}
 AliTRDtoTOFanalysis.C:1
 AliTRDtoTOFanalysis.C:2
 AliTRDtoTOFanalysis.C:3
 AliTRDtoTOFanalysis.C:4
 AliTRDtoTOFanalysis.C:5
 AliTRDtoTOFanalysis.C:6
 AliTRDtoTOFanalysis.C:7
 AliTRDtoTOFanalysis.C:8
 AliTRDtoTOFanalysis.C:9
 AliTRDtoTOFanalysis.C:10
 AliTRDtoTOFanalysis.C:11
 AliTRDtoTOFanalysis.C:12
 AliTRDtoTOFanalysis.C:13
 AliTRDtoTOFanalysis.C:14
 AliTRDtoTOFanalysis.C:15
 AliTRDtoTOFanalysis.C:16
 AliTRDtoTOFanalysis.C:17
 AliTRDtoTOFanalysis.C:18
 AliTRDtoTOFanalysis.C:19
 AliTRDtoTOFanalysis.C:20
 AliTRDtoTOFanalysis.C:21
 AliTRDtoTOFanalysis.C:22
 AliTRDtoTOFanalysis.C:23
 AliTRDtoTOFanalysis.C:24
 AliTRDtoTOFanalysis.C:25
 AliTRDtoTOFanalysis.C:26
 AliTRDtoTOFanalysis.C:27
 AliTRDtoTOFanalysis.C:28
 AliTRDtoTOFanalysis.C:29
 AliTRDtoTOFanalysis.C:30
 AliTRDtoTOFanalysis.C:31
 AliTRDtoTOFanalysis.C:32
 AliTRDtoTOFanalysis.C:33
 AliTRDtoTOFanalysis.C:34
 AliTRDtoTOFanalysis.C:35
 AliTRDtoTOFanalysis.C:36
 AliTRDtoTOFanalysis.C:37
 AliTRDtoTOFanalysis.C:38
 AliTRDtoTOFanalysis.C:39
 AliTRDtoTOFanalysis.C:40
 AliTRDtoTOFanalysis.C:41
 AliTRDtoTOFanalysis.C:42
 AliTRDtoTOFanalysis.C:43
 AliTRDtoTOFanalysis.C:44
 AliTRDtoTOFanalysis.C:45
 AliTRDtoTOFanalysis.C:46
 AliTRDtoTOFanalysis.C:47
 AliTRDtoTOFanalysis.C:48
 AliTRDtoTOFanalysis.C:49
 AliTRDtoTOFanalysis.C:50
 AliTRDtoTOFanalysis.C:51
 AliTRDtoTOFanalysis.C:52
 AliTRDtoTOFanalysis.C:53
 AliTRDtoTOFanalysis.C:54
 AliTRDtoTOFanalysis.C:55
 AliTRDtoTOFanalysis.C:56
 AliTRDtoTOFanalysis.C:57
 AliTRDtoTOFanalysis.C:58
 AliTRDtoTOFanalysis.C:59
 AliTRDtoTOFanalysis.C:60
 AliTRDtoTOFanalysis.C:61
 AliTRDtoTOFanalysis.C:62
 AliTRDtoTOFanalysis.C:63
 AliTRDtoTOFanalysis.C:64
 AliTRDtoTOFanalysis.C:65
 AliTRDtoTOFanalysis.C:66
 AliTRDtoTOFanalysis.C:67
 AliTRDtoTOFanalysis.C:68
 AliTRDtoTOFanalysis.C:69
 AliTRDtoTOFanalysis.C:70
 AliTRDtoTOFanalysis.C:71
 AliTRDtoTOFanalysis.C:72
 AliTRDtoTOFanalysis.C:73
 AliTRDtoTOFanalysis.C:74
 AliTRDtoTOFanalysis.C:75
 AliTRDtoTOFanalysis.C:76
 AliTRDtoTOFanalysis.C:77
 AliTRDtoTOFanalysis.C:78
 AliTRDtoTOFanalysis.C:79
 AliTRDtoTOFanalysis.C:80
 AliTRDtoTOFanalysis.C:81
 AliTRDtoTOFanalysis.C:82
 AliTRDtoTOFanalysis.C:83
 AliTRDtoTOFanalysis.C:84
 AliTRDtoTOFanalysis.C:85
 AliTRDtoTOFanalysis.C:86
 AliTRDtoTOFanalysis.C:87
 AliTRDtoTOFanalysis.C:88
 AliTRDtoTOFanalysis.C:89
 AliTRDtoTOFanalysis.C:90
 AliTRDtoTOFanalysis.C:91
 AliTRDtoTOFanalysis.C:92
 AliTRDtoTOFanalysis.C:93
 AliTRDtoTOFanalysis.C:94
 AliTRDtoTOFanalysis.C:95
 AliTRDtoTOFanalysis.C:96
 AliTRDtoTOFanalysis.C:97
 AliTRDtoTOFanalysis.C:98
 AliTRDtoTOFanalysis.C:99
 AliTRDtoTOFanalysis.C:100
 AliTRDtoTOFanalysis.C:101
 AliTRDtoTOFanalysis.C:102
 AliTRDtoTOFanalysis.C:103
 AliTRDtoTOFanalysis.C:104
 AliTRDtoTOFanalysis.C:105
 AliTRDtoTOFanalysis.C:106
 AliTRDtoTOFanalysis.C:107
 AliTRDtoTOFanalysis.C:108
 AliTRDtoTOFanalysis.C:109
 AliTRDtoTOFanalysis.C:110
 AliTRDtoTOFanalysis.C:111
 AliTRDtoTOFanalysis.C:112
 AliTRDtoTOFanalysis.C:113
 AliTRDtoTOFanalysis.C:114
 AliTRDtoTOFanalysis.C:115
 AliTRDtoTOFanalysis.C:116
 AliTRDtoTOFanalysis.C:117
 AliTRDtoTOFanalysis.C:118
 AliTRDtoTOFanalysis.C:119
 AliTRDtoTOFanalysis.C:120
 AliTRDtoTOFanalysis.C:121
 AliTRDtoTOFanalysis.C:122
 AliTRDtoTOFanalysis.C:123
 AliTRDtoTOFanalysis.C:124
 AliTRDtoTOFanalysis.C:125
 AliTRDtoTOFanalysis.C:126
 AliTRDtoTOFanalysis.C:127
 AliTRDtoTOFanalysis.C:128
 AliTRDtoTOFanalysis.C:129
 AliTRDtoTOFanalysis.C:130
 AliTRDtoTOFanalysis.C:131
 AliTRDtoTOFanalysis.C:132
 AliTRDtoTOFanalysis.C:133
 AliTRDtoTOFanalysis.C:134
 AliTRDtoTOFanalysis.C:135
 AliTRDtoTOFanalysis.C:136
 AliTRDtoTOFanalysis.C:137
 AliTRDtoTOFanalysis.C:138
 AliTRDtoTOFanalysis.C:139
 AliTRDtoTOFanalysis.C:140
 AliTRDtoTOFanalysis.C:141
 AliTRDtoTOFanalysis.C:142
 AliTRDtoTOFanalysis.C:143
 AliTRDtoTOFanalysis.C:144
 AliTRDtoTOFanalysis.C:145
 AliTRDtoTOFanalysis.C:146
 AliTRDtoTOFanalysis.C:147
 AliTRDtoTOFanalysis.C:148
 AliTRDtoTOFanalysis.C:149
 AliTRDtoTOFanalysis.C:150
 AliTRDtoTOFanalysis.C:151
 AliTRDtoTOFanalysis.C:152
 AliTRDtoTOFanalysis.C:153
 AliTRDtoTOFanalysis.C:154
 AliTRDtoTOFanalysis.C:155
 AliTRDtoTOFanalysis.C:156
 AliTRDtoTOFanalysis.C:157
 AliTRDtoTOFanalysis.C:158
 AliTRDtoTOFanalysis.C:159
 AliTRDtoTOFanalysis.C:160
 AliTRDtoTOFanalysis.C:161
 AliTRDtoTOFanalysis.C:162
 AliTRDtoTOFanalysis.C:163
 AliTRDtoTOFanalysis.C:164
 AliTRDtoTOFanalysis.C:165
 AliTRDtoTOFanalysis.C:166
 AliTRDtoTOFanalysis.C:167
 AliTRDtoTOFanalysis.C:168
 AliTRDtoTOFanalysis.C:169
 AliTRDtoTOFanalysis.C:170
 AliTRDtoTOFanalysis.C:171
 AliTRDtoTOFanalysis.C:172
 AliTRDtoTOFanalysis.C:173
 AliTRDtoTOFanalysis.C:174
 AliTRDtoTOFanalysis.C:175
 AliTRDtoTOFanalysis.C:176
 AliTRDtoTOFanalysis.C:177
 AliTRDtoTOFanalysis.C:178
 AliTRDtoTOFanalysis.C:179
 AliTRDtoTOFanalysis.C:180
 AliTRDtoTOFanalysis.C:181
 AliTRDtoTOFanalysis.C:182
 AliTRDtoTOFanalysis.C:183
 AliTRDtoTOFanalysis.C:184
 AliTRDtoTOFanalysis.C:185
 AliTRDtoTOFanalysis.C:186