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