ROOT logo
#ifndef HSHOWERCALPAR_H
#define HSHOWERCALPAR_H
#pragma interface

#include "hparset.h"
#include "hlocation.h"
#include "hobjtable.h"
#include "hshowercalparcell.h"

class HParIo;
class TH2F;

using namespace std;
#include <fstream>

// -----------------------------------------------------------------------------

enum enum_HSCPM_Var
{
    HSCPV_SLOPE = 0,
    HSCPV_OFFSET,
    HSCPV_THRESHOLD,
    HSCPV_GAIN,
    HSCPV_MAX
};

enum enum_HSCPM_Mod
{
    HSCPM_SET = 0,
    HSCPM_ADD,
    HSCPM_MULT
};

// -----------------------------------------------------------------------------

class HShowerCalPar : public HParSet
{
public:
    HShowerCalPar(const Char_t* name="ShowerCalPar",
                  const Char_t* title="Calibration parameters for Shower",
                  const Char_t* context="ShowerStandardCalib");
   ~HShowerCalPar();

    void    setSetup(Int_t nSectors, Int_t nModules,
                        Int_t nRows, Int_t nColumns);
    Int_t   getNSectors()   { return m_nSectors; }
    Int_t   getNModules()   { return m_nModules; }
    Int_t   getNRows()      { return m_nRows;    }
    Int_t   getNColumns()   { return m_nColumns; }


    void    setCellClassName(const Char_t* pszName);
    Char_t* getCellClassName();

    HShowerCalParCell*& getSlot(HLocation &loc);
    HShowerCalParCell*  getObject(HLocation &loc);

    Float_t getOffset(HLocation &loc);
    Float_t getSlope(HLocation &loc);
    Float_t getThreshold(HLocation &loc);
    Float_t getGain(HLocation &loc);

    void    setOffset(HLocation &loc, Float_t fOffset);
    void    setSlope(HLocation &loc, Float_t fSlope);
    void    setThreshold(HLocation &loc, Float_t fThreshold);
    void    setGain(HLocation &loc, Float_t fGain);

    Bool_t init(HParIo* inp,Int_t* set);
    Int_t  write(HParIo*);
    Bool_t readline(const Char_t* buf);
    void   putAsciiHeader(TString& header);
    void   write(fstream& fout);

    Bool_t  defaultInit();
    void    printParams();

    void    setSlopesToValue(Float_t fSlope)
                            { changeValues(HSCPV_SLOPE, HSCPM_SET, fSlope); }
    void    addValueToSlopes(Float_t fAdd)
                            { changeValues(HSCPV_SLOPE, HSCPM_ADD, fAdd); }
    void    multiplySlopesByValue(Float_t fM)
                            { changeValues(HSCPV_SLOPE, HSCPM_MULT, fM); }

    void    setOffsetsToValue(Float_t fOffset)
                            { changeValues(HSCPV_OFFSET, HSCPM_SET, fOffset);}
    void    addValueToOffsets(Float_t fAdd)
                            { changeValues(HSCPV_OFFSET, HSCPM_ADD, fAdd); }
    void    multiplyOffsetsByValue(Float_t fM)
                            { changeValues(HSCPV_OFFSET, HSCPM_MULT, fM); }

    void    setThresholdsToValue(Float_t fThreshold)
                            { changeValues(HSCPV_THRESHOLD, HSCPM_SET,
                                                fThreshold); }
    void    addValueToThresholds(Float_t fAdd)
                            { changeValues(HSCPV_THRESHOLD, HSCPM_ADD, fAdd);}
    void    multiplyThresholdsByValue(Float_t fM)
                            { changeValues(HSCPV_THRESHOLD, HSCPM_MULT, fM); }
    void    setGainsToValue(Float_t fGain)
                            { changeValues(HSCPV_GAIN, HSCPM_SET, fGain); }
    void    addValueToGains(Float_t fAdd)
                            { changeValues(HSCPV_GAIN, HSCPM_ADD, fAdd); }
    void    multiplyGainsByValue(Float_t fM)
                            { changeValues(HSCPV_GAIN, HSCPM_MULT, fM); }

    TH2F*   getOffsetsHist(Int_t iSector, Int_t iModule)
                        { return getHist(iSector, iModule, HSCPV_OFFSET);    }
    TH2F*   getSlopesHist(Int_t iSector, Int_t iModule)
                        { return getHist(iSector, iModule, HSCPV_SLOPE);     }
    TH2F*   getThresholdsHist(Int_t iSector, Int_t iModule)
                        { return getHist(iSector, iModule, HSCPV_THRESHOLD); }
    TH2F*   getGainsHist(Int_t iSector, Int_t iModule)
                        { return getHist(iSector, iModule, HSCPV_GAIN);      }

private:
    void    changeValues(Int_t iVar, Int_t iOpr, Float_t f);

    TH2F*   getHist(Int_t iSector, Int_t iModule, enum_HSCPM_Var enType);

    ClassDef(HShowerCalPar, 2)  //ROOT extension

private:
    Int_t   m_nSectors;         //sizes of calibration structure
    Int_t   m_nModules;
    Int_t   m_nRows;
    Int_t   m_nColumns;

    Char_t  m_szClassName[40];  //name of class used for keeping data for
                                //calibration of one pad

    HObjTable m_ParamsTable;    //structure which contains all object
                                //for calibration of one pad
    HLocation m_loc;            //! location in m_ParamsTable

};

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