ROOT logo
#ifndef __CINT__
#include "iostream.h"
#endif

Bool_t TPCSortTracks(Int_t event = 0)
{
   TFile *fileTracks   = TFile::Open("AliTPCtracks.root");
   TFile *fileClusters = TFile::Open("AliTPCclusters.root");
   TFile *fileEvent    = TFile::Open("galice.root");

   // get TPC parameterization
   AliTPCParam *param=(AliTPCParam *)fileEvent->Get("75x40_100x60_150x60");
   if (!param) {
		cerr << "(TPCSortTracks) ERROR: TPC parameters have not been found!" << endl;
		return kFALSE;
	}

   // read and sort tracks
   Int_t i;
	TSortedList tracks_list;
   AliTPCtrack *iotrack = 0;
   TTree *tracktree = (TTree*)fileTracks->Get(Form("TreeT_TPC_%d", event));
   Int_t nentr = (Int_t)tracktree->GetEntries();
   for (i = 0; i < nentr; i++) {
     iotrack = new AliTPCtrack;
     tracktree->SetBranchAddress("tracks", &iotrack);
     tracktree->GetEvent(i);
     tracks_list.Add(iotrack);
   }   
	delete tracktree;
	
   // assign to each track its GEANT label
   fileClusters->cd();
	AliTPCtracker *tracker = new AliTPCtracker(param, event);
   tracker->LoadInnerSectors();
   tracker->LoadOuterSectors();
	TListIter iter(&tracks_list);
   for (i = 0; i < nentr; i++) {
     iotrack = (AliTPCtrack*)iter.Next();
	  if (!iotrack) {
	     cerr << "(TPCSortTracks) WARNING: Track no. " << i << " is NULL!!!" << endl;
		  continue;  
	  }
     tracker->CookLabel(iotrack, 0.1);
   }   
   delete tracker;
	
   // create the new TTree of TPC tracks sorted w.r. to Pt
	tracktree = new TTree(Form("TreeT_TPC_%d", event),"Tree with TPC tracks sorted w.r to pt");
   tracktree->Branch("tracks", "AliTPCtrack", &iotrack, 32000, 0);
	iter.Reset();
   for (i = 0; i < nentr; i++) {
     iotrack = (AliTPCtrack*)iter.Next();
	  if (!iotrack) {
	     cerr << "(TPCSortTracks) WARNING: Track no. " << i << " is NULL!!!" << endl;
		  continue;  
	  }
     tracktree->Fill();
   }
	
	// save the new tree into new file
	TFile *fileOutput = TFile::Open("AliTPCtracksSorted.root","recreate");
   tracktree->Write();
   fileOutput->Close();
   fileEvent->Close();
   fileClusters->Close();
	fileTracks->Close();
	
	return kTRUE;
}


void AliITSTrackingV1(Int_t evNumber1=0,Int_t evNumber2=0, Int_t min_t=-1, Int_t max_t=0,Bool_t flagvert=1, Bool_t realmass=0, const char *filename="galice.root") {

  ///////////////// Dynamically link some shared libs ////////////////////////////////
  
  if (gClassTable->GetID("AliRun") < 0) {
    gROOT->LoadMacro("loadlibs.C");
    loadlibs();
  } else {
    delete gAlice;
    gAlice=0;
  }
  
  // Connect the Root Galice file containing Geometry, Kine and Hits
   TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename);
   if (!file) file = new TFile("galice.root","UPDATE");
   //if (!file) file = new TFile(filename);

// Get AliRun object from file or create it if not on file
   if (!gAlice) {
      gAlice = (AliRun*)file->Get("gAlice");
      if (gAlice) printf("AliRun object found on file\n");
      if (!gAlice) gAlice = new AliRun("gAlice","Alice test program");
   }
   
   AliKalmanTrack::SetMagneticField(gAlice->Field()->SolenoidField() / 10.0);

  
  cout << "Sorting TPC tracks w.r. to transverse momentum...";
  Bool_t success_sorting = TPCSortTracks();
  if (success_sorting) {
     cout << "DONE!" << endl;
  }
  else {
	cout << "Some error occurred..." << endl;
	return 1;
  }

  AliITS* IITTSS =(AliITS *)gAlice->GetDetector("ITS");        
  if (!IITTSS) return;                                           

