WCSimDataCleaner.hh

Go to the documentation of this file.
00001 #ifndef WCSIMDATACLEANER_HH
00002 #define WCSIMDATACLEANER_HH
00003 
00004 #include "TObject.h"
00005 
00006 #include <vector>
00007 
00008 class WCSimRecoDigit;
00009 class WCSimRecoClusterDigit;
00010 class WCSimRecoCluster;
00011 
00012 class WCSimDataCleaner : public TObject {
00013 
00014  public:  
00015 
00016   typedef enum EFilterConfig {
00017     kNone  = 0,
00018     kPulseHeight = 1,
00019     kPulseHeightAndNeighbours = 2,
00020     kPulseHeightAndClusters = 3
00021   } FilterConfig_t;
00022 
00023   static WCSimDataCleaner* Instance();
00024 
00025   static void Config(Int_t config);
00026   static void MinPulseHeight(Double_t min);
00027   static void NeighbourRadius(Double_t radius);
00028   static void NeighbourDigits(Int_t digits);
00029   static void ClusterRadius(Double_t radius);
00030   static void ClusterDigits(Int_t digits);
00031   static void TimeWindow(Double_t window);
00032 
00033   static void PrintParameters();
00034   void RunPrintParameters();
00035 
00036   void SetConfig(Int_t config)               { fConfig = config; }
00037   void SetMinPulseHeight(Double_t min)       { fMinPulseHeight = min; }
00038   void SetNeighbourRadius(Double_t radius)   { fNeighbourRadius = radius; }
00039   void SetNeighbourDigits(Int_t digits)      { fMinNeighbourDigits = digits; }
00040   void SetClusterRadius(Double_t radius)     { fClusterRadius = radius; }
00041   void SetClusterDigits(Int_t digits)        { fMinClusterDigits = digits; }
00042   void SetTimeWindow(Double_t window)        { fTimeWindow = window; }
00043 
00044   std::vector<WCSimRecoDigit*>* Run(std::vector<WCSimRecoDigit*>* digitlist);
00045 
00046   std::vector<WCSimRecoDigit*>* ResetDigits(std::vector<WCSimRecoDigit*>* digitlist);
00047   std::vector<WCSimRecoDigit*>* FilterDigits(std::vector<WCSimRecoDigit*>* digitlist);
00048 
00049   std::vector<WCSimRecoDigit*>* FilterAll(std::vector<WCSimRecoDigit*>* digitlist);
00050   std::vector<WCSimRecoDigit*>* FilterByPulseHeight(std::vector<WCSimRecoDigit*>* digitlist);
00051   std::vector<WCSimRecoDigit*>* FilterByNeighbours(std::vector<WCSimRecoDigit*>* digitlist);
00052   std::vector<WCSimRecoDigit*>* FilterByClusters(std::vector<WCSimRecoDigit*>* digitlist);
00053 
00054   std::vector<WCSimRecoCluster*>* RecoClusters(std::vector<WCSimRecoDigit*>* digitlist);
00055 
00056   std::vector<WCSimRecoDigit*>* FilterGoldenDigits(std::vector<WCSimRecoDigit*>* digitlist);
00057 
00058  private:
00059   WCSimDataCleaner();
00060    ~WCSimDataCleaner();
00061 
00062   void Reset();
00063 
00064   // running mode
00065   Int_t fConfig;
00066 
00067   // cleaning parameters
00068   Double_t fMinPulseHeight;
00069   Double_t fNeighbourRadius;
00070   Int_t fMinNeighbourDigits;
00071   Double_t fClusterRadius;
00072   Int_t fMinClusterDigits;
00073   Double_t fTimeWindow;
00074 
00075   // internal containers
00076   std::vector<WCSimRecoCluster*> vClusterList;
00077   std::vector<WCSimRecoClusterDigit*> vClusterDigitList;
00078   std::vector<WCSimRecoClusterDigit*> vClusterDigitCollection;
00079 
00080   // vectors of filtered digits
00081   std::vector<WCSimRecoDigit*>* fFilterAll;
00082   std::vector<WCSimRecoDigit*>* fFilterByPulseHeight;
00083   std::vector<WCSimRecoDigit*>* fFilterByNeighbours;
00084   std::vector<WCSimRecoDigit*>* fFilterByClusters;
00085 
00086   // vectors of clusters
00087   std::vector<WCSimRecoCluster*>* fClusterList;
00088 
00089   ClassDef(WCSimDataCleaner,0)
00090 
00091 };
00092 
00093 #endif
00094 
00095 
00096 
00097 
00098 
00099 
00100