X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONDataInterface.h;h=183075d17453a3991b44cce7939c25ddbe4a08d9;hb=95153273156d2401573870c81190c9bff2bdeeec;hp=da778c8c37b6b955944496f55bdcb2ac1d1d55b3;hpb=85fec35d9ae6823f2295e26cd10e3371bc86e23c;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONDataInterface.h b/MUON/AliMUONDataInterface.h index da778c8c37b..183075d1745 100644 --- a/MUON/AliMUONDataInterface.h +++ b/MUON/AliMUONDataInterface.h @@ -1,155 +1,136 @@ -#ifndef ALI_MUON_DATA_INTERFACE_H -#define ALI_MUON_DATA_INTERFACE_H +#ifndef ALIMUONDATAINTERFACE_H +#define ALIMUONDATAINTERFACE_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id$ */ // Includes revised 07/05/2004 // -/// \ingroup base +/// \ingroup evaluation /// \class AliMUONDataInterface -/// \brief An easy to use interface to data in the MUON module +/// \brief An easy to use interface to MUON data -// Author: Artur Szostak -// email: artur@alice.phy.uct.ac.za +// Author: Artur Szostak (University of Cape Town) +// email: artursz@iafrica.com +// +// Updated to MUON module w/o MUONData by Laurent Aphecetche, Subatech +// #include #include -#include "AliMUONData.h" - -class TParticle; - -class AliRunLoader; +class TIterator; class AliLoader; -class AliMUONRawCluster; +class AliMUONVStore; +class AliMUONVDigitStore; +class AliMUONVClusterStore; +class AliMUONVTriggerStore; +class AliMUONVDigit; +class AliMUONVCluster; class AliMUONLocalTrigger; -class AliMUONHit; -class AliMUONDigit; -class AliMUONTrack; +class AliMUONRegionalTrigger; +class AliMUONGlobalTrigger; -/// An easy to use interface to the MUON module data stored. -/// \deprecated class AliMUONDataInterface : public TObject { - public: - - AliMUONDataInterface(); - ~AliMUONDataInterface(); - - // Sets all internal pointers to NULL without releasing the current runloader. - void Reset(); - - Bool_t UseCurrentRunLoader(); - - Int_t NumberOfEvents(TString filename, TString foldername); +public: - Int_t NumberOfParticles(TString filename, TString foldername, Int_t event); - TParticle* Particle(TString filename, TString foldername, Int_t event, Int_t particle); + AliMUONDataInterface(const char* filename="galice.root"); + virtual ~AliMUONDataInterface(); - Int_t NumberOfTracks(TString filename, TString foldername, Int_t event); - Int_t NumberOfHits(TString filename, TString foldername, Int_t event, Int_t track); - AliMUONHit* Hit(TString filename, TString foldername, Int_t event, Int_t track, Int_t hit); - - Int_t NumberOfSDigits(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cathode); - AliMUONDigit* SDigit(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cathode, Int_t sdigit); - - Int_t NumberOfDigits(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cathode); - AliMUONDigit* Digit(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cathode, Int_t digit); - - Int_t NumberOfRawClusters(TString filename, TString foldername, Int_t event, Int_t chamber); - AliMUONRawCluster* RawCluster(TString filename, TString foldername, Int_t event, Int_t chamber, Int_t cluster); + /// Returns true if the data interface was able to open the root file correctly. + Bool_t IsValid() const { return fIsValid; }; + + void Open(const char* filename); + + Int_t NumberOfEvents() const; - Int_t NumberOfLocalTriggers(TString filename, TString foldername, Int_t event); - AliMUONLocalTrigger* LocalTrigger(TString filename, TString foldername, Int_t event, Int_t trigger); + /// Returns the index number of the current event loaded. + /// This is the event number as was used in the last calls to DigitStore(Int_t), + /// ClusterStore(Int_t), TriggerStore(Int_t) or GetEvent(Int_t). + Int_t CurrentEvent() const { return fCurrentEvent; } + + AliMUONVDigitStore* DigitStore(Int_t event); + AliMUONVClusterStore* ClusterStore(Int_t event); + AliMUONVTriggerStore* TriggerStore(Int_t event, const char* treeLetter="R"); + + /// Dump the clusters for a given event, sorted if so required + void DumpClusters(Int_t event, Bool_t sorted=kTRUE) { return DumpRecPoints(event,sorted); } + void DumpRecPoints(Int_t event, Bool_t sorted=kTRUE); + void DumpDigits(Int_t event, Bool_t sorted=kTRUE); + void DumpTrigger(Int_t event, const char* treeLetter="R"); - Bool_t SetFile(TString filename = "galice.root", TString foldername = "MUONFolder"); Bool_t GetEvent(Int_t event = 0); - Int_t NumberOfEvents(); - - Int_t NumberOfParticles(); - TParticle* Particle(Int_t particle); - - Int_t NumberOfTracks(); - Int_t NumberOfHits(Int_t track); - AliMUONHit* Hit(Int_t track, Int_t hit); - - Int_t NumberOfSDigits(Int_t chamber, Int_t cathode); - AliMUONDigit* SDigit(Int_t chamber, Int_t cathode, Int_t sdigit); - + // Note the following methods can be extremely slow. Remember they are only + // here for end user convenience for his/her small tests and macros. + // If you want speed then don't use these methods. If you really want peak + // performance then you should be talking to the AliRunLoader and Store + // objects directly. + Int_t NumberOfDigits(Int_t detElemId); + AliMUONVDigit* Digit(Int_t detElemId, Int_t index); Int_t NumberOfDigits(Int_t chamber, Int_t cathode); - AliMUONDigit* Digit(Int_t chamber, Int_t cathode, Int_t digit); - + AliMUONVDigit* Digit(Int_t chamber, Int_t cathode, Int_t index); Int_t NumberOfRawClusters(Int_t chamber); - AliMUONRawCluster* RawCluster(Int_t chamber, Int_t cluster); - + AliMUONVCluster* RawCluster(Int_t chamber, Int_t index); Int_t NumberOfLocalTriggers(); - AliMUONLocalTrigger* LocalTrigger(Int_t trigger); - - Int_t NumberOfGlobalTriggers(); - AliMUONGlobalTrigger* GlobalTrigger(Int_t trigger); - // Returns the name of the currently selected file. - - Int_t NumberOfRecTracks(); - AliMUONTrack* RecTrack(Int_t rectrack); + AliMUONLocalTrigger* LocalTrigger(Int_t index); + Int_t NumberOfRegionalTriggers(); + AliMUONRegionalTrigger* RegionalTrigger(Int_t index); + AliMUONGlobalTrigger* GlobalTrigger(); - TString CurrentFile() const { return fFilename; }; - - // Returns the name of the currently selected folder. - TString CurrentFolder() const { return fFoldername; }; - - // Returns the number of the currently selected event. - Int_t CurrentEvent() const { return fEventnumber; }; +private: + + /// The various identifiers for the type of iterator constructed. + enum IteratorType + { + kNoIterator, ///< No iterator was constructed. + kDigitIteratorByDetectorElement, ///< A digit iterator for iterating over detector elements. + kDigitIteratorByChamberAndCathode, ///< A digit iterator for iterating over chambers and cathodes. + kRawClusterIterator, ///< A raw cluster iterator. + kLocalTriggerIterator, ///< An iterator for iterating over reconstructed local triggers. + kRegionalTriggerIterator ///< An iterator for iterating over reconstructed regional triggers. + }; + + void DumpSorted(const AliMUONVStore& store) const; + + Bool_t LoadEvent(Int_t event); + + void NtupleTrigger(const char* treeLetter); - // Returns the currently selected track. - Int_t CurrentTrack() const { return fTrack; }; + void ResetStores(); - // Returns the currently selected cathode in TreeS. - Int_t CurrentSCathode() const { return fSCathode; }; + TIterator* GetIterator(IteratorType type, Int_t x = 0, Int_t y = 0); + void ResetIterator(); - // Returns the currently selected cathode in TreeD. - Int_t CurrentDCathode() const { return fCathode; }; + Int_t CountObjects(TIterator* iter); + TObject* FetchObject(TIterator* iter, Int_t index); - protected: + /// Not implemented AliMUONDataInterface(const AliMUONDataInterface& rhs); + /// Not implemented AliMUONDataInterface& operator=(const AliMUONDataInterface& rhs); - private: - - Bool_t FetchMuonLoader(TString filename, TString foldername); - Bool_t LoadLoaders(TString filename, TString foldername); - Bool_t FetchLoaders(TString filename, TString foldername); - Bool_t FetchEvent(Int_t event); - Bool_t FetchTreeK(); - Bool_t FetchTreeH(); - Bool_t FetchTreeS(); - Bool_t FetchTreeD(); - Bool_t FetchTreeR(); - Bool_t FetchTreeT(); - Bool_t fCreatedRunLoader; //! If this object created the fRunloader then this flag is set. + AliLoader* fLoader; //!< Tree accessor + AliMUONVDigitStore* fDigitStore; //!< current digit store (owner) + AliMUONVTriggerStore* fTriggerStore; //!< current trigger store (owner) + AliMUONVClusterStore* fClusterStore; //!< current cluster store (owner) + Int_t fCurrentEvent; //!< Current event we've read in + TString fTreeLetter; //!< The tree letter used in the last call to TriggerStore(). + Bool_t fIsValid; //!< whether we were initialized properly or not - Bool_t fHitAddressSet; //! Flag specifying if the TTree address for the hit tree was set. - Bool_t fSDigitAddressSet; //! Flag specifying if the TTree address for the s-digit tree was set. - Bool_t fDigitAddressSet; //! Flag specifying if the TTree address for the digit tree was set. - Bool_t fClusterAddressSet; //! Flag specifying if the TTree address for the cluster tree was set. - Bool_t fTriggerAddressSet; //! Flag specifying if the TTree address for the trigger tree was set. - Bool_t fRecTracksAddressSet; //! Flag specifying if the TTree address for the rec tracks tree was set. + IteratorType fCurrentIteratorType; //!< The type of iterator that is currently set. + Int_t fCurrentIndex; //!< A current index number maintained for certain iteration operations. + Int_t fDataX; //!< Extra data parameter about the iterator, can be the chamber number or detector element. + Int_t fDataY; //!< Extra data parameter about the iterator, can be the cathode number. + TIterator* fIterator; //!< Iterator for various iteration operations. - AliRunLoader* fRunloader; //! Pointer to the runloader object used. - AliLoader* fMuonloader; //! Pointer to the muon loader object used. - AliMUONData fData; //! Pointer to the muon raw data interface. - TString fFilename; //! The file name from which we are fetching data. - TString fFoldername; //! The folder name from which we are fetching data. - Int_t fEventnumber; //! The currently selected event. - Int_t fTrack; //! The currently selected track. - Int_t fSCathode; //! The currently selected cathode in TreeS. - Int_t fCathode; //! The currently selected cathode in TreeD. + static Int_t fgInstanceCounter; //!< To build unique folder name for each instance - ClassDef(AliMUONDataInterface, 0) // A easy to use interface to data in the MUON module. - }; + ClassDef(AliMUONDataInterface, 0) // An easy to use interface to MUON reconstructed data +}; -#endif // ALI_MUON_DATA_INTERFACE_H +#endif // ALIMUONDATAINTERFACE_H