Bug fixes after first data (A. Mastroserio)
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineSPDfoAnalyzer.h
1 #ifndef ALIITSONLINESPDFOANALYZER_H
2 #define ALIITSONLINESPDFOANALYZER_H
3 /* Copyright(c) 2008-2010, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7 ////////////////////////////////////////////////////////////////
8 // Author: A. Mastroserio                                     // 
9 // This class is used within the detector algorithm framework //
10 // to analyze FO scan data. It intends to find the best DAC   //
11 // values to get the best FO trigger efficiency               //
12 ////////////////////////////////////////////////////////////////
13
14 class THnSparse;
15 class TObject;
16 class TArrayI;
17 class AliITSOnlineSPDfo;
18 class AliITSOnlineSPDfoInfo;
19
20 class AliITSOnlineSPDfoAnalyzer {
21   
22  public:
23   AliITSOnlineSPDfoAnalyzer(const TString fileName,  Bool_t readFromGridFile=kFALSE);
24   AliITSOnlineSPDfoAnalyzer(const AliITSOnlineSPDfoAnalyzer& foan);
25   ~AliITSOnlineSPDfoAnalyzer();
26   
27   AliITSOnlineSPDfoAnalyzer& operator=(const AliITSOnlineSPDfoAnalyzer& handle);
28   
29   void       Init(Bool_t readFromGridFile=kFALSE);     
30   
31   enum {kNqualityFlags=3};
32   
33   void ReadParamsFromLocation(const Char_t* dirName);
34   Int_t IsSelected(Float_t eff) const;                  // selection quality (0 = best, 1 tight, 2 loose)
35   Int_t Select(const AliITSOnlineSPDfoChip *chip) const;
36   void WriteToFile(TString outputfile);
37   Bool_t IsExisting(TArrayI dacs,Int_t hs, Int_t chip) const;
38   Bool_t CorrectPreVTHChioce(const TH1D *h,Int_t &bin) const;
39   
40   // SETTERS
41   void SetGeneralThresholds(Float_t thre[3]); 
42   void SetParam(const Char_t *pname, const Char_t *pval);
43   void SetNdimensions();
44   void BuildTHnSparse(Int_t ihs, Int_t ichip);
45   void Process();
46   void CheckResults(TString filename, Int_t hs, Int_t ichip, Int_t iqual) const;
47   
48   // GETTERS
49   void GetCanvases(const THnSparse *hn, Int_t ihs, Int_t ichip,Int_t iqual) const;
50   TArrayI ChooseDACValues(Int_t ihs, Int_t ichip) const;
51   TArrayI GetCentralDACS(Int_t qualityflag, Int_t hs, Int_t chip, const TH1D *hd) const;
52   TArrayI GetCentralDACS(Int_t qualityflag, Int_t hs, Int_t chip, TH1D **hd) const;
53   AliITSOnlineSPDfo * GetFOHandler() const {return fFOHandler;}
54   
55  private:
56   TString fFileName;
57   Int_t fNdims; // number of dimensions of the histogram (= #DACs in the scan)
58   Int_t *fNbins; //[fNdims]  
59   Double_t *fXmin; //[fNdims]
60   Double_t *fXmax; //[fNdims]  
61   AliITSOnlineSPDfo *fFOHandler;
62   Float_t fGeneralThresholds[3];
63   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]
64   Bool_t fHighOccupancyCheck;
65 };
66
67 #endif
68