1 void test(char *file="/prog/alice/data/Rawdata/1_patch/pp/event_0/",bool bin=true)
4 // l.UnSet(AliL3Logger::kDebug);
5 // l.UnSet(AliL3Logger::kAll);
6 l.Set(AliL3Logger::kAll);
10 Int_t fNEtaSegments = 1;
17 fHoughTransformer = new AliL3HoughTransformer(slice,patch,fNEtaSegments);
18 fMemHandler = new AliL3FileHandler();
19 fMaxFinder = new AliL3HoughMaxFinder("KappaPhi");
21 fTransform = new AliL3Transform();
23 fHoughTransformer->CreateHistograms(64,-0.012,0.012,64,-0.35,0.35);
24 fHoughTransformer->SetThreshold(10);
25 fTracks = new AliL3TrackArray("AliL3HoughTrack");
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);
31 road->SetMarkerStyle(5);
32 road->SetMarkerColor(2);
37 AliL3DigitRowData *digits =0;
39 if(bin) //read data from binary files
44 sprintf(name,"%sdigits_%d_%d.raw",fPath,slice,patch);
45 fMemHandler->SetBinaryInput(name);
46 digits = (AliL3DigitRowData *)fMemHandler->CompBinary2Memory(ndigits);
47 fMemHandler->CloseBinaryInput();
49 else //read data from root file
51 const Int_t NRows[6][2] = {{0,31},{32,63},{64,91},{92,119},{120,143},{144,175}};
52 const int nr[2] = {0,175};
54 fMemHandler->SetAliInput(file);
55 fMemHandler->Init(slice,patch,NRows[patch]);
56 fMemHandler->Init(fTransform);
57 digits=(AliL3DigitRowData *)fMemHandler->AliDigits2Memory(ndigits);
58 fMemHandler->CloseAliInput();
61 fHoughTransformer->SetInputData(ndigits,digits);
62 fEval = new AliL3HoughEval();
63 fEval->InitTransformer(fHoughTransformer);
64 //fEval->SetNumOfRowsToMiss(0);
65 //fEval->SetNumOfPadsToLook(2);
66 //fEval->RemoveFoundTracks();
67 AliL3HoughTrack *track;
68 AliL3Histogram *histo;
73 printf("Transforming\n");
74 double init = AliL3Benchmark::GetCpuTime();
75 fHoughTransformer->TransformCircle();
76 double final = AliL3Benchmark::GetCpuTime();
77 printf("done in %f ms\n",(final-init)*1000);
79 for(Int_t e=0; e<fNEtaSegments; e++)
81 histo = (AliL3Histogram*)fHoughTransformer->GetHistogram(e);
84 fMaxFinder->SetHistogram(histo);
89 fMaxFinder->FindPeak1(x,y,weight,n);
90 track = new AliL3HoughTrack();
91 track->SetTrackParameters(x[0],y[0],1);
93 // if(!fEval->LookInsideRoad(track,e))
99 for(int t=0; t<176; t++)
103 track->GetCrossingPoint(t,xyz_tr);
104 road->Fill(xyz_tr[0],xyz_tr[1],1);
117 image = new AliL3Histogram("image","",250,0,250,250,-125,125);
118 fEval->DisplayEtaSlice(eind,image);
120 c1 = new TCanvas("c1","",1000,500);
123 histo = (AliL3Histogram*)fHoughTransformer->GetHistogram(eind);
125 {printf("No histogram\n"); return;}
134 void process(char *digitfile="/prog/alice/data/Rawdata/6_patch/hg_42105_s1-3/",bool bin=true,char *trackfile="good_tracks")
137 // l.UnSet(AliL3Logger::kDebug);
138 // l.UnSet(AliL3Logger::kAll);
139 //l.Set(AliL3Logger::kError);
143 transform = new AliL3Transform();
145 double torad = 3.1415/180;
147 a = new AliL3Hough(digitfile,bin,100);
151 a->AddAllHistograms();
152 a->FindTrackCandidates();
154 a->WriteTracks("../comp/");
158 //a->MergeInternally();
160 //tracks = (AliL3TrackArray*)(a->GetInterMerger())->GetOutTracks();
161 //tracks = (AliL3TrackArray*)(a->GetMerger())->GetOutTracks();
162 tracks = (AliL3TrackArray*)a->GetTracks(0);
163 //a->GetEval(0)->CompareMC(tracks,"good_tracks_hg4000_s1");
167 for(int i=0; i<tracks->GetNTracks(); i++)
169 AliL3HoughTrack *track = (AliL3HoughTrack*)tracks->GetCheckedTrack(i);
171 track->GetCrossingPoint(row,xyz);
172 transform->Local2Raw(xyz,1,row);
173 cout<<"Recon. pad "<<(int)xyz[1]<<" time "<<(int)xyz[2]<<endl;
174 cout<<"Pt "<<track->GetPt()<<" phi "<<track->GetPhi0()<<" charge "<<track->GetCharge()<<endl;
185 // l.UnSet(AliL3Logger::kDebug);
186 // l.UnSet(AliL3Logger::kAll);
187 //l.Set(AliL3Logger::kError);
191 AliL3FileHandler *file = new AliL3FileHandler();
192 file->SetBinaryInput("tracks.raw");
193 fTracks = new AliL3TrackArray("AliL3HoughTrack");
194 file->Binary2TrackArray(fTracks);
195 cout<<"Ntracks "<<fTracks->GetNTracks()<<endl;
196 file->CloseBinaryInput();
202 a = new AliL3ClusterFinder();
209 void HistogramParticles(char *trackfile)
221 struct GoodTrack goodtracks[15000];
223 ifstream in(trackfile);
226 printf("Reading good tracks from file %s\n",trackfile);
227 while (in>>goodtracks[nt].label>>goodtracks[nt].code>>
228 goodtracks[nt].px>>goodtracks[nt].py>>goodtracks[nt].pz>>
229 goodtracks[nt].pt>>goodtracks[nt].eta>>goodtracks[nt].nhits)
234 cerr<<"Too many good tracks"<<endl;
240 int fNEtaSegments = 150;
241 Double_t etaslice = (0.9 - 0)/fNEtaSegments;
242 Int_t *particles = new Int_t[fNEtaSegments];
243 for(Int_t i=0; i<fNEtaSegments; i++)
246 for(Int_t i=0; i<nt; i++)
248 //if(goodtracks[i].nhits < 150) continue;
249 if(goodtracks[i].pt < 0.5) continue;
250 Int_t particleindex = (Int_t)(goodtracks[i].eta/etaslice);
251 if(particleindex < 0 || particleindex >= fNEtaSegments) continue;
252 particles[particleindex]++;
255 hist = new TH1F("hist","",21,0,20);
256 for(int i=0; i<fNEtaSegments; i++)
257 hist->Fill(particles[i]);
260 c1 = new TCanvas("c1","",2);