]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONData.h
Updated AliEMCAL::Digits2Raw, reads first provisional RCU mapping files to make Raw...
[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 // Revision of includes 07/05/2004
9 //
10 /// \ingroup base
11 /// \class AliMUONData
12 /// \brief MUON data
13 ///
14 /// Class containing MUON data: hits, digits, rawclusters, globaltrigger, 
15 /// localtrigger, etc ...
16 ///
17 /// Author: Gines Martinez, Subatech,  September 2003
18
19 #include <TNamed.h>
20
21 class TArrayI;
22
23 #include "AliLoader.h"
24
25 class TClonesArray;
26 class TNamed;
27 class TObjArray;
28 class TTree;
29 class TIterator;
30
31 class AliMUONConstants;
32 class AliMUONRawCluster;
33 class AliMUONTrack;
34 class AliMUONTriggerTrack;
35 class AliMUONDigit;
36 class AliMUONHit;
37 class AliMUONLocalTrigger;
38 class AliMUONRegionalTrigger;
39 class AliMUONGlobalTrigger;
40
41 //__________________________________________________________________
42 /////////////////////////////////////////////////////////////////////
43 //                                                                 //
44 //  class AliMUONData                                              //
45 //                                                                 //
46 /////////////////////////////////////////////////////////////////////
47
48 class AliMUONData : public TNamed 
49 {
50   public:
51   
52   //  enum EChamberIteration { kAllChambers, kTrackingChambers, kTriggerChambers };
53   
54     AliMUONData();
55     AliMUONData(AliLoader * loader, const char* name, const char* title);
56     virtual ~AliMUONData();  
57     virtual void   AddDigit(Int_t id, const AliMUONDigit& digit); // use copy constructor
58     virtual void   AddSDigit(Int_t id, const AliMUONDigit& digit); // use copy constructor
59     virtual void   AddHit(Int_t fIshunt, Int_t track, Int_t detElemId, 
60                           Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
61                           Float_t tof, Float_t momentum, Float_t theta, 
62                           Float_t phi, Float_t length, Float_t destep, 
63                           Float_t Xref,Float_t Yref,Float_t Zref);
64     
65     virtual void   AddGlobalTrigger(const AliMUONGlobalTrigger& trigger); // use copy constructor
66
67     virtual void   AddLocalTrigger(const AliMUONLocalTrigger& trigger); // use copy constructor
68  
69     virtual void   AddRegionalTrigger(const AliMUONRegionalTrigger& trigger); // use copy constructor
70
71     virtual void   AddRawCluster(Int_t id, const AliMUONRawCluster& clust);
72     virtual void   AddRecTrack(const AliMUONTrack& track);
73     virtual void   AddRecTriggerTrack(const AliMUONTriggerTrack& triggertrack);
74
75     TClonesArray*  Hits() {return fHits;} ///< Return hits
76     TClonesArray*  Digits(Int_t DetectionPlane) const;
77     TClonesArray*  SDigits(Int_t DetectionPlane) const;
78     TClonesArray*  LocalTrigger() const;
79     TClonesArray*  RegionalTrigger() const;
80     TClonesArray*  GlobalTrigger() const;    
81     TClonesArray*  RawClusters(Int_t DetectionPlane);
82     
83                     /// Return reconstructed tracks
84     TClonesArray*  RecTracks() {return fRecTracks;} 
85                    /// Return reconstructed trigger tracks
86     TClonesArray*  RecTriggerTracks() {return fRecTriggerTracks;}
87
88                    /// Load hits for \a i th entry in hits three
89     void           GetTrack(Int_t it) const  {
90       if (fLoader && fLoader->TreeH())
91         fLoader->TreeH()->GetEvent(it);
92     }
93     Int_t          GetNtracks() const;
94     void           GetDigits() const;
95     
96                    /// Load sdigits tree
97     void           GetSDigits() const {
98       if (fLoader && fLoader->TreeS())
99         fLoader->TreeS()->GetEvent(0);
100     }
101                    /// Load raw clusters tree
102     void           GetRawClusters() const {
103       if (fLoader && fLoader->TreeR())
104         fLoader->TreeR()->GetEvent(0);
105     }
106                    /// Load trigger tree
107     void           GetTrigger() const {
108       if (fLoader && fLoader->TreeR())
109         fLoader->TreeR()->GetEvent(0);
110     }
111                    /// Load trigger D tree
112     void           GetTriggerD() const {
113       if (fLoader && fLoader->TreeD())
114         fLoader->TreeD()->GetEvent(0);
115     }
116                    /// Return split level
117     Int_t          GetSplitLevel() const {return fSplitLevel;}
118                    /// Return reconstructed tracks
119     void           GetRecTracks() const {
120       if (fLoader && fLoader->TreeT())
121         fLoader->TreeT()->GetEvent(0);
122     }
123                    /// Return reconstructed trigger tracks
124     void           GetRecTriggerTracks() const {
125       if (fLoader && fLoader->TreeT())
126         fLoader->TreeT()->GetEvent(0);
127     }
128
129     Bool_t        IsRawClusterBranchesInTree();
130     Bool_t        IsDigitsBranchesInTree();
131     Bool_t        IsTriggerBranchesInTree();
132     Bool_t        IsTriggerBranchesInTreeD();
133     Bool_t        IsTrackBranchesInTree();
134     Bool_t        IsTriggerTrackBranchesInTree();
135
136                        /// Get loader
137     virtual AliLoader* GetLoader() const { return fLoader; }
138                        /// Set loader
139     virtual void       SetLoader(AliLoader * loader) {fLoader=loader;}    
140     
141     virtual void   Fill(Option_t* opt=" ");
142     virtual void   MakeBranch(Option_t *opt=" ");
143     virtual void   SetTreeAddress(Option_t *opt=" ");
144     
145                    /// Set split level
146     void           SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;}
147     
148     virtual void Print(Option_t* opt="") const;
149     
150     virtual void   ResetHits();
151     virtual void   ResetDigits();
152     virtual void   ResetSDigits();
153     virtual void   ResetTrigger();
154     virtual void   ResetRawClusters();
155     virtual void   ResetRecTracks();
156     virtual void   ResetRecTriggerTracks();
157   
158                    /// Return tree with hits
159     TTree*         TreeH() {return fLoader->TreeH(); }
160                    /// Return tree with digits
161     TTree*         TreeD() {return fLoader->TreeD(); }
162                    /// Return tree with summable digits
163     TTree*         TreeS() {return fLoader->TreeS(); }
164                    /// Return tree with raw clusters
165     TTree*         TreeR() {return fLoader->TreeR(); }
166                    /// Return tree with tracks
167     TTree*         TreeT() {return fLoader->TreeT(); }
168                    /// Return tree with particles
169     TTree*         TreeP() {return fLoader->TreeP(); }
170
171     //    TIterator* CreateDigitIterator(AliMUONData::EChamberIteration type);
172     
173   protected: 
174     AliMUONData(const AliMUONData& rhs);
175     AliMUONData& operator=(const AliMUONData& rhs);
176
177     AliLoader*      fLoader;  //!< Detector Loader pointer
178     TClonesArray*   fHits;    ///< One event in treeH per primary track
179     TObjArray*      fDigits;  ///< One event in treeD and one branch per detection plane
180     TObjArray*      fSDigits; ///< One event in treeS and one branch per detection plane
181     TObjArray*      fRawClusters; ///< One event in TreeR/Rawcluster and one branch per tracking detection plane
182     TClonesArray*   fGlobalTrigger; ///< List of Global Trigger One event in TreeR/GlobalTriggerBranch
183     TClonesArray*   fLocalTrigger;  ///< List of Local Trigger, One event in TreeR/LocalTriggerBranch
184     TClonesArray*   fRegionalTrigger;  ///< List of Regional Trigger, One event in TreeR/LocalTriggerBranch
185
186     TClonesArray*   fRecTracks; ///< pointer to array of reconstructed tracks
187     TClonesArray*   fRecTriggerTracks; ///< pointer to array of reconstructed trigger tracks
188
189     Int_t           fNhits;   //!< Number of Hits
190     Int_t*          fNdigits; //!< Number of Digits
191     Int_t*          fNSdigits;//!< Number of Digits
192     Int_t*          fNrawclusters;  //!< Number of Raw Clusters
193     Int_t           fNglobaltrigger;//!< Number of Global trigger
194     Int_t           fNlocaltrigger; //!< Number of Local trigger
195     Int_t           fNregionaltrigger; //!< Number of regional trigger
196     Int_t           fNrectracks;    //!< Number of reconstructed tracks
197     Int_t           fNrectriggertracks; //!< Number of reconstructed tracks
198     Int_t           fSplitLevel;   ///< Splitting of branches 0 no spitting (root files are smaller) 1 splitting (larger output files)
199
200     mutable Int_t fCurrentEvent; ///< Current event we're dealing with
201     
202 private:  
203
204   ClassDef(AliMUONData,3) // Data accessor for MUON module
205       
206 };
207
208
209 #endif
210