]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONData.h
Classes for reading of the old RCU TPC raw data
[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 AliMUONGlobalTrigger;
39
40 //__________________________________________________________________
41 /////////////////////////////////////////////////////////////////////
42 //                                                                 //
43 //  class AliMUONData                                              //
44 //                                                                 //
45 /////////////////////////////////////////////////////////////////////
46
47 class AliMUONData : public TNamed 
48 {
49   public:
50   
51   //  enum EChamberIteration { kAllChambers, kTrackingChambers, kTriggerChambers };
52   
53     AliMUONData();
54     AliMUONData(AliLoader * loader, const char* name, const char* title);
55     virtual ~AliMUONData();  
56     virtual void   AddDigit(Int_t id, Int_t* tracks, Int_t* charges,
57                              Int_t* digits); 
58     virtual void   AddSDigit(Int_t id, Int_t* tracks, Int_t* charges,
59                              Int_t* digits); 
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 iChamber, 
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                           // TBR
68     virtual void   AddHit2(Int_t fIshunt, Int_t track, Int_t detElemId, 
69                           Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
70                           Float_t tof, Float_t momentum, Float_t theta, 
71                           Float_t phi, Float_t length, Float_t destep, 
72                           Float_t Xref,Float_t Yref,Float_t Zref);
73     
74     virtual void   AddGlobalTrigger(Int_t *singlePlus, Int_t *singleMinus,
75                                     Int_t *singleUndef, Int_t *pairUnlike, 
76                                     Int_t *pairLike);
77     virtual void   AddGlobalTrigger(const AliMUONGlobalTrigger& trigger); // use copy constructor
78
79     virtual void   AddLocalTrigger(const Int_t* ltrigger, const TArrayI& digits);
80     virtual void   AddLocalTrigger(const AliMUONLocalTrigger& trigger); // use copy constructor
81
82     virtual void   AddRawCluster(Int_t id, const AliMUONRawCluster& clust);
83     virtual void   AddRecTrack(const AliMUONTrack& track);
84     virtual void   AddRecTriggerTrack(const AliMUONTriggerTrack& triggertrack);
85
86     TClonesArray*  Hits() {return fHits;}
87     TClonesArray*  Digits(Int_t DetectionPlane) const;
88     TClonesArray*  SDigits(Int_t DetectionPlane) const;
89     TClonesArray*  LocalTrigger() const;
90     TClonesArray*  GlobalTrigger() const;    
91     TClonesArray*  RawClusters(Int_t DetectionPlane);
92     TClonesArray*  RecTracks() {return fRecTracks;}
93     TClonesArray*  RecTriggerTracks() {return fRecTriggerTracks;}
94
95     void           GetTrack(Int_t it) const  {fLoader->TreeH()->GetEvent(it);}
96     Int_t          GetNtracks() const      {return (Int_t) fLoader->TreeH()->GetEntries();}
97     void           GetDigits() const;
98     void           GetSDigits() const {fLoader->TreeS()->GetEvent(0);}
99     void           GetRawClusters() const {fLoader->TreeR()->GetEvent(0);}
100     void           GetTrigger() const {fLoader->TreeR()->GetEvent(0);}
101     void           GetTriggerD() const {fLoader->TreeD()->GetEvent(0);}
102     Int_t          GetSplitLevel() const {return fSplitLevel;}
103     void           GetRecTracks() const {fLoader->TreeT()->GetEvent(0);}
104     void           GetRecTriggerTracks() const {fLoader->TreeT()->GetEvent(0);}
105
106     Bool_t        IsRawClusterBranchesInTree();
107     Bool_t        IsDigitsBranchesInTree();
108     Bool_t        IsTriggerBranchesInTree();
109     Bool_t        IsTriggerBranchesInTreeD();
110     Bool_t        IsTrackBranchesInTree();
111     Bool_t        IsTriggerTrackBranchesInTree();
112
113     virtual AliLoader* GetLoader() const { return fLoader; }
114     virtual void       SetLoader(AliLoader * loader) {fLoader=loader;}    
115     
116     virtual void   Fill(Option_t* opt=" ");
117     virtual void   MakeBranch(Option_t *opt=" ");
118     virtual void   SetTreeAddress(Option_t *opt=" ");
119     
120     void           SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;}
121     
122     virtual void Print(Option_t* opt="") const;
123     
124     virtual void   ResetHits();
125     virtual void   ResetDigits();
126     virtual void   ResetSDigits();
127     virtual void   ResetTrigger();
128     virtual void   ResetRawClusters();
129     virtual void   ResetRecTracks();
130     virtual void   ResetRecTriggerTracks();
131   
132     TTree*         TreeH() {return fLoader->TreeH(); }
133     TTree*         TreeD() {return fLoader->TreeD(); }
134     TTree*         TreeS() {return fLoader->TreeS(); }
135     TTree*         TreeR() {return fLoader->TreeR(); }
136     TTree*         TreeT() {return fLoader->TreeT(); }
137     TTree*         TreeP() {return fLoader->TreeP(); }
138
139     //    TIterator* CreateDigitIterator(AliMUONData::EChamberIteration type);
140     
141   protected: 
142     AliMUONData(const AliMUONData& rhs);
143     AliMUONData& operator=(const AliMUONData& rhs);
144
145     AliLoader*  fLoader; //! Detector Loader pointer
146     TClonesArray*   fHits;  // One event in treeH per primary track
147     TObjArray*      fDigits; // One event in treeD and one branch per detection plane
148     TObjArray*      fSDigits; // One event in treeS and one branch per detection plane
149     TObjArray*      fRawClusters; //One event in TreeR/Rawcluster and one branch per tracking detection plane
150     TClonesArray*   fGlobalTrigger;  // List of Global Trigger One event in TreeR/GlobalTriggerBranch
151     TClonesArray*   fLocalTrigger;  // List of Local Trigger, One event in TreeR/LocalTriggerBranch
152     TClonesArray*   fRecTracks; // pointer to array of reconstructed tracks
153     TClonesArray*   fRecTriggerTracks; // pointer to array of reconstructed trigger tracks
154
155     Int_t           fNhits; //!  Number of Hits
156     Int_t*          fNdigits;//! Number of Digits
157     Int_t*          fNSdigits;//! Number of Digits
158     Int_t*          fNrawclusters;//! Number of Raw Clusters
159     Int_t           fNglobaltrigger;//! Number of Global trigger
160     Int_t           fNlocaltrigger;//! Number of Local trigger
161     Int_t           fNrectracks; //! Number of reconstructed tracks
162     Int_t           fNrectriggertracks; //! Number of reconstructed tracks
163     Int_t           fSplitLevel; // Splitting of branches 0 no spitting (root files are smaller) 1 splitting (larger output files)
164
165     mutable Int_t fCurrentEvent; // Current event we're dealing with\13
166     
167 private:  
168
169   ClassDef(AliMUONData,3) // Data accessor for MUON module
170       
171 };
172
173
174 #endif
175