]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/TTreeStream.cxx
changed to new library
[u/mrichter/AliRoot.git] / STEER / TTreeStream.cxx
index 7904ef5ab492a75eeafd818610bcd0838124525d..346d0ef1b69e75e77298c856ea4fb12ed05dc6c2 100644 (file)
@@ -1,7 +1,23 @@
-#include "TObjArray.h"
+//
+//  marian.ivanov@cern.ch
+//
+//  ------------------------------------------------------------------------------------------------
+//  TTreeStream
+//  Standard stream (cout) like input for the tree
+//  Run and see TTreeStreamer::Test() - to see TTreeStreamer functionality
+//  ------------------------------------------------------------------------------------------------  
+//
+//  -------------------------------------------------------------------------------------------------
+//  TTreeSRedirector
+//  Redirect file to  different TTreeStreams  
+//  Run and see   TTreeSRedirector::Test() as an example of TTreeSRedirectorer functionality 
+// 
+
+/* $Id$ */
+
 #include "TFile.h"
+#include "TObjArray.h"
 #include "TTree.h"
-#include "TBrowser.h"
 #include "TTreeStream.h"
 
 
@@ -9,21 +25,6 @@ ClassImp(TTreeDataElement)
 ClassImp(TTreeStream)
 ClassImp(TTreeSRedirector)
 
-/*
-  marian.ivanov@cern.ch
-  //
-  ------------------------------------------------------------------------------------------------
-  TTreeStream
-  Standard stream (cout) like input for the tree
-  Run and see TTreeStreamer::Test() - to see TTreeStreamer functionality
-  ------------------------------------------------------------------------------------------------  
-  //
-  -------------------------------------------------------------------------------------------------
-  TTreeSRedirector
-  Redirect file to  different TTreeStreams  
-  Run and see   TTreeSRedirector::Test() as an example of TTreeSRedirectorer functionality 
-  // 
-*/
 
 
 void TTreeStream::Test()
@@ -143,6 +144,17 @@ TTreeSRedirector::~TTreeSRedirector()
   fFile->Close();
   delete fFile;
 }
+void TTreeSRedirector::StoreObject(TObject* object){
+  //
+  //
+  //
+  TFile * backup = gFile;
+  fFile->cd();
+  object->Write();
+  if (backup) backup->cd();
+}
+
+
 
 TTreeStream  & TTreeSRedirector::operator<<(Int_t id)
 {
@@ -210,14 +222,14 @@ void TTreeSRedirector::Close(){
     delete fDataLayouts;
     fDataLayouts=0;
   }
-  backup->cd();
+  if (backup) backup->cd();
 }
 
 
 
 //-------------------------------------------------------------
 TTreeDataElement:: TTreeDataElement(Char_t type) :
-  fName(),
+  TNamed(),
   fType(type),
   fDType(0),
   fClass(0),
@@ -229,8 +241,8 @@ TTreeDataElement:: TTreeDataElement(Char_t type) :
 }
 
 TTreeDataElement:: TTreeDataElement(TDataType* type) :
-  fName(),
-  fType(' '),
+  TNamed(),
+  fType(0),
   fDType(type),
   fClass(0),
   fPointer(0)
@@ -241,8 +253,8 @@ TTreeDataElement:: TTreeDataElement(TDataType* type) :
 }
 
 TTreeDataElement:: TTreeDataElement(TClass* cl) :
-  fName(),
-  fType(' '),
+  TNamed(),
+  fType(0),
   fDType(0),
   fClass(cl),
   fPointer(0)
@@ -263,10 +275,16 @@ TTreeStream::TTreeStream(const char *treename):
   fNextNameCounter(),
   fStatus(0)
 {
+  //
+  // Standard ctor
+  //
 }
 
 TTreeStream::~TTreeStream()
 {
+  //
+  // Class dtor
+  //
   fElements->Delete();
   fBranches->Clear();
   delete fElements;
@@ -275,12 +293,17 @@ TTreeStream::~TTreeStream()
 
 void TTreeStream::Close()
 {
+  //
+  // Flush data to disk and close
   //
   fTree->Write();
 }
 
 Int_t TTreeStream::CheckIn(Char_t type, void *pointer)
 {
+  //
+  // Insert object of given type
+  //
   if (!fElements) fElements = new TObjArray(1000);
   TTreeDataElement* element = (TTreeDataElement*)fElements->At(fCurrentIndex);
   if (!element) {
@@ -316,6 +339,7 @@ Int_t TTreeStream::CheckIn(Char_t type, void *pointer)
 
 Int_t TTreeStream::CheckIn(TObject *o){
   //
+  // Insert TObject
   //
   if (!o) return 0;
   if (!fElements) fElements = new TObjArray(1000);
@@ -353,6 +377,7 @@ Int_t TTreeStream::CheckIn(TObject *o){
 
 void TTreeStream::BuildTree(){
   //
+  // Build the Tree
   //
   if (fTree->GetEntries()>0) return;
   fTree = new TTree(GetName(),GetName());
@@ -371,7 +396,7 @@ void TTreeStream::BuildTree(){
     }
     if (element->fClass){
       if (element->fClass->GetBaseClass("TClonesArray")){
-       TBranch * br = fTree->Branch(bname1,&(element->fPointer));
+       TBranch * br = fTree->Branch(bname1,element->fClass->GetName(),&(element->fPointer));
        fBranches->AddAt(br,i);
       }else
        {
@@ -390,6 +415,7 @@ void TTreeStream::BuildTree(){
 
 void TTreeStream::Fill(){
   //
+  // Fill the tree
   //
   if (fTree) { 
     Int_t entries=fElements->GetEntriesFast();
@@ -408,7 +434,11 @@ void TTreeStream::Fill(){
   }
 }
 
-TTreeStream & TTreeStream::Endl(){
+TTreeStream & TTreeStream::Endl()
+{
+  //
+  // Perform pseudo endl operation
+  //
   if (fTree->GetNbranches()==0) BuildTree();
   Fill();
   fStatus =0;
@@ -420,9 +450,8 @@ TTreeStream & TTreeStream::Endl(){
 TTreeStream  &TTreeStream::operator<<(Char_t *name)
 {
   //
+  // Endl 
   //
-  //
-  //Endl 
   if (name[0]=='\n'){
     return Endl();
   }