Peter, Would the suggestion you make do any more than is already done using the ROOT object collection statistics? For example, if you do gObjectTable->Print(), you will get a list of all root objects created if object collection statistics is turned on. In case anyone doesn't know, this is done in the .rootrc file using Root.ObjectStat: 1 Regards Kris "Peter H. L. Christiansen" wrote: > Hi trackers and devs > > SUGGESTION : > It is possible to make static counting variables in the data classes and > maybe even for the BrDataTable since at least I often have a way of > clearing before deleting and then build up a huge pile of these. > A memory class could then be made that you can call and ask what is the > status of all these static variables, i.e., how many objects have been > created but not deleted. > > Does anybody think this is a good idea ? > The static counters is at least how I identified 2 of the following 3 > leaks. > > I found 3 memory leaks in the clustering algorithm. > Maybe they are corrected in the new version of brat, but I did not want to > mess up my own (7 days old), so sorry if that is the case. > > ** > BrTPCClusterFinder : > When nPeaks == 1 and deconvoluting a BrTPCCluster object is created but > not destroyed. This adds up, but if it is all of the memory leak in the > tracking algorthm I don't know, but I am looking at it. > > To correct this you could do > if ( nPeaks > 1 ) { > .......bla bla bla > } else if ( cluster->GetStatus() == BrTPCCluster::kMultiHit && > nPeaks == 1 ) { > BrTPCCluster *currCluster = cluster; > BrTPCCluster *oneCluster = (BrTPCCluster *)subClusters.At( 0 ); > fClusterTable->AddCluster( currCluster, oneCluster ); > currCluster = oneCluster; > fClusterTable->RemoveCluster( cluster, lnk ); > } > > Do we want to something special with this cluster ? Is it really a super > cluster ? > Here at NBI we have been discussing a little bit the deconvolution and JJ > pointed out that this could of course be done differently if there is a > characteristic cluster width. A bit like what you talked about Trine. > > Also in destructor : > if( fClusterTable ) { > fClusterTable->Clear(); > delete fClusterTable; > fClusterTable = 0; > } > is needed > > ** > Second memory leak is in > BrTPCClusterFinder::FillSubClusters > after > cluster->AddSeq( *seq ); > we need > delete seq; > or AddSeq should just take the adress - propably the best solution. > > ** > 3rd memory leak > add > delete [] amp; > in > Bool_t BrTPCHitClusterFinder::FindHits ( method 1 ) > > In > Bool_t BrTPCHitClusterFinder::FindHits2 ( method 2 ) > delete [] tcharge; > delete [] dtcharge; > delete [] ytime; > > delete [] pcharge; > delete [] dpcharge; > delete [] xpad; > is missing > > Unfortunately it seems that there is also a leak in the tracking algorithm > and I will try to find it tomorrow. > > I will correct the above mentioned leaks when I find the tracking leaks > and can get rid of my very useful, but also very fubar BRAT version. > > Waiting for comments, > Peter > > :-) --------------------------------- )-: > |Peter H L Christiansen aka PAN @ NBI | > |EMAIL : pchristi@nbi.dk | > |OFFICE : Tb1 @ NBI | > |PHONE : 353 25269 <- New!! | > |SNAIL : Sdr. Fasanvej 14 ST 2000 F | > |PHONE : 38 872042 | > :-D --------------------------------- \-:
This archive was generated by hypermail 2b29 : Tue Jun 13 2000 - 15:37:24 EDT