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());