X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliESDCaloTrigger.cxx;h=d3a8269c8b23a12ea71262af0d9deaa8012c0e1b;hb=989362ab53e55af6aa2932f96204eddd5d5dcbc6;hp=d0ec92ce6956fd801212ca95e7b4f8d80db83a16;hpb=d5ebf00ec32a4a350d238072c76e06c92b76152d;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliESDCaloTrigger.cxx b/STEER/AliESDCaloTrigger.cxx index d0ec92ce695..d3a8269c8b2 100644 --- a/STEER/AliESDCaloTrigger.cxx +++ b/STEER/AliESDCaloTrigger.cxx @@ -50,24 +50,43 @@ AliESDCaloTrigger& AliESDCaloTrigger::operator=(const AliESDCaloTrigger& ctrig) // assigment operator if(this!=&ctrig) { TNamed::operator=(ctrig); - // CKB dont't want to create leak if fTriggerAmp points to - // somthing already, use new with placement - if(fTriggerAmplitudes){ - fTriggerAmplitudes = new(fTriggerAmplitudes) TArrayF(*ctrig.fTriggerAmplitudes); + if(ctrig.fTriggerAmplitudes){ + // asign or copy construct + if(fTriggerAmplitudes)*fTriggerAmplitudes = *ctrig.fTriggerAmplitudes; + else fTriggerAmplitudes = new TArrayF(*ctrig.fTriggerAmplitudes); } else{ - fTriggerAmplitudes = new TArrayF(*ctrig.fTriggerAmplitudes); + delete fTriggerAmplitudes; + fTriggerAmplitudes = 0; } - if(fTriggerPosition){ - fTriggerPosition = new(fTriggerPosition) TArrayF(*ctrig.fTriggerPosition); + + if(ctrig.fTriggerPosition){ + // asign or copy construct + if(fTriggerPosition)*fTriggerPosition = *ctrig.fTriggerPosition; + else fTriggerPosition = new TArrayF(*ctrig.fTriggerPosition); } else{ - fTriggerPosition = new TArrayF(*ctrig.fTriggerPosition); + delete fTriggerPosition; + fTriggerPosition = 0; } } return *this; } +void AliESDCaloTrigger::Copy(TObject &obj) const { + + // this overwrites the virtual TOBject::Copy() + // to allow run time copying without casting + // in AliESDEvent + + if(this==&obj)return; + AliESDCaloTrigger *robj = dynamic_cast(&obj); + if(!robj)return; // not an AliESDCaloTrigger + *robj = *this; + +} + + void AliESDCaloTrigger::Reset() { // simple reset