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

beamtime/sts-lasertest/go4/STS/TSTSCluster.cxx (r4864/r3054)

Go to the documentation of this file.
00001 /*
00002  * TSTSCluster.cxx
00003  *
00004  *  Created on: Jan 7, 2012
00005  *      Author: isorokin
00006  */
00007 
00008 
00009 
00010 //TCluster::TCluster():
00011 //fCachedTime(0)
00012 //{
00013 //}
00014 //
00015 //
00016 //TDigi TCluster::GetMainDigi() const
00017 //{
00018 //      Float_t maxAmp = 0.;
00019 //      Int_t   mainDigi = 0.;
00020 //      for( Int_t iDigi = 0; iDigi < GetNDigis(); iDigi++ ) {
00021 //              if( fDigis.at(iDigi).GetAmplitude() > maxAmp ) {
00022 //                      maxAmp = fDigis.at( iDigi ).GetAmplitude();
00023 //                      mainDigi = iDigi;
00024 //              }
00025 //      }
00026 //      return fDigis.at( mainDigi );
00027 //}
00028 //
00029 //
00030 //void TCluster::Print() const
00031 //{
00032 //   printf( "Cluster of %d digis.  Amp=%6f  Ch=%6f  Time=%Ld\n", GetNDigis(), (Float_t)GetAmplitude(), (Float_t)GetStrip(), GetTime() );
00033 //   for( Int_t iDigi = 0; iDigi < GetNDigis(); iDigi++ ) {
00034 //      printf("  ");
00035 //      fDigis[iDigi].Print();
00036 //   }
00037 //}
00038 //
00039 //
00040 //Long64_t TCluster::GetDuration() const
00041 //{
00042 //   if( fDigis.size() == 0 ) {
00043 //      return 0;
00044 //   }
00045 //   Long64_t minTime = fDigis.at(0).GetTime();
00046 //   Long64_t maxTime = fDigis.at(0).GetTime();
00047 //   for( Int_t iDigi = 1; iDigi < GetNDigis(); iDigi++ ) {
00048 //      Long64_t currTime = fDigis.at(iDigi).GetTime();
00049 //      if( currTime < minTime ) {
00050 //         minTime = currTime;
00051 //      }
00052 //      if( currTime > maxTime ) {
00053 //         maxTime = currTime;
00054 //      }
00055 //   }
00056 //   return maxTime - minTime;
00057 //}
00058 //
00059 //
00060 //Double_t TCluster::GetAmplitude() const
00061 //{
00062 //   Double_t amplitude = 0.0;
00063 //   for( Int_t iDigi = 0; iDigi < GetNDigis(); iDigi++ ) {
00064 //      amplitude += fDigis.at(iDigi).GetAmplitude();
00065 //   }
00066 //   return amplitude;
00067 //}
00068 //
00069 //Long64_t TCluster::GetTime() const
00070 //{
00071 //   Int_t clustSize = fDigis.size();
00072 //   if( clustSize < 1 ) {
00073 //      printf("ERROR: TCluster::GetTime() invoked for empty cluster!\n");
00074 //      return 0;
00075 //   }
00076 //
00077 //   if( fCachedTime ) return fCachedTime;
00078 //
00079 //   std::vector<TDigi>::const_iterator itDigi = fDigis.begin();
00080 //
00081 //   Long64_t timeSum = 0;
00082 //
00083 //   itDigi++;
00084 //   while( itDigi != fDigis.end() ) {
00085 //      timeSum += itDigi->GetTime() - fDigis.front().GetTime();
00086 //      itDigi++;
00087 //   }
00088 //
00089 //   fCachedTime = fDigis.front().GetTime() + timeSum / ( clustSize ) ;
00090 //
00091 //   return fCachedTime;
00092 //}
00093 //
00094 //
00095 //Double_t TCluster::GetStrip() const
00096 //{
00097 //   if( fDigis.size() == 0 ) {
00098 //      return 0;
00099 //   }
00100 //   Int_t channel = fDigis.at(0).GetStrip();
00101 //   Double_t maxAmp = fDigis.at(0).GetAmplitude();
00102 //   for( Int_t iDigi = 1; iDigi < GetNDigis(); iDigi++ ) {
00103 //      Double_t currAmp = fDigis.at(iDigi).GetAmplitude();
00104 //      if( currAmp > maxAmp ) {
00105 //         maxAmp = currAmp;
00106 //         channel = fDigis.at(iDigi).GetStrip();
00107 //      }
00108 //   }
00109 //   return channel;
00110 //}
00111 
00112 
00113 #include "TSTSCluster.h"
00114 
00115 TSTSCluster::TSTSCluster():
00116 fCachedTime(0)
00117 {
00118 }
00119 
00120 
00121 
00122 TSTSCluster::~TSTSCluster()
00123 {
00124 }
00125 
00126 
00127 
00128 TSTSDigi TSTSCluster::GetMainDigi() const
00129 {
00130         Float_t maxAmp = 0.;
00131         Int_t   mainDigi = 0.;
00132         for( Int_t iDigi = 0; iDigi < GetNDigis(); iDigi++ ) {
00133                 if( fDigis.at(iDigi).GetAmplitude() > maxAmp ) {
00134                         maxAmp = fDigis.at( iDigi ).GetAmplitude();
00135                         mainDigi = iDigi;
00136                 }
00137         }
00138         return fDigis.at( mainDigi );
00139 }
00140 
00141 
00142 
00143 void TSTSCluster::Print() const
00144 {
00145    printf( "Cluster of %d digis.  Amp=%6f  Ch=%6f  Time=%Ld\n", GetNDigis(), (Float_t)GetAmplitude(), (Float_t)GetMainStrip(), GetTime() );
00146    for( Int_t iDigi = 0; iDigi < GetNDigis(); iDigi++ ) {
00147       printf("  ");
00148       fDigis[iDigi].Print();
00149    }
00150 }
00151 
00152 
00153 
00154 Long64_t TSTSCluster::GetTimeLength() const
00155 {
00156    if( fDigis.size() == 0 ) {
00157       return 0;
00158    }
00159    Long64_t minTime = fDigis.at(0).GetTime();
00160    Long64_t maxTime = fDigis.at(0).GetTime();
00161    for( Int_t iDigi = 1; iDigi < GetNDigis(); iDigi++ ) {
00162       Long64_t currTime = fDigis.at(iDigi).GetTime();
00163       if( currTime < minTime ) {
00164          minTime = currTime;
00165       }
00166       if( currTime > maxTime ) {
00167          maxTime = currTime;
00168       }
00169    }
00170    return maxTime - minTime;
00171 }
00172 
00173 
00174 
00175 Double_t TSTSCluster::GetAmplitude() const
00176 {
00177    Double_t amplitude = 0.0;
00178    for( Int_t iDigi = 0; iDigi < GetNDigis(); iDigi++ ) {
00179       amplitude += fDigis.at(iDigi).GetAmplitude();
00180    }
00181    return amplitude;
00182 }
00183 
00184 
00185 
00186 Long64_t TSTSCluster::GetTime() const
00187 {
00188    Int_t clustSize = fDigis.size();
00189    if( clustSize < 1 ) {
00190       printf("ERROR: TCluster::GetTime() invoked for empty cluster!\n");
00191       return 0;
00192    }
00193 
00194    if( fCachedTime ) return fCachedTime;
00195 
00196    std::vector<TSTSDigi>::const_iterator itDigi = fDigis.begin();
00197 
00198    Long64_t timeSum = 0;
00199 
00200    itDigi++;
00201    while( itDigi != fDigis.end() ) {
00202       timeSum += itDigi->GetTime() - fDigis.front().GetTime();
00203       itDigi++;
00204    }
00205 
00206    fCachedTime = fDigis.front().GetTime() + timeSum / ( clustSize ) ;
00207 
00208    return fCachedTime;
00209 }
00210 
00211 
00212 
00213 Int_t TSTSCluster::GetMainStrip() const
00214 {
00215    if( fDigis.size() == 0 ) {
00216       return 0;
00217    }
00218    Int_t channel = fDigis.at(0).GetStrip();
00219    Double_t maxAmp = fDigis.at(0).GetAmplitude();
00220    for( Int_t iDigi = 1; iDigi < GetNDigis(); iDigi++ ) {
00221       Double_t currAmp = fDigis.at(iDigi).GetAmplitude();
00222       if( currAmp > maxAmp ) {
00223          maxAmp = currAmp;
00224          channel = fDigis.at(iDigi).GetStrip();
00225       }
00226    }
00227    return channel;
00228 }
00229 
00230 

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