ROOT logo
#ifndef ALIMUONPREPROCESSOR_H
#define ALIMUONPREPROCESSOR_H

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

// $Id$

/// \ingroup shuttle
/// \class AliMUONPreprocessor
/// \brief Shuttle preprocessor for MUON subsystems (TRK and TRG)
/// 
//  Author Laurent Aphecetche

#ifndef ALI_PREPROCESSOR_H
#  include "AliPreprocessor.h"
#endif

class AliMUONVSubprocessor;
class TObjArray;

class AliMUONPreprocessor : public AliPreprocessor
{
public:
  virtual void Initialize(Int_t run, UInt_t startTime, UInt_t endTime);
  virtual UInt_t Process(TMap* dcsAliasMap);
  virtual void Print(Option_t* opt="") const;

  /// Return info whether the current subprocessor(s) needs DCS or not  
  virtual Bool_t ProcessDCS() { return fProcessDCS; }

  /// Publish AliPreprocessor::Log function
  void Log(const char* message) { AliPreprocessor::Log(message); }
  
  /// Publish AliPreprocessor::GetFileSources function
  TList* GetFileSources(Int_t system, const char* id) 
  { return AliPreprocessor::GetFileSources(system,id); }

  /// Publish AliPreprocessor::Store function
  Bool_t Store(const char* pathLevel2, const char* pathLevel3, TObject* object,
               AliCDBMetaData* metaData, 
               Int_t validityStart = 0, Bool_t validityInfinite = kFALSE)
  {
    return AliPreprocessor::Store(pathLevel2,pathLevel3,object,metaData,
                                  validityStart,validityInfinite);
  }
  
  /// Publish AliPreprocessor::GetRunParameter
  const char* GetRunParameter(const char* param)
  {
    return AliPreprocessor::GetRunParameter(param);
  }
  
  /// Publish AliPreprocessor::GetFile function
  const char* GetFile(Int_t system, const char* id, const char* source)
  {
    return AliPreprocessor::GetFile(system,id,source);
  }  

  /// Publish AliPreprocessor::GetFromOCDB function
    AliCDBEntry* GetFromOCDB(const char* pathLevel2, const char* pathLevel3) {
      return AliPreprocessor::GetFromOCDB(pathLevel2,pathLevel3);      
    }

  /// Publish AliPreprocessor::GetFromOCDB function
  AliCDBEntry* GetGeometryFromOCDB()
  {
    return AliPreprocessor::GetGeometryFromOCDB();
  }
  
  /// Whether we can be used (e.g. whether we were properly initialized)
  Bool_t IsValid() const { return fIsValid; }
  
  /// Mark as invalid
  void Invalidate() { fIsValid = kFALSE; }
  
  /// Whether we should do something or not
  Bool_t IsApplicable() { return fIsApplicable; }
  
  /// Return log book parameter
  TString GetLogBookParam(const char* parname)
  { return TString(AliPreprocessor::GetRunParameter(parname)); }
  
protected:
  AliMUONPreprocessor(const char* detName, AliShuttleInterface* shuttle);
  virtual ~AliMUONPreprocessor();
  
  void Add(AliMUONVSubprocessor* subProcessor, Bool_t processDCS=kFALSE); 
  void ClearSubprocessors();
  
  Bool_t fIsValid; //!< whether we were correctly initialized
  Bool_t fIsApplicable; //!< whether we have something to do
  
private:
  /// Not implemented
  AliMUONPreprocessor(const AliMUONPreprocessor& rhs);
  /// Not implemented
  AliMUONPreprocessor& operator=(const AliMUONPreprocessor& rhs);
  
  AliMUONVSubprocessor* Subprocessor(Int_t i) const;
  
private:

  TObjArray* fSubprocessors; //!< sub processors to execute
  Bool_t fProcessDCS; //!< whether the current subprocessor(s) needs DCS or not

  ClassDef(AliMUONPreprocessor,4) // MUON Shuttle preprocessor
};

