33 ClassImp(TFriendElement);
 
   38 TFriendElement::TFriendElement() : TNamed()
 
   52 TFriendElement::TFriendElement(TTree *tree, 
const char *treename, 
const char *filename)
 
   53     :TNamed(treename,filename)
 
   60    if (treename && strchr(treename,
'=')) {
 
   61       char *temp = Compress(treename);
 
   62       char *equal = strchr(temp,
'=');
 
   80 TFriendElement::TFriendElement(TTree *tree, 
const char *treename, TFile *file)
 
   81     :TNamed(treename,file?file->GetName():
"")
 
   88    if (fParentTree && fParentTree->GetDirectory()
 
   89        && fParentTree->GetDirectory()->GetFile() == fFile) {
 
   94    if (treename && strchr(treename,
'=')) {
 
   95       char *temp = Compress(treename);
 
   96       char *equal = strchr(temp,
'=');
 
  110 TFriendElement::TFriendElement(TTree *tree, TTree* friendtree, 
const char *alias)
 
  111    : TNamed(friendtree?friendtree->GetName():
"",
 
  113             ? (   friendtree->GetDirectory()
 
  114                   ? (    friendtree->GetDirectory()->GetFile()
 
  115                          ? friendtree->GetDirectory()->GetFile()->GetName()
 
  126       fTreeName   = fTree->GetName();
 
  127       if (fTree->GetDirectory()) fFile = fTree->GetDirectory()->GetFile();
 
  128       if (fParentTree && fParentTree->GetDirectory()
 
  129           && fParentTree->GetDirectory()->GetFile() == fFile) {
 
  137    if (alias && strlen(alias)) {
 
  138       char *temp = Compress(alias);
 
  149 TFriendElement::~TFriendElement()
 
  157 TTree *TFriendElement::Connect()
 
  160    auto treePtr = GetTree();
 
  161    if (!treePtr) MakeZombie(); 
 
  168 TTree *TFriendElement::DisConnect()
 
  170    if (fOwnFile) 
delete fFile;
 
  179 TFile *TFriendElement::GetFile()
 
  181    if (fFile || IsZombie()) 
return fFile;
 
  183    if (strlen(GetTitle())) {
 
  184       TDirectory::TContext ctxt;
 
  185       fFile = TFile::Open(GetTitle());
 
  188       TDirectory *dir = fParentTree->GetDirectory();
 
  190          fFile = dir->GetFile();
 
  194    if (fFile && fFile->IsZombie()) {
 
  205 TTree *TFriendElement::GetTree()
 
  207    if (fTree) 
return fTree;
 
  210       fFile->GetObject(GetTreeName(),fTree);
 
  211       if (fTree) 
return fTree;
 
  215    fTree = 
dynamic_cast<TTree*
>( gROOT->FindObject(GetTreeName()) );
 
  223 void TFriendElement::ls(Option_t *)
 const 
  225    printf(
" Friend Tree: %s in file: %s\n",GetName(),GetTitle());