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

/* $Id$ */

////////////////////////////////////////////////////////////
// Author: Henrik Tydesjo                                 //
// This class is used in the detector algorithm framework //
// to process the data stored in special container files  //
// (see AliITSOnlineSPDscan). For instance, minimum       //
// threshold values can be extracted.                     //
////////////////////////////////////////////////////////////

#include <TString.h>
#include <TH1F.h>

class AliITSOnlineSPDscan;
class AliITSOnlineCalibrationSPDhandler;
class TGraph;
class TH2F;
class TArrayI;

class AliITSOnlineSPDscanAnalyzer {

 public:
  AliITSOnlineSPDscanAnalyzer(const Char_t *fileName, AliITSOnlineCalibrationSPDhandler *handler, Bool_t readFromGridFile=kFALSE);
  AliITSOnlineSPDscanAnalyzer(const AliITSOnlineSPDscanAnalyzer& handle);
  ~AliITSOnlineSPDscanAnalyzer();

  AliITSOnlineSPDscanAnalyzer& operator=(const AliITSOnlineSPDscanAnalyzer& handle);

  Bool_t     IsChipPresent(UInt_t hs, UInt_t chipNr);
  Bool_t     IsOverWriteSet() const {return fOverWrite;}
  void       SetCalibHandler(AliITSOnlineCalibrationSPDhandler * const handler) {fHandler=handler;}
  void       SetParam(const Char_t *pname, const Char_t *pval);
  void       ReadParamsFromLocation(const Char_t *dirName);

  UInt_t     GetType() const {return fType;}
  UInt_t     GetDacId() const {return fDacId;}
  
  Int_t      GetDelay(UInt_t hs, UInt_t chipNr);
  Int_t      GetMinTh(UInt_t hs, UInt_t chipNr);
  TArrayI    GetMeanTh(UInt_t hs, UInt_t chipNr);
  
  Int_t      GetNrNoisyUnima(UInt_t hs, UInt_t chipNr);

  Bool_t     ProcessUniformity();
  Bool_t     ProcessDeadPixels();
  Bool_t     ProcessNoisyPixels();

  Bool_t     ProcessNrTriggers();

  AliITSOnlineSPDscan* GetOnlineScan() const {return fScanObj;}
  UInt_t     GetRouterNr();
  Bool_t     GetHalfStavePresent(UInt_t hs);

  TGraph*    GetNrTriggersG();
  TGraph*    GetMeanMultiplicityG(UInt_t hs, UInt_t chipNr);
  TGraph*    GetHitEventEfficiencyG(UInt_t hs, UInt_t chipNr);
  TH2F*      GetHitMapTot(UInt_t step);
  TH2F*      GetPhysicalHitMapTot(UInt_t step);
  TH2F*      GetHitMapChip(UInt_t step, UInt_t hs, UInt_t chip);

  Float_t    GetTPeff() const {return fTPeff;}
  TH1F*      GetTPeffHS() const {return fTPeffHS;}
  TH1F*      GetTPeffChip(UInt_t hs) const {return fTPeffChip[hs];}
  Float_t    GetDeadPixel() const {return fDeadPixel;}
  TH1F*      GetDeadPixelHS() const {return fDeadPixelHS;}
  TH1F*      GetDeadPixelChip(UInt_t hs) const {return fDeadPixelChip[hs];}
  Float_t    GetNoisyPixel() const {return fNoisyPixel;}
  TH1F*      GetNoisyPixelHS() const {return fNoisyPixelHS;}
  TH1F*      GetNoisyPixelChip(UInt_t hs) const {return fNoisyPixelChip[hs];}

 private:
  UInt_t               fType;           // calib type
  UInt_t               fDacId;          // dac id
  TString              fFileName;       // container file name
  enum                 calibvals{kMINTH,kMEANTH,kDAC,kUNIMA,kNOISE,kDELAY};  // calib types

  AliITSOnlineSPDscan               *fScanObj;  // container obj
  AliITSOnlineCalibrationSPDhandler *fHandler;  // calib helper obj
  Bool_t     fbModuleScanned[240];        // is module used in scan?

  TGraph*    fMeanMultiplicity[6][11];   // mean mult graphs
  TGraph*    fHitEventEfficiency[6][11]; // hit event graphs
  TGraph*    fTriggers;                  // trigger graph

  // uniformity scan analysis:
  Float_t    fTPeff;                     // number of good pixels [%] (for full router)
  TH1F*      fTPeffHS;                   // 6 bin histogram, number good pixels [%] (for each hs)
  TH1F*      fTPeffChip[6];              // 10 bin histograms, number good pixels [%] (for each chip)
  Float_t    fDeadPixel;                 // number of dead pixels [%] (for full router)
  TH1F*      fDeadPixelHS;               // 6 bin histogram, number dead pixels [%] (for each hs)
  TH1F*      fDeadPixelChip[6];          // 10 bin histograms, number dead pixels [%] (for each chip)
  Float_t    fNoisyPixel;                // number of 'noisy' pixels [%] (for full router)
  TH1F*      fNoisyPixelHS;              // 6 bin histogram, number 'noisy' pixels [%] (for each hs)
  TH1F*      fNoisyPixelChip[6];         // 10 bin histograms, number 'noisy' pixels [%] (for each chip)
  
  void       Init(Bool_t readFromGridFile=kFALSE);                     // init

  void       CreateUniformityHistograms(); // method to create all histograms to be filled by 'ProcessUniformity'
  void       DeleteUniformityHistograms(); // method to delete all histograms used by uniformity scan analysis

  Bool_t     ProcessMeanMultiplicity();  // process mean mult
  Bool_t     ProcessHitEventEfficiency();// process hit event eff

  Int_t      FindLastMinThDac(UInt_t hs, UInt_t chipNr);  // dac value where fMinIncreaseFromBaseLine reached
  Int_t      FindClosestLowerStep(Float_t dacValueInput); // step closest (lower) to a dacvalue 
  Float_t    GetCompareLine(UInt_t step, UInt_t hs, UInt_t chipNr, Float_t basePar2); // line to compare mean mult with

  // dead noisy parameters:
  Bool_t     fOverWrite;          // overWrite old dead/noisy or just add new ones to it
  // noise scan parameters:
  Float_t    fNoiseThreshold;     // ratio of allowed hits/triggers
  UInt_t     fNoiseMinimumEvents; // minimum events required to find noisy pixels
  // min th scan parameters:
  UInt_t     fMinNrStepsBeforeIncrease; // min nr of steps required before fMinIncreaseFromBaseLine reached
  Float_t    fMinIncreaseFromBaseLine;  // min increase of mean mult from base line
  UInt_t     fStepDownDacSafe;          // nr of steps down to put threshold result (to be on the safe side)
  Float_t    fMaxBaseLineLevel;         // maximum value for the base line to compare with



};

#endif


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