ROOT logo
//*-- AUTHOR : G. Kornakov
//*-- created : 29/04/2013

//_HADES_CLASS_DESCRIPTION
////////////////////////////////////////////////////////////////////////////
// HRpcChargeOffsetPar
//
// Container class for RPC charge offset correction
// used by HRpcCalibrater
//
// (Condition Style)
//
// Each time slot is defined by the starting RunID and a
// array of 64 x 6 sectors parameters for each voltage
// regulator.
//
////////////////////////////////////////////////////////////////////////////


#include "hrpcchargeoffsetpar.h"
#include "hparamlist.h"
#include "hpario.h"
#include "hdetpario.h"
#include "hades.h"
#include "hdatasource.h"
#include "hrun.h"
#include "hruntimedb.h"

ClassImp(HRpcChargeOffsetPar)

HRpcChargeOffsetPar::HRpcChargeOffsetPar(const Char_t* name,const Char_t* title,
                       const Char_t* context)
    : HParCond(name,title,context)
{

    fChargeCorrPar = TArrayF(64*6);// The size is 1 time slot. Initilised to 0
    fRunIDs        = TArrayI(2);   // The First and Last run ID
    fCurrent       = 0;
    fNRuns         = 1;

    clear();
}
HRpcChargeOffsetPar::~HRpcChargeOffsetPar()
{
  // destructor
}
void HRpcChargeOffsetPar::clear()
{

    fChargeCorrPar.Reset(0.);
    fRunIDs.Reset(-1);
    fNRuns = 1;
    fCurrent = 0;
    status = kFALSE;
    resetInputVersions();
    changed = kFALSE;

}

void HRpcChargeOffsetPar::addNewSet(Float_t* pars, Int_t startRunID)
{
    //adds a new time slot to an already created par
    fChargeCorrPar.Set((fNRuns+1)*6*64);
    fRunIDs.Set((fNRuns+1));
    for(Int_t i = 0; i < 64*6 ; i++) fChargeCorrPar.AddAt(pars[i], fNRuns*64*6+i);
    fRunIDs.AddAt(startRunID,fNRuns);
    fNRuns++;
    fCurrent++;

}

void HRpcChargeOffsetPar::addFirstSet(Float_t* pars, Int_t startRunID)
{
    //adds a new time slot to an already created par
    for(Int_t i = 0; i < 64*6 ; i++) fChargeCorrPar.AddAt(pars[i], i);
    fRunIDs.AddAt(startRunID,0);
    fCurrent++;

}

void HRpcChargeOffsetPar::addLastRunId(Int_t runId)
{
    //adds the last runid for which parameters were obtained!
    fRunIDs.Set(fNRuns+1);
    fRunIDs.AddAt(runId,fNRuns);
}

void HRpcChargeOffsetPar::addLastSet(Float_t* pars, Int_t startRunID, Int_t endRunID)
{
    //adds a new time slot to an already created par and ends the contparam if it is the last!
    fChargeCorrPar.Set((fNRuns+1)*6*64);
    fRunIDs.Set((fNRuns+2));
    for(Int_t i = 0; i < 64*6 ; i++) fChargeCorrPar.AddAt(pars[i], fNRuns*64*6+i);
    fRunIDs.AddAt(startRunID,fNRuns);
    fRunIDs.AddAt(endRunID,fNRuns+1);
    fNRuns++;
    fCurrent++;

}


void HRpcChargeOffsetPar::putParams(HParamList* l)
{
    // Puts all params of HRpcTimePosPar to the parameter list of
    // HParamList (which ist used by the io);
    if (!l) return;
    l->add("fNRuns", fNRuns);
    l->add("fRunIDs", fRunIDs);
    l->add("fChargeCorrPar", fChargeCorrPar);

}
Bool_t HRpcChargeOffsetPar::getParams(HParamList* l)
{
    if (!l) return kFALSE;

    if(!( l->fill("fNRuns", &fNRuns)))  return kFALSE;
    
    //fChargeCorrPar.Set(fNRuns * 64*6);
    //fRunIDs.Set( fNRuns + 1 );

    if(!( l->fill("fRunIDs", &fRunIDs))) return kFALSE;
    if(!( l->fill("fChargeCorrPar", &fChargeCorrPar))) return kFALSE;

    return kTRUE;
}

