- added TPCLib to doxygen docu, code corrections according to documentation and effC++
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinder.cxx
index 3ad37f0..1620364 100644 (file)
@@ -1,12 +1,30 @@
 // @(#) $Id$
 // Original: AliL3ClustFinderNew.cxx,v 1.29 2005/06/14 10:55:21 cvetan Exp 
 
-// Author: Anders Vestbo <mailto:vestbo@fi.uib.no>, 
-//         Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
-//         Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>
-
-//*-- Copyright &copy ALICE HLT Group
-
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Authors: Anders Vestbo <mailto:vestbo@fi.uib.no>,                     *
+ *          Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>    *
+ *          Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>         *
+ *          for The ALICE Off-line Project.                               *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/** @file   AliHLTTPCClusterFinder.cxx
+    @author Anders Vestbo <mailto:vestbo@fi.uib.no>,                
+           Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
+           Jochen Thaeder <mailto:thaeder@kip.uni-heidelberg.de>     
+    @date   
+    @brief  Cluster Finder for the TPC
+*/
 
 #include "AliHLTTPCDigitReader.h"
 #include "AliHLTTPCRootTypes.h"
@@ -100,6 +118,7 @@ AliHLTTPCClusterFinder::AliHLTTPCClusterFinder()
   fMatch(1),
   fThreshold(10),
   fSignalThreshold(-1),
+  fOccupancyLimit(1.0),
   fXYErr(0.2),
   fZErr(0.3),
   fDeconvPad(kTRUE),
@@ -119,6 +138,7 @@ AliHLTTPCClusterFinder::AliHLTTPCClusterFinder(const AliHLTTPCClusterFinder& src
   fMatch(src.fMatch),
   fThreshold(src.fThreshold),
   fSignalThreshold(src.fSignalThreshold),
+  fOccupancyLimit(src.fOccupancyLimit),
   fXYErr(src.fXYErr),
   fZErr(src.fZErr),
   fDeconvPad(src.fDeconvPad),
@@ -137,6 +157,7 @@ AliHLTTPCClusterFinder& AliHLTTPCClusterFinder::operator=(const AliHLTTPCCluster
   fMatch=src.fMatch;
   fThreshold=src.fThreshold;
   fSignalThreshold=src.fSignalThreshold;
+  fOccupancyLimit=src.fOccupancyLimit;
   fXYErr=src.fXYErr;
   fZErr=src.fZErr;
   fDeconvPad=src.fDeconvPad;
@@ -204,7 +225,10 @@ void AliHLTTPCClusterFinder::ProcessDigits()
   fDigitReader->InitBlock(fPtr,fSize,fFirstRow,fLastRow,fCurrentPatch,fCurrentSlice);
   readValue = fDigitReader->Next();
 
-  if (!readValue)return;
+  // Matthias 08.11.2006 the following return would cause termination without writing the
+  // ClusterData and thus would block the component. I just wnt to have the commented line
+  // here for information
+  //if (!readValue)return;
 
   pad = fDigitReader->GetPad();
   time = fDigitReader->GetTime();
@@ -315,9 +339,16 @@ void AliHLTTPCClusterFinder::ProcessDigits()
       }
 
       if (pCurrentPad) {
-       charge = pCurrentPad->GetCorrectedData();
+       Float_t occupancy=pCurrentPad->GetOccupancy();
+       //HLTDebug("pad %d occupancy level: %f", pCurrentPad->GetPadNumber(), occupancy);
+       if ( occupancy < fOccupancyLimit ) {
+         charge = pCurrentPad->GetCorrectedData();
+       } else {
+         charge = 0;
+         //HLTDebug("ignoring pad %d with occupancy level %f", pCurrentPad->GetPadNumber(), occupancy);
+       }
       } else {
-      charge = fDigitReader->GetSignal();
+       charge = fDigitReader->GetSignal();
       }
       //HLTDebug("get next charge value: position %d charge %d", time, charge);