1 #ifndef ALI_MUON_DATA_INTERFACE_H
2 #define ALI_MUON_DATA_INTERFACE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 // Includes revised 07/05/2004
10 /// \class AliMUONDataInterface
11 /// \brief An easy to use interface to data in the MUON module
13 // Author: Artur Szostak
14 // email: artur@alice.phy.uct.ac.za
19 #include "AliMUONData.h"
25 class AliMUONRawCluster;
26 class AliMUONLocalTrigger;
31 /// An easy to use interface to the MUON module data stored.
34 class AliMUONDataInterface : public TObject
38 AliMUONDataInterface();
39 ~AliMUONDataInterface();
41 // Sets all internal pointers to NULL without releasing the current runloader.
44 Bool_t UseCurrentRunLoader();
46 Int_t NumberOfEvents(TString filename, TString foldername);
48 Int_t NumberOfParticles(TString filename, TString foldername, Int_t event);
49 TParticle* Particle(TString filename, TString foldername, Int_t event, Int_t particle);
51 Int_t NumberOfTracks(TString filename, TString foldername, Int_t event);
52 Int_t NumberOfHits(TString filename, TString foldername, Int_t event, Int_t track);
53 AliMUONHit* Hit(TString filename, TString foldername, Int_t event, Int_t track, Int_t hit);
55 Int_t NumberOfSDigits(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cathode);
56 AliMUONDigit* SDigit(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cathode, Int_t sdigit);
58 Int_t NumberOfDigits(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cathode);
59 AliMUONDigit* Digit(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cathode, Int_t digit);
61 Int_t NumberOfRawClusters(TString filename, TString foldername, Int_t event, Int_t chamber);
62 AliMUONRawCluster* RawCluster(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cluster);
64 Int_t NumberOfLocalTriggers(TString filename, TString foldername, Int_t event);
65 AliMUONLocalTrigger* LocalTrigger(TString filename, TString foldername, Int_t event, Int_t trigger);
67 Bool_t SetFile(TString filename = "galice.root", TString foldername = "MUONFolder");
68 Bool_t GetEvent(Int_t event = 0);
70 Int_t NumberOfEvents();
72 Int_t NumberOfParticles();
73 TParticle* Particle(Int_t particle);
75 Int_t NumberOfTracks();
76 Int_t NumberOfHits(Int_t track);
77 AliMUONHit* Hit(Int_t track, Int_t hit);
79 Int_t NumberOfSDigits(Int_t chamber, Int_t cathode);
80 AliMUONDigit* SDigit(Int_t chamber, Int_t cathode, Int_t sdigit);
82 Int_t NumberOfDigits(Int_t chamber, Int_t cathode);
83 AliMUONDigit* Digit(Int_t chamber, Int_t cathode, Int_t digit);
85 Int_t NumberOfRawClusters(Int_t chamber);
86 AliMUONRawCluster* RawCluster(Int_t chamber, Int_t cluster);
88 Int_t NumberOfLocalTriggers();
89 AliMUONLocalTrigger* LocalTrigger(Int_t trigger);
91 Int_t NumberOfGlobalTriggers();
92 AliMUONGlobalTrigger* GlobalTrigger(Int_t trigger);
93 // Returns the name of the currently selected file.
95 Int_t NumberOfRecTracks();
96 AliMUONTrack* RecTrack(Int_t rectrack);
98 TString CurrentFile() const { return fFilename; };
100 // Returns the name of the currently selected folder.
101 TString CurrentFolder() const { return fFoldername; };
103 // Returns the number of the currently selected event.
104 Int_t CurrentEvent() const { return fEventnumber; };
106 // Returns the currently selected track.
107 Int_t CurrentTrack() const { return fTrack; };
109 // Returns the currently selected cathode in TreeS.
110 Int_t CurrentSCathode() const { return fSCathode; };
112 // Returns the currently selected cathode in TreeD.
113 Int_t CurrentDCathode() const { return fCathode; };
116 AliMUONDataInterface(const AliMUONDataInterface& rhs);
117 AliMUONDataInterface& operator=(const AliMUONDataInterface& rhs);
121 Bool_t FetchMuonLoader(TString filename, TString foldername);
122 Bool_t LoadLoaders(TString filename, TString foldername);
123 Bool_t FetchLoaders(TString filename, TString foldername);
124 Bool_t FetchEvent(Int_t event);
132 Bool_t fCreatedRunLoader; //! If this object created the fRunloader then this flag is set.
134 Bool_t fHitAddressSet; //! Flag specifying if the TTree address for the hit tree was set.
135 Bool_t fSDigitAddressSet; //! Flag specifying if the TTree address for the s-digit tree was set.
136 Bool_t fDigitAddressSet; //! Flag specifying if the TTree address for the digit tree was set.
137 Bool_t fClusterAddressSet; //! Flag specifying if the TTree address for the cluster tree was set.
138 Bool_t fTriggerAddressSet; //! Flag specifying if the TTree address for the trigger tree was set.
139 Bool_t fRecTracksAddressSet; //! Flag specifying if the TTree address for the rec tracks tree was set.
141 AliRunLoader* fRunloader; //! Pointer to the runloader object used.
142 AliLoader* fMuonloader; //! Pointer to the muon loader object used.
143 AliMUONData fData; //! Pointer to the muon raw data interface.
144 TString fFilename; //! The file name from which we are fetching data.
145 TString fFoldername; //! The folder name from which we are fetching data.
146 Int_t fEventnumber; //! The currently selected event.
147 Int_t fTrack; //! The currently selected track.
148 Int_t fSCathode; //! The currently selected cathode in TreeS.
149 Int_t fCathode; //! The currently selected cathode in TreeD.
151 ClassDef(AliMUONDataInterface, 0) // A easy to use interface to data in the MUON module.
155 #endif // ALI_MUON_DATA_INTERFACE_H