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

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  TRD calibration class for online calibration                             //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

class TObjArray;
class TH2F;

class AliRawReader;

class AliTRDCalDet;
class AliTRDCalPad;
class AliTRDCalROC;
class AliTRDCalPadStatus;
class AliTRDgeometry;

class AliTRDdigitsManager;
class AliTRDSignalIndex;

struct eventHeaderStruct;

class AliTRDCalibPadStatus : public TObject {

public:

  AliTRDCalibPadStatus();
  AliTRDCalibPadStatus(const AliTRDCalibPadStatus &ped);
  virtual ~AliTRDCalibPadStatus();

  AliTRDCalibPadStatus& operator = (const  AliTRDCalibPadStatus &source);

  Int_t ProcessEvent(AliRawReader    *rawReader);
 
  void  Destroy();
  Int_t UpdateHisto(const Int_t idet, const Int_t iRow, const Int_t iCol,
		     const Int_t signal, const Int_t crowMax, const Int_t ccold, const Int_t icMcm, const Int_t icRob);

  void AnalyseHisto();
  AliTRDCalPadStatus *CreateCalPadStatus();
  AliTRDCalPad *CreateCalPad();
  AliTRDCalDet *CreateCalDet() const;

  void SetCalRocMean(AliTRDCalROC *mean, Int_t det);
  void SetCalRocRMS(AliTRDCalROC *rms, Int_t det);  

  void SetCalRocMeand(AliTRDCalROC *mean, Int_t det);
  void SetCalRocRMSd(AliTRDCalROC *rms, Int_t det);  

  //
  AliTRDCalROC* GetCalRocMean(Int_t det, Bool_t force=kFALSE);    // get calibration object
  AliTRDCalROC* GetCalRocRMS(Int_t det, Bool_t force=kFALSE);     // get calibration object

  AliTRDCalROC* GetCalRocMeand(Int_t det, Bool_t force=kFALSE);   // get calibration object
  AliTRDCalROC* GetCalRocRMSd(Int_t det, Bool_t force=kFALSE);    // get calibration object

  TH2F* GetHisto  (Int_t det, Bool_t force=kFALSE);              // get refernce histogram
  
  void  DumpToFile(const Char_t *filename, const Char_t *dir="", Bool_t append=kFALSE);
  //
  Int_t   GetAdcMin()       const { return fAdcMin;       }
  Int_t   GetAdcMax()       const { return fAdcMax;       }

  void    SetRangeAdc (Int_t aMin, Int_t aMax){ fAdcMin=aMin; fAdcMax=aMax; }  // Set adc range 


 private:

  // Geometry
  AliTRDgeometry  *fGeo;            //! The TRD geometry

  Int_t fAdcMin;                    //  min adc channel of pedestal value
  Int_t fAdcMax;                    //  max adc channel of pedestal value
  Int_t fDetector;                  //  Current detector
  Int_t fNumberOfTimeBins;          //  Current number of time bins
     
  TObjArray fCalRocArrayMean;       //  Array of AliTRDCalROC class for signal width calibration
  TObjArray fCalRocArrayRMS;        //  Array of AliTRDCalROC class for mean width calibration

  TObjArray fCalRocArrayMeand;      //  Array of AliTRDCalROC class for signal width calibration doubled
  TObjArray fCalRocArrayRMSd;       //  Array of AliTRDCalROC class for mean width calibration doubled

  TObjArray fHistoArray;            //  Array of histos for mean width calibration
  
 
  AliTRDCalROC* GetCalRoc(Int_t det, TObjArray* arr, Bool_t force);
 
  TH2F* GetHisto(Int_t det, TObjArray *arr,
		 Int_t nbinsY, Float_t ymin, Float_t ymax,
		 const Char_t *type, Bool_t force);

  // Some basic geometry function
  virtual Int_t    GetLayer(Int_t d) const;
  virtual Int_t    GetStack(Int_t d) const;
  virtual Int_t    GetSector(Int_t d) const;

  ClassDef(AliTRDCalibPadStatus,1)

};
#endif


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