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

/*  $Id$  */

//
//  Checks the quality assurance. 
//  By comparing with reference data
//  contained in a DB
//  -------------------------------------------------------------
//  W. Ferrarese + P. Cerello Feb 2008
//  INFN Torino

#include "AliQAv1.h"
#include "AliQADataMakerRec.h"

class AliITSQADataMakerRec;
class TObjArray;
class TH1F;

class AliRawReader;
class AliITSQADataMakerRec;
class AliCDBManager;

class AliITSQASSDDataMakerRec: public TObject {

public:
  AliITSQASSDDataMakerRec(AliITSQADataMakerRec *aliITSQADataMakerRec, Bool_t kMode = kFALSE, Int_t ldc=0);  //ctor

  virtual Int_t InitRaws();
  virtual Int_t InitDigits();
  virtual Int_t InitRecPoints();
  virtual Int_t MakeRaws(AliRawReader *rawReader);
  virtual Int_t MakeDigits()  {return 0;}
  virtual Int_t MakeDigits(TTree *digitsTree);
  virtual Int_t MakeRecPoints(TTree *clustersTree);
  virtual void StartOfDetectorCycle();
  virtual void EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** /*list*/);
  virtual ~AliITSQASSDDataMakerRec(); // dtor

  Int_t GetOffset(AliQAv1::TASKINDEX_t task,Int_t specie=0) const;
  void  SetOffset(AliQAv1::TASKINDEX_t task, Int_t offset, Int_t specie = 0);
  Int_t GetTaskHisto(AliQAv1::TASKINDEX_t task);
  void  ResetRawsMonitoredObjects();
  void ResetDetector(AliQAv1::TASKINDEX_t task);
 private:

  AliITSQASSDDataMakerRec(const AliITSQASSDDataMakerRec& qadm);
  AliITSQASSDDataMakerRec& operator = (const AliITSQASSDDataMakerRec& qac);
  void GetOccupancyStrip(TH1 *lHisto, Int_t *occupancyMatrix); 
  Double_t GetOccupancyModule(TH1 *lHisto, 
			      Int_t stripside,
			      Int_t mode,
			      Double_t threshold); 
  void MonitorOCDBObjects(Int_t trCl=-1);
  void MonitorCMValues(Int_t trCl=-1);

  static const Int_t fgkNumOfLDCs = 8;      //number of SSD LDCs
  static const Int_t fgkNumOfDDLs = 16;      //number of SSD DDLs
  static const Int_t fgkSSDMODULES = 1698;      //total number of SSD modules
  static const Int_t fgkSSDLADDERSLAYER5 = 34; //ladders on layer 5
  static const Int_t fgkSSDLADDERSLAYER6 = 38; //ladders on layer 6
  static const Int_t fgkSSDMODULESPERLADDERLAYER5 = 22; //modules per ladder - layer 5
  static const Int_t fgkSSDMODULESPERLADDERLAYER6 = 25; //modules per ladder - layer 6
  static const Int_t fgkSSDMODULESLAYER5 = 748; //total number of SSD modules - layer5
  static const Int_t fgkSSDMODULESLAYER6 = 950; //total number of SSD modules - layer6
  static const Int_t fgkNumberOfPSideStrips = 768; //number of P-side strips
  
  AliITSQADataMakerRec *fAliITSQADataMakerRec;  //pointer to the main ctor
  Bool_t  fkOnline;                             //online (1) or offline (0) use
  Int_t   fLDC;                                 //LDC number (0 for offline, 1 to 4 for online) 
  Int_t   fSSDRawsOffset;                       //SSD raw data plot offset
  Int_t   fSSDRawsDAOffset;                     //SSD DA plot offset
  Int_t   fSSDRawsCommonLevelOffset;            //Raw data QA - top level offset - histos used both online and offline 
  Int_t   fSSDhRawsTask;                        //number of histo booked for the raws SSD task 
  Int_t   fSSDhDigitsTask;                      //number of histo booked for the recpoints SSD task
  Int_t   fSSDhRecPointsTask;                   //number of histo booked for the recpoints SSD task
  Int_t   *fGenRawsOffset;                       //qachecking raws       offset
  Int_t   *fGenDigitsOffset;                     //qachecking recpoints  offset
  Int_t   *fGenRecPointsOffset;                  //qachecking recpoints  offset
  TH1F   *fHistSSDRawSignalModule[fgkSSDMODULES]; //raw signal vs strip number - SSD                   
  TH1F   *fHistSSDCMModule[2*fgkSSDMODULES]; //SSD common mode noise
  Int_t   fOccupancyMatrix[fgkSSDMODULES][2*fgkNumberOfPSideStrips]; //occupancy values per strip

  AliCDBManager *fCDBManager; //CDB manager

  ClassDef(AliITSQASSDDataMakerRec,7)           // description 
};

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