X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FTTreeStream.cxx;h=2287454cc2d547bb73d2acd071c97f16970298bd;hb=0939e22ab86107a1471a3f101bc71e930640aff1;hp=ec145f276dac649c7a4c0099da0d6de6764e0c76;hpb=fe12e09c14250ca4a380175a67ffbd6bb844662e;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/TTreeStream.cxx b/STEER/TTreeStream.cxx index ec145f276da..2287454cc2d 100644 --- a/STEER/TTreeStream.cxx +++ b/STEER/TTreeStream.cxx @@ -1,3 +1,20 @@ +/************************************************************************** + * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +/* $Id$ */ + // // marian.ivanov@cern.ch // @@ -13,13 +30,12 @@ // Run and see TTreeSRedirector::Test() as an example of TTreeSRedirectorer functionality // -/* $Id$ */ - -#include "TFile.h" -#include "TObjArray.h" -#include "TTree.h" -#include "TTreeStream.h" - +#include +#include +#include +#include +#include +#include ClassImp(TTreeDataElement) ClassImp(TTreeStream) @@ -148,7 +164,7 @@ void TTreeSRedirector::StoreObject(TObject* object){ // // // - TFile * backup = gFile; + TDirectory * backup = gDirectory; fFile->cd(); object->Write(); if (backup) backup->cd(); @@ -173,12 +189,14 @@ TTreeStream & TTreeSRedirector::operator<<(Int_t id) } } if (!clayout){ + TDirectory * backup = gDirectory; fFile->cd(); char chname[100]; sprintf(chname,"Tree%d",id); clayout = new TTreeStream(chname); clayout->fId=id; fDataLayouts->AddAt(clayout,entries); + if (backup) backup->cd(); } return *clayout; } @@ -194,11 +212,13 @@ TTreeStream & TTreeSRedirector::operator<<(const char* name) Int_t entries = fDataLayouts->GetEntriesFast(); if (!clayout){ + TDirectory * backup = gDirectory; fFile->cd(); clayout = new TTreeStream(name); clayout->fId=-1; clayout->SetName(name); fDataLayouts->AddAt(clayout,entries); + if (backup) backup->cd(); } return *clayout; } @@ -209,7 +229,7 @@ TTreeStream & TTreeSRedirector::operator<<(const char* name) void TTreeSRedirector::Close(){ // // - TFile * backup = gFile; + TDirectory * backup = gDirectory; fFile->cd(); if (fDataLayouts){ Int_t entries = fDataLayouts->GetEntriesFast(); @@ -380,8 +400,8 @@ void TTreeStream::BuildTree(){ // // Build the Tree // - if (fTree->GetEntries()>0) return; - fTree = new TTree(GetName(),GetName()); + if (fTree && fTree->GetEntries()>0) return; + if (!fTree) fTree = new TTree(GetName(),GetName()); Int_t entries = fElements->GetEntriesFast(); fBranches = new TObjArray(entries);