// Author: E. Taddei /***************************************************************************** * ESAF: Euso Simulation and Analysis Framework * * * * Id: HoughModule * * Package: Clustering * * Coordinator: * * * *****************************************************************************/ #ifndef __HOUGHMODULE_HH_ #define __HOUGHMODULE_HH_ #include #include "euso.hh" #include "RecoModule.hh" ////////////////////////////////////////////////////////////////////////////// // // // HoughModule // // // // // ////////////////////////////////////////////////////////////////////////////// class EusoCluster; class RecoRootEvent; class HoughModule : public RecoModule { public: // ctor HoughModule(); // dtor virtual ~HoughModule(); // Init method: called at the beginning of a run virtual Bool_t Init(); // called before each event process virtual Bool_t PreProcess(); // event processing virtual Bool_t Process( RecoEvent* ); // called after processing an event virtual Bool_t PostProcess(); // called at the end of each run virtual Bool_t Done(); // save root output virtual Bool_t SaveRootData( RecoRootEvent* ); // memory clean virtual void UserMemoryClean(); // get a specified cluster EusoCluster* GetCluster( Int_t num ); EsafConfigClass(Reco,HoughModule) private: Int_t fIdEv; // id of the event RecoEvent *fEv; RecoRootEvent *fRecoRootEvent; Int_t fMainMacroCellId; // id of the most populous macrocell Int_t fTotalNumPoints; // total number of points Int_t fNumPointsMinimum; // minimum number of points in a significant cluster Int_t fNumHitsMinimum; // minimum number of points in a significant pixel (from config file) Int_t fFinalNumHitsMinimum; // minimum number of points in a significant pixel ( from ProcessHoughAll() ) // number of pixels with minimum number of hits Int_t fNumPointsAll; //=fHittedAll.size(); // references to pixels with minimum number of hits vector fHittedAll; //initially selected (con fNumHitsMinimum) in ProcessHoughAll() vector fHittedSelHough; vector fHittedSel2Hough; vector fHittedFinal; //finally selected in ProcessHoughAll() - written in final cluster vector fHittedFinalMacrocell; //selected by ProcessHoughSingleMacrocell() or ProcessVelocity() and passed to ProcessHoughAll() vector fIdMacrocellsSelected;//id of macrocell selected by ProcessHoughSingleMacrocell() or ProcessVelocity() vector fHittedHoughMerged; Int_t ProcessHoughSingleMacrocell(); Int_t ProcessHoughAll(); Int_t ProcessVelocity(); void WriteSingleCluster(); Bool_t HoughTransform(vector x,vector y,vector t,vector c,vector id = vector() ); Float_t fAbsDevX,fAbsDevY; Double_t fTmin,fTmax,fXmin,fXmax,fYmin,fYmax; Float_t fCmaxToCmeanX,fCmaxToCmeanY; Float_t fCmaxToCmeanMinX,fCmaxToCmeanMinY; // vector of significant clusters vector fClusters; string fProcedure; string fKindHough; ClassDef(HoughModule,0) }; #endif /* __HOUGHMODULE_HH_ */