ROOT logo
#ifndef HMDCEFFICIENCY_H
#define HMDCEFFICIENCY_H

#include "hreconstructor.h"
#include "hlocation.h"
#include "TROOT.h"
#include "TPaveText.h"
#include "TString.h"

class HIterator;
class TH1F;
class TH2F;
class TCanvas;
class HMdcCal1;
class HMdcClus;
class TSlider;
class HMdcLookupGMod;
class HMdcTimeCut;
class HCategory;
class HMdcLookUpTb;
class HMdcLookUpTbSec;
class HMdcRawModStru;
class HMdcSizesCells;
class HMdcGetContainers;
class HEventHeader;
class TFile;

class HMdcEff : public TObject {
  protected:
    Float_t  tNhits;      // total num. of hits (used for eff. cells only)
    Float_t  tNhitsCutS;  // total num. of hits (cut for time1&time2 only)
    Float_t  tNhitsNoCut; // total num. of hits (no cut)
    Float_t  tNhitsClus;
    Double_t n0;          // num. times cells was not fired
    Double_t errN0;
    Double_t n1;          // num.of single hits (neighbouring cells not fired)
    Double_t errN1;
    Double_t n2m;         // num. of double hits ( two fired close cell)
    Double_t errN2m;      // at calculation of eff. of N wires (from Nf to Nl)
    Double_t n2b;         // n2m = double hits num.for pairs Nf:Nf+1 ... Nl-1:Nl
    Double_t errN2b;      // n2b = double hits num.for pairs Nf-1:Nf and Nl:Nl+1
                          // (for one cell - n2m=0, for all cells n2b=0)

    Double_t feff;        // efficiency
    Double_t errEff;      // error of efficiency

    Double_t eM;
    Double_t errM;

    Double_t single;       // fraction of track wich go through one cell only
    Double_t errSingle;    // error ...

    Double_t p0;           // probability to have 0 hits in layer
    Double_t errP0;        // error ...
    Double_t p1;           // probability to have 1 hits in layer
    Double_t errP1;        // error ...
    Double_t p2;           // probability to have 2 hits in layer
    Double_t errP2;        // error ...

    Double_t totNumTr;     // for M=1 or efficiency of MDC totNumTr=n0+n1+n2m

  public:
    HMdcEff(){}
    virtual void calcEff(Double_t iN0,     Double_t eN0,
                         Double_t iN1,     Double_t eN1,
                         Double_t iN2m,    Double_t eN2m,
                         Double_t iN2b=0., Double_t eN2b=0.);
    void     setTotNhits(Float_t nHits)      {tNhits=nHits;}
    void     setTotNhitsCutS(Float_t nHits)  {tNhitsCutS=nHits;}
    void     setTotNhitsNoCut(Float_t nHits) {tNhitsNoCut=nHits;}
    void     setTotNhitsClus(Float_t nHits)  {tNhitsClus=nHits;}
    Float_t  getTotNhits(void)               {return tNhits;}
    Float_t  getTotNhitsNoCut(void)          {return tNhitsNoCut;}
    Float_t  getTotNhitsCutS(void)           {return tNhitsCutS;}
    Float_t  getTotNhitsClus(void)           {return tNhitsClus;}
    Double_t getN0(void)                     {return n0;}
    Double_t getN1(void)                     {return n1;}
    Double_t getN2(void)                     {return n2m+n2b;}
    Double_t getN2m(void)                    {return n2m;}
    Double_t getN2b(void)                    {return n2b;}
    Double_t getEfficiency(void)             {return feff;}
    Double_t getErrEfficiency(void)          {return errEff;}
    Double_t getFracSingle(void)             {return single;}
    Double_t getErrFracSingle(void)          {return errSingle;}
    Double_t getP0(void)                     {return p0;}
    Double_t getP1(void)                     {return p1;}
    Double_t getP2(void)                     {return p2;}
    Double_t getErrP0(void)                  {return errP0;}
    Double_t getErrP1(void)                  {return errP1;}
    Double_t getErrP2(void)                  {return errP2;}
    Double_t getTotNumTracks(void)           {return totNumTr;}

  protected:
    void             calculation(void);
    virtual Double_t efficiency(Double_t n0T, Double_t n1T, 
                                Double_t n2mT, Double_t n2bT=0.);
    Double_t         fractSingle(Double_t effT, Double_t n0T, Double_t n1T,
                                  Double_t n2mT, Double_t n2bT=0.);

  ClassDef(HMdcEff,0)
};


