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

/* $Id$ */
////////////////////////////////////////////////////////////////
// Author: A. Mastroserio                                     // 
// This class is used within the detector algorithm framework //
// to analyze FO scan data. It intends to find the best DAC   //
// values to get the best FO trigger efficiency               //
////////////////////////////////////////////////////////////////

class THnSparse;
class TObject;
class TArrayI;
class AliITSOnlineSPDfo;
class AliITSOnlineSPDfoInfo;

class AliITSOnlineSPDfoAnalyzer {
  
 public:
  AliITSOnlineSPDfoAnalyzer(const TString fileName,  Bool_t readFromGridFile=kFALSE);
  AliITSOnlineSPDfoAnalyzer(const AliITSOnlineSPDfoAnalyzer& foan);
  ~AliITSOnlineSPDfoAnalyzer();
  
  AliITSOnlineSPDfoAnalyzer& operator=(const AliITSOnlineSPDfoAnalyzer& handle);
  
  void       Init(Bool_t readFromGridFile=kFALSE);     
  
  enum {kNqualityFlags=3};
  
  void ReadParamsFromLocation(const Char_t* dirName);
  Int_t IsSelected(Float_t eff) const;                  // selection quality (0 = best, 1 tight, 2 loose)
  Int_t Select(const AliITSOnlineSPDfoChip *chip) const;
  void WriteToFile(TString outputfile);
  Bool_t IsExisting(TArrayI dacs,Int_t hs, Int_t chip) const;
  Bool_t CorrectPreVTHChioce(const TH1D *h,Int_t &bin) const;
  
  // SETTERS
  void SetGeneralThresholds(Float_t thre[3]); 
  void SetParam(const Char_t *pname, const Char_t *pval);
  void SetNdimensions();
  void BuildTHnSparse(Int_t ihs, Int_t ichip);
  void Process();
  void CheckResults(TString filename, Int_t hs, Int_t ichip, Int_t iqual) const;
  
  // GETTERS
  void GetCanvases(const THnSparse *hn, Int_t ihs, Int_t ichip,Int_t iqual) const;
  TArrayI ChooseDACValues(Int_t ihs, Int_t ichip) const;
  TArrayI GetCentralDACS(Int_t qualityflag, Int_t hs, Int_t chip, TH1D **hd) const;
  AliITSOnlineSPDfo * GetFOHandler() const {return fFOHandler;}
  
 private:
  TString fFileName;
  Int_t fNdims; // number of dimensions of the histogram (= #DACs in the scan)
  Int_t *fNbins; //[fNdims]  
  Double_t *fXmin; //[fNdims]
  Double_t *fXmax; //[fNdims]  
  AliITSOnlineSPDfo *fFOHandler;
  Float_t fGeneralThresholds[3];
  THnSparse *fNh[3][6][10];      // N-dim histo per chip per half sector per quality flag [0= exact, 1 = within 0.01, 2 = within 0.05]
  Bool_t fHighOccupancyCheck;
};

#endif

 AliITSOnlineSPDfoAnalyzer.h:1
 AliITSOnlineSPDfoAnalyzer.h:2
 AliITSOnlineSPDfoAnalyzer.h:3
 AliITSOnlineSPDfoAnalyzer.h:4
 AliITSOnlineSPDfoAnalyzer.h:5
 AliITSOnlineSPDfoAnalyzer.h:6
 AliITSOnlineSPDfoAnalyzer.h:7
 AliITSOnlineSPDfoAnalyzer.h:8
 AliITSOnlineSPDfoAnalyzer.h:9
 AliITSOnlineSPDfoAnalyzer.h:10
 AliITSOnlineSPDfoAnalyzer.h:11
 AliITSOnlineSPDfoAnalyzer.h:12
 AliITSOnlineSPDfoAnalyzer.h:13
 AliITSOnlineSPDfoAnalyzer.h:14
 AliITSOnlineSPDfoAnalyzer.h:15
 AliITSOnlineSPDfoAnalyzer.h:16
 AliITSOnlineSPDfoAnalyzer.h:17
 AliITSOnlineSPDfoAnalyzer.h:18
 AliITSOnlineSPDfoAnalyzer.h:19
 AliITSOnlineSPDfoAnalyzer.h:20
 AliITSOnlineSPDfoAnalyzer.h:21
 AliITSOnlineSPDfoAnalyzer.h:22
 AliITSOnlineSPDfoAnalyzer.h:23
 AliITSOnlineSPDfoAnalyzer.h:24
 AliITSOnlineSPDfoAnalyzer.h:25
 AliITSOnlineSPDfoAnalyzer.h:26
 AliITSOnlineSPDfoAnalyzer.h:27
 AliITSOnlineSPDfoAnalyzer.h:28
 AliITSOnlineSPDfoAnalyzer.h:29
 AliITSOnlineSPDfoAnalyzer.h:30
 AliITSOnlineSPDfoAnalyzer.h:31
 AliITSOnlineSPDfoAnalyzer.h:32
 AliITSOnlineSPDfoAnalyzer.h:33
 AliITSOnlineSPDfoAnalyzer.h:34
 AliITSOnlineSPDfoAnalyzer.h:35
 AliITSOnlineSPDfoAnalyzer.h:36
 AliITSOnlineSPDfoAnalyzer.h:37
 AliITSOnlineSPDfoAnalyzer.h:38
 AliITSOnlineSPDfoAnalyzer.h:39
 AliITSOnlineSPDfoAnalyzer.h:40
 AliITSOnlineSPDfoAnalyzer.h:41
 AliITSOnlineSPDfoAnalyzer.h:42
 AliITSOnlineSPDfoAnalyzer.h:43
 AliITSOnlineSPDfoAnalyzer.h:44
 AliITSOnlineSPDfoAnalyzer.h:45
 AliITSOnlineSPDfoAnalyzer.h:46
 AliITSOnlineSPDfoAnalyzer.h:47
 AliITSOnlineSPDfoAnalyzer.h:48
 AliITSOnlineSPDfoAnalyzer.h:49
 AliITSOnlineSPDfoAnalyzer.h:50
 AliITSOnlineSPDfoAnalyzer.h:51
 AliITSOnlineSPDfoAnalyzer.h:52
 AliITSOnlineSPDfoAnalyzer.h:53
 AliITSOnlineSPDfoAnalyzer.h:54
 AliITSOnlineSPDfoAnalyzer.h:55
 AliITSOnlineSPDfoAnalyzer.h:56
 AliITSOnlineSPDfoAnalyzer.h:57
 AliITSOnlineSPDfoAnalyzer.h:58
 AliITSOnlineSPDfoAnalyzer.h:59
 AliITSOnlineSPDfoAnalyzer.h:60
 AliITSOnlineSPDfoAnalyzer.h:61
 AliITSOnlineSPDfoAnalyzer.h:62
 AliITSOnlineSPDfoAnalyzer.h:63
 AliITSOnlineSPDfoAnalyzer.h:64
 AliITSOnlineSPDfoAnalyzer.h:65
 AliITSOnlineSPDfoAnalyzer.h:66
 AliITSOnlineSPDfoAnalyzer.h:67