fClusterMCVector(),
fOfflineTransform(NULL),
fOfflineTPCRecoParam(),
- fTimeMeanDiff(2)
+ fTimeMeanDiff(2),
+ fReleaseMemory(0)
{
//constructor
fOfflineTransform = AliTPCcalibDB::Instance()->GetTransform();
memset( fNumberOfPadsInRow, 0, sizeof(Int_t)*(fNumberOfRows));
+ fRowPadVector.clear();
+
for(UInt_t i=0;i<fNumberOfRows;i++){
fNumberOfPadsInRow[i]=AliHLTTPCTransform::GetNPads(i+fFirstRow);
AliHLTTPCPadVector tmpRow;
Int_t AliHLTTPCClusterFinder::DeInitializePadArray(){
// see header file for class documentation
- for(UInt_t i=0;i<fNumberOfRows;i++){
- for(UInt_t j=0;j<=fNumberOfPadsInRow[i];j++){
- delete fRowPadVector[i][j];
- fRowPadVector[i][j]=NULL;
+ if( fVectorInitialized ){
+ for(UInt_t i=0;i<fNumberOfRows;i++){
+ for(UInt_t j=0;j<=fNumberOfPadsInRow[i];j++){
+ delete fRowPadVector[i][j];
+ fRowPadVector[i][j]=NULL;
+ }
+ fRowPadVector[i].clear();
}
- fRowPadVector[i].clear();
+ fRowPadVector.clear();
+ delete[] fNumberOfPadsInRow;
+ fNumberOfPadsInRow = 0;
}
- fRowPadVector.clear();
+ fVectorInitialized=kFALSE;
return 1;
-}
-
+}
void AliHLTTPCClusterFinder::SetOutputArray(AliHLTTPCSpacePointData *pt){
WriteClusters(fClusters.size(),clusterlist);
delete [] clusterlist;
fClusters.clear();
+ if( fReleaseMemory ) DeInitializePadArray();// call this when the -releaseMemory flag is set
}
void SetDoPadSelection(Bool_t input){fDoPadSelection=input;}
void SetLastTimeBin(Int_t ltb){fLastTimeBin=ltb;}
void SetFirstTimeBin(Int_t ftb){fFirstTimeBin=ftb;}
+ void SetReleaseMemory( Bool_t v ){ fReleaseMemory = v;}
void UpdateLastTimeBin(){fLastTimeBin=AliHLTTPCTransform::GetNTimeBins();}
//---------------------------------- Under this line the old sorted clusterfinder functions can be found --------------------------------
Float_t fTimeMeanDiff; //! transient
+ Bool_t fReleaseMemory; //! flag to release the memory after each event
+
#ifdef do_mc
void GetTrackID(Int_t pad,Int_t time,Int_t *trackID);
#endif
- ClassDef(AliHLTTPCClusterFinder,10) //Fast cluster finder
+ ClassDef(AliHLTTPCClusterFinder,11) //Fast cluster finder
};
#endif
fGetActivePads(0),
fFirstTimeBin(-1),
fLastTimeBin(-1),
- fDoMC(kFALSE)
+ fDoMC(kFALSE),
+ fReleaseMemory( kFALSE )
{
// see header file for class documentation
// or
HLTDebug("Setting fDoMC to true.");
return 1;
}
+ if (argument.CompareTo("-release-memory")==0) {
+ fReleaseMemory=kTRUE;
+ fClusterFinder->SetReleaseMemory( fReleaseMemory );
+ HLTDebug("Setting fReleaseMemory to true.");
+ return 1;
+ }
if (argument.CompareTo("-active-pads")==0 || argument.CompareTo("activepads")==0){
if(argument.CompareTo("activepads" )==0){
fClusterFinder->SetDoMC(fDoMC);
HLTInfo("Setting fDoMC to true.");
}
+ else if (argument.CompareTo("-release-memory")==0) {
+ fReleaseMemory = kTRUE;
+ fClusterFinder->SetReleaseMemory( kTRUE );
+ HLTInfo("Setting fReleaseMemory to true.");
+ }
else if (argument.CompareTo("-active-pads")==0 || argument.CompareTo("activepads")==0){
if(argument.CompareTo("activepads" )==0){
HLTWarning("Please change to new component argument naming scheme and use '-active-pads' instead of 'activepads'");
/** Last timebin taken in to account when reading the data */
Int_t fLastTimeBin; //!transient
- Bool_t fDoMC;
-
+ Bool_t fDoMC; // flag to provide MC labels
+ Bool_t fReleaseMemory; // flag to release the memory after each event
/// the default configuration entry for this component
static const char* fgkOCDBEntryPacked; //!transient
static const char* fgkOCDBEntryUnpacked; //!transient
static const char* fgkOCDBEntryDecoder; //!transient
static const char* fgkOCDBEntry32Bit; //!transient
- ClassDef(AliHLTTPCClusterFinderComponent, 7)
+ ClassDef(AliHLTTPCClusterFinderComponent, 8)
};
#endif