ROOT logo
#include "TROOT.h"
#include "hshowercalparcalculator.h"

#include "hruntimedb.h"
#include "hevent.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hshowerdetector.h"
#include "hcategory.h"
#include "hmatrixcatiter.h"
#include "hlocation.h"
#include "hshowerraw.h"
#include "hshowercalpar.h"
#include "hshowerhist.h"
#include "hdebug.h"
#include "hades.h"
#include "hiterator.h"
#include "showerdef.h"

#include "hshowerhistcell.h"

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

ClassImp(HShowerCalParCalculator)

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

HShowerCalParCalculator::HShowerCalParCalculator(const Text_t *name,const Text_t *title,
                          Int_t iMethod, Float_t fParam1, Float_t fParam2)
                          : HReconstructor(name,title)
{
    clearAtBegin(iMethod, fParam1, fParam2);
}

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

HShowerCalParCalculator::HShowerCalParCalculator(Int_t iMethod,
                                        Float_t fParam1, Float_t fParam2)
{
    clearAtBegin(iMethod, fParam1, fParam2);
}

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

HShowerCalParCalculator::HShowerCalParCalculator(const Text_t *name,const Text_t *title,
                          const Text_t *nameOfMethod, Float_t fParam1,
                          Float_t fParam2)
                          : HReconstructor(name,title)
{
    clearAtBegin(0, fParam1, fParam2);
    setMethod(nameOfMethod);
}

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

HShowerCalParCalculator::~HShowerCalParCalculator(void)
{
    if(fIter)
        delete fIter;
}

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

void HShowerCalParCalculator::clearAtBegin(Int_t iMethod,
                                        Float_t fParam1, Float_t fParam2)
{
    m_pCalPar     = NULL;
    m_pCalParHist = NULL;
    fIter         = NULL;
    m_loc.set(4, 0, 0, 0, 0);
    m_zeroLoc.set(0);

    m_fParam1 = fParam1;
    m_fParam2 = fParam2;

    setMethod(iMethod);
}

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

void HShowerCalParCalculator::setMethod(Int_t iMethod)
{
    if(((m_iMethod = iMethod) < 0) || (m_iMethod >= HSHC_MAX))
    {
        gROOT->Error("HShowerCalParCalculator", "No such method: %d\n",
                                            iMethod);
    }
}

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

void HShowerCalParCalculator::setMethod(const Char_t* pName)
{
Int_t i;

    for(i = 0; i < HSHC_MAX; i++)
    {
        if((g_cpstr_HSHC_Methods[i] == NULL)
            || (strcasecmp(pName, g_cpstr_HSHC_Methods[i]) != 0))
        {
            continue;
        }

        setMethod(i);

        return;
    }

    gROOT->Error("HShowerCalParCalculator", "Unknown method: %s\n", pName);
}

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

const Char_t* HShowerCalParCalculator::getMethodName(void)
{
    return g_cpstr_HSHC_Methods[m_iMethod];
}

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

void HShowerCalParCalculator::initCalPar()
{
    HShowerDetector *pShowerDet = (HShowerDetector*)gHades->getSetup()
                                                  ->getDetector("Shower");
    HRuntimeDb* rtdb=gHades->getRuntimeDb();

    m_pCalPar = rtdb->getContainer("ShowerCalPar");
    if (m_pCalPar) {
      ((HShowerCalPar*)m_pCalPar)->
             setSetup(pShowerDet->getShowerSectors(),
                      pShowerDet->getShowerModules(),
                      pShowerDet->getRows(),
                      pShowerDet->getColumns());
    }

    m_pCalParHist = rtdb->getContainer("ShowerHist");
    if (m_pCalParHist) {
      ((HShowerHist*)m_pCalParHist)->
             setSetup(pShowerDet->getShowerSectors(),
                      pShowerDet->getShowerModules(),
                      pShowerDet->getRows(),
                      pShowerDet->getColumns());
    }
}

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

Bool_t HShowerCalParCalculator::init()
{
    printf("initialization of shower calpar calculator\n");
    m_nExecutes = 0;
    HShowerDetector *pShowerDet = (HShowerDetector*)gHades->getSetup()
                                                  ->getDetector("Shower");

    m_pRawCat=gHades->getCurrentEvent()->getCategory(catShowerRaw);
    if (!m_pRawCat) {
      m_pRawCat=pShowerDet->buildCategory(catShowerRaw);

      if (!m_pRawCat) return kFALSE;
      else gHades->getCurrentEvent()
                         ->addCategory(catShowerRaw, m_pRawCat, "Shower");
    }

    initCalPar();
    fIter = (HIterator*)m_pRawCat->MakeIterator("native");

    return kTRUE;
}

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