class HMdcEffMod : public HMdcEff {
  protected:
    Double_t p0l; // probability to have not fired wires in 6 layers
    Double_t p1l; // probability to have fired wires in 1 layer only
    Double_t p2l; // probability to have fired wires in 2 layers
    Double_t p3l; // probability to have fired wires in 3 layers
    Double_t p4l; // probability to have fired wires in 4 layers
    Double_t p5l; // probability to have fired wires in 5 layers
    Double_t p6l; // probability to have fired wires in 6 layers
  public:
    HMdcEffMod(){}
    virtual void calcEff(Double_t iN0,     Double_t eN0,
                         Double_t iN1,     Double_t eN1,
                         Double_t iN2m,    Double_t eN2m,
                         Double_t iN2b=0., Double_t eN2b=0.);
    Double_t getP0l(void) {return p0l;}
    Double_t getP1l(void) {return p1l;}
    Double_t getP2l(void) {return p2l;}
    Double_t getP3l(void) {return p3l;}
    Double_t getP4l(void) {return p4l;}
    Double_t getP5l(void) {return p5l;}
    Double_t getP6l(void) {return p6l;}

  // Double_t getTotNumTr(void);

  protected:
    virtual Double_t efficiency(Double_t n0, Double_t n1, 
                                Double_t n2m, Double_t n2b=0.);

  ClassDef(HMdcEffMod,0)
};

class HMdcEfficiencyLayer : public TObject {
  protected:
    Short_t   sector;
    Short_t   module;
    Short_t   layer;
    Short_t   is;

    Short_t   nCells;
    Int_t*    nCellTot;   // Total num. times cell was fired (no timecuts)
    Int_t*    nCellCutS;  // Total num. times cell was fired (common stop cut)
    Int_t*    nCellStat;  // Total num. times cell was fired (after cuts)
    Int_t*    nCellsClus; // Cells which have a part in clusters
    Int_t*    n0;         // n0[cell number] num. times cell was not fired
    Int_t*    n1;         // n1[cell number] num. single hits (the cell was
                          //         fired but closest cells not)
    Int_t*    n2;         // n2[cell number] num. double hits (this cell and
                          //        cell "cell_number-1" was fired)
    HMdcEff   eff;
    TH1F*     hists[14];
    Int_t     nPads;
    Int_t     listPads[6];
    TCanvas*  canvEff;
    TString   nameCanv;
    TString   titleCanv;

    HMdcEff   effXY;
    TCanvas*  canvXY[3];
    TString   nameCanvXY[3];
    TString   titleCanvXY[3];
    TPaveText titlePadXY[3];
    Int_t     indDrawTitXY[3];

    Int_t     nBinsSumXY;
    Int_t     n0xy[256];
    Int_t     n1xy[256];
    Int_t     n2xy[256];
    TPaveText pvTxEffXY[3][256];
    UChar_t   indDrawPv[3][256];

    UChar_t*  nClustCell; // nClustCell[nCell] - num. of clusters for cell=nCell
    
    TString   fileName;

  public:
    HMdcEfficiencyLayer(void) {}
    ~HMdcEfficiencyLayer();
    void     init(Short_t sec, Short_t mod, Short_t lay);
    void     clear(void);
    void     addCellTot(Short_t cell);
    void     addCellCutS(Short_t cell);
    void     addCellClus(Short_t cell);
    void     addCell(Short_t cell);
    void     addCellInClust(Short_t cell);
    UChar_t  getNumClCell(Short_t cell) {return nClustCell[cell];}
    UChar_t* getNClCell(void)           {return nClustCell;}
    void     add0Hit(Short_t cell, Int_t nB);
    void     add1Hit(Short_t cell, Int_t nB);
    void     add2Hit(Short_t cell1, Short_t cell2, Int_t nB);

    Int_t    getCellStat(Short_t cell);
    Short_t  getNumCells(void)          {return nCells;}
    Short_t  getN0Hit(Short_t cell)     {return n0[cell];}
    Short_t  getN1Hit(Short_t cell)     {return n1[cell];}
    Short_t  getN2Hit(Short_t cell)     {return (cell+1<nCells) ?
                                         n2[cell]+n2[cell+1] : n2[cell];}
    void     getEffCells(HMdcEff* efficiency, 
                     Short_t fCell=-1000, Short_t lCell=1000);
    void     getEffXY(HMdcEff* efficiency);
    void     getEffXY(HMdcEff* efficiency, Short_t xBin, Short_t yBin);
    void     getEffXY(HMdcEff* efficiency, Short_t fXbin, Short_t lXbin,
                                           Short_t fYbin, Short_t lYbin);
    TH1F*    getHist(Int_t hsNum)       {return hists[hsNum];}
    void     fillHists(void);
    void     drawTotNhits(void);
    void     drawRatio(void);
    void     drawNHits(void);
    void     drawHistEff(void);
    void     drawHistSing(void);
    void     drawProbabilitis(void);
    void     updateCanv(void);
    void     setListPads(Int_t* listPad);
    void     drawCanvas(void);
    void     delCanvas(void);

