//________________________________________________________ void GFHistManager::Print(const char* filename, Bool_t add) { // print all layers of histograms to ps-file 'filename' // if 'add == true' puts '(' or ')' only if 'filename' ends with it, // e.g. if i is loop variable // GFHistManager *man = ...; // TString name("XXX.ps"); // if(i == 0) man->Print(name + '('); // else if(i == last) man->Print(name + ')'); // else man->Print(name, kTRUE); const Bool_t rootIsBatch = gROOT->IsBatch(); if(fBatch){ gROOT->SetBatch(); for(Int_t i = 0; i < fDepth; ++i){ this->DrawReally(i); } } gROOT->SetBatch(rootIsBatch); TObjArray cans; TIter canArrayIter(fCanArrays); while(TObjArray* canArray = static_cast<TObjArray*>(canArrayIter.Next())){ cans.AddAll(canArray); } const Int_t nCans = cans.GetEntriesFast(); if(nCans == 1) { cans.At(0)->Print(filename); return; } TString plainName(filename); const Bool_t starting = plainName.EndsWith("("); if(starting) { const Ssiz_t ind = plainName.Last('('); plainName.Remove(ind); // plainName.ReplaceAll("(", ""); } const Bool_t ending = plainName.EndsWith(")"); if(ending) { const Ssiz_t ind = plainName.Last(')'); plainName.Remove(ind); // plainName.ReplaceAll(")", ""); } for(Int_t i = 0; i < nCans; ++i){ if(i == 0 && !ending && (!add || starting)) { cans.At(i)->Print(plainName + "("); } else if(i == nCans - 1 && !starting && (!add || ending)) { cans.At(i)->Print(plainName + ")"); } else { cans.At(i)->Print(plainName); } } }