Bool_t HShowerCalParCalculator::reinit()
{
/*
    HRuntimeDb* rtdb=gHades->getRuntimeDb();

    HShowerCalAsic *pCalAsic = (HShowerCalAsic*)rtdb->
                                               getContainer("ShowerCalAsic");

    HShowerLookupAsic *pLookupAsic = (HShowerLookupAsic*)rtdb->
                                               getContainer("ShowerLookupAsic");


    if (pCalAsic && pLookupAsic) {
       ((HShowerCalPar*)getCalPar())->setAsicTables(pLookupAsic, pCalAsic);
    }
*/

    return kTRUE;
}

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

void HShowerCalParCalculator::setCalPar(HParSet *pCalPar)
{
    if (m_pCalPar)
        delete m_pCalPar;

    m_pCalPar = pCalPar;
}

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

void HShowerCalParCalculator::setCalParHist(HParSet *pCalParHist)
{
    if (m_pCalParHist)
        delete m_pCalParHist;

    m_pCalParHist = pCalParHist;
}

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

Bool_t HShowerCalParCalculator::finalize(void)
{
    ((HShowerHist*)getCalParHist())
                ->calculate(m_nExecutes, (HShowerCalPar*)getCalPar(),
                        m_iMethod, m_fParam1, m_fParam2);

    m_pCalPar->setChanged();

    if(m_pCalPar->getInputVersion(1) == -1)
    {
        if(m_pCalPar->getInputVersion(2) == -1)
        {
            m_pCalPar->setInputVersion(1, 1);
            printf("No version. Set 1 to 1 -> %d",
                        m_pCalPar->getInputVersion(1));
        }
        else
        {
            printf("Change Input Version 2: %d ->",
                        m_pCalPar->getInputVersion(2));
            m_pCalPar->setInputVersion(m_pCalPar->getInputVersion(2) + 1, 2);
            printf(" %d\n", m_pCalPar->getInputVersion(2));
        }
    }
    else
    {
        printf("Change Input Version 1: %d ->", m_pCalPar->getInputVersion(1));
        m_pCalPar->setInputVersion(m_pCalPar->getInputVersion(1) + 1, 1);
        printf(" %d\n", m_pCalPar->getInputVersion(1));
    }

    return kTRUE;
}

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

