]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/hough/test.C
Checking in latest changes.
[u/mrichter/AliRoot.git] / HLT / hough / test.C
CommitLineData
b1886074 1void test(char *file="/prog/alice/data/Rawdata/1_patch/pp/event_0/",bool bin=true)
46e4136e 2{
b1886074 3 AliL3Logger l;
4// l.UnSet(AliL3Logger::kDebug);
5// l.UnSet(AliL3Logger::kAll);
6 l.Set(AliL3Logger::kAll);
7 //l.UseStdout();
8 l.UseStream();
46e4136e 9
b1886074 10 Int_t fNEtaSegments = 1;
46e4136e 11
12 Char_t histname[50];
13 Int_t i;
14
15 int slice=1,patch=0;
1b737078 16
46e4136e 17 fHoughTransformer = new AliL3HoughTransformer(slice,patch,fNEtaSegments);
18 fMemHandler = new AliL3FileHandler();
19 fMaxFinder = new AliL3HoughMaxFinder("KappaPhi");
1b737078 20
46e4136e 21 fTransform = new AliL3Transform();
1b737078 22
b1886074 23 fHoughTransformer->CreateHistograms();//64,-0.012,0.012,64,-0.26,0.26);
1b737078 24 fHoughTransformer->SetThreshold(10);
46e4136e 25 fTracks = new AliL3TrackArray("AliL3HoughTrack");
b1886074 26
46e4136e 27 TH2F *road = new TH2F("road","",250,0,250,250,-125,125);
28 TH2F *peaks = new TH2F("peaks","",64,-0.006,0.006,64,-0.26,0.26);
29 peaks->SetMarkerStyle(3);
30 peaks->SetMarkerColor(2);
b1886074 31 road->SetMarkerStyle(5);
46e4136e 32 road->SetMarkerColor(2);
33
34 Char_t name[256];
35
36 UInt_t ndigits=0;
37 AliL3DigitRowData *digits =0;
38
39 if(bin) //read data from binary files
40 {
41 Char_t fPath[256];
42 strcpy(fPath,file);
43 fMemHandler->Free();
44 sprintf(name,"%sdigits_%d_%d.raw",fPath,slice,patch);
45 fMemHandler->SetBinaryInput(name);
46 digits = (AliL3DigitRowData *)fMemHandler->CompBinary2Memory(ndigits);
47 fMemHandler->CloseBinaryInput();
48 }
49 else //read data from root file
50 {
51 const Int_t NRows[6][2] = {{0,31},{32,63},{64,91},{92,119},{120,143},{144,175}};
b1886074 52 const int nr[2] = {0,175};
46e4136e 53 fMemHandler->Free();
b1886074 54 fMemHandler->SetAliInput(file);
46e4136e 55 fMemHandler->Init(slice,patch,NRows[patch]);
56 fMemHandler->Init(fTransform);
57 digits=(AliL3DigitRowData *)fMemHandler->AliDigits2Memory(ndigits);
b1886074 58 fMemHandler->CloseAliInput();
46e4136e 59 }
b1886074 60
46e4136e 61 fHoughTransformer->SetInputData(ndigits,digits);
b1886074 62 fEval = new AliL3HoughEval();
63 fEval->InitTransformer(fHoughTransformer);
64 //fEval->SetNumOfRowsToMiss(0);
46e4136e 65 //fEval->SetNumOfPadsToLook(2);
b1886074 66 //fEval->RemoveFoundTracks();
46e4136e 67 AliL3HoughTrack *track;
68 AliL3Histogram *histo;
69 Int_t good_count;
70 int eind=0;
71 while(1)
72 {
73 printf("Transforming\n");
74 double init = AliL3Benchmark::GetCpuTime();
1b737078 75 fHoughTransformer->TransformCircle();
46e4136e 76 double final = AliL3Benchmark::GetCpuTime();
77 printf("done in %f ms\n",(final-init)*1000);
46e4136e 78 good_count=0;
46e4136e 79 for(Int_t e=0; e<fNEtaSegments; e++)
80 {
81 histo = (AliL3Histogram*)fHoughTransformer->GetHistogram(e);
82 if(!histo) continue;
83
84 fMaxFinder->SetHistogram(histo);
1b737078 85 Int_t n=10;
b1886074 86 Int_t weight[10];
1b737078 87 Float_t x[10];
88 Float_t y[10];
b1886074 89 fMaxFinder->FindPeak1(x,y,weight,n);
1b737078 90 track = new AliL3HoughTrack();
91 track->SetTrackParameters(x[0],y[0],1);
46e4136e 92
b1886074 93 // if(!fEval->LookInsideRoad(track,e))
94 // continue;
95
96
97 if(e==eind)
46e4136e 98 {
b1886074 99 for(int t=0; t<176; t++)
100 {
101 if(t%10) continue;
102 float xyz_tr[3];
103 track->GetCrossingPoint(t,xyz_tr);
104 road->Fill(xyz_tr[0],xyz_tr[1],1);
105 }
46e4136e 106 }
b1886074 107 delete track;
46e4136e 108
109 }
b1886074 110
46e4136e 111 break;
112 if(good_count==0)
113 break;
114 }
1b737078 115
b1886074 116
46e4136e 117 image = new AliL3Histogram("image","",250,0,250,250,-125,125);
118 fEval->DisplayEtaSlice(eind,image);
1b737078 119
46e4136e 120 c1 = new TCanvas("c1","",1000,500);
121 c1->Divide(2);
122 c1->cd(1);
123 histo = (AliL3Histogram*)fHoughTransformer->GetHistogram(eind);
124 if(!histo)
125 {printf("No histogram\n"); return;}
b1886074 126 histo->Draw("box");
127
128 peaks->Draw("same");
1b737078 129 c1->cd(2);
130 image->Draw("");
b1886074 131 road->Draw("same");
1b737078 132}
133
b1886074 134void process(char *digitfile="/prog/alice/data/Rawdata/6_patch/hg_42105_s1-3/",bool bin=true,char *trackfile="good_tracks")
1b737078 135{
b1886074 136 AliL3Logger l;
137 // l.UnSet(AliL3Logger::kDebug);
138 // l.UnSet(AliL3Logger::kAll);
139 //l.Set(AliL3Logger::kError);
140 //l.UseStdout();
141 l.UseStream();
1b737078 142
b1886074 143 double torad = 3.1415/180;
144 int slice=1;
145 a = new AliL3Hough(digitfile,bin,100);
146 a->ReadData(slice);
147 a->Transform();
148 a->AddAllHistograms();
149 a->FindTrackCandidates();
150 a->Evaluate(3);
151 a->MergePatches();
152
153 //a->MergeInternally();
154
155 //tracks = (AliL3TrackArray*)(a->GetInterMerger())->GetOutTracks();
156 //tracks = (AliL3TrackArray*)(a->GetMerger())->GetOutTracks();
157 tracks = (AliL3TrackArray*)a->GetTracks(0);
158 //a->GetEval(0)->CompareMC(tracks,"good_tracks_hg4000_s1");
159
160
161 d = new AliL3HoughDisplay();
162 d->SetTracks(tracks);
163 UInt_t size;
164 int patch = 0;
165 data = (AliL3DigitRowData*)a->GetMemHandler(patch)->GetDataPointer(size);
166 //d->ShowData(data,size,slice,patch);
167 //return;
168 d->DisplayEvent();
169 //return;
170
171 for(int i=0; i<tracks->GetNTracks(); i++)
172 {
173 AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
174 if(!track) continue;
175 printf("found pt %f phi0 %f eta %f weight %d rowange %d %d\n",track->GetPt(),track->GetPhi0(),track->GetEta(),track->GetWeight(),track->GetFirstRow(),track->GetLastRow());
176 }
177 return;
178
179}
180
181void HistogramParticles(char *trackfile)
182{
183 struct GoodTrack
184 {
185
186 Int_t label;
187 Double_t eta;
188 Int_t code;
189 Double_t px,py,pz;
190 Double_t pt;
191 Int_t nhits;
192 };
193 struct GoodTrack goodtracks[15000];
194 Int_t nt=0;
195 ifstream in(trackfile);
196 if(in)
197 {
198 printf("Reading good tracks from file %s\n",trackfile);
199 while (in>>goodtracks[nt].label>>goodtracks[nt].code>>
200 goodtracks[nt].px>>goodtracks[nt].py>>goodtracks[nt].pz>>
201 goodtracks[nt].pt>>goodtracks[nt].eta>>goodtracks[nt].nhits)
202 {
203 nt++;
204 if (nt==15000)
205 {
206 cerr<<"Too many good tracks"<<endl;
207 break;
208 }
209 }
210 }
1b737078 211
b1886074 212 int fNEtaSegments = 150;
213 Double_t etaslice = (0.9 - 0)/fNEtaSegments;
214 Int_t *particles = new Int_t[fNEtaSegments];
215 for(Int_t i=0; i<fNEtaSegments; i++)
216 particles[i]=0;
1b737078 217
b1886074 218 for(Int_t i=0; i<nt; i++)
219 {
220 //if(goodtracks[i].nhits < 150) continue;
221 if(goodtracks[i].pt < 0.5) continue;
222 Int_t particleindex = (Int_t)(goodtracks[i].eta/etaslice);
223 if(particleindex < 0 || particleindex >= fNEtaSegments) continue;
224 particles[particleindex]++;
225 }
1b737078 226
b1886074 227 hist = new TH1F("hist","",21,0,20);
228 for(int i=0; i<fNEtaSegments; i++)
229 hist->Fill(particles[i]);
1b737078 230
1b737078 231
b1886074 232 c1 = new TCanvas("c1","",2);
233 hist->Draw();
1b737078 234
46e4136e 235}