ROOT logo
#ifndef ALIMUONTREEMANAGER_H
#define ALIMUONTREEMANAGER_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup core
/// \class AliMUONTreeManager
/// \brief Helper class to ease TTree (MUON) branches manipulations
/// 
// Author Laurent Aphecetche, Subatech

#ifndef ROOT_TObject
#  include "TObject.h"
#endif

class AliMUONVStore;
class TTree;
class TBranch;

class AliMUONTreeManager : public TObject
{
public:

  AliMUONTreeManager();
  virtual ~AliMUONTreeManager();

  void AddClassName(TTree& tree, const char* pattern, 
                    const char* className) const;
    
  Bool_t MakeBranch(TTree& tree, const char* storeClassName,
                    const char* branchClassName, const char* branchName, 
                    void* address,
                    Int_t bufferSize = 4000, Int_t splitLevel = 99) const;
  
  Bool_t SetAddress(TTree& tree, const char* branchName, void* address) const;
  
  TObject* CreateObject(const TTree& tree, const char* detail) const;
  
  void UpdateBranchStatuses(TTree& tree, const char* pattern) const;
  
  /** Debug method to get an event, but checking beforehand that all selected
    branches do have a non-zero address set (otherwise we leak memory). 
    */
  void GetEvent(TTree& tree, Int_t event) const;
  
  /// Debug method to show the tree branch statuses and addresses.
  void ShowStatus(TTree& tree) const;

private:

  TString GetClassName(const TTree& tree, const char* pattern,
                       Bool_t makeDefault) const;
    
  TString DefaultClassName(const char* treename, const char* pattern) const;
  
  ClassDef(AliMUONTreeManager,0) // Helper class to handle MUON TTrees
};

#endif
 AliMUONTreeManager.h:1
 AliMUONTreeManager.h:2
 AliMUONTreeManager.h:3
 AliMUONTreeManager.h:4
 AliMUONTreeManager.h:5
 AliMUONTreeManager.h:6
 AliMUONTreeManager.h:7
 AliMUONTreeManager.h:8
 AliMUONTreeManager.h:9
 AliMUONTreeManager.h:10
 AliMUONTreeManager.h:11
 AliMUONTreeManager.h:12
 AliMUONTreeManager.h:13
 AliMUONTreeManager.h:14
 AliMUONTreeManager.h:15
 AliMUONTreeManager.h:16
 AliMUONTreeManager.h:17
 AliMUONTreeManager.h:18
 AliMUONTreeManager.h:19
 AliMUONTreeManager.h:20
 AliMUONTreeManager.h:21
 AliMUONTreeManager.h:22
 AliMUONTreeManager.h:23
 AliMUONTreeManager.h:24
 AliMUONTreeManager.h:25
 AliMUONTreeManager.h:26
 AliMUONTreeManager.h:27
 AliMUONTreeManager.h:28
 AliMUONTreeManager.h:29
 AliMUONTreeManager.h:30
 AliMUONTreeManager.h:31
 AliMUONTreeManager.h:32
 AliMUONTreeManager.h:33
 AliMUONTreeManager.h:34
 AliMUONTreeManager.h:35
 AliMUONTreeManager.h:36
 AliMUONTreeManager.h:37
 AliMUONTreeManager.h:38
 AliMUONTreeManager.h:39
 AliMUONTreeManager.h:40
 AliMUONTreeManager.h:41
 AliMUONTreeManager.h:42
 AliMUONTreeManager.h:43
 AliMUONTreeManager.h:44
 AliMUONTreeManager.h:45
 AliMUONTreeManager.h:46
 AliMUONTreeManager.h:47
 AliMUONTreeManager.h:48
 AliMUONTreeManager.h:49
 AliMUONTreeManager.h:50
 AliMUONTreeManager.h:51
 AliMUONTreeManager.h:52
 AliMUONTreeManager.h:53
 AliMUONTreeManager.h:54
 AliMUONTreeManager.h:55
 AliMUONTreeManager.h:56
 AliMUONTreeManager.h:57
 AliMUONTreeManager.h:58
 AliMUONTreeManager.h:59
 AliMUONTreeManager.h:60
 AliMUONTreeManager.h:61
 AliMUONTreeManager.h:62