-#ifndef __CINT__
- #include <Riostream.h>
- #include "AliITSgeom.h"
- #include "AliITStrackerV2.h"
+/****************************************************************************
+ * Origin: I.Belikov, CERN, Jouri.Belikov@cern.ch *
+ ****************************************************************************/
- #include "TFile.h"
+#if !defined(__CINT__) || defined(__MAKECINT__)
+ #include "Riostream.h"
+ #include "TKey.h"
#include "TStopwatch.h"
+
+ #include "AliRun.h"
+ #include "AliMagF.h"
+ #include "AliRunLoader.h"
+ #include "AliTPCLoader.h"
+ #include "AliITSLoader.h"
+ #include "AliITS.h"
+ #include "AliITSgeom.h"
+ #include "AliITStrackerV2.h"
+ #include "AliESD.h"
#endif
-Int_t AliITSFindTracksV2(Int_t nev=1) { //number of events to process
+extern AliRun *gAlice;
+
+Int_t AliITSFindTracksV2(Int_t nev=5) { //number of events to process
cerr<<"Looking for tracks...\n";
+
+ if (gAlice) {
+ delete gAlice->GetRunLoader();
+ delete gAlice;
+ gAlice=0;
+ }
+
+ AliRunLoader* rl = AliRunLoader::Open("galice.root");
+ if (rl == 0x0) {
+ cerr<<"AliITSFindTracks.C : Can not open session RL=NULL"<< endl;
+ return 3;
+ }
+
+ AliITSLoader* itsl = (AliITSLoader*)rl->GetLoader("ITSLoader");
+ if (itsl == 0x0) {
+ cerr<<"AliITSFindTracksV2.C : Can not get ITS loader"<<endl;
+ return 4;
+ }
- TFile *out=TFile::Open("AliITStracksV2.root","new");
- if (!out->IsOpen()) {cerr<<"Delete old AliITStracksV2.root !\n"; return 1;}
+ if (rl->LoadgAlice()) {
+ cerr<<"AliITSFindTracksV2.C : LoadgAlice returned error"<<endl;
+ delete rl;
+ return 3;
+ }
- TFile *in=TFile::Open("AliTPCtracks.root");
- if (!in->IsOpen()) {cerr<<"Can't open AliTPCtracks.root !\n"; return 2;}
+ AliKalmanTrack::SetConvConst(
+ 1000/0.299792458/rl->GetAliRun()->Field()->SolenoidField()
+ );
+
+ AliITS *dITS = (AliITS*)rl->GetAliRun()->GetDetector("ITS");
+ if (!dITS) {
+ cerr<<"AliITSFindClusters.C : Can not find the ITS detector !"<<endl;
+ return 6;
+ }
+ AliITSgeom *geom = dITS->GetITSgeom();
- TFile *file=TFile::Open("AliITSclustersV2.root");
- if (!file->IsOpen()) {cerr<<"Can't open AliITSclustersV2.root !\n";return 3;}
+ AliITStrackerV2 tracker(geom);
- AliITSgeom *geom=(AliITSgeom*)file->Get("AliITSgeom");
- if (!geom) {cerr<<"Can't get AliITSgeom !\n"; return 4;}
+ itsl->LoadRecPoints("read");
+ if (nev>rl->GetNumberOfEvents()) nev=rl->GetNumberOfEvents();
Int_t rc=0;
- TStopwatch timer;
- AliITStrackerV2 tracker(geom);
+
+ TFile *itsf=TFile::Open("AliESDits.root","RECREATE");
+ if ((!itsf)||(!itsf->IsOpen())) {
+ cerr<<"Can't AliESDits.root !\n"; return 1;
+ }
+ TFile *tpcf=TFile::Open("AliESDtpc.root");
+ if ((!tpcf)||(!tpcf->IsOpen())) {
+ cerr<<"Can't AliESDtpc.root !\n"; return 1;
+ }
+ TKey *key=0;
+ TIter next(tpcf->GetListOfKeys());
+ TStopwatch timer;
for (Int_t i=0; i<nev; i++) {
- cerr<<"Processing event number : "<<i<<endl;
- tracker.SetEventNumber(i);
- //Double_t xyz[]={0.,0.,0.}, ers[]={0.,0.,0.01};//main vertex with errors
- //tracker.SetVertex(xyz,ers);
- //Int_t flag[]={1}; //some default flags
- //flag[0]= 0; tracker.SetupFirstPass(flag); //no constraint
- //flag[0]=-1; tracker.SetupSecondPass(flag); //skip second pass
- rc=tracker.Clusters2Tracks(in,out);
+ tpcf->cd();
+ if ((key=(TKey*)next())==0) break;
+ cerr<<"Processing event number: "<<i<<endl;
+ AliESD *event=(AliESD*)key->ReadObj();
+
+ rl->GetEvent(i);
+
+ TTree *cTree=itsl->TreeR();
+ if (!cTree) {
+ cerr<<"AliITSFindTracksV2.C : Can't get the clusters tree !"<<endl;
+ return 4;
+ }
+
+ tracker.LoadClusters(cTree);
+ rc=tracker.Clusters2Tracks(event);
+ tracker.UnloadClusters();
+
+ if (rc==0) {
+ Char_t ename[100];
+ sprintf(ename,"%d",i);
+ itsf->cd();
+ if (!event->Write(ename)) rc++;
+ }
+ if (rc) {
+ cerr<<"Something bad happened...\n";
+ }
+ delete event;
}
timer.Stop(); timer.Print();
- delete geom; //Thanks to Mariana Bondila
+ tpcf->Close();
+ itsf->Close();
- file->Close();
- in->Close();
- out->Close();
+ delete rl;
return rc;
}