ROOT logo
#ifndef ALIMUONVTRACKERDATAMAKER_H
#define ALIMUONVTRACKERDATAMAKER_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup rec
/// \class AliMUONVTrackerDataMaker
/// \brief Producer of some AliMUONVTrackerData
/// 
//  Author Laurent Aphecetche, Subatech

#ifndef ROOT_TObject
#  include "TObject.h"
#endif

class AliMUONVTrackerData;
class TCollection;

class AliMUONVTrackerDataMaker : public TObject
{
public:
  AliMUONVTrackerDataMaker();
  virtual ~AliMUONVTrackerDataMaker();
  
  /// Whether we are valid or not
  virtual Bool_t IsValid() const = 0;
  
  /// Our data
  virtual AliMUONVTrackerData* Data() const = 0;

  /// Whether or not we're the owner of our AliMUONVTrackerData
  virtual void SetOwnerOfData(Bool_t /*flag*/) { }
  
  /// Whether we can be run
  virtual Bool_t IsRunnable() const = 0;

  /// Whether we are running (must be false if IsRunnable is false)
  virtual Bool_t IsRunning() const = 0;
  
  /// Whether we're only handling event-by-event data (i.e. no accumulation)
  virtual Bool_t IsEventByEvent() const { return kFALSE; }
  
  /// Set event-by-event mode
  virtual void SetEventByEvent(Bool_t /*flag*/) { }
  
  /// Set the running state (no effect if not runnable)
  virtual void SetRunning(Bool_t flag) = 0;
  
	/// Process current event
	virtual Bool_t ProcessEvent() = 0;
	
  /// Advance to next event and process it (no effect if not runnable)
  virtual Bool_t NextEvent() { return ProcessEvent(); }
  
  /// Rewind events (no effect if not runnable)
  virtual void Rewind() = 0;
  
  /// Set our source URI
  virtual void SetSource(const char* source) = 0;
  
  /// Get our source URI
  virtual TString Source() const = 0;

  /// Get the number of events we have seen (but not necessarily used...)
  virtual Int_t NumberOfEvents() const = 0;
  
  /// Merge
  virtual Long64_t Merge(TCollection* list) = 0;
  
  /// Set event range (if not event by event)
  virtual void SetEventRange(Int_t /* firstevent */, Int_t /* lastevent */) {}
  
  ClassDef(AliMUONVTrackerDataMaker,1) // Producer of AliMUONVTrackerData
};

#endif
 AliMUONVTrackerDataMaker.h:1
 AliMUONVTrackerDataMaker.h:2
 AliMUONVTrackerDataMaker.h:3
 AliMUONVTrackerDataMaker.h:4
 AliMUONVTrackerDataMaker.h:5
 AliMUONVTrackerDataMaker.h:6
 AliMUONVTrackerDataMaker.h:7
 AliMUONVTrackerDataMaker.h:8
 AliMUONVTrackerDataMaker.h:9
 AliMUONVTrackerDataMaker.h:10
 AliMUONVTrackerDataMaker.h:11
 AliMUONVTrackerDataMaker.h:12
 AliMUONVTrackerDataMaker.h:13
 AliMUONVTrackerDataMaker.h:14
 AliMUONVTrackerDataMaker.h:15
 AliMUONVTrackerDataMaker.h:16
 AliMUONVTrackerDataMaker.h:17
 AliMUONVTrackerDataMaker.h:18
 AliMUONVTrackerDataMaker.h:19
 AliMUONVTrackerDataMaker.h:20
 AliMUONVTrackerDataMaker.h:21
 AliMUONVTrackerDataMaker.h:22
 AliMUONVTrackerDataMaker.h:23
 AliMUONVTrackerDataMaker.h:24
 AliMUONVTrackerDataMaker.h:25
 AliMUONVTrackerDataMaker.h:26
 AliMUONVTrackerDataMaker.h:27
 AliMUONVTrackerDataMaker.h:28
 AliMUONVTrackerDataMaker.h:29
 AliMUONVTrackerDataMaker.h:30
 AliMUONVTrackerDataMaker.h:31
 AliMUONVTrackerDataMaker.h:32
 AliMUONVTrackerDataMaker.h:33
 AliMUONVTrackerDataMaker.h:34
 AliMUONVTrackerDataMaker.h:35
 AliMUONVTrackerDataMaker.h:36
 AliMUONVTrackerDataMaker.h:37
 AliMUONVTrackerDataMaker.h:38
 AliMUONVTrackerDataMaker.h:39
 AliMUONVTrackerDataMaker.h:40
 AliMUONVTrackerDataMaker.h:41
 AliMUONVTrackerDataMaker.h:42
 AliMUONVTrackerDataMaker.h:43
 AliMUONVTrackerDataMaker.h:44
 AliMUONVTrackerDataMaker.h:45
 AliMUONVTrackerDataMaker.h:46
 AliMUONVTrackerDataMaker.h:47
 AliMUONVTrackerDataMaker.h:48
 AliMUONVTrackerDataMaker.h:49
 AliMUONVTrackerDataMaker.h:50
 AliMUONVTrackerDataMaker.h:51
 AliMUONVTrackerDataMaker.h:52
 AliMUONVTrackerDataMaker.h:53
 AliMUONVTrackerDataMaker.h:54
 AliMUONVTrackerDataMaker.h:55
 AliMUONVTrackerDataMaker.h:56
 AliMUONVTrackerDataMaker.h:57
 AliMUONVTrackerDataMaker.h:58
 AliMUONVTrackerDataMaker.h:59
 AliMUONVTrackerDataMaker.h:60
 AliMUONVTrackerDataMaker.h:61
 AliMUONVTrackerDataMaker.h:62
 AliMUONVTrackerDataMaker.h:63
 AliMUONVTrackerDataMaker.h:64
 AliMUONVTrackerDataMaker.h:65
 AliMUONVTrackerDataMaker.h:66
 AliMUONVTrackerDataMaker.h:67
 AliMUONVTrackerDataMaker.h:68
 AliMUONVTrackerDataMaker.h:69
 AliMUONVTrackerDataMaker.h:70
 AliMUONVTrackerDataMaker.h:71
 AliMUONVTrackerDataMaker.h:72
 AliMUONVTrackerDataMaker.h:73
 AliMUONVTrackerDataMaker.h:74
 AliMUONVTrackerDataMaker.h:75
 AliMUONVTrackerDataMaker.h:76
 AliMUONVTrackerDataMaker.h:77
 AliMUONVTrackerDataMaker.h:78
 AliMUONVTrackerDataMaker.h:79