Int_t HShowerCalParCalculator::execute()
{
HShowerRaw *pRaw;

    fIter->Reset();
    while((pRaw = (HShowerRaw*)fIter->Next()))
    {
        m_loc[0]=pRaw->getSector();
        m_loc[1]=pRaw->getModule();
        m_loc[2]=pRaw->getRow();
        m_loc[3]=pRaw->getCol();
        ((HShowerHist*)getCalParHist())->fill(m_loc, (Int_t)pRaw->getCharge());
    }

    m_nExecutes++;

    return 0;
}
 hshowercalparcalculator.cc:1
 hshowercalparcalculator.cc:2
 hshowercalparcalculator.cc:3
 hshowercalparcalculator.cc:4
 hshowercalparcalculator.cc:5
 hshowercalparcalculator.cc:6
 hshowercalparcalculator.cc:7
 hshowercalparcalculator.cc:8
 hshowercalparcalculator.cc:9
 hshowercalparcalculator.cc:10
 hshowercalparcalculator.cc:11
 hshowercalparcalculator.cc:12
 hshowercalparcalculator.cc:13
 hshowercalparcalculator.cc:14
 hshowercalparcalculator.cc:15
 hshowercalparcalculator.cc:16
 hshowercalparcalculator.cc:17
 hshowercalparcalculator.cc:18
 hshowercalparcalculator.cc:19
 hshowercalparcalculator.cc:20
 hshowercalparcalculator.cc:21
 hshowercalparcalculator.cc:22
 hshowercalparcalculator.cc:23
 hshowercalparcalculator.cc:24
 hshowercalparcalculator.cc:25
 hshowercalparcalculator.cc:26
 hshowercalparcalculator.cc:27
 hshowercalparcalculator.cc:28
 hshowercalparcalculator.cc:29
 hshowercalparcalculator.cc:30
 hshowercalparcalculator.cc:31
 hshowercalparcalculator.cc:32
 hshowercalparcalculator.cc:33
 hshowercalparcalculator.cc:34
 hshowercalparcalculator.cc:35
 hshowercalparcalculator.cc:36
 hshowercalparcalculator.cc:37
 hshowercalparcalculator.cc:38
 hshowercalparcalculator.cc:39
 hshowercalparcalculator.cc:40
 hshowercalparcalculator.cc:41
 hshowercalparcalculator.cc:42
 hshowercalparcalculator.cc:43
 hshowercalparcalculator.cc:44
 hshowercalparcalculator.cc:45
 hshowercalparcalculator.cc:46
 hshowercalparcalculator.cc:47
 hshowercalparcalculator.cc:48
 hshowercalparcalculator.cc:49
 hshowercalparcalculator.cc:50
 hshowercalparcalculator.cc:51
 hshowercalparcalculator.cc:52
 hshowercalparcalculator.cc:53
 hshowercalparcalculator.cc:54
 hshowercalparcalculator.cc:55
 hshowercalparcalculator.cc:56
 hshowercalparcalculator.cc:57
 hshowercalparcalculator.cc:58
 hshowercalparcalculator.cc:59
 hshowercalparcalculator.cc:60
 hshowercalparcalculator.cc:61
 hshowercalparcalculator.cc:62
 hshowercalparcalculator.cc:63
 hshowercalparcalculator.cc:64
 hshowercalparcalculator.cc:65
 hshowercalparcalculator.cc:66
 hshowercalparcalculator.cc:67
 hshowercalparcalculator.cc:68
 hshowercalparcalculator.cc:69
 hshowercalparcalculator.cc:70
 hshowercalparcalculator.cc:71
 hshowercalparcalculator.cc:72
 hshowercalparcalculator.cc:73
 hshowercalparcalculator.cc:74
 hshowercalparcalculator.cc:75
 hshowercalparcalculator.cc:76
 hshowercalparcalculator.cc:77
 hshowercalparcalculator.cc:78
 hshowercalparcalculator.cc:79
 hshowercalparcalculator.cc:80
 hshowercalparcalculator.cc:81
 hshowercalparcalculator.cc:82
 hshowercalparcalculator.cc:83
 hshowercalparcalculator.cc:84
 hshowercalparcalculator.cc:85
 hshowercalparcalculator.cc:86
 hshowercalparcalculator.cc:87
 hshowercalparcalculator.cc:88
 hshowercalparcalculator.cc:89
 hshowercalparcalculator.cc:90
 hshowercalparcalculator.cc:91
 hshowercalparcalculator.cc:92
 hshowercalparcalculator.cc:93
 hshowercalparcalculator.cc:94
 hshowercalparcalculator.cc:95
 hshowercalparcalculator.cc:96
 hshowercalparcalculator.cc:97
 hshowercalparcalculator.cc:98
 hshowercalparcalculator.cc:99
 hshowercalparcalculator.cc:100
 hshowercalparcalculator.cc:101
 hshowercalparcalculator.cc:102
 hshowercalparcalculator.cc:103
 hshowercalparcalculator.cc:104
 hshowercalparcalculator.cc:105
 hshowercalparcalculator.cc:106
 hshowercalparcalculator.cc:107
 hshowercalparcalculator.cc:108
 hshowercalparcalculator.cc:109
 hshowercalparcalculator.cc:110
 hshowercalparcalculator.cc:111
 hshowercalparcalculator.cc:112
 hshowercalparcalculator.cc:113
 hshowercalparcalculator.cc:114
 hshowercalparcalculator.cc:115
 hshowercalparcalculator.cc:116
 hshowercalparcalculator.cc:117
 hshowercalparcalculator.cc:118
 hshowercalparcalculator.cc:119
 hshowercalparcalculator.cc:120
 hshowercalparcalculator.cc:121
 hshowercalparcalculator.cc:122
 hshowercalparcalculator.cc:123
 hshowercalparcalculator.cc:124
 hshowercalparcalculator.cc:125
 hshowercalparcalculator.cc:126
 hshowercalparcalculator.cc:127
 hshowercalparcalculator.cc:128
 hshowercalparcalculator.cc:129
 hshowercalparcalculator.cc:130
 hshowercalparcalculator.cc:131
 hshowercalparcalculator.cc:132
 hshowercalparcalculator.cc:133
 hshowercalparcalculator.cc:134
 hshowercalparcalculator.cc:135
 hshowercalparcalculator.cc:136
 hshowercalparcalculator.cc:137
 hshowercalparcalculator.cc:138
 hshowercalparcalculator.cc:139
 hshowercalparcalculator.cc:140
 hshowercalparcalculator.cc:141
 hshowercalparcalculator.cc:142
 hshowercalparcalculator.cc:143
 hshowercalparcalculator.cc:144
 hshowercalparcalculator.cc:145
 hshowercalparcalculator.cc:146
 hshowercalparcalculator.cc:147
 hshowercalparcalculator.cc:148
 hshowercalparcalculator.cc:149
 hshowercalparcalculator.cc:150
 hshowercalparcalculator.cc:151
 hshowercalparcalculator.cc:152
 hshowercalparcalculator.cc:153
 hshowercalparcalculator.cc:154
 hshowercalparcalculator.cc:155
 hshowercalparcalculator.cc:156
 hshowercalparcalculator.cc:157
 hshowercalparcalculator.cc:158
 hshowercalparcalculator.cc:159
 hshowercalparcalculator.cc:160
 hshowercalparcalculator.cc:161
 hshowercalparcalculator.cc:162
 hshowercalparcalculator.cc:163
 hshowercalparcalculator.cc:164
 hshowercalparcalculator.cc:165
 hshowercalparcalculator.cc:166
 hshowercalparcalculator.cc:167
 hshowercalparcalculator.cc:168
 hshowercalparcalculator.cc:169
 hshowercalparcalculator.cc:170
 hshowercalparcalculator.cc:171
 hshowercalparcalculator.cc:172
 hshowercalparcalculator.cc:173
 hshowercalparcalculator.cc:174
 hshowercalparcalculator.cc:175
 hshowercalparcalculator.cc:176
 hshowercalparcalculator.cc:177
 hshowercalparcalculator.cc:178
 hshowercalparcalculator.cc:179
 hshowercalparcalculator.cc:180
 hshowercalparcalculator.cc:181
 hshowercalparcalculator.cc:182
 hshowercalparcalculator.cc:183
 hshowercalparcalculator.cc:184
 hshowercalparcalculator.cc:185
 hshowercalparcalculator.cc:186
 hshowercalparcalculator.cc:187
 hshowercalparcalculator.cc:188
 hshowercalparcalculator.cc:189
 hshowercalparcalculator.cc:190
 hshowercalparcalculator.cc:191
 hshowercalparcalculator.cc:192
 hshowercalparcalculator.cc:193
 hshowercalparcalculator.cc:194
 hshowercalparcalculator.cc:195
 hshowercalparcalculator.cc:196
 hshowercalparcalculator.cc:197
 hshowercalparcalculator.cc:198
 hshowercalparcalculator.cc:199
 hshowercalparcalculator.cc:200
 hshowercalparcalculator.cc:201
 hshowercalparcalculator.cc:202
 hshowercalparcalculator.cc:203
 hshowercalparcalculator.cc:204
 hshowercalparcalculator.cc:205
 hshowercalparcalculator.cc:206
 hshowercalparcalculator.cc:207
 hshowercalparcalculator.cc:208
 hshowercalparcalculator.cc:209
 hshowercalparcalculator.cc:210
 hshowercalparcalculator.cc:211
 hshowercalparcalculator.cc:212
 hshowercalparcalculator.cc:213
 hshowercalparcalculator.cc:214
 hshowercalparcalculator.cc:215
 hshowercalparcalculator.cc:216
 hshowercalparcalculator.cc:217
 hshowercalparcalculator.cc:218
 hshowercalparcalculator.cc:219
 hshowercalparcalculator.cc:220
 hshowercalparcalculator.cc:221
 hshowercalparcalculator.cc:222
 hshowercalparcalculator.cc:223
 hshowercalparcalculator.cc:224
 hshowercalparcalculator.cc:225
 hshowercalparcalculator.cc:226
 hshowercalparcalculator.cc:227
 hshowercalparcalculator.cc:228
 hshowercalparcalculator.cc:229
 hshowercalparcalculator.cc:230
 hshowercalparcalculator.cc:231
 hshowercalparcalculator.cc:232
 hshowercalparcalculator.cc:233
 hshowercalparcalculator.cc:234
 hshowercalparcalculator.cc:235
 hshowercalparcalculator.cc:236
 hshowercalparcalculator.cc:237
 hshowercalparcalculator.cc:238
 hshowercalparcalculator.cc:239
 hshowercalparcalculator.cc:240
 hshowercalparcalculator.cc:241
 hshowercalparcalculator.cc:242
 hshowercalparcalculator.cc:243
 hshowercalparcalculator.cc:244
 hshowercalparcalculator.cc:245
 hshowercalparcalculator.cc:246
 hshowercalparcalculator.cc:247
 hshowercalparcalculator.cc:248
 hshowercalparcalculator.cc:249
 hshowercalparcalculator.cc:250
 hshowercalparcalculator.cc:251
 hshowercalparcalculator.cc:252
 hshowercalparcalculator.cc:253
 hshowercalparcalculator.cc:254
 hshowercalparcalculator.cc:255
 hshowercalparcalculator.cc:256
 hshowercalparcalculator.cc:257
 hshowercalparcalculator.cc:258
 hshowercalparcalculator.cc:259
 hshowercalparcalculator.cc:260
 hshowercalparcalculator.cc:261
 hshowercalparcalculator.cc:262
 hshowercalparcalculator.cc:263
 hshowercalparcalculator.cc:264
 hshowercalparcalculator.cc:265
 hshowercalparcalculator.cc:266
 hshowercalparcalculator.cc:267