//
//   Loop over events 
//
   Int_t Nh=0;
   Int_t Nh1=0;
   for (Int_t nev=0; nev<= evNumber2; nev++) {
	AliITSTrackerV1 *ITStracker = new AliITSTrackerV1(IITTSS,nev,flagvert);
     Int_t nparticles = gAlice->GetEvent(nev);
     cout << "nev         " << nev <<endl;
     cout << "nparticles  " << nparticles <<endl;
     if (nev < evNumber1) continue;
     if (nparticles <= 0) return;

     TTree *TR=gAlice->TreeR();
     Int_t nent=TR->GetEntries();
     //printf("Found %d entries in the TreeR (must be one per module per event!)\n",nent);


     TStopwatch timer;
	  
	  timer.Start();
     ITStracker->DoTracking(nev,min_t,max_t,file,realmass);    
     timer.Stop(); timer.Print();
	 AliITSgeom *g1 = IITTSS->GetITSgeom();
    Int_t NumOfModules = g1->GetIndexMax();	   
	  ITStracker->DelMatrix(NumOfModules);
	  delete ITStracker;  
   }   // event loop  
   file->Close();   
}

 AliITSTrackingV1.C:1
 AliITSTrackingV1.C:2
 AliITSTrackingV1.C:3
 AliITSTrackingV1.C:4
 AliITSTrackingV1.C:5
 AliITSTrackingV1.C:6
 AliITSTrackingV1.C:7
 AliITSTrackingV1.C:8
 AliITSTrackingV1.C:9
 AliITSTrackingV1.C:10
 AliITSTrackingV1.C:11
 AliITSTrackingV1.C:12
 AliITSTrackingV1.C:13
 AliITSTrackingV1.C:14
 AliITSTrackingV1.C:15
 AliITSTrackingV1.C:16
 AliITSTrackingV1.C:17
 AliITSTrackingV1.C:18
 AliITSTrackingV1.C:19
 AliITSTrackingV1.C:20
 AliITSTrackingV1.C:21
 AliITSTrackingV1.C:22
 AliITSTrackingV1.C:23
 AliITSTrackingV1.C:24
 AliITSTrackingV1.C:25
 AliITSTrackingV1.C:26
 AliITSTrackingV1.C:27
 AliITSTrackingV1.C:28
 AliITSTrackingV1.C:29
 AliITSTrackingV1.C:30
 AliITSTrackingV1.C:31
 AliITSTrackingV1.C:32
 AliITSTrackingV1.C:33
 AliITSTrackingV1.C:34
 AliITSTrackingV1.C:35
 AliITSTrackingV1.C:36
 AliITSTrackingV1.C:37
 AliITSTrackingV1.C:38
 AliITSTrackingV1.C:39
 AliITSTrackingV1.C:40
 AliITSTrackingV1.C:41
 AliITSTrackingV1.C:42
 AliITSTrackingV1.C:43
 AliITSTrackingV1.C:44
 AliITSTrackingV1.C:45
 AliITSTrackingV1.C:46
 AliITSTrackingV1.C:47
 AliITSTrackingV1.C:48
 AliITSTrackingV1.C:49
 AliITSTrackingV1.C:50
 AliITSTrackingV1.C:51
 AliITSTrackingV1.C:52
 AliITSTrackingV1.C:53
 AliITSTrackingV1.C:54
 AliITSTrackingV1.C:55
 AliITSTrackingV1.C:56
 AliITSTrackingV1.C:57
 AliITSTrackingV1.C:58
 AliITSTrackingV1.C:59
 AliITSTrackingV1.C:60
 AliITSTrackingV1.C:61
 AliITSTrackingV1.C:62
 AliITSTrackingV1.C:63
 AliITSTrackingV1.C:64
 AliITSTrackingV1.C:65
 AliITSTrackingV1.C:66
 AliITSTrackingV1.C:67
 AliITSTrackingV1.C:68
 AliITSTrackingV1.C:69
 AliITSTrackingV1.C:70
 AliITSTrackingV1.C:71
 AliITSTrackingV1.C:72
 AliITSTrackingV1.C:73
 AliITSTrackingV1.C:74
 AliITSTrackingV1.C:75
 AliITSTrackingV1.C:76
 AliITSTrackingV1.C:77
 AliITSTrackingV1.C:78
 AliITSTrackingV1.C:79
 AliITSTrackingV1.C:80
 AliITSTrackingV1.C:81
 AliITSTrackingV1.C:82
 AliITSTrackingV1.C:83
 AliITSTrackingV1.C:84
 AliITSTrackingV1.C:85
 AliITSTrackingV1.C:86
 AliITSTrackingV1.C:87
 AliITSTrackingV1.C:88
 AliITSTrackingV1.C:89
 AliITSTrackingV1.C:90
 AliITSTrackingV1.C:91
 AliITSTrackingV1.C:92
 AliITSTrackingV1.C:93
 AliITSTrackingV1.C:94
 AliITSTrackingV1.C:95
 AliITSTrackingV1.C:96
 AliITSTrackingV1.C:97
 AliITSTrackingV1.C:98
 AliITSTrackingV1.C:99
 AliITSTrackingV1.C:100
 AliITSTrackingV1.C:101
 AliITSTrackingV1.C:102
 AliITSTrackingV1.C:103
 AliITSTrackingV1.C:104
 AliITSTrackingV1.C:105
 AliITSTrackingV1.C:106
 AliITSTrackingV1.C:107
 AliITSTrackingV1.C:108
 AliITSTrackingV1.C:109
 AliITSTrackingV1.C:110
 AliITSTrackingV1.C:111
 AliITSTrackingV1.C:112
 AliITSTrackingV1.C:113
 AliITSTrackingV1.C:114
 AliITSTrackingV1.C:115
 AliITSTrackingV1.C:116
 AliITSTrackingV1.C:117
 AliITSTrackingV1.C:118
 AliITSTrackingV1.C:119
 AliITSTrackingV1.C:120
 AliITSTrackingV1.C:121
 AliITSTrackingV1.C:122
 AliITSTrackingV1.C:123
 AliITSTrackingV1.C:124
 AliITSTrackingV1.C:125
 AliITSTrackingV1.C:126
 AliITSTrackingV1.C:127
 AliITSTrackingV1.C:128
 AliITSTrackingV1.C:129
 AliITSTrackingV1.C:130
 AliITSTrackingV1.C:131
 AliITSTrackingV1.C:132
 AliITSTrackingV1.C:133
 AliITSTrackingV1.C:134
 AliITSTrackingV1.C:135
 AliITSTrackingV1.C:136
 AliITSTrackingV1.C:137
 AliITSTrackingV1.C:138
 AliITSTrackingV1.C:139
 AliITSTrackingV1.C:140
 AliITSTrackingV1.C:141
 AliITSTrackingV1.C:142
 AliITSTrackingV1.C:143
 AliITSTrackingV1.C:144