00001 #ifndef TSTSCLUSTERIZER_H 00002 #define TSTSCLUSTERIZER_H 00003 00004 #include <vector> 00005 #include <deque> 00006 #include "Rtypes.h" 00007 #include "TSTSCluster.h" 00008 #include "TSTSTopology.h" 00009 00010 class TSTSClusterizer { 00011 protected: 00012 Int_t fTimeTolerance; // [ns] if delta time < or = fkTimeTolerance then ==> same cluster 00013 Int_t fSpaceTolerance; // [strips], if delta channel < or = fkSpaceTolerance ==> same cluster 00014 Long64_t fTimeWindow; // [ns] 00015 00016 static Int_t const kDefTimeTolerance = 50; 00017 static Int_t const kDefSpaceTolerance = 1; 00018 static Int_t const kDefTimeWindow = 5000; 00019 Int_t fDetector; 00020 Int_t fSide; 00021 std::deque<TSTSDigi> fDigis; 00022 Bool_t Match( const TSTSDigi digi1, const TSTSDigi digi2 ); 00023 Bool_t Match( const TSTSCluster* const cluster, const TSTSDigi digi ); 00024 void MoveDigiToCluster( TSTSCluster* cluster, const std::deque<TSTSDigi>::iterator & itDigi ); 00025 Bool_t FindDigiFitsCluster( Bool_t noTrigger, const TSTSCluster* const cluster, std::deque<TSTSDigi>::iterator & itDigi ); 00026 00027 public: 00028 TSTSClusterizer( Int_t det = 0, Int_t side = 0 ); 00029 virtual ~TSTSClusterizer(); 00030 void FeedDigi( TSTSDigi const & digi ) { fDigis.push_back( digi ); } 00031 TSTSCluster * FetchCluster( Bool_t noTriggers ); 00032 Int_t GetDetector() const { return fDetector; } 00033 Int_t GetSide() const { return fSide; } 00034 void SetDetector( Int_t det ) { fDetector = det; } 00035 void SetSide( Int_t side ) { fSide = side; } 00036 void SetTimeTolerance( Int_t timeTolerance ) { fTimeTolerance = timeTolerance; } 00037 void SetSpaceTolerance( Int_t spaceTolerance ) { fSpaceTolerance = spaceTolerance; } 00038 void Clear() {fDigis.clear();} 00039 ClassDef(TSTSClusterizer,1) 00040 }; 00041 00042 00043 00044 #endif // #ifndef TSTSCLUSTERIZER_H 00045