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

// $Id$

/// \ingroup calib
/// \class AliMUONTriggerDisplay
/// \brief Converts histograms as a function of strip/board/slat number in human readable histograms
///
//  Author Diego Stocco

// --- ROOT system ---

#include "TH2.h"

class TArrayD;
class TString;
class TGraph;

class AliMUONTriggerDisplay: public TObject {

public:
  AliMUONTriggerDisplay();
  virtual ~AliMUONTriggerDisplay();
  
  /// Display element inidices (strip,board,slat)
  enum EDisplayType {
    kDisplayStrips,    ///< Draw strips
    kDisplayBoards,    ///< Draw boards
    kDisplaySlats      ///< Draw slats
  };

  /// Display options inidices
  enum EDisplayOption {
    kDefaultDisplay,   ///< Default display
    kNumbered,         ///< Histogram filled with board numbers
    kShowZeroes,       ///< Displays strip/board/slat content even if it is 0
    kNormalizeToArea   ///< Draw input histo divided by element area
  };

  TH2* GetEmptyDisplayHisto(TString displayHistoName, EDisplayType displayType,
			    Int_t cathode, Int_t chamber=11,
			    TString displayHistoTitle="");

  TH2* GetBoardNumberHisto(TString displayHistoName,
			   Int_t chamber=11,TString displayHistoTitle="");
  
  TH2* GetDisplayHistogram(TH1* inputHisto, TString displayHistoName,
			   EDisplayType displayType, Int_t cathode,
			   Int_t chamber=11, TString displayHistoTitle="",
			   EDisplayOption displayOpt=kDefaultDisplay);

  TH2* GetDisplayHistogram(TGraph* inputGraph, TString displayHistoName,
			   EDisplayType displayType, Int_t cathode,
			   Int_t chamber=11, TString displayHistoTitle="",
			   EDisplayOption displayOpt=kDefaultDisplay);
  
  Bool_t FillDisplayHistogram(TH1* inputHisto, TH2* displayHisto,
			      EDisplayType displayType, Int_t cathode,
			      Int_t chamber=11,EDisplayOption displayOpt=kDefaultDisplay);
  
  Bool_t FillDisplayHistogram(TGraph* inputGraph, TH2* displayHisto,
			      EDisplayType displayType, Int_t cathode,
			      Int_t chamber=11,EDisplayOption displayOpt=kDefaultDisplay);
  
private:
  Bool_t AddSortedPoint(Float_t currVal, TArrayD& position, const Float_t kResetValue);
  /// Return index
  Int_t GetIndex(Int_t chamber, Int_t cathode) const { return 2*chamber + cathode;}

  Bool_t InitOrDisplayTriggerInfo(TObject* inputHisto, TH2* displayHisto,
				  EDisplayType displayType,
				  Int_t cathode, Int_t chamber,
				  TString displayHistoName, TString displayHistoTitle,
				  EDisplayOption displayOpt=kDefaultDisplay);

  void FillBins(TObject* inputHisto, TH2* displayHisto,
		Int_t iElement1, Int_t iElement2,
		Float_t x1, Float_t x2, Float_t y1, Float_t y2,
		const Float_t kShiftX, const Float_t kShiftY,
		EDisplayOption displayOpt);

  ClassDef(AliMUONTriggerDisplay,0)  // Class for converting trigger histograms

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