#include "hshowerpaddigitizer.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "hevent.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hshowerdetector.h"
#include "hcategory.h"
#include "hmatrixcategory.h"
#include "hlinearcategory.h"
#include "hlocation.h"
#include "hshowergeantwire.h"
#include "hshowercal.h"
#include "hshowertrack.h"
#include "hshowerdigipar.h"
#include "hshowergeometry.h"
#include "hdebug.h"
#include "hades.h"
#include "hgeantshower.h"
#include "hgeanttof.h"
#include "hgeantrpc.h"
#include "hgeantkine.h"
#include "showerdef.h"
#include "TMath.h"
#include <algorithm>
#define MIN(A,B) (((A) <= (B)) ? (A) : (B))
#define MAX(A,B) (((A) >= (B)) ? (A) : (B))
#define TABLE_SIZE 10
ClassImp(HShowerPadDigitizer)
Int_t HShowerPadDigitizer::modeTrack = 4;
HShowerPadDigitizer::HShowerPadDigitizer(const Text_t *name,const Text_t *title) :
HShowerDigitizer(name,title)
{
fTrackIter = NULL;
fChannelCoeff = 256.0 / 60.0;
fShowerRawMatrIter = NULL;
isRpc = kFALSE;
}
HShowerPadDigitizer::HShowerPadDigitizer()
{
fTrackIter = NULL;
fShowerRawMatrIter = NULL;
isRpc = kFALSE;
}
HShowerPadDigitizer::~HShowerPadDigitizer(void) {
if (fTrackIter) delete fTrackIter;
if (fShowerRawMatrIter) delete fShowerRawMatrIter;
}
Bool_t HShowerPadDigitizer::init()
{
printf("initialization of shower pad digitizer \n");
HCategory *pCat;
HShowerDetector *pShowerDet = (HShowerDetector*)gHades->getSetup()->getDetector("Shower");
pCat=gHades->getCurrentEvent()->getCategory(catShowerGeantWire);
if (!pCat) {
pCat=pShowerDet->buildCategory(catShowerGeantWire);
if (!pCat) return kFALSE;
else gHades->getCurrentEvent()->addCategory(catShowerGeantWire, pCat, "Shower");
}
setInCat(pCat);
pCat=gHades->getCurrentEvent()->getCategory(catShowerRawMatr);
if (!pCat) {
pCat=pShowerDet->buildCategory(catShowerRawMatr);
if (!pCat) return kFALSE;
else {
gHades->getCurrentEvent()->addCategory(catShowerRawMatr, pCat, "Shower");
}
}
setOutCat(pCat);
if(pCat) fShowerRawMatrIter=(HIterator*)pCat->MakeIterator("native");
if(gHades->getEmbeddingMode()>0)
{
pCat=gHades->getCurrentEvent()->getCategory(catShowerCal);
if (!pCat) {
Error("init()","No catShowerCal in input ... needed for embedding!");
return kFALSE;
}
if(pCat) fShowerCalIter= (HIterator*)pCat->MakeIterator("native");
}
pCat=gHades->getCurrentEvent()->getCategory(catShowerTrack);
if (!pCat) {
pCat=pShowerDet->buildCategory(catShowerTrack);
if (!pCat) return kFALSE;
else gHades->getCurrentEvent()->addCategory(catShowerTrack, pCat, "Shower");
}
setTrackCat(pCat);
fTrackIter = (HIterator*)getTrackCat()->MakeIterator("native");
fGeantKineCat = (HLinearCategory*)gHades->getCurrentEvent()->getCategory(catGeantKine);
if(!fGeantKineCat){
Error("init()","Received Zero pointer for catGeantKine!");
return kFALSE;
}
fGeantShowerCat = (HLinearCategory*)gHades->getCurrentEvent()->getCategory(catShowerGeantRaw);
if(!fGeantShowerCat){
Error("init()","Received Zero pointer for catShowerGeantRaw!");
return kFALSE;
}
fGeantTofCat = (HLinearCategory*)gHades->getCurrentEvent()->getCategory(catTofGeantRaw);
if(!fGeantTofCat){
Warning("init()","Received Zero pointer for catTofGeantRaw!");
}
fGeantRpcCat = (HLinearCategory*)gHades->getCurrentEvent()->getCategory(catRpcGeantRaw);
if(!fGeantRpcCat){
Warning("init()","Received Zero pointer for catRpcGeantRaw!");
}
if (!fGeantRpcCat && !fGeantTofCat) return kFALSE;
if (fGeantRpcCat) isRpc = kTRUE;
return HShowerDigitizer::init();
}
HShowerPadDigitizer& HShowerPadDigitizer::operator=(HShowerPadDigitizer &c) {
return c;
}
Int_t HShowerPadDigitizer::execute()
{
trackMap.clear();
if(gHades->getEmbeddingMode() > 0 && gHades->getEmbeddingDebug()!=1)
{
HLocation loc;
loc.set(4,0,0,0);
HShowerCal *pCal;
fShowerCalIter->Reset();
HShowerRaw pRaw;
while ((pCal = (HShowerCal *)fShowerCalIter->Next()) != 0)
{
loc[0] = pCal->getSector();
loc[1] = pCal->getModule();
loc[2] = pCal->getRow();
loc[3] = pCal->getCol();
pRaw.setSector(loc[0]);
pRaw.setModule(loc[1]);
pRaw.setRow(loc[2]);
pRaw.setCol(loc[3]);
Int_t addTr = pCal->getAddress();
vector<Int_t> v;
v.push_back(gHades->getEmbeddingRealTrackId());
trackMap.insert( make_pair( addTr, v ) );
}
}
TObject *pHit;
lNrEvent++;
fIter->Reset();
while((pHit = fIter->Next()))
{
digitize(pHit);
}
HShowerTrack* pShowerTrack;
HLocation loc;
Int_t s,m,row,col;
vector<Int_t> check;
for( map<Int_t, vector<Int_t> >::iterator iter = trackMap.begin(); iter != trackMap.end(); ++iter)
{
vector<Int_t>& list = iter ->second;
Int_t nAddress = iter ->first;
s = nAddress /100000;
m = (nAddress - 100000*s) / 10000;
row = (nAddress - 100000*s - 10000*m) / 100;
col = (nAddress - 100000*s - 10000*m - 100*row);
loc.set(4,s,m,row,col);
Int_t n = list.size();
std::sort( list.begin(), list.end() );
check.clear();
for( Int_t i = 0; i < n; ++ i ) {
Int_t nTrack = list[i];
if( nTrack > 100000000) { nTrack -= 100000000; }
else if(nTrack > 10000) { nTrack -= 10000; }
else if(nTrack > 0) { }
else if(nTrack < 0) { }
if (i > 0 && find( check.begin(), check.end(), nTrack ) != check.end() ){
} else {
check.push_back(nTrack);
pShowerTrack = (HShowerTrack*)((HLinearCategory*)getTrackCat())->getNewSlot(loc);
if (pShowerTrack) {
pShowerTrack = new(pShowerTrack) HShowerTrack;
pShowerTrack->setAddress(nAddress);
pShowerTrack->setTrack(nTrack);
}
}
}
}
Double_t fQ;
HShowerRawMatr *pRawMatr;
fShowerRawMatrIter->Reset();
while((pRawMatr = (HShowerRawMatr*)fShowerRawMatrIter->Next()))
{
fQ = gainCharge(pRawMatr);
pRawMatr->setCharge(fQ);
if(!checkEfficiency(pRawMatr)) {
pRawMatr->setCharge(0.0);
}
}
sort();
return 0;
}
Bool_t HShowerPadDigitizer::digitize(TObject *pHit) {
#if DEBUG_LEVEL>2
gDebuger->enterFunc("HShowerPadDigitizer::execute");
gDebuger->message("Hit cat points to %p",pHit);
#endif
HShowerGeantWire *pGeantWire = (HShowerGeantWire*) pHit;
if (pGeantWire) {
digiPads(pGeantWire);
}
#if DEBUG_LEVEL>2
gDebuger->leaveFunc("HShowerPadDigitizer::execute");
#endif
return (pGeantWire) ? kTRUE : kFALSE;
}
Int_t HShowerPadDigitizer::sort() {
((HLinearCategory*)getTrackCat())->sort();
return 0;
}
Int_t HShowerPadDigitizer::findFirstHitInShower(Int_t trackID)
{
Int_t numTrack = trackID;
if(numTrack <= 0) return numTrack;
if(modeTrack == 0) { return numTrack; }
HGeantShower *poldShower;
Int_t first = 0;
Int_t parent= 0;
HGeantKine* kine = (HGeantKine*)fGeantKineCat->getObject(numTrack - 1);
if(kine){
parent = kine->getParentTrack();
if( parent == 0) { return numTrack; }
first = kine->getFirstShowerHit();
if(first != -1){
poldShower = (HGeantShower*)fGeantShowerCat->getObject(first);
} else {
Error("findFirstHitInShower()","No first shower hit!");
return numTrack;
}
} else {
Error("findFirstHitInShower()","Received Zero pointer for kine!");
return numTrack;
}
if(numTrack != poldShower->getTrack()){
Error("findFirstHitInShower()","First shower hit not same trackID!");
return numTrack;
}
Int_t s = poldShower->getSector();
if(modeTrack == 1)
{
kine = HGeantKine::getPrimary(numTrack,fGeantKineCat);
return kine->getTrack();
}
Int_t tempTrack = numTrack;
first = 0;
if(modeTrack == 2)
{
while((kine = kine->getParent(tempTrack,fGeantKineCat)) != 0)
{
first = kine->getFirstShowerHit();
if(first != -1)
{
HGeantShower* gshower = (HGeantShower*)fGeantShowerCat->getObject(first);
Int_t s1 = gshower->getSector();
if(s == s1)
{
tempTrack = kine->getTrack();
} else {
break;
}
} else {
break;
}
}
return tempTrack;
}
if(modeTrack >= 3)
{
Bool_t foundTof = kFALSE;
Int_t tempTrack2 = tempTrack;
do {
first = kine->getFirstTofHit();
if(first != -1)
{
HGeantTof* gtof = (HGeantTof*)fGeantTofCat->getObject(first);
Int_t s1 = gtof->getSector();
Int_t m = gtof->getModule();
if(s == s1 && m > 21 )
{
foundTof = kTRUE;
tempTrack = tempTrack2;
}
}
tempTrack2 = kine->getParentTrack();
} while( tempTrack2 > 0 && (kine = (HGeantKine*)fGeantKineCat->getObject(tempTrack2 - 1)) != 0);
if(foundTof) { tempTrack += 10000; }
else {
kine = (HGeantKine*)fGeantKineCat->getObject(numTrack - 1);
if( modeTrack == 3 ){
kine = HGeantKine::getPrimary(numTrack,fGeantKineCat);
tempTrack = kine->getTrack() + 100000000;
} else if (modeTrack == 4){
while((kine = kine->getParent(tempTrack,fGeantKineCat)) != 0)
{
first = kine->getFirstShowerHit();
if(first != -1)
{
HGeantShower* gshower = (HGeantShower*)fGeantShowerCat->getObject(first);
Int_t s1 = gshower->getSector();
if(s == s1)
{
tempTrack = kine->getTrack();
} else {
break;
}
} else {
break;
}
}
tempTrack += 100000000;
}
}
}
return tempTrack;
}
Int_t HShowerPadDigitizer::findFirstHitInRpc(Int_t trackID)
{
Int_t numTrack = trackID;
if(numTrack <= 0) return numTrack;
if(modeTrack == 0) { return numTrack; }
HGeantShower *poldShower;
Int_t first = 0;
Int_t parent= 0;
HGeantKine* kine = (HGeantKine*)fGeantKineCat->getObject(numTrack - 1);
if(kine){
parent = kine->getParentTrack();
if( parent == 0) { return numTrack; }
first = kine->getFirstShowerHit();
if(first != -1){
poldShower = (HGeantShower*)fGeantShowerCat->getObject(first);
} else {
Error("findFirstHitInRpc()","No first shower hit!");
return numTrack;
}
} else {
Error("findFirstHitInRpc()","Received Zero pointer for kine!");
return numTrack;
}
if(numTrack != poldShower->getTrack()){
Error("findFirstHitInRpc()","First shower hit not same trackID!");
return numTrack;
}
Int_t s = poldShower->getSector();
if(modeTrack == 1)
{
kine = HGeantKine::getPrimary(numTrack,fGeantKineCat);
return kine->getTrack();
}
Int_t tempTrack = numTrack;
first = 0;
if(modeTrack == 2)
{
while((kine = kine->getParent(tempTrack,fGeantKineCat)) != 0)
{
first = kine->getFirstShowerHit();
if(first != -1)
{
HGeantShower* gshower = (HGeantShower*)fGeantShowerCat->getObject(first);
Int_t s1 = gshower->getSector();
if(s == s1)
{
tempTrack = kine->getTrack();
} else {
break;
}
} else {
break;
}
}
return tempTrack;
}
if(modeTrack >= 3)
{
Bool_t foundRPC = kFALSE;
Int_t tempTrack2 = tempTrack;
do {
first = kine->getFirstRpcHit();
if(first != -1)
{
HGeantRpc* grpc = (HGeantRpc*)fGeantRpcCat->getObject(first);
Int_t s1 = grpc->getSector();
if(s == s1)
{
foundRPC = kTRUE;
tempTrack = tempTrack2;
}
}
tempTrack2 = kine->getParentTrack();
} while( tempTrack2 > 0 && (kine = (HGeantKine*)fGeantKineCat->getObject(tempTrack2 - 1)) != 0);
if(foundRPC) { tempTrack += 10000; }
else {
kine = (HGeantKine*)fGeantKineCat->getObject(numTrack - 1);
if( modeTrack == 3 ){
kine = HGeantKine::getPrimary(numTrack,fGeantKineCat);
tempTrack = kine->getTrack() + 100000000;
} else if (modeTrack == 4){
while((kine = kine->getParent(tempTrack,fGeantKineCat)) != 0)
{
first = kine->getFirstShowerHit();
if(first != -1)
{
HGeantShower* gshower = (HGeantShower*)fGeantShowerCat->getObject(first);
Int_t s1 = gshower->getSector();
if(s == s1)
{
tempTrack = kine->getTrack();
} else {
break;
}
} else {
break;
}
}
tempTrack += 100000000;
}
}
}
return tempTrack;
}
Int_t HShowerPadDigitizer::findFirstHit(Int_t trackID)
{
if(isRpc) {return findFirstHitInRpc (trackID);}
else {return findFirstHitInShower(trackID);}
}
void HShowerPadDigitizer::updatePad(HShowerPad *pPad, Float_t fIndQ, Int_t nSect, Int_t nMod, Int_t nTrack)
{
Int_t nRow, nCol;
HShowerRaw *pShowerRaw=NULL;
HLocation loc;
Float_t fUpdateThreshold = pDigiPar->getUpdatePadThreshold();
pPad->getPadPos(&nRow, &nCol);
loc.set(4, nSect, nMod, nRow, nCol);
pShowerRaw = (HShowerRaw*)((HMatrixCategory*)getOutCat())->getObject(loc);
if (!pShowerRaw)
{
pShowerRaw = (HShowerRaw*)((HMatrixCategory*)getOutCat())->getSlot(loc);
if (pShowerRaw != NULL)
{
pShowerRaw = new(pShowerRaw) HShowerRaw;
pShowerRaw->setSector(loc[0]);
pShowerRaw->setModule(loc[1]);
pShowerRaw->setRow(loc[2]);
pShowerRaw->setCol(loc[3]);
}
}
if(pShowerRaw)
{
pShowerRaw->addCharge(fIndQ);
if(pShowerRaw->getCharge() >= fUpdateThreshold) {
Int_t tempTrack = findFirstHit(nTrack);
Int_t addTr = pShowerRaw->getAddress();
map<Int_t,vector<Int_t> >::iterator pos = trackMap.find(addTr);
if( pos == trackMap.end() ) {
vector<Int_t> v;
v.push_back(tempTrack);
trackMap.insert( make_pair( addTr, v ) );
} else {
(pos->second).push_back(tempTrack);
}
}
}
}
Float_t HShowerPadDigitizer::calcCharge(Float_t charge, Float_t dist,
Float_t Xd, Float_t Yd, Float_t Xu, Float_t Yu) {
const Float_t twoPI = 6.28318530718;
return ((charge/twoPI)*(
atan(Xd*Yd/(dist*sqrt(dist*dist+Xd*Xd+Yd*Yd))) -
atan(Xd*Yu/(dist*sqrt(dist*dist+Xd*Xd+Yu*Yu))) +
atan(Xu*Yu/(dist*sqrt(dist*dist+Xu*Xu+Yu*Yu))) -
atan(Xu*Yd/(dist*sqrt(dist*dist+Xu*Xu+Yd*Yd)))));
}
void HShowerPadDigitizer::digiPads(HShowerGeantWire* pWireHit)
{
Float_t fX, fY, fQ;
Float_t factor;
Float_t sum;
Int_t nPadX, nPadY, nPadRange;
Float_t pChargeTable[MAX_PADS_DIST];
Int_t iMaxInArray, m;
HShowerPad *pTmpPad;
HShowerPad *pCPad;
Float_t fPadThreshold = pDigiPar->getPadThreshold();
Float_t fUpdateThreshold = pDigiPar->getUpdatePadThreshold();
HShowerPadTab *pPadParam = pGeometry->getPadParam(pWireHit->getModule());
if((fQ = pWireHit->getCharge()) < fUpdateThreshold)
return;
pWireHit->getXY(&fX, &fY);
if((pCPad = pPadParam->getPad(fX, fY)) == NULL)
return;
pCPad->getPadPos(&nPadY, &nPadX);
iMaxInArray = MAX_PADS_DIST;
nPadRange = (MAX_PADS_DIST - 1) / 2;
if(numericalCalc(pCPad, pWireHit, pChargeTable) != 0)
return;
sum = 0.0f;
for(m = 0; m < iMaxInArray; m++)
sum += pChargeTable[m];
if(sum <= 0.0f)
return;
factor = fQ / sum;
for(m = 0; m < iMaxInArray; m++)
{
pChargeTable[m] *= factor;
}
sum = 0.0f;
for(m = 0; m < iMaxInArray; m++)
{
if(pChargeTable[m] >= fPadThreshold)
sum += pChargeTable[m];
else
pChargeTable[m] = 0.0f;
}
if(sum < fPadThreshold)
{
for(m = 0; m < iMaxInArray; m++)
pChargeTable[m] = 0.0f;
pChargeTable[nPadRange] = fQ;
}
else
{
factor = fQ / sum;
for(m = 0; m < iMaxInArray; m++)
{
if(pChargeTable[m] > 0.0f)
pChargeTable[m] *= factor;
}
}
for(m = 0; m < iMaxInArray; m++)
{
pTmpPad = pPadParam->getPad(nPadY, nPadX + m - nPadRange);
if(((m == nPadRange) || (pChargeTable[m] >= fPadThreshold))
&& (pTmpPad != NULL) && (pTmpPad->getPadFlag()))
{
updatePad(pTmpPad, pChargeTable[m], pWireHit->getSector(),
pWireHit->getModule(), pWireHit->getTrack());
}
}
}
Double_t HShowerPadDigitizer::gainCharge(HShowerRawMatr *pRawMatr)
{
return pRawMatr->getCharge()*pDigiPar->getGain(pRawMatr->getSector(),
pRawMatr->getModule());
}
Bool_t HShowerPadDigitizer::checkEfficiency(HShowerRawMatr *pRawMatr)
{
if(pRawMatr->getModule() == 0) return kTRUE;
Double_t threshold = pDigiPar->getThreshold(pRawMatr->getSector(),pRawMatr->getModule());
if(pRawMatr->getCharge() > threshold) return kTRUE;
else return kFALSE;
}
Int_t HShowerPadDigitizer::calcLimit(Float_t fCor, Int_t nMatrixRange,
Float_t fBoxSize)
{
Int_t k, nLimit;
k = (Int_t)((fabs(fCor) + 0.5*fBoxSize)/fBoxSize);
if (fCor < 0 )
nLimit = (k>nMatrixRange) ? 0 : nMatrixRange - k;
else
nLimit = (k>nMatrixRange) ? 2*nMatrixRange : nMatrixRange + k;
return nLimit;
}
void HShowerPadDigitizer::moveCoord(HShowerPad *pPad,Float_t distWire, Float_t fDx, Float_t fDy,
Float_t *corXld, Float_t *corYld, Float_t *corXlu, Float_t *corYlu,
Float_t *corXrd, Float_t *corYrd, Float_t *corXru, Float_t *corYru) {
*corXld = pPad->getXld() - fDx;
*corYld = fDy - fDy - distWire;
*corXlu = pPad->getXlu() - fDx;
*corYlu = fDy - fDy + distWire;
*corXrd = pPad->getXrd() - fDx;
*corYrd = fDy - fDy - distWire;
*corXru = pPad->getXru() - fDx;
*corYru = fDy - fDy + distWire;
}
void HShowerPadDigitizer::analyticCalc(HShowerPad *pPad, HShowerGeantWire* pWireHit)
{
Float_t fX, fY;
Float_t fIndQ;
Float_t corXld, corYld, corXlu, corYlu;
Float_t corXrd, corYrd, corXru, corYru;
pWireHit->getXY(&fX, &fY);
Int_t nModule = pWireHit->getModule();
HShowerWireTab *pfWire = pGeometry->getWireTab(nModule);
Float_t distWire = pfWire->getDistWire();
moveCoord(pPad, distWire, fX, fY, &corXld, &corYld, &corXlu, &corYlu,
&corXrd, &corYrd, &corXru, &corYru);
fIndQ = calcCharge(pWireHit->getCharge(),
pDigiPar->getPlaneDist(),
corXld, corYld, corXru, corYru);
updatePad(pPad, fIndQ, pWireHit->getSector(),
pWireHit->getModule(), pWireHit->getTrack());
}
Int_t HShowerPadDigitizer::numericalCalc(HShowerPad *pPad,
HShowerGeantWire* pWireHit, Float_t pfValues[MAX_PADS_DIST])
{
Float_t fAl, fAr, fBl, fBr;
Float_t fXd, fXu, fYd, fYu;
Float_t fXmin, fXmax;
Float_t fYmin, fYmax;
Float_t fWireX, fWireY;
Float_t fY, fX, fQ;
Int_t i;
HShowerFrameCorner *pCorner;
if((pPad == NULL) || (pPad->getPadFlag() == 0))
return -1;
Int_t iModule = pWireHit->getModule();
HShowerFrame *pFrame = pGeometry->getFrame(iModule);
Float_t fDistWire = pGeometry->getWireTab(iModule)->getDistWire();
Int_t iMatrixRange = pDigiPar->getMatrixRange();
Float_t fBoxSize = pDigiPar->getBoxSize();
const Float_t* pfChargeMatrix = pDigiPar->getChargeMatrix();
if((pPad->getPadFlag() == 2) && (pPad->getXld() < 0.0))
{
pCorner = pFrame->getCorner(0);
fXd = pCorner->getX();
fYd = pCorner->getY();
pCorner = pFrame->getCorner(1);
fXu = pCorner->getX();
fYu = pCorner->getY();
}
else
{
fXd = pPad->getXld();
fYd = pPad->getYld();
fXu = pPad->getXlu();
fYu = pPad->getYlu();
}
fAl = (fXu - fXd) / (fYu - fYd);
fBl = fXu - fAl * fYu;
if((pPad->getPadFlag() == 2) && (pPad->getXld() >= 0.0))
{
pCorner = pFrame->getCorner(3);
fXd = pCorner->getX();
fYd = pCorner->getY();
pCorner = pFrame->getCorner(2);
fXu = pCorner->getX();
fYu = pCorner->getY();
}
else
{
fXd = pPad->getXrd();
fYd = pPad->getYrd();
fXu = pPad->getXru();
fYu = pPad->getYru();
}
fAr = (fXu - fXd) / (fYu - fYd);
fBr = fXu - fAr * fYu;
pWireHit->getXY(&fWireX, &fWireY);
fXmin = fWireX - iMatrixRange * fBoxSize;
fXmax = fWireX + iMatrixRange * fBoxSize;
fYmin = fWireY - fDistWire + 0.5 * fBoxSize;
fYmax = fWireY + fDistWire - 0.5 * fBoxSize;
memset(pfValues, 0, MAX_PADS_DIST * sizeof(Float_t));
for(fY = fYmin; fY <= fYmax; fY += fBoxSize)
{
if((fX = fAl * fY + fBl) >= fXmin && (fWireX-fX) >= 0.0)
{
i = (int)((fX - fXmin) / fBoxSize);
if(i>2*iMatrixRange||i<0)
{
cout << " left border fWireX-fX " << fWireX-fX << endl;
cout << " fXd,fYd,fXu,fYu " << pPad->getXld() <<","<< pPad->getYld() << ","<< pPad->getXlu() << ","<< pPad->getYlu() << endl;
Error("numericalCalc()","left border matrix : max %i, ind %i, fX %7.4f, fXmin %7.4f, fWireX %7.4f,fBoxSize %5.3f, PadNr %i",2*iMatrixRange,i,fX,fXmin,fWireX,fBoxSize,pPad->getPadNr());
continue;
}
pfValues[0] += pfChargeMatrix[i];
fQ = pfChargeMatrix[i];
}
else
fQ = 0.0f;
if((fX = fAr * fY + fBr) <= fXmax && (fWireX-fX) <= 0.0)
{
i = (int)((fX - fXmin) / fBoxSize);
if(i>2*iMatrixRange||i<0)
{
cout << " right border fWireX-fX " << fWireX-fX << endl;
cout << " fXd,fYd,fXu,fYu " << pPad->getXrd() <<","<< pPad->getYrd() << ","<< pPad->getXru() << ","<< pPad->getYru() << endl;
Error("numericalCalc()","right border matrix : max %i, ind %i, fX %7.4f, fXmin %7.4f, fWireX %7.4f, fBoxSize %5.3f, PadNr %i",2*iMatrixRange,i,fX,fXmin,fWireX,fBoxSize,pPad->getPadNr());
continue;
}
pfValues[1] += pfChargeMatrix[i] - fQ;
pfValues[2] += pfChargeMatrix[2 * iMatrixRange] - pfChargeMatrix[i];
}
else
pfValues[1] += pfChargeMatrix[2 * iMatrixRange] - fQ;
}
return 0;
}
hshowerpaddigitizer.cc:10 hshowerpaddigitizer.cc:11 hshowerpaddigitizer.cc:12 hshowerpaddigitizer.cc:13 hshowerpaddigitizer.cc:14 hshowerpaddigitizer.cc:15 hshowerpaddigitizer.cc:16 hshowerpaddigitizer.cc:17 hshowerpaddigitizer.cc:18 hshowerpaddigitizer.cc:19 hshowerpaddigitizer.cc:20 hshowerpaddigitizer.cc:21 hshowerpaddigitizer.cc:22 hshowerpaddigitizer.cc:23 hshowerpaddigitizer.cc:24 hshowerpaddigitizer.cc:25 hshowerpaddigitizer.cc:26 hshowerpaddigitizer.cc:27 hshowerpaddigitizer.cc:28 hshowerpaddigitizer.cc:29 hshowerpaddigitizer.cc:30 hshowerpaddigitizer.cc:31 hshowerpaddigitizer.cc:32 hshowerpaddigitizer.cc:33 hshowerpaddigitizer.cc:34 hshowerpaddigitizer.cc:35 hshowerpaddigitizer.cc:36 hshowerpaddigitizer.cc:37 hshowerpaddigitizer.cc:38 hshowerpaddigitizer.cc:39 hshowerpaddigitizer.cc:40 hshowerpaddigitizer.cc:41 hshowerpaddigitizer.cc:42 hshowerpaddigitizer.cc:43 hshowerpaddigitizer.cc:44 hshowerpaddigitizer.cc:45 hshowerpaddigitizer.cc:46 hshowerpaddigitizer.cc:47 hshowerpaddigitizer.cc:48 hshowerpaddigitizer.cc:49 hshowerpaddigitizer.cc:50 hshowerpaddigitizer.cc:51 hshowerpaddigitizer.cc:52 hshowerpaddigitizer.cc:53 hshowerpaddigitizer.cc:54 hshowerpaddigitizer.cc:55 hshowerpaddigitizer.cc:56 hshowerpaddigitizer.cc:57 hshowerpaddigitizer.cc:58 hshowerpaddigitizer.cc:59 hshowerpaddigitizer.cc:60 hshowerpaddigitizer.cc:61 hshowerpaddigitizer.cc:62 hshowerpaddigitizer.cc:63 hshowerpaddigitizer.cc:64 hshowerpaddigitizer.cc:65 hshowerpaddigitizer.cc:66 hshowerpaddigitizer.cc:67 hshowerpaddigitizer.cc:68 hshowerpaddigitizer.cc:69 hshowerpaddigitizer.cc:70 hshowerpaddigitizer.cc:71 hshowerpaddigitizer.cc:72 hshowerpaddigitizer.cc:73 hshowerpaddigitizer.cc:74 hshowerpaddigitizer.cc:75 hshowerpaddigitizer.cc:76 hshowerpaddigitizer.cc:77 hshowerpaddigitizer.cc:78 hshowerpaddigitizer.cc:79 hshowerpaddigitizer.cc:80 hshowerpaddigitizer.cc:81 hshowerpaddigitizer.cc:82 hshowerpaddigitizer.cc:83 hshowerpaddigitizer.cc:84 hshowerpaddigitizer.cc:85 hshowerpaddigitizer.cc:86 hshowerpaddigitizer.cc:87 hshowerpaddigitizer.cc:88 hshowerpaddigitizer.cc:89 hshowerpaddigitizer.cc:90 hshowerpaddigitizer.cc:91 hshowerpaddigitizer.cc:92 hshowerpaddigitizer.cc:93 hshowerpaddigitizer.cc:94 hshowerpaddigitizer.cc:95 hshowerpaddigitizer.cc:96 hshowerpaddigitizer.cc:97 hshowerpaddigitizer.cc:98 hshowerpaddigitizer.cc:99 hshowerpaddigitizer.cc:100 hshowerpaddigitizer.cc:101 hshowerpaddigitizer.cc:102 hshowerpaddigitizer.cc:103 hshowerpaddigitizer.cc:104 hshowerpaddigitizer.cc:105 hshowerpaddigitizer.cc:106 hshowerpaddigitizer.cc:107 hshowerpaddigitizer.cc:108 hshowerpaddigitizer.cc:109 hshowerpaddigitizer.cc:110 hshowerpaddigitizer.cc:111 hshowerpaddigitizer.cc:112 hshowerpaddigitizer.cc:113 hshowerpaddigitizer.cc:114 hshowerpaddigitizer.cc:115 hshowerpaddigitizer.cc:116 hshowerpaddigitizer.cc:117 hshowerpaddigitizer.cc:118 hshowerpaddigitizer.cc:119 hshowerpaddigitizer.cc:120 hshowerpaddigitizer.cc:121 hshowerpaddigitizer.cc:122 hshowerpaddigitizer.cc:123 hshowerpaddigitizer.cc:124 hshowerpaddigitizer.cc:125 hshowerpaddigitizer.cc:126 hshowerpaddigitizer.cc:127 hshowerpaddigitizer.cc:128 hshowerpaddigitizer.cc:129 hshowerpaddigitizer.cc:130 hshowerpaddigitizer.cc:131 hshowerpaddigitizer.cc:132 hshowerpaddigitizer.cc:133 hshowerpaddigitizer.cc:134 hshowerpaddigitizer.cc:135 hshowerpaddigitizer.cc:136 hshowerpaddigitizer.cc:137 hshowerpaddigitizer.cc:138 hshowerpaddigitizer.cc:139 hshowerpaddigitizer.cc:140 hshowerpaddigitizer.cc:141 hshowerpaddigitizer.cc:142 hshowerpaddigitizer.cc:143 hshowerpaddigitizer.cc:144 hshowerpaddigitizer.cc:145 hshowerpaddigitizer.cc:146 hshowerpaddigitizer.cc:147 hshowerpaddigitizer.cc:148 hshowerpaddigitizer.cc:149 hshowerpaddigitizer.cc:150 hshowerpaddigitizer.cc:151 hshowerpaddigitizer.cc:152 hshowerpaddigitizer.cc:153 hshowerpaddigitizer.cc:154 hshowerpaddigitizer.cc:155 hshowerpaddigitizer.cc:156 hshowerpaddigitizer.cc:157 hshowerpaddigitizer.cc:158 hshowerpaddigitizer.cc:159 hshowerpaddigitizer.cc:160 hshowerpaddigitizer.cc:161 hshowerpaddigitizer.cc:162 hshowerpaddigitizer.cc:163 hshowerpaddigitizer.cc:164 hshowerpaddigitizer.cc:165 hshowerpaddigitizer.cc:166 hshowerpaddigitizer.cc:167 hshowerpaddigitizer.cc:168 hshowerpaddigitizer.cc:169 hshowerpaddigitizer.cc:170 hshowerpaddigitizer.cc:171 hshowerpaddigitizer.cc:172 hshowerpaddigitizer.cc:173 hshowerpaddigitizer.cc:174 hshowerpaddigitizer.cc:175 hshowerpaddigitizer.cc:176 hshowerpaddigitizer.cc:177 hshowerpaddigitizer.cc:178 hshowerpaddigitizer.cc:179 hshowerpaddigitizer.cc:180 hshowerpaddigitizer.cc:181 hshowerpaddigitizer.cc:182 hshowerpaddigitizer.cc:183 hshowerpaddigitizer.cc:184 hshowerpaddigitizer.cc:185 hshowerpaddigitizer.cc:186 hshowerpaddigitizer.cc:187 hshowerpaddigitizer.cc:188 hshowerpaddigitizer.cc:189 hshowerpaddigitizer.cc:190 hshowerpaddigitizer.cc:191 hshowerpaddigitizer.cc:192 hshowerpaddigitizer.cc:193 hshowerpaddigitizer.cc:194 hshowerpaddigitizer.cc:195 hshowerpaddigitizer.cc:196 hshowerpaddigitizer.cc:197 hshowerpaddigitizer.cc:198 hshowerpaddigitizer.cc:199 hshowerpaddigitizer.cc:200 hshowerpaddigitizer.cc:201 hshowerpaddigitizer.cc:202 hshowerpaddigitizer.cc:203 hshowerpaddigitizer.cc:204 hshowerpaddigitizer.cc:205 hshowerpaddigitizer.cc:206 hshowerpaddigitizer.cc:207 hshowerpaddigitizer.cc:208 hshowerpaddigitizer.cc:209 hshowerpaddigitizer.cc:210 hshowerpaddigitizer.cc:211 hshowerpaddigitizer.cc:212 hshowerpaddigitizer.cc:213 hshowerpaddigitizer.cc:214 hshowerpaddigitizer.cc:215 hshowerpaddigitizer.cc:216 hshowerpaddigitizer.cc:217 hshowerpaddigitizer.cc:218 hshowerpaddigitizer.cc:219 hshowerpaddigitizer.cc:220 hshowerpaddigitizer.cc:221 hshowerpaddigitizer.cc:222 hshowerpaddigitizer.cc:223 hshowerpaddigitizer.cc:224 hshowerpaddigitizer.cc:225 hshowerpaddigitizer.cc:226 hshowerpaddigitizer.cc:227 hshowerpaddigitizer.cc:228 hshowerpaddigitizer.cc:229 hshowerpaddigitizer.cc:230 hshowerpaddigitizer.cc:231 hshowerpaddigitizer.cc:232 hshowerpaddigitizer.cc:233 hshowerpaddigitizer.cc:234 hshowerpaddigitizer.cc:235 hshowerpaddigitizer.cc:236 hshowerpaddigitizer.cc:237 hshowerpaddigitizer.cc:238 hshowerpaddigitizer.cc:239 hshowerpaddigitizer.cc:240 hshowerpaddigitizer.cc:241 hshowerpaddigitizer.cc:242 hshowerpaddigitizer.cc:243 hshowerpaddigitizer.cc:244 hshowerpaddigitizer.cc:245 hshowerpaddigitizer.cc:246 hshowerpaddigitizer.cc:247 hshowerpaddigitizer.cc:248 hshowerpaddigitizer.cc:249 hshowerpaddigitizer.cc:250 hshowerpaddigitizer.cc:251 hshowerpaddigitizer.cc:252 hshowerpaddigitizer.cc:253 hshowerpaddigitizer.cc:254 hshowerpaddigitizer.cc:255 hshowerpaddigitizer.cc:256 hshowerpaddigitizer.cc:257 hshowerpaddigitizer.cc:258 hshowerpaddigitizer.cc:259 hshowerpaddigitizer.cc:260 hshowerpaddigitizer.cc:261 hshowerpaddigitizer.cc:262 hshowerpaddigitizer.cc:263 hshowerpaddigitizer.cc:264 hshowerpaddigitizer.cc:265 hshowerpaddigitizer.cc:266 hshowerpaddigitizer.cc:267 hshowerpaddigitizer.cc:268 hshowerpaddigitizer.cc:269 hshowerpaddigitizer.cc:270 hshowerpaddigitizer.cc:271 hshowerpaddigitizer.cc:272 hshowerpaddigitizer.cc:273 hshowerpaddigitizer.cc:274 hshowerpaddigitizer.cc:275 hshowerpaddigitizer.cc:276 hshowerpaddigitizer.cc:277 hshowerpaddigitizer.cc:278 hshowerpaddigitizer.cc:279 hshowerpaddigitizer.cc:280 hshowerpaddigitizer.cc:281 hshowerpaddigitizer.cc:282 hshowerpaddigitizer.cc:283 hshowerpaddigitizer.cc:284 hshowerpaddigitizer.cc:285 hshowerpaddigitizer.cc:286 hshowerpaddigitizer.cc:287 hshowerpaddigitizer.cc:288 hshowerpaddigitizer.cc:289 hshowerpaddigitizer.cc:290 hshowerpaddigitizer.cc:291 hshowerpaddigitizer.cc:292 hshowerpaddigitizer.cc:293 hshowerpaddigitizer.cc:294 hshowerpaddigitizer.cc:295 hshowerpaddigitizer.cc:296 hshowerpaddigitizer.cc:297 hshowerpaddigitizer.cc:298 hshowerpaddigitizer.cc:299 hshowerpaddigitizer.cc:300 hshowerpaddigitizer.cc:301 hshowerpaddigitizer.cc:302 hshowerpaddigitizer.cc:303 hshowerpaddigitizer.cc:304 hshowerpaddigitizer.cc:305 hshowerpaddigitizer.cc:306 hshowerpaddigitizer.cc:307 hshowerpaddigitizer.cc:308 hshowerpaddigitizer.cc:309 hshowerpaddigitizer.cc:310 hshowerpaddigitizer.cc:311 hshowerpaddigitizer.cc:312 hshowerpaddigitizer.cc:313 hshowerpaddigitizer.cc:314 hshowerpaddigitizer.cc:315 hshowerpaddigitizer.cc:316 hshowerpaddigitizer.cc:317 hshowerpaddigitizer.cc:318 hshowerpaddigitizer.cc:319 hshowerpaddigitizer.cc:320 hshowerpaddigitizer.cc:321 hshowerpaddigitizer.cc:322 hshowerpaddigitizer.cc:323 hshowerpaddigitizer.cc:324 hshowerpaddigitizer.cc:325 hshowerpaddigitizer.cc:326 hshowerpaddigitizer.cc:327 hshowerpaddigitizer.cc:328 hshowerpaddigitizer.cc:329 hshowerpaddigitizer.cc:330 hshowerpaddigitizer.cc:331 hshowerpaddigitizer.cc:332 hshowerpaddigitizer.cc:333 hshowerpaddigitizer.cc:334 hshowerpaddigitizer.cc:335 hshowerpaddigitizer.cc:336 hshowerpaddigitizer.cc:337 hshowerpaddigitizer.cc:338 hshowerpaddigitizer.cc:339 hshowerpaddigitizer.cc:340 hshowerpaddigitizer.cc:341 hshowerpaddigitizer.cc:342 hshowerpaddigitizer.cc:343 hshowerpaddigitizer.cc:344 hshowerpaddigitizer.cc:345 hshowerpaddigitizer.cc:346 hshowerpaddigitizer.cc:347 hshowerpaddigitizer.cc:348 hshowerpaddigitizer.cc:349 hshowerpaddigitizer.cc:350 hshowerpaddigitizer.cc:351 hshowerpaddigitizer.cc:352 hshowerpaddigitizer.cc:353 hshowerpaddigitizer.cc:354 hshowerpaddigitizer.cc:355 hshowerpaddigitizer.cc:356 hshowerpaddigitizer.cc:357 hshowerpaddigitizer.cc:358 hshowerpaddigitizer.cc:359 hshowerpaddigitizer.cc:360 hshowerpaddigitizer.cc:361 hshowerpaddigitizer.cc:362 hshowerpaddigitizer.cc:363 hshowerpaddigitizer.cc:364 hshowerpaddigitizer.cc:365 hshowerpaddigitizer.cc:366 hshowerpaddigitizer.cc:367 hshowerpaddigitizer.cc:368 hshowerpaddigitizer.cc:369 hshowerpaddigitizer.cc:370 hshowerpaddigitizer.cc:371 hshowerpaddigitizer.cc:372 hshowerpaddigitizer.cc:373 hshowerpaddigitizer.cc:374 hshowerpaddigitizer.cc:375 hshowerpaddigitizer.cc:376 hshowerpaddigitizer.cc:377 hshowerpaddigitizer.cc:378 hshowerpaddigitizer.cc:379 hshowerpaddigitizer.cc:380 hshowerpaddigitizer.cc:381 hshowerpaddigitizer.cc:382 hshowerpaddigitizer.cc:383 hshowerpaddigitizer.cc:384 hshowerpaddigitizer.cc:385 hshowerpaddigitizer.cc:386 hshowerpaddigitizer.cc:387 hshowerpaddigitizer.cc:388 hshowerpaddigitizer.cc:389 hshowerpaddigitizer.cc:390 hshowerpaddigitizer.cc:391 hshowerpaddigitizer.cc:392 hshowerpaddigitizer.cc:393 hshowerpaddigitizer.cc:394 hshowerpaddigitizer.cc:395 hshowerpaddigitizer.cc:396 hshowerpaddigitizer.cc:397 hshowerpaddigitizer.cc:398 hshowerpaddigitizer.cc:399 hshowerpaddigitizer.cc:400 hshowerpaddigitizer.cc:401 hshowerpaddigitizer.cc:402 hshowerpaddigitizer.cc:403 hshowerpaddigitizer.cc:404 hshowerpaddigitizer.cc:405 hshowerpaddigitizer.cc:406 hshowerpaddigitizer.cc:407 hshowerpaddigitizer.cc:408 hshowerpaddigitizer.cc:409 hshowerpaddigitizer.cc:410 hshowerpaddigitizer.cc:411 hshowerpaddigitizer.cc:412 hshowerpaddigitizer.cc:413 hshowerpaddigitizer.cc:414 hshowerpaddigitizer.cc:415 hshowerpaddigitizer.cc:416 hshowerpaddigitizer.cc:417 hshowerpaddigitizer.cc:418 hshowerpaddigitizer.cc:419 hshowerpaddigitizer.cc:420 hshowerpaddigitizer.cc:421 hshowerpaddigitizer.cc:422 hshowerpaddigitizer.cc:423 hshowerpaddigitizer.cc:424 hshowerpaddigitizer.cc:425 hshowerpaddigitizer.cc:426 hshowerpaddigitizer.cc:427 hshowerpaddigitizer.cc:428 hshowerpaddigitizer.cc:429 hshowerpaddigitizer.cc:430 hshowerpaddigitizer.cc:431 hshowerpaddigitizer.cc:432 hshowerpaddigitizer.cc:433 hshowerpaddigitizer.cc:434 hshowerpaddigitizer.cc:435 hshowerpaddigitizer.cc:436 hshowerpaddigitizer.cc:437 hshowerpaddigitizer.cc:438 hshowerpaddigitizer.cc:439 hshowerpaddigitizer.cc:440 hshowerpaddigitizer.cc:441 hshowerpaddigitizer.cc:442 hshowerpaddigitizer.cc:443 hshowerpaddigitizer.cc:444 hshowerpaddigitizer.cc:445 hshowerpaddigitizer.cc:446 hshowerpaddigitizer.cc:447 hshowerpaddigitizer.cc:448 hshowerpaddigitizer.cc:449 hshowerpaddigitizer.cc:450 hshowerpaddigitizer.cc:451 hshowerpaddigitizer.cc:452 hshowerpaddigitizer.cc:453 hshowerpaddigitizer.cc:454 hshowerpaddigitizer.cc:455 hshowerpaddigitizer.cc:456 hshowerpaddigitizer.cc:457 hshowerpaddigitizer.cc:458 hshowerpaddigitizer.cc:459 hshowerpaddigitizer.cc:460 hshowerpaddigitizer.cc:461 hshowerpaddigitizer.cc:462 hshowerpaddigitizer.cc:463 hshowerpaddigitizer.cc:464 hshowerpaddigitizer.cc:465 hshowerpaddigitizer.cc:466 hshowerpaddigitizer.cc:467 hshowerpaddigitizer.cc:468 hshowerpaddigitizer.cc:469 hshowerpaddigitizer.cc:470 hshowerpaddigitizer.cc:471 hshowerpaddigitizer.cc:472 hshowerpaddigitizer.cc:473 hshowerpaddigitizer.cc:474 hshowerpaddigitizer.cc:475 hshowerpaddigitizer.cc:476 hshowerpaddigitizer.cc:477 hshowerpaddigitizer.cc:478 hshowerpaddigitizer.cc:479 hshowerpaddigitizer.cc:480 hshowerpaddigitizer.cc:481 hshowerpaddigitizer.cc:482 hshowerpaddigitizer.cc:483 hshowerpaddigitizer.cc:484 hshowerpaddigitizer.cc:485 hshowerpaddigitizer.cc:486 hshowerpaddigitizer.cc:487 hshowerpaddigitizer.cc:488 hshowerpaddigitizer.cc:489 hshowerpaddigitizer.cc:490 hshowerpaddigitizer.cc:491 hshowerpaddigitizer.cc:492 hshowerpaddigitizer.cc:493 hshowerpaddigitizer.cc:494 hshowerpaddigitizer.cc:495 hshowerpaddigitizer.cc:496 hshowerpaddigitizer.cc:497 hshowerpaddigitizer.cc:498 hshowerpaddigitizer.cc:499 hshowerpaddigitizer.cc:500 hshowerpaddigitizer.cc:501 hshowerpaddigitizer.cc:502 hshowerpaddigitizer.cc:503 hshowerpaddigitizer.cc:504 hshowerpaddigitizer.cc:505 hshowerpaddigitizer.cc:506 hshowerpaddigitizer.cc:507 hshowerpaddigitizer.cc:508 hshowerpaddigitizer.cc:509 hshowerpaddigitizer.cc:510 hshowerpaddigitizer.cc:511 hshowerpaddigitizer.cc:512 hshowerpaddigitizer.cc:513 hshowerpaddigitizer.cc:514 hshowerpaddigitizer.cc:515 hshowerpaddigitizer.cc:516 hshowerpaddigitizer.cc:517 hshowerpaddigitizer.cc:518 hshowerpaddigitizer.cc:519 hshowerpaddigitizer.cc:520 hshowerpaddigitizer.cc:521 hshowerpaddigitizer.cc:522 hshowerpaddigitizer.cc:523 hshowerpaddigitizer.cc:524 hshowerpaddigitizer.cc:525 hshowerpaddigitizer.cc:526 hshowerpaddigitizer.cc:527 hshowerpaddigitizer.cc:528 hshowerpaddigitizer.cc:529 hshowerpaddigitizer.cc:530 hshowerpaddigitizer.cc:531 hshowerpaddigitizer.cc:532 hshowerpaddigitizer.cc:533 hshowerpaddigitizer.cc:534 hshowerpaddigitizer.cc:535 hshowerpaddigitizer.cc:536 hshowerpaddigitizer.cc:537 hshowerpaddigitizer.cc:538 hshowerpaddigitizer.cc:539 hshowerpaddigitizer.cc:540 hshowerpaddigitizer.cc:541 hshowerpaddigitizer.cc:542 hshowerpaddigitizer.cc:543 hshowerpaddigitizer.cc:544 hshowerpaddigitizer.cc:545 hshowerpaddigitizer.cc:546 hshowerpaddigitizer.cc:547 hshowerpaddigitizer.cc:548 hshowerpaddigitizer.cc:549 hshowerpaddigitizer.cc:550 hshowerpaddigitizer.cc:551 hshowerpaddigitizer.cc:552 hshowerpaddigitizer.cc:553 hshowerpaddigitizer.cc:554 hshowerpaddigitizer.cc:555 hshowerpaddigitizer.cc:556 hshowerpaddigitizer.cc:557 hshowerpaddigitizer.cc:558 hshowerpaddigitizer.cc:559 hshowerpaddigitizer.cc:560 hshowerpaddigitizer.cc:561 hshowerpaddigitizer.cc:562 hshowerpaddigitizer.cc:563 hshowerpaddigitizer.cc:564 hshowerpaddigitizer.cc:565 hshowerpaddigitizer.cc:566 hshowerpaddigitizer.cc:567 hshowerpaddigitizer.cc:568 hshowerpaddigitizer.cc:569 hshowerpaddigitizer.cc:570 hshowerpaddigitizer.cc:571 hshowerpaddigitizer.cc:572 hshowerpaddigitizer.cc:573 hshowerpaddigitizer.cc:574 hshowerpaddigitizer.cc:575 hshowerpaddigitizer.cc:576 hshowerpaddigitizer.cc:577 hshowerpaddigitizer.cc:578 hshowerpaddigitizer.cc:579 hshowerpaddigitizer.cc:580 hshowerpaddigitizer.cc:581 hshowerpaddigitizer.cc:582 hshowerpaddigitizer.cc:583 hshowerpaddigitizer.cc:584 hshowerpaddigitizer.cc:585 hshowerpaddigitizer.cc:586 hshowerpaddigitizer.cc:587 hshowerpaddigitizer.cc:588 hshowerpaddigitizer.cc:589 hshowerpaddigitizer.cc:590 hshowerpaddigitizer.cc:591 hshowerpaddigitizer.cc:592 hshowerpaddigitizer.cc:593 hshowerpaddigitizer.cc:594 hshowerpaddigitizer.cc:595 hshowerpaddigitizer.cc:596 hshowerpaddigitizer.cc:597 hshowerpaddigitizer.cc:598 hshowerpaddigitizer.cc:599 hshowerpaddigitizer.cc:600 hshowerpaddigitizer.cc:601 hshowerpaddigitizer.cc:602 hshowerpaddigitizer.cc:603 hshowerpaddigitizer.cc:604 hshowerpaddigitizer.cc:605 hshowerpaddigitizer.cc:606 hshowerpaddigitizer.cc:607 hshowerpaddigitizer.cc:608 hshowerpaddigitizer.cc:609 hshowerpaddigitizer.cc:610 hshowerpaddigitizer.cc:611 hshowerpaddigitizer.cc:612 hshowerpaddigitizer.cc:613 hshowerpaddigitizer.cc:614 hshowerpaddigitizer.cc:615 hshowerpaddigitizer.cc:616 hshowerpaddigitizer.cc:617 hshowerpaddigitizer.cc:618 hshowerpaddigitizer.cc:619 hshowerpaddigitizer.cc:620 hshowerpaddigitizer.cc:621 hshowerpaddigitizer.cc:622 hshowerpaddigitizer.cc:623 hshowerpaddigitizer.cc:624 hshowerpaddigitizer.cc:625 hshowerpaddigitizer.cc:626 hshowerpaddigitizer.cc:627 hshowerpaddigitizer.cc:628 hshowerpaddigitizer.cc:629 hshowerpaddigitizer.cc:630 hshowerpaddigitizer.cc:631 hshowerpaddigitizer.cc:632 hshowerpaddigitizer.cc:633 hshowerpaddigitizer.cc:634 hshowerpaddigitizer.cc:635 hshowerpaddigitizer.cc:636 hshowerpaddigitizer.cc:637 hshowerpaddigitizer.cc:638 hshowerpaddigitizer.cc:639 hshowerpaddigitizer.cc:640 hshowerpaddigitizer.cc:641 hshowerpaddigitizer.cc:642 hshowerpaddigitizer.cc:643 hshowerpaddigitizer.cc:644 hshowerpaddigitizer.cc:645 hshowerpaddigitizer.cc:646 hshowerpaddigitizer.cc:647 hshowerpaddigitizer.cc:648 hshowerpaddigitizer.cc:649 hshowerpaddigitizer.cc:650 hshowerpaddigitizer.cc:651 hshowerpaddigitizer.cc:652 hshowerpaddigitizer.cc:653 hshowerpaddigitizer.cc:654 hshowerpaddigitizer.cc:655 hshowerpaddigitizer.cc:656 hshowerpaddigitizer.cc:657 hshowerpaddigitizer.cc:658 hshowerpaddigitizer.cc:659 hshowerpaddigitizer.cc:660 hshowerpaddigitizer.cc:661 hshowerpaddigitizer.cc:662 hshowerpaddigitizer.cc:663 hshowerpaddigitizer.cc:664 hshowerpaddigitizer.cc:665 hshowerpaddigitizer.cc:666 hshowerpaddigitizer.cc:667 hshowerpaddigitizer.cc:668 hshowerpaddigitizer.cc:669 hshowerpaddigitizer.cc:670 hshowerpaddigitizer.cc:671 hshowerpaddigitizer.cc:672 hshowerpaddigitizer.cc:673 hshowerpaddigitizer.cc:674 hshowerpaddigitizer.cc:675 hshowerpaddigitizer.cc:676 hshowerpaddigitizer.cc:677 hshowerpaddigitizer.cc:678 hshowerpaddigitizer.cc:679 hshowerpaddigitizer.cc:680 hshowerpaddigitizer.cc:681 hshowerpaddigitizer.cc:682 hshowerpaddigitizer.cc:683 hshowerpaddigitizer.cc:684 hshowerpaddigitizer.cc:685 hshowerpaddigitizer.cc:686 hshowerpaddigitizer.cc:687 hshowerpaddigitizer.cc:688 hshowerpaddigitizer.cc:689 hshowerpaddigitizer.cc:690 hshowerpaddigitizer.cc:691 hshowerpaddigitizer.cc:692 hshowerpaddigitizer.cc:693 hshowerpaddigitizer.cc:694 hshowerpaddigitizer.cc:695 hshowerpaddigitizer.cc:696 hshowerpaddigitizer.cc:697 hshowerpaddigitizer.cc:698 hshowerpaddigitizer.cc:699 hshowerpaddigitizer.cc:700 hshowerpaddigitizer.cc:701 hshowerpaddigitizer.cc:702 hshowerpaddigitizer.cc:703 hshowerpaddigitizer.cc:704 hshowerpaddigitizer.cc:705 hshowerpaddigitizer.cc:706 hshowerpaddigitizer.cc:707 hshowerpaddigitizer.cc:708 hshowerpaddigitizer.cc:709 hshowerpaddigitizer.cc:710 hshowerpaddigitizer.cc:711 hshowerpaddigitizer.cc:712 hshowerpaddigitizer.cc:713 hshowerpaddigitizer.cc:714 hshowerpaddigitizer.cc:715 hshowerpaddigitizer.cc:716 hshowerpaddigitizer.cc:717 hshowerpaddigitizer.cc:718 hshowerpaddigitizer.cc:719 hshowerpaddigitizer.cc:720 hshowerpaddigitizer.cc:721 hshowerpaddigitizer.cc:722 hshowerpaddigitizer.cc:723 hshowerpaddigitizer.cc:724 hshowerpaddigitizer.cc:725 hshowerpaddigitizer.cc:726 hshowerpaddigitizer.cc:727 hshowerpaddigitizer.cc:728 hshowerpaddigitizer.cc:729 hshowerpaddigitizer.cc:730 hshowerpaddigitizer.cc:731 hshowerpaddigitizer.cc:732 hshowerpaddigitizer.cc:733 hshowerpaddigitizer.cc:734 hshowerpaddigitizer.cc:735 hshowerpaddigitizer.cc:736 hshowerpaddigitizer.cc:737 hshowerpaddigitizer.cc:738 hshowerpaddigitizer.cc:739 hshowerpaddigitizer.cc:740 hshowerpaddigitizer.cc:741 hshowerpaddigitizer.cc:742 hshowerpaddigitizer.cc:743 hshowerpaddigitizer.cc:744 hshowerpaddigitizer.cc:745 hshowerpaddigitizer.cc:746 hshowerpaddigitizer.cc:747 hshowerpaddigitizer.cc:748 hshowerpaddigitizer.cc:749 hshowerpaddigitizer.cc:750 hshowerpaddigitizer.cc:751 hshowerpaddigitizer.cc:752 hshowerpaddigitizer.cc:753 hshowerpaddigitizer.cc:754 hshowerpaddigitizer.cc:755 hshowerpaddigitizer.cc:756 hshowerpaddigitizer.cc:757 hshowerpaddigitizer.cc:758 hshowerpaddigitizer.cc:759 hshowerpaddigitizer.cc:760 hshowerpaddigitizer.cc:761 hshowerpaddigitizer.cc:762 hshowerpaddigitizer.cc:763 hshowerpaddigitizer.cc:764 hshowerpaddigitizer.cc:765 hshowerpaddigitizer.cc:766 hshowerpaddigitizer.cc:767 hshowerpaddigitizer.cc:768 hshowerpaddigitizer.cc:769 hshowerpaddigitizer.cc:770 hshowerpaddigitizer.cc:771 hshowerpaddigitizer.cc:772 hshowerpaddigitizer.cc:773 hshowerpaddigitizer.cc:774 hshowerpaddigitizer.cc:775 hshowerpaddigitizer.cc:776 hshowerpaddigitizer.cc:777 hshowerpaddigitizer.cc:778 hshowerpaddigitizer.cc:779 hshowerpaddigitizer.cc:780 hshowerpaddigitizer.cc:781 hshowerpaddigitizer.cc:782 hshowerpaddigitizer.cc:783 hshowerpaddigitizer.cc:784 hshowerpaddigitizer.cc:785 hshowerpaddigitizer.cc:786 hshowerpaddigitizer.cc:787 hshowerpaddigitizer.cc:788 hshowerpaddigitizer.cc:789 hshowerpaddigitizer.cc:790 hshowerpaddigitizer.cc:791 hshowerpaddigitizer.cc:792 hshowerpaddigitizer.cc:793 hshowerpaddigitizer.cc:794 hshowerpaddigitizer.cc:795 hshowerpaddigitizer.cc:796 hshowerpaddigitizer.cc:797 hshowerpaddigitizer.cc:798 hshowerpaddigitizer.cc:799 hshowerpaddigitizer.cc:800 hshowerpaddigitizer.cc:801 hshowerpaddigitizer.cc:802 hshowerpaddigitizer.cc:803 hshowerpaddigitizer.cc:804 hshowerpaddigitizer.cc:805 hshowerpaddigitizer.cc:806 hshowerpaddigitizer.cc:807 hshowerpaddigitizer.cc:808 hshowerpaddigitizer.cc:809 hshowerpaddigitizer.cc:810 hshowerpaddigitizer.cc:811 hshowerpaddigitizer.cc:812 hshowerpaddigitizer.cc:813 hshowerpaddigitizer.cc:814 hshowerpaddigitizer.cc:815 hshowerpaddigitizer.cc:816 hshowerpaddigitizer.cc:817 hshowerpaddigitizer.cc:818 hshowerpaddigitizer.cc:819 hshowerpaddigitizer.cc:820 hshowerpaddigitizer.cc:821 hshowerpaddigitizer.cc:822 hshowerpaddigitizer.cc:823 hshowerpaddigitizer.cc:824 hshowerpaddigitizer.cc:825 hshowerpaddigitizer.cc:826 hshowerpaddigitizer.cc:827 hshowerpaddigitizer.cc:828 hshowerpaddigitizer.cc:829 hshowerpaddigitizer.cc:830 hshowerpaddigitizer.cc:831 hshowerpaddigitizer.cc:832 hshowerpaddigitizer.cc:833 hshowerpaddigitizer.cc:834 hshowerpaddigitizer.cc:835 hshowerpaddigitizer.cc:836 hshowerpaddigitizer.cc:837 hshowerpaddigitizer.cc:838 hshowerpaddigitizer.cc:839 hshowerpaddigitizer.cc:840 hshowerpaddigitizer.cc:841 hshowerpaddigitizer.cc:842 hshowerpaddigitizer.cc:843 hshowerpaddigitizer.cc:844 hshowerpaddigitizer.cc:845 hshowerpaddigitizer.cc:846 hshowerpaddigitizer.cc:847 hshowerpaddigitizer.cc:848 hshowerpaddigitizer.cc:849 hshowerpaddigitizer.cc:850 hshowerpaddigitizer.cc:851 hshowerpaddigitizer.cc:852 hshowerpaddigitizer.cc:853 hshowerpaddigitizer.cc:854 hshowerpaddigitizer.cc:855 hshowerpaddigitizer.cc:856 hshowerpaddigitizer.cc:857 hshowerpaddigitizer.cc:858 hshowerpaddigitizer.cc:859 hshowerpaddigitizer.cc:860 hshowerpaddigitizer.cc:861 hshowerpaddigitizer.cc:862 hshowerpaddigitizer.cc:863 hshowerpaddigitizer.cc:864 hshowerpaddigitizer.cc:865 hshowerpaddigitizer.cc:866 hshowerpaddigitizer.cc:867 hshowerpaddigitizer.cc:868 hshowerpaddigitizer.cc:869 hshowerpaddigitizer.cc:870 hshowerpaddigitizer.cc:871 hshowerpaddigitizer.cc:872 hshowerpaddigitizer.cc:873 hshowerpaddigitizer.cc:874 hshowerpaddigitizer.cc:875 hshowerpaddigitizer.cc:876 hshowerpaddigitizer.cc:877 hshowerpaddigitizer.cc:878 hshowerpaddigitizer.cc:879 hshowerpaddigitizer.cc:880 hshowerpaddigitizer.cc:881 hshowerpaddigitizer.cc:882 hshowerpaddigitizer.cc:883 hshowerpaddigitizer.cc:884 hshowerpaddigitizer.cc:885 hshowerpaddigitizer.cc:886 hshowerpaddigitizer.cc:887 hshowerpaddigitizer.cc:888 hshowerpaddigitizer.cc:889 hshowerpaddigitizer.cc:890 hshowerpaddigitizer.cc:891 hshowerpaddigitizer.cc:892 hshowerpaddigitizer.cc:893 hshowerpaddigitizer.cc:894 hshowerpaddigitizer.cc:895 hshowerpaddigitizer.cc:896 hshowerpaddigitizer.cc:897 hshowerpaddigitizer.cc:898 hshowerpaddigitizer.cc:899 hshowerpaddigitizer.cc:900 hshowerpaddigitizer.cc:901 hshowerpaddigitizer.cc:902 hshowerpaddigitizer.cc:903 hshowerpaddigitizer.cc:904 hshowerpaddigitizer.cc:905 hshowerpaddigitizer.cc:906 hshowerpaddigitizer.cc:907 hshowerpaddigitizer.cc:908 hshowerpaddigitizer.cc:909 hshowerpaddigitizer.cc:910 hshowerpaddigitizer.cc:911 hshowerpaddigitizer.cc:912 hshowerpaddigitizer.cc:913 hshowerpaddigitizer.cc:914 hshowerpaddigitizer.cc:915 hshowerpaddigitizer.cc:916 hshowerpaddigitizer.cc:917 hshowerpaddigitizer.cc:918 hshowerpaddigitizer.cc:919 hshowerpaddigitizer.cc:920 hshowerpaddigitizer.cc:921 hshowerpaddigitizer.cc:922 hshowerpaddigitizer.cc:923 hshowerpaddigitizer.cc:924 hshowerpaddigitizer.cc:925 hshowerpaddigitizer.cc:926 hshowerpaddigitizer.cc:927 hshowerpaddigitizer.cc:928 hshowerpaddigitizer.cc:929 hshowerpaddigitizer.cc:930 hshowerpaddigitizer.cc:931 hshowerpaddigitizer.cc:932 hshowerpaddigitizer.cc:933 hshowerpaddigitizer.cc:934 hshowerpaddigitizer.cc:935 hshowerpaddigitizer.cc:936 hshowerpaddigitizer.cc:937 hshowerpaddigitizer.cc:938 hshowerpaddigitizer.cc:939 hshowerpaddigitizer.cc:940 hshowerpaddigitizer.cc:941 hshowerpaddigitizer.cc:942 hshowerpaddigitizer.cc:943 hshowerpaddigitizer.cc:944 hshowerpaddigitizer.cc:945 hshowerpaddigitizer.cc:946 hshowerpaddigitizer.cc:947 hshowerpaddigitizer.cc:948 hshowerpaddigitizer.cc:949 hshowerpaddigitizer.cc:950 hshowerpaddigitizer.cc:951 hshowerpaddigitizer.cc:952 hshowerpaddigitizer.cc:953 hshowerpaddigitizer.cc:954 hshowerpaddigitizer.cc:955 hshowerpaddigitizer.cc:956 hshowerpaddigitizer.cc:957 hshowerpaddigitizer.cc:958 hshowerpaddigitizer.cc:959 hshowerpaddigitizer.cc:960 hshowerpaddigitizer.cc:961 hshowerpaddigitizer.cc:962 hshowerpaddigitizer.cc:963 hshowerpaddigitizer.cc:964 hshowerpaddigitizer.cc:965 hshowerpaddigitizer.cc:966 hshowerpaddigitizer.cc:967 hshowerpaddigitizer.cc:968 hshowerpaddigitizer.cc:969 hshowerpaddigitizer.cc:970 hshowerpaddigitizer.cc:971 hshowerpaddigitizer.cc:972 hshowerpaddigitizer.cc:973 hshowerpaddigitizer.cc:974 hshowerpaddigitizer.cc:975 hshowerpaddigitizer.cc:976 hshowerpaddigitizer.cc:977 hshowerpaddigitizer.cc:978 hshowerpaddigitizer.cc:979 hshowerpaddigitizer.cc:980 hshowerpaddigitizer.cc:981 hshowerpaddigitizer.cc:982 hshowerpaddigitizer.cc:983 hshowerpaddigitizer.cc:984 hshowerpaddigitizer.cc:985 hshowerpaddigitizer.cc:986 hshowerpaddigitizer.cc:987 hshowerpaddigitizer.cc:988 hshowerpaddigitizer.cc:989 hshowerpaddigitizer.cc:990 hshowerpaddigitizer.cc:991 hshowerpaddigitizer.cc:992 hshowerpaddigitizer.cc:993 hshowerpaddigitizer.cc:994 hshowerpaddigitizer.cc:995 hshowerpaddigitizer.cc:996 hshowerpaddigitizer.cc:997 hshowerpaddigitizer.cc:998 hshowerpaddigitizer.cc:999 hshowerpaddigitizer.cc:1000 hshowerpaddigitizer.cc:1001 hshowerpaddigitizer.cc:1002 hshowerpaddigitizer.cc:1003 hshowerpaddigitizer.cc:1004 hshowerpaddigitizer.cc:1005 hshowerpaddigitizer.cc:1006 hshowerpaddigitizer.cc:1007 hshowerpaddigitizer.cc:1008 hshowerpaddigitizer.cc:1009 hshowerpaddigitizer.cc:1010 hshowerpaddigitizer.cc:1011 hshowerpaddigitizer.cc:1012 hshowerpaddigitizer.cc:1013 hshowerpaddigitizer.cc:1014 hshowerpaddigitizer.cc:1015 hshowerpaddigitizer.cc:1016 hshowerpaddigitizer.cc:1017 hshowerpaddigitizer.cc:1018 hshowerpaddigitizer.cc:1019 hshowerpaddigitizer.cc:1020 hshowerpaddigitizer.cc:1021 hshowerpaddigitizer.cc:1022 hshowerpaddigitizer.cc:1023 hshowerpaddigitizer.cc:1024 hshowerpaddigitizer.cc:1025 hshowerpaddigitizer.cc:1026 hshowerpaddigitizer.cc:1027 hshowerpaddigitizer.cc:1028 hshowerpaddigitizer.cc:1029 hshowerpaddigitizer.cc:1030 hshowerpaddigitizer.cc:1031 hshowerpaddigitizer.cc:1032 hshowerpaddigitizer.cc:1033 hshowerpaddigitizer.cc:1034 hshowerpaddigitizer.cc:1035 hshowerpaddigitizer.cc:1036 hshowerpaddigitizer.cc:1037 hshowerpaddigitizer.cc:1038 hshowerpaddigitizer.cc:1039 hshowerpaddigitizer.cc:1040 hshowerpaddigitizer.cc:1041 hshowerpaddigitizer.cc:1042 hshowerpaddigitizer.cc:1043 hshowerpaddigitizer.cc:1044 hshowerpaddigitizer.cc:1045 hshowerpaddigitizer.cc:1046 hshowerpaddigitizer.cc:1047 hshowerpaddigitizer.cc:1048 hshowerpaddigitizer.cc:1049 hshowerpaddigitizer.cc:1050 hshowerpaddigitizer.cc:1051 hshowerpaddigitizer.cc:1052 hshowerpaddigitizer.cc:1053 hshowerpaddigitizer.cc:1054 hshowerpaddigitizer.cc:1055 hshowerpaddigitizer.cc:1056 hshowerpaddigitizer.cc:1057 hshowerpaddigitizer.cc:1058 hshowerpaddigitizer.cc:1059 hshowerpaddigitizer.cc:1060 hshowerpaddigitizer.cc:1061 hshowerpaddigitizer.cc:1062 hshowerpaddigitizer.cc:1063 hshowerpaddigitizer.cc:1064 hshowerpaddigitizer.cc:1065 hshowerpaddigitizer.cc:1066 hshowerpaddigitizer.cc:1067 hshowerpaddigitizer.cc:1068 hshowerpaddigitizer.cc:1069 hshowerpaddigitizer.cc:1070 hshowerpaddigitizer.cc:1071 hshowerpaddigitizer.cc:1072 hshowerpaddigitizer.cc:1073 hshowerpaddigitizer.cc:1074 hshowerpaddigitizer.cc:1075 hshowerpaddigitizer.cc:1076 hshowerpaddigitizer.cc:1077 hshowerpaddigitizer.cc:1078 hshowerpaddigitizer.cc:1079 hshowerpaddigitizer.cc:1080 hshowerpaddigitizer.cc:1081 hshowerpaddigitizer.cc:1082 hshowerpaddigitizer.cc:1083 hshowerpaddigitizer.cc:1084 hshowerpaddigitizer.cc:1085 hshowerpaddigitizer.cc:1086 hshowerpaddigitizer.cc:1087 hshowerpaddigitizer.cc:1088 hshowerpaddigitizer.cc:1089 hshowerpaddigitizer.cc:1090 hshowerpaddigitizer.cc:1091 hshowerpaddigitizer.cc:1092 hshowerpaddigitizer.cc:1093 hshowerpaddigitizer.cc:1094 hshowerpaddigitizer.cc:1095 hshowerpaddigitizer.cc:1096 hshowerpaddigitizer.cc:1097 hshowerpaddigitizer.cc:1098 hshowerpaddigitizer.cc:1099 hshowerpaddigitizer.cc:1100 hshowerpaddigitizer.cc:1101 hshowerpaddigitizer.cc:1102 hshowerpaddigitizer.cc:1103