]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/hough/AliL3HoughTransformer.h
UpdateRowPointer is now static function in memhandler.
[u/mrichter/AliRoot.git] / HLT / hough / AliL3HoughTransformer.h
index 3e6b79045ce86d2efb3a1e355b9e8e028ec8c6a7..f418e128f46d6bba9e14514d1ab1fffbe2337a95 100644 (file)
@@ -3,68 +3,68 @@
 
 #include "AliL3RootTypes.h"
 
-struct AliL3Digits
-{
-  UShort_t fCharge;
-  UChar_t fPad;
-  UShort_t fTime;
-  Int_t fIndex;
-  AliL3Digits *fNextVolumePixel;
-  //AliL3Digits *nextPhiRowPixel;
-  AliL3Digits *nextRowPixel;
-};
-
-struct AliL3HoughContainer
-{
-  void *first;
-  void *last;
-};
-
-class TH2F;
 class AliL3Transform;
-class AliL3HoughEvaluate;
-class AliL3TrackArray;
+class AliL3Histogram;
+class AliL3DigitRowData;
 
 class AliL3HoughTransformer : public TObject {
   
  private:
 
-  friend class AliL3HoughEval;
-  
+  Int_t fSlice;
+  Int_t fPatch;
+  Int_t fNEtaSegments;
+  Double_t fEtaMin;
+  Double_t fEtaMax;
+  Int_t fThreshold;
   AliL3Transform *fTransform; //!
-
-  Int_t fNPhiSegments; //Number of patches in phi.
-  Float_t fEtaMin;
-  Float_t fEtaMax;
-  Int_t fNumEtaSegments;
-  Int_t fNumOfPadRows;
-  
-  AliL3HoughContainer *fRowContainer; //!
-  AliL3HoughContainer *fPhiRowContainer; //!
-  AliL3HoughContainer *fVolume; //!
-  Int_t fContainerBounds;
-  Int_t fNDigits;
-  Int_t **fIndex; //!
   
+  //Pointers to histograms
+  AliL3Histogram **fParamSpace; //!
+
+  //Data pointers
+  UInt_t fNDigitRowData;
+  AliL3DigitRowData *fDigitRowData; //!
   
-  Int_t fSlice;
-  Int_t fPatch;
+  void DeleteHistograms();
 
  public:
   AliL3HoughTransformer(); 
-  AliL3HoughTransformer(Int_t slice,Int_t patch,Float_t *etarange);
-  AliL3HoughTransformer(Int_t slice,Int_t patch,Double_t *etarange=0,Int_t n_eta_segments=1);
+  AliL3HoughTransformer(Int_t slice,Int_t patch,Int_t n_eta_segments);
   virtual ~AliL3HoughTransformer();
   
-  void Transform2Circle(TH2F *hist,Int_t eta_index);
-  void Transform2Line(TH2F *hist,Int_t ref_row,Int_t *rowrange,Double_t *phirange,TH2F *raw=0);
-  void TransformLines2Circle(TH2F *hist,AliL3TrackArray *tracks);
-  void GetPixels(Char_t *rootfile,TH2F *hist=0);
-  void InitTemplates(TH2F *hist);
-  void CountBins();
+  void SetInputData(UInt_t ndigits,AliL3DigitRowData *ptr);
+  void CreateHistograms(Int_t nxbin,Double_t ptmin,Int_t nybin,Double_t phimin,Double_t phimax);
+  void CreateHistograms(Int_t nxbin=64,Double_t xmin=-0.006,Double_t xmax=0.006,
+                       Int_t nybin=64,Double_t ymin=-0.26,Double_t ymax=0.26);
+  void Reset();
+  void TransformCircle();
+  void TransformLine();
+
+  //Getters
+  Int_t GetSlice() {return fSlice;}
+  Int_t GetPatch() {return fPatch;}
+  Int_t GetNEtaSegments() {return fNEtaSegments;}
+  Int_t GetThreshold() {return fThreshold;}
+  Double_t GetEtaMin() {return fEtaMin;}
+  Double_t GetEtaMax() {return fEtaMax;}
+  void *GetDataPointer() {return (void*)fDigitRowData;}
+  AliL3Histogram *GetHistogram(Int_t eta_index);
+  
+  //setters
+  void SetThreshold(Int_t i) {fThreshold = i;}
 
   ClassDef(AliL3HoughTransformer,1)
 
 };
 
+inline AliL3Histogram *AliL3HoughTransformer::GetHistogram(Int_t eta_index)
+{
+  if(!fParamSpace || eta_index >= fNEtaSegments)
+    return 0;
+  if(!fParamSpace[eta_index])
+    return 0;
+  return fParamSpace[eta_index];
+}
+
 #endif