]>
Commit | Line | Data |
---|---|---|
b1886074 | 1 | void 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 | 134 | void 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 | ||
181 | void 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 | } |