if(&source == this) return *this;
TObject::operator=(source);
-
fGlobalPos[0] = source.fGlobalPos[0];
fGlobalPos[1] = source.fGlobalPos[1];
fGlobalPos[2] = source.fGlobalPos[2];
-
fEnergy = source.fEnergy;
fDispersion = source.fDispersion;
fChi2 = source.fChi2;
if (source.fNCells > 0) {
if(source.fCellsAbsId){
- if(fNCells != source.fNCells){
- delete [] fCellsAbsId;
+ if(fNCells != source.fNCells||!fCellsAbsId){
+ if(fCellsAbsId)delete [] fCellsAbsId;
fCellsAbsId = new UShort_t[source.fNCells];
}
- for (Int_t i=0; i<source.fNCells; i++)
+ for (Int_t i=0; i<source.fNCells; i++){
fCellsAbsId[i]=source.fCellsAbsId[i];
+ }
}
if(source.fCellsAmpFraction){
- if(fNCells != source.fNCells){
- delete [] fCellsAmpFraction;
+ if(fNCells != source.fNCells||!fCellsAmpFraction){
+ if(fCellsAmpFraction) delete [] fCellsAmpFraction;
fCellsAmpFraction = new Double32_t[source.fNCells];
}
for (Int_t i=0; i<source.fNCells; i++)
//not in use
if(source.fTracksMatched){
// assign or copy construct
- if(fTracksMatched) *fTracksMatched = *source.fTracksMatched;
+ if(fTracksMatched){
+ *fTracksMatched = *source.fTracksMatched;
+ }
else fTracksMatched = new TArrayI(*source.fTracksMatched);
}
else{
- delete fTracksMatched;
+ if(fTracksMatched)delete fTracksMatched;
fTracksMatched = 0;
}
if(source.fLabels){
// assign or copy construct
- if(fLabels) *fLabels = *source.fLabels;
+ if(fLabels){
+ *fLabels = *source.fLabels;
+ }
else fLabels = new TArrayI(*source.fLabels);
}
else{
- delete fLabels;
+ if(fLabels)delete fLabels;
fLabels = 0;
}
// assign or copy construct
if(fDigitAmplitude) *fDigitAmplitude = *source.fDigitAmplitude;
else fDigitAmplitude = new TArrayS(*source.fDigitAmplitude);
- }
+ }
else{
delete fDigitAmplitude;
fDigitAmplitude = 0;
//
// This is destructor according Coding Conventions
//
- delete fTracksMatched;
- delete fLabels;
+ if(fTracksMatched)delete fTracksMatched;fTracksMatched = 0;
+ if(fLabels) delete fLabels; fLabels = 0;
delete fDigitAmplitude; //not in use
delete fDigitTime; //not in use
delete fDigitIndex; //not in use
- if(fCellsAmpFraction) delete[] fCellsAmpFraction; fCellsAmpFraction=0;
- if(fCellsAbsId) delete[] fCellsAbsId; fCellsAbsId = 0;
+ if(fCellsAmpFraction){ delete[] fCellsAmpFraction; fCellsAmpFraction=0;}
+ if(fCellsAbsId){ delete[] fCellsAbsId; fCellsAbsId = 0;}
}
//_______________________________________________________________________
void SetTOF(Double_t tof) { fTOF = tof; }
Double_t GetTOF() const { return fTOF; }
- void AddTracksMatched(TArrayI & array) { fTracksMatched = new TArrayI(array) ; }
- void AddLabels(TArrayI & array) { fLabels = new TArrayI(array) ; }
+ void AddTracksMatched(TArrayI & array) {
+ if(!fTracksMatched)fTracksMatched = new TArrayI(array);
+ else *fTracksMatched = array;
+ }
+ void AddLabels(TArrayI & array) {
+ if(!fLabels)fLabels = new TArrayI(array) ;
+ else *fLabels = array;
+}
TArrayI * GetTracksMatched() const {return fTracksMatched;}
TArrayI * GetLabels() const {return fLabels;}