LCOV - code coverage report
Current view: top level - MUON/MUONsim - AliMUONMCDataInterface.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 3 33.3 %
Date: 2016-06-14 17:26:59 Functions: 1 7 14.3 %

          Line data    Source code
       1             : #ifndef ALIMUONMCDATAINTERFACE_H
       2             : #define ALIMUONMCDATAINTERFACE_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             : 
       9             : /// \ingroup sim
      10             : /// \class AliMUONMCDataInterface
      11             : /// \brief Easy to use data access to MC information
      12             : /// 
      13             : // Author Laurent Aphecetche
      14             : //
      15             : // Moved parts of old AliMUONDataInterface interface to AliMUONMCDataInterface
      16             : //  Artur Szostak <artursz@iafrica.com> (University of Cape Town)
      17             : 
      18             : #ifndef ROOT_TObject
      19             : #  include "TObject.h"
      20             : #endif
      21             : 
      22             : class AliMUONVStore;
      23             : class AliMUONVHitStore;
      24             : class AliMUONVDigitStore;
      25             : class AliMUONVTriggerStore;
      26             : class AliMUONHit;
      27             : class AliMUONVDigit;
      28             : class AliMUONLocalTrigger;
      29             : class AliMUONRegionalTrigger;
      30             : class AliMUONGlobalTrigger;
      31             : 
      32             : class AliLoader;
      33             : class AliStack;
      34             : 
      35             : class TIterator;
      36             : class TClonesArray;
      37             : class TParticle;
      38             : 
      39             : class AliMUONMCDataInterface : public TObject
      40             : {
      41             : public:
      42             :   AliMUONMCDataInterface(const char* filename="galice.root");
      43             :   virtual ~AliMUONMCDataInterface();
      44             : 
      45             :   void Open(const char* filename);
      46             :   
      47             :   /// Returns true if the data interface was able to open the root file correctly.
      48           0 :   Bool_t IsValid() const { return fIsValid; };
      49             : 
      50             :   Int_t NumberOfEvents() const;
      51             : 
      52             :   /// Returns the index number of the current event loaded.
      53             :   /// This is the event number as was used in the last calls to any of the methods
      54             :   /// in this interface that have 'Int_t event' in the parameter list.
      55             :   /// GetEvent(Int_t event) for example.
      56           0 :   Int_t   CurrentEvent() const { return fCurrentEvent; }
      57             : 
      58             :   Int_t NumberOfTracks(Int_t event);
      59             :   Int_t NumberOfTrackRefs(Int_t event);
      60             :   
      61             :   AliMUONVHitStore* HitStore(Int_t event, Int_t track);
      62             :   AliMUONVDigitStore* SDigitStore(Int_t event);
      63             :   AliMUONVDigitStore* DigitStore(Int_t event);
      64             :   AliStack* Stack(Int_t event);
      65             :   TClonesArray* TrackRefs(Int_t event, Int_t track);
      66             :   AliMUONVTriggerStore* TriggerStore(Int_t event);
      67             :   
      68             :   void DumpDigits(Int_t event, Bool_t sorted=kTRUE);
      69             :   void DumpSDigits(Int_t event, Bool_t sorted=kTRUE);
      70             :   void DumpHits(Int_t event);
      71             :   void DumpKine(Int_t event);
      72             :   void DumpTrackRefs(Int_t event);
      73             :   void DumpTrigger(Int_t event);
      74             :   
      75             :   Bool_t GetEvent(Int_t event = 0);
      76             :   
      77             :   // Note the following methods can be extremely slow. Remember they are only
      78             :   // here for end user convenience for his/her small tests and macros.
      79             :   // If you want speed then don't use these methods. If you really want peak
      80             :   // performance then you should be talking to the AliRunLoader and Store
      81             :   // objects directly.
      82             :   Int_t NumberOfParticles();
      83             :   TParticle* Particle(Int_t index);
      84             :   Int_t NumberOfTracks();
      85             :   Int_t NumberOfHits(Int_t track);
      86             :   AliMUONHit* Hit(Int_t track, Int_t index);
      87             :   Int_t NumberOfSDigits(Int_t detElemId);
      88             :   AliMUONVDigit* SDigit(Int_t detElemId, Int_t index);
      89             :   Int_t NumberOfSDigits(Int_t chamber, Int_t cathode);
      90             :   AliMUONVDigit* SDigit(Int_t chamber, Int_t cathode, Int_t index);
      91             :   Int_t NumberOfDigits(Int_t detElemId);
      92             :   AliMUONVDigit* Digit(Int_t detElemId, Int_t index);
      93             :   Int_t NumberOfDigits(Int_t chamber, Int_t cathode);
      94             :   AliMUONVDigit* Digit(Int_t chamber, Int_t cathode, Int_t index);
      95             :   Int_t NumberOfLocalTriggers();
      96             :   AliMUONLocalTrigger* LocalTrigger(Int_t index);
      97             :   Int_t NumberOfRegionalTriggers();
      98             :   AliMUONRegionalTrigger* RegionalTrigger(Int_t index);
      99             :   AliMUONGlobalTrigger* GlobalTrigger();
     100             :   Int_t NumberOfTrackRefs();
     101             :   TClonesArray* TrackRefs(Int_t track);
     102             :   
     103             : private:
     104             : 
     105             :   /// The various identifiers for the type of iterator constructed.
     106             :   enum IteratorType
     107             :   {
     108             :     kNoIterator,  ///< No iterator was constructed.
     109             :     kHitIterator,  ///< An iterator to iterate over the hits.
     110             :     kSDigitIteratorByDetectorElement,  ///< A summable digit iterator to iterate over the detector elements.
     111             :     kSDigitIteratorByChamberAndCathode,  ///< A summable digit iterator to iterate over chambers and cathodes.
     112             :     kDigitIteratorByDetectorElement,  ///< An iterator for simulated digits to iterate over the detector elements.
     113             :     kDigitIteratorByChamberAndCathode,  ///< An iterator for simulated digits to iterate over chambers and cathodes.
     114             :     kLocalTriggerIterator,  ///< An iterator for iterating over the simulated local triggers.
     115             :     kRegionalTriggerIterator  ///< An iterator for iterating over the simulated regional triggers.
     116             :   };
     117             :   
     118             :   /// Not implemented
     119             :   AliMUONMCDataInterface(const AliMUONMCDataInterface&);
     120             :   /// Not implemented
     121             :   AliMUONMCDataInterface& operator=(const AliMUONMCDataInterface&);
     122             : 
     123             :   void DumpSorted(const AliMUONVStore& store) const;
     124             :   Bool_t LoadEvent(Int_t event);
     125             :   
     126             :   void ResetStores();
     127             :   
     128             :   TIterator* GetIterator(IteratorType type, Int_t x = 0, Int_t y = 0);
     129             :   void ResetIterator();
     130             :   
     131             :   Int_t CountObjects(TIterator* iter);
     132             :   TObject* FetchObject(TIterator* iter, Int_t index);
     133             :   
     134             :   
     135             :   AliLoader* fLoader; //!<! Tree accessor
     136             :   AliMUONVHitStore* fHitStore; //!<! current hit store (owner)
     137             :   AliMUONVDigitStore* fSDigitStore; //!<! current sdigit store (owner)
     138             :   AliMUONVDigitStore* fDigitStore; //!<! current digit store (owner)
     139             :   AliMUONVTriggerStore* fTriggerStore; //!<! current trigger store (owner)
     140             :   TClonesArray* fTrackRefs; //!<! current trackrefs (owner)
     141             :   Int_t fCurrentEvent; //!<! Current event we've read in
     142             :   Bool_t fIsValid; //!<! whether we were initialized properly or not
     143             :   
     144             :   IteratorType fCurrentIteratorType;  //!<! The type of iterator that is currently set.
     145             :   Int_t fCurrentIndex;  //!<! A current index number maintained for certain iteration operations.
     146             :   Int_t fDataX; //!<! Extra data parameter about the iterator, can be the chamber number, detector element or track number.
     147             :   Int_t fDataY; //!<! Extra data parameter about the iterator, can be the cathode number.
     148             :   TIterator* fIterator; //!<! Iterator for various iteration operations.
     149             :   
     150             :   static Int_t fgInstanceCounter; //!<! To build unique folder name for each instance
     151             : 
     152          16 :   ClassDef(AliMUONMCDataInterface,0) // Easy to use MC data accessor
     153             : };
     154             : 
     155             : #endif

Generated by: LCOV version 1.11