Bool_t HRpcChargeOffsetPar::init(HParIo* inp,Int_t* set) {
    //First check the version! if a new version is present initialise it!
    Bool_t rc=kFALSE;
    HDetParIo* input = inp->getDetParIo("HCondParIo");
    if (input) rc = input->init(this,set);

    //Int_t runId = gHades->getDataSource()->getCurrentRunId();
    HRun* run =   gHades->getRuntimeDb()->getCurrentRun();
    Int_t runId = run->getRunId();

    //otherwise, find the correct run slot for this file!
    if(runId >= this->getFirstRunID() && runId <= this->getLastRunID()  ) {
	fCurrent = this->getSlot(runId);
	return rc;
    } else if (runId < this->getFirstRunID()) {
	fCurrent = fNRuns-1; //The last slot contains only 0 -> NO CORRECTION IN THIS CASE!
	rc = kTRUE;
        return rc;
    }

    return rc;

}

/*Bool_t HRpcChargeOffsetPar::init(HParIo* inp) {
    //First check the version! if a new version is present initialise it!

    cout<<"or I am here!"<<endl;
    Bool_t rc=kFALSE;
    //HDetParIo* input=inp->getDetParIo("HCondParIo");
    //if (input) rc=input->init(this);

    Int_t runId = gHades->getDataSource()->getCurrentRunId();

    //if(runId < this->getNextRunID() || this->getNextRunID()==0 ) return rc; //the runID belongs to the same time slot or it is void! //check the version!
    //if(runId >= this->getNextRunID() && runId<=getLastRunID()  ) {
    //    fCurrent++;      //the RunID belongs to the next time slot.
	//The case were other time slot is used
	//should be contempled. Not just current++!!
    //    return rc;
    //}
    //otherwise, find the correct run slot for this file!
    if(runId >= this->getFirstRunID() && runId <= this->getLastRunID()  ) {
	fCurrent = this->getSlot(runId);
	return rc;
    }

    return rc;

}
*/

