]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCPad.cxx
- adjusting binning of pad histograms to make single pad cluster contribution and...
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCPad.cxx
index 6e3a5a154bb4d54cce3601d7e4def8ff89ef0dcc..9fdb4a777819cf311786a4cb372275466da34cd9 100644 (file)
@@ -71,7 +71,8 @@ AliHLTTPCPad::AliHLTTPCPad()
   fDataSignals(NULL),
   fSignalPositionArray(NULL),
   fSizeOfSignalPositionArray(0),
-  fNGoodSignalsSent(0)
+  fNGoodSignalsSent(0),
+  fCandidateDigitsVector()
 {
   // see header file for class documentation
   // or
@@ -88,7 +89,7 @@ AliHLTTPCPad::AliHLTTPCPad()
 
 }
 
-AliHLTTPCPad::AliHLTTPCPad(Int_t dummy)
+AliHLTTPCPad::AliHLTTPCPad(Int_t /*dummy*/)
   :
   fClusterCandidates(),
   fUsedClusterCandidates(),
@@ -113,14 +114,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 +149,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 +487,7 @@ void AliHLTTPCPad::PrintRawData()
 void AliHLTTPCPad::ClearCandidates(){
   fClusterCandidates.clear();
   fUsedClusterCandidates.clear();
+  fCandidateDigitsVector.clear();
 }
 
 void AliHLTTPCPad::SetDataToDefault()
@@ -522,7 +525,7 @@ Bool_t AliHLTTPCPad::GetNextGoodSignal(Int_t &time,Int_t &bunchSize){
        break;
       }
     }
-    fNGoodSignalsSent++;
+    //    fNGoodSignalsSent++;
    return kTRUE;
   }
   return kFALSE;
@@ -534,7 +537,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);
@@ -553,7 +556,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;
@@ -562,6 +566,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];
       }
     }
   }
@@ -570,6 +575,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];
       }
     }
   }
@@ -600,6 +606,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++){
@@ -630,6 +637,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;
     }
@@ -650,7 +660,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;
+}