]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/programs/runhough.cxx
Added support for static libraries,
[u/mrichter/AliRoot.git] / HLT / programs / runhough.cxx
CommitLineData
e0c2b115 1// $Id$
2
02f030e3 3// Author: Constantin Loizides <loizides@ikf.uni-frankfurt.de
4//*-- Copyright &copy ALICE HLT Group
e0c2b115 5
ebbe3342 6#include <AliL3StandardIncludes.h>
e0c2b115 7
8#include <AliL3RootTypes.h>
ebbe3342 9#include <AliL3Logging.h>
10#include <AliL3Logger.h>
e0c2b115 11#include <AliL3Transform.h>
12#include <AliL3Track.h>
13#include <AliL3TrackArray.h>
14#include <AliL3HoughTrack.h>
15#include <AliL3ClustFinderNew.h>
16#include <AliL3MemHandler.h>
17#include <AliL3SpacePointData.h>
e0c2b115 18#include <AliL3HoughBaseTransformer.h>
e0c2b115 19#include <AliL3HoughTransformer.h>
ebbe3342 20#include <AliL3HoughTransformerLUT.h>
21#include <AliL3HoughTransformerVhdl.h>
e0c2b115 22#include <AliL3HoughMaxFinder.h>
ebbe3342 23#include <AliL3Hough.h>
3e87ef69 24
e0c2b115 25#ifndef no_root
26#include <TROOT.h>
27#include <TApplication.h>
28#include <TCanvas.h>
29#include <TH2.h>
30#include <TGraph.h>
31#include <TGraphErrors.h>
32#endif
33
ebbe3342 34#if GCCVERSION == 3
35using namespace std;
36#endif
e0c2b115 37
3e87ef69 38int main(Int_t argc,Char_t **argv)
e0c2b115 39{
40 Int_t sl=0;
41 Int_t sh=0;
42 Int_t segs=100;
43
44 AliL3Logger l;
45 l.Set(AliL3Logger::kAll);
46 l.UseStderr();
47 //l.UseStdout();
48 //l.UseStream();
49
50 Char_t path[1024];
51 if(argc<2){
52 cout<<"Usage: runhough path [slow] [shigh] [segs]"<<endl;
53 exit(1);
54 }
55 strcpy(path,argv[1]);
56 if (argc>2) {
57 sl=atoi(argv[2]);
58 }
59 if (argc>3) {
60 sh=atoi(argv[3]);
61 }
62 if (argc>4) {
63 segs=atoi(argv[4]);
64 }
65
66 //AliL3FFloat::SetParams(10000);
67 AliL3Transform::Init(path);
68
69#if 0
70 runhough(sl,sh,path,segs);
ebbe3342 71#else //do some comparison tests
e0c2b115 72
ebbe3342 73 AliL3HoughBaseTransformer *fh1 = new AliL3HoughTransformerVhdl(0,0,segs);
74 AliL3HoughBaseTransformer *fh2 = new AliL3HoughTransformerLUT(0,0,segs);
e0c2b115 75
5a31e9df 76 fh1->CreateHistograms(64,0.1,64,-30.,30.);
77 fh2->CreateHistograms(64,0.1,64,-30.,30.);
e0c2b115 78
ebbe3342 79 fh1->Print();
e0c2b115 80
e0c2b115 81#endif
82
83 //AliL3FFloat::PrintStat();
84 exit(0);
85}
86
87
e0c2b115 88//----------------------------------------------------------------------------------
89// dont look beyond...
90//----------------------------------------------------------------------------------
91
92#if 0
93void runhough(Int_t sl,Int_t sh,Char_t *path,Int_t n_eta_segments, Int_t show_seg=-1)
94{
95
96 Bool_t binary = kTRUE;
97 Bool_t bit8 = kTRUE;
98 Int_t tv=1;
99 Int_t th=14000;
100
101 AliL3Hough *hough = new AliL3Hough();
102 hough->Init(path,binary,n_eta_segments,bit8,tv);
103 hough->GetMaxFinder()->SetThreshold(th);
104 Int_t ntracks=0;
105
106 for(Int_t slice=sl;slice<=sh;slice++){
107 hough->ReadData(slice);
108 hough->Transform();
109 hough->AddAllHistograms();
110 hough->FindTrackCandidates();
111 //hough->Evaluate(5);
112
113 AliL3TrackArray *tracks = (AliL3TrackArray*)hough->GetTracks(0);
114 ntracks=tracks->GetNTracks();
115 for(int i=0; i<ntracks; i++)
116 {
117 AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
118 if(!track) continue;
119 if(sl==sh) cout<<"pt "<<track->GetPt()<<" psi "<<track->GetPsi()<<" eta "<<track->GetEta()<<" etaindex "<<track->GetEtaIndex()<<" weight "<<track->GetWeight()<<endl;
120 if(show_seg<0) show_seg=track->GetEtaIndex();
121 }
122
123 cout<<"Found total "<<tracks->GetNTracks()<<" tracks"<<endl;
124 hough->WriteTracks(slice);
125 }
126
127 //if((ntracks>0)&&(sl==sh)) display(hough,show_seg);
128}
129#endif
130
131#if 0
132void display(AliL3Hough *hough,Int_t eta_index)
133{
134 //Display the data/tracks in eta_index
135
136 hough->InitEvaluate();
137 AliL3Histogram *digitd = new AliL3Histogram("Digits display","",250,0,250,250,-125,125);
138 AliL3Histogram *trackd = new AliL3Histogram("Found tracks display","",250,0,250,250,-125,125);
139 for(int i=0; i<6; i++)
140 hough->GetEval(i)->DisplayEtaSlice(eta_index,digitd);
141
142 float xyz[3];
143 tracks = (AliL3TrackArray*)hough->GetTracks(0);
144 for(int i=0; i<tracks->GetNTracks(); i++)
145 {
146 AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
147 if(!track) continue;
148 if(track->GetEtaIndex() != eta_index) continue;
149
150 for(int j=0; j<176; j++)
151 {
152 track->GetCrossingPoint(j,xyz);
153 trackd->Fill(xyz[0],xyz[1],1);
154 }
155 }
156
157 //Draw the parameter space
158 TCanvas *c1 = new TCanvas("c1","",2);
159 hough->GetTransformer(0)->GetHistogram(eta_index)->Draw("box");
160
161 //Draw the tracks
162 TCanvas *c2 = new TCanvas("c2","",2);
163 digitd->Draw();
164 trackd->Draw("same");
165 ((TH1F*)trackd->GetRootHisto())->SetMarkerColor(2);
166}
167#endif
168
169#if 0
170struct GoodTrack
171{
172 Int_t event;
173 Int_t label;
174 Double_t eta;
175 Int_t code;
176 Double_t px,py,pz;
177 Double_t pt;
178 Int_t nhits;
179};
180
181void geteff(char *fname)
182{
183 GoodTrack gt[15000];
184 int counter=0;
185 ifstream in(fname);
186 if(!in)
187 {
188 cerr<<"Could not open "<<fname<<endl;
189 return;
190 }
191 while(in>>gt[counter].event>>gt[counter].label>>gt[counter].code
192 >>gt[counter].px>>gt[counter].py>>gt[counter].pz>>gt[counter].pt>>gt[counter].eta>>gt[counter].nhits)
193 counter++;
194
195 char filename[100];
196 file = new AliL3MemHandler();
197}
198#endif