#endif
 AliMUONPreprocessor.h:1
 AliMUONPreprocessor.h:2
 AliMUONPreprocessor.h:3
 AliMUONPreprocessor.h:4
 AliMUONPreprocessor.h:5
 AliMUONPreprocessor.h:6
 AliMUONPreprocessor.h:7
 AliMUONPreprocessor.h:8
 AliMUONPreprocessor.h:9
 AliMUONPreprocessor.h:10
 AliMUONPreprocessor.h:11
 AliMUONPreprocessor.h:12
 AliMUONPreprocessor.h:13
 AliMUONPreprocessor.h:14
 AliMUONPreprocessor.h:15
 AliMUONPreprocessor.h:16
 AliMUONPreprocessor.h:17
 AliMUONPreprocessor.h:18
 AliMUONPreprocessor.h:19
 AliMUONPreprocessor.h:20
 AliMUONPreprocessor.h:21
 AliMUONPreprocessor.h:22
 AliMUONPreprocessor.h:23
 AliMUONPreprocessor.h:24
 AliMUONPreprocessor.h:25
 AliMUONPreprocessor.h:26
 AliMUONPreprocessor.h:27
 AliMUONPreprocessor.h:28
 AliMUONPreprocessor.h:29
 AliMUONPreprocessor.h:30
 AliMUONPreprocessor.h:31
 AliMUONPreprocessor.h:32
 AliMUONPreprocessor.h:33
 AliMUONPreprocessor.h:34
 AliMUONPreprocessor.h:35
 AliMUONPreprocessor.h:36
 AliMUONPreprocessor.h:37
 AliMUONPreprocessor.h:38
 AliMUONPreprocessor.h:39
 AliMUONPreprocessor.h:40
 AliMUONPreprocessor.h:41
 AliMUONPreprocessor.h:42
 AliMUONPreprocessor.h:43
 AliMUONPreprocessor.h:44
 AliMUONPreprocessor.h:45
 AliMUONPreprocessor.h:46
 AliMUONPreprocessor.h:47
 AliMUONPreprocessor.h:48
 AliMUONPreprocessor.h:49
 AliMUONPreprocessor.h:50
 AliMUONPreprocessor.h:51
 AliMUONPreprocessor.h:52
 AliMUONPreprocessor.h:53
 AliMUONPreprocessor.h:54
 AliMUONPreprocessor.h:55
 AliMUONPreprocessor.h:56
 AliMUONPreprocessor.h:57
 AliMUONPreprocessor.h:58
 AliMUONPreprocessor.h:59
 AliMUONPreprocessor.h:60
 AliMUONPreprocessor.h:61
 AliMUONPreprocessor.h:62
 AliMUONPreprocessor.h:63
 AliMUONPreprocessor.h:64
 AliMUONPreprocessor.h:65
 AliMUONPreprocessor.h:66
 AliMUONPreprocessor.h:67
 AliMUONPreprocessor.h:68
 AliMUONPreprocessor.h:69
 AliMUONPreprocessor.h:70
 AliMUONPreprocessor.h:71
 AliMUONPreprocessor.h:72
 AliMUONPreprocessor.h:73
 AliMUONPreprocessor.h:74
 AliMUONPreprocessor.h:75
 AliMUONPreprocessor.h:76
 AliMUONPreprocessor.h:77
 AliMUONPreprocessor.h:78
 AliMUONPreprocessor.h:79
 AliMUONPreprocessor.h:80
 AliMUONPreprocessor.h:81
 AliMUONPreprocessor.h:82
 AliMUONPreprocessor.h:83
 AliMUONPreprocessor.h:84
 AliMUONPreprocessor.h:85
 AliMUONPreprocessor.h:86
 AliMUONPreprocessor.h:87
 AliMUONPreprocessor.h:88
 AliMUONPreprocessor.h:89
 AliMUONPreprocessor.h:90
 AliMUONPreprocessor.h:91
 AliMUONPreprocessor.h:92
 AliMUONPreprocessor.h:93
 AliMUONPreprocessor.h:94
 AliMUONPreprocessor.h:95
 AliMUONPreprocessor.h:96
 AliMUONPreprocessor.h:97
 AliMUONPreprocessor.h:98
 AliMUONPreprocessor.h:99
 AliMUONPreprocessor.h:100
 AliMUONPreprocessor.h:101
 AliMUONPreprocessor.h:102
 AliMUONPreprocessor.h:103
 AliMUONPreprocessor.h:104
 AliMUONPreprocessor.h:105
 AliMUONPreprocessor.h:106
 AliMUONPreprocessor.h:107
 AliMUONPreprocessor.h:108
 AliMUONPreprocessor.h:109
 AliMUONPreprocessor.h:110