]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCPad.cxx
Fixing trigg.class issue
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCPad.cxx
index f4879cf451a6024890a10d61fbc16c951fae9cf0..a3f6562fe3294fb110b3fdf6f181de043a1d8447 100644 (file)
 //* provided "as is" without express or implied warranty.                  *
 //**************************************************************************
 
-/** @file   AliHLTTPCPad.cxx
-    @author Matthias Richter, Kenneth Aamodt
-    @date   
-    @brief  Container Class for TPC Pads.
-*/
-
-#if __GNUC__>= 3
-using namespace std;
-#endif
+/// @file   AliHLTTPCPad.cxx
+/// @author Matthias Richter, Kenneth Aamodt
+/// @date   
+/// @brief  Container Class for TPC Pads.
+///
 
 #include <cerrno>
 #include "AliHLTTPCPad.h"
@@ -71,7 +67,8 @@ AliHLTTPCPad::AliHLTTPCPad()
   fDataSignals(NULL),
   fSignalPositionArray(NULL),
   fSizeOfSignalPositionArray(0),
-  fNGoodSignalsSent(0)
+  fNGoodSignalsSent(0),
+  fCandidateDigitsVector()
 {
   // see header file for class documentation
   // or
@@ -88,7 +85,7 @@ AliHLTTPCPad::AliHLTTPCPad()
 
 }
 
-AliHLTTPCPad::AliHLTTPCPad(Int_t dummy)
+AliHLTTPCPad::AliHLTTPCPad(Int_t /*dummy*/)
   :
   fClusterCandidates(),
   fUsedClusterCandidates(),
@@ -113,14 +110,14 @@ AliHLTTPCPad::AliHLTTPCPad(Int_t dummy)
   fDataSignals(NULL),
   fSignalPositionArray(NULL),
   fSizeOfSignalPositionArray(0),
-  fNGoodSignalsSent(0)
+  fNGoodSignalsSent(0),
+  fCandidateDigitsVector()
 {
   // see header file for class documentation
   // or
   // refer to README to build package
   // or
   // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
-  dummy=0;//to get rid of warning until things are cleaned up better
 }
 
 AliHLTTPCPad::AliHLTTPCPad(Int_t offset, Int_t nofBins)
@@ -148,7 +145,8 @@ AliHLTTPCPad::AliHLTTPCPad(Int_t offset, Int_t nofBins)
   fDataSignals(NULL),
   fSignalPositionArray(NULL),
   fSizeOfSignalPositionArray(0),
-  fNGoodSignalsSent(0)
+  fNGoodSignalsSent(0),
+  fCandidateDigitsVector()
 {
   // see header file for class documentation
 }
@@ -485,6 +483,7 @@ void AliHLTTPCPad::PrintRawData()
 void AliHLTTPCPad::ClearCandidates(){
   fClusterCandidates.clear();
   fUsedClusterCandidates.clear();
+  fCandidateDigitsVector.clear();
 }
 
 void AliHLTTPCPad::SetDataToDefault()
@@ -507,19 +506,8 @@ void AliHLTTPCPad::SetDataSignal(Int_t bin,Int_t signal)
   fSizeOfSignalPositionArray++;
 }
 
-Bool_t AliHLTTPCPad::GetNextGoodSignal(Int_t &time, Int_t &signal){
-  if(fNGoodSignalsSent<fSizeOfSignalPositionArray&&fSizeOfSignalPositionArray>0){
-    time = fSignalPositionArray[fNGoodSignalsSent];
-    signal = GetDataSignal(time);
-
-    fNGoodSignalsSent++;
-    return kTRUE;
-  }
-  return kFALSE;
-}
+Bool_t AliHLTTPCPad::GetNextGoodSignal(Int_t &time,Int_t &bunchSize){
 
-Bool_t AliHLTTPCPad::GetNextGoodSignal(Int_t &time,Int_t &bunchSize,Int_t dummy){
-  dummy=0;//to get rid of warning until things are cleaned up better
   if(fNGoodSignalsSent<fSizeOfSignalPositionArray&&fSizeOfSignalPositionArray>0){
     time = fSignalPositionArray[fNGoodSignalsSent];
     bunchSize=1;
@@ -533,7 +521,7 @@ Bool_t AliHLTTPCPad::GetNextGoodSignal(Int_t &time,Int_t &bunchSize,Int_t dummy)
        break;
       }
     }
-    fNGoodSignalsSent++;
+    //    fNGoodSignalsSent++;
    return kTRUE;
   }
   return kFALSE;
