• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

beamtime/sts-lasertest/go4/STS/TSTSHiterizer.cxx (r4864/r3065)

Go to the documentation of this file.
00001 /*
00002  * TSTSHiterizer.cxx
00003  *
00004  *  Created on: Jan 9, 2012
00005  *      Author: isorokin
00006  */
00007 
00008 #include "TSTSHiterizer.h"
00009 
00010 TSTSHiterizer::TSTSHiterizer( Int_t det )
00011 {
00012         fDetector = det;
00013         fTimeTolerance = kDefTimeTolerance;
00014 }
00015 
00016 TSTSHiterizer::~TSTSHiterizer()
00017 {
00018 }
00019 
00020 
00021 void TSTSHiterizer::ReconstructHits( Bool_t noTrigger )
00022 {
00023    if( fClusters[0].size() < 2 ) return;
00024    if( fClusters[1].size() < 2 ) return;
00025 
00026    Int_t oldestClusterSide = ( fClusters[0].front()->GetTime() < fClusters[1].front()->GetTime() ) ? 0 : 1;
00027    TSTSCluster* oldestCluster = fClusters[oldestClusterSide].front();
00028 
00029    Int_t oppositeSide = ! oldestClusterSide;
00030 
00031    if( noTrigger ) {
00032            if( fClusters[oppositeSide].back()->GetTime() - oldestCluster->GetTime() <= 2 * fTimeTolerance ) return;
00033    }
00034 
00035    std::deque<TSTSCluster*>::iterator matchClustIter = fClusters[oppositeSide].begin();
00036    while( matchClustIter != fClusters[oppositeSide].end() )
00037    {
00038       if( ( * matchClustIter )->GetTime() - oldestCluster->GetTime() <= fTimeTolerance ) {
00039          TSTSCluster* matchedClusters[2];
00040          matchedClusters[oldestClusterSide] = new TSTSCluster(*oldestCluster);
00041          matchedClusters[oppositeSide] = new TSTSCluster( *(*matchClustIter) );
00042          fHits.push_back( new TSTSHit( matchedClusters[0], matchedClusters[1] ) );
00043       }
00044       matchClustIter++;
00045    }
00046 
00047    delete fClusters[oldestClusterSide].front();
00048    fClusters[oldestClusterSide].pop_front();
00049 }
00050 
00051 
00052 TSTSHit * TSTSHiterizer::FetchHit( Bool_t noTrigger )
00053 {
00054    ReconstructHits( noTrigger );
00055    if( fHits.size() > 0 ) {
00056       TSTSHit* returnHit = new TSTSHit( *(fHits.front()) );
00057       fHits.pop_front();
00058       return returnHit;
00059    }
00060    return 0;
00061 }
00062 
00063 void TSTSHiterizer::Clear()
00064       {
00065          while(!fHits.empty())
00066               {
00067                   TSTSHit* hit=fHits.front();
00068                   if(hit) delete hit;
00069                   fHits.pop_front();
00070               }
00071          for(int side=0;side<TSTSTopology::kNSides;++side){
00072             while(!fClusters[side].empty())
00073                {
00074                   TSTSCluster* cluster=fClusters[side].front();
00075                   if(cluster) delete cluster;
00076                   fClusters[side].pop_front();
00077                }
00078          }
00079 
00080       }
00081 

Generated on Tue Dec 10 2013 04:52:18 for ROCsoft by  doxygen 1.7.1