Hi,
I have a question concerning the use of
TClonesArray::RemoveAt(Int_t idx)
I have a TClonesArray of hits which may contain information that
exists somewhere else. I want to remove the hit from a list if I have I
do indeed have the information somewhere else.
In the line below where I have indicated problem here, I keep
finding the same thing again and again, even if it has been removed from
the list. I went to the source and didn't see that the fCont array was
reindexed.
The strange thing is when I put in the Dump on the TClonesArray, th
dump reported the proper items.
I am running on RedHat with the 2.4.20-18.7 kernel i686 with Root
Version 3.04/02 18 December 2002
Thanks,
Chris
TClonesArray* fHit = // filled somewhere else
int i;
CHit* ct = // something obtained somewhere else.
CHit* hit;
int duplicateIndex;
if( ct!=NULL ) {
do {
duplicateIndex = -1;
for( i=0 ; i<fNhit ; i++ ) {
hit = (CHit*)((*fHit)[i]); // PROBLEM HERE !!!!
if( (*hit)==(*ct) ) {
duplicateIndex = i;
break;
}
}
if( duplicateIndex>=0 ) {
fHit->Dump();
fHit->RemoveAt(duplicateIndex);
fHit->Dump();
fNhit--;
}
} while (duplicateIndex>=0);
}
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:13 MET