ROOT logo
#ifndef ALIMUONVQADATAMAKERREC_H
#define ALIMUONVQADATAMAKERREC_H

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

// $Id$

/// \ingroup rec
/// \class AliMUONVQADataMakerRec
/// \brief Interface for a MUON QADataMakerRec
/// 
//  Author Laurent Aphecetche

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

#ifndef ALIRECOPARAM_H
#  include "AliRecoParam.h"
#endif

#ifndef ALIQAv1_H
#  include "AliQAv1.h"
#endif

#include "AliQADataMakerRec.h"

class AliESDEvent;
class AliMUONRecoParam;
class AliRawReader;
class TH1;
class TObjArray;
class TTree;

class AliMUONVQADataMakerRec : public TObject
{
public:
  AliMUONVQADataMakerRec(AliQADataMakerRec* master);
  virtual ~AliMUONVQADataMakerRec();
  
  /// Initialization for handling Digits
  virtual void InitDigits() = 0; 
  /// Initialization for handling ESD
  virtual void InitESDs() = 0; 
  /// Initialization for handling Raws
  virtual void InitRaws() = 0; 
  /// Initialization for handling RecPoints
  virtual void InitRecPoints() = 0; 
  
  /// Produces QA data for Raws
  virtual void MakeRaws(AliRawReader* rawReader) = 0; 
  /// Produces QA data for Digits
  virtual void MakeDigits(TTree* dig) = 0; 
  /// Produces QA data for RecPoints
  virtual void MakeRecPoints(TTree* recpo) = 0;
  /// Produces QA data for ESD
  virtual void MakeESDs(AliESDEvent* esd) = 0;
  
  /// Wrap up things at each cycle for Raws
  virtual void EndOfDetectorCycleRaws(Int_t specie, TObjArray** list) = 0;
  /// Wrap up things at each cycle for RecPoints
  virtual void EndOfDetectorCycleRecPoints(Int_t specie, TObjArray** list) = 0;
  /// Wrap up things at each cycle for ESD
  virtual void EndOfDetectorCycleESDs(Int_t specie, TObjArray** list) = 0;
  /// Wrap up things at each cycle for Digits
  virtual void EndOfDetectorCycleDigits(Int_t specie, TObjArray** list) = 0;

  /// Reset anything that must be reset for Raws
  virtual void ResetDetectorRaws(TObjArray* list) { ResetDetector(list); }
  /// Reset anything that must be reset for RecPoints
  virtual void ResetDetectorRecPoints(TObjArray* list) { ResetDetector(list); }
  /// Reset anything that must be reset for ESD
  virtual void ResetDetectorESDs(TObjArray* list) { ResetDetector(list); }
  /// Reset anything that must be reset for Digits
  virtual void ResetDetectorDigits(TObjArray* list) { ResetDetector(list); }
  ///
  void   ForbidCloning(TH1* h, Bool_t v=kTRUE)  { if (fMaster) fMaster->ForbidCloning(h,v); }
  ///  
protected:

  void ResetDetector(const TObjArray* list);
  
  Int_t RunNumber() const;
  
  AliRecoParam::EventSpecie_t CurrentEventSpecie() const;
  
  const AliMUONRecoParam* GetRecoParam() const;
  
  TObject* GetDigitsData(Int_t index)    const  {return fMaster ? fMaster->GetDigitsData(index)    : 0x0;}
  TObject* GetESDsData(Int_t index)      const  {return fMaster ? fMaster->GetESDsData(index)      : 0x0;}
  TObject* GetRecPointsData(Int_t index) const  {return fMaster ? fMaster->GetRecPointsData(index) : 0x0;}
  TObject* GetRawsData(Int_t index)      const  {return fMaster ? fMaster->GetRawsData(index)      : 0x0;}
  
  TH1*     GetDigitsData(Int_t index, int trCl)    const  {return fMaster ? fMaster->GetDigitsData(index, trCl)    : 0x0;}
  TH1*     GetESDsData(Int_t index, int trCl)      const  {return fMaster ? fMaster->GetESDsData(index, trCl)      : 0x0;}
  TH1*     GetRecPointsData(Int_t index, int trCl) const  {return fMaster ? fMaster->GetRecPointsData(index, trCl) : 0x0;}
  TH1*     GetRawsData(Int_t index, int trCl)      const  {return fMaster ? fMaster->GetRawsData(index,trCl)       : 0x0;}
  
  TH1*     GetMatchingRawsHisto(Int_t index, Int_t trigId) const {return fMaster ? fMaster->GetMatchingRawsHisto(index, trigId) : 0x0;}
  
  Int_t Add2DigitsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE);  
  Int_t Add2ESDsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE);                      
  Int_t Add2RecPointsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE);                 
  Int_t Add2RawsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE, const Bool_t saveForCorr = kFALSE);  
  //
  Int_t  FillDigitsData(Int_t index, double x)                 {return fMaster ? fMaster->FillDigitsData(index,x) : 0;}
  Int_t  FillRawsData(Int_t index, double x)                   {return fMaster ? fMaster->FillRawsData(index,x) : 0;}
  Int_t  FillRecPointsData(Int_t index, double x)              {return fMaster ? fMaster->FillRecPointsData(index,x) : 0;}
  Int_t  FillESDsData(Int_t index, double x)                   {return fMaster ? fMaster->FillESDsData(index,x) : 0;}
  //
  Int_t  FillDigitsData(Int_t index, double x, double y)       {return fMaster ? fMaster->FillDigitsData(index,x,y) : 0;}
  Int_t  FillRawsData(Int_t index, double x, double y)         {return fMaster ? fMaster->FillRawsData(index,x,y) : 0;}
  Int_t  FillRecPointsData(Int_t index, double x, double y)    {return fMaster ? fMaster->FillRecPointsData(index,x,y) : 0;}
  Int_t  FillESDsData(Int_t index, double x, double y)         {return fMaster ? fMaster->FillESDsData(index,x,y) : 0;}
  //
  Int_t  FillDigitsData(Int_t index, double x, double y, double w)     {return fMaster ? fMaster->FillDigitsData(index,x,y,w) : 0;}
  Int_t  FillRawsData(Int_t index, double x, double y, double w)       {return fMaster ? fMaster->FillRawsData(index,x,y,w) : 0;}
  Int_t  FillRecPointsData(Int_t index, double x, double y, double w)  {return fMaster ? fMaster->FillRecPointsData(index,x,y,w) : 0;}
  Int_t  FillESDsData(Int_t index, double x, double y, double w)       {return fMaster ? fMaster->FillESDsData(index,x,y,w) : 0;}
  //
  void   ClonePerTrigClass(AliQAv1::TASKINDEX_t task);  

  AliQADataMakerRec* fMaster; ///< master to get access to its methods

private:
  /// Not implemented
  AliMUONVQADataMakerRec(const AliMUONVQADataMakerRec& rhs);
  /// Not implemented
  AliMUONVQADataMakerRec& operator=(const AliMUONVQADataMakerRec& rhs);
  
  ClassDef(AliMUONVQADataMakerRec,1) // Interface for a MUON QADataMakerRec
};

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