Skip to content

Commit

Permalink
memory leak in AliADSDigit fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
cmayer authored and ktf committed Nov 6, 2016
1 parent 6311204 commit bae7951
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 26 deletions.
12 changes: 9 additions & 3 deletions AD/ADbase/AliADSDigit.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,19 @@ AliADSDigit::AliADSDigit()
fCharges(NULL)
{
// Standard default
// constructor
// constructor
}

//__________________________________________________________________________
AliADSDigit::AliADSDigit(Int_t pmnumber,
Int_t nbins,
Int_t nbins,
Float_t *charges,
Int_t *labels)
:AliDigit(),
fPMNumber(pmnumber),
fNBins(nbins),
fCharges(NULL)
{
{
// Constructor
// Used in the digitizer
fCharges = new Float_t[fNBins];
Expand Down Expand Up @@ -65,6 +65,12 @@ AliADSDigit::~AliADSDigit()
}
}

void AliADSDigit::Clear(Option_t* )
{
if (fCharges)
delete [] fCharges;
fCharges = NULL;
}
//__________________________________________________________________________
void AliADSDigit::Print(const Option_t*) const
{
Expand Down
38 changes: 20 additions & 18 deletions AD/ADbase/AliADSDigit.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,31 @@
//_____________________________________________________________________________
class AliADSDigit: public AliDigit {

public:
AliADSDigit();
AliADSDigit(Int_t pmnumber,
Int_t nbins,
Float_t *charges,
Int_t *labels = 0);
virtual ~AliADSDigit();
public:
AliADSDigit();
AliADSDigit(Int_t pmnumber,
Int_t nbins,
Float_t *charges,
Int_t *labels = 0);
virtual ~AliADSDigit();

virtual void Print(const Option_t* option="") const;
virtual void Print(const Option_t* option="") const;

Int_t PMNumber() const {return fPMNumber;}
Int_t GetNBins() const {return fNBins;}
Float_t* GetCharges() const {return fCharges;}
Int_t PMNumber() const {return fPMNumber;}
Int_t GetNBins() const {return fNBins;}
Float_t* GetCharges() const {return fCharges;}

private:
AliADSDigit(const AliADSDigit& /*sdigit*/);
AliADSDigit& operator = (const AliADSDigit& /*sdigit*/);
virtual void Clear(Option_t*);

Int_t fPMNumber; // PhotoMultiplier number (0 to 16)
Int_t fNBins; // Number of charge bins
Float_t* fCharges; //[fNBins] Array with charges
private:
AliADSDigit(const AliADSDigit& /*sdigit*/);
AliADSDigit& operator = (const AliADSDigit& /*sdigit*/);

ClassDef(AliADSDigit,1) // AD SDigit class
Int_t fPMNumber; // PhotoMultiplier number (0 to 16)
Int_t fNBins; // Number of charge bins
Float_t* fCharges; //[fNBins] Array with charges

ClassDef(AliADSDigit,1); // AD SDigit class
};

#endif
8 changes: 4 additions & 4 deletions AD/ADsim/AliADDigitizer.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,7 @@ void AliADDigitizer::WriteDigits(AliLoader *loader)
treeD->Fill();
loader->WriteDigits("OVERWRITE");
loader->UnloadDigits();
ResetDigits();
ResetDigits("C");
}

//____________________________________________________________________________
Expand All @@ -756,7 +756,7 @@ void AliADDigitizer::WriteSDigits(AliLoader *loader)
treeS->Fill();
loader->WriteSDigits("OVERWRITE");
loader->UnloadSDigits();
ResetDigits();
ResetDigits("C");
}


Expand All @@ -778,12 +778,12 @@ void AliADDigitizer::AddSDigit(Int_t pmnumber, Int_t nbins, Float_t *charges, In

}
//____________________________________________________________________________
void AliADDigitizer::ResetDigits()
void AliADDigitizer::ResetDigits(Option_t *opt)
{
// Clears Digits
fNdigits = 0;
if (fDigits)
fDigits->Clear();
fDigits->Clear(opt);
}

//____________________________________________________________________________
Expand Down
2 changes: 1 addition & 1 deletion AD/ADsim/AliADDigitizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class AliADDigitizer: public AliDigitizer {
void AddSDigit(Int_t pmnumber, Int_t nbins, Float_t *charges, Int_t *labels);
TClonesArray* DigitsArray();
TClonesArray* SDigitsArray();
void ResetDigits();
void ResetDigits(Option_t* opt="");

AliADCalibData *GetCalibData() const;
void GetTimeSlewingSplines();
Expand Down

0 comments on commit bae7951

Please sign in to comment.