new functionality and new class added
[u/mrichter/AliRoot.git] / MUON / AliMUONTreeManager.h
1 #ifndef ALIMUONTREEMANAGER_H
2 #define ALIMUONTREEMANAGER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup core
10 /// \class AliMUONTreeManager
11 /// \brief Helper class to ease TTree (MUON) branches manipulations
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ROOT_TObject
16 #  include "TObject.h"
17 #endif
18
19 class AliMUONVStore;
20 class TTree;
21 class TBranch;
22
23 class AliMUONTreeManager : public TObject
24 {
25 public:
26
27   AliMUONTreeManager();
28   virtual ~AliMUONTreeManager();
29
30   void AddClassName(TTree& tree, const char* pattern, 
31                     const char* className) const;
32     
33   Bool_t MakeBranch(TTree& tree, const char* storeClassName,
34                     const char* branchClassName, const char* branchName, 
35                     void* address,
36                     Int_t bufferSize = 4000, Int_t splitLevel = 1) const;
37   
38   Bool_t SetAddress(TTree& tree, const char* branchName, void* address) const;
39   
40   TObject* CreateObject(const TTree& tree, const char* detail) const;
41   
42   void UpdateBranchStatuses(TTree& tree, const char* pattern) const;
43   
44   const char* GetClassName(const TTree& tree, const char* pattern,
45                            Bool_t makeDefault) const;
46   
47   /** Debug method to get an event, but checking beforehand that all selected
48     branches do have a non-zero address set (otherwise we leak memory). 
49     */
50   void GetEvent(TTree& tree, Int_t event) const;
51   
52   /// Debug method to show the tree branch statuses and addresses.
53   void ShowStatus(TTree& tree) const;
54
55 private:
56
57   const char* DefaultClassName(const char* treename, const char* pattern) const;
58   
59   ClassDef(AliMUONTreeManager,0) // Helper class to handle MUON TTrees
60 };
61
62 #endif