45 RooTrace* RooTrace::_instance=0 ;
50 RooTrace& RooTrace::instance()
52 if (_instance==0) _instance =
new RooTrace() ;
59 RooTrace::RooTrace() : _active(kFALSE), _verbose(kFALSE)
68 void RooTrace::create(
const TObject* obj)
70 RooTrace& instance = RooTrace::instance() ;
71 if (instance._active) {
72 instance.create3(obj) ;
81 void RooTrace::destroy(
const TObject* obj)
83 RooTrace& instance = RooTrace::instance() ;
84 if (instance._active) {
85 instance.destroy3(obj) ;
92 void RooTrace::createSpecial(
const char* name,
int size)
94 RooTrace& instance = RooTrace::instance() ;
95 if (instance._active) {
96 instance.createSpecial3(name,size) ;
103 void RooTrace::destroySpecial(
const char* name)
105 RooTrace& instance = RooTrace::instance() ;
106 if (instance._active) {
107 instance.destroySpecial3(name) ;
114 void RooTrace::createSpecial3(
const char* name,
int size)
116 _specialCount[name]++ ;
117 _specialSize[name] = size ;
123 void RooTrace::destroySpecial3(
const char* name)
125 _specialCount[name]-- ;
133 void RooTrace::active(Bool_t flag)
135 RooTrace::instance()._active = flag ;
143 void RooTrace::verbose(Bool_t flag)
145 RooTrace::instance()._verbose = flag ;
155 void RooTrace::create2(
const TObject* obj)
157 _list.Add((RooAbsArg*)obj) ;
159 cout <<
"RooTrace::create: object " << obj <<
" of type " << obj->ClassName()
160 <<
" created " << endl ;
170 void RooTrace::destroy2(
const TObject* obj)
172 if (!_list.Remove((RooAbsArg*)obj)) {
173 }
else if (_verbose) {
174 cout <<
"RooTrace::destroy: object " << obj <<
" of type " << obj->ClassName()
175 <<
" destroyed [" << obj->GetTitle() <<
"]" << endl ;
183 void RooTrace::create3(
const TObject* obj)
186 _objectCount[obj->IsA()]++ ;
195 void RooTrace::destroy3(
const TObject* obj)
197 _objectCount[obj->IsA()]-- ;
206 void RooTrace::mark()
208 RooTrace::instance().mark3() ;
217 void RooTrace::mark3()
227 void RooTrace::dump()
229 RooTrace::instance().dump3(cout,kFALSE) ;
235 void RooTrace::dump(ostream& os, Bool_t sinceMarked)
237 RooTrace::instance().dump3(os,sinceMarked) ;
245 void RooTrace::dump3(ostream& os, Bool_t sinceMarked)
247 os <<
"List of RooFit objects allocated while trace active:" << endl ;
250 Int_t i, nMarked(0) ;
251 for(i=0 ; i<_list.GetSize() ; i++) {
252 if (!sinceMarked || _markList.IndexOf(_list.At(i)) == -1) {
253 os << hex << setw(10) << _list.At(i) << dec <<
" : " << setw(20) << _list.At(i)->ClassName() << setw(0) <<
" - " << _list.At(i)->GetName() << endl ;
258 if (sinceMarked) os << nMarked <<
" marked objects suppressed" << endl ;
264 void RooTrace::printObjectCounts()
266 RooTrace::instance().printObjectCounts3() ;
271 void RooTrace::printObjectCounts3()
274 for (map<TClass*,int>::iterator iter = _objectCount.begin() ; iter != _objectCount.end() ; ++iter) {
275 Double_t tot= 1.0*(iter->first->Size()*iter->second)/(1024*1024) ;
276 cout <<
" class " << iter->first->GetName() <<
" count = " << iter->second <<
" sizeof = " << iter->first->Size() <<
" total memory = " << Form(
"%5.2f",tot) <<
" Mb" << endl ;
280 for (map<string,int>::iterator iter = _specialCount.begin() ; iter != _specialCount.end() ; ++iter) {
281 int size = _specialSize[iter->first] ;
282 Double_t tot=1.0*(size*iter->second)/(1024*1024) ;
283 cout <<
" speeial " << iter->first <<
" count = " << iter->second <<
" sizeof = " << size <<
" total memory = " << Form(
"%5.2f",tot) <<
" Mb" << endl ;
286 cout <<
"Grand total memory = " << Form(
"%5.2f",total) <<
" Mb" << endl ;
298 void RooTrace::callgrind_zero()
300 ooccoutD((TObject*)0,Tracing) <<
"RooTrace::callgrind_zero()" << endl ;
310 void RooTrace::callgrind_dump()
312 ooccoutD((TObject*)0,Tracing) <<
"RooTrace::callgrind_dump()" << endl ;