    void     drawCanvXYlist(void);
    void     updateCanvXYlist(void);
    void     delCanvXYlist(void);
    void     drawCanvXYnHits(void)      {drawCanvXY(0);}
    void     drawCanvXYefficiency(void) {drawCanvXY(1);}
    void     drawCanvXYsingle(void)     {drawCanvXY(2);}
    void     drawCanvXYprob(void)       {drawCanvXY(3);}
    void     setBiningXY(Int_t nBinsSum);
    static void setTitle(TH1F *hist, const Char_t* nm);

  protected:
    void drawLineTot(TH1F* hst, Int_t color, Float_t effL, Float_t errEff);
    void setPads(void);
    void creatCanvas(void);
    void createHists(void);
    void setPavesXY(void);
    void drawCanvXY(Int_t nPl);
    void fillPaveXYnHits(Int_t nPv);
    void fillPaveXYeff(Int_t nPv);
    void fillPaveXYsing(Int_t nPv);
    void setLayerPadParam(Int_t hs);

  ClassDef(HMdcEfficiencyLayer,0)
};

class HMdcEfficiencyMod : public TObject {
  protected:
    Short_t         sector;
    Short_t         module;
    Int_t           n0;            // n0 num. times a layer was not fired
    Int_t           n1;            // n1 num. single hits
    Int_t           n2;            // n2 num. double hits

    Float_t         xLow;          // Low and up bordes of project plane
    Float_t         xUp;           //
    Float_t         dX;            // step of plot of efficiency
    Float_t         yLow;          //
    Float_t         yUp;           //
    Float_t         dY;            //
    Int_t           n0xy[256];     // arrays for keeping of inform. about eff.
    Int_t           n1xy[256];     // of MDC regions
    Int_t           n2xy[256];     //

    HMdcEfficiencyLayer mdcEffLay[6];

    Int_t           listLayers[6]; // The list of layers for drawing of hists
    Int_t           nPads;
    TCanvas*        canvases[6];
    TString         nameCanv[6];
    TString         titleCanv[6];

    HMdcEff         eff;
    HMdcEffMod      effMod;
    HMdcLookupGMod* flookupGMod;   // pointer to cont. HMdcLookupGeom[sec][mod]
    HMdcRawModStru* frawModStru;   // pointer to cont. HMdcLookupRaw[sec][mod]
    Int_t           nChannels;
    TCanvas*        canvasMb;
    TString         nameCanvMb;
    TString         titleCanvMb;
    TSlider*        mbSlider;
    Text_t          nameSliderMb[20];
    TH1F*           hsEffMb;
    TH1F*           hsEffMb4;
    TH1F*           hsPattMbNoCut;
    TH1F*           hsPattMbCutS;
    TH1F*           hsPattMbAfCut;
    TH1F*           hsPattMbClust;

    TH1F*           hsTimes[9];
    TH1F*           drHsTimes[15];
    TH2F*           plToTvsT1;
    TH2F*           drPlToTvsT1;
    TBox*           tCutBox;
    TBox*           tCutBox2;
    Float_t         minTimeBin[3];
    Float_t         maxTimeBin[3];
    TString         nameCanvTimes;
    TString         titleCanvTimes;
    Int_t           biningTimes;
    
    TString         fileName;

  public:
    HMdcEfficiencyMod(Short_t sec, Short_t mod);
    ~HMdcEfficiencyMod();
    HMdcEfficiencyLayer& operator[](Int_t i)    {return mdcEffLay[i];}
    void  clear(void);
    void  add0Hit(Int_t nB)                     {n0++; if(nB>=0) n0xy[nB]++;}
    void  add1Hit(Int_t nB)                     {n1++; if(nB>=0) n1xy[nB]++;}
    void  add2Hit(Int_t nB)                     {n2++; if(nB>=0) n2xy[nB]++;}
    Int_t getBinNum(Float_t x, Float_t y);
    const HMdcEffMod* getEffMod(void)           {return &effMod;}
    void  getEffXY(HMdcEffMod* efficiency);
    void  getEffXY(HMdcEffMod* efficiency, Short_t xBin, Short_t yBin);
    void  getEffXY(HMdcEffMod* efficiency, Short_t fXbin, Short_t lXbin,
                                          Short_t fYbin, Short_t lYbin);

    void  setListLayers(Int_t* listLay);
    void  updateCanv(void);

    void  drawHists(Int_t nCanv);
    void  drawCanvTotNhits(void);
    void  drawCanvNHits(void);
    void  drawCanvHistEff(void);
    void  drawCanvHistSing(void);
    void  drawCanvProbabilitis(void);
    void  drawCanvRatio(void);
    void  saveCanvases(UInt_t saveAs);

