00001 /* 00002 * TSTSHiterizer.h 00003 * 00004 * Created on: Jan 9, 2012 00005 * Author: isorokin 00006 */ 00007 00008 #ifndef TSTSHITERIZER_H 00009 #define TSTSHITERIZER_H 00010 00011 #include "TSTSTopology.h" 00012 #include "TSTSHit.h" 00013 #include <deque> 00014 00015 class TSTSHiterizer { 00016 private: 00017 Long64_t fTimeTolerance; 00018 Long64_t fTimeWindow; 00019 static const Long64_t kDefTimeTolerance = 50; 00020 static const Long64_t kDefTimeWindow = 5000; 00021 Int_t fDetector; 00022 std::deque<TSTSCluster> fClusters[TSTSTopology::kNSides]; 00023 std::deque<TSTSHit> fHits; 00024 Long64_t fLatestClusterTime; 00025 Bool_t IsClusterBuffersFilled(Bool_t noTrigger) const; 00026 TSTSTopology::ESTSSide GetOldesetClusterSide() const; 00027 Bool_t IsClusterBuffersContainSufficientTimeInterval() const; 00028 Bool_t Match( const TSTSCluster & clust1, const TSTSCluster & clust2) const; 00029 void CreateHit( const TSTSCluster & clust1, TSTSTopology::ESTSSide side1, const TSTSCluster & clust2, TSTSTopology::ESTSSide side2); 00030 void ClearClustBuffers(); 00031 void ReconstructHits( Bool_t noTrigger ); 00032 void CheckTimeWindowSufficient( Long64_t newClustTime ); 00033 void InsertClusterSorted(TSTSTopology::ESTSSide side, const TSTSCluster & cluster); 00034 void PrintBuffers() const; 00035 00036 public: 00037 TSTSHiterizer( Int_t det = 0 ); 00038 ~TSTSHiterizer(); 00039 void FeedCluster( const TSTSCluster & cluster, TSTSTopology::ESTSSide side); 00040 Bool_t FetchHit( Bool_t noTrigger, TSTSHit & hit ); 00041 Long64_t GetTimeTolerance() const { return fTimeTolerance; } 00042 void SetTimeTolerance( Long64_t timeTolerance ) { fTimeTolerance = timeTolerance; } 00043 void SetTimeWindow( Long64_t timeWindow ) { fTimeWindow = timeWindow; } 00044 Long64_t GetTimeWindow() const { return fTimeWindow; } 00045 void Clear(); 00046 }; 00047 00048 00049 #endif /* TSTSHITERIZER_H */