Int_t  HRpcChargeOffsetPar::getSlot(Int_t runId)
{
    //find the correct parameters slot
    Int_t slot = -1;
    for(Int_t i=0; i<fNRuns; i++) {
	if( fRunIDs[i] <= runId && fRunIDs[i+1] > runId  ) {slot = i; break;}
    }
    return slot;
}

 hrpcchargeoffsetpar.cc:1
 hrpcchargeoffsetpar.cc:2
 hrpcchargeoffsetpar.cc:3
 hrpcchargeoffsetpar.cc:4
 hrpcchargeoffsetpar.cc:5
 hrpcchargeoffsetpar.cc:6
 hrpcchargeoffsetpar.cc:7
 hrpcchargeoffsetpar.cc:8
 hrpcchargeoffsetpar.cc:9
 hrpcchargeoffsetpar.cc:10
 hrpcchargeoffsetpar.cc:11
 hrpcchargeoffsetpar.cc:12
 hrpcchargeoffsetpar.cc:13
 hrpcchargeoffsetpar.cc:14
 hrpcchargeoffsetpar.cc:15
 hrpcchargeoffsetpar.cc:16
 hrpcchargeoffsetpar.cc:17
 hrpcchargeoffsetpar.cc:18
 hrpcchargeoffsetpar.cc:19
 hrpcchargeoffsetpar.cc:20
 hrpcchargeoffsetpar.cc:21
 hrpcchargeoffsetpar.cc:22
 hrpcchargeoffsetpar.cc:23
 hrpcchargeoffsetpar.cc:24
 hrpcchargeoffsetpar.cc:25
 hrpcchargeoffsetpar.cc:26
 hrpcchargeoffsetpar.cc:27
 hrpcchargeoffsetpar.cc:28
 hrpcchargeoffsetpar.cc:29
 hrpcchargeoffsetpar.cc:30
 hrpcchargeoffsetpar.cc:31
 hrpcchargeoffsetpar.cc:32
 hrpcchargeoffsetpar.cc:33
 hrpcchargeoffsetpar.cc:34
 hrpcchargeoffsetpar.cc:35
 hrpcchargeoffsetpar.cc:36
 hrpcchargeoffsetpar.cc:37
 hrpcchargeoffsetpar.cc:38
 hrpcchargeoffsetpar.cc:39
 hrpcchargeoffsetpar.cc:40
 hrpcchargeoffsetpar.cc:41
 hrpcchargeoffsetpar.cc:42
 hrpcchargeoffsetpar.cc:43
 hrpcchargeoffsetpar.cc:44
 hrpcchargeoffsetpar.cc:45
 hrpcchargeoffsetpar.cc:46
 hrpcchargeoffsetpar.cc:47
 hrpcchargeoffsetpar.cc:48
 hrpcchargeoffsetpar.cc:49
 hrpcchargeoffsetpar.cc:50
 hrpcchargeoffsetpar.cc:51
 hrpcchargeoffsetpar.cc:52
 hrpcchargeoffsetpar.cc:53
 hrpcchargeoffsetpar.cc:54
 hrpcchargeoffsetpar.cc:55
 hrpcchargeoffsetpar.cc:56
 hrpcchargeoffsetpar.cc:57
 hrpcchargeoffsetpar.cc:58
 hrpcchargeoffsetpar.cc:59
 hrpcchargeoffsetpar.cc:60
 hrpcchargeoffsetpar.cc:61
 hrpcchargeoffsetpar.cc:62
 hrpcchargeoffsetpar.cc:63
 hrpcchargeoffsetpar.cc:64
 hrpcchargeoffsetpar.cc:65
 hrpcchargeoffsetpar.cc:66
 hrpcchargeoffsetpar.cc:67
 hrpcchargeoffsetpar.cc:68
 hrpcchargeoffsetpar.cc:69
 hrpcchargeoffsetpar.cc:70
 hrpcchargeoffsetpar.cc:71
 hrpcchargeoffsetpar.cc:72
 hrpcchargeoffsetpar.cc:73
 hrpcchargeoffsetpar.cc:74
 hrpcchargeoffsetpar.cc:75
 hrpcchargeoffsetpar.cc:76
 hrpcchargeoffsetpar.cc:77
 hrpcchargeoffsetpar.cc:78
 hrpcchargeoffsetpar.cc:79
 hrpcchargeoffsetpar.cc:80
 hrpcchargeoffsetpar.cc:81
 hrpcchargeoffsetpar.cc:82
 hrpcchargeoffsetpar.cc:83
 hrpcchargeoffsetpar.cc:84
 hrpcchargeoffsetpar.cc:85
 hrpcchargeoffsetpar.cc:86
 hrpcchargeoffsetpar.cc:87
 hrpcchargeoffsetpar.cc:88
 hrpcchargeoffsetpar.cc:89
 hrpcchargeoffsetpar.cc:90
 hrpcchargeoffsetpar.cc:91
 hrpcchargeoffsetpar.cc:92
 hrpcchargeoffsetpar.cc:93
 hrpcchargeoffsetpar.cc:94
 hrpcchargeoffsetpar.cc:95
 hrpcchargeoffsetpar.cc:96
 hrpcchargeoffsetpar.cc:97
 hrpcchargeoffsetpar.cc:98
 hrpcchargeoffsetpar.cc:99
 hrpcchargeoffsetpar.cc:100
 hrpcchargeoffsetpar.cc:101
 hrpcchargeoffsetpar.cc:102
 hrpcchargeoffsetpar.cc:103
 hrpcchargeoffsetpar.cc:104
 hrpcchargeoffsetpar.cc:105
 hrpcchargeoffsetpar.cc:106
 hrpcchargeoffsetpar.cc:107
 hrpcchargeoffsetpar.cc:108
 hrpcchargeoffsetpar.cc:109
 hrpcchargeoffsetpar.cc:110
 hrpcchargeoffsetpar.cc:111
 hrpcchargeoffsetpar.cc:112
 hrpcchargeoffsetpar.cc:113
 hrpcchargeoffsetpar.cc:114
 hrpcchargeoffsetpar.cc:115
 hrpcchargeoffsetpar.cc:116
 hrpcchargeoffsetpar.cc:117
 hrpcchargeoffsetpar.cc:118
 hrpcchargeoffsetpar.cc:119
 hrpcchargeoffsetpar.cc:120
 hrpcchargeoffsetpar.cc:121
 hrpcchargeoffsetpar.cc:122
 hrpcchargeoffsetpar.cc:123
 hrpcchargeoffsetpar.cc:124
 hrpcchargeoffsetpar.cc:125
 hrpcchargeoffsetpar.cc:126
 hrpcchargeoffsetpar.cc:127
 hrpcchargeoffsetpar.cc:128
 hrpcchargeoffsetpar.cc:129
 hrpcchargeoffsetpar.cc:130
 hrpcchargeoffsetpar.cc:131
 hrpcchargeoffsetpar.cc:132
 hrpcchargeoffsetpar.cc:133
 hrpcchargeoffsetpar.cc:134
 hrpcchargeoffsetpar.cc:135
 hrpcchargeoffsetpar.cc:136
 hrpcchargeoffsetpar.cc:137
 hrpcchargeoffsetpar.cc:138
 hrpcchargeoffsetpar.cc:139
 hrpcchargeoffsetpar.cc:140
 hrpcchargeoffsetpar.cc:141
 hrpcchargeoffsetpar.cc:142
 hrpcchargeoffsetpar.cc:143
 hrpcchargeoffsetpar.cc:144
 hrpcchargeoffsetpar.cc:145
 hrpcchargeoffsetpar.cc:146
 hrpcchargeoffsetpar.cc:147
 hrpcchargeoffsetpar.cc:148
 hrpcchargeoffsetpar.cc:149
 hrpcchargeoffsetpar.cc:150
 hrpcchargeoffsetpar.cc:151
 hrpcchargeoffsetpar.cc:152
 hrpcchargeoffsetpar.cc:153
 hrpcchargeoffsetpar.cc:154
 hrpcchargeoffsetpar.cc:155
 hrpcchargeoffsetpar.cc:156
 hrpcchargeoffsetpar.cc:157
 hrpcchargeoffsetpar.cc:158
 hrpcchargeoffsetpar.cc:159
 hrpcchargeoffsetpar.cc:160
 hrpcchargeoffsetpar.cc:161
 hrpcchargeoffsetpar.cc:162
 hrpcchargeoffsetpar.cc:163
 hrpcchargeoffsetpar.cc:164
 hrpcchargeoffsetpar.cc:165
 hrpcchargeoffsetpar.cc:166
 hrpcchargeoffsetpar.cc:167
 hrpcchargeoffsetpar.cc:168
 hrpcchargeoffsetpar.cc:169
 hrpcchargeoffsetpar.cc:170
 hrpcchargeoffsetpar.cc:171
 hrpcchargeoffsetpar.cc:172
 hrpcchargeoffsetpar.cc:173
 hrpcchargeoffsetpar.cc:174
 hrpcchargeoffsetpar.cc:175
 hrpcchargeoffsetpar.cc:176
 hrpcchargeoffsetpar.cc:177
 hrpcchargeoffsetpar.cc:178
 hrpcchargeoffsetpar.cc:179
 hrpcchargeoffsetpar.cc:180
 hrpcchargeoffsetpar.cc:181
 hrpcchargeoffsetpar.cc:182
 hrpcchargeoffsetpar.cc:183
 hrpcchargeoffsetpar.cc:184
 hrpcchargeoffsetpar.cc:185
 hrpcchargeoffsetpar.cc:186
 hrpcchargeoffsetpar.cc:187
 hrpcchargeoffsetpar.cc:188