//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Straight line pattern recognition using a 2-dim // Projection. Internally, a Hough Transform is used. // // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Felix Boehmer TUM (original author) // //----------------------------------------------------------- #ifndef TPCSLRPRTASKALICE_H #define TPCSLRPRTASKALICE_H //Base class #include "FairTask.h" #include "FairField.h" #include "TClonesArray.h" #include "TString.h" #include "TF1.h" #include "TStyle.h" #include #include "TH1F.h" // Collaborating Class Declarations ------------------------ class TpcCluster; class Hough2DNodeAlice; class TpcDigiPar; class FairField; class TFile; class TpcSLPatternRecoTaskAlice : public FairTask { public: // Constructor ---------------------------------------------- TpcSLPatternRecoTaskAlice(); ~TpcSLPatternRecoTaskAlice(); virtual InitStatus Init(); virtual void Exec(Option_t* opt); // Setters -------------------------------------------------- void SetPersistence(Bool_t opt=kTRUE) {fPersistence=opt;} void SetClusterBranchName(TString cln) {fClusterBranchName=cln;} void SetDigiBranchName(TString cln) {fDigiBranchName=cln;} void SetTrackBranchName(TString tn) {fTrackBranchName=tn;} void SetHoughTrackBranchName(TString tn) {fHoughTrackBranchName=tn;} //pgadow void SetParameterSpace(double* mins, double* maxs); void SetDepth(int depth) {fDepth=depth;} void SetThresh(int thresh) {fThresh=thresh;} void SetMinCandHits(int min) {fMin=min;} void SetClusterAmpCut(double c) {fAmpCut=c;} void SetCutTracksParallelZ(unsigned int limit) {fZStackLimit=limit;} void SetNClusterLimit(unsigned int ncl) {fClLimit=ncl;} void SetAbsMomentum(unsigned int s) {fMomScale=s;} //set absolute momentum void SetSortMode(int opt) {fSortMode=opt;} //void SetProjectionXZ() {fXZ=true;fZY=false;fXY=false;} //find lines in X-Z //void SetProjectionZY() {fZY=true;fXZ=false;fXY=false;} //find lines in Z-Y (cosmics) //void SetProjectionXY() {fZY=false;fXZ=false;fXY=true;} //find lines in X-Y(CERN?) void CutSmallPad(Bool_t opt=kTRUE) {_cutsmallpad=opt;} void CutBigPad(Bool_t opt=kTRUE) {_cutbigpad=opt;} void SetSmoothing(Bool_t opt=kTRUE) {fSmoothing=opt;} void SetStoreHistograms(TString file); void SetDebugOutput(Bool_t opt=true) {fDebug=opt;} void SetChamberGeometry(double sxMin , double sxMax , double syMin , double syMax, double szMin, double szMax); //added by pgadow for alice iroc test void SetWriteHoughTracks(Bool_t opt = kTRUE) {fWriteHoughTracks = opt;fWriteTracks = !opt;} void SetWriteTracks(Bool_t opt = kTRUE) {fWriteTracks = opt;} void FinishTask(); private: void KillHistograms(std::map&); double fMins[4]; double fMaxs[4]; double fAmpCut; unsigned int fDepth; //termination depth of the FHT search unsigned int fThresh; //STATIC threshold of the FTH search unsigned int fMin; //minimum track candidate size int fSortMode; //0: distance 1: X 2: Y Bool_t fPersistence; Bool_t fXZ; Bool_t fZY; Bool_t fXY; Bool_t _cutbigpad; Bool_t _cutsmallpad ; Bool_t fStore; Bool_t fDebug; Bool_t fSmoothing; Bool_t fWriteHoughTracks; Bool_t fWriteTracks; TString fClusterBranchName; TString fDigiBranchName; TString fTrackBranchName; TString fHoughTrackBranchName; //pgadow TString fHistoFileName; TFile* fHistoFile; unsigned fClLimit; //limit nClusters an event may have TClonesArray* fClusterArray; TClonesArray* fDigiArray; TClonesArray* fTrackArray; TClonesArray* fHoughTrackArray; //pgadow TClonesArray* fMonitorArray; TpcDigiPar* fPar; TF1* fRep; //Hough space representation FairField* fField; int counter; unsigned int fZStackLimit; unsigned int fMomScale; std::vector colors; std::map fHistCont; //container for histograms TH1F* HoughTrackParameterR1; TH1F* HoughTrackParameterR2; TH1F* HoughTrackParameterR; TH1F* HoughTrackParameterTheta1; TH1F* HoughTrackParameterTheta2; //chamber geometry: //added by pgadow for alice iroc test double xMin ; double xMax ; double yMin ; double yMax ; double zMin ; double zMax ; // Private methods ----------------------------------------- //bool compareNodes (Hough2DNode* n1, Hough2DNode* n2); public: ClassDef(TpcSLPatternRecoTaskAlice,1) }; #endif