    void  delCanv(Int_t nCanv);
    void  delCanvTotNhits(void)                 {delCanv(0);}
    void  delCanvNHits(void)                    {delCanv(1);}
    void  delCanvHistEff(void)                  {delCanv(2);}
    void  delCanvHistSing(void)                 {delCanv(3);}
    void  delCanvProbabilitis(void)             {delCanv(4);}
    void  delCanvRatio(void)                    {delCanv(5);}

    void  fillHistMb(void);
    void  drawCanvEffMb(void);
    void  saveCanvEffMb(UInt_t saveAs);
    void  creatCanvEffMb(TCanvas* canv);
    void  fillCanvEffMb(TCanvas* canv);
    void  fillCanvPattMb(TCanvas* canv,Int_t pad);
    void  delCanvMb(void);
    void  ExecuteEvent(Int_t event, Int_t px, Int_t py);  

    void  fillTimesAll(HMdcCal1* cal, Bool_t isGnt)   {fillTimes(cal,isGnt,0);}
    void  fillTimesAfCut(HMdcCal1* cal, Bool_t isGnt) {fillTimes(cal,isGnt,3);}
    void  fillTimesCls(HMdcCal1* cal, Bool_t isGnt)   {fillTimes(cal,isGnt,6);}
    void  drawCanvTimes(Int_t bining=-1,UInt_t saveAs=0);
    void  delCanvTimes(void);

  protected:
    void  fillTimes(HMdcCal1* cal, Bool_t isGnt, Int_t nHist);
    void  setNameCanv(void);
    void  creatCanvas(Int_t nCanv);
    void  creatCanvasMb(void);
    void  setPads(TCanvas* canv);
    void  drawLineGrMb(TH1F* hst);
    void  drawLineEffMb(TH1F* hst);

  ClassDef(HMdcEfficiencyMod,0)
};

class HMdcEfficiencySec : public TObject {
  protected:
    Short_t    sector;
    TObjArray* array;          // array of pointers of type HMdcEfficiencyMod
    TCanvas*   canvPlotProj;
    TString    nameCanvProj;
    TString    titleCanvProj;
    TCanvas*   canvPlotsHits;
    TString    nameCanvHits;
    TString    titleCanvHits;
    TH2F*      plotHits[2];
    TString    fileName;

  public:
    HMdcEfficiencySec(Short_t sec);
    ~HMdcEfficiencySec();
    HMdcEfficiencyMod& operator[](Int_t i) {
      return *static_cast<HMdcEfficiencyMod*>((*array)[i]);
    } 
    TH2F* getPlotAllHits(void)   {return plotHits[0];}
    TH2F* getPlotSelHits(void)   {return plotHits[1];}
    TCanvas* getCanvasProj(void) {return (TCanvas*)gROOT->FindObject(nameCanvProj);}
    TCanvas* getCanvasHits(void) {return (TCanvas*)gROOT->FindObject(nameCanvHits);}
    void drawCanvProj(void);
    void drawCanvHits(void);
    void delCanvProj(void);
    void delCanvHits(void);
    void saveCanvHits(UInt_t saveAs);
    void creatPlots(HMdcLookUpTbSec* flookupTbSec);

  protected:

  ClassDef(HMdcEfficiencySec,0)
};

class HMdcEfficiency : public HReconstructor {
  private:
    Bool_t             isCreated;
    TObjArray*         array;        // array of pointers to HMdcEfficiencySec

    HCategory*         fCalCat;      // pointer to cal data category
    HCategory*         fClusCat;     // pointer to MdcClus data category  
    HLocation          loc;          // location for new object
    Bool_t             isGeant;      // =kTRUE for GEANT data
    HIterator*         iter;
    HIterator*         iterClus;
    HMdcLookUpTb*      fLookUpTb;
    HMdcGetContainers* fGetCont;
    HMdcSizesCells*    fSizesCells;

    HEventHeader*      evHeader;
    
  //  Short_t maxClusters[6];
    UInt_t             eventId;

    Int_t              typePrPlot[6];
    TCanvas*           canvEventProj;
    Bool_t             drawGoodClus;
    TString            nameCanvEvent;
    TString            nameCanvEventCurr;
    TString            titleCanvEvent;
    Bool_t             firstEvent;
    TString            fileName;
    TString            fileId;
    
    Int_t              selectEvByTBits;
    
    HMdcTimeCut*       fcut;
    
    TCanvas*           canvasSummary;
    TH1F*              histSummary;
    static TFile* fRootOut;

public:
    HMdcEfficiency();
    HMdcEfficiency(const Text_t *name,const Text_t *title);
    ~HMdcEfficiency(void);

