af4836358aeae1b98916cc19fe08bea3e2476594
[u/mrichter/AliRoot.git] / HLT / exa / runtracker.C
1 // $Id$
2
3 /**
4    Run this macro for cluster finder and track follower 
5    (see steering class AliLevel3).
6    In argument path, you have to provide the path to the directory 
7    where the data files should be located. In case of reading from a rootfile, you have to
8    make a symbolic link "digitfile.root", which points to the rootfile containing AliROOT 
9    digits tree and a symbolic link "alirunfile.root" pointing to a file containing
10    the ALIROOT geometry (TPC param). RUN with ALIROOT (not ROOT) if using root files.
11 */
12
13 void runtracker(Int_t minslice=0,Int_t maxslice=35,Char_t* path="./",Int_t nevent=1,Char_t *opath="./")
14 {
15   //Set your configuration here:
16   AliLevel3::EFileType filetype=AliLevel3::kRaw; //Assume input is RLE binary files, or rootfile.
17   Bool_t pileup=kFALSE; //Assume input is pileup event = non RLE binary files.
18   Int_t npatches = 1;   //Options; 1, 2 and 6.
19   Char_t trackparams[] = "SetTrackingParameters_4000bf04.C"; //Set this to correspond 
20                                                              //with mult. and BField
21   
22   //for aliroot the path should point to a file 
23   //containing the tpc geometry called alirunfile.root
24   Bool_t isinit=AliL3Transform::Init(path,(filetype!=AliLevel3::kBinary));
25   if(!isinit){
26     cerr << "Could not create transform settings, please check log for error messages!" << endl;
27     return;
28   }
29
30   for(Int_t ev=0; ev<nevent; ev++)
31     {
32       if(filetype==AliLevel3::kBinary)
33         a = new AliLevel3();
34       else 
35         {
36           Char_t fname[1024];
37           if(filetype==AliLevel3::kRaw)
38             sprintf(fname,"%s/raw.root",path);
39           else
40             sprintf(fname,"%s/galice.root",path);
41           a = new AliLevel3(fname);
42         }
43       
44       a->Init(path,filetype,npatches);
45       
46       if(pileup)
47         a->DoPileup();
48       
49       gROOT->LoadMacro(trackparams);
50       SetTrackingParameters(a);
51
52 #if 0 /* little comments */
53       phi_segments = 50;   //devide the space into phi_segments and eta_segments
54       eta_segments = 100;  //to access the search of points to that area!
55       trackletlength = 3;  //number of hits a tracklet has to have
56       tracklength = 5;     //number of hits a track has to have 
57       rowscopetracklet = 2;//search range of rows for a tracklet
58       rowscopetrack = 2;   //search range of rows for a track
59       min_pt_fit = 0;      
60       maxangle = 1.31;     //maximum angle for the three point look ahead
61       goodDist = 5;        //threshold distance between two hits when building tracklets
62       maxphi=100;          //maximum phi difference for neighboring hits
63       maxeta=100;          //maximum eta difference for neighboring hits
64       hitChi2Cut = 100;    //maximum chi2 of added hit to track
65       goodHitChi2 = 20;    //stop looking for next hit to add if chi2 is less than goodHitChi2
66       trackChi2Cut = 50;   //maximum chi2 for track after final fit
67 #endif
68
69
70       //a->DoRoi();    /*do region of interest*/
71       //a->DoMc();     /*do monte carlo identification*/
72       a->WriteFiles(opath); /*enable output*/
73       
74       a->ProcessEvent(minslice,maxslice);
75       //a->DoBench("benchmark_0");
76
77       delete a;
78     }
79 }
80
81