ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__) 
  #include <Riostream.h>
  #include "AliITSgeom.h"
  #include "AliITS.h"
  #include "AliITStrackerSA.h"
  #include "AliITSVertexerFast.h"
  #include "AliRun.h"
  #include "AliRunLoader.h"
//  #include "AliTPCLoader.h"
  #include "AliITSLoader.h"
  #include "TStopwatch.h"
#endif

Int_t AliITSFindTracksSA(Int_t evin=0,Int_t nevents=1,char *opt="onlyITS+6/6",const Char_t *clusterFileName="clusters.root", const Char_t *tracksFileName="ITS.TracksSA.root") {

  //This macro finds tracks in the ITS Stand Alone and writes them in
  //the file ITS.TracksSA.root as tracks of class AliITStracksV2.

  //This macro needs both AliITSRecPoint (to find the vertex) and 
  //AliITSclusterV2 reconstructed points (track finding). Clusters V2
  //must be saved in a file with a different name from that of RecPoint.

  //Options: write onlyITS to track only with the ITS
  //         without the option onlyITS combined tracking TPC+ITS 
  //         and ITS stand-alone will be performed
  //
  //         write 6/6 to accept only tracks with 6 clusters
  //         write 5/6 to accept tracks with 5 clusters good over 6

   
   if (gAlice) {
      delete AliRunLoader::Instance();
      delete gAlice; 
      gAlice=0;
   }
 
   AliRunLoader* rl = AliRunLoader::Open("galice.root");
   if (rl == 0x0) {
      cerr<<"AliITSFindTracksSA.C : Can not open session RL=NULL"<< endl;
      return 3;
   }
   
   Int_t retval = rl->LoadgAlice();
   if (retval) {
      cerr<<"AliITSFindTracksSA.C : LoadgAlice returned error"<<endl;
      delete rl;
      return 3;
   }
   
   retval = rl->LoadHeader();
   if (retval) {
      cerr<<"AliITSFindTracksSA.C : LoadHeader returned error"<<endl;
      delete rl;
      return 3;
   }
   gAlice=rl->GetAliRun();
       
   AliITSLoader* itsl = (AliITSLoader*)rl->GetLoader("ITSLoader");
   if (itsl == 0x0) {
      cerr<<"AliITSFindTracksSA.C : Can not get ITS loader"<<endl;
      return 4;
   }
   
   AliITS *iTS = (AliITS*)gAlice->GetDetector("ITS");
   if (!iTS) {
      cerr<<"AliITSFindTracksSA.C : Can not find the ITS detector !"<<endl;
      return 6;
   }
   AliITSgeom *geom = iTS->GetITSgeom();
   AliKalmanTrack::SetConvConst(1000/0.299792458/rl->GetAliRun()->Field()->SolenoidField());
   
   TString choice(opt);
   Bool_t onlyITS=choice.Contains("onlyITS");

   TStopwatch timer;
  
   for(Int_t iev=evin;iev<nevents;iev++){
     rl->GetEvent(iev);
     itsl->LoadRecPoints();

     //AliITSVertexerPPZ* vertexer = new AliITSVertexerPPZ("vertici.root");
     Double_t smear[3]={0.0150,0.0150,0.0150};
     AliITSVertexerFast* vertexer = new AliITSVertexerFast(smear);
     TTree* cltree = itsl->TreeR();
     AliITSVertex* vert = vertexer->FindVertexForCurrentEvent(cltree);
     AliITStrackerSA tracker(geom,vert);  
     tracker.SetEventNumber(iev);
     
     itsl->UnloadRecPoints();
     itsl->SetRecPointsFileName(clusterFileName);
     itsl->LoadRecPoints();
    
     if(onlyITS){
       itsl->SetTracksFileName(tracksFileName);
       itsl->LoadTracks("recreate");
              
       TTree* treec = (TTree*)itsl->TreeR();
       TTree *itsTree=itsl->TreeT();
       if (!itsTree) {
	 itsl->MakeTree("T");
	 itsTree=itsl->TreeT();
       }
            
       tracker.FindTracks(treec,itsTree,iev,opt);
       itsl->WriteTracks("OVERWRITE");
     } 
     if(!onlyITS){
       itsl->LoadTracks("read");
       TTree *treev2=(TTree*)itsl->TreeT();
       TTree* treec = (TTree*)itsl->TreeR();
       tracker.UseFoundTracksV2(iev,treev2,treec);
       itsl->UnloadTracks();
       itsl->SetTracksFileName(tracksFileName);
       itsl->LoadTracks("recreate");
       TTree *itsTree=itsl->TreeT();
       if (!itsTree) {
	 itsl->MakeTree("T");
	 itsTree=itsl->TreeT();
       }
       tracker.FindTracks(treec,itsTree,iev,opt);
       itsl->WriteTracks("OVERWRITE");
       
    }
     
   }
   timer.Stop(); timer.Print();   
   delete geom; 

  
   return 0;
}





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