    HMdcEfficiencySec& operator[](Int_t i) {
        return *static_cast<HMdcEfficiencySec*>((*array)[i]);
    }


    Bool_t init(void);
    Bool_t reinit(void);
    Bool_t finalize(void);
    Int_t  execute(void);
    void   drawProjPlotsSec(Int_t sec, Int_t type=0);
    void   drawProjPlots(Int_t sec, Int_t type=0);
    void   drawHitsPlots(Int_t sec);
    void   drawCanvEvent(void);
    void   delCanvEvent(void);
    void   drawPrPlEvent(Int_t type=-1);
    void   drawSummary(Bool_t flag=kTRUE);
    UInt_t getEventId(void) const {return eventId;}

    void   calcEfficiency(Bool_t flag=kTRUE);
    void   drawAllClusters(void)                 {drawGoodClus = kFALSE;}
    void   drawGoodClusters(void)                {drawGoodClus = kTRUE;}
    void   drawClusSelCh(void)                   {drawGoodClus = !drawGoodClus;}
    Bool_t getDrawClusFlag(void)                 {return drawGoodClus;}
    void   printClusters(Int_t sec);
    void   saveHist(void);
    void   saveHist(const TString& outputDir);
    void     selectEventWithTBits(Int_t tb)      {selectEvByTBits = tb;}
    static void savePDF(const Char_t* fileName, const Char_t* type="Pattern");
    static TFile* getFilePointer(){return fRootOut;}
  private:  
    void   initSecArray(void);
    void   extractFileInfo(void);
    void   drawTofShowerHits(Int_t sec);
    static void saveAs(const Char_t* fileName,const Char_t* type="Pattern");
    static void makePDF(const Char_t* psFile);

  ClassDef(HMdcEfficiency,0)
};

