27 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 39 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 44 #define LOGERROR(x) LogError(x) 45 #define LOGINFO(x) LogInfo(x) 51 #define LOGERROR(x) std::cout << x << ": " 52 #define LOGINFO(x) std::cout << x << ": " 53 #define ENDL std::endl 66 const int code_version = {21};
73 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 75 int nzeros = 4 - tempfile.length();
80 tempfile =
dir +
"template_summary2D_zp" + tempfile +
".out";
82 tempfile =
file.fullPath();
86 std::ostringstream tout;
87 tout <<
"template_summary2D_zp" << std::setw(4) << std::setfill(
'0') << std::right << filenum <<
".out" << std::ends;
88 tempfile = tout.str();
94 std::ifstream
in_file(tempfile);
101 for (
int i = 0; (
c =
in_file.get()) !=
'\n'; ++
i) {
108 LOGINFO(
"SiPixelTemplate2D") <<
"Loading Pixel Template File - " << theCurrentTemp.
head.
title <<
ENDL;
119 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 0A, no template load" <<
ENDL;
128 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 0B, no template load" <<
ENDL;
137 theCurrentTemp.
head.
fbin[1] = 1.00f;
138 theCurrentTemp.
head.
fbin[2] = 0.85f;
141 LOGINFO(
"SiPixelTemplate2D") <<
"Template ID = " << theCurrentTemp.
head.
ID <<
", Template Version " 143 <<
", NTy = " << theCurrentTemp.
head.
NTy <<
", NTyx = " << theCurrentTemp.
head.
NTyx 144 <<
", NTxx = " << theCurrentTemp.
head.
NTxx <<
", Dtype = " << theCurrentTemp.
head.
Dtype 145 <<
", Bias voltage " << theCurrentTemp.
head.
Vbias <<
", temperature " 147 <<
", Q-scaling factor " << theCurrentTemp.
head.
qscale <<
", 1/2 multi dcol threshold " 148 << theCurrentTemp.
head.
s50 <<
", 1/2 single dcol threshold " 150 <<
", y Lorentz Bias " << theCurrentTemp.
head.
lorybias <<
", x Lorentz width " 152 <<
", Q/Q_avg fractions for Qbin defs " << theCurrentTemp.
head.
fbin[0] <<
", " 154 <<
", pixel x-size " << theCurrentTemp.
head.
xsize <<
", y-size " 158 LOGERROR(
"SiPixelTemplate2D") <<
"code expects version " << code_version <<
", no template load" <<
ENDL;
162 if (theCurrentTemp.
head.
NTy != 0) {
164 <<
"Trying to load 1-d template info into the 2-d template object, check your DB/global tag!" <<
ENDL;
174 for (
int iy = 0; iy < theCurrentTemp.
head.
NTyx; ++iy) {
175 for (
int jx = 0; jx < theCurrentTemp.
head.
NTxx; ++jx) {
176 in_file >> theCurrentTemp.
entry[iy][jx].runnum >> theCurrentTemp.
entry[iy][jx].costrk[0] >>
177 theCurrentTemp.
entry[iy][jx].costrk[1] >> theCurrentTemp.
entry[iy][jx].costrk[2];
180 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 1, no template load, run # " 181 << theCurrentTemp.
entry[iy][jx].runnum <<
ENDL;
187 theCurrentTemp.
entry[iy][jx].cotalpha =
188 theCurrentTemp.
entry[iy][jx].costrk[0] / theCurrentTemp.
entry[iy][jx].costrk[2];
190 theCurrentTemp.
entry[iy][jx].cotbeta =
191 theCurrentTemp.
entry[iy][jx].costrk[1] / theCurrentTemp.
entry[iy][jx].costrk[2];
193 in_file >> theCurrentTemp.
entry[iy][jx].qavg >> theCurrentTemp.
entry[iy][jx].pixmax >>
194 theCurrentTemp.
entry[iy][jx].sxymax >> theCurrentTemp.
entry[iy][jx].iymin >>
195 theCurrentTemp.
entry[iy][jx].iymax >> theCurrentTemp.
entry[iy][jx].jxmin >>
196 theCurrentTemp.
entry[iy][jx].jxmax;
199 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 2, no template load, run # " 200 << theCurrentTemp.
entry[iy][jx].runnum <<
ENDL;
204 for (
int k = 0;
k < 2; ++
k) {
205 in_file >> theCurrentTemp.
entry[iy][jx].xypar[
k][0] >> theCurrentTemp.
entry[iy][jx].xypar[
k][1] >>
206 theCurrentTemp.
entry[iy][jx].xypar[
k][2] >> theCurrentTemp.
entry[iy][jx].xypar[
k][3] >>
207 theCurrentTemp.
entry[iy][jx].xypar[
k][4];
211 <<
"Error reading file 3, no template load, run # " << theCurrentTemp.
entry[iy][jx].runnum <<
ENDL;
216 for (
int k = 0;
k < 2; ++
k) {
217 in_file >> theCurrentTemp.
entry[iy][jx].lanpar[
k][0] >> theCurrentTemp.
entry[iy][jx].lanpar[
k][1] >>
218 theCurrentTemp.
entry[iy][jx].lanpar[
k][2] >> theCurrentTemp.
entry[iy][jx].lanpar[
k][3] >>
219 theCurrentTemp.
entry[iy][jx].lanpar[
k][4];
223 <<
"Error reading file 4, no template load, run # " << theCurrentTemp.
entry[iy][jx].runnum <<
ENDL;
231 for (
int l = 0;
l < 7; ++
l) {
232 for (
int k = 0;
k < 7; ++
k) {
239 <<
"Error reading file 5, no template load, run # " << theCurrentTemp.
entry[iy][jx].runnum <<
ENDL;
249 in_file >> theCurrentTemp.
entry[iy][jx].chi2ppix >> theCurrentTemp.
entry[iy][jx].chi2scale >>
250 theCurrentTemp.
entry[iy][jx].offsetx[0] >> theCurrentTemp.
entry[iy][jx].offsetx[1] >>
251 theCurrentTemp.
entry[iy][jx].offsetx[2] >> theCurrentTemp.
entry[iy][jx].offsetx[3] >>
252 theCurrentTemp.
entry[iy][jx].offsety[0] >> theCurrentTemp.
entry[iy][jx].offsety[1] >>
253 theCurrentTemp.
entry[iy][jx].offsety[2] >> theCurrentTemp.
entry[iy][jx].offsety[3];
256 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 6, no template load, run # " 257 << theCurrentTemp.
entry[iy][jx].runnum <<
ENDL;
261 in_file >> theCurrentTemp.
entry[iy][jx].clsleny >> theCurrentTemp.
entry[iy][jx].clslenx >>
262 theCurrentTemp.
entry[iy][jx].mpvvav >> theCurrentTemp.
entry[iy][jx].sigmavav >>
263 theCurrentTemp.
entry[iy][jx].kappavav >> theCurrentTemp.
entry[iy][jx].scalexavg >>
264 theCurrentTemp.
entry[iy][jx].scaleyavg >> theCurrentTemp.
entry[iy][jx].delyavg >>
265 theCurrentTemp.
entry[iy][jx].delysig >> theCurrentTemp.
entry[iy][jx].spare[0];
268 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 7, no template load, run # " 269 << theCurrentTemp.
entry[iy][jx].runnum <<
ENDL;
273 in_file >> theCurrentTemp.
entry[iy][jx].scalex[0] >> theCurrentTemp.
entry[iy][jx].scalex[1] >>
274 theCurrentTemp.
entry[iy][jx].scalex[2] >> theCurrentTemp.
entry[iy][jx].scalex[3] >>
275 theCurrentTemp.
entry[iy][jx].scaley[0] >> theCurrentTemp.
entry[iy][jx].scaley[1] >>
276 theCurrentTemp.
entry[iy][jx].scaley[2] >> theCurrentTemp.
entry[iy][jx].scaley[3] >>
277 theCurrentTemp.
entry[iy][jx].spare[1] >> theCurrentTemp.
entry[iy][jx].spare[2];
280 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 8, no template load, run # " 281 << theCurrentTemp.
entry[iy][jx].runnum <<
ENDL;
291 pixelTemp.push_back(theCurrentTemp);
298 LOGERROR(
"SiPixelTemplate2D") <<
"Error opening File" << tempfile <<
ENDL;
304 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 312 std::vector<SiPixelTemplateStore2D>& pixelTemp) {
315 const int code_version = {21};
326 pixelTemp.emplace_back();
327 auto& theCurrentTemp = pixelTemp.back();
333 for (
int i = 0;
i < 20; ++
i) {
335 theCurrentTemp.head.title[4 *
i] =
temp.c[0];
336 theCurrentTemp.head.title[4 *
i + 1] =
temp.c[1];
337 theCurrentTemp.head.title[4 *
i + 2] =
temp.c[2];
338 theCurrentTemp.head.title[4 *
i + 3] =
temp.c[3];
341 theCurrentTemp.head.title[79] =
'\0';
342 LOGINFO(
"SiPixelTemplate2D") <<
"Loading Pixel Template File - " << theCurrentTemp.head.title <<
ENDL;
346 reader >> theCurrentTemp.head.ID >> theCurrentTemp.head.templ_version >> theCurrentTemp.head.Bfield >>
347 theCurrentTemp.head.NTy >> theCurrentTemp.head.NTyx >> theCurrentTemp.head.NTxx >>
348 theCurrentTemp.head.Dtype >> theCurrentTemp.head.Vbias >> theCurrentTemp.head.temperature >>
349 theCurrentTemp.head.fluence >> theCurrentTemp.head.qscale >> theCurrentTemp.head.s50 >>
350 theCurrentTemp.head.lorywidth >> theCurrentTemp.head.lorxwidth >> theCurrentTemp.head.ysize >>
351 theCurrentTemp.head.xsize >> theCurrentTemp.head.zsize;
354 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 0A, no template load" <<
ENDL;
358 LOGINFO(
"SiPixelTemplate2D") <<
"Loading Pixel Template File - " << theCurrentTemp.head.title
359 <<
" code version = " << code_version <<
" object version " 360 << theCurrentTemp.head.templ_version <<
ENDL;
362 if (theCurrentTemp.head.templ_version > 17) {
363 reader >> theCurrentTemp.head.ss50 >> theCurrentTemp.head.lorybias >> theCurrentTemp.head.lorxbias >>
364 theCurrentTemp.head.fbin[0] >> theCurrentTemp.head.fbin[1] >> theCurrentTemp.head.fbin[2];
367 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 0B, no template load" <<
ENDL;
372 theCurrentTemp.head.ss50 = theCurrentTemp.head.s50;
373 theCurrentTemp.head.lorybias = theCurrentTemp.head.lorywidth / 2.f;
374 theCurrentTemp.head.lorxbias = theCurrentTemp.head.lorxwidth / 2.f;
375 theCurrentTemp.head.fbin[0] = 1.50f;
376 theCurrentTemp.head.fbin[1] = 1.00f;
377 theCurrentTemp.head.fbin[2] = 0.85f;
380 LOGINFO(
"SiPixelTemplate2D") <<
"Template ID = " << theCurrentTemp.head.ID <<
", Template Version " 381 << theCurrentTemp.head.templ_version <<
", Bfield = " << theCurrentTemp.head.Bfield
382 <<
", NTy = " << theCurrentTemp.head.NTy <<
", NTyx = " << theCurrentTemp.head.NTyx
383 <<
", NTxx = " << theCurrentTemp.head.NTxx
384 <<
", Dtype = " << theCurrentTemp.head.Dtype <<
", Bias voltage " 385 << theCurrentTemp.head.Vbias <<
", temperature " << theCurrentTemp.head.temperature
386 <<
", fluence " << theCurrentTemp.head.fluence <<
", Q-scaling factor " 387 << theCurrentTemp.head.qscale <<
", 1/2 multi dcol threshold " 388 << theCurrentTemp.head.s50 <<
", 1/2 single dcol threshold " 389 << theCurrentTemp.head.ss50 <<
", y Lorentz Width " << theCurrentTemp.head.lorywidth
390 <<
", y Lorentz Bias " << theCurrentTemp.head.lorybias <<
", x Lorentz width " 391 << theCurrentTemp.head.lorxwidth <<
", x Lorentz Bias " 392 << theCurrentTemp.head.lorxbias <<
", Q/Q_avg fractions for Qbin defs " 393 << theCurrentTemp.head.fbin[0] <<
", " << theCurrentTemp.head.fbin[1] <<
", " 394 << theCurrentTemp.head.fbin[2] <<
", pixel x-size " << theCurrentTemp.head.xsize
395 <<
", y-size " << theCurrentTemp.head.ysize <<
", zsize " 396 << theCurrentTemp.head.zsize <<
ENDL;
398 if (theCurrentTemp.head.templ_version < code_version) {
399 LOGINFO(
"SiPixelTemplate2D") <<
"code expects version " << code_version <<
" finds " 400 << theCurrentTemp.head.templ_version <<
", load anyway " <<
ENDL;
403 if (theCurrentTemp.head.NTy != 0) {
405 <<
"Trying to load 1-d template info into the 2-d template object, check your DB/global tag!" <<
ENDL;
410 theCurrentTemp.resize(theCurrentTemp.head.NTyx, theCurrentTemp.head.NTxx);
414 for (
int iy = 0; iy < theCurrentTemp.head.NTyx; ++iy) {
415 for (
int jx = 0; jx < theCurrentTemp.head.NTxx; ++jx) {
416 reader >> theCurrentTemp.entry[iy][jx].runnum >> theCurrentTemp.entry[iy][jx].costrk[0] >>
417 theCurrentTemp.entry[iy][jx].costrk[1] >> theCurrentTemp.entry[iy][jx].costrk[2];
421 <<
"Error reading file 1, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum <<
ENDL;
427 theCurrentTemp.entry[iy][jx].cotalpha =
428 theCurrentTemp.entry[iy][jx].costrk[0] / theCurrentTemp.entry[iy][jx].costrk[2];
430 theCurrentTemp.entry[iy][jx].cotbeta =
431 theCurrentTemp.entry[iy][jx].costrk[1] / theCurrentTemp.entry[iy][jx].costrk[2];
433 reader >> theCurrentTemp.entry[iy][jx].qavg >> theCurrentTemp.entry[iy][jx].pixmax >>
434 theCurrentTemp.entry[iy][jx].sxymax >> theCurrentTemp.entry[iy][jx].iymin >>
435 theCurrentTemp.entry[iy][jx].iymax >> theCurrentTemp.entry[iy][jx].jxmin >>
436 theCurrentTemp.entry[iy][jx].jxmax;
440 <<
"Error reading file 2, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum <<
ENDL;
444 for (
int k = 0;
k < 2; ++
k) {
445 reader >> theCurrentTemp.entry[iy][jx].xypar[
k][0] >> theCurrentTemp.entry[iy][jx].xypar[
k][1] >>
446 theCurrentTemp.entry[iy][jx].xypar[
k][2] >> theCurrentTemp.entry[iy][jx].xypar[
k][3] >>
447 theCurrentTemp.entry[iy][jx].xypar[
k][4];
451 <<
"Error reading file 3, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum <<
ENDL;
456 for (
int k = 0;
k < 2; ++
k) {
457 reader >> theCurrentTemp.entry[iy][jx].lanpar[
k][0] >> theCurrentTemp.entry[iy][jx].lanpar[
k][1] >>
458 theCurrentTemp.entry[iy][jx].lanpar[
k][2] >> theCurrentTemp.entry[iy][jx].lanpar[
k][3] >>
459 theCurrentTemp.entry[iy][jx].lanpar[
k][4];
463 <<
"Error reading file 4, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum <<
ENDL;
471 for (
int l = 0;
l < 7; ++
l) {
472 for (
int k = 0;
k < 7; ++
k) {
478 LOGERROR(
"SiPixelTemplate2D") <<
"Error reading file 5, no template load, run # " 479 << theCurrentTemp.entry[iy][jx].runnum <<
ENDL;
483 theCurrentTemp.entry[iy][jx].xytemp[
k][
l][
i][
j] = (
short int)
dummy[
i];
489 reader >> theCurrentTemp.entry[iy][jx].chi2ppix >> theCurrentTemp.entry[iy][jx].chi2scale >>
490 theCurrentTemp.entry[iy][jx].offsetx[0] >> theCurrentTemp.entry[iy][jx].offsetx[1] >>
491 theCurrentTemp.entry[iy][jx].offsetx[2] >> theCurrentTemp.entry[iy][jx].offsetx[3] >>
492 theCurrentTemp.entry[iy][jx].offsety[0] >> theCurrentTemp.entry[iy][jx].offsety[1] >>
493 theCurrentTemp.entry[iy][jx].offsety[2] >> theCurrentTemp.entry[iy][jx].offsety[3];
497 <<
"Error reading file 6, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum <<
ENDL;
501 reader >> theCurrentTemp.entry[iy][jx].clsleny >> theCurrentTemp.entry[iy][jx].clslenx >>
502 theCurrentTemp.entry[iy][jx].mpvvav >> theCurrentTemp.entry[iy][jx].sigmavav >>
503 theCurrentTemp.entry[iy][jx].kappavav >> theCurrentTemp.entry[iy][jx].scalexavg >>
504 theCurrentTemp.entry[iy][jx].scaleyavg >> theCurrentTemp.entry[iy][jx].delyavg >>
505 theCurrentTemp.entry[iy][jx].delysig >> theCurrentTemp.entry[iy][jx].spare[0];
509 <<
"Error reading file 7, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum <<
ENDL;
513 reader >> theCurrentTemp.entry[iy][jx].scalex[0] >> theCurrentTemp.entry[iy][jx].scalex[1] >>
514 theCurrentTemp.entry[iy][jx].scalex[2] >> theCurrentTemp.entry[iy][jx].scalex[3] >>
515 theCurrentTemp.entry[iy][jx].scaley[0] >> theCurrentTemp.entry[iy][jx].scaley[1] >>
516 theCurrentTemp.entry[iy][jx].scaley[2] >> theCurrentTemp.entry[iy][jx].scaley[3] >>
517 theCurrentTemp.entry[iy][jx].spare[1] >> theCurrentTemp.entry[iy][jx].spare[2];
521 <<
"Error reading file 8, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum <<
ENDL;
528 pixelTemp.pop_back();
540 if (
id != id_current_) {
544 for (
int i = 0;
i < (
int)thePixelTemp_.size(); ++
i) {
545 if (
id == thePixelTemp_[
i].head.ID) {
551 Dtype_ = thePixelTemp_[index_id_].head.Dtype;
555 qscale_ = thePixelTemp_[index_id_].head.qscale;
559 s50_ = thePixelTemp_[index_id_].head.s50;
563 for (
int j = 0;
j < 3; ++
j) {
564 fbin_[
j] = thePixelTemp_[index_id_].head.fbin[
j];
569 lorywidth_ = thePixelTemp_[index_id_].head.lorywidth;
570 lorxwidth_ = thePixelTemp_[index_id_].head.lorxwidth;
574 xsize_ = thePixelTemp_[index_id_].head.xsize;
575 ysize_ = thePixelTemp_[index_id_].head.ysize;
576 zsize_ = thePixelTemp_[index_id_].head.zsize;
580 Nyx_ = thePixelTemp_[index_id_].head.NTyx;
581 Nxx_ = thePixelTemp_[index_id_].head.NTxx;
582 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 583 if (Nyx_ < 2 || Nxx_ < 2) {
584 throw cms::Exception(
"DataCorrupt") <<
"template ID = " << id_current_
585 <<
"has too few entries: Nyx/Nxx = " << Nyx_ <<
"/" << Nxx_ << std::endl;
588 assert(Nyx_ > 1 && Nxx_ > 1);
590 int imidx = Nxx_ / 2;
592 cotalpha0_ = thePixelTemp_[index_id_].entry[0][0].cotalpha;
593 cotalpha1_ = thePixelTemp_[index_id_].entry[0][Nxx_ - 1].cotalpha;
594 deltacota_ = (cotalpha1_ - cotalpha0_) / (
float)(Nxx_ - 1);
596 cotbeta0_ = thePixelTemp_[index_id_].entry[0][imidx].cotbeta;
597 cotbeta1_ = thePixelTemp_[index_id_].entry[Nyx_ - 1][imidx].cotbeta;
598 deltacotb_ = (cotbeta1_ - cotbeta0_) / (
float)(Nyx_ - 1);
605 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 606 if (index_id_ < 0 || index_id_ >= (
int)thePixelTemp_.size()) {
607 throw cms::Exception(
"DataCorrupt") <<
"SiPixelTemplate2D::interpolate can't find needed template ID = " <<
id 608 <<
", Are you using the correct global tag?" << std::endl;
611 assert(index_id_ >= 0 && index_id_ < (
int)thePixelTemp_.size());
640 float acotb, dcota, dcotb;
644 if (
id != id_current_ || cotalpha != cota_current_ || cotbeta != cotb_current_) {
645 cota_current_ = cotalpha;
646 cotb_current_ = cotbeta;
648 success_ = getid(
id);
651 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 652 if (index_id_ < 0 || index_id_ >= (
int)thePixelTemp_.size()) {
653 throw cms::Exception(
"DataCorrupt") <<
"SiPixelTemplate2D::interpolate can't find needed template ID = " <<
id 654 <<
", Are you using the correct global tag?" << std::endl;
657 assert(index_id_ >= 0 && index_id_ < (
int)thePixelTemp_.size());
662 float cota = cotalpha;
680 if (locBx * locBz < 0.
f) {
689 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 691 <<
"SiPixelTemplate2D::illegal subdetector ID = " << thePixelTemp_[index_id_].head.Dtype << std::endl;
693 std::cout <<
"SiPixelTemplate:2D:illegal subdetector ID = " << thePixelTemp_[index_id_].head.Dtype << std::endl;
697 if (cota < cotalpha0_) {
702 }
else if (cota > cotalpha1_) {
708 jx0_ = (
int)((cota - cotalpha0_) / deltacota_ + 0.5f);
709 dcota = (cota - (cotalpha0_ + jx0_ * deltacota_)) / deltacota_;
710 adcota_ = fabs(dcota);
726 if (acotb < cotbeta0_) {
731 }
else if (acotb > cotbeta1_) {
737 iy0_ = (
int)((acotb - cotbeta0_) / deltacotb_ + 0.5f);
738 dcotb = (acotb - (cotbeta0_ + iy0_ * deltacotb_)) / deltacotb_;
739 adcotb_ = fabs(dcotb);
753 lorydrift_ = lorywidth_ / 2.;
755 lorydrift_ = -lorydrift_;
756 lorxdrift_ = lorxwidth_ / 2.;
758 lorxdrift_ = -lorxdrift_;
762 entry00_ = &thePixelTemp_[index_id_].entry[iy0_][jx0_];
763 entry10_ = &thePixelTemp_[index_id_].entry[iy1_][jx0_];
764 entry01_ = &thePixelTemp_[index_id_].entry[iy0_][jx1_];
768 qavg_ = entry00_->qavg + adcota_ * (entry01_->qavg - entry00_->qavg) + adcotb_ * (entry10_->qavg - entry00_->qavg);
770 pixmax_ = entry00_->pixmax + adcota_ * (entry01_->pixmax - entry00_->pixmax) +
771 adcotb_ * (entry10_->pixmax - entry00_->pixmax);
773 sxymax_ = entry00_->sxymax + adcota_ * (entry01_->sxymax - entry00_->sxymax) +
774 adcotb_ * (entry10_->sxymax - entry00_->sxymax);
776 chi2avgone_ = entry00_->chi2avgone + adcota_ * (entry01_->chi2avgone - entry00_->chi2avgone) +
777 adcotb_ * (entry10_->chi2avgone - entry00_->chi2avgone);
779 chi2minone_ = entry00_->chi2minone + adcota_ * (entry01_->chi2minone - entry00_->chi2minone) +
780 adcotb_ * (entry10_->chi2minone - entry00_->chi2minone);
782 clsleny_ = entry00_->clsleny + adcota_ * (entry01_->clsleny - entry00_->clsleny) +
783 adcotb_ * (entry10_->clsleny - entry00_->clsleny);
785 clslenx_ = entry00_->clslenx + adcota_ * (entry01_->clslenx - entry00_->clslenx) +
786 adcotb_ * (entry10_->clslenx - entry00_->clslenx);
788 chi2ppix_ = entry00_->chi2ppix + adcota_ * (entry01_->chi2ppix - entry00_->chi2ppix) +
789 adcotb_ * (entry10_->chi2ppix - entry00_->chi2ppix);
791 chi2scale_ = entry00_->chi2scale + adcota_ * (entry01_->chi2scale - entry00_->chi2scale) +
792 adcotb_ * (entry10_->chi2scale - entry00_->chi2scale);
794 scaleyavg_ = entry00_->scaleyavg + adcota_ * (entry01_->scaleyavg - entry00_->scaleyavg) +
795 adcotb_ * (entry10_->scaleyavg - entry00_->scaleyavg);
797 scalexavg_ = entry00_->scalexavg + adcota_ * (entry01_->scalexavg - entry00_->scalexavg) +
798 adcotb_ * (entry10_->scalexavg - entry00_->scalexavg);
800 delyavg_ = entry00_->delyavg + adcota_ * (entry01_->delyavg - entry00_->delyavg) +
801 adcotb_ * (entry10_->delyavg - entry00_->delyavg);
803 delysig_ = entry00_->delysig + adcota_ * (entry01_->delysig - entry00_->delysig) +
804 adcotb_ * (entry10_->delysig - entry00_->delysig);
806 mpvvav_ = entry00_->mpvvav + adcota_ * (entry01_->mpvvav - entry00_->mpvvav) +
807 adcotb_ * (entry10_->mpvvav - entry00_->mpvvav);
809 sigmavav_ = entry00_->sigmavav + adcota_ * (entry01_->sigmavav - entry00_->sigmavav) +
810 adcotb_ * (entry10_->sigmavav - entry00_->sigmavav);
812 kappavav_ = entry00_->kappavav + adcota_ * (entry01_->kappavav - entry00_->kappavav) +
813 adcotb_ * (entry10_->kappavav - entry00_->kappavav);
815 for (
int i = 0;
i < 4; ++
i) {
816 scalex_[
i] = entry00_->scalex[
i] + adcota_ * (entry01_->scalex[
i] - entry00_->scalex[
i]) +
817 adcotb_ * (entry10_->scalex[
i] - entry00_->scalex[
i]);
819 scaley_[
i] = entry00_->scaley[
i] + adcota_ * (entry01_->scaley[
i] - entry00_->scaley[
i]) +
820 adcotb_ * (entry10_->scaley[
i] - entry00_->scaley[
i]);
822 offsetx_[
i] = entry00_->offsetx[
i] + adcota_ * (entry01_->offsetx[
i] - entry00_->offsetx[
i]) +
823 adcotb_ * (entry10_->offsetx[
i] - entry00_->offsetx[
i]);
825 offsetx_[
i] = -offsetx_[
i];
827 offsety_[
i] = entry00_->offsety[
i] + adcota_ * (entry01_->offsety[
i] - entry00_->offsety[
i]) +
828 adcotb_ * (entry10_->offsety[
i] - entry00_->offsety[
i]);
830 offsety_[
i] = -offsety_[
i];
833 for (
int i = 0;
i < 2; ++
i) {
834 for (
int j = 0;
j < 5; ++
j) {
837 xypary0x0_[1 -
i][
j] = (
float)entry00_->xypar[
i][
j];
838 xypary1x0_[1 -
i][
j] = (
float)entry10_->xypar[
i][
j];
839 xypary0x1_[1 -
i][
j] = (
float)entry01_->xypar[
i][
j];
840 lanpar_[1 -
i][
j] = entry00_->lanpar[
i][
j] + adcota_ * (entry01_->lanpar[
i][
j] - entry00_->lanpar[
i][
j]) +
841 adcotb_ * (entry10_->lanpar[
i][
j] - entry00_->lanpar[
i][
j]);
843 xypary0x0_[
i][
j] = (
float)entry00_->xypar[
i][
j];
844 xypary1x0_[
i][
j] = (
float)entry10_->xypar[
i][
j];
845 xypary0x1_[
i][
j] = (
float)entry01_->xypar[
i][
j];
846 lanpar_[
i][
j] = entry00_->lanpar[
i][
j] + adcota_ * (entry01_->lanpar[
i][
j] - entry00_->lanpar[
i][
j]) +
847 adcotb_ * (entry10_->lanpar[
i][
j] - entry00_->lanpar[
i][
j]);
863 #ifdef SI_PIXEL_TEMPLATE_STANDALONE 888 for (
int i = 0;
i < 3; ++
i) {
899 qavg_ = entry00_->qavg;
901 pixmax_ = entry00_->pixmax;
903 sxymax_ = entry00_->sxymax;
905 clsleny_ = entry00_->clsleny;
907 clslenx_ = entry00_->clslenx;
917 for (
int i = 0;
i < 4; ++
i) {
928 float cotbeta = entry00_->cotbeta;
944 if (locBx * locBz < 0.
f) {
952 std::cout <<
"SiPixelTemplate:2D:illegal subdetector ID = " << iDtype << std::endl;
957 lorydrift_ = lorywidth_ / 2.;
959 lorydrift_ = -lorydrift_;
960 lorxdrift_ = lorxwidth_ / 2.;
962 lorxdrift_ = -lorxdrift_;
964 for (
int i = 0;
i < 2; ++
i) {
965 for (
int j = 0;
j < 5; ++
j) {
968 xypary0x0_[1 -
i][
j] = (
float)entry00_->xypar[
i][
j];
969 xypary1x0_[1 -
i][
j] = (
float)entry00_->xypar[
i][
j];
970 xypary0x1_[1 -
i][
j] = (
float)entry00_->xypar[
i][
j];
971 lanpar_[1 -
i][
j] = entry00_->lanpar[
i][
j];
973 xypary0x0_[
i][
j] = (
float)entry00_->xypar[
i][
j];
974 xypary1x0_[
i][
j] = (
float)entry00_->xypar[
i][
j];
975 xypary0x1_[
i][
j] = (
float)entry00_->xypar[
i][
j];
976 lanpar_[
i][
j] = entry00_->lanpar[
i][
j];
1003 int pixx, pixy,
k0, k1, l0, l1, deltax, deltay, iflipy, jflipx, imin, imax, jmin, jmax;
1005 float dx,
dy, ddx, ddy, adx, ady;
1007 const float deltaxy[2] = {16.67f, 25.0f};
1016 pixy = (
int)floorf(yhit / ysize_);
1017 dy = yhit - (pixy + 0.5f) * ysize_;
1026 ddy = 6.f *
dy / ysize_ - (
k0 - 3);
1037 pixx = (
int)floorf(xhit / xsize_);
1038 dx = xhit - (pixx + 0.5f) * xsize_;
1042 l0 = (
int)(
dx / xsize_ * 6.
f + 3.5
f);
1047 ddx = 6.f *
dx / xsize_ - (l0 - 3);
1063 imin =
std::min(entry00_->iymin, entry10_->iymin);
1064 imin_ =
std::min(imin, entry01_->iymin);
1066 jmin =
std::min(entry00_->jxmin, entry10_->jxmin);
1067 jmin_ =
std::min(jmin, entry01_->jxmin);
1069 imax =
std::max(entry00_->iymax, entry10_->iymax);
1070 imax_ =
std::max(imax, entry01_->iymax);
1072 jmax =
std::max(entry00_->jxmax, entry10_->jxmax);
1073 jmax_ =
std::max(jmax, entry01_->jxmax);
1084 deltax = pixx -
T2HX;
1085 deltay = pixy -
T2HY;
1089 for (
int j = 0;
j <
BXM2; ++
j) {
1090 for (
int i = 0;
i <
BYM2; ++
i) {
1091 xytemp_[
j][
i] = 0.f;
1097 for (
int j = jmin_;
j <= jmax_; ++
j) {
1101 m = deltax + jflipx;
1105 for (
int i = imin_;
i <= imax_; ++
i) {
1108 n = deltay + iflipy;
1112 if (
m >= 0 && m <= BXM3 && n >= 0 &&
n <=
BYM3) {
1113 xytemp_[
m][
n] = (
float)entry00_->xytemp[
k0][l0][
i][
j] +
1114 adx * (
float)(entry00_->xytemp[
k0][l1][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1115 ady * (
float)(entry00_->xytemp[k1][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1116 adcota_ * (
float)(entry01_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1117 adcotb_ * (
float)(entry10_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]);
1124 for (
int n = 1;
n <
BYM3; ++
n) {
1127 for (
int m = 1;
m <
BXM3; ++
m) {
1128 xytemp_[
m][
n] += xytemp_[
m][
n + 1];
1131 for (
int i =
n + 1;
i <
BYM3; ++
i) {
1132 for (
int m = 1;
m <
BXM3; ++
m) {
1133 xytemp_[
m][
i] = xytemp_[
m][
i + 1];
1141 for (
int m = 1;
m <
BXM3; ++
m) {
1144 for (
int n = 1;
n <
BYM3; ++
n) {
1145 xytemp_[
m][
n] += xytemp_[
m + 1][
n];
1148 for (
int j =
m + 1;
j <
BXM3; ++
j) {
1150 xytemp_[
j][
n] = xytemp_[
j + 1][
n];
1158 float qtemptot = 0.f;
1160 for (
int n = 1;
n <
BYM3; ++
n) {
1161 for (
int m = 1;
m <
BXM3; ++
m) {
1162 if (xytemp_[
m][
n] != 0.
f) {
1163 template2d[
m][
n] += xytemp_[
m][
n];
1164 qtemptot += xytemp_[
m][
n];
1169 QTemplate = qtemptot;
1174 for (
int k = 0;
k < 2; ++
k) {
1175 for (
int i = 0;
i <
BXM2; ++
i) {
1176 for (
int j = 0;
j <
BYM2; ++
j) {
1177 dxytempdx[
k][
i][
j] = 0.f;
1178 dxytempdy[
k][
i][
j] = 0.f;
1179 dpdx2d[
k][
i][
j] = 0.f;
1186 pixx = (
int)floorf((xhit + deltaxy[0]) / xsize_);
1187 dx = (xhit + deltaxy[0]) - (pixx + 0.5
f) * xsize_;
1191 l0 = (
int)(
dx / xsize_ * 6.
f + 3.5
f);
1196 ddx = 6.f *
dx / xsize_ - (l0 - 3);
1218 deltax = pixx -
T2HX;
1222 for (
int j = jmin_;
j <= jmax_; ++
j) {
1226 m = deltax + jflipx;
1230 for (
int i = imin_;
i <= imax_; ++
i) {
1233 n = deltay + iflipy;
1237 if (
m >= 0 && m <= BXM3 && n >= 0 &&
n <=
BYM3) {
1238 dxytempdx[1][
m][
n] = (
float)entry00_->xytemp[
k0][l0][
i][
j] +
1239 adx * (
float)(entry00_->xytemp[
k0][l1][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1240 ady * (
float)(entry00_->xytemp[k1][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1241 adcota_ * (
float)(entry01_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1242 adcotb_ * (
float)(entry10_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]);
1249 for (
int n = 1;
n <
BYM3; ++
n) {
1252 for (
int m = 1;
m <
BXM3; ++
m) {
1253 dxytempdx[1][
m][
n] += dxytempdx[1][
m][
n + 1];
1256 for (
int i =
n + 1;
i <
BYM3; ++
i) {
1257 for (
int m = 1;
m <
BXM3; ++
m) {
1258 dxytempdx[1][
m][
i] = dxytempdx[1][
m][
i + 1];
1266 for (
int m = 1;
m <
BXM3; ++
m) {
1269 for (
int n = 1;
n <
BYM3; ++
n) {
1270 dxytempdx[1][
m][
n] += dxytempdx[1][
m + 1][
n];
1273 for (
int j =
m + 1;
j <
BXM3; ++
j) {
1274 for (
int n = 1;
n <
BYM3; ++
n) {
1275 dxytempdx[1][
j][
n] = dxytempdx[1][
j + 1][
n];
1283 pixx = (
int)floorf((xhit - deltaxy[0]) / xsize_);
1284 dx = (xhit - deltaxy[0]) - (pixx + 0.5
f) * xsize_;
1288 l0 = (
int)(
dx / xsize_ * 6.
f + 3.5
f);
1293 ddx = 6.f *
dx / xsize_ - (l0 - 3);
1315 deltax = pixx -
T2HX;
1319 for (
int j = jmin_;
j <= jmax_; ++
j) {
1323 m = deltax + jflipx;
1327 for (
int i = imin_;
i <= imax_; ++
i) {
1330 n = deltay + iflipy;
1334 if (
m >= 0 && m <= BXM3 && n >= 0 &&
n <=
BYM3) {
1335 dxytempdx[0][
m][
n] = (
float)entry00_->xytemp[
k0][l0][
i][
j] +
1336 adx * (
float)(entry00_->xytemp[
k0][l1][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1337 ady * (
float)(entry00_->xytemp[k1][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1338 adcota_ * (
float)(entry01_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1339 adcotb_ * (
float)(entry10_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]);
1346 for (
int n = 1;
n <
BYM3; ++
n) {
1349 for (
int m = 1;
m <
BXM3; ++
m) {
1350 dxytempdx[0][
m][
n] += dxytempdx[0][
m][
n + 1];
1353 for (
int i =
n + 1;
i <
BYM3; ++
i) {
1354 for (
int m = 1;
m <
BXM3; ++
m) {
1355 dxytempdx[0][
m][
i] = dxytempdx[0][
m][
i + 1];
1363 for (
int m = 1;
m <
BXM3; ++
m) {
1366 for (
int n = 1;
n <
BYM3; ++
n) {
1367 dxytempdx[0][
m][
n] += dxytempdx[0][
m + 1][
n];
1370 for (
int j =
m + 1;
j <
BXM3; ++
j) {
1371 for (
int n = 1;
n <
BYM3; ++
n) {
1372 dxytempdx[0][
j][
n] = dxytempdx[0][
j + 1][
n];
1380 for (
int n = 1;
n <
BYM3; ++
n) {
1381 for (
int m = 1;
m <
BXM3; ++
m) {
1382 dpdx2d[0][
m][
n] = (dxytempdx[1][
m][
n] - dxytempdx[0][
m][
n]) / (2. * deltaxy[0]);
1388 pixy = (
int)floorf((yhit + deltaxy[1]) / ysize_);
1389 dy = (yhit + deltaxy[1]) - (pixy + 0.5
f) * ysize_;
1398 ddy = 6.f *
dy / ysize_ - (
k0 - 3);
1409 pixx = (
int)floorf(xhit / xsize_);
1410 dx = xhit - (pixx + 0.5f) * xsize_;
1414 l0 = (
int)(
dx / xsize_ * 6.
f + 3.5
f);
1419 ddx = 6.f *
dx / xsize_ - (l0 - 3);
1442 deltax = pixx -
T2HX;
1443 deltay = pixy -
T2HY;
1447 for (
int j = jmin_;
j <= jmax_; ++
j) {
1451 m = deltax + jflipx;
1455 for (
int i = imin_;
i <= imax_; ++
i) {
1458 n = deltay + iflipy;
1462 if (
m >= 0 && m <= BXM3 && n >= 0 &&
n <=
BYM3) {
1463 dxytempdy[1][
m][
n] = (
float)entry00_->xytemp[
k0][l0][
i][
j] +
1464 adx * (
float)(entry00_->xytemp[
k0][l1][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1465 ady * (
float)(entry00_->xytemp[k1][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1466 adcota_ * (
float)(entry01_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1467 adcotb_ * (
float)(entry10_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]);
1474 for (
int n = 1;
n <
BYM3; ++
n) {
1477 for (
int m = 1;
m <
BXM3; ++
m) {
1478 dxytempdy[1][
m][
n] += dxytempdy[1][
m][
n + 1];
1481 for (
int i =
n + 1;
i <
BYM3; ++
i) {
1482 for (
int m = 1;
m <
BXM3; ++
m) {
1483 dxytempdy[1][
m][
i] = dxytempdy[1][
m][
i + 1];
1491 for (
int m = 1;
m <
BXM3; ++
m) {
1494 for (
int n = 1;
n <
BYM3; ++
n) {
1495 dxytempdy[1][
m][
n] += dxytempdy[1][
m + 1][
n];
1498 for (
int j =
m + 1;
j <
BXM3; ++
j) {
1499 for (
int n = 1;
n <
BYM3; ++
n) {
1500 dxytempdy[1][
j][
n] = dxytempdy[1][
j + 1][
n];
1508 pixy = (
int)floorf((yhit - deltaxy[1]) / ysize_);
1509 dy = (yhit - deltaxy[1]) - (pixy + 0.5
f) * ysize_;
1518 ddy = 6.f *
dy / ysize_ - (
k0 - 3);
1540 deltay = pixy -
T2HY;
1544 for (
int j = jmin_;
j <= jmax_; ++
j) {
1548 m = deltax + jflipx;
1552 for (
int i = imin_;
i <= imax_; ++
i) {
1555 n = deltay + iflipy;
1559 if (
m >= 0 && m <= BXM3 && n >= 0 &&
n <=
BYM3) {
1560 dxytempdy[0][
m][
n] = (
float)entry00_->xytemp[
k0][l0][
i][
j] +
1561 adx * (
float)(entry00_->xytemp[
k0][l1][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1562 ady * (
float)(entry00_->xytemp[k1][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1563 adcota_ * (
float)(entry01_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]) +
1564 adcotb_ * (
float)(entry10_->xytemp[
k0][l0][
i][
j] - entry00_->xytemp[
k0][l0][
i][
j]);
1571 for (
int n = 1;
n <
BYM3; ++
n) {
1574 for (
int m = 1;
m <
BXM3; ++
m) {
1575 dxytempdy[0][
m][
n] += dxytempdy[0][
m][
n + 1];
1578 for (
int i =
n + 1;
i <
BYM3; ++
i) {
1579 for (
int m = 1;
m <
BXM3; ++
m) {
1580 dxytempdy[0][
m][
i] = dxytempdy[0][
m][
i + 1];
1588 for (
int m = 1;
m <
BXM3; ++
m) {
1591 for (
int n = 1;
n <
BYM3; ++
n) {
1592 dxytempdy[0][
m][
n] += dxytempdy[0][
m + 1][
n];
1595 for (
int j =
m + 1;
j <
BXM3; ++
j) {
1596 for (
int n = 1;
n <
BYM3; ++
n) {
1597 dxytempdy[0][
j][
n] = dxytempdy[0][
j + 1][
n];
1605 for (
int n = 1;
n <
BYM3; ++
n) {
1606 for (
int m = 1;
m <
BXM3; ++
m) {
1607 dpdx2d[1][
m][
n] = (dxytempdy[1][
m][
n] - dxytempdy[0][
m][
n]) / (2. * deltaxy[1]);
1625 float xhit,
float yhit,
bool ydouble[
BYM2],
bool xdouble[
BXM2],
float template2d[
BXM2][
BYM2]) {
1628 bool derivatives =
false;
1653 std::vector<bool>& ydouble,
1654 std::vector<bool>& xdouble,
1658 bool derivatives =
false;
1662 if (cotbeta < 0.
f) {
1665 float locBz = locBx;
1666 if (cotalpha < 0.
f) {
1673 yd[
BYM2 - 1] =
false;
1675 yd[
i + 1] = ydouble[
i];
1678 xd[
BXM2 - 1] =
false;
1680 xd[
j + 1] = xdouble[
j];
1706 float sigi, sigi2, sigi3, sigi4, qscale, err2, err00;
1710 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 1711 if (index < 1 || index >=
BYM2) {
1712 throw cms::Exception(
"DataCorrupt") <<
"SiPixelTemplate2D::ysigma2 called with index = " <<
index << std::endl;
1722 if (qpixel < sxymax_) {
1727 qscale = qpixel / sxymax_;
1729 sigi2 = sigi * sigi;
1730 sigi3 = sigi2 * sigi;
1731 sigi4 = sigi3 * sigi;
1733 err00 = xypary0x0_[0][0] + xypary0x0_[0][1] * sigi + xypary0x0_[0][2] * sigi2 + xypary0x0_[0][3] * sigi3 +
1734 xypary0x0_[0][4] * sigi4;
1736 adcota_ * (xypary0x1_[0][0] + xypary0x1_[0][1] * sigi + xypary0x1_[0][2] * sigi2 + xypary0x1_[0][3] * sigi3 +
1737 xypary0x1_[0][4] * sigi4 - err00) +
1738 adcotb_ * (xypary1x0_[0][0] + xypary1x0_[0][1] * sigi + xypary1x0_[0][2] * sigi2 + xypary1x0_[0][3] * sigi3 +
1739 xypary1x0_[0][4] * sigi4 - err00);
1741 err00 = xypary0x0_[1][0] + xypary0x0_[1][1] * sigi + xypary0x0_[1][2] * sigi2 + xypary0x0_[1][3] * sigi3 +
1742 xypary0x0_[1][4] * sigi4;
1744 adcota_ * (xypary0x1_[1][0] + xypary0x1_[1][1] * sigi + xypary0x1_[1][2] * sigi2 + xypary0x1_[1][3] * sigi3 +
1745 xypary0x1_[1][4] * sigi4 - err00) +
1746 adcotb_ * (xypary1x0_[1][0] + xypary1x0_[1][1] * sigi + xypary1x0_[1][2] * sigi2 + xypary1x0_[1][3] * sigi3 +
1747 xypary1x0_[1][4] * sigi4 - err00);
1749 xysig2 = qscale * err2;
1750 if (xysig2 <= 0.
f) {
1751 xysig2 = s50_ * s50_;
1766 for (
int i = 0;
i < 2; ++
i) {
1767 for (
int j = 0;
j < 5; ++
j) {
1768 lanpar[
i][
j] = lanpar_[
i][
j];
std::vector< float > const & sVector() const
bool xytemp(float xhit, float yhit, bool ydouble[21+2], bool xdouble[13+2], float template2d[13+2][21+2], bool dervatives, float dpdx2d[2][13+2][21+2], float &QTemplate)
SiPixelTemplateHeader2D head
Header information.
void xysigma2(float qpixel, int index, float &xysig2)
std::string to_string(const V &value)
constexpr bool isFinite(T x)
void resize(int ny, int nx)
< template storage structure
Abs< T >::type abs(const T &t)
bool interpolate(int id, float cotalpha, float cotbeta, float locBz, float locBx)
void landau_par(float lanpar[2][5])
Return the Landau probability parameters for this set of cot(alpha, cot(beta)
std::vector< SiPixelTemplateEntry2D * > entry
static bool pushfile(int filenum, std::vector< SiPixelTemplateStore2D > &pixelTemp, std::string dir="CalibTracker/SiPixelESProducers/data/")