]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONData.h
Independent Trigger and rawcluster reconstruction
[u/mrichter/AliRoot.git] / MUON / AliMUONData.h
1 #ifndef ALIMUONDATA_H
2 #define ALIMUONDATA_H
3 //
4 // AliMUONData
5 // Class containing MUON data: hits, digits, rawclusters, globaltrigger, localtrigger, etc ...
6 // Gines Martinez, Subatech,  September 2003
7 //
8
9 #include "AliLoader.h"
10
11 class TClonesArray;
12 class TNamed;
13 class TObjArray;
14 class TTree;
15
16
17 class AliMUONConstants;
18 class AliMUONRawCluster;
19 class AliMUONTrack;
20
21 //__________________________________________________________________
22 /////////////////////////////////////////////////////////////////////
23 //                                                                 //
24 //  class AliMUONData                                              //
25 //                                                                 //
26 /////////////////////////////////////////////////////////////////////
27
28 class AliMUONData : public TNamed {
29  public:
30     AliMUONData();
31     AliMUONData(AliLoader * loader, const char* name, const char* title);
32     AliMUONData(const AliMUONData& rMUONData);
33     virtual ~AliMUONData();  
34     virtual void   AddDigit(Int_t id, Int_t* tracks, Int_t* charges,
35                              Int_t* digits); 
36     virtual void   AddHit(Int_t fIshunt, Int_t track, Int_t iChamber, 
37                           Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
38                           Float_t tof, Float_t momentum, Float_t theta, 
39                           Float_t phi, Float_t length, Float_t destep);
40     virtual void   AddGlobalTrigger(Int_t *singlePlus, Int_t *singleMinus,
41                                     Int_t *singleUndef, Int_t *pairUnlike, 
42                                     Int_t *pairLike);
43     virtual void   AddLocalTrigger(Int_t* ltrigger);
44     virtual void   AddRawCluster(Int_t id, const AliMUONRawCluster& clust);
45     virtual void   AddRecTrack(const AliMUONTrack& track);
46
47     TClonesArray*  Hits() {return fHits;}
48     TClonesArray*  Digits(Int_t DetectionPlane) 
49       {return ( (TClonesArray*) fDigits->At(DetectionPlane) );}
50     TClonesArray*  LocalTrigger() {return fLocalTrigger;}
51     TClonesArray*  GlobalTrigger() {return fGlobalTrigger;}
52     TClonesArray*  RawClusters(Int_t DetectionPlane)
53       {return ( (TClonesArray*) fRawClusters->At(DetectionPlane) );}
54     TClonesArray*  RecTracks() {return fRecTracks;}
55
56     void           GetTrack(Int_t it) {fLoader->TreeH()->GetEvent(it);}
57     Int_t          GetNtracks()       {return (Int_t) fLoader->TreeH()->GetEntries();}
58     void           GetCathode(Int_t ic) {fLoader->TreeD()->GetEvent(ic);}
59     void           GetRawClusters() {fLoader->TreeR()->GetEvent(0);}
60     void           GetTrigger() {fLoader->TreeR()->GetEvent(0);}
61
62     Bool_t        IsRawClusterBranchesInTree();
63     Bool_t        IsTriggerBranchesInTree();
64
65     virtual AliLoader* GetLoader() {return fLoader;}
66     virtual void       SetLoader(AliLoader * loader) {fLoader=loader;}    
67     
68     virtual void   Fill(Option_t* opt=" ");
69     virtual void   MakeBranch(Option_t *opt=" ");
70     virtual void   SetTreeAddress(Option_t *opt=" ");
71     
72     virtual void   ResetHits();
73     virtual void   ResetDigits();
74     virtual void   ResetTrigger();
75     virtual void   ResetRawClusters();
76     virtual void   ResetRecTracks();
77   
78     TTree*         TreeH() {return fLoader->TreeH(); }
79     TTree*         TreeD() {return fLoader->TreeD(); }
80     TTree*         TreeR() {return fLoader->TreeR(); }
81     TTree*         TreeT() {return fLoader->TreeT(); }
82     TTree*         TreeP() {return fLoader->TreeP(); }
83
84  private:  
85     //descendant classes should
86     //use protected interface methods to access these folders
87
88   
89  protected: 
90     AliLoader*  fLoader;
91
92     // One event in treeH per primary track
93     TClonesArray*   fHits;    
94     // One event in treeD and one branch per detection plane
95     TObjArray*      fDigits; 
96     //One event in TreeR/Rawcluster and one branch per tracking detection plane
97     TObjArray*      fRawClusters; 
98     //! List of Global Trigger One event in TreeR/GlobalTriggerBranch
99     TClonesArray*   fGlobalTrigger; 
100     //! List of Local Trigger, One event in TreeR/LocalTriggerBranch
101     TClonesArray*   fLocalTrigger;  
102     // pointer to array of reconstructed tracks
103     TClonesArray*   fRecTracks; 
104
105     Int_t           fNhits; //!
106     Int_t*          fNdigits;//!
107     Int_t*          fNrawclusters;//!
108     Int_t           fNglobaltrigger;//!
109     Int_t           fNlocaltrigger;//!
110     Int_t           fNrectracks; //!
111
112     ClassDef(AliMUONData,1)
113  };
114 #endif