@@ -545,7 +533,7 @@ Int_t AliHLTTPCPad::GetDataSignal(Int_t bin) const
   return fDataSignals[bin];
 }
 
-void AliHLTTPCPad::ZeroSuppress(Double_t nRMS, Int_t threshold, Int_t reqMinPoint, Int_t beginTime, Int_t endTime, Int_t timebinsLeft, Int_t timebinsRight, Int_t valueUnderAverage){
+void AliHLTTPCPad::ZeroSuppress(Double_t nRMS, Int_t threshold, Int_t reqMinPoint, Int_t beginTime, Int_t endTime, Int_t timebinsLeft, Int_t timebinsRight, Int_t valueUnderAverage, bool speedup){
   //see headerfile for documentation
  
   //HLTDebug("In Pad: nRMS=%d, threshold=%d, reqMinPoint=%d, beginTime=%d, endTime=%d, timebinsLeft=%d timebinsRight=%d valueUnderAverage=%d \n",nRMS,threshold,reqMinPoint,beginTime,endTime,timebinsLeft,timebinsRight,valueUnderAverage);
@@ -564,7 +552,8 @@ void AliHLTTPCPad::ZeroSuppress(Double_t nRMS, Int_t threshold, Int_t reqMinPoin
   }
  
   Int_t fThresholdUsed=threshold;
+
+  Int_t maxVal=0;
   Int_t nAdded=0;
   Int_t sumNAdded=0;
   fSizeOfSignalPositionArray=0;
@@ -573,6 +562,7 @@ void AliHLTTPCPad::ZeroSuppress(Double_t nRMS, Int_t threshold, Int_t reqMinPoin
       if(fDataSignals[i]>0){
        nAdded++;
        sumNAdded+=fDataSignals[i]*fDataSignals[i];
+       if (maxVal<fDataSignals[i]) maxVal=fDataSignals[i];
       }
     }
   }
@@ -581,6 +571,7 @@ void AliHLTTPCPad::ZeroSuppress(Double_t nRMS, Int_t threshold, Int_t reqMinPoin
       if(fDataSignals[i]>0){
        nAdded++;
        sumNAdded+=fDataSignals[i];
+       if (maxVal<fDataSignals[i]) maxVal=fDataSignals[i];
       }
     }
   }
@@ -611,6 +602,7 @@ void AliHLTTPCPad::ZeroSuppress(Double_t nRMS, Int_t threshold, Int_t reqMinPoin
   else{
     fThresholdUsed = (Int_t)(averageValue + threshold); 
   }
+  if (maxVal<fThresholdUsed) return;
 
   // Do zero suppression on the adc values within [beginTime,endTime](add the good values)
   for(Int_t i=beginTime;i<endTime;i++){
@@ -641,6 +633,9 @@ void AliHLTTPCPad::ZeroSuppress(Double_t nRMS, Int_t threshold, Int_t reqMinPoin
        fDataSignals[t]=(AliHLTTPCSignal_t)(fDataSignals[t]-averageValue + valueUnderAverage);
        fSignalPositionArray[fSizeOfSignalPositionArray]=t;
        fSizeOfSignalPositionArray++;
+       // Matthias Oct 10 2008: trying hard to make the code faster for the
+       // AltroChannelSelection. For that we only need to know there is data
+       if (speedup) return;
       }
       i+=lastSignalTime;
     }
@@ -661,7 +656,15 @@ void AliHLTTPCPad::ZeroSuppress(Double_t nRMS, Int_t threshold, Int_t reqMinPoin
   }
 }
 
-void AliHLTTPCPad::AddClusterCandidate(AliHLTTPCClusters candidate){
+void AliHLTTPCPad::AddClusterCandidate(const AliHLTTPCClusters& candidate){
   fClusterCandidates.push_back(candidate);
   fUsedClusterCandidates.push_back(0);
 }
+
+void AliHLTTPCPad::AddCandidateDigits(const vector<AliHLTTPCDigitData>& candidateDigits){
+  fCandidateDigitsVector.push_back(candidateDigits); 
+}
+
+vector<AliHLTTPCDigitData> *AliHLTTPCPad::GetCandidateDigits(Int_t candidateIndex){
+  return (size_t(candidateIndex) < fCandidateDigitsVector.size()) ? &fCandidateDigitsVector.at(candidateIndex) :0;
+}