LCOV - code coverage report
Current view: top level - MUON/MUONevaluation - AliMUONDataInterface.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 4 25.0 %
Date: 2016-06-14 17:26:59 Functions: 1 8 12.5 %

          Line data    Source code
       1             : #ifndef ALIMUONDATAINTERFACE_H
       2             : #define ALIMUONDATAINTERFACE_H
       3             : /*  Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : /* $Id$ */
       7             : // Includes revised 07/05/2004
       8             : //
       9             : /// \ingroup evaluation
      10             : /// \class AliMUONDataInterface
      11             : /// \brief An easy to use interface to MUON data
      12             : 
      13             : // Author: Artur Szostak (University of Cape Town)
      14             : //  email: artursz@iafrica.com
      15             : //
      16             : // Updated to MUON module w/o MUONData by Laurent Aphecetche, Subatech
      17             : //
      18             : 
      19             : #include <TObject.h>
      20             : #include <TString.h>
      21             : 
      22             : class TIterator;
      23             : class AliLoader;
      24             : class AliMUONVStore;
      25             : class AliMUONVDigitStore;
      26             : class AliMUONVClusterStore;
      27             : class AliMUONVTriggerStore;
      28             : class AliMUONVDigit;
      29             : class AliMUONVCluster;
      30             : class AliMUONLocalTrigger;
      31             : class AliMUONRegionalTrigger;
      32             : class AliMUONGlobalTrigger;
      33             : 
      34             : 
      35             : class AliMUONDataInterface : public TObject
      36             : {
      37             : public:
      38             :   
      39             :   AliMUONDataInterface(const char* filename="galice.root");
      40             :   virtual ~AliMUONDataInterface();
      41             :   
      42             :   /// Returns true if the data interface was able to open the root file correctly.
      43           0 :   Bool_t IsValid() const { return fIsValid; };
      44             : 
      45             :   void Open(const char* filename);
      46             : 
      47             :   Int_t NumberOfEvents() const;
      48             :   
      49             :   /// Returns the index number of the current event loaded.
      50             :   /// This is the event number as was used in the last calls to DigitStore(Int_t),
      51             :   /// ClusterStore(Int_t), TriggerStore(Int_t) or GetEvent(Int_t).
      52           0 :   Int_t   CurrentEvent() const { return fCurrentEvent; }
      53             : 
      54             :   AliMUONVDigitStore* DigitStore(Int_t event);  
      55             :   AliMUONVClusterStore* ClusterStore(Int_t event);
      56             :   AliMUONVTriggerStore* TriggerStore(Int_t event, const char* treeLetter="R");
      57             : 
      58             :   /// Dump the clusters for a given event, sorted if so required
      59           0 :   void DumpClusters(Int_t event, Bool_t sorted=kTRUE)  { return DumpRecPoints(event,sorted); }
      60             :   void DumpRecPoints(Int_t event, Bool_t sorted=kTRUE);
      61             :   void DumpDigits(Int_t event, Bool_t sorted=kTRUE);
      62             :   void DumpTrigger(Int_t event, const char* treeLetter="R");  
      63             :   
      64             :   Bool_t GetEvent(Int_t event = 0);
      65             :   
      66             :   // Note the following methods can be extremely slow. Remember they are only
      67             :   // here for end user convenience for his/her small tests and macros.
      68             :   // If you want speed then don't use these methods. If you really want peak
      69             :   // performance then you should be talking to the AliRunLoader and Store
      70             :   // objects directly.
      71             :   Int_t NumberOfDigits(Int_t detElemId);
      72             :   AliMUONVDigit* Digit(Int_t detElemId, Int_t index);
      73             :   Int_t NumberOfDigits(Int_t chamber, Int_t cathode);
      74             :   AliMUONVDigit* Digit(Int_t chamber, Int_t cathode, Int_t index);
      75             :   Int_t NumberOfRawClusters(Int_t chamber);
      76             :   AliMUONVCluster* RawCluster(Int_t chamber, Int_t index);
      77             :   Int_t NumberOfLocalTriggers();
      78             :   AliMUONLocalTrigger* LocalTrigger(Int_t index);
      79             :   Int_t NumberOfRegionalTriggers();
      80             :   AliMUONRegionalTrigger* RegionalTrigger(Int_t index);
      81             :   AliMUONGlobalTrigger* GlobalTrigger();
      82             :   
      83             : private:
      84             : 
      85             :   /// The various identifiers for the type of iterator constructed.
      86             :   enum IteratorType
      87             :   {
      88             :     kNoIterator,  ///< No iterator was constructed.
      89             :     kDigitIteratorByDetectorElement,  ///< A digit iterator for iterating over detector elements.
      90             :     kDigitIteratorByChamberAndCathode,  ///< A digit iterator for iterating over chambers and cathodes.
      91             :     kRawClusterIterator,  ///< A raw cluster iterator.
      92             :     kLocalTriggerIterator,  ///< An iterator for iterating over reconstructed local triggers.
      93             :     kRegionalTriggerIterator  ///< An iterator for iterating over reconstructed regional triggers.
      94             :   };
      95             :     
      96             :   void DumpSorted(const AliMUONVStore& store) const;
      97             : 
      98             :   Bool_t LoadEvent(Int_t event);
      99             : 
     100             :   void NtupleTrigger(const char* treeLetter);
     101             :   
     102             :   void ResetStores();
     103             :   
     104             :   TIterator* GetIterator(IteratorType type, Int_t x = 0, Int_t y = 0);
     105             :   void ResetIterator();
     106             :   
     107             :   Int_t CountObjects(TIterator* iter);
     108             :   TObject* FetchObject(TIterator* iter, Int_t index);
     109             :   
     110             :   /// Not implemented
     111             :   AliMUONDataInterface(const AliMUONDataInterface& rhs);
     112             :   /// Not implemented
     113             :   AliMUONDataInterface& operator=(const AliMUONDataInterface& rhs);
     114             :   
     115             :   
     116             :   AliLoader* fLoader; //!<! Tree accessor
     117             :   AliMUONVDigitStore* fDigitStore; //!<! current digit store (owner)
     118             :   AliMUONVTriggerStore* fTriggerStore; //!<! current trigger store (owner)
     119             :   AliMUONVClusterStore* fClusterStore; //!<! current cluster store (owner)
     120             :   Int_t fCurrentEvent; //!<! Current event we've read in
     121             :   TString fTreeLetter; //!<! The tree letter used in the last call to TriggerStore().
     122             :   Bool_t fIsValid; //!<! whether we were initialized properly or not
     123             :   
     124             :   IteratorType fCurrentIteratorType;  //!<! The type of iterator that is currently set.
     125             :   Int_t fCurrentIndex;  //!<! A current index number maintained for certain iteration operations.
     126             :   Int_t fDataX; //!<! Extra data parameter about the iterator, can be the chamber number or detector element.
     127             :   Int_t fDataY; //!<! Extra data parameter about the iterator, can be the cathode number.
     128             :   TIterator* fIterator; //!<! Iterator for various iteration operations.
     129             :   
     130             :   static Int_t fgInstanceCounter; //!<! To build unique folder name for each instance
     131             :   
     132          16 :   ClassDef(AliMUONDataInterface, 0)  // An easy to use interface to MUON reconstructed data
     133             : };
     134             :     
     135             : 
     136             : #endif // ALIMUONDATAINTERFACE_H

Generated by: LCOV version 1.11