#endif
 hmdcefficiency.h:1
 hmdcefficiency.h:2
 hmdcefficiency.h:3
 hmdcefficiency.h:4
 hmdcefficiency.h:5
 hmdcefficiency.h:6
 hmdcefficiency.h:7
 hmdcefficiency.h:8
 hmdcefficiency.h:9
 hmdcefficiency.h:10
 hmdcefficiency.h:11
 hmdcefficiency.h:12
 hmdcefficiency.h:13
 hmdcefficiency.h:14
 hmdcefficiency.h:15
 hmdcefficiency.h:16
 hmdcefficiency.h:17
 hmdcefficiency.h:18
 hmdcefficiency.h:19
 hmdcefficiency.h:20
 hmdcefficiency.h:21
 hmdcefficiency.h:22
 hmdcefficiency.h:23
 hmdcefficiency.h:24
 hmdcefficiency.h:25
 hmdcefficiency.h:26
 hmdcefficiency.h:27
 hmdcefficiency.h:28
 hmdcefficiency.h:29
 hmdcefficiency.h:30
 hmdcefficiency.h:31
 hmdcefficiency.h:32
 hmdcefficiency.h:33
 hmdcefficiency.h:34
 hmdcefficiency.h:35
 hmdcefficiency.h:36
 hmdcefficiency.h:37
 hmdcefficiency.h:38
 hmdcefficiency.h:39
 hmdcefficiency.h:40
 hmdcefficiency.h:41
 hmdcefficiency.h:42
 hmdcefficiency.h:43
 hmdcefficiency.h:44
 hmdcefficiency.h:45
 hmdcefficiency.h:46
 hmdcefficiency.h:47
 hmdcefficiency.h:48
 hmdcefficiency.h:49
 hmdcefficiency.h:50
 hmdcefficiency.h:51
 hmdcefficiency.h:52
 hmdcefficiency.h:53
 hmdcefficiency.h:54
 hmdcefficiency.h:55
 hmdcefficiency.h:56
 hmdcefficiency.h:57
 hmdcefficiency.h:58
 hmdcefficiency.h:59
 hmdcefficiency.h:60
 hmdcefficiency.h:61
 hmdcefficiency.h:62
 hmdcefficiency.h:63
 hmdcefficiency.h:64
 hmdcefficiency.h:65
 hmdcefficiency.h:66
 hmdcefficiency.h:67
 hmdcefficiency.h:68
 hmdcefficiency.h:69
 hmdcefficiency.h:70
 hmdcefficiency.h:71
 hmdcefficiency.h:72
 hmdcefficiency.h:73
 hmdcefficiency.h:74
 hmdcefficiency.h:75
 hmdcefficiency.h:76
 hmdcefficiency.h:77
 hmdcefficiency.h:78
 hmdcefficiency.h:79
 hmdcefficiency.h:80
 hmdcefficiency.h:81
 hmdcefficiency.h:82
 hmdcefficiency.h:83
 hmdcefficiency.h:84
 hmdcefficiency.h:85
 hmdcefficiency.h:86
 hmdcefficiency.h:87
 hmdcefficiency.h:88
 hmdcefficiency.h:89
 hmdcefficiency.h:90
 hmdcefficiency.h:91
 hmdcefficiency.h:92
 hmdcefficiency.h:93
 hmdcefficiency.h:94
 hmdcefficiency.h:95
 hmdcefficiency.h:96
 hmdcefficiency.h:97
 hmdcefficiency.h:98
 hmdcefficiency.h:99
 hmdcefficiency.h:100
 hmdcefficiency.h:101
 hmdcefficiency.h:102
 hmdcefficiency.h:103
 hmdcefficiency.h:104
 hmdcefficiency.h:105
 hmdcefficiency.h:106
 hmdcefficiency.h:107
 hmdcefficiency.h:108
 hmdcefficiency.h:109
 hmdcefficiency.h:110
 hmdcefficiency.h:111
 hmdcefficiency.h:112
 hmdcefficiency.h:113
 hmdcefficiency.h:114
 hmdcefficiency.h:115
 hmdcefficiency.h:116
 hmdcefficiency.h:117
 hmdcefficiency.h:118
 hmdcefficiency.h:119
 hmdcefficiency.h:120
 hmdcefficiency.h:121
 hmdcefficiency.h:122
 hmdcefficiency.h:123
 hmdcefficiency.h:124
 hmdcefficiency.h:125
 hmdcefficiency.h:126
 hmdcefficiency.h:127
 hmdcefficiency.h:128
 hmdcefficiency.h:129
 hmdcefficiency.h:130
 hmdcefficiency.h:131
 hmdcefficiency.h:132
 hmdcefficiency.h:133
 hmdcefficiency.h:134
 hmdcefficiency.h:135
 hmdcefficiency.h:136
 hmdcefficiency.h:137
 hmdcefficiency.h:138
 hmdcefficiency.h:139
 hmdcefficiency.h:140
 hmdcefficiency.h:141
 hmdcefficiency.h:142
 hmdcefficiency.h:143
 hmdcefficiency.h:144
 hmdcefficiency.h:145
 hmdcefficiency.h:146
 hmdcefficiency.h:147
 hmdcefficiency.h:148
 hmdcefficiency.h:149
 hmdcefficiency.h:150
 hmdcefficiency.h:151
 hmdcefficiency.h:152
 hmdcefficiency.h:153
 hmdcefficiency.h:154
 hmdcefficiency.h:155
 hmdcefficiency.h:156
 hmdcefficiency.h:157
 hmdcefficiency.h:158
 hmdcefficiency.h:159
 hmdcefficiency.h:160
 hmdcefficiency.h:161
 hmdcefficiency.h:162
 hmdcefficiency.h:163
 hmdcefficiency.h:164
 hmdcefficiency.h:165
 hmdcefficiency.h:166
 hmdcefficiency.h:167
 hmdcefficiency.h:168
 hmdcefficiency.h:169
 hmdcefficiency.h:170
 hmdcefficiency.h:171
 hmdcefficiency.h:172
 hmdcefficiency.h:173
 hmdcefficiency.h:174
 hmdcefficiency.h:175
 hmdcefficiency.h:176
 hmdcefficiency.h:177
 hmdcefficiency.h:178
 hmdcefficiency.h:179
 hmdcefficiency.h:180
 hmdcefficiency.h:181
 hmdcefficiency.h:182
 hmdcefficiency.h:183
 hmdcefficiency.h:184
 hmdcefficiency.h:185
 hmdcefficiency.h:186
 hmdcefficiency.h:187
 hmdcefficiency.h:188
 hmdcefficiency.h:189
 hmdcefficiency.h:190
 hmdcefficiency.h:191
 hmdcefficiency.h:192
 hmdcefficiency.h:193
 hmdcefficiency.h:194
 hmdcefficiency.h:195
 hmdcefficiency.h:196
 hmdcefficiency.h:197
 hmdcefficiency.h:198
 hmdcefficiency.h:199
 hmdcefficiency.h:200
 hmdcefficiency.h:201
 hmdcefficiency.h:202
 hmdcefficiency.h:203
 hmdcefficiency.h:204
 hmdcefficiency.h:205
 hmdcefficiency.h:206
 hmdcefficiency.h:207
 hmdcefficiency.h:208
 hmdcefficiency.h:209
 hmdcefficiency.h:210
 hmdcefficiency.h:211
 hmdcefficiency.h:212
 hmdcefficiency.h:213
 hmdcefficiency.h:214
 hmdcefficiency.h:215
 hmdcefficiency.h:216
 hmdcefficiency.h:217
 hmdcefficiency.h:218
 hmdcefficiency.h:219
 hmdcefficiency.h:220
 hmdcefficiency.h:221
 hmdcefficiency.h:222
 hmdcefficiency.h:223
 hmdcefficiency.h:224
 hmdcefficiency.h:225
 hmdcefficiency.h:226
 hmdcefficiency.h:227
 hmdcefficiency.h:228
 hmdcefficiency.h:229
 hmdcefficiency.h:230
 hmdcefficiency.h:231
 hmdcefficiency.h:232
 hmdcefficiency.h:233
 hmdcefficiency.h:234
 hmdcefficiency.h:235
 hmdcefficiency.h:236
 hmdcefficiency.h:237
 hmdcefficiency.h:238
 hmdcefficiency.h:239
 hmdcefficiency.h:240
 hmdcefficiency.h:241
 hmdcefficiency.h:242
 hmdcefficiency.h:243
 hmdcefficiency.h:244
 hmdcefficiency.h:245
 hmdcefficiency.h:246
 hmdcefficiency.h:247
 hmdcefficiency.h:248
 hmdcefficiency.h:249
 hmdcefficiency.h:250
 hmdcefficiency.h:251
 hmdcefficiency.h:252
 hmdcefficiency.h:253
 hmdcefficiency.h:254
 hmdcefficiency.h:255
 hmdcefficiency.h:256
 hmdcefficiency.h:257
 hmdcefficiency.h:258
 hmdcefficiency.h:259
 hmdcefficiency.h:260
 hmdcefficiency.h:261
 hmdcefficiency.h:262
 hmdcefficiency.h:263
 hmdcefficiency.h:264
 hmdcefficiency.h:265
 hmdcefficiency.h:266
 hmdcefficiency.h:267
 hmdcefficiency.h:268
 hmdcefficiency.h:269
 hmdcefficiency.h:270
 hmdcefficiency.h:271
 hmdcefficiency.h:272
 hmdcefficiency.h:273
 hmdcefficiency.h:274
 hmdcefficiency.h:275
 hmdcefficiency.h:276
 hmdcefficiency.h:277
 hmdcefficiency.h:278
 hmdcefficiency.h:279
 hmdcefficiency.h:280
 hmdcefficiency.h:281
 hmdcefficiency.h:282
 hmdcefficiency.h:283
 hmdcefficiency.h:284
 hmdcefficiency.h:285
 hmdcefficiency.h:286
 hmdcefficiency.h:287
 hmdcefficiency.h:288
 hmdcefficiency.h:289
 hmdcefficiency.h:290
 hmdcefficiency.h:291
 hmdcefficiency.h:292
 hmdcefficiency.h:293
 hmdcefficiency.h:294
 hmdcefficiency.h:295
 hmdcefficiency.h:296
 hmdcefficiency.h:297
 hmdcefficiency.h:298
 hmdcefficiency.h:299
 hmdcefficiency.h:300
 hmdcefficiency.h:301
 hmdcefficiency.h:302
 hmdcefficiency.h:303
 hmdcefficiency.h:304
 hmdcefficiency.h:305
 hmdcefficiency.h:306
 hmdcefficiency.h:307
 hmdcefficiency.h:308
 hmdcefficiency.h:309
 hmdcefficiency.h:310
 hmdcefficiency.h:311
 hmdcefficiency.h:312
 hmdcefficiency.h:313
 hmdcefficiency.h:314
 hmdcefficiency.h:315
 hmdcefficiency.h:316
 hmdcefficiency.h:317
 hmdcefficiency.h:318
 hmdcefficiency.h:319
 hmdcefficiency.h:320
 hmdcefficiency.h:321
 hmdcefficiency.h:322
 hmdcefficiency.h:323
 hmdcefficiency.h:324
 hmdcefficiency.h:325
 hmdcefficiency.h:326
 hmdcefficiency.h:327
 hmdcefficiency.h:328
 hmdcefficiency.h:329
 hmdcefficiency.h:330
 hmdcefficiency.h:331
 hmdcefficiency.h:332
 hmdcefficiency.h:333
 hmdcefficiency.h:334
 hmdcefficiency.h:335
 hmdcefficiency.h:336
 hmdcefficiency.h:337
 hmdcefficiency.h:338
 hmdcefficiency.h:339
 hmdcefficiency.h:340
 hmdcefficiency.h:341
 hmdcefficiency.h:342
 hmdcefficiency.h:343
 hmdcefficiency.h:344
 hmdcefficiency.h:345
 hmdcefficiency.h:346
 hmdcefficiency.h:347
 hmdcefficiency.h:348
 hmdcefficiency.h:349
 hmdcefficiency.h:350
 hmdcefficiency.h:351
 hmdcefficiency.h:352
 hmdcefficiency.h:353
 hmdcefficiency.h:354
 hmdcefficiency.h:355
 hmdcefficiency.h:356
 hmdcefficiency.h:357
 hmdcefficiency.h:358
 hmdcefficiency.h:359
 hmdcefficiency.h:360
 hmdcefficiency.h:361
 hmdcefficiency.h:362
 hmdcefficiency.h:363
 hmdcefficiency.h:364
 hmdcefficiency.h:365
 hmdcefficiency.h:366
 hmdcefficiency.h:367
 hmdcefficiency.h:368
 hmdcefficiency.h:369
 hmdcefficiency.h:370
 hmdcefficiency.h:371
 hmdcefficiency.h:372
 hmdcefficiency.h:373
 hmdcefficiency.h:374
 hmdcefficiency.h:375
 hmdcefficiency.h:376
 hmdcefficiency.h:377
 hmdcefficiency.h:378
 hmdcefficiency.h:379
 hmdcefficiency.h:380
 hmdcefficiency.h:381
 hmdcefficiency.h:382
 hmdcefficiency.h:383
 hmdcefficiency.h:384
 hmdcefficiency.h:385
 hmdcefficiency.h:386
 hmdcefficiency.h:387
 hmdcefficiency.h:388
 hmdcefficiency.h:389
 hmdcefficiency.h:390
 hmdcefficiency.h:391
 hmdcefficiency.h:392
 hmdcefficiency.h:393
 hmdcefficiency.h:394
 hmdcefficiency.h:395
 hmdcefficiency.h:396
 hmdcefficiency.h:397
 hmdcefficiency.h:398
 hmdcefficiency.h:399
 hmdcefficiency.h:400
 hmdcefficiency.h:401
 hmdcefficiency.h:402
 hmdcefficiency.h:403
 hmdcefficiency.h:404
 hmdcefficiency.h:405
 hmdcefficiency.h:406
 hmdcefficiency.h:407
 hmdcefficiency.h:408
 hmdcefficiency.h:409
 hmdcefficiency.h:410
 hmdcefficiency.h:411
 hmdcefficiency.h:412
 hmdcefficiency.h:413
 hmdcefficiency.h:414
 hmdcefficiency.h:415
 hmdcefficiency.h:416
 hmdcefficiency.h:417
 hmdcefficiency.h:418
 hmdcefficiency.h:419
 hmdcefficiency.h:420
 hmdcefficiency.h:421
 hmdcefficiency.h:422
 hmdcefficiency.h:423
 hmdcefficiency.h:424
 hmdcefficiency.h:425
 hmdcefficiency.h:426
 hmdcefficiency.h:427
 hmdcefficiency.h:428
 hmdcefficiency.h:429
 hmdcefficiency.h:430
 hmdcefficiency.h:431
 hmdcefficiency.h:432
 hmdcefficiency.h:433
 hmdcefficiency.h:434
 hmdcefficiency.h:435
 hmdcefficiency.h:436
 hmdcefficiency.h:437
 hmdcefficiency.h:438
 hmdcefficiency.h:439
 hmdcefficiency.h:440
 hmdcefficiency.h:441
 hmdcefficiency.h:442
 hmdcefficiency.h:443
 hmdcefficiency.h:444
 hmdcefficiency.h:445
 hmdcefficiency.h:446
 hmdcefficiency.h:447
 hmdcefficiency.h:448
 hmdcefficiency.h:449
 hmdcefficiency.h:450
 hmdcefficiency.h:451
 hmdcefficiency.h:452
 hmdcefficiency.h:453
 hmdcefficiency.h:454
 hmdcefficiency.h:455
 hmdcefficiency.h:456
 hmdcefficiency.h:457
 hmdcefficiency.h:458
 hmdcefficiency.h:459
 hmdcefficiency.h:460
 hmdcefficiency.h:461
 hmdcefficiency.h:462
 hmdcefficiency.h:463
 hmdcefficiency.h:464
 hmdcefficiency.h:465
 hmdcefficiency.h:466
 hmdcefficiency.h:467
 hmdcefficiency.h:468
 hmdcefficiency.h:469
 hmdcefficiency.h:470
 hmdcefficiency.h:471
 hmdcefficiency.h:472
 hmdcefficiency.h:473
 hmdcefficiency.h:474
 hmdcefficiency.h:475
 hmdcefficiency.h:476
 hmdcefficiency.h:477
 hmdcefficiency.h:478
 hmdcefficiency.h:479
 hmdcefficiency.h:480
 hmdcefficiency.h:481