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