+ // ITS clusterer and vertexer
+ fBenchmark->Start("ITS Clusterer");
+ AliHLTITSclusterer clusterer(0);
+ AliRawReader *itsrawreader=new AliRawReaderDate(ptr);
+ TTree* treeClusters = new TTree("TreeL3ITSclusters"," "); //make a tree
+ clusterer.Digits2Clusters(itsrawreader,treeClusters);
+ fBenchmark->Stop("ITS Clusterer");
+
+ AliHLTITSVertexerZ vertexer;
+ AliESDVertex *vertex = vertexer.FindVertexForCurrentEvent(geom,treeClusters);
+ Double_t vtxPos[3];
+ Double_t vtxErr[3]={0.005,0.005,0.010};
+ vertex->GetXYZ(vtxPos);
+ // vertex->GetSigmaXYZ(vtxErr);
+ esd->SetVertex(vertex);
+
+ // TPC Hough reconstruction
+ Float_t ptmin = 0.1*AliHLTTransform::GetSolenoidField();
+ Float_t zvertex = vtxPos[2];
+
+ // Run the Hough Transformer
+ fBenchmark->Start("Init");
+ AliHLTHough *hough1 = new AliHLTHough();
+
+ hough1->SetThreshold(4);
+ hough1->CalcTransformerParams(ptmin);
+ hough1->SetPeakThreshold(70,-1);
+ // printf("Pointer is %x\n",ptr);
+ hough1->Init("./", kFALSE, 100, kFALSE,4,0,(Char_t*)ptr,zvertex);
+ hough1->SetAddHistograms();
+ fBenchmark->Stop("Init");
+
+ fBenchmark->Start("Init");
+ AliHLTHough *hough2 = new AliHLTHough();
+
+ hough2->SetThreshold(4);
+ hough2->CalcTransformerParams(ptmin);
+ hough2->SetPeakThreshold(70,-1);
+ // printf("Pointer is %x\n",ptr);
+ hough2->Init("./", kFALSE, 100, kFALSE,4,0,(Char_t*)ptr,zvertex);
+ hough2->SetAddHistograms();
+ fBenchmark->Stop("Init");
+
+ Int_t nglobaltracks = 0;
+ /*
+ hough1->StartProcessInThread(0,17);
+ hough2->StartProcessInThread(18,35);
+
+ // gSystem->Sleep(20000);
+ if(hough1->WaitForThreadFinish())
+ ::Fatal("AliHLTHough::WaitForThreadFinish"," Can not join the required thread! ");
+ if(hough2->WaitForThreadFinish())
+ ::Fatal("AliHLTHough::WaitForThreadFinish"," Can not join the required thread! ");
+
+ gSystem->MakeDirectory("hough1");
+ hough1->WriteTracks("./hough1");
+ gSystem->MakeDirectory("hough2");
+ hough2->WriteTracks("./hough2");
+ */
+
+ for(int slice=0; slice<=17; slice++)
+ {
+ // cout<<"Processing slice "<<slice<<endl;
+ fBenchmark->Start("ReadData");
+ hough1->ReadData(slice,0);
+ fBenchmark->Stop("ReadData");
+ fBenchmark->Start("Transform");
+ hough1->Transform();
+ fBenchmark->Stop("Transform");
+ hough1->AddAllHistogramsRows();
+ hough1->FindTrackCandidatesRow();
+ fBenchmark->Start("AddTracks");
+ hough1->AddTracks();
+ fBenchmark->Stop("AddTracks");
+
+ // AliHLTTrackArray* tracks = (AliHLTTrackArray*)hough1->GetTracks(0);
+ // nglobaltracks += tracks->GetNTracks();
+ }
+ for(int slice=18; slice<=35; slice++)
+ {
+ // cout<<"Processing slice "<<slice<<endl;
+ fBenchmark->Start("ReadData");
+ hough2->ReadData(slice,0);
+ fBenchmark->Stop("ReadData");
+ fBenchmark->Start("Transform");
+ hough2->Transform();
+ fBenchmark->Stop("Transform");
+ hough2->AddAllHistogramsRows();
+ hough2->FindTrackCandidatesRow();
+ fBenchmark->Start("AddTracks");
+ hough2->AddTracks();
+ fBenchmark->Stop("AddTracks");
+
+ // AliHLTTrackArray* tracks = (AliHLTTrackArray*)hough2->GetTracks(0);
+ // nglobaltracks += tracks->GetNTracks();
+ }
+
+ nglobaltracks += hough1->FillESD(esd);
+ nglobaltracks += hough2->FillESD(esd);
+
+ // ITS tracker
+ AliHLTITStracker itsTracker(0);
+ itsTracker.SetVertex(vtxPos,vtxErr);
+
+ itsTracker.LoadClusters(treeClusters);
+ itsTracker.Clusters2Tracks(esd);
+ itsTracker.UnloadClusters();
+
+ fBenchmark->Stop("Overall timing");
+ time.Set();
+ if (file) fprintf(file, "%s\n", time.AsString());
+ if (file) fprintf(file, "run: %d event: %d %d\n",
+ rawReader.GetRunNumber(),
+ rawReader.GetEventId()[0],
+ rawReader.GetEventId()[1]);
+ if (errorCode) fprintf(file, "ERROR: %d\n", errorCode);
+
+ if (file) fprintf(file, "Hough Transformer found %d tracks\n",nglobaltracks);
+
+ hough1->DoBench("hough1");
+ hough2->DoBench("hough2");
+ fBenchmark->Analyze("overall");
+ if (file) {
+ FILE* bench = fopen("hough1.dat", "r");
+ while (bench && !feof(bench)) {
+ char buffer[256];
+ if (!fgets(buffer, 256, bench)) break;
+ fprintf(file, "%s", buffer);
+ }
+ fclose(bench);
+ }
+ if (file) {
+ FILE* bench = fopen("hough2.dat", "r");
+ while (bench && !feof(bench)) {
+ char buffer[256];
+ if (!fgets(buffer, 256, bench)) break;
+ fprintf(file, "%s", buffer);
+ }
+ fclose(bench);
+ }
+ if (file) {
+ FILE* bench = fopen("overall.dat", "r");
+ while (bench && !feof(bench)) {
+ char buffer[256];
+ if (!fgets(buffer, 256, bench)) break;
+ fprintf(file, "%s", buffer);
+ }
+ fclose(bench);
+ fprintf(file, "\n\n");
+ }
+
+ delete hough1;
+ delete hough2;
+
+ esd->Reset();
+ }
+ // }
+
+ /*