{\r
//see header file for documentation\r
Int_t nRecPoints = 0;\r
-\r
+ \r
+ fAvailableSize = availableSize;\r
+ \r
fNDigits = nDigits;\r
\r
UInt_t maxRecPointSize = sizeof(AliHLTCaloRecPointDataStruct) + (sizeof(AliHLTCaloDigitDataStruct) << 7); //Reasonable estimate... \r
{\r
continue;\r
}\r
- if(availableSize < (totSize + maxRecPointSize)) \r
+ \r
+ if(fAvailableSize < (sizeof(AliHLTCaloRecPointDataStruct)))\r
{\r
- return -1; //Might get out of buffer, exiting\r
+ HLTError("Out of buffer, stopping clusterisation");\r
+ return -1; \r
}\r
+ \r
// printf("cluster candidate!\n");\r
// First digit is placed at the fDigits member variable in the recpoint\r
fDigitIndexPtr = &(fRecPointDataPtr->fDigits);\r
nRecPoints++;\r
\r
// Scanning for the neighbours\r
- ScanForNeighbourDigits(i, fRecPointDataPtr);\r
+ if(ScanForNeighbourDigits(i, fRecPointDataPtr) != 0)\r
+ {\r
+ return -1;\r
+ }\r
\r
totSize += sizeof(AliHLTCaloRecPointDataStruct) + (fDigitsInCluster-1)*sizeof(AliHLTCaloDigitDataStruct); \r
fRecPointDataPtr->fMultiplicity = fDigitsInCluster; \r
return nRecPoints;\r
}\r
\r
-void\r
+Int_t\r
AliHLTCaloClusterizer::ScanForNeighbourDigits(Int_t index, AliHLTCaloRecPointDataStruct* recPoint)\r
{\r
//see header file for documentation\r
if(AreNeighbours(fDigitsPointerArray[index],\r
fDigitsPointerArray[j]))\r
{\r
- // Assigning value to digit ptr\r
+ if(fAvailableSize < (sizeof(Int_t)))\r
+ {\r
+ HLTError("Out of buffer, stopping clusterisation");\r
+ return -1; \r
+ } \r
+ // Assigning index to digit\r
*fDigitIndexPtr = j;\r
// Incrementing digit pointer to be ready for new entry\r
fDigitIndexPtr++;\r
}\r
}\r
}\r
- return;\r
+ return 0;\r
}\r
\r
Int_t \r
#include "AliHLTCaloConstantsHandler.h"\r
\r
//#include "AliPHOSGeometry.h"\r
+#include "AliHLTLogging.h"\r
\r
class TClonesArray;\r
class TString;\r
*/\r
\r
\r
-class AliHLTCaloClusterizer : public AliHLTCaloConstantsHandler\r
+class AliHLTCaloClusterizer : public AliHLTCaloConstantsHandler, public AliHLTLogging\r
{\r
\r
public:\r
\r
/** Destructor */\r
virtual ~AliHLTCaloClusterizer();\r
-\r
-// /** Copy constructor */ \r
-// AliHLTCaloClusterizer(const AliHLTCaloClusterizer &) : \r
-// // AliHLTCaloBase(),\r
-// AliHLTCaloConstants(NULL),\r
-// fRecPointDataPtr(0),\r
-// fDigitDataPtr(0),\r
-// fEmcClusteringThreshold(0),\r
-// fEmcMinEnergyThreshold(0),\r
-// fEmcTimeGate(0),\r
-// fDigitsInCluster(0),\r
-// fDigitContainerPtr(0),\r
-// fMaxDigitIndexDiff(2*NZROWSMOD)\r
-// {\r
-// //Copy constructor not implemented\r
-// }\r
\r
- /** Assignment */\r
- AliHLTCaloClusterizer & operator = (const AliHLTCaloClusterizer)\r
- {\r
- //Assignment\r
- return *this; \r
- }\r
-\r
/** Set digit container */\r
void SetDigitContainer(AliHLTCaloDigitContainerDataStruct* digitContainerPtr)\r
{ fDigitContainerPtr = digitContainerPtr; }\r
* @param digIndex index of the digit in the digit container\r
* @param recPoint pointer to the current rec point\r
*/\r
- virtual void ScanForNeighbourDigits(Int_t digIndex, AliHLTCaloRecPointDataStruct* recPoint);\r
+ virtual Int_t ScanForNeighbourDigits(Int_t digIndex, AliHLTCaloRecPointDataStruct* recPoint);\r
\r
/**\r
* Checks if two digits are neighbours\r
Int_t fNDigits; //COMMENT\r
\r
private:\r
+ \r
+ /** Size of the available write buffer */\r
+ UInt_t fAvailableSize; //COMMENT\r
\r
- AliHLTCaloClusterizer();\r
-\r
- AliHLTCaloClusterizer (const AliHLTCaloClusterizer &);\r
-// AliHLTCaloClusterizer & operator = (const AliHLTCaloClusterizer &)\r
-// {\r
-// return *this;\r
-// }\r
+ /** Default constructor, prohibited */\r
+ AliHLTCaloClusterizer(); // COMMENT\r
+ \r
+ /** Copy constructor, prohibited */\r
+ AliHLTCaloClusterizer (const AliHLTCaloClusterizer &); //COMMENT\r
+ \r
+ /** Assignment operator, prohibited */\r
+ AliHLTCaloClusterizer & operator = (const AliHLTCaloClusterizer &); //COMMENT\r
\r
ClassDef(AliHLTCaloClusterizer, 0);\r
\r
-\r
};\r
\r
#endif\r