ROOT logo
#ifndef ALIMUON2DSTOREVALIDATOR_H
#define ALIMUON2DSTOREVALIDATOR_H

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

// $Id$

/// \ingroup calib
/// \class AliMUON2DStoreValidator
/// \brief Determine which channels, manus, DEs, stations are missing
/// from a 2DStore.
/// 
//  Author Laurent Aphecetche

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

class AliMUONVStore;
class TList;
class TObjArray;
class AliMUONCheckItem;
class AliMUONVCalibParam;

class AliMUON2DStoreValidator : public TObject
{
public:
  AliMUON2DStoreValidator();
  virtual ~AliMUON2DStoreValidator();
  
  TObjArray* Validate(const AliMUONVStore& store, Float_t invalidFloatValue, AliMUONVStore* config=0x0);

  TObjArray* Validate(const AliMUONVStore& store, AliMUONVStore* config=0x0);
  
  TObjArray* Validate(const AliMUONVStore& store, 
                      Bool_t (*check)(const AliMUONVCalibParam&,Int_t),
                      AliMUONVStore* config=0x0);

  /// Return statuses
  AliMUONVStore* GetStatus() const { return fStatus; }
  
  /// Reports what is missing, trying to be as concise as possible.
  void Report(TList& lines) const;

  static void Report(TList& lines, const TObjArray& chambers);

private:
  /// Not implemented  
  AliMUON2DStoreValidator(const AliMUON2DStoreValidator&);
  /// Not implemented  
  AliMUON2DStoreValidator& operator=(const AliMUON2DStoreValidator&);

  void AddMissingChannel(Int_t detElemId, Int_t manuId, Int_t manuChannel);

  void AddMissingManu(Int_t detElemId, Int_t manuId);

  AliMUONCheckItem* GetChamber(Int_t chamberID);
  AliMUONCheckItem* GetDE(Int_t detElemId);
  AliMUONCheckItem* GetManu(Int_t detElemId, Int_t manuId);
  
  static void ReportChamber(TList& list, const AliMUONCheckItem& chamber);
  static void ReportDE(TList& list, const AliMUONCheckItem& de);
  static void ReportManu(TList& list, const AliMUONCheckItem& manu);
  
private:
  TObjArray* fChambers; //!< Array of AliMUONCheckItem.
  AliMUONVStore* fStatus; //!< Statuses
  
  ClassDef(AliMUON2DStoreValidator,3) // Validator of 2DStore
};

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