#include "hpiontrackercalibrater.h"
#include "hpiontrackerdef.h"
#include "hpiontrackerraw.h"
#include "hpiontrackercal.h"
#include "hpiontrackerdetector.h"
#include "hpiontrackercalpar.h"
#include "hpiontrackerhitfpar.h"
#include "hades.h"
#include "hcategory.h"
#include "hdebug.h"
#include "hevent.h"
#include "hiterator.h"
#include "hruntimedb.h"
#include "hrun.h"
#include "hspectrometer.h"
#include <iomanip>
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
#define PR(x) std::cout << "++DEBUG: " << #x << " = |" << x << "| (" << __FILE__ << ", " << __LINE__ << ")\n";
#define PRh(x) std::cout << "++DEBUG: " << #x << " = hex |" << std::hex << x << std::dec << "| (" << __FILE__ << ", " << __LINE__ << ")\n";
ClassImp(HPionTrackerCalibrater)
HPionTrackerCalibrater::HPionTrackerCalibrater(void) :
pRawCat(NULL), pCalCat(NULL), iter(NULL), pCalpar(NULL), pRunpar(NULL)
{
correction.clear();
memset(corrs, 0, 4 * sizeof(Double_t));
}
HPionTrackerCalibrater::HPionTrackerCalibrater(const Text_t *name, const Text_t *title) : HReconstructor(name, title),
pRawCat(NULL), pCalCat(NULL), iter(NULL), pCalpar(NULL), pRunpar(NULL)
{
correction.clear();
memset(corrs, 0, 4 * sizeof(Double_t));
}
HPionTrackerCalibrater::~HPionTrackerCalibrater(void)
{
if (NULL != iter)
{
delete iter;
iter = NULL;
}
}
Bool_t HPionTrackerCalibrater::init(void)
{
HPionTrackerDetector* det = (HPionTrackerDetector*)gHades->getSetup()->getDetector("PionTracker");
if (!det)
{
Error("init", "No PionTracker found.");
return kFALSE;
}
pCalpar = (HPionTrackerCalPar*)gHades->getRuntimeDb()->getContainer("PionTrackerCalPar");
if (!pCalpar) return kFALSE;
pHitfpar = (HPionTrackerHitFPar*)gHades->getRuntimeDb()->getContainer("PionTrackerHitFPar");
if (!pHitfpar) return kFALSE;
pRunpar = (HPionTrackerCalRunPar*)gHades->getRuntimeDb()->getContainer("PionTrackerCalRunPar");
if (!pRunpar) return kFALSE;
pRawCat = gHades->getCurrentEvent()->getCategory(catPionTrackerRaw);
if (!pRawCat)
{
Error("init()", "HPionTrackerRaw category not available!");
return kFALSE;
}
pCalCat = det->buildCategory(catPionTrackerCal);
if (!pCalCat) return kFALSE;
iter = (HIterator*)pRawCat->MakeIterator();
loc.set(2, 0, 0);
fActive = kTRUE;
return kTRUE;
}
Bool_t HPionTrackerCalibrater::reinit(void)
{
{
memset(corrs,0, 4*sizeof(Double_t));
if (!pRunpar) return kFALSE;
Int_t runID = gHades->getRuntimeDb()->getCurrentRun()->getRunId();
correction.clear();
pRunpar->getRun(runID, &correction);
for (Int_t i=0 ; i < correction.getNVals() ; ++i)
{
corrs[i] = correction.getVal(i);
}
}
return kTRUE;
}
Int_t HPionTrackerCalibrater::execute(void)
{
HPionTrackerRaw *pRaw = NULL;
HPionTrackerCal *pCal = NULL;
Int_t mod = 0;
Int_t strip = 0;
Int_t nhits = 0;
Float_t rawTime = 0.F;
Float_t rawCharge = 0.F;
Float_t calTime = 0.F;
Float_t calCharge = 0.F;
Char_t pileup = 0;
Char_t overflow = 0;
Float_t parCellData[4] = {1.F, 0.F, 1.F, 0.F};
iter->Reset();
while ((pRaw = (HPionTrackerRaw *)iter->Next()) != 0)
{
pRaw->getAddress(mod, strip);
loc[0] = mod;
loc[1] = strip;
if (mod >= 0)
{
pCal = (HPionTrackerCal*)pCalCat->getObject(loc);
if (!pCal)
{
pCal = (HPionTrackerCal *)pCalCat->getSlot(loc);
if (pCal)
{
pCal = new(pCal) HPionTrackerCal;
pCal->setAddress(loc[0], loc[1]);
}
else
{
Error("execute()", "Can't get slot mod=%i, strip=%i", mod, strip);
return -1;
}
}
else
{
Error("execute()", "Slot already exists for mod=%i, strip=%i", mod, strip);
return -1;
}
HPionTrackerCalParCell &pPar = (*pCalpar)[mod][strip];
pPar.getData(parCellData);
charge_offset[mod] = pHitfpar->getClusterThresh(mod);
calib_charge[mod] = pHitfpar->getClusterDistX(mod);
nhits = pRaw->getMultiplicity();
for (Int_t i = 0; i < nhits; ++i)
{
pRaw->getTimeAndCharge(i, rawTime, rawCharge);
pRaw->getErrors(i, pileup, overflow);
calTime = parCellData[0] * rawTime + parCellData[1];
if (calib_charge[mod] == 0)
{
calCharge = HPionTrackerCal::InvalidAdc();}
else
{
calCharge = -parCellData[2] * rawCharge + parCellData[3] - corrs[mod] - charge_offset[mod];
}
pCal->setData(calTime, calCharge, pileup, overflow);
}
}
}
return 0;
}
hpiontrackercalibrater.cc:1 hpiontrackercalibrater.cc:2 hpiontrackercalibrater.cc:3 hpiontrackercalibrater.cc:4 hpiontrackercalibrater.cc:5 hpiontrackercalibrater.cc:6 hpiontrackercalibrater.cc:7 hpiontrackercalibrater.cc:8 hpiontrackercalibrater.cc:9 hpiontrackercalibrater.cc:10 hpiontrackercalibrater.cc:11 hpiontrackercalibrater.cc:12 hpiontrackercalibrater.cc:13 hpiontrackercalibrater.cc:14 hpiontrackercalibrater.cc:15 hpiontrackercalibrater.cc:16 hpiontrackercalibrater.cc:17 hpiontrackercalibrater.cc:18 hpiontrackercalibrater.cc:19 hpiontrackercalibrater.cc:20 hpiontrackercalibrater.cc:21 hpiontrackercalibrater.cc:22 hpiontrackercalibrater.cc:23 hpiontrackercalibrater.cc:24 hpiontrackercalibrater.cc:25 hpiontrackercalibrater.cc:26 hpiontrackercalibrater.cc:27 hpiontrackercalibrater.cc:28 hpiontrackercalibrater.cc:29 hpiontrackercalibrater.cc:30 hpiontrackercalibrater.cc:31 hpiontrackercalibrater.cc:32 hpiontrackercalibrater.cc:33 hpiontrackercalibrater.cc:34 hpiontrackercalibrater.cc:35 hpiontrackercalibrater.cc:36 hpiontrackercalibrater.cc:37 hpiontrackercalibrater.cc:38 hpiontrackercalibrater.cc:39 hpiontrackercalibrater.cc:40 hpiontrackercalibrater.cc:41 hpiontrackercalibrater.cc:42 hpiontrackercalibrater.cc:43 hpiontrackercalibrater.cc:44 hpiontrackercalibrater.cc:45 hpiontrackercalibrater.cc:46 hpiontrackercalibrater.cc:47 hpiontrackercalibrater.cc:48 hpiontrackercalibrater.cc:49 hpiontrackercalibrater.cc:50 hpiontrackercalibrater.cc:51 hpiontrackercalibrater.cc:52 hpiontrackercalibrater.cc:53 hpiontrackercalibrater.cc:54 hpiontrackercalibrater.cc:55 hpiontrackercalibrater.cc:56 hpiontrackercalibrater.cc:57 hpiontrackercalibrater.cc:58 hpiontrackercalibrater.cc:59 hpiontrackercalibrater.cc:60 hpiontrackercalibrater.cc:61 hpiontrackercalibrater.cc:62 hpiontrackercalibrater.cc:63 hpiontrackercalibrater.cc:64 hpiontrackercalibrater.cc:65 hpiontrackercalibrater.cc:66 hpiontrackercalibrater.cc:67 hpiontrackercalibrater.cc:68 hpiontrackercalibrater.cc:69 hpiontrackercalibrater.cc:70 hpiontrackercalibrater.cc:71 hpiontrackercalibrater.cc:72 hpiontrackercalibrater.cc:73 hpiontrackercalibrater.cc:74 hpiontrackercalibrater.cc:75 hpiontrackercalibrater.cc:76 hpiontrackercalibrater.cc:77 hpiontrackercalibrater.cc:78 hpiontrackercalibrater.cc:79 hpiontrackercalibrater.cc:80 hpiontrackercalibrater.cc:81 hpiontrackercalibrater.cc:82 hpiontrackercalibrater.cc:83 hpiontrackercalibrater.cc:84 hpiontrackercalibrater.cc:85 hpiontrackercalibrater.cc:86 hpiontrackercalibrater.cc:87 hpiontrackercalibrater.cc:88 hpiontrackercalibrater.cc:89 hpiontrackercalibrater.cc:90 hpiontrackercalibrater.cc:91 hpiontrackercalibrater.cc:92 hpiontrackercalibrater.cc:93 hpiontrackercalibrater.cc:94 hpiontrackercalibrater.cc:95 hpiontrackercalibrater.cc:96 hpiontrackercalibrater.cc:97 hpiontrackercalibrater.cc:98 hpiontrackercalibrater.cc:99 hpiontrackercalibrater.cc:100 hpiontrackercalibrater.cc:101 hpiontrackercalibrater.cc:102 hpiontrackercalibrater.cc:103 hpiontrackercalibrater.cc:104 hpiontrackercalibrater.cc:105 hpiontrackercalibrater.cc:106 hpiontrackercalibrater.cc:107 hpiontrackercalibrater.cc:108 hpiontrackercalibrater.cc:109 hpiontrackercalibrater.cc:110 hpiontrackercalibrater.cc:111 hpiontrackercalibrater.cc:112 hpiontrackercalibrater.cc:113 hpiontrackercalibrater.cc:114 hpiontrackercalibrater.cc:115 hpiontrackercalibrater.cc:116 hpiontrackercalibrater.cc:117 hpiontrackercalibrater.cc:118 hpiontrackercalibrater.cc:119 hpiontrackercalibrater.cc:120 hpiontrackercalibrater.cc:121 hpiontrackercalibrater.cc:122 hpiontrackercalibrater.cc:123 hpiontrackercalibrater.cc:124 hpiontrackercalibrater.cc:125 hpiontrackercalibrater.cc:126 hpiontrackercalibrater.cc:127 hpiontrackercalibrater.cc:128 hpiontrackercalibrater.cc:129 hpiontrackercalibrater.cc:130 hpiontrackercalibrater.cc:131 hpiontrackercalibrater.cc:132 hpiontrackercalibrater.cc:133 hpiontrackercalibrater.cc:134 hpiontrackercalibrater.cc:135 hpiontrackercalibrater.cc:136 hpiontrackercalibrater.cc:137 hpiontrackercalibrater.cc:138 hpiontrackercalibrater.cc:139 hpiontrackercalibrater.cc:140 hpiontrackercalibrater.cc:141 hpiontrackercalibrater.cc:142 hpiontrackercalibrater.cc:143 hpiontrackercalibrater.cc:144 hpiontrackercalibrater.cc:145 hpiontrackercalibrater.cc:146 hpiontrackercalibrater.cc:147 hpiontrackercalibrater.cc:148 hpiontrackercalibrater.cc:149 hpiontrackercalibrater.cc:150 hpiontrackercalibrater.cc:151 hpiontrackercalibrater.cc:152 hpiontrackercalibrater.cc:153 hpiontrackercalibrater.cc:154 hpiontrackercalibrater.cc:155 hpiontrackercalibrater.cc:156 hpiontrackercalibrater.cc:157 hpiontrackercalibrater.cc:158 hpiontrackercalibrater.cc:159 hpiontrackercalibrater.cc:160 hpiontrackercalibrater.cc:161 hpiontrackercalibrater.cc:162 hpiontrackercalibrater.cc:163 hpiontrackercalibrater.cc:164 hpiontrackercalibrater.cc:165 hpiontrackercalibrater.cc:166 hpiontrackercalibrater.cc:167 hpiontrackercalibrater.cc:168 hpiontrackercalibrater.cc:169 hpiontrackercalibrater.cc:170 hpiontrackercalibrater.cc:171 hpiontrackercalibrater.cc:172 hpiontrackercalibrater.cc:173 hpiontrackercalibrater.cc:174 hpiontrackercalibrater.cc:175 hpiontrackercalibrater.cc:176 hpiontrackercalibrater.cc:177 hpiontrackercalibrater.cc:178 hpiontrackercalibrater.cc:179 hpiontrackercalibrater.cc:180 hpiontrackercalibrater.cc:181 hpiontrackercalibrater.cc:182 hpiontrackercalibrater.cc:183 hpiontrackercalibrater.cc:184 hpiontrackercalibrater.cc:185 hpiontrackercalibrater.cc:186 hpiontrackercalibrater.cc:187 hpiontrackercalibrater.cc:188 hpiontrackercalibrater.cc:189 hpiontrackercalibrater.cc:190 hpiontrackercalibrater.cc:191 hpiontrackercalibrater.cc:192 hpiontrackercalibrater.cc:193 hpiontrackercalibrater.cc:194 hpiontrackercalibrater.cc:195 hpiontrackercalibrater.cc:196 hpiontrackercalibrater.cc:197 hpiontrackercalibrater.cc:198 hpiontrackercalibrater.cc:199 hpiontrackercalibrater.cc:200 hpiontrackercalibrater.cc:201 hpiontrackercalibrater.cc:202 hpiontrackercalibrater.cc:203 hpiontrackercalibrater.cc:204 hpiontrackercalibrater.cc:205 hpiontrackercalibrater.cc:206 hpiontrackercalibrater.cc:207 hpiontrackercalibrater.cc:208 hpiontrackercalibrater.cc:209 hpiontrackercalibrater.cc:210 hpiontrackercalibrater.cc:211 hpiontrackercalibrater.cc:212 hpiontrackercalibrater.cc:213 hpiontrackercalibrater.cc:214 hpiontrackercalibrater.cc:215 hpiontrackercalibrater.cc:216 hpiontrackercalibrater.cc:217 hpiontrackercalibrater.cc:218 hpiontrackercalibrater.cc:219 hpiontrackercalibrater.cc:220 hpiontrackercalibrater.cc:221 hpiontrackercalibrater.cc:222 hpiontrackercalibrater.cc:223 hpiontrackercalibrater.cc:224 hpiontrackercalibrater.cc:225 hpiontrackercalibrater.cc:226 hpiontrackercalibrater.cc:227 hpiontrackercalibrater.cc:228 hpiontrackercalibrater.cc:229 hpiontrackercalibrater.cc:230 hpiontrackercalibrater.cc:231 hpiontrackercalibrater.cc:232 hpiontrackercalibrater.cc:233 hpiontrackercalibrater.cc:234 hpiontrackercalibrater.cc:235 hpiontrackercalibrater.cc:236 hpiontrackercalibrater.cc:237 hpiontrackercalibrater.cc:238 hpiontrackercalibrater.cc:239 hpiontrackercalibrater.cc:240 hpiontrackercalibrater.cc:241 hpiontrackercalibrater.cc:242 hpiontrackercalibrater.cc:243 hpiontrackercalibrater.cc:244