ROOT logo
//*-- AUTHOR : Olga Pechenova
//*-- Modified : 2007 by Olga Pechenova
//
//_HADES_CLASS_DESCRIPTION 
/////////////////////////////////////////////////////////////////////////
//
//  HMdcLayerCorrPar
//
//  Container class keep parameters for distance correction (between 2 parts of layer)
//
//
//
//  Alternative method of getting parameters (without usage of runTimeDb):
//  setDefaultPar();
//
/////////////////////////////////////////////////////////////////////////


#include "TString.h"
#include "hmdclayercorrpar.h"
#include "hpario.h"
#include "hdetpario.h"
#include "hparamlist.h"

#include <stdlib.h> 

ClassImp(HMdcLayerCorrPar)

HMdcLayerCorrPar::HMdcLayerCorrPar(const Char_t* name,const Char_t* title,
                const Char_t* context)
           : HParCond(name,title,context) {
  // constructor
  nMdc = 4;
  nLay = 6;
  numCorrLayers = 72;
  for(Int_t s=0;s<numCorrLayers;s++) {
    firstWire[s]      = 777;
    shift[s]          = 0.f;
    wireOrientCorr[s] = 0.f;
  }    
}

Bool_t HMdcLayerCorrPar::init(HParIo* inp,Int_t* set) {
 // initializes the container from an input
  HDetParIo* input=inp->getDetParIo("HCondParIo");
  if (input) return (input->init(this,set));
  return kFALSE;
}

void HMdcLayerCorrPar::clear(void) {
  for(Int_t s=0;s<numCorrLayers;s++) {
    firstWire[s]      = 777;
    shift[s]          = 0.f;
    wireOrientCorr[s] = 0.f;
  }    
  status=kFALSE;
  resetInputVersions();
  changed=kFALSE;
}

Int_t HMdcLayerCorrPar::write(HParIo* output) {
  // writes the container to an output
  HDetParIo* out=output->getDetParIo("HCondParIo");
  if (out) return out->write(this);
  return 0;
}

void HMdcLayerCorrPar::putParams(HParamList* l) {
  // puts all parameters to the parameter list, which is used by the io
  if (!l) return;
  l->add("firstWire",firstWire,numCorrLayers);
  l->add("shift",shift,numCorrLayers);
  l->add("wireOrientCorr",wireOrientCorr,numCorrLayers);
}

Bool_t HMdcLayerCorrPar::getParams(HParamList* l) {
  // gets all parameters from the parameter list, which is used by the io
  if (!l) return kFALSE;
  if (!(l->fill("firstWire",firstWire,numCorrLayers)))           return kFALSE;
  if (!(l->fill("shift",shift,numCorrLayers)))                   return kFALSE;
  if (!(l->fill("wireOrientCorr",wireOrientCorr,numCorrLayers))) return kFALSE;
  return kTRUE;
}


Bool_t HMdcLayerCorrPar::addLayerShift(Int_t s,Int_t m,Int_t l,
    Int_t fstWr,Float_t sh,Float_t orCorr) {
  // add or change correction parameters
  if(fstWr>0 && isAddOk(s,m,l)) {
    Int_t ind = (s*(nMdc-2)+(m-2))*nLay+l;
    firstWire[ind]      = fstWr;
    shift[ind]          = sh;
    wireOrientCorr[ind] = orCorr;
    return kTRUE;
  }
  return kFALSE;
}

void HMdcLayerCorrPar::setDefaultPar(void) {
  addLayerShift(0,2,1,96,0.25);
  addLayerShift(0,2,2,88,0.15);
//  addLayerShift(0,2,3,82,0.1);
  addLayerShift(0,2,4,100,0.15);
  addLayerShift(0,2,5,59,0.1);
  addLayerShift(0,3,0,92,0.2);
  addLayerShift(0,3,1,104,0.42);
  addLayerShift(0,3,2,82,0.65);
  addLayerShift(0,3,3,87,0.1);
  addLayerShift(0,3,4,93,0.1);
  addLayerShift(0,3,5,48,0.52);

  addLayerShift(1,2,0,60,0.2);
  addLayerShift(1,2,1,96,0.05);
  addLayerShift(1,2,3,83,0.1);
  addLayerShift(1,2,4,106,0.4);
  addLayerShift(1,2,5,55,0.22);
  addLayerShift(1,3,0,93,0.15);
  addLayerShift(1,3,1,102,0.45);
  addLayerShift(1,3,2,77,0.25);
  addLayerShift(1,3,3,109,-0.1);
  addLayerShift(1,3,5,100,0.15);

  addLayerShift(2,2,0,59,0.2);
  addLayerShift(2,2,2,92,0.15);
  addLayerShift(2,2,3,50,-0.1);
  addLayerShift(2,2,4,98,0.25);
  addLayerShift(2,2,5,70,0.2);
  addLayerShift(2,3,0,73,-0.25);
  addLayerShift(2,3,2,64,0.23);
  addLayerShift(2,3,3,99,0.3);
  addLayerShift(2,3,4,84,-0.15);
  addLayerShift(2,3,5,78,-0.25);

  addLayerShift(3,2,1,97,0.5);
  addLayerShift(3,2,2,83,0.25);
  addLayerShift(3,2,4,59,0.2);
  addLayerShift(3,2,5,59,0.2);
//  addLayerShift(3,3,0,87,0.27);
  addLayerShift(3,3,1,99,0.42);
  addLayerShift(3,3,2,95,0.22);
  addLayerShift(3,3,3,101,0.53);
  addLayerShift(3,3,4,99,0.27);
  addLayerShift(3,3,5,84,0.27);

  addLayerShift(4,2,0,49,0.15);
  addLayerShift(4,2,1,95,0.1);
  addLayerShift(4,2,2,87,0.24);
  addLayerShift(4,2,3,109,-0.05);
  addLayerShift(4,2,4,58,0.15);
//  addLayerShift(4,2,5,22,-0.15);
  addLayerShift(4,3,0,91,0.67);
  addLayerShift(4,3,1,100,0.25);
  addLayerShift(4,3,2,99,0.4);
//  addLayerShift(4,3,3,87,0.1);
  addLayerShift(4,3,4,73,-0.1);
  addLayerShift(4,3,5,44,-0.1);

  addLayerShift(5,2,0,52,0.03);
  addLayerShift(5,2,1,92,-0.05);
  addLayerShift(5,2,2,78,0.05);
  addLayerShift(5,2,3,91,0.15);
  addLayerShift(5,2,4,110,0.2);
  addLayerShift(5,2,5,62,0.15);
  addLayerShift(5,3,0,90,-0.2);
  addLayerShift(5,3,1,83,-0.05);
  addLayerShift(5,3,2,86,-0.15);
  addLayerShift(5,3,3,85,-0.08);
  addLayerShift(5,3,4,95,0.15);
  addLayerShift(5,3,5,95,0.15);
}

Bool_t HMdcLayerCorrPar::getLayerCorrPar(Int_t s,Int_t m,Int_t l,
    Int_t& fstWr,Float_t& sh,Float_t& orCorr) const {
  if(isAddOk(s,m,l)) {
    Int_t ind = (s*(nMdc-2)+(m-2))*nLay+l;
    fstWr  = firstWire[ind];
    sh     = shift[ind];
    orCorr = wireOrientCorr[ind];
  } else {
    fstWr  = 777;
    sh     = 0.f;
    orCorr = 0.f;
    return kFALSE;
  }
  return kTRUE;
}

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