using namespace std;
#include "hades.h"
#include "hdetpario.h"
#include "hpario.h"
#include "hspectrometer.h"
#include "hpiontrackercalpar.h"
#include "hpiontrackerdetector.h"
#include <iomanip>
#include <iostream>
#include <fstream>
ClassImp(HPionTrackerCalPar)
ClassImp(HPionTrackerCalParMod)
ClassImp(HPionTrackerCalParCell)
void HPionTrackerCalParCell::clear() {
tdcSlope = 1.F;
tdcOffset = 0.F;
adcSlope = 1.F;
adcOffset = 0.F;
}
void HPionTrackerCalParCell::fill(Float_t ts, Float_t to, Float_t as, Float_t ao) {
tdcSlope = ts;
tdcOffset = to;
adcSlope = as;
adcOffset = ao;
}
void HPionTrackerCalParCell::fill(Float_t* data) {
tdcSlope = data[0];
tdcOffset = data[1];
adcSlope = data[2];
adcOffset = data[3];
}
void HPionTrackerCalParCell::fill(HPionTrackerCalParCell& r) {
tdcSlope = r.getTdcSlope();
tdcOffset = r.getTdcOffset();
adcSlope = r.getAdcSlope();
adcOffset = r.getAdcOffset();
}
HPionTrackerCalParMod::HPionTrackerCalParMod(Int_t n) {
array = new TObjArray(n);
for (Int_t i = 0 ; i < n ; i++) {
array->AddAt(new HPionTrackerCalParCell(), i);
}
}
HPionTrackerCalParMod::~HPionTrackerCalParMod() {
array->Delete();
delete array;
}
HPionTrackerCalPar::HPionTrackerCalPar(const Char_t* name, const Char_t* title,
const Char_t* context)
: HParSet(name, title, context) {
strcpy(detName, "PionTracker");
HPionTrackerDetector* det = (HPionTrackerDetector*)(gHades->getSetup()->getDetector("PionTracker"));
Int_t nMod = det->getMaxModInSetup();
Int_t nComp = det->getMaxComponents();
array = new TObjArray(nMod);
for (Int_t i = 0; i < nMod; i++) {
if (det->getModule(-1, i) > 0) {
array->AddAt(new HPionTrackerCalParMod(nComp), i);
} else {
array->AddAt(new HPionTrackerCalParMod(0), i);
}
}
}
HPionTrackerCalPar::~HPionTrackerCalPar() {
array->Delete();
delete array;
}
Bool_t HPionTrackerCalPar::init(HParIo* inp, Int_t* set) {
HDetParIo* input = inp->getDetParIo("HPionTrackerParIo");
if (input) return (input->init(this, set));
return kFALSE;
}
Int_t HPionTrackerCalPar::write(HParIo* output) {
HDetParIo* out = output->getDetParIo("HPionTrackerParIo");
if (out) return out->write(this);
return -1;
}
void HPionTrackerCalPar::clear() {
for (Int_t i = 0; i < getSize(); i++) {
HPionTrackerCalParMod& mod = (*this)[i];
for (Int_t j = 0; j < mod.getSize(); j++) mod[j].clear();
}
status = kFALSE;
resetInputVersions();
}
void HPionTrackerCalPar::printParams() {
printf("Calibration parameters for the PionTracker\n");
printf("module strip TdcSlope TdcOffset AdcSlope AdcOffset\n");
Float_t data[4];
for (Int_t i = 0; i < getSize(); i++) {
HPionTrackerCalParMod& mod = (*this)[i];
for (Int_t j = 0; j < mod.getSize(); j++) {
HPionTrackerCalParCell& cell = mod[j];
cell.getData(data);
printf("%4i %4i %10.5f %10.3f %10.5f %10.3f\n",
i, j, data[0], data[1], data[2], data[3]);
}
}
}
void HPionTrackerCalPar::readline(const Char_t *buf, Int_t *set) {
Int_t mod, strip;
Float_t data[4] = {0.F, 0.F, 0.F, 0.F};
sscanf(buf, "%i%i%f%f%f%f", &mod, &strip, &data[0], &data[1], &data[2], &data[3]);
if (!set[mod]) return;
(*this)[mod][strip].fill(data);
set[mod] = 999;
}
void HPionTrackerCalPar::putAsciiHeader(TString& header) {
header = "# Calibration parameters for the PionTracker\n"
"# Format:\n"
"# module strip TdcSlope TdcOffset AdcSlope AdcOffset\n";
}
void HPionTrackerCalPar::write(fstream& fout) {
Text_t buf[155];
Float_t data[4];
for (Int_t i = 0; i < getSize(); i++) {
HPionTrackerCalParMod& mod = (*this)[i];
for (Int_t j = 0; j < mod.getSize(); j++) {
HPionTrackerCalParCell& cell = mod[j];
cell.getData(data);
sprintf(buf, "%4i %4i %10.5f %10.1f %10.5f %10.1f\n",
i, j, data[0], data[1], data[2], data[3]);
fout<<buf;
}
}
}
hpiontrackercalpar.cc:100 hpiontrackercalpar.cc:101 hpiontrackercalpar.cc:102 hpiontrackercalpar.cc:103 hpiontrackercalpar.cc:104 hpiontrackercalpar.cc:105 hpiontrackercalpar.cc:106 hpiontrackercalpar.cc:107 hpiontrackercalpar.cc:108 hpiontrackercalpar.cc:109 hpiontrackercalpar.cc:110 hpiontrackercalpar.cc:111 hpiontrackercalpar.cc:112 hpiontrackercalpar.cc:113 hpiontrackercalpar.cc:114 hpiontrackercalpar.cc:115 hpiontrackercalpar.cc:116 hpiontrackercalpar.cc:117 hpiontrackercalpar.cc:118 hpiontrackercalpar.cc:119 hpiontrackercalpar.cc:120 hpiontrackercalpar.cc:121 hpiontrackercalpar.cc:122 hpiontrackercalpar.cc:123 hpiontrackercalpar.cc:124 hpiontrackercalpar.cc:125 hpiontrackercalpar.cc:126 hpiontrackercalpar.cc:127 hpiontrackercalpar.cc:128 hpiontrackercalpar.cc:129 hpiontrackercalpar.cc:130 hpiontrackercalpar.cc:131 hpiontrackercalpar.cc:132 hpiontrackercalpar.cc:133 hpiontrackercalpar.cc:134 hpiontrackercalpar.cc:135 hpiontrackercalpar.cc:136 hpiontrackercalpar.cc:137 hpiontrackercalpar.cc:138 hpiontrackercalpar.cc:139 hpiontrackercalpar.cc:140 hpiontrackercalpar.cc:141 hpiontrackercalpar.cc:142 hpiontrackercalpar.cc:143 hpiontrackercalpar.cc:144 hpiontrackercalpar.cc:145 hpiontrackercalpar.cc:146 hpiontrackercalpar.cc:147 hpiontrackercalpar.cc:148 hpiontrackercalpar.cc:149 hpiontrackercalpar.cc:150 hpiontrackercalpar.cc:151 hpiontrackercalpar.cc:152 hpiontrackercalpar.cc:153 hpiontrackercalpar.cc:154 hpiontrackercalpar.cc:155 hpiontrackercalpar.cc:156 hpiontrackercalpar.cc:157 hpiontrackercalpar.cc:158 hpiontrackercalpar.cc:159 hpiontrackercalpar.cc:160 hpiontrackercalpar.cc:161 hpiontrackercalpar.cc:162 hpiontrackercalpar.cc:163 hpiontrackercalpar.cc:164