]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONTrackerRawDataMaker.h
No need to liknk with lhapdf, pythia6 and microcern libraries
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackerRawDataMaker.h
1 #ifndef ALIMUONTRACKERRAWDATAMAKER_H
2 #define ALIMUONTRACKERRAWDATAMAKER_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 rec
10 /// \class AliMUONTrackerRawDataMaker
11 /// \brief Creator of raw AliMUONVTrackerData from AliRawReader
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ALIMUONVTRACKERDATAMAKER_H
16 #  include "AliMUONVTrackerDataMaker.h"
17 #endif
18 #ifndef ROOT_TString
19 #  include "TString.h"
20 #endif
21
22 class AliRawReader;
23 class AliMUONVStore;
24 class AliMUONVTrackerData;
25
26 class AliMUONTrackerRawDataMaker : public AliMUONVTrackerDataMaker
27 {
28 public:
29   AliMUONTrackerRawDataMaker(TRootIOCtor* ioCtor);
30
31   AliMUONTrackerRawDataMaker(Int_t runNumber,
32                              AliRawReader* reader,
33                              Bool_t histogram=kFALSE,
34                              Bool_t useHPdecoder=kFALSE);
35
36   AliMUONTrackerRawDataMaker(AliRawReader* reader = 0x0,
37                              Bool_t histogram=kFALSE,
38                              Bool_t useHPdecoder=kFALSE);
39   
40   virtual ~AliMUONTrackerRawDataMaker();
41   
42   Bool_t Add(const AliMUONTrackerRawDataMaker& other);
43   
44   /// Whether we have a valid raw reader
45   Bool_t IsValid() const { return fRawReader != 0x0; }
46   
47   /// Our data
48   AliMUONVTrackerData* Data() const { return fAccumulatedData; }
49   
50   /// Whether we're only handling event-by-event data (i.e. no accumulation)
51   virtual Bool_t IsEventByEvent() const { return fIsEventByEvent; }
52   
53   /// Set event-by-event mode
54   virtual void SetEventByEvent(Bool_t flag) { fIsEventByEvent = flag; }
55   
56   /// We can be run if we have a reader
57   virtual Bool_t IsRunnable() const { return IsValid(); }
58   
59   /// Whether we are running or not
60   virtual Bool_t IsRunning() const { return fIsRunning; }
61   
62   /// Set the running status
63   virtual void SetRunning(Bool_t flag) { fIsRunning = flag; }
64   
65         Bool_t ProcessEvent();
66         
67   Bool_t NextEvent();
68   
69   void Print(Option_t* opt="") const;
70   
71   void Rewind();
72   
73   /// Get our source URI
74   virtual TString Source() const { return fSource.Data(); }
75   
76   /// Set our source URI
77   void SetSource(const char* source) { fSource = source; }
78   
79   /// Number of events seen
80   Int_t NumberOfEvents() const { return fNumberOfEvents; }
81
82   Long64_t Merge(TCollection* li);
83   
84         void SetRawReader(AliRawReader* rawReader);
85         
86 private:
87   /// Not implemented
88   AliMUONTrackerRawDataMaker(const AliMUONTrackerRawDataMaker& rhs);
89   /// Not implemented
90   AliMUONTrackerRawDataMaker& operator=(const AliMUONTrackerRawDataMaker& rhs);
91   
92   void Ctor(Bool_t histogram);
93   
94 private:
95   AliRawReader* fRawReader; //!< reader of the data (owner or not)
96         Bool_t fIsOwnerOfRawReader; //!< whether we must delete rawReader or not
97   AliMUONVTrackerData* fAccumulatedData; ///< data (owner)
98   AliMUONVStore* fOneEventData; ///< data for one event (owner)
99   TString fSource; ///< where the data comes from
100   Bool_t fIsRunning; ///< whether we are running or are paused
101   Int_t fNumberOfEvents; ///< number of events seen
102   Int_t fRunNumber; ///< run number of the data
103   Bool_t fIsEventByEvent; ///< we only keep one event's data (no accumulation)
104   Bool_t fUseHPDecoder; ///< whether to use high performance decoder or not
105   static Int_t fgkCounter; ///< to count the number of instances
106   
107   ClassDef(AliMUONTrackerRawDataMaker,4) // Producer of AliMUONVTrackerData from raw data
108 };
109
110 #endif