4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
10 // Class containing MUON data: hits, digits, rawclusters, globaltrigger, localtrigger, etc ...
11 // Gines Martinez, Subatech, September 2003
14 #include "AliLoader.h"
22 class AliMUONConstants;
23 class AliMUONRawCluster;
26 //__________________________________________________________________
27 /////////////////////////////////////////////////////////////////////
29 // class AliMUONData //
31 /////////////////////////////////////////////////////////////////////
33 class AliMUONData : public TNamed {
36 AliMUONData(AliLoader * loader, const char* name, const char* title);
37 AliMUONData(const AliMUONData& rMUONData);
38 virtual ~AliMUONData();
39 virtual void AddDigit(Int_t id, Int_t* tracks, Int_t* charges,
41 virtual void AddHit(Int_t fIshunt, Int_t track, Int_t iChamber,
42 Int_t idpart, Float_t X, Float_t Y, Float_t Z,
43 Float_t tof, Float_t momentum, Float_t theta,
44 Float_t phi, Float_t length, Float_t destep);
45 virtual void AddHit(Int_t fIshunt, Int_t track, Int_t iChamber,
46 Int_t idpart, Float_t X, Float_t Y, Float_t Z,
47 Float_t tof, Float_t momentum, Float_t theta,
48 Float_t phi, Float_t length, Float_t destep,
49 Float_t Xref,Float_t Yref,Float_t Zref);
50 virtual void AddGlobalTrigger(Int_t *singlePlus, Int_t *singleMinus,
51 Int_t *singleUndef, Int_t *pairUnlike,
53 virtual void AddLocalTrigger(Int_t* ltrigger);
54 virtual void AddRawCluster(Int_t id, const AliMUONRawCluster& clust);
55 virtual void AddRecTrack(const AliMUONTrack& track);
57 TClonesArray* Hits() {return fHits;}
58 TClonesArray* Digits(Int_t DetectionPlane);
59 TClonesArray* LocalTrigger() {return fLocalTrigger;}
60 TClonesArray* GlobalTrigger() {return fGlobalTrigger;}
61 TClonesArray* RawClusters(Int_t DetectionPlane);
62 TClonesArray* RecTracks() {return fRecTracks;}
64 void GetTrack(Int_t it) {fLoader->TreeH()->GetEvent(it);}
65 Int_t GetNtracks() {return (Int_t) fLoader->TreeH()->GetEntries();}
66 void GetCathode(Int_t ic) {fLoader->TreeD()->GetEvent(ic);}
67 void GetRawClusters() {fLoader->TreeR()->GetEvent(0);}
68 void GetTrigger() {fLoader->TreeR()->GetEvent(0);}
69 Int_t GetSplitLevel() {return fSplitLevel;}
70 void GetRecTracks() {fLoader->TreeT()->GetEvent(0);}
72 Bool_t IsRawClusterBranchesInTree();
73 Bool_t IsTriggerBranchesInTree();
75 virtual AliLoader* GetLoader() {return fLoader;}
76 virtual void SetLoader(AliLoader * loader) {fLoader=loader;}
78 virtual void Fill(Option_t* opt=" ");
79 virtual void MakeBranch(Option_t *opt=" ");
80 virtual void SetTreeAddress(Option_t *opt=" ");
82 void SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;}
85 virtual void ResetHits();
86 virtual void ResetDigits();
87 virtual void ResetTrigger();
88 virtual void ResetRawClusters();
89 virtual void ResetRecTracks();
91 TTree* TreeH() {return fLoader->TreeH(); }
92 TTree* TreeD() {return fLoader->TreeD(); }
93 TTree* TreeR() {return fLoader->TreeR(); }
94 TTree* TreeT() {return fLoader->TreeT(); }
95 TTree* TreeP() {return fLoader->TreeP(); }
98 //descendant classes should
99 //use protected interface methods to access these folders
105 // One event in treeH per primary track
107 // One event in treeD and one branch per detection plane
109 //One event in TreeR/Rawcluster and one branch per tracking detection plane
110 TObjArray* fRawClusters;
111 //! List of Global Trigger One event in TreeR/GlobalTriggerBranch
112 TClonesArray* fGlobalTrigger;
113 //! List of Local Trigger, One event in TreeR/LocalTriggerBranch
114 TClonesArray* fLocalTrigger;
115 // pointer to array of reconstructed tracks
116 TClonesArray* fRecTracks;
120 Int_t* fNrawclusters;//!
121 Int_t fNglobaltrigger;//!
122 Int_t fNlocaltrigger;//!
123 Int_t fNrectracks; //!
124 Int_t fSplitLevel; // Splitting of branches 0 no spitting (root files are smaller) 1 splitting (larger output files)
126 ClassDef(AliMUONData,1)