49 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
60 #include "Math/DistFunc.h"
64 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
68 #define LOGERROR(x) edm::LogError(x)
69 #define LOGDEBUG(x) LogDebug(x)
77 #define LOGERROR(x) std::cout << x << ": "
78 #define LOGDEBUG(x) std::cout << x << ": "
79 #define ENDL std::endl
82 using namespace SiPixelTemplateReco;
127 float& yrec,
float& sigmay,
float& proby,
float& xrec,
float& sigmax,
float& probx,
int& qbin,
int speed,
bool deadpix, std::vector<std::pair<int, int> >& zeropix,
132 int i,
j,
k, minbin, binl, binh, binq, midpix, fypix, nypix, lypix, logypx;
133 int fxpix, nxpix, lxpix, logxpx, shifty, shiftx, nyzero[
TYSIZE];
135 int deltaj, jmin, jmax, fxbin, lxbin, fybin, lybin, djy, djx;
137 float sythr, sxthr, rnorm,
delta, sigma, sigavg, pseudopix, qscale, q50;
138 float ss2, ssa, sa2, ssba, saba, sba2, rat, fq, qtotal, qpixel;
139 float originx, originy, qfy, qly, qfx, qlx, bias,
maxpix, minmax;
140 double chi2x, meanx, chi2y, meany, chi2ymin, chi2xmin, chi21max;
141 double hchi2, hndof, prvav, mpv, sigmaQ,
kappa, xvav, beta2;
143 float chi2ybin[41], chi2xbin[41], ysig2[
BYSIZE], xsig2[
BXSIZE];
145 bool yd[
BYSIZE], xd[
BXSIZE], anyyd, anyxd, calc_probQ, use_VVIObj;
147 const float probmin={1.110223e-16};
148 const float probQmin={1.e-5};
152 const double mean1pix={0.100}, chi21min={0.160};
157 if(!templ.
interpolate(
id, cotalpha, cotbeta, locBz)) {
158 if (
theVerboseLevel > 2) {
LOGDEBUG(
"SiPixelTemplateReco") <<
"input cluster direction cot(alpha) = " << cotalpha <<
", cot(beta) = " << cotbeta<<
", local B_z = " << locBz <<
", template ID = " <<
id <<
", no reconstruction performed" <<
ENDL;}
168 if(speed < -1) use_VVIObj =
true;
174 if(speed < 5) use_VVIObj =
true;
180 xsize = templ.
xsize();
181 ysize = templ.
ysize();
186 pseudopix = 0.2f*q50;
194 nclusx = cluster.
mrow;
195 nclusy = (int)cluster.
mcol;
196 auto const xdouble = cluster.
xdouble;
197 auto const ydouble = cluster.
ydouble;
201 for(i=0; i<nclusx*nclusy; ++i) {
207 for(j=0; j<nclusx; ++
j)
208 for(i=0; i<nclusy; ++
i) {
210 if(ydouble[i]) {maxpix *=2.f;}
211 if(cluster(j,i) > maxpix) {cluster(j,i) =
maxpix;}
218 fypix =
BYM3; lypix = -1;
219 memset(nyzero, 0,
TYSIZE *
sizeof(
int));
220 memset(ysum, 0,
BYSIZE *
sizeof(
float));
221 for(i=0; i<nclusy; ++
i) {
223 for(j=0; j<nclusx; ++
j) {
224 ysum[
i] += cluster(j,i);
228 if(i < fypix) {fypix =
i;}
229 if(i > lypix) {lypix =
i;}
237 std::vector<std::pair<int, int> >::const_iterator zeroIter = zeropix.begin(), zeroEnd = zeropix.end();
238 for ( ; zeroIter != zeroEnd; ++zeroIter ) {
239 i = zeroIter->second;
240 if(i<0 || i>
TYSIZE-1) {
LOGERROR(
"SiPixelTemplateReco") <<
"dead pixel column y-index " << i <<
", no reconstruction performed" <<
ENDL;
246 if(i < fypix) {fypix =
i;}
247 if(i > lypix) {lypix =
i;}
250 nypix = lypix-fypix+1;
254 for (zeroIter = zeropix.begin(); zeroIter != zeroEnd; ++zeroIter ) {
255 i = zeroIter->second; j = zeroIter->first;
256 if(j<0 || j>
TXSIZE-1) {
LOGERROR(
"SiPixelTemplateReco") <<
"dead pixel column x-index " << j <<
", no reconstruction performed" <<
ENDL;
258 if((i == fypix || i == lypix) && nypix > 1) {maxpix = templ.
symax()/2.;}
else {maxpix = templ.
symax();}
259 if(ydouble[i]) {maxpix *=2.;}
260 if(nyzero[i] > 0 && nyzero[i] < 3) {qpixel = (maxpix - ysum[
i])/(
float)nyzero[
i];}
else {qpixel = 1.;}
261 if(qpixel < 1.) {qpixel = 1.;}
262 cluster(j,i) = qpixel;
271 for(i=0; i<
BYSIZE; ++
i) { ysum[
i] = 0.f; yd[
i] =
false;}
274 for(i=0; i<nclusy; ++
i) {
275 for(j=0; j<nclusx; ++
j) {
276 ysum[
k] += cluster(j,i);
292 if(k >
BYM1) {
break;}
297 for(i=0; i<
BXSIZE; ++
i) { xsum[
i] = 0.f; xd[
i] =
false;}
300 for(j=0; j<nclusx; ++
j) {
301 for(i=0; i<nclusy; ++
i) {
302 xsum[
k] += cluster(j,i);
318 if(k >
BXM1) {
break;}
329 if(fypix == -1) {fypix =
i;}
331 ysort[logypx] = ysum[
i];
343 if((lypix-fypix+1) != nypix || nypix == 0) {
344 LOGDEBUG(
"SiPixelTemplateReco") <<
"y-length of pixel cluster doesn't agree with number of pixels above threshold" <<
ENDL;
346 LOGDEBUG(
"SiPixelTemplateReco") <<
"ysum[] = ";
347 for(i=0; i<BYSIZE-1; ++
i) {
LOGDEBUG(
"SiPixelTemplateReco") << ysum[
i] <<
", ";}
348 LOGDEBUG(
"SiPixelTemplateReco") << ysum[BYSIZE-1] <<
ENDL;
357 LOGDEBUG(
"SiPixelTemplateReco") <<
"y-length of pixel cluster is larger than maximum template size" <<
ENDL;
359 LOGDEBUG(
"SiPixelTemplateReco") <<
"ysum[] = ";
360 for(i=0; i<BYSIZE-1; ++
i) {
LOGDEBUG(
"SiPixelTemplateReco") << ysum[
i] <<
", ";}
361 LOGDEBUG(
"SiPixelTemplateReco") << ysum[BYSIZE-1] <<
ENDL;
374 midpix = (fypix+lypix)/2;
375 shifty = templ.
cytemp() - midpix;
377 for(i=lypix; i>=fypix; --
i) {
378 ysum[i+shifty] = ysum[
i];
380 yd[i+shifty] = yd[
i];
383 }
else if (shifty < 0) {
384 for(i=fypix; i<=lypix; ++
i) {
385 ysum[i+shifty] = ysum[
i];
387 yd[i+shifty] = yd[
i];
396 if(fypix > 1 && fypix <
BYM2) {
397 ysum[fypix-1] = pseudopix;
398 ysum[fypix-2] = pseudopix;
400 if(lypix > 1 && lypix <
BYM2) {
401 ysum[lypix+1] = pseudopix;
402 ysum[lypix+2] = pseudopix;
421 if(fxpix == -1) {fxpix =
i;}
423 xsort[logxpx] = xsum[
i];
435 if((lxpix-fxpix+1) != nxpix) {
437 LOGDEBUG(
"SiPixelTemplateReco") <<
"x-length of pixel cluster doesn't agree with number of pixels above threshold" <<
ENDL;
439 LOGDEBUG(
"SiPixelTemplateReco") <<
"xsum[] = ";
440 for(i=0; i<BXSIZE-1; ++
i) {
LOGDEBUG(
"SiPixelTemplateReco") << xsum[
i] <<
", ";}
441 LOGDEBUG(
"SiPixelTemplateReco") << ysum[BXSIZE-1] <<
ENDL;
451 LOGDEBUG(
"SiPixelTemplateReco") <<
"x-length of pixel cluster is larger than maximum template size" <<
ENDL;
453 LOGDEBUG(
"SiPixelTemplateReco") <<
"xsum[] = ";
454 for(i=0; i<BXSIZE-1; ++
i) {
LOGDEBUG(
"SiPixelTemplateReco") << xsum[
i] <<
", ";}
455 LOGDEBUG(
"SiPixelTemplateReco") << ysum[BXSIZE-1] <<
ENDL;
468 midpix = (fxpix+lxpix)/2;
469 shiftx = templ.
cxtemp() - midpix;
471 for(i=lxpix; i>=fxpix; --
i) {
472 xsum[i+shiftx] = xsum[
i];
474 xd[i+shiftx] = xd[
i];
477 }
else if (shiftx < 0) {
478 for(i=fxpix; i<=lxpix; ++
i) {
479 xsum[i+shiftx] = xsum[
i];
481 xd[i+shiftx] = xd[
i];
490 if(fxpix > 1 && fxpix <
BXM2) {
491 xsum[fxpix-1] = pseudopix;
492 xsum[fxpix-2] = pseudopix;
494 if(lxpix > 1 && lxpix <
BXM2) {
495 xsum[lxpix+1] = pseudopix;
496 xsum[lxpix+2] = pseudopix;
509 fq = qtotal/templ.
qavg();
527 if(!deadpix && qtotal < 0.95
f*templ.
qmin()) {qbin = 5;}
else {
528 if(!deadpix && qtotal < 0.95
f*templ.
qmin(1)) {qbin = 4;}
533 " cot(alpha) = " << cotalpha <<
" cot(beta) = " << cotbeta <<
534 " nclusx = " << nclusx <<
" nclusy = " << nclusy <<
ENDL;
542 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
543 if(speed < 0 || speed > 3) {
544 throw cms::Exception(
"DataCorrupt") <<
"SiPixelTemplateReco::PixelTempReco2D called with illegal speed = " << speed << std::endl;
547 assert(speed >= 0 && speed < 4);
549 fybin = 2; lybin = 38; fxbin = 2; lxbin = 38; djy = 1; djx = 1;
551 fybin = 8; lybin = 32;
552 if(yd[fypix]) {fybin = 4; lybin = 36;}
554 if(yd[lypix-1]) {fybin = 4; lybin = 36;}
556 fxbin = 8; lxbin = 32;
557 if(xd[fxpix]) {fxbin = 4; lxbin = 36;}
559 if(xd[lxpix-1]) {fxbin = 4; lxbin = 36;}
566 if(!anyyd) {djy = 4;}
567 if(!anyxd) {djx = 4;}
573 "fypix " << fypix <<
" lypix = " << lypix <<
574 " fybin = " << fybin <<
" lybin = " << lybin <<
575 " djy = " << djy <<
" logypx = " << logypx <<
ENDL;
577 "fxpix " << fxpix <<
" lxpix = " << lxpix <<
578 " fxbin = " << fxbin <<
" lxbin = " << lxbin <<
579 " djx = " << djx <<
" logxpx = " << logxpx <<
ENDL;
584 templ.
ytemp(fybin, lybin, ytemp);
586 templ.
xtemp(fxbin, lxbin, xtemp);
597 if(yd[i] && !yd[i+1]) {
598 for(j=fybin; j<=lybin; ++
j) {
602 sigavg = (ytemp[
j][
i] + ytemp[
j][i+1])/2.
f;
603 ytemp[
j][
i] = sigavg;
604 ytemp[
j][i+1] = sigavg;
615 sythr = 1.1*(templ.
symax());
619 std::sort(&ysort[0], &ysort[logypx]);
620 if(logypx == 1) {sythr = 1.01f*ysort[0];}
else {
621 if (ysort[1] > sythr) { sythr = 1.01f*ysort[1]; }
627 templ.
ysigma2(fypix, lypix, sythr, ysum, ysig2);
632 for(i=fybin; i<=lybin; ++
i) { chi2ybin[
i] = -1.e15f;}
634 for(i=fypix-2; i<=lypix+2; ++
i) {
635 yw2[
i] = 1.f/ysig2[
i];
636 ysw[
i] = ysum[
i]*yw2[
i];
637 ss2 += ysum[
i]*ysw[
i];
645 for(j=jmin; j<=jmax; j+=deltaj) {
646 if(chi2ybin[j] < -100.
f) {
649 for(i=fypix-2; i<=lypix+2; ++
i) {
650 ssa += ysw[
i]*ytemp[
j][
i];
651 sa2 += ytemp[
j][
i]*ytemp[
j][
i]*yw2[
i];
654 if(rat <= 0.
f) {
LOGERROR(
"SiPixelTemplateReco") <<
"illegal chi2ymin normalization (1) = " << rat <<
ENDL; rat = 1.;}
655 chi2ybin[
j]=ss2-2.f*ssa/rat+sa2/(rat*rat);
657 if(chi2ybin[j] < chi2ymin) {
658 chi2ymin = chi2ybin[
j];
663 if(minbin > fybin) {jmin = minbin - deltaj;}
else {jmin = fybin;}
664 if(minbin < lybin) {jmax = minbin + deltaj;}
else {jmax = lybin;}
669 "minbin " << minbin <<
" chi2ymin = " << chi2ymin <<
ENDL;
677 delta = templ.
dyone();
678 sigma = templ.
syone();
680 delta = templ.
dytwo();
681 sigma = templ.
sytwo();
684 yrec = 0.5f*(fypix+lypix-2*shifty+2.f*originy)*ysize-delta;
693 chi21max = fmax(chi21min, (
double)templ.
chi2yminone());
695 if(chi2ymin < 0.) {chi2ymin = 0.;}
697 meany = fmax(mean1pix, (
double)templ.
chi2yavgone());
698 hchi2 = chi2ymin/2.; hndof = meany/2.;
707 if(binl < fybin) { binl = fybin;}
708 if(binh > lybin) { binh = lybin;}
714 for(i=fypix-2; i<=lypix+2; ++
i) {
715 ssa += ysw[
i]*ytemp[binl][
i];
716 sa2 += ytemp[binl][
i]*ytemp[binl][
i]*yw2[
i];
717 ssba += ysw[
i]*(ytemp[binh][
i] - ytemp[binl][
i]);
718 saba += ytemp[binl][
i]*(ytemp[binh][
i] - ytemp[binl][
i])*yw2[i];
719 sba2 += (ytemp[binh][
i] - ytemp[binl][
i])*(ytemp[binh][i] - ytemp[binl][i])*yw2[
i];
724 rat=(ssba*ssa-ss2*saba)/(ss2*sba2-ssba*ssba);
725 if(rat < 0.
f) {rat=0.f;}
726 if(rat > 1.
f) {rat=1.0f;}
727 rnorm = (ssa+rat*ssba)/ss2;
732 if(yd[fypix]) {qfy+=ysum[fypix+1];}
735 if(yd[lypix-1]) {qly+=ysum[lypix-1];}
742 float qyfrac = (qfy-qly)/(qfy+qly);
743 bias = templ.
yflcorr(binq,qyfrac)+templ.
yavg(binq);
747 yrec = (0.125f*binl+
BHY-2.5f+rat*(binh-binl)*0.125
f-(
float)shifty+originy)*ysize - bias;
748 sigmay = templ.
yrms(binq);
752 if(rnorm <= 0.) {
LOGERROR(
"SiPixelTemplateReco") <<
"illegal chi2y normalization (2) = " << rnorm <<
ENDL; rnorm = 1.;}
753 chi2y=ss2-2./rnorm*ssa-2./rnorm*rat*ssba+(sa2+2.*rat*saba+rat*rat*sba2)/(rnorm*rnorm)-templ.
chi2ymin(binq);
754 if(chi2y < 0.0) {chi2y = 0.0;}
756 if(meany < 0.01) {meany = 0.01;}
760 hchi2 = chi2y/2.; hndof = meany/2.;
773 if(xd[i] && !xd[i+1]) {
774 for(j=fxbin; j<=lxbin; ++
j) {
778 sigavg = (xtemp[
j][
i] + xtemp[
j][i+1])/2.
f;
779 xtemp[
j][
i] = sigavg;
780 xtemp[
j][i+1] = sigavg;
791 sxthr = 1.1f*templ.
sxmax();
794 std::sort(&xsort[0], &xsort[logxpx]);
795 if(logxpx == 1) {sxthr = 1.01f*xsort[0];}
else {
796 if (xsort[1] > sxthr) { sxthr = 1.01f*xsort[1]; }
802 templ.
xsigma2(fxpix, lxpix, sxthr, xsum, xsig2);
807 for(i=fxbin; i<=lxbin; ++
i) { chi2xbin[
i] = -1.e15f;}
809 for(i=fxpix-2; i<=lxpix+2; ++
i) {
810 xw2[
i] = 1.f/xsig2[
i];
811 xsw[
i] = xsum[
i]*xw2[
i];
812 ss2 += xsum[
i]*xsw[
i];
819 for(j=jmin; j<=jmax; j+=deltaj) {
820 if(chi2xbin[j] < -100.
f) {
823 for(i=fxpix-2; i<=lxpix+2; ++
i) {
824 ssa += xsw[
i]*xtemp[
j][
i];
825 sa2 += xtemp[
j][
i]*xtemp[
j][
i]*xw2[
i];
828 if(rat <= 0.
f) {
LOGERROR(
"SiPixelTemplateReco") <<
"illegal chi2xmin normalization (1) = " << rat <<
ENDL; rat = 1.;}
829 chi2xbin[
j]=ss2-2.f*ssa/rat+sa2/(rat*rat);
831 if(chi2xbin[j] < chi2xmin) {
832 chi2xmin = chi2xbin[
j];
837 if(minbin > fxbin) {jmin = minbin - deltaj;}
else {jmin = fxbin;}
838 if(minbin < lxbin) {jmax = minbin + deltaj;}
else {jmax = lxbin;}
843 "minbin " << minbin <<
" chi2xmin = " << chi2xmin <<
ENDL;
851 delta = templ.
dxone();
852 sigma = templ.
sxone();
854 delta = templ.
dxtwo();
855 sigma = templ.
sxtwo();
857 xrec = 0.5*(fxpix+lxpix-2*shiftx+2.*originx)*xsize-delta;
866 chi21max = fmax(chi21min, (
double)templ.
chi2xminone());
868 if(chi2xmin < 0.) {chi2xmin = 0.;}
869 meanx = fmax(mean1pix, (
double)templ.
chi2xavgone());
870 hchi2 = chi2xmin/2.; hndof = meanx/2.;
879 if(binl < fxbin) { binl = fxbin;}
880 if(binh > lxbin) { binh = lxbin;}
886 for(i=fxpix-2; i<=lxpix+2; ++
i) {
887 ssa += xsw[
i]*xtemp[binl][
i];
888 sa2 += xtemp[binl][
i]*xtemp[binl][
i]*xw2[
i];
889 ssba += xsw[
i]*(xtemp[binh][
i] - xtemp[binl][
i]);
890 saba += xtemp[binl][
i]*(xtemp[binh][
i] - xtemp[binl][
i])*xw2[i];
891 sba2 += (xtemp[binh][
i] - xtemp[binl][
i])*(xtemp[binh][i] - xtemp[binl][i])*xw2[
i];
896 rat=(ssba*ssa-ss2*saba)/(ss2*sba2-ssba*ssba);
897 if(rat < 0.
f) {rat=0.f;}
898 if(rat > 1.
f) {rat=1.0f;}
899 rnorm = (ssa+rat*ssba)/ss2;
904 if(xd[fxpix]) {qfx+=xsum[fxpix+1];}
907 if(xd[lxpix-1]) {qlx+=xsum[lxpix-1];}
914 float qxfrac = (qfx-qlx)/(qfx+qlx);
915 bias = templ.
xflcorr(binq,qxfrac)+templ.
xavg(binq);
919 xrec = (0.125f*binl+
BHX-2.5f+rat*(binh-binl)*0.125
f-(
float)shiftx+originx)*xsize - bias;
920 sigmax = templ.
xrms(binq);
924 if(rnorm <= 0.) {
LOGERROR(
"SiPixelTemplateReco") <<
"illegal chi2x normalization (2) = " << rnorm <<
ENDL; rnorm = 1.;}
925 chi2x=ss2-2./rnorm*ssa-2./rnorm*rat*ssba+(sa2+2.*rat*saba+rat*rat*sba2)/(rnorm*rnorm)-templ.
chi2xmin(binq);
926 if(chi2x < 0.0) {chi2x = 0.0;}
928 if(meanx < 0.01) {meanx = 0.01;}
932 hchi2 = chi2x/2.; hndof = meanx/2.;
938 if(proby < probmin) {proby = probmin;}
939 if(probx < probmin) {probx = probmin;}
948 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
949 if((sigmaQ <=0.) || (mpv <= 0.) || (kappa < 0.01) || (kappa > 9.9)) {
950 throw cms::Exception(
"DataCorrupt") <<
"SiPixelTemplateReco::Vavilov parameters mpv/sigmaQ/kappa = " << mpv <<
"/" << sigmaQ <<
"/" << kappa << std::endl;
953 assert((sigmaQ > 0.) && (mpv > 0.) && (kappa > 0.01) && (kappa < 10.));
955 xvav = ((double)qtotal-mpv)/sigmaQ;
959 VVIObjF vvidist(kappa, beta2, 1);
960 prvav = vvidist.
fcn(xvav);
963 prvav = TMath::VavilovI(xvav, kappa, beta2);
969 if(probQ < probQmin) {probQ = probQmin;}
1008 float& yrec,
float& sigmay,
float& proby,
float& xrec,
float& sigmax,
float& probx,
int& qbin,
int speed,
1013 const bool deadpix =
false;
1014 std::vector<std::pair<int, int> > zeropix;
1017 yrec, sigmay, proby, xrec, sigmax, probx, qbin, speed, deadpix, zeropix, probQ);
1051 float& yrec,
float& sigmay,
float& proby,
float& xrec,
float& sigmax,
float& probx,
int& qbin,
int speed,
1056 const bool deadpix =
false;
1057 std::vector<std::pair<int, int> > zeropix;
1059 if(cotbeta < 0.) {locBz = -locBz;}
1062 yrec, sigmay, proby, xrec, sigmax, probx, qbin, speed, deadpix, zeropix, probQ);
1094 float& yrec,
float& sigmay,
float& proby,
float& xrec,
float& sigmax,
float& probx,
int& qbin,
int speed)
1098 const bool deadpix =
false;
1099 std::vector<std::pair<int, int> > zeropix;
1101 if(cotbeta < 0.) {locBz = -locBz;}
1103 if(speed < 0) speed = 0;
1104 if(speed > 3) speed = 3;
1107 yrec, sigmay, proby, xrec, sigmax, probx, qbin, speed, deadpix, zeropix, probQ);
float chi2xminone()
//!< minimum of x chi^2 for 1 pixel clusters
float symax()
average pixel signal for y-projection of cluster
float yavg(int i)
average y-bias of reconstruction binned in 4 charge bins
int cytemp()
Return central pixel of y template pixels above readout threshold.
int PixelTempReco2D(int id, float cotalpha, float cotbeta, float locBz, ClusMatrix &cluster, SiPixelTemplate &templ, float &yrec, float &sigmay, float &proby, float &xrec, float &sigmax, float &probx, int &qbin, int speed, bool deadpix, std::vector< std::pair< int, int > > &zeropix, float &probQ)
void xsigma2(int fxpix, int lxpix, float sxthr, float xsum[13+4], float xsig2[13+4])
float chi2xmin(int i)
minimum y chi^2 in 4 charge bins
float chi2ymin(int i)
minimum y chi^2 in 4 charge bins
float xrms(int i)
average x-rms of reconstruction binned in 4 charge bins
float qmin()
minimum cluster charge for valid hit (keeps 99.9% of simulated hits)
float xflcorr(int binq, float qflx)
float sytwo()
rms for one double-pixel y-clusters
float chi2yminone()
//!< minimum of y chi^2 for 1 pixel clusters
bool interpolate(int id, float cotalpha, float cotbeta, float locBz)
float sxone()
rms for one pixel x-clusters
void ytemp(int fybin, int lybin, float ytemplate[41][21+4])
int cxtemp()
Return central pixel of x-template pixels above readout threshold.
float qscale()
charge scaling factor
float dxone()
mean offset/correction for one pixel x-clusters
float chi2yavg(int i)
average y chi^2 in 4 charge bins
void vavilov_pars(double &mpv, double &sigma, double &kappa)
float yrms(int i)
average y-rms of reconstruction binned in 4 charge bins
float yflcorr(int binq, float qfly)
float xsize()
pixel x-size (microns)
void ysigma2(int fypix, int lypix, float sythr, float ysum[21+4], float ysig2[21+4])
float sxtwo()
rms for one double-pixel x-clusters
float dytwo()
mean offset/correction for one double-pixel y-clusters
float s50()
1/2 of the pixel threshold signal in electrons
void xtemp(int fxbin, int lxbin, float xtemplate[41][13+4])
float syone()
rms for one pixel y-clusters
static const int theVerboseLevel
float chi2yavgone()
//!< average y chi^2 for 1 pixel clusters
float qavg()
average cluster charge for this set of track angles
float sxmax()
average pixel signal for x-projection of cluster
float chi2xavgone()
//!< average x chi^2 for 1 pixel clusters
float pixmax()
maximum pixel charge
static const G4double kappa
float chi2xavg(int i)
averaage x chi^2 in 4 charge bins
float dyone()
mean offset/correction for one pixel y-clusters
float xavg(int i)
average x-bias of reconstruction binned in 4 charge bins
float dxtwo()
mean offset/correction for one double-pixel x-clusters
float ysize()
pixel y-size (microns)