blabla
[u/mrichter/AliRoot.git] / HLT / hough / AliL3Hough.cxx
CommitLineData
f80b98cb 1//Author: Anders Strand Vestbo
2//Last Modified: 28.6.01
3
f000f8a5 4#include <string.h>
f80b98cb 5#include <TCanvas.h>
6#include <TFile.h>
f000f8a5 7
f80b98cb 8#include "AliL3Histogram.h"
f000f8a5 9#include "AliL3Hough.h"
10#include "AliL3HoughTransformer.h"
11#include "AliL3HoughMaxFinder.h"
f80b98cb 12#include "AliL3FileHandler.h"
13#include "AliL3DigitData.h"
14#include "AliL3HoughEval.h"
15#include "AliL3Transform.h"
16#include "AliL3Defs.h"
17#include "AliL3TrackArray.h"
18#include "AliL3HoughTrack.h"
f000f8a5 19
20ClassImp(AliL3Hough)
21
22AliL3Hough::AliL3Hough()
23{
24
25
26
27}
28
29
f80b98cb 30AliL3Hough::AliL3Hough(Int_t n_eta_segments,Int_t xbin,Double_t *xrange,Int_t ybin,Double_t *yrange)
f000f8a5 31{
32
f80b98cb 33 fNEtaSegments = n_eta_segments;
34 fNxbin = xbin;
35 fNybin = ybin;
36 fXmin = xrange[0];
37 fXmax = xrange[1];
38 fYmin = yrange[0];
39 fYmax = yrange[1];
40
41 fMemHandler = new AliL3FileHandler();
42 fMaxFinder = new AliL3HoughMaxFinder("KappaPhi");
43 fEval = new AliL3HoughEval();
44 fTransform = new AliL3Transform();
45 fDeleteTrack = kTRUE;
46 fTracks = new AliL3TrackArray("AliL3HoughTrack");
f000f8a5 47}
48
49
50AliL3Hough::~AliL3Hough()
51{
52
53 if(fHoughTransformer)
54 delete fHoughTransformer;
f80b98cb 55 if(fMemHandler)
56 delete fMemHandler;
57 if(fMaxFinder)
58 delete fMaxFinder;
59 if(fEval)
60 delete fEval;
61 if(fTransform)
62 delete fTransform;
f000f8a5 63}
64
f80b98cb 65void AliL3Hough::SetInput(Char_t *input,Bool_t binary)
f000f8a5 66{
f80b98cb 67 if(binary)
68 {
69 strcpy(fPath,input);
70 fUseBinary = kTRUE;
71 }
72 else
73 {
74 TFile *file = new TFile(input);
75 fMemHandler->SetAliInput(file);
76 fUseBinary = kFALSE;
77 }
f000f8a5 78
f000f8a5 79}
80
f80b98cb 81void AliL3Hough::ProcessSlice(Int_t slice)
f000f8a5 82{
f80b98cb 83
f000f8a5 84}
85
f80b98cb 86void AliL3Hough::ProcessPatch(Int_t slice,Int_t patch)
f000f8a5 87{
88
f80b98cb 89 Char_t histname[50];
90 Int_t i;
91
92 if(fHoughTransformer)
93 delete fHoughTransformer;
94 fHoughTransformer = new AliL3HoughTransformer(slice,patch);//,0,fNEtaSegments);
95
96 fHistos = new AliL3Histogram*[fNEtaSegments];
97 printf("Allocating %d bytes to histograms\n",fNEtaSegments*sizeof(AliL3Histogram));
98 for(i=0; i<fNEtaSegments; i++)
99 {
100 sprintf(histname,"hist%d",i);
101 fHistos[i] = new AliL3Histogram(histname,"",fNxbin,fXmin,fXmax,fNybin,fYmin,fYmax);
102 }
103
104 Char_t name[256];
105
106 UInt_t ndigits=0;
107 AliL3DigitRowData *digits =0;
108 // fMemHandler->Init(slice,patch,NRows[patch]);
109 //fMemHandler->Init(fTransform);
110 if(fUseBinary)
111 {
112 fMemHandler->Free();
113 sprintf(name,"%sdigits_%d_%d.raw",fPath,slice,patch);
114 fMemHandler->SetBinaryInput(name);
115 digits = (AliL3DigitRowData *)fMemHandler->CompBinary2Memory(ndigits);
116 fMemHandler->CloseBinaryInput();
117 }
118 else
119 {
120 digits=(AliL3DigitRowData *)fMemHandler->AliDigits2Memory(ndigits);
121 }
122 printf("Setting up tables\n");
123 fHoughTransformer->SetHistogram(fHistos[0]);
124 fHoughTransformer->InitTables();
125 fHoughTransformer->SetInputData(ndigits,digits);
126 fEval->SetTransformer(fHoughTransformer);
127
128 AliL3HoughTrack *track;
129 Int_t good_count;
130 while(1)
131 {
132 fHoughTransformer->TransformTables(fHistos);
133
134 good_count=0;
135 for(Int_t e=0; e<fNEtaSegments; e++)
136 {
137 fMaxFinder->SetHistogram(fHistos[e]);
138 track = (AliL3HoughTrack*)fMaxFinder->FindPeak(3,0.95,5);
139 if(fEval->LookInsideRoad(track,e,fDeleteTrack))
140 {
141 //Found a good track here
142 fTracks->AddLast(track);
143 good_count++;
144 }
145 }
146 break;
147 if(good_count==0)
148 break;
149 }
150 printf("good_count %d\n",good_count);
f000f8a5 151
152}
f80b98cb 153