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

// $Id$

/// \ingroup calib
/// \class AliMUONTriggerChamberEfficiency
/// \brief Calculate, apply and possibly draw trigger chamber efficiency.
///
//  Author: Diego Stocco; Subatech, Nantes

#ifndef ALIMUONTRIGGERCHAMBEREFFICIENCY_H
#define ALIMUONTRIGGERCHAMBEREFFICIENCY_H

#include "TObject.h"
class TH1;
class TList;
class TObjArray;
class TGraphAsymmErrors;
class AliMUONTriggerEfficiencyCells;

class AliMUONTriggerChamberEfficiency : public TObject
{
public:
  AliMUONTriggerChamberEfficiency(AliMUONTriggerEfficiencyCells* effMap);
  AliMUONTriggerChamberEfficiency(const Char_t* filename,
				  const Char_t* listname="triggerChamberEff");

  AliMUONTriggerChamberEfficiency(const AliMUONTriggerChamberEfficiency& other); // copy constructor
  AliMUONTriggerChamberEfficiency& operator=(const AliMUONTriggerChamberEfficiency& other); // assignment operator

  virtual ~AliMUONTriggerChamberEfficiency();

  Float_t GetCellEfficiency(Int_t detElemId, Int_t localBoard, Int_t hType) const;
  Float_t GetCellEfficiencyError(Int_t detElemId, Int_t localBoard, Int_t hType, Int_t errType) const;
  TObject* GetEffObject(Int_t histoType, Int_t countType, Int_t chamber);
    
  void IsTriggered(Int_t detElemId, Int_t localBoard, Bool_t &trigBend, Bool_t &trigNonBend) const;

  Bool_t LowStatisticsSettings(Bool_t useMeanValues=kTRUE);

  // Methods for display
  void DisplayEfficiency(Bool_t perSlat=kFALSE, Bool_t show2Dhisto = kTRUE);

  enum{
    kHboardEff,     ///< Efficiency per board index
    kHslatEff       ///< Efficiency per slat index
  };

private:
    Int_t FindChamberIndex(Int_t detElemId) const;
    void FillFromList(Bool_t useMeanValues = kFALSE);

    Int_t GetIndex(Int_t histoType, Int_t countType, 
		   Int_t chamber = -1) const;

    TGraphAsymmErrors* GetEfficiencyGraph(TH1* histoNum, TH1* histoDen);

    Bool_t fIsOwner; ///< Owner of efficiency map
    AliMUONTriggerEfficiencyCells* fEfficiencyMap; ///< Efficiency map

    TObjArray* fEfficiencyObjects; ///< Collect all efficiency 
    TList* fDisplayList; //!< List of objects for display

    ClassDef(AliMUONTriggerChamberEfficiency,0) // Trigger efficiency store
};
#endif
 AliMUONTriggerChamberEfficiency.h:1
 AliMUONTriggerChamberEfficiency.h:2
 AliMUONTriggerChamberEfficiency.h:3
 AliMUONTriggerChamberEfficiency.h:4
 AliMUONTriggerChamberEfficiency.h:5
 AliMUONTriggerChamberEfficiency.h:6
 AliMUONTriggerChamberEfficiency.h:7
 AliMUONTriggerChamberEfficiency.h:8
 AliMUONTriggerChamberEfficiency.h:9
 AliMUONTriggerChamberEfficiency.h:10
 AliMUONTriggerChamberEfficiency.h:11
 AliMUONTriggerChamberEfficiency.h:12
 AliMUONTriggerChamberEfficiency.h:13
 AliMUONTriggerChamberEfficiency.h:14
 AliMUONTriggerChamberEfficiency.h:15
 AliMUONTriggerChamberEfficiency.h:16
 AliMUONTriggerChamberEfficiency.h:17
 AliMUONTriggerChamberEfficiency.h:18
 AliMUONTriggerChamberEfficiency.h:19
 AliMUONTriggerChamberEfficiency.h:20
 AliMUONTriggerChamberEfficiency.h:21
 AliMUONTriggerChamberEfficiency.h:22
 AliMUONTriggerChamberEfficiency.h:23
 AliMUONTriggerChamberEfficiency.h:24
 AliMUONTriggerChamberEfficiency.h:25
 AliMUONTriggerChamberEfficiency.h:26
 AliMUONTriggerChamberEfficiency.h:27
 AliMUONTriggerChamberEfficiency.h:28
 AliMUONTriggerChamberEfficiency.h:29
 AliMUONTriggerChamberEfficiency.h:30
 AliMUONTriggerChamberEfficiency.h:31
 AliMUONTriggerChamberEfficiency.h:32
 AliMUONTriggerChamberEfficiency.h:33
 AliMUONTriggerChamberEfficiency.h:34
 AliMUONTriggerChamberEfficiency.h:35
 AliMUONTriggerChamberEfficiency.h:36
 AliMUONTriggerChamberEfficiency.h:37
 AliMUONTriggerChamberEfficiency.h:38
 AliMUONTriggerChamberEfficiency.h:39
 AliMUONTriggerChamberEfficiency.h:40
 AliMUONTriggerChamberEfficiency.h:41
 AliMUONTriggerChamberEfficiency.h:42
 AliMUONTriggerChamberEfficiency.h:43
 AliMUONTriggerChamberEfficiency.h:44
 AliMUONTriggerChamberEfficiency.h:45
 AliMUONTriggerChamberEfficiency.h:46
 AliMUONTriggerChamberEfficiency.h:47
 AliMUONTriggerChamberEfficiency.h:48
 AliMUONTriggerChamberEfficiency.h:49
 AliMUONTriggerChamberEfficiency.h:50
 AliMUONTriggerChamberEfficiency.h:51
 AliMUONTriggerChamberEfficiency.h:52
 AliMUONTriggerChamberEfficiency.h:53
 AliMUONTriggerChamberEfficiency.h:54
 AliMUONTriggerChamberEfficiency.h:55
 AliMUONTriggerChamberEfficiency.h:56
 AliMUONTriggerChamberEfficiency.h:57
 AliMUONTriggerChamberEfficiency.h:58
 AliMUONTriggerChamberEfficiency.h:59
 AliMUONTriggerChamberEfficiency.h:60
 AliMUONTriggerChamberEfficiency.h:61
 AliMUONTriggerChamberEfficiency.h:62
 AliMUONTriggerChamberEfficiency.h:63
 AliMUONTriggerChamberEfficiency.h:64
 AliMUONTriggerChamberEfficiency.h:65
 AliMUONTriggerChamberEfficiency.h:66
 AliMUONTriggerChamberEfficiency.h:67