get tables from the aliroot directory if they are not in the current one
[u/mrichter/AliRoot.git] / MUON / AliMUONData.h
1 #ifndef ALIMUONDATA_H
2 #define ALIMUONDATA_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 // AliMUONData
10 // Class containing MUON data: hits, digits, rawclusters, globaltrigger, localtrigger, etc ...
11 // Gines Martinez, Subatech,  September 2003
12 //
13
14 #include "AliLoader.h"
15
16 class TClonesArray;
17 class TNamed;
18 class TObjArray;
19 class TTree;
20
21
22 class AliMUONConstants;
23 class AliMUONRawCluster;
24 class AliMUONTrack;
25 class AliMUONTriggerTrack;
26 class AliMUONDigit;
27 class AliMUONHit;
28 class AliMUONLocalTrigger;
29 class AliMUONGlobalTrigger;
30
31 //__________________________________________________________________
32 /////////////////////////////////////////////////////////////////////
33 //                                                                 //
34 //  class AliMUONData                                              //
35 //                                                                 //
36 /////////////////////////////////////////////////////////////////////
37
38 class AliMUONData : public TNamed {
39  public:
40     AliMUONData();
41     AliMUONData(AliLoader * loader, const char* name, const char* title);
42     AliMUONData(const AliMUONData& rMUONData);
43     virtual ~AliMUONData();  
44     virtual void   AddDigit(Int_t id, Int_t* tracks, Int_t* charges,
45                              Int_t* digits); 
46     virtual void   AddSDigit(Int_t id, Int_t* tracks, Int_t* charges,
47                              Int_t* digits); 
48     virtual void   AddDigit(Int_t, const AliMUONDigit& ); // use copy constructor
49     virtual void   AddSDigit(Int_t, const AliMUONDigit& ); // use copy constructor
50     virtual void   AddHit(Int_t fIshunt, Int_t track, Int_t iChamber, 
51                           Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
52                           Float_t tof, Float_t momentum, Float_t theta, 
53                           Float_t phi, Float_t length, Float_t destep);
54     virtual void   AddHit(Int_t fIshunt, Int_t track, Int_t iChamber, 
55                           Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
56                           Float_t tof, Float_t momentum, Float_t theta, 
57                           Float_t phi, Float_t length, Float_t destep, 
58                           Float_t Xref,Float_t Yref,Float_t Zref);
59     virtual void   AddHit(const AliMUONHit& ); // use copy constructor
60     
61     virtual void   AddGlobalTrigger(Int_t *singlePlus, Int_t *singleMinus,
62                                     Int_t *singleUndef, Int_t *pairUnlike, 
63                                     Int_t *pairLike);
64     virtual void   AddGlobalTrigger(const AliMUONGlobalTrigger& trigger); // use copy constructor
65
66     virtual void   AddLocalTrigger(Int_t* ltrigger);
67     virtual void   AddLocalTrigger(const AliMUONLocalTrigger& trigger); // use copy constructor
68
69     virtual void   AddRawCluster(Int_t id, const AliMUONRawCluster& clust);
70     virtual void   AddRecTrack(const AliMUONTrack& track);
71     virtual void   AddRecTriggerTrack(const AliMUONTriggerTrack& triggertrack);
72
73     TClonesArray*  Hits() {return fHits;}
74     TClonesArray*  Digits(Int_t DetectionPlane);
75     TClonesArray*  SDigits(Int_t DetectionPlane);
76 //    TClonesArray*  LocalTrigger() {return fLocalTrigger;}
77 //    TClonesArray*  GlobalTrigger() {return fGlobalTrigger;}
78     TClonesArray*  LocalTrigger();
79     TClonesArray*  GlobalTrigger();    
80     TClonesArray*  RawClusters(Int_t DetectionPlane);
81     TClonesArray*  RecTracks() {return fRecTracks;}
82     TClonesArray*  RecTriggerTracks() {return fRecTriggerTracks;}
83
84     void           GetTrack(Int_t it) {fLoader->TreeH()->GetEvent(it);}
85     Int_t          GetNtracks()       {return (Int_t) fLoader->TreeH()->GetEntries();}
86     void           GetCathode(Int_t ic) {fLoader->TreeD()->GetEvent(ic);}
87     void           GetCathodeS(Int_t ic) {fLoader->TreeS()->GetEvent(ic);}
88     void           GetRawClusters() {fLoader->TreeR()->GetEvent(0);}
89     void           GetTrigger() {fLoader->TreeR()->GetEvent(0);}
90     Int_t          GetSplitLevel() {return fSplitLevel;}
91     void           GetRecTracks() {fLoader->TreeT()->GetEvent(0);}
92     void           GetRecTriggerTracks() {fLoader->TreeT()->GetEvent(0);}
93
94     Bool_t        IsRawClusterBranchesInTree();
95     Bool_t        IsTriggerBranchesInTree();
96     Bool_t        IsTrackBranchesInTree();
97     Bool_t        IsTriggerTrackBranchesInTree();
98
99     virtual AliLoader* GetLoader() {return fLoader;}
100     virtual void       SetLoader(AliLoader * loader) {fLoader=loader;}    
101     
102     virtual void   Fill(Option_t* opt=" ");
103     virtual void   MakeBranch(Option_t *opt=" ");
104     virtual void   SetTreeAddress(Option_t *opt=" ");
105     
106     void           SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;}
107     
108
109     virtual void   ResetHits();
110     virtual void   ResetDigits();
111     virtual void   ResetSDigits();
112     virtual void   ResetTrigger();
113     virtual void   ResetRawClusters();
114     virtual void   ResetRecTracks();
115     virtual void   ResetRecTriggerTracks();
116   
117     TTree*         TreeH() {return fLoader->TreeH(); }
118     TTree*         TreeD() {return fLoader->TreeD(); }
119     TTree*         TreeS() {return fLoader->TreeS(); }
120     TTree*         TreeR() {return fLoader->TreeR(); }
121     TTree*         TreeT() {return fLoader->TreeT(); }
122     TTree*         TreeP() {return fLoader->TreeP(); }
123
124  private:  
125     //descendant classes should
126     //use protected interface methods to access these folders
127
128   
129  protected: 
130     AliLoader*  fLoader; //! Detector Loader pointer
131     TClonesArray*   fHits;  // One event in treeH per primary track
132     TObjArray*      fDigits; // One event in treeD and one branch per detection plane
133     TObjArray*      fSDigits; // One event in treeS and one branch per detection plane
134     TObjArray*      fRawClusters; //One event in TreeR/Rawcluster and one branch per tracking detection plane
135     TClonesArray*   fGlobalTrigger;  // List of Global Trigger One event in TreeR/GlobalTriggerBranch
136     TClonesArray*   fLocalTrigger;  // List of Local Trigger, One event in TreeR/LocalTriggerBranch
137     TClonesArray*   fRecTracks; // pointer to array of reconstructed tracks
138     TClonesArray*   fRecTriggerTracks; // pointer to array of reconstructed trigger tracks
139
140     Int_t           fNhits; //!  Number of Hits
141     Int_t*          fNdigits;//! Number of Digits
142     Int_t*          fNSdigits;//! Number of Digits
143     Int_t*          fNrawclusters;//! Number of Raw Clusters
144     Int_t           fNglobaltrigger;//! Number of Global trigger
145     Int_t           fNlocaltrigger;//! Number of Local trigger
146     Int_t           fNrectracks; //! Number of reconstructed tracks
147     Int_t           fNrectriggertracks; //! Number of reconstructed tracks
148     Int_t           fSplitLevel; // Splitting of branches 0 no spitting (root files are smaller) 1 splitting (larger output files)
149
150     ClassDef(AliMUONData,1)
151  };
152 #endif
153