WCSimRingFinder.hh

Go to the documentation of this file.
00001 #ifndef WCSIMRINGFINDER_HH
00002 #define WCSIMRINGFINDER_HH
00003 
00004 #include "TObject.h"
00005 
00006 #include <vector>
00007 
00008 class WCSimRecoDigit;
00009 class WCSimRecoEvent;
00010 class WCSimRecoVertex;
00011 class WCSimRecoRing;
00012 class WCSimHoughTransform;
00013 class WCSimHoughTransformArray;
00014 
00015 class WCSimRingFinder : public TObject {
00016 
00017  public:
00018   static WCSimRingFinder* Instance();
00019 
00020   static void UseRecoVertex();
00021 
00022   static void HoughX( Int_t x );
00023   static void HoughY( Int_t y );
00024   static void HoughPoints( Int_t n );
00025   static void ConeAngleBins( Int_t bins );
00026   static void ConeAngleMin( Double_t min );
00027   static void ConeAngleMax( Double_t max );
00028 
00029   static void PrintParameters();
00030   void RunPrintParameters();
00031 
00032   void SetHoughX( Int_t x )             { fHoughX = x; }
00033   void SetHoughY( Int_t y )             { fHoughY = y; }
00034   void SetHoughPoints( Int_t n )        { fHoughPoints = n; }
00035   void SetConeAngleBins( Int_t bins )   { fConeAngleBins = bins; }
00036   void SetConeAngleMin( Double_t min )  { fConeAngleMin = min; }
00037   void SetConeAngleMax( Double_t max )  { fConeAngleMax = max; }
00038 
00039   void SetUsingRecoVertex() { fUseVertex = 1; }
00040   Bool_t UsingRecoVertex()  { return fUseVertex; }
00041 
00042   std::vector<WCSimRecoRing*>* Run(WCSimRecoVertex* vtx);
00043   std::vector<WCSimRecoRing*>* Run(WCSimRecoEvent* evt, WCSimRecoVertex* vtx);
00044   std::vector<WCSimRecoRing*>* Run(std::vector<WCSimRecoDigit*>* digitlist, WCSimRecoVertex* vtx);
00045 
00046   WCSimHoughTransform* HoughTransform(WCSimRecoEvent* evt, 
00047                                       WCSimRecoVertex* vtx, Double_t angle);
00048   WCSimHoughTransform* HoughTransform(std::vector<WCSimRecoDigit*>* digitlist, 
00049                                       WCSimRecoVertex* vtx, Double_t angle);
00050 
00051   WCSimHoughTransformArray* HoughTransformArray(WCSimRecoEvent* evt, 
00052                                                 WCSimRecoVertex* vtx);
00053   WCSimHoughTransformArray* HoughTransformArray(std::vector<WCSimRecoDigit*>* digitlist, 
00054                                                 WCSimRecoVertex* vtx);
00055 
00056  private:
00057   WCSimRingFinder();
00058   ~WCSimRingFinder();
00059 
00060   void Reset();
00061 
00062   // use reco vertex
00063   Bool_t fUseVertex;
00064 
00065   // hough transform parameters
00066   Int_t fHoughX;
00067   Int_t fHoughY;
00068   Int_t fHoughPoints;
00069   Int_t fConeAngleBins;
00070   Double_t fConeAngleMin;
00071   Double_t fConeAngleMax;
00072 
00073   // hough transform object
00074   WCSimHoughTransform* fHoughTransform;
00075 
00076   // hough transform array
00077   WCSimHoughTransformArray* fHoughTransformArray;
00078 
00079   // vectors of rings
00080   std::vector<WCSimRecoRing*>* fRingList;
00081 
00082   ClassDef(WCSimRingFinder,0)
00083 
00084 };
00085 
00086 #endif
00087 
00088 
00089 
00090 
00091 
00092 
00093