//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // TPC cluster finder task // // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // // //----------------------------------------------------------- #ifndef TPCCLUSTERFINDERTASK_HH #define TPCCLUSTERFINDERTASK_HH // Base Class Headers ---------------- #include "FairTask.h" #include "TH2D.h" // Collaborating Class Headers ------- #include "TpcCluster.h" // Collaborating Class Declarations -- class TClonesArray; class TpcAbsClusterFinder; class TpcDigiPar; class TpcClusterFinderTask : public FairTask { public: // Constructors/Destructors --------- TpcClusterFinderTask(); ~TpcClusterFinderTask(); // Operators // Accessors ----------------------- // Modifiers ----------------------- void SetDigiBranchName(const TString& name) {fdigiBranchName=name;} void SetClusterBranchName(const TString& name) {fClusterOutName=name;} void SetPersistence(Bool_t opt=kTRUE) {fpersistence=opt;} void SetDigiPersistence(Bool_t opt=kTRUE) {fDigiPersistence=opt;} // store references to digis in clusters void SetSamplePesistence(Bool_t opt=kTRUE) {fSamplePersistence=opt;} // store references to samples in digis void SetTrivialClustering(Bool_t opt=kTRUE) {ftrivial=opt;} void SetSimpleClustering(Bool_t opt=kTRUE, Bool_t sectorize=kTRUE); void SetRecalcDigiPos(Bool_t opt=kTRUE){frecalcDigiPos=opt;} void SetUsePRF(Bool_t opt){fDoPRF=opt;} void timeslice(unsigned int t){ftimeslice=t;} void SetThreshold(unsigned int t){fthres=t;} void SetSingleDigiClusterAmpCut(unsigned int cut){fSDiClAmpCut=cut;} void SetClusterAmpCut(double cut){fClAmpCut=cut;} void SetErrorPars(double ADCsens,double C){fAdcSens=ADCsens;fC=C;} void SetMode(int mode){fmode=mode;} void SetDiffFactor(double d){fDiffFactor=d;} // for Cluster splitting void SetClusterTimeCut(double d){fClusterTimeCut=d;} // for Cluster splitting void SetDataMode(Bool_t opt) {fDataMode=opt;} // Operations ---------------------- virtual InitStatus Init(); virtual void Exec(Option_t* opt); virtual void SetParContainers(); private: // Private Data Members ------------ TString fdigiBranchName; TString fClusterOutName; TClonesArray* fclusterArray; TClonesArray* fdigiArray; Bool_t fpersistence; Bool_t fDigiPersistence; Bool_t fSamplePersistence; Bool_t ftrivial; // one cluster from each digi Bool_t fsimple; // use TpcClusterFinderSimple Bool_t fsectorize; // sectorize simple clustering Bool_t fDataMode; // for TpcClusterFinder Bool_t frecalcDigiPos; // for TpcClusterFinderSimple: recalculate the digiposition with help of padresponse Bool_t fDoPRF; // do pad response correction int fmode; // controls method of sorting into time bins for TpcClusterFinder unsigned int ftimeslice; // defines time bucket / gap unsigned int fthres; // amplitude cut on total Cluster amplitude unsigned int fSDiClAmpCut; // amplitude cut on Single Digi Cluster amplitude double fClAmpCut; // amplitude cut on mean digi amplitude double fDiffFactor; // defines maximum slope for cluster splitting in XY for TpcClusterFinder double fClusterTimeCut; // defines time cut for cluster splitting for TpcClusterFinder double fAdcSens; // electrons per adc channel double fC; // scale for error calculation TpcAbsClusterFinder* ffinder; TpcDigiPar* fpar; std::vector* fcluster_buffer; TH2D* nDigivsTime; // Private Methods ----------------- public: ClassDef(TpcClusterFinderTask,1) }; bool TpcDigiIndex(TpcDigi* digi1, TpcDigi* digi2); #endif //-------------------------------------------------------------- // $Log$ //--------------------------------------------------------------