]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONRecData.h
Fix copy ctor in case there is no stored pads (Laurent)
[u/mrichter/AliRoot.git] / MUON / AliMUONRecData.h
1 #ifndef ALIMUONRECDATA_H
2 #define ALIMUONRECDATA_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 rec
11 /// \class AliMUONRecData
12 /// \brief Class containing MUON data: hits, digits, rawclusters, globaltrigger, 
13 /// localtrigger, etc ...
14 ///
15 //  Author: Gines Martinez, Subatech,  September 2003
16
17 #include "AliLoader.h"
18
19 #include "AliMUONData.h"
20
21 class AliMUONRawCluster;
22 class AliMUONTrack;
23 class AliMUONTriggerTrack;
24
25 class AliRunLoader;
26
27 class TClonesArray;
28 class TObjArray;
29 class TTree;
30
31
32 //__________________________________________________________________
33 /////////////////////////////////////////////////////////////////////
34 //                                                                 //
35 //  class AliMUONData                                              //
36 //                                                                 //
37 /////////////////////////////////////////////////////////////////////
38
39 class AliMUONRecData : public AliMUONData
40 {
41   public:
42   
43   //  enum EChamberIteration { kAllChambers, kTrackingChambers, kTriggerChambers };
44   
45     AliMUONRecData();
46     AliMUONRecData(AliLoader * loader, const char* name, const char* title);
47     AliMUONRecData(const char* galiceFile);
48     virtual ~AliMUONRecData();  
49     
50     virtual void   AddRawCluster(Int_t id, const AliMUONRawCluster& clust);
51     virtual void   AddRecTrack(const AliMUONTrack& track);
52     virtual void   AddRecTriggerTrack(const AliMUONTriggerTrack& triggertrack);
53
54     TClonesArray*  RawClusters(Int_t DetectionPlane);
55     
56                     /// Return reconstructed tracks
57     TClonesArray*  RecTracks() {return fRecTracks;} 
58                    /// Return reconstructed trigger tracks
59     TClonesArray*  RecTriggerTracks() {return fRecTriggerTracks;}
60
61     void           GetRawClusters() const;
62     void           GetTrigger() const;
63     void           GetRecTracks() const;
64     void           GetRecTriggerTracks() const;
65
66     Bool_t        IsRawClusterBranchesInTree();
67     Bool_t        IsTrackBranchesInTree();
68     Bool_t        IsTriggerBranchesInTree();
69     Bool_t        IsTriggerTrackBranchesInTree();
70     
71     virtual void   Fill(Option_t* opt=" ");
72     virtual void   MakeBranch(Option_t *opt=" ");
73     virtual void   SetDataContainer(Option_t *opt=" ");
74     virtual void   SetTreeAddress(Option_t *opt=" ");
75     
76     virtual void   ResetRawClusters();
77     virtual void   ResetRecTracks();
78     virtual void   ResetRecTriggerTracks();
79   
80                    /// Return tree with raw clusters
81     TTree*         TreeR() {return fLoader->TreeR(); }
82                    /// Return tree with tracks
83     TTree*         TreeT() {return fLoader->TreeT(); }
84
85                    // Methods to dump data
86     void DumpRecPoints(Int_t event2Check=0, Option_t* opt="full");
87     void DumpTracks(Int_t event2Check=0, Option_t* opt="full");
88     void DumpRecTrigger(Int_t event2Check=0, Int_t write = 0, Bool_t readFromRP = kTRUE);
89     
90   protected: 
91     /// Not implemented
92     AliMUONRecData(const AliMUONRecData& rhs);
93     /// Not implemented
94     AliMUONRecData& operator=(const AliMUONRecData& rhs);
95
96     TObjArray*      fRawClusters; ///< One event in TreeR/Rawcluster and one branch per tracking detection plane
97     TClonesArray*   fRecTracks; ///< pointer to array of reconstructed tracks
98     TClonesArray*   fRecTriggerTracks; ///< pointer to array of reconstructed trigger tracks
99
100     Int_t*          fNrawclusters;  //!< Number of Raw Clusters
101     Int_t           fNrectracks;    //!< Number of reconstructed tracks
102     Int_t           fNrectriggertracks; //!< Number of reconstructed tracks
103     Int_t           fSplitLevel;   ///< Splitting of branches 0 no spitting (root files are smaller) 1 splitting (larger output files)
104
105     mutable Int_t fCurrentEvent; ///< Current event we're dealing with
106     
107 private:  
108     void   FillOwn(Option_t* opt=" ");
109     void   MakeOwnBranch(Option_t *opt=" ");
110     void   SetOwnDataContainer(Option_t *opt=" ");
111     void   SetOwnTreeAddress(Option_t *opt=" ");
112     
113
114   ClassDef(AliMUONRecData,3) // Data accessor for MUON module
115       
116 };
117 // inline functions
118
119
120 /// Load raw clusters tree
121 inline void AliMUONRecData::GetRawClusters() const {
122   if (fLoader && fLoader->TreeR())
123     fLoader->TreeR()->GetEvent(0);
124 }
125
126 /// Load trigger tree
127 inline void AliMUONRecData::GetTrigger() const {
128   if (fLoader && fLoader->TreeR())
129     fLoader->TreeR()->GetEvent(0);
130 }
131
132 /// Load reconstructed tracks
133 inline void AliMUONRecData::GetRecTracks() const {
134   if (fLoader && fLoader->TreeT())
135     fLoader->TreeT()->GetBranch("MUONTrack")->GetEvent(0);
136 }
137
138 /// Load reconstructed trigger tracks
139 inline void AliMUONRecData::GetRecTriggerTracks() const {
140   if (fLoader && fLoader->TreeT())
141     fLoader->TreeT()->GetBranch("MUONTriggerTrack")->GetEvent(0);
142 }
143
144
145
146 #endif
147