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

////////////////////////////////////////////////////////////////////
//                                                                // 
//  Produces the data needed to calculate the quality assurance.  //
//    All data must be mergeable objects.                         //
//    S. Arcelli                                                  //
//                                                                //
//    /* last modified by F. Bellini on 25/02/2010 */             // 
////////////////////////////////////////////////////////////////////

#include <TLine.h>
#include "AliQADataMakerRec.h"
#include "AliQAv1.h"
#include "AliTOFcalib.h"
#include "AliTOFTrigger.h"
#include "AliTOFRawStream.h"
class AliCDBManager;
class AliCDBEntry;
class AliCDBStorage;
class AliTOFChannelOnlineStatusArray;
class AliTOFDecoderSummaryData;

class AliTOFQADataMakerRec: public AliQADataMakerRec {

public:
  AliTOFQADataMakerRec() ;          // ctor
  AliTOFQADataMakerRec(const AliTOFQADataMakerRec& qadm) ;   
  AliTOFQADataMakerRec& operator = (const AliTOFQADataMakerRec& qadm) ;
  AliTOFChannelOnlineStatusArray *GetCalibData() ;
  virtual ~AliTOFQADataMakerRec(); // dtor
  
  void   GetGeo2LTMIndex(const Int_t * const detind, Int_t *indexLTM);
  void   GetGeo2CTTMIndex(Int_t *detind, Int_t *indexCTTM);
  void   GetCTTMIndex(Int_t *equipid, Int_t *indexCTTM);
  void ReadHistogramRangeFromFile(const Char_t * filename);
  void SetDefaultHistogramRange();
  void SetDefaultMultiHistogramRange();
  void SetDefaultTimeHistogramRange();
  void SetDefaultCutNmaxFiredMacropad();
  Float_t GetRangeMinTime(){return fgRangeMinTime;}//range min in time plot
  Float_t GetRangeMaxTime(){return fgRangeMaxTime;}; //range max in time plot

protected: 
  AliTOFChannelOnlineStatusArray * fCalibData;        //! calibration data
  
private:
  virtual void   InitESDs() ; 
  virtual void   InitRecPoints() ; 
  virtual void   InitRaws() ; 
  virtual void   MakeESDs(AliESDEvent * const esd) ;
  virtual void   MakeRecPoints(TTree * recTree) ; 
  virtual void   MakeRaws(AliRawReader* rawReader) ; 
  virtual void   StartOfDetectorCycle() ; 
  virtual void   EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list) ;
  virtual void   GetMapIndeces(const Int_t * const in, Int_t *out) ; 
  	  Int_t  GetStripIndex(const Int_t * const in);
  virtual void   EnableNoiseFiltering(Bool_t enable){fEnableNoiseFiltering = enable;};
  virtual void   EnableDqmShifterOpt(Bool_t enable){ fEnableDqmShifterOpt = enable;};
          Bool_t CheckVolumeID(const Int_t * const equipmentID); 
          Bool_t CheckEquipID( const Int_t * const equipmentID); 
          Bool_t FilterLTMData(const Int_t * const equipmentID) const ; 
          Bool_t FilterSpare(  const Int_t * const equipmentID) const ;
	  Int_t  GetNumberOfFiredMacropad(AliRawReader * rawReader);
  static void SetNbinsMultiplicityHisto(Int_t value){fgNbinsMultiplicity=value; return;}; 
  static void SetMultiplicityHistoRange (Int_t valueMin, Int_t valueMax){fgRangeMinMultiplicity=valueMin; fgRangeMaxMultiplicity=valueMax; return;}
  static void SetNbinsTimeHisto(Int_t value){fgNbinsTime=value; return;};
  static void SetTimeHistoRange (Float_t valueMin, Float_t valueMax){fgRangeMinTime=valueMin; fgRangeMaxTime=valueMax; return;};
  static void SetCutNmaxFiredMacropad(Int_t value){fgCutNmaxFiredMacropad=value;return;};

 	  // void   ResetAllTRMcounters();
	  Bool_t fEnableNoiseFiltering; //the choice is not implemented so far
	  Bool_t fEnableDqmShifterOpt;  // draw option flag to help
					// DQM shifter in the
					// interpretation of the TOF
					// raw QA histograms
	  Bool_t fIsSOC;  //flag for StartOfCycle operations
	  //lines for the DQM GUI
	  TLine* fLineExpTimeMin;
	  TLine* fLineExpTimeMax;
	  TLine* fLineExpTotMin;
	  TLine* fLineExpTotMax;
	  /* TLine* fLineSMid[17]; */
	  /* TLine* fLineLTMid[71]; */
	  /* TLine* fLineLTMbitId[22]; */

	  AliTOFRawStream fTOFRawStream; // AliTOFRawStream variable 
	  AliTOFDecoderSummaryData * fDecoderSummary; //pointer to decoder summary data object
	  Int_t fRunNumber; //run number
	  static Int_t fgNbinsMultiplicity;//number of bins in multiplicity plot
	  static Int_t fgRangeMinMultiplicity;//min range in multiplicity plot
	  static Int_t fgRangeMaxMultiplicity;//max range in multiplicity plot
	  static Int_t fgNbinsTime;//number of bins in time plot
	  static const Float_t fgkNbinsWidthTime;//width of bins in time plot
	  static Float_t fgRangeMinTime;//range min in time plot
	  static Float_t fgRangeMaxTime; //range max in time plot
	  static Int_t fgCutNmaxFiredMacropad; //cut on max number of fired macropad 
	  static const Int_t fgkFiredMacropadLimit; //limit on cut on number of fired macropad 
	  AliTOFcalib fCalib;//calibration object

	  ClassDef(AliTOFQADataMakerRec,8)  // description 	    
};

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