CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
SiPixelTemplate2D Class Reference

#include <SiPixelTemplate2D.h>

Public Member Functions

float chi2avgone ()
 average y chi^2 for 1 pixel clusters More...
 
float chi2minone ()
 minimum of y chi^2 for 1 pixel clusters More...
 
float chi2ppix ()
 average chi^2 per struck pixel More...
 
float chi2scale ()
 scale factor for chi^2 distribution More...
 
float clslenx ()
 cluster x-size More...
 
float clsleny ()
 cluster y-size More...
 
float delyavg ()
 average difference between clsleny_ and cluster length [with threshold effects] More...
 
float delysig ()
 rms difference between clsleny_ and cluster length [with threshold effects] More...
 
float fbin (int i)
 Return lower bound of Qbin definition. More...
 
bool getid (int id)
 
bool interpolate (int id, float cotalpha, float cotbeta, float locBz, float locBx)
 
float kappavav ()
 kappa parameter in Vavilov distribution More...
 
void landau_par (float lanpar[2][5])
 Return the Landau probability parameters for this set of cot(alpha, cot(beta) More...
 
float lorxdrift ()
 signed lorentz x-width (microns) More...
 
float lorydrift ()
 signed lorentz y-width (microns) More...
 
float mpvvav ()
 most probable Q in Vavilov distribution More...
 
float offsetx (int i)
 x-offset in 4 charge bins More...
 
float offsety (int i)
 y-offset in 4 charge bins More...
 
float pixmax ()
 maximum pixel charge More...
 
float qavg ()
 average cluster charge for this set of track angles More...
 
float qscale ()
 charge scaling factor More...
 
float s50 ()
 1/2 of the pixel threshold signal in adc units More...
 
float scalex (int i)
 x-error scale factor in 4 charge bins More...
 
float scalexavg ()
 x-reco error scaling factor More...
 
float scaley (int i)
 y-error scale factor in 4 charge bins More...
 
float scaleyavg ()
 y-reco error scaling factor More...
 
float sigmavav ()
 scale factor in Vavilov distribution More...
 
 SiPixelTemplate2D (const std::vector< SiPixelTemplateStore2D > &thePixelTemp)
 Default constructor. More...
 
float sizex ()
 return x size of template cluster More...
 
float sizey ()
 return y size of template cluster More...
 
int storesize ()
 return the size of the template store (the number of stored IDs More...
 
float sxymax ()
 max pixel signal for pixel error calculation More...
 
float xsize ()
 pixel x-size (microns) More...
 
void xysigma2 (float qpixel, int index, float &xysig2)
 
bool xytemp (float xhit, float yhit, bool ydouble[21+2], bool xdouble[13+2], float template2d[13+2][21+2])
 
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)
 
bool xytemp (int id, float cotalpha, float cotbeta, float xhit, float yhit, std::vector< bool > &ydouble, std::vector< bool > &xdouble, float template2d[13+2][21+2])
 
float ysize ()
 pixel y-size (microns) More...
 
float zsize ()
 pixel z-size or thickness (microns) More...
 

Static Public Member Functions

static bool pushfile (const SiPixel2DTemplateDBObject &dbobject, std::vector< SiPixelTemplateStore2D > &pixelTemp)
 
static bool pushfile (int filenum, std::vector< SiPixelTemplateStore2D > &pixelTemp, std::string dir="CalibTracker/SiPixelESProducers/data/")
 

Private Member Functions

bool checkIllegalIndex (const std::string whichMethod, int indMax, int i)
 

Private Attributes

float adcota_
 fractional pixel distance of cot(alpha) from jx0_ More...
 
float adcotb_
 fractional pixel distance of cot(beta) from iy0_ More...
 
float chi2avgone_
 average chi^2 for 1 pixel clusters More...
 
float chi2minone_
 minimum of chi^2 for 1 pixel clusters More...
 
float chi2ppix_
 average chi^2 per struck pixel More...
 
float chi2scale_
 scale factor for chi2 distribution More...
 
float clslenx_
 projected x-length of cluster More...
 
float clsleny_
 projected y-length of cluster More...
 
float cota_current_
 current cot alpha More...
 
float cotalpha0_
 minimum cot(alpha) covered More...
 
float cotalpha1_
 maximum cot(alpha) covered More...
 
float cotb_current_
 current cot beta More...
 
float cotbeta0_
 minimum cot(beta) covered More...
 
float cotbeta1_
 maximum cot(beta) covered More...
 
float deltacota_
 cot(alpha) bin size More...
 
float deltacotb_
 cot(beta) bin size More...
 
float delyavg_
 average difference between clsleny_ and cluster length [with threshold effects] More...
 
float delysig_
 rms of difference between clsleny_ and cluster length [with threshold effects] More...
 
int Dtype_
 flags BPix (=0) or FPix (=1) More...
 
const SiPixelTemplateEntry2Dentry00_
 
const SiPixelTemplateEntry2Dentry01_
 
const SiPixelTemplateEntry2Dentry10_
 
float fbin_ [3]
 The QBin definitions in Q_clus/Q_avg. More...
 
bool flip_x_
 flip x sign-sensitive quantities More...
 
bool flip_y_
 flip y sign-sensitive quantities More...
 
int id_current_
 current id More...
 
int imax_
 max y index of templated cluster More...
 
int imin_
 min y index of templated cluster More...
 
int index_id_
 current index More...
 
int iy0_
 index of nearest cot(beta) bin More...
 
int iy1_
 index of next-nearest cot(beta) bin More...
 
int jmax_
 max x index of templated cluster More...
 
int jmin_
 min x index of templated cluster More...
 
int jx0_
 index of nearest cot(alpha) bin More...
 
int jx1_
 index of next-nearest cot(alpha) bin More...
 
float kappavav_
 kappa parameter in Vavilov distribution More...
 
float lanpar_ [2][5]
 Interpolated Landau parameters. More...
 
float lorxdrift_
 Lorentz x-drift. More...
 
float lorxwidth_
 Lorentz x-width. More...
 
float lorydrift_
 Lorentz y-drift. More...
 
float lorywidth_
 Lorentz y-width (sign corrected for fpix frame) More...
 
float mpvvav_
 most probable Q in Vavilov distribution More...
 
int Nxx_
 number of cot(alpha)-entries (rows) in template More...
 
int Nyx_
 number of cot(beta)-entries (columns) in template More...
 
float offsetx_ [4]
 x-offset in charge bins More...
 
float offsety_ [4]
 y-offset in charge bins More...
 
float pixmax_
 maximum pixel charge More...
 
float qavg_
 average cluster charge for this set of track angles More...
 
float qscale_
 charge scaling factor More...
 
float s50_
 1/2 of the pixel threshold signal in adc units More...
 
float scalex_ [4]
 x-error scale factor in charge bins More...
 
float scalexavg_
 average x-error scale factor More...
 
float scaley_ [4]
 y-error scale factor in charge bins More...
 
float scaleyavg_
 average y-error scale factor More...
 
float sigmavav_
 scale factor in Vavilov distribution More...
 
bool success_
 true if cotalpha, cotbeta are inside of the acceptance (dynamically loaded) More...
 
float sxymax_
 average pixel signal for y-projection of cluster More...
 
const std::vector< SiPixelTemplateStore2D > & thePixelTemp_
 
float xsize_
 Pixel x-size. More...
 
float xypary0x0_ [2][5]
 Polynomial error parameterization at ix0,iy0. More...
 
float xypary0x1_ [2][5]
 Polynomial error parameterization at ix1,iy0. More...
 
float xypary1x0_ [2][5]
 Polynomial error parameterization at ix0,iy1. More...
 
float xytemp_ [13+2][21+2]
 template for xy-reconstruction More...
 
float ysize_
 Pixel y-size. More...
 
float zsize_
 Pixel z-size (thickness) More...
 

Detailed Description

A template management class. SiPixelTemplate contains thePixelTemp (a std::vector of SiPixelTemplateStore, each of which is a collection of many SiPixelTemplateEntries). Each SiPixelTemplateStore corresponds to a given detector condition, and is valid for a range of runs. We allow more than one Store since the may change over time.

This class reads templates from files via pushfile() method.

The main functionality of SiPixelTemplate is xytemp(), which produces a template on the fly, given a specific track's alpha and beta. The results are kept in data members and accessed via inline getters.

The resulting template is then used by PixelTempReco2D() (a global function) which get the reference for SiPixelTemplate & templ and uses the current template to reconstruct the SiPixelRecHit.

Definition at line 128 of file SiPixelTemplate2D.h.

Constructor & Destructor Documentation

◆ SiPixelTemplate2D()

SiPixelTemplate2D::SiPixelTemplate2D ( const std::vector< SiPixelTemplateStore2D > &  thePixelTemp)
inline

Default constructor.

Definition at line 130 of file SiPixelTemplate2D.h.

References cota_current_, cotb_current_, id_current_, and index_id_.

Member Function Documentation

◆ checkIllegalIndex()

bool SiPixelTemplate2D::checkIllegalIndex ( const std::string  whichMethod,
int  indMax,
int  i 
)
inlineprivate

Definition at line 270 of file SiPixelTemplate2D.h.

270  {
271 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
272  if (i < 0 || i > indMax) {
273  throw cms::Exception("DataCorrupt")
274  << "SiPixelTemplate2D::" << whichMethod << " called with illegal index = " << i << std::endl;
275  }
276 #else
277  assert(i >= 0 && i < indMax + 1);
278 
279 #endif
280  return true;
281  }

References cms::cuda::assert(), Exception, and mps_fire::i.

Referenced by fbin(), offsetx(), offsety(), scalex(), and scaley().

◆ chi2avgone()

float SiPixelTemplate2D::chi2avgone ( )
inline

average y chi^2 for 1 pixel clusters

Definition at line 247 of file SiPixelTemplate2D.h.

References chi2avgone_.

◆ chi2minone()

float SiPixelTemplate2D::chi2minone ( )
inline

minimum of y chi^2 for 1 pixel clusters

Definition at line 248 of file SiPixelTemplate2D.h.

References chi2minone_.

◆ chi2ppix()

float SiPixelTemplate2D::chi2ppix ( )
inline

average chi^2 per struck pixel

Definition at line 245 of file SiPixelTemplate2D.h.

References chi2ppix_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ chi2scale()

float SiPixelTemplate2D::chi2scale ( )
inline

scale factor for chi^2 distribution

Definition at line 246 of file SiPixelTemplate2D.h.

References chi2scale_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ clslenx()

float SiPixelTemplate2D::clslenx ( )
inline

cluster x-size

Definition at line 255 of file SiPixelTemplate2D.h.

References clslenx_.

◆ clsleny()

float SiPixelTemplate2D::clsleny ( )
inline

cluster y-size

Definition at line 254 of file SiPixelTemplate2D.h.

References clsleny_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ delyavg()

float SiPixelTemplate2D::delyavg ( )
inline

average difference between clsleny_ and cluster length [with threshold effects]

Definition at line 258 of file SiPixelTemplate2D.h.

References delyavg_.

◆ delysig()

float SiPixelTemplate2D::delysig ( )
inline

rms difference between clsleny_ and cluster length [with threshold effects]

Definition at line 261 of file SiPixelTemplate2D.h.

References delysig_.

◆ fbin()

float SiPixelTemplate2D::fbin ( int  i)
inline

Return lower bound of Qbin definition.

Definition at line 236 of file SiPixelTemplate2D.h.

References checkIllegalIndex(), fbin_, and mps_fire::i.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ getid()

bool SiPixelTemplate2D::getid ( int  id)

Definition at line 535 of file SiPixelTemplate2D.cc.

535  {
536  if (id != id_current_) {
537  // Find the index corresponding to id
538 
539  index_id_ = -1;
540  for (int i = 0; i < (int)thePixelTemp_.size(); ++i) {
541  if (id == thePixelTemp_[i].head.ID) {
542  index_id_ = i;
543  id_current_ = id;
544 
545  // Copy the detector type to the private variable
546 
547  Dtype_ = thePixelTemp_[index_id_].head.Dtype;
548 
549  // Copy the charge scaling factor to the private variable
550 
551  qscale_ = thePixelTemp_[index_id_].head.qscale;
552 
553  // Copy the pseudopixel signal size to the private variable
554 
555  s50_ = thePixelTemp_[index_id_].head.s50;
556 
557  // Copy Qbinning info to private variables
558 
559  for (int j = 0; j < 3; ++j) {
560  fbin_[j] = thePixelTemp_[index_id_].head.fbin[j];
561  }
562 
563  // Copy the Lorentz widths to private variables
564 
565  lorywidth_ = thePixelTemp_[index_id_].head.lorywidth;
566  lorxwidth_ = thePixelTemp_[index_id_].head.lorxwidth;
567 
568  // Copy the pixel sizes private variables
569 
570  xsize_ = thePixelTemp_[index_id_].head.xsize;
571  ysize_ = thePixelTemp_[index_id_].head.ysize;
572  zsize_ = thePixelTemp_[index_id_].head.zsize;
573 
574  // Determine the size of this template
575 
576  Nyx_ = thePixelTemp_[index_id_].head.NTyx;
577  Nxx_ = thePixelTemp_[index_id_].head.NTxx;
578 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
579  if (Nyx_ < 2 || Nxx_ < 2) {
580  throw cms::Exception("DataCorrupt") << "template ID = " << id_current_
581  << "has too few entries: Nyx/Nxx = " << Nyx_ << "/" << Nxx_ << std::endl;
582  }
583 #else
584  assert(Nyx_ > 1 && Nxx_ > 1);
585 #endif
586  int imidx = Nxx_ / 2;
587 
588  cotalpha0_ = thePixelTemp_[index_id_].entry[0][0].cotalpha;
589  cotalpha1_ = thePixelTemp_[index_id_].entry[0][Nxx_ - 1].cotalpha;
590  deltacota_ = (cotalpha1_ - cotalpha0_) / (float)(Nxx_ - 1);
591 
592  cotbeta0_ = thePixelTemp_[index_id_].entry[0][imidx].cotbeta;
593  cotbeta1_ = thePixelTemp_[index_id_].entry[Nyx_ - 1][imidx].cotbeta;
594  deltacotb_ = (cotbeta1_ - cotbeta0_) / (float)(Nyx_ - 1);
595 
596  break;
597  }
598  }
599  }
600 
601 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
602  if (index_id_ < 0 || index_id_ >= (int)thePixelTemp_.size()) {
603  throw cms::Exception("DataCorrupt") << "SiPixelTemplate2D::interpolate can't find needed template ID = " << id
604  << ", Are you using the correct global tag?" << std::endl;
605  }
606 #else
607  assert(index_id_ >= 0 && index_id_ < (int)thePixelTemp_.size());
608 #endif
609  return true;
610 }

References cms::cuda::assert(), Exception, mps_fire::i, triggerObjects_cff::id, createfilelist::int, and dqmiolumiharvest::j.

Referenced by SiPixelChargeReweightingAlgorithm::PixelTempRewgt2D().

◆ interpolate()

bool SiPixelTemplate2D::interpolate ( int  id,
float  cotalpha,
float  cotbeta,
float  locBz,
float  locBx 
)

Interpolate stored 2-D information for input angles

Parameters
id- (input) the id of the template
cotalpha- (input) the cotangent of the alpha track angle (see CMS IN 2004/014)
cotbeta- (input) the cotangent of the beta track angle (see CMS IN 2004/014)
locBz- (input) the sign of this quantity is used to determine whether to flip cot(beta)<0 quantities from cot(beta)>0 (FPix only) for Phase 0 FPix IP-related tracks, locBz < 0 for cot(beta) > 0 and locBz > 0 for cot(beta) < 0 for Phase 1 FPix IP-related tracks, see next comment
locBx- (input) the sign of this quantity is used to determine whether to flip cot(alpha/beta)<0 quantities from cot(alpha/beta)>0 (FPix only) for Phase 1 FPix IP-related tracks, locBx/locBz > 0 for cot(alpha) > 0 and locBx/locBz < 0 for cot(alpha) < 0 for Phase 1 FPix IP-related tracks, locBx > 0 for cot(beta) > 0 and locBx < 0 for cot(beta) < 0

Definition at line 625 of file SiPixelTemplate2D.cc.

625  {
626  // Interpolate for a new set of track angles
627 
628  // Local variables
629 
630  float acotb, dcota, dcotb;
631 
632  // Check to see if interpolation is valid
633 
634  if (id != id_current_ || cotalpha != cota_current_ || cotbeta != cotb_current_) {
635  cota_current_ = cotalpha;
636  cotb_current_ = cotbeta;
637  // Try to find the correct template. Fill the class variable index_id_ .
638  success_ = getid(id);
639  }
640 
641 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
642  if (index_id_ < 0 || index_id_ >= (int)thePixelTemp_.size()) {
643  throw cms::Exception("DataCorrupt") << "SiPixelTemplate2D::interpolate can't find needed template ID = " << id
644  << ", Are you using the correct global tag?" << std::endl;
645  }
646 #else
647  assert(index_id_ >= 0 && index_id_ < (int)thePixelTemp_.size());
648 #endif
649 
650  // Check angle limits and et up interpolation parameters
651 
652  float cota = cotalpha;
653  flip_x_ = false;
654  flip_y_ = false;
655  switch (Dtype_) {
656  case 0:
657  if (cotbeta < 0.f) {
658  flip_y_ = true;
659  }
660  break;
661  case 1:
662  if (locBz > 0.f) {
663  flip_y_ = true;
664  }
665  break;
666  case 2:
667  case 3:
668  case 4:
669  case 5:
670  if (locBx * locBz < 0.f) {
671  cota = std::abs(cotalpha);
672  flip_x_ = true;
673  }
674  if (locBx < 0.f) {
675  flip_y_ = true;
676  }
677  break;
678  default:
679 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
680  throw cms::Exception("DataCorrupt")
681  << "SiPixelTemplate2D::illegal subdetector ID = " << thePixelTemp_[index_id_].head.Dtype << std::endl;
682 #else
683  std::cout << "SiPixelTemplate:2D:illegal subdetector ID = " << thePixelTemp_[index_id_].head.Dtype << std::endl;
684 #endif
685  }
686 
687  if (cota < cotalpha0_) {
688  success_ = false;
689  jx0_ = 0;
690  jx1_ = 1;
691  adcota_ = 0.f;
692  } else if (cota > cotalpha1_) {
693  success_ = false;
694  jx0_ = Nxx_ - 1;
695  jx1_ = jx0_ - 1;
696  adcota_ = 0.f;
697  } else {
698  jx0_ = (int)((cota - cotalpha0_) / deltacota_ + 0.5f);
699  dcota = (cota - (cotalpha0_ + jx0_ * deltacota_)) / deltacota_;
700  adcota_ = fabs(dcota);
701  if (dcota > 0.f) {
702  jx1_ = jx0_ + 1;
703  if (jx1_ > Nxx_ - 1)
704  jx1_ = jx0_ - 1;
705  } else {
706  jx1_ = jx0_ - 1;
707  if (jx1_ < 0)
708  jx1_ = jx0_ + 1;
709  }
710  }
711 
712  // Interpolate the absolute value of cot(beta)
713 
714  acotb = std::abs(cotbeta);
715 
716  if (acotb < cotbeta0_) {
717  success_ = false;
718  iy0_ = 0;
719  iy1_ = 1;
720  adcotb_ = 0.f;
721  } else if (acotb > cotbeta1_) {
722  success_ = false;
723  iy0_ = Nyx_ - 1;
724  iy1_ = iy0_ - 1;
725  adcotb_ = 0.f;
726  } else {
727  iy0_ = (int)((acotb - cotbeta0_) / deltacotb_ + 0.5f);
728  dcotb = (acotb - (cotbeta0_ + iy0_ * deltacotb_)) / deltacotb_;
729  adcotb_ = fabs(dcotb);
730  if (dcotb > 0.f) {
731  iy1_ = iy0_ + 1;
732  if (iy1_ > Nyx_ - 1)
733  iy1_ = iy0_ - 1;
734  } else {
735  iy1_ = iy0_ - 1;
736  if (iy1_ < 0)
737  iy1_ = iy0_ + 1;
738  }
739  }
740 
741  // Calculate signed quantities
742 
743  lorydrift_ = lorywidth_ / 2.;
744  if (flip_y_)
746  lorxdrift_ = lorxwidth_ / 2.;
747  if (flip_x_)
749 
750  // Use pointers to the three angle pairs used in the interpolation
751 
755 
756  // Interpolate things in cot(alpha)-cot(beta)
757 
759 
762 
765 
768 
771 
774 
777 
780 
783 
786 
789 
792 
795 
798 
801 
804 
805  for (int i = 0; i < 4; ++i) {
808 
811 
814  if (flip_x_)
815  offsetx_[i] = -offsetx_[i];
816 
819  if (flip_y_)
820  offsety_[i] = -offsety_[i];
821  }
822 
823  for (int i = 0; i < 2; ++i) {
824  for (int j = 0; j < 5; ++j) {
825  // Charge loss switches sides when cot(beta) changes sign
826  if (flip_y_) {
827  xypary0x0_[1 - i][j] = (float)entry00_->xypar[i][j];
828  xypary1x0_[1 - i][j] = (float)entry10_->xypar[i][j];
829  xypary0x1_[1 - i][j] = (float)entry01_->xypar[i][j];
830  lanpar_[1 - i][j] = entry00_->lanpar[i][j] + adcota_ * (entry01_->lanpar[i][j] - entry00_->lanpar[i][j]) +
831  adcotb_ * (entry10_->lanpar[i][j] - entry00_->lanpar[i][j]);
832  } else {
833  xypary0x0_[i][j] = (float)entry00_->xypar[i][j];
834  xypary1x0_[i][j] = (float)entry10_->xypar[i][j];
835  xypary0x1_[i][j] = (float)entry01_->xypar[i][j];
836  lanpar_[i][j] = entry00_->lanpar[i][j] + adcota_ * (entry01_->lanpar[i][j] - entry00_->lanpar[i][j]) +
837  adcotb_ * (entry10_->lanpar[i][j] - entry00_->lanpar[i][j]);
838  }
839  }
840  }
841 
842  return success_;
843 } // interpolate

References funct::abs(), cms::cuda::assert(), gather_cfg::cout, Exception, f, dqmMemoryStats::float, mps_fire::i, createfilelist::int, and dqmiolumiharvest::j.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D(), and xytemp().

◆ kappavav()

float SiPixelTemplate2D::kappavav ( )
inline

kappa parameter in Vavilov distribution

Definition at line 251 of file SiPixelTemplate2D.h.

References kappavav_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ landau_par()

void SiPixelTemplate2D::landau_par ( float  lanpar[2][5])

Return the Landau probability parameters for this set of cot(alpha, cot(beta)

Definition at line 1751 of file SiPixelTemplate2D.cc.

1753 {
1754  // Interpolate using quantities already stored in the private variables
1755 
1756  for (int i = 0; i < 2; ++i) {
1757  for (int j = 0; j < 5; ++j) {
1758  lanpar[i][j] = lanpar_[i][j];
1759  }
1760  }
1761  return;
1762 
1763 } // End lan_par

References mps_fire::i, and dqmiolumiharvest::j.

Referenced by SiPixelTemplateSplit::PixelTempSplit().

◆ lorxdrift()

float SiPixelTemplate2D::lorxdrift ( )
inline

signed lorentz x-width (microns)

Definition at line 253 of file SiPixelTemplate2D.h.

References lorxdrift_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ lorydrift()

float SiPixelTemplate2D::lorydrift ( )
inline

signed lorentz y-width (microns)

Definition at line 252 of file SiPixelTemplate2D.h.

References lorydrift_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ mpvvav()

float SiPixelTemplate2D::mpvvav ( )
inline

most probable Q in Vavilov distribution

Definition at line 249 of file SiPixelTemplate2D.h.

References mpvvav_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ offsetx()

float SiPixelTemplate2D::offsetx ( int  i)
inline

x-offset in 4 charge bins

Definition at line 222 of file SiPixelTemplate2D.h.

References checkIllegalIndex(), mps_fire::i, and offsetx_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ offsety()

float SiPixelTemplate2D::offsety ( int  i)
inline

y-offset in 4 charge bins

Definition at line 229 of file SiPixelTemplate2D.h.

References checkIllegalIndex(), mps_fire::i, and offsety_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ pixmax()

float SiPixelTemplate2D::pixmax ( )
inline

maximum pixel charge

Definition at line 204 of file SiPixelTemplate2D.h.

References pixmax_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ pushfile() [1/2]

bool SiPixelTemplate2D::pushfile ( const SiPixel2DTemplateDBObject dbobject,
std::vector< SiPixelTemplateStore2D > &  pixelTemp 
)
static

This routine initializes the global template structures from an external file template_summary_zpNNNN where NNNN are four digits

Parameters
dbobject- db storing multiple template calibrations

Definition at line 312 of file SiPixelTemplate2D.cc.

313  {
314  // Add template stored in external dbobject to theTemplateStore
315 
316  const int code_version = {21};
317 
318  // We must create a new object because dbobject must be a const and our stream must not be
319  SiPixel2DTemplateDBObject db = dbobject;
320 
321  // Create a local template storage entry
322  SiPixelTemplateStore2D theCurrentTemp;
323 
324  // Fill the template storage for each template calibration stored in the db
325  for (int m = 0; m < db.numOfTempl(); ++m) {
326  // Read-in a header string first and print it
327 
329  for (int i = 0; i < 20; ++i) {
330  temp.f = db.sVector()[db.index()];
331  theCurrentTemp.head.title[4 * i] = temp.c[0];
332  theCurrentTemp.head.title[4 * i + 1] = temp.c[1];
333  theCurrentTemp.head.title[4 * i + 2] = temp.c[2];
334  theCurrentTemp.head.title[4 * i + 3] = temp.c[3];
335  db.incrementIndex(1);
336  }
337  theCurrentTemp.head.title[79] = '\0';
338  LOGINFO("SiPixelTemplate2D") << "Loading Pixel Template File - " << theCurrentTemp.head.title << ENDL;
339 
340  // next, the header information
341 
342  db >> theCurrentTemp.head.ID >> theCurrentTemp.head.templ_version >> theCurrentTemp.head.Bfield >>
343  theCurrentTemp.head.NTy >> theCurrentTemp.head.NTyx >> theCurrentTemp.head.NTxx >> theCurrentTemp.head.Dtype >>
344  theCurrentTemp.head.Vbias >> theCurrentTemp.head.temperature >> theCurrentTemp.head.fluence >>
345  theCurrentTemp.head.qscale >> theCurrentTemp.head.s50 >> theCurrentTemp.head.lorywidth >>
346  theCurrentTemp.head.lorxwidth >> theCurrentTemp.head.ysize >> theCurrentTemp.head.xsize >>
347  theCurrentTemp.head.zsize;
348 
349  if (db.fail()) {
350  LOGERROR("SiPixelTemplate2D") << "Error reading file 0A, no template load" << ENDL;
351  return false;
352  }
353 
354  LOGINFO("SiPixelTemplate2D") << "Loading Pixel Template File - " << theCurrentTemp.head.title
355  << " code version = " << code_version << " object version "
356  << theCurrentTemp.head.templ_version << ENDL;
357 
358  if (theCurrentTemp.head.templ_version > 17) {
359  db >> theCurrentTemp.head.ss50 >> theCurrentTemp.head.lorybias >> theCurrentTemp.head.lorxbias >>
360  theCurrentTemp.head.fbin[0] >> theCurrentTemp.head.fbin[1] >> theCurrentTemp.head.fbin[2];
361 
362  if (db.fail()) {
363  LOGERROR("SiPixelTemplate2D") << "Error reading file 0B, no template load" << ENDL;
364  return false;
365  }
366  } else {
367  // This is for older [legacy] payloads and the numbers are indeed magic [they are part of the payload for v>17]
368  theCurrentTemp.head.ss50 = theCurrentTemp.head.s50;
369  theCurrentTemp.head.lorybias = theCurrentTemp.head.lorywidth / 2.f;
370  theCurrentTemp.head.lorxbias = theCurrentTemp.head.lorxwidth / 2.f;
371  theCurrentTemp.head.fbin[0] = 1.50f;
372  theCurrentTemp.head.fbin[1] = 1.00f;
373  theCurrentTemp.head.fbin[2] = 0.85f;
374  }
375 
376  LOGINFO("SiPixelTemplate2D") << "Template ID = " << theCurrentTemp.head.ID << ", Template Version "
377  << theCurrentTemp.head.templ_version << ", Bfield = " << theCurrentTemp.head.Bfield
378  << ", NTy = " << theCurrentTemp.head.NTy << ", NTyx = " << theCurrentTemp.head.NTyx
379  << ", NTxx = " << theCurrentTemp.head.NTxx << ", Dtype = " << theCurrentTemp.head.Dtype
380  << ", Bias voltage " << theCurrentTemp.head.Vbias << ", temperature "
381  << theCurrentTemp.head.temperature << ", fluence " << theCurrentTemp.head.fluence
382  << ", Q-scaling factor " << theCurrentTemp.head.qscale << ", 1/2 multi dcol threshold "
383  << theCurrentTemp.head.s50 << ", 1/2 single dcol threshold "
384  << theCurrentTemp.head.ss50 << ", y Lorentz Width " << theCurrentTemp.head.lorywidth
385  << ", y Lorentz Bias " << theCurrentTemp.head.lorybias << ", x Lorentz width "
386  << theCurrentTemp.head.lorxwidth << ", x Lorentz Bias " << theCurrentTemp.head.lorxbias
387  << ", Q/Q_avg fractions for Qbin defs " << theCurrentTemp.head.fbin[0] << ", "
388  << theCurrentTemp.head.fbin[1] << ", " << theCurrentTemp.head.fbin[2]
389  << ", pixel x-size " << theCurrentTemp.head.xsize << ", y-size "
390  << theCurrentTemp.head.ysize << ", zsize " << theCurrentTemp.head.zsize << ENDL;
391 
392  if (theCurrentTemp.head.templ_version < code_version) {
393  LOGINFO("SiPixelTemplate2D") << "code expects version " << code_version << " finds "
394  << theCurrentTemp.head.templ_version << ", load anyway " << ENDL;
395  }
396 
397  if (theCurrentTemp.head.NTy != 0) {
398  LOGERROR("SiPixelTemplate2D")
399  << "Trying to load 1-d template info into the 2-d template object, check your DB/global tag!" << ENDL;
400  return false;
401  }
402 
403  // next, layout the 2-d structure needed to store template
404 
405  theCurrentTemp.entry.resize(theCurrentTemp.head.NTyx);
406  for (auto& item : theCurrentTemp.entry)
407  item.resize(theCurrentTemp.head.NTxx);
408 
409  // Read in the file info
410 
411  for (int iy = 0; iy < theCurrentTemp.head.NTyx; ++iy) {
412  for (int jx = 0; jx < theCurrentTemp.head.NTxx; ++jx) {
413  db >> theCurrentTemp.entry[iy][jx].runnum >> theCurrentTemp.entry[iy][jx].costrk[0] >>
414  theCurrentTemp.entry[iy][jx].costrk[1] >> theCurrentTemp.entry[iy][jx].costrk[2];
415 
416  if (db.fail()) {
417  LOGERROR("SiPixelTemplate2D") << "Error reading file 1, no template load, run # "
418  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
419  return false;
420  }
421 
422  // Calculate cot(alpha) and cot(beta) for this entry
423 
424  theCurrentTemp.entry[iy][jx].cotalpha =
425  theCurrentTemp.entry[iy][jx].costrk[0] / theCurrentTemp.entry[iy][jx].costrk[2];
426 
427  theCurrentTemp.entry[iy][jx].cotbeta =
428  theCurrentTemp.entry[iy][jx].costrk[1] / theCurrentTemp.entry[iy][jx].costrk[2];
429 
430  db >> theCurrentTemp.entry[iy][jx].qavg >> theCurrentTemp.entry[iy][jx].pixmax >>
431  theCurrentTemp.entry[iy][jx].sxymax >> theCurrentTemp.entry[iy][jx].iymin >>
432  theCurrentTemp.entry[iy][jx].iymax >> theCurrentTemp.entry[iy][jx].jxmin >>
433  theCurrentTemp.entry[iy][jx].jxmax;
434 
435  if (db.fail()) {
436  LOGERROR("SiPixelTemplate2D") << "Error reading file 2, no template load, run # "
437  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
438  return false;
439  }
440 
441  for (int k = 0; k < 2; ++k) {
442  db >> theCurrentTemp.entry[iy][jx].xypar[k][0] >> theCurrentTemp.entry[iy][jx].xypar[k][1] >>
443  theCurrentTemp.entry[iy][jx].xypar[k][2] >> theCurrentTemp.entry[iy][jx].xypar[k][3] >>
444  theCurrentTemp.entry[iy][jx].xypar[k][4];
445 
446  if (db.fail()) {
447  LOGERROR("SiPixelTemplate2D")
448  << "Error reading file 3, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum << ENDL;
449  return false;
450  }
451  }
452 
453  for (int k = 0; k < 2; ++k) {
454  db >> theCurrentTemp.entry[iy][jx].lanpar[k][0] >> theCurrentTemp.entry[iy][jx].lanpar[k][1] >>
455  theCurrentTemp.entry[iy][jx].lanpar[k][2] >> theCurrentTemp.entry[iy][jx].lanpar[k][3] >>
456  theCurrentTemp.entry[iy][jx].lanpar[k][4];
457 
458  if (db.fail()) {
459  LOGERROR("SiPixelTemplate2D")
460  << "Error reading file 4, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum << ENDL;
461  return false;
462  }
463  }
464 
465  // Read the 2D template entries as floats [they are formatted that way] and cast to short ints
466 
467  float dummy[T2YSIZE];
468  for (int l = 0; l < 7; ++l) {
469  for (int k = 0; k < 7; ++k) {
470  for (int j = 0; j < T2XSIZE; ++j) {
471  for (int i = 0; i < T2YSIZE; ++i) {
472  db >> dummy[i];
473  }
474  if (db.fail()) {
475  LOGERROR("SiPixelTemplate2D")
476  << "Error reading file 5, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum << ENDL;
477  return false;
478  }
479  for (int i = 0; i < T2YSIZE; ++i) {
480  theCurrentTemp.entry[iy][jx].xytemp[k][l][i][j] = (short int)dummy[i];
481  }
482  }
483  }
484  }
485 
486  db >> theCurrentTemp.entry[iy][jx].chi2ppix >> theCurrentTemp.entry[iy][jx].chi2scale >>
487  theCurrentTemp.entry[iy][jx].offsetx[0] >> theCurrentTemp.entry[iy][jx].offsetx[1] >>
488  theCurrentTemp.entry[iy][jx].offsetx[2] >> theCurrentTemp.entry[iy][jx].offsetx[3] >>
489  theCurrentTemp.entry[iy][jx].offsety[0] >> theCurrentTemp.entry[iy][jx].offsety[1] >>
490  theCurrentTemp.entry[iy][jx].offsety[2] >> theCurrentTemp.entry[iy][jx].offsety[3];
491 
492  if (db.fail()) {
493  LOGERROR("SiPixelTemplate2D") << "Error reading file 6, no template load, run # "
494  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
495  return false;
496  }
497 
498  db >> theCurrentTemp.entry[iy][jx].clsleny >> theCurrentTemp.entry[iy][jx].clslenx >>
499  theCurrentTemp.entry[iy][jx].mpvvav >> theCurrentTemp.entry[iy][jx].sigmavav >>
500  theCurrentTemp.entry[iy][jx].kappavav >> theCurrentTemp.entry[iy][jx].scalexavg >>
501  theCurrentTemp.entry[iy][jx].scaleyavg >> theCurrentTemp.entry[iy][jx].delyavg >>
502  theCurrentTemp.entry[iy][jx].delysig >> theCurrentTemp.entry[iy][jx].spare[0];
503 
504  if (db.fail()) {
505  LOGERROR("SiPixelTemplate2D") << "Error reading file 7, no template load, run # "
506  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
507  return false;
508  }
509 
510  db >> theCurrentTemp.entry[iy][jx].scalex[0] >> theCurrentTemp.entry[iy][jx].scalex[1] >>
511  theCurrentTemp.entry[iy][jx].scalex[2] >> theCurrentTemp.entry[iy][jx].scalex[3] >>
512  theCurrentTemp.entry[iy][jx].scaley[0] >> theCurrentTemp.entry[iy][jx].scaley[1] >>
513  theCurrentTemp.entry[iy][jx].scaley[2] >> theCurrentTemp.entry[iy][jx].scaley[3] >>
514  theCurrentTemp.entry[iy][jx].spare[1] >> theCurrentTemp.entry[iy][jx].spare[2];
515 
516  if (db.fail()) {
517  LOGERROR("SiPixelTemplate2D") << "Error reading file 8, no template load, run # "
518  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
519  return false;
520  }
521  }
522  }
523 
524  // Add this template to the store
525 
526  pixelTemp.push_back(theCurrentTemp);
527  }
528 
529  return true;
530 
531 } // TempInit

References SiPixelTemplateHeader2D::Bfield, dqmiodatasetharvest::db, SiPixelTemplateHeader2D::Dtype, ENDL, SiPixelTemplateStore2D::entry, SiPixelTemplateHeader2D::fbin, SiPixelTemplateHeader2D::fluence, SiPixelTemplateStore2D::head, mps_fire::i, SiPixelTemplateHeader2D::ID, createfilelist::int, B2GTnPMonitor_cfi::item, dqmiolumiharvest::j, dqmdumpme::k, cmsLHEtoEOSManager::l, LOGERROR, LOGINFO, SiPixelTemplateHeader2D::lorxbias, SiPixelTemplateHeader2D::lorxwidth, SiPixelTemplateHeader2D::lorybias, SiPixelTemplateHeader2D::lorywidth, visualization-live-secondInstance_cfg::m, SiPixelTemplateHeader2D::NTxx, SiPixelTemplateHeader2D::NTy, SiPixelTemplateHeader2D::NTyx, SiPixelTemplateHeader2D::qscale, SiPixelTemplateHeader2D::s50, SiPixelTemplateHeader2D::ss50, T2XSIZE, T2YSIZE, groupFilesInBlocks::temp, SiPixelTemplateHeader2D::temperature, SiPixelTemplateHeader2D::templ_version, SiPixelTemplateHeader2D::title, SiPixelTemplateHeader2D::Vbias, SiPixelTemplateHeader2D::xsize, SiPixelTemplateHeader2D::ysize, and SiPixelTemplateHeader2D::zsize.

◆ pushfile() [2/2]

bool SiPixelTemplate2D::pushfile ( int  filenum,
std::vector< SiPixelTemplateStore2D > &  pixelTemp,
std::string  dir = "CalibTracker/SiPixelESProducers/data/" 
)
static

This routine initializes the global template structures from an external file template_summary_zpNNNN where NNNN are four digits of filenum.

Parameters
filenum- an integer NNNN used in the filename template_summary_zpNNNN

Alt implementation: for (unsigned cnt=4-tempfile.length(); cnt > 0; cnt– ){ tempfile = "0" + tempfile; }

Definition at line 61 of file SiPixelTemplate2D.cc.

61  {
62  // Add template stored in external file numbered filenum to theTemplateStore
63 
64  // Local variables
65  const int code_version = {21};
66 
67  // Create a filename for this run
68  std::string tempfile = std::to_string(filenum);
69 
70  // Create different path in CMSSW than standalone
71 
72 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
73  // If integer filenum has less than 4 digits, prepend 0's until we have four numerical characters, e.g. "0292"
74  int nzeros = 4 - tempfile.length();
75  if (nzeros > 0)
76  tempfile = std::string(nzeros, '0') + tempfile;
78 
79  tempfile = dir + "template_summary2D_zp" + tempfile + ".out";
80  edm::FileInPath file(tempfile); // Find the file in CMSSW
81  tempfile = file.fullPath(); // Put it back with the whole path.
82 
83 #else
84  // This is the same as above, but more elegant.
85  std::ostringstream tout;
86  tout << "template_summary2D_zp" << std::setw(4) << std::setfill('0') << std::right << filenum << ".out" << std::ends;
87  tempfile = tout.str();
88 
89 #endif
90 
91  // Open the template file
92  //
93  std::ifstream in_file(tempfile);
94  if (in_file.is_open() && in_file.good()) {
95  // Create a local template storage entry
96  SiPixelTemplateStore2D theCurrentTemp;
97 
98  // Read-in a header string first and print it
99  char c;
100  for (int i = 0; (c = in_file.get()) != '\n'; ++i) {
101  if (i < 79) {
102  theCurrentTemp.head.title[i] = c;
103  } else {
104  theCurrentTemp.head.title[79] = '\0';
105  }
106  }
107  LOGINFO("SiPixelTemplate2D") << "Loading Pixel Template File - " << theCurrentTemp.head.title << ENDL;
108 
109  // next, the header information
110  in_file >> theCurrentTemp.head.ID >> theCurrentTemp.head.templ_version >> theCurrentTemp.head.Bfield >>
111  theCurrentTemp.head.NTy >> theCurrentTemp.head.NTyx >> theCurrentTemp.head.NTxx >> theCurrentTemp.head.Dtype >>
112  theCurrentTemp.head.Vbias >> theCurrentTemp.head.temperature >> theCurrentTemp.head.fluence >>
113  theCurrentTemp.head.qscale >> theCurrentTemp.head.s50 >> theCurrentTemp.head.lorywidth >>
114  theCurrentTemp.head.lorxwidth >> theCurrentTemp.head.ysize >> theCurrentTemp.head.xsize >>
115  theCurrentTemp.head.zsize;
116 
117  if (in_file.fail()) {
118  LOGERROR("SiPixelTemplate2D") << "Error reading file 0A, no template load" << ENDL;
119  return false;
120  }
121 
122  if (theCurrentTemp.head.templ_version > 17) {
123  in_file >> theCurrentTemp.head.ss50 >> theCurrentTemp.head.lorybias >> theCurrentTemp.head.lorxbias >>
124  theCurrentTemp.head.fbin[0] >> theCurrentTemp.head.fbin[1] >> theCurrentTemp.head.fbin[2];
125 
126  if (in_file.fail()) {
127  LOGERROR("SiPixelTemplate2D") << "Error reading file 0B, no template load" << ENDL;
128  return false;
129  }
130  } else {
131  // This is for older [legacy] payloads
132  theCurrentTemp.head.ss50 = theCurrentTemp.head.s50;
133  theCurrentTemp.head.lorybias = theCurrentTemp.head.lorywidth / 2.f;
134  theCurrentTemp.head.lorxbias = theCurrentTemp.head.lorxwidth / 2.f;
135  theCurrentTemp.head.fbin[0] = 1.5f;
136  theCurrentTemp.head.fbin[1] = 1.00f;
137  theCurrentTemp.head.fbin[2] = 0.85f;
138  }
139 
140  LOGINFO("SiPixelTemplate2D") << "Template ID = " << theCurrentTemp.head.ID << ", Template Version "
141  << theCurrentTemp.head.templ_version << ", Bfield = " << theCurrentTemp.head.Bfield
142  << ", NTy = " << theCurrentTemp.head.NTy << ", NTyx = " << theCurrentTemp.head.NTyx
143  << ", NTxx = " << theCurrentTemp.head.NTxx << ", Dtype = " << theCurrentTemp.head.Dtype
144  << ", Bias voltage " << theCurrentTemp.head.Vbias << ", temperature "
145  << theCurrentTemp.head.temperature << ", fluence " << theCurrentTemp.head.fluence
146  << ", Q-scaling factor " << theCurrentTemp.head.qscale << ", 1/2 multi dcol threshold "
147  << theCurrentTemp.head.s50 << ", 1/2 single dcol threshold "
148  << theCurrentTemp.head.ss50 << ", y Lorentz Width " << theCurrentTemp.head.lorywidth
149  << ", y Lorentz Bias " << theCurrentTemp.head.lorybias << ", x Lorentz width "
150  << theCurrentTemp.head.lorxwidth << ", x Lorentz Bias " << theCurrentTemp.head.lorxbias
151  << ", Q/Q_avg fractions for Qbin defs " << theCurrentTemp.head.fbin[0] << ", "
152  << theCurrentTemp.head.fbin[1] << ", " << theCurrentTemp.head.fbin[2]
153  << ", pixel x-size " << theCurrentTemp.head.xsize << ", y-size "
154  << theCurrentTemp.head.ysize << ", zsize " << theCurrentTemp.head.zsize << ENDL;
155 
156  if (theCurrentTemp.head.templ_version < code_version) {
157  LOGERROR("SiPixelTemplate2D") << "code expects version " << code_version << ", no template load" << ENDL;
158  return false;
159  }
160 
161  if (theCurrentTemp.head.NTy != 0) {
162  LOGERROR("SiPixelTemplate2D")
163  << "Trying to load 1-d template info into the 2-d template object, check your DB/global tag!" << ENDL;
164  return false;
165  }
166 
167  // next, layout the 2-d structure needed to store template
168 
169  theCurrentTemp.entry.resize(theCurrentTemp.head.NTyx);
170  for (auto& item : theCurrentTemp.entry)
171  item.resize(theCurrentTemp.head.NTxx);
172 
173  // Read in the file info
174 
175  for (int iy = 0; iy < theCurrentTemp.head.NTyx; ++iy) {
176  for (int jx = 0; jx < theCurrentTemp.head.NTxx; ++jx) {
177  in_file >> theCurrentTemp.entry[iy][jx].runnum >> theCurrentTemp.entry[iy][jx].costrk[0] >>
178  theCurrentTemp.entry[iy][jx].costrk[1] >> theCurrentTemp.entry[iy][jx].costrk[2];
179 
180  if (in_file.fail()) {
181  LOGERROR("SiPixelTemplate2D") << "Error reading file 1, no template load, run # "
182  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
183  return false;
184  }
185 
186  // Calculate cot(alpha) and cot(beta) for this entry
187 
188  theCurrentTemp.entry[iy][jx].cotalpha =
189  theCurrentTemp.entry[iy][jx].costrk[0] / theCurrentTemp.entry[iy][jx].costrk[2];
190 
191  theCurrentTemp.entry[iy][jx].cotbeta =
192  theCurrentTemp.entry[iy][jx].costrk[1] / theCurrentTemp.entry[iy][jx].costrk[2];
193 
194  in_file >> theCurrentTemp.entry[iy][jx].qavg >> theCurrentTemp.entry[iy][jx].pixmax >>
195  theCurrentTemp.entry[iy][jx].sxymax >> theCurrentTemp.entry[iy][jx].iymin >>
196  theCurrentTemp.entry[iy][jx].iymax >> theCurrentTemp.entry[iy][jx].jxmin >>
197  theCurrentTemp.entry[iy][jx].jxmax;
198 
199  if (in_file.fail()) {
200  LOGERROR("SiPixelTemplate2D") << "Error reading file 2, no template load, run # "
201  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
202  return false;
203  }
204 
205  for (int k = 0; k < 2; ++k) {
206  in_file >> theCurrentTemp.entry[iy][jx].xypar[k][0] >> theCurrentTemp.entry[iy][jx].xypar[k][1] >>
207  theCurrentTemp.entry[iy][jx].xypar[k][2] >> theCurrentTemp.entry[iy][jx].xypar[k][3] >>
208  theCurrentTemp.entry[iy][jx].xypar[k][4];
209 
210  if (in_file.fail()) {
211  LOGERROR("SiPixelTemplate2D")
212  << "Error reading file 3, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum << ENDL;
213  return false;
214  }
215  }
216 
217  for (int k = 0; k < 2; ++k) {
218  in_file >> theCurrentTemp.entry[iy][jx].lanpar[k][0] >> theCurrentTemp.entry[iy][jx].lanpar[k][1] >>
219  theCurrentTemp.entry[iy][jx].lanpar[k][2] >> theCurrentTemp.entry[iy][jx].lanpar[k][3] >>
220  theCurrentTemp.entry[iy][jx].lanpar[k][4];
221 
222  if (in_file.fail()) {
223  LOGERROR("SiPixelTemplate2D")
224  << "Error reading file 4, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum << ENDL;
225  return false;
226  }
227  }
228 
229  // Read the 2D template entries as floats [they are formatted that way] and cast to short ints
230 
231  float dummy[T2YSIZE];
232  for (int l = 0; l < 7; ++l) {
233  for (int k = 0; k < 7; ++k) {
234  for (int j = 0; j < T2XSIZE; ++j) {
235  for (int i = 0; i < T2YSIZE; ++i) {
236  in_file >> dummy[i];
237  }
238  if (in_file.fail()) {
239  LOGERROR("SiPixelTemplate2D")
240  << "Error reading file 5, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum << ENDL;
241  return false;
242  }
243  for (int i = 0; i < T2YSIZE; ++i) {
244  theCurrentTemp.entry[iy][jx].xytemp[k][l][i][j] = (short int)dummy[i];
245  }
246  }
247  }
248  }
249 
250  in_file >> theCurrentTemp.entry[iy][jx].chi2ppix >> theCurrentTemp.entry[iy][jx].chi2scale >>
251  theCurrentTemp.entry[iy][jx].offsetx[0] >> theCurrentTemp.entry[iy][jx].offsetx[1] >>
252  theCurrentTemp.entry[iy][jx].offsetx[2] >> theCurrentTemp.entry[iy][jx].offsetx[3] >>
253  theCurrentTemp.entry[iy][jx].offsety[0] >> theCurrentTemp.entry[iy][jx].offsety[1] >>
254  theCurrentTemp.entry[iy][jx].offsety[2] >> theCurrentTemp.entry[iy][jx].offsety[3];
255 
256  if (in_file.fail()) {
257  LOGERROR("SiPixelTemplate2D") << "Error reading file 6, no template load, run # "
258  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
259  return false;
260  }
261 
262  in_file >> theCurrentTemp.entry[iy][jx].clsleny >> theCurrentTemp.entry[iy][jx].clslenx >>
263  theCurrentTemp.entry[iy][jx].mpvvav >> theCurrentTemp.entry[iy][jx].sigmavav >>
264  theCurrentTemp.entry[iy][jx].kappavav >> theCurrentTemp.entry[iy][jx].scalexavg >>
265  theCurrentTemp.entry[iy][jx].scaleyavg >> theCurrentTemp.entry[iy][jx].delyavg >>
266  theCurrentTemp.entry[iy][jx].delysig >> theCurrentTemp.entry[iy][jx].spare[0];
267 
268  if (in_file.fail()) {
269  LOGERROR("SiPixelTemplate2D") << "Error reading file 7, no template load, run # "
270  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
271  return false;
272  }
273 
274  in_file >> theCurrentTemp.entry[iy][jx].scalex[0] >> theCurrentTemp.entry[iy][jx].scalex[1] >>
275  theCurrentTemp.entry[iy][jx].scalex[2] >> theCurrentTemp.entry[iy][jx].scalex[3] >>
276  theCurrentTemp.entry[iy][jx].scaley[0] >> theCurrentTemp.entry[iy][jx].scaley[1] >>
277  theCurrentTemp.entry[iy][jx].scaley[2] >> theCurrentTemp.entry[iy][jx].scaley[3] >>
278  theCurrentTemp.entry[iy][jx].spare[1] >> theCurrentTemp.entry[iy][jx].spare[2];
279 
280  if (in_file.fail()) {
281  LOGERROR("SiPixelTemplate2D") << "Error reading file 8, no template load, run # "
282  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
283  return false;
284  }
285  }
286  }
287 
288  in_file.close();
289 
290  // Add this template to the store
291 
292  pixelTemp.push_back(theCurrentTemp);
293 
294  return true;
295 
296  } else {
297  // If file didn't open, report this
298 
299  LOGERROR("SiPixelTemplate2D") << "Error opening File" << tempfile << ENDL;
300  return false;
301  }
302 
303 } // TempInit

References SiPixelTemplateHeader2D::Bfield, c, DeadROC_duringRun::dir, SiPixelTemplateHeader2D::Dtype, ENDL, SiPixelTemplateStore2D::entry, SiPixelTemplateHeader2D::fbin, FrontierConditions_GlobalTag_cff::file, SiPixelTemplateHeader2D::fluence, SiPixelTemplateStore2D::head, mps_fire::i, SiPixelTemplateHeader2D::ID, runGCPTkAlMap::in_file, createfilelist::int, B2GTnPMonitor_cfi::item, dqmiolumiharvest::j, dqmdumpme::k, cmsLHEtoEOSManager::l, LOGERROR, LOGINFO, SiPixelTemplateHeader2D::lorxbias, SiPixelTemplateHeader2D::lorxwidth, SiPixelTemplateHeader2D::lorybias, SiPixelTemplateHeader2D::lorywidth, SiPixelTemplateHeader2D::NTxx, SiPixelTemplateHeader2D::NTy, SiPixelTemplateHeader2D::NTyx, SiPixelTemplateHeader2D::qscale, SiPixelTemplateHeader2D::s50, SiPixelTemplateHeader2D::ss50, AlCaHLTBitMon_QueryRunRegistry::string, T2XSIZE, T2YSIZE, SiPixelTemplateHeader2D::temperature, SiPixelTemplateHeader2D::templ_version, SiPixelTemplateHeader2D::title, SiPixelTemplateHeader2D::Vbias, SiPixelTemplateHeader2D::xsize, SiPixelTemplateHeader2D::ysize, and SiPixelTemplateHeader2D::zsize.

Referenced by SiPixelChargeReweightingAlgorithm::init(), and PixelCPEClusterRepair::PixelCPEClusterRepair().

◆ qavg()

float SiPixelTemplate2D::qavg ( )
inline

average cluster charge for this set of track angles

Definition at line 203 of file SiPixelTemplate2D.h.

References qavg_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ qscale()

float SiPixelTemplate2D::qscale ( )
inline

charge scaling factor

Definition at line 205 of file SiPixelTemplate2D.h.

References qscale_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ s50()

float SiPixelTemplate2D::s50 ( )
inline

1/2 of the pixel threshold signal in adc units

Definition at line 206 of file SiPixelTemplate2D.h.

References s50_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D(), and SiPixelChargeReweightingAlgorithm::PixelTempRewgt2D().

◆ scalex()

float SiPixelTemplate2D::scalex ( int  i)
inline

x-error scale factor in 4 charge bins

Definition at line 208 of file SiPixelTemplate2D.h.

References checkIllegalIndex(), mps_fire::i, and scalex_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ scalexavg()

float SiPixelTemplate2D::scalexavg ( )
inline

x-reco error scaling factor

Definition at line 257 of file SiPixelTemplate2D.h.

References scalexavg_.

◆ scaley()

float SiPixelTemplate2D::scaley ( int  i)
inline

y-error scale factor in 4 charge bins

Definition at line 215 of file SiPixelTemplate2D.h.

References checkIllegalIndex(), mps_fire::i, and scaley_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ scaleyavg()

float SiPixelTemplate2D::scaleyavg ( )
inline

y-reco error scaling factor

Definition at line 256 of file SiPixelTemplate2D.h.

References scaleyavg_.

◆ sigmavav()

float SiPixelTemplate2D::sigmavav ( )
inline

scale factor in Vavilov distribution

Definition at line 250 of file SiPixelTemplate2D.h.

References sigmavav_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ sizex()

float SiPixelTemplate2D::sizex ( )
inline

return x size of template cluster

Definition at line 243 of file SiPixelTemplate2D.h.

References clslenx_.

◆ sizey()

float SiPixelTemplate2D::sizey ( )
inline

return y size of template cluster

Definition at line 244 of file SiPixelTemplate2D.h.

References clsleny_.

◆ storesize()

int SiPixelTemplate2D::storesize ( )
inline

return the size of the template store (the number of stored IDs

Definition at line 265 of file SiPixelTemplate2D.h.

References thePixelTemp_.

◆ sxymax()

float SiPixelTemplate2D::sxymax ( )
inline

max pixel signal for pixel error calculation

Definition at line 207 of file SiPixelTemplate2D.h.

References sxymax_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ xsize()

float SiPixelTemplate2D::xsize ( )
inline

pixel x-size (microns)

Definition at line 262 of file SiPixelTemplate2D.h.

References xsize_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D(), and SiPixelChargeReweightingAlgorithm::PixelTempRewgt2D().

◆ xysigma2()

void SiPixelTemplate2D::xysigma2 ( float  qpixel,
int  index,
float &  xysig2 
)

Return y error (squared) for an input signal and yindex Add large Q scaling for use in cluster splitting.

Parameters
qpixel- (input) pixel charge
index- (input) y-index index of pixel
xysig2- (output) square error

Definition at line 1690 of file SiPixelTemplate2D.cc.

1692 {
1693  // Interpolate using quantities already stored in the private variables
1694 
1695  // Local variables
1696  float sigi, sigi2, sigi3, sigi4, qscale, err2, err00;
1697 
1698  // Make sure that input is OK
1699 
1700 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
1701  if (index < 1 || index >= BYM2) {
1702  throw cms::Exception("DataCorrupt") << "SiPixelTemplate2D::ysigma2 called with index = " << index << std::endl;
1703  }
1704 #else
1705  assert(index > 0 && index < BYM2);
1706 #endif
1707 
1708  // Define the maximum signal to use in the parameterization
1709 
1710  // Evaluate pixel-by-pixel uncertainties (weights) for the templ analysis
1711 
1712  if (qpixel < sxymax_) {
1713  sigi = qpixel;
1714  qscale = 1.f;
1715  } else {
1716  sigi = sxymax_;
1717  qscale = qpixel / sxymax_;
1718  }
1719  sigi2 = sigi * sigi;
1720  sigi3 = sigi2 * sigi;
1721  sigi4 = sigi3 * sigi;
1722  if (index <= T2HYP1) {
1723  err00 = xypary0x0_[0][0] + xypary0x0_[0][1] * sigi + xypary0x0_[0][2] * sigi2 + xypary0x0_[0][3] * sigi3 +
1724  xypary0x0_[0][4] * sigi4;
1725  err2 = err00 +
1726  adcota_ * (xypary0x1_[0][0] + xypary0x1_[0][1] * sigi + xypary0x1_[0][2] * sigi2 + xypary0x1_[0][3] * sigi3 +
1727  xypary0x1_[0][4] * sigi4 - err00) +
1728  adcotb_ * (xypary1x0_[0][0] + xypary1x0_[0][1] * sigi + xypary1x0_[0][2] * sigi2 + xypary1x0_[0][3] * sigi3 +
1729  xypary1x0_[0][4] * sigi4 - err00);
1730  } else {
1731  err00 = xypary0x0_[1][0] + xypary0x0_[1][1] * sigi + xypary0x0_[1][2] * sigi2 + xypary0x0_[1][3] * sigi3 +
1732  xypary0x0_[1][4] * sigi4;
1733  err2 = err00 +
1734  adcota_ * (xypary0x1_[1][0] + xypary0x1_[1][1] * sigi + xypary0x1_[1][2] * sigi2 + xypary0x1_[1][3] * sigi3 +
1735  xypary0x1_[1][4] * sigi4 - err00) +
1736  adcotb_ * (xypary1x0_[1][0] + xypary1x0_[1][1] * sigi + xypary1x0_[1][2] * sigi2 + xypary1x0_[1][3] * sigi3 +
1737  xypary1x0_[1][4] * sigi4 - err00);
1738  }
1739  xysig2 = qscale * err2;
1740  if (xysig2 <= 0.f) {
1741  xysig2 = s50_ * s50_;
1742  }
1743 
1744  return;
1745 
1746 } // End xysigma2

References cms::cuda::assert(), BYM2, Exception, f, and T2HYP1.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ xytemp() [1/3]

bool SiPixelTemplate2D::xytemp ( float  xhit,
float  yhit,
bool  ydouble[21+2],
bool  xdouble[13+2],
float  template2d[13+2][21+2] 
)

Interpolate stored 2-D information for input angles and hit position to make a 2-D template

Parameters
xhit- (input) x-position of hit relative to the lower left corner of pixel[1][1] (to allow for the "padding" of the two-d clusters in the splitter)
yhit- (input) y-position of hit relative to the lower left corner of pixel[1][1]
ydouble- (input) STL vector of 21 element array to flag a double-pixel starting at cluster[1][1]
xdouble- (input) STL vector of 11 element array to flag a double-pixel starting at cluster[1][1]
template2d- (output) 2d template of size matched to the cluster. Input must be zeroed since charge is added only.

Definition at line 1614 of file SiPixelTemplate2D.cc.

1615  {
1616  // Interpolate for a new set of track angles
1617 
1618  bool derivatives = false;
1619  float dpdx2d[2][BXM2][BYM2];
1620  float QTemplate;
1621 
1622  return SiPixelTemplate2D::xytemp(xhit, yhit, ydouble, xdouble, template2d, derivatives, dpdx2d, QTemplate);
1623 
1624 } // xytemp

References BXM2, BYM2, and xytemp().

◆ xytemp() [2/3]

bool SiPixelTemplate2D::xytemp ( float  xhit,
float  yhit,
bool  ydouble[21+2],
bool  xdouble[13+2],
float  template2d[13+2][21+2],
bool  derivatives,
float  dpdx2d[2][13+2][21+2],
float &  QTemplate 
)

Load template info for single angle point to invoke template reco for template generation

Parameters
entry- (input) pointer to template entry
sizex- (input) pixel x-size
sizey- (input) pixel y-size
sizez- (input) pixel z-size
xhit- (input) x-position of hit relative to the lower left corner of pixel[1][1] (to allow for the "padding" of the two-d clusters in the splitter)
yhit- (input) y-position of hit relative to the lower left corner of pixel[1][1]
ydouble- (input) STL vector of 21 element array to flag a double-pixel starting at cluster[1][1]
xdouble- (input) STL vector of 11 element array to flag a double-pixel starting at cluster[1][1]
template2d- (output) 2d template of size matched to the cluster. Input must be zeroed since charge is added only.

Definition at line 982 of file SiPixelTemplate2D.cc.

989  {
990  // Interpolate for a new set of track angles
991 
992  // Local variables
993  int pixx, pixy, k0, k1, l0, l1, deltax, deltay, iflipy, jflipx, imin, imax, jmin, jmax;
994  int m, n;
995  float dx, dy, ddx, ddy, adx, ady;
996  // const float deltaxy[2] = {8.33f, 12.5f};
997  const float deltaxy[2] = {16.67f, 25.0f};
998 
999  // Check to see if interpolation is valid
1000 
1001  // next, determine the indices of the closest point in k (y-displacement), l (x-displacement)
1002  // pixy and pixx are the indices of the struck pixel in the (Ty,Tx) system
1003  // k0,k1 are the k-indices of the closest and next closest point
1004  // l0,l1 are the l-indices of the closest and next closest point
1005 
1006  pixy = (int)floorf(yhit / ysize_);
1007  dy = yhit - (pixy + 0.5f) * ysize_;
1008  if (flip_y_) {
1009  dy = -dy;
1010  }
1011  k0 = (int)(dy / ysize_ * 6.f + 3.5f);
1012  if (k0 < 0)
1013  k0 = 0;
1014  if (k0 > 6)
1015  k0 = 6;
1016  ddy = 6.f * dy / ysize_ - (k0 - 3);
1017  ady = fabs(ddy);
1018  if (ddy > 0.f) {
1019  k1 = k0 + 1;
1020  if (k1 > 6)
1021  k1 = k0 - 1;
1022  } else {
1023  k1 = k0 - 1;
1024  if (k1 < 0)
1025  k1 = k0 + 1;
1026  }
1027  pixx = (int)floorf(xhit / xsize_);
1028  dx = xhit - (pixx + 0.5f) * xsize_;
1029  if (flip_x_) {
1030  dx = -dx;
1031  }
1032  l0 = (int)(dx / xsize_ * 6.f + 3.5f);
1033  if (l0 < 0)
1034  l0 = 0;
1035  if (l0 > 6)
1036  l0 = 6;
1037  ddx = 6.f * dx / xsize_ - (l0 - 3);
1038  adx = fabs(ddx);
1039  if (ddx > 0.f) {
1040  l1 = l0 + 1;
1041  if (l1 > 6)
1042  l1 = l0 - 1;
1043  } else {
1044  l1 = l0 - 1;
1045  if (l1 < 0)
1046  l1 = l0 + 1;
1047  }
1048 
1049  // OK, lets do the template interpolation.
1050 
1051  // First find the limits of the indices for non-zero pixels
1052 
1053  imin = std::min(entry00_->iymin, entry10_->iymin);
1054  imin_ = std::min(imin, entry01_->iymin);
1055 
1056  jmin = std::min(entry00_->jxmin, entry10_->jxmin);
1057  jmin_ = std::min(jmin, entry01_->jxmin);
1058 
1059  imax = std::max(entry00_->iymax, entry10_->iymax);
1060  imax_ = std::max(imax, entry01_->iymax);
1061 
1062  jmax = std::max(entry00_->jxmax, entry10_->jxmax);
1063  jmax_ = std::max(jmax, entry01_->jxmax);
1064 
1065  // Calculate the x and y offsets to make the new template
1066 
1067  // First, shift the struck pixel coordinates to the (Ty+2, Tx+2) system
1068 
1069  ++pixy;
1070  ++pixx;
1071 
1072  // In the template store, the struck pixel is always (THy,THx)
1073 
1074  deltax = pixx - T2HX;
1075  deltay = pixy - T2HY;
1076 
1077  // First zero the local 2-d template
1078 
1079  for (int j = 0; j < BXM2; ++j) {
1080  for (int i = 0; i < BYM2; ++i) {
1081  xytemp_[j][i] = 0.f;
1082  }
1083  }
1084 
1085  // Loop over the non-zero part of the template index space and interpolate
1086 
1087  for (int j = jmin_; j <= jmax_; ++j) {
1088  // Flip indices as needed
1089  if (flip_x_) {
1090  jflipx = T2XSIZE - 1 - j;
1091  m = deltax + jflipx;
1092  } else {
1093  m = deltax + j;
1094  }
1095  for (int i = imin_; i <= imax_; ++i) {
1096  if (flip_y_) {
1097  iflipy = T2YSIZE - 1 - i;
1098  n = deltay + iflipy;
1099  } else {
1100  n = deltay + i;
1101  }
1102  if (m >= 0 && m <= BXM3 && n >= 0 && n <= BYM3) {
1103  xytemp_[m][n] = (float)entry00_->xytemp[k0][l0][i][j] +
1104  adx * (float)(entry00_->xytemp[k0][l1][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1105  ady * (float)(entry00_->xytemp[k1][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1106  adcota_ * (float)(entry01_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1107  adcotb_ * (float)(entry10_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]);
1108  }
1109  }
1110  }
1111 
1112  //combine rows and columns to simulate double pixels
1113 
1114  for (int n = 1; n < BYM3; ++n) {
1115  if (ydouble[n]) {
1116  // Combine the y-columns
1117  for (int m = 1; m < BXM3; ++m) {
1118  xytemp_[m][n] += xytemp_[m][n + 1];
1119  }
1120  // Now shift the remaining pixels over by one column
1121  for (int i = n + 1; i < BYM3; ++i) {
1122  for (int m = 1; m < BXM3; ++m) {
1123  xytemp_[m][i] = xytemp_[m][i + 1];
1124  }
1125  }
1126  }
1127  }
1128 
1129  //combine rows and columns to simulate double pixels
1130 
1131  for (int m = 1; m < BXM3; ++m) {
1132  if (xdouble[m]) {
1133  // Combine the x-rows
1134  for (int n = 1; n < BYM3; ++n) {
1135  xytemp_[m][n] += xytemp_[m + 1][n];
1136  }
1137  // Now shift the remaining pixels over by one row
1138  for (int j = m + 1; j < BXM3; ++j) {
1139  for (n = 1; n < BYM3; ++n) {
1140  xytemp_[j][n] = xytemp_[j + 1][n];
1141  }
1142  }
1143  }
1144  }
1145 
1146  // Finally, loop through and increment the external template
1147 
1148  float qtemptot = 0.f;
1149 
1150  for (int n = 1; n < BYM3; ++n) {
1151  for (int m = 1; m < BXM3; ++m) {
1152  if (xytemp_[m][n] != 0.f) {
1153  template2d[m][n] += xytemp_[m][n];
1154  qtemptot += xytemp_[m][n];
1155  }
1156  }
1157  }
1158 
1159  QTemplate = qtemptot;
1160 
1161  if (derivatives) {
1162  float dxytempdx[2][BXM2][BYM2], dxytempdy[2][BXM2][BYM2];
1163 
1164  for (int k = 0; k < 2; ++k) {
1165  for (int i = 0; i < BXM2; ++i) {
1166  for (int j = 0; j < BYM2; ++j) {
1167  dxytempdx[k][i][j] = 0.f;
1168  dxytempdy[k][i][j] = 0.f;
1169  dpdx2d[k][i][j] = 0.f;
1170  }
1171  }
1172  }
1173 
1174  // First do shifted +x template
1175 
1176  pixx = (int)floorf((xhit + deltaxy[0]) / xsize_);
1177  dx = (xhit + deltaxy[0]) - (pixx + 0.5f) * xsize_;
1178  if (flip_x_) {
1179  dx = -dx;
1180  }
1181  l0 = (int)(dx / xsize_ * 6.f + 3.5f);
1182  if (l0 < 0)
1183  l0 = 0;
1184  if (l0 > 6)
1185  l0 = 6;
1186  ddx = 6.f * dx / xsize_ - (l0 - 3);
1187  adx = fabs(ddx);
1188  if (ddx > 0.f) {
1189  l1 = l0 + 1;
1190  if (l1 > 6)
1191  l1 = l0 - 1;
1192  } else {
1193  l1 = l0 - 1;
1194  if (l1 < 0)
1195  l1 = l0 + 1;
1196  }
1197 
1198  // OK, lets do the template interpolation.
1199 
1200  // Calculate the x and y offsets to make the new template
1201 
1202  // First, shift the struck pixel coordinates to the (Ty+2, Tx+2) system
1203 
1204  ++pixx;
1205 
1206  // In the template store, the struck pixel is always (THy,THx)
1207 
1208  deltax = pixx - T2HX;
1209 
1210  // Loop over the non-zero part of the template index space and interpolate
1211 
1212  for (int j = jmin_; j <= jmax_; ++j) {
1213  // Flip indices as needed
1214  if (flip_x_) {
1215  jflipx = T2XSIZE - 1 - j;
1216  m = deltax + jflipx;
1217  } else {
1218  m = deltax + j;
1219  }
1220  for (int i = imin_; i <= imax_; ++i) {
1221  if (flip_y_) {
1222  iflipy = T2YSIZE - 1 - i;
1223  n = deltay + iflipy;
1224  } else {
1225  n = deltay + i;
1226  }
1227  if (m >= 0 && m <= BXM3 && n >= 0 && n <= BYM3) {
1228  dxytempdx[1][m][n] = (float)entry00_->xytemp[k0][l0][i][j] +
1229  adx * (float)(entry00_->xytemp[k0][l1][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1230  ady * (float)(entry00_->xytemp[k1][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1231  adcota_ * (float)(entry01_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1232  adcotb_ * (float)(entry10_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]);
1233  }
1234  }
1235  }
1236 
1237  //combine rows and columns to simulate double pixels
1238 
1239  for (int n = 1; n < BYM3; ++n) {
1240  if (ydouble[n]) {
1241  // Combine the y-columns
1242  for (int m = 1; m < BXM3; ++m) {
1243  dxytempdx[1][m][n] += dxytempdx[1][m][n + 1];
1244  }
1245  // Now shift the remaining pixels over by one column
1246  for (int i = n + 1; i < BYM3; ++i) {
1247  for (int m = 1; m < BXM3; ++m) {
1248  dxytempdx[1][m][i] = dxytempdx[1][m][i + 1];
1249  }
1250  }
1251  }
1252  }
1253 
1254  //combine rows and columns to simulate double pixels
1255 
1256  for (int m = 1; m < BXM3; ++m) {
1257  if (xdouble[m]) {
1258  // Combine the x-rows
1259  for (int n = 1; n < BYM3; ++n) {
1260  dxytempdx[1][m][n] += dxytempdx[1][m + 1][n];
1261  }
1262  // Now shift the remaining pixels over by one row
1263  for (int j = m + 1; j < BXM3; ++j) {
1264  for (int n = 1; n < BYM3; ++n) {
1265  dxytempdx[1][j][n] = dxytempdx[1][j + 1][n];
1266  }
1267  }
1268  }
1269  }
1270 
1271  // Next do shifted -x template
1272 
1273  pixx = (int)floorf((xhit - deltaxy[0]) / xsize_);
1274  dx = (xhit - deltaxy[0]) - (pixx + 0.5f) * xsize_;
1275  if (flip_x_) {
1276  dx = -dx;
1277  }
1278  l0 = (int)(dx / xsize_ * 6.f + 3.5f);
1279  if (l0 < 0)
1280  l0 = 0;
1281  if (l0 > 6)
1282  l0 = 6;
1283  ddx = 6.f * dx / xsize_ - (l0 - 3);
1284  adx = fabs(ddx);
1285  if (ddx > 0.f) {
1286  l1 = l0 + 1;
1287  if (l1 > 6)
1288  l1 = l0 - 1;
1289  } else {
1290  l1 = l0 - 1;
1291  if (l1 < 0)
1292  l1 = l0 + 1;
1293  }
1294 
1295  // OK, lets do the template interpolation.
1296 
1297  // Calculate the x and y offsets to make the new template
1298 
1299  // First, shift the struck pixel coordinates to the (Ty+2, Tx+2) system
1300 
1301  ++pixx;
1302 
1303  // In the template store, the struck pixel is always (THy,THx)
1304 
1305  deltax = pixx - T2HX;
1306 
1307  // Loop over the non-zero part of the template index space and interpolate
1308 
1309  for (int j = jmin_; j <= jmax_; ++j) {
1310  // Flip indices as needed
1311  if (flip_x_) {
1312  jflipx = T2XSIZE - 1 - j;
1313  m = deltax + jflipx;
1314  } else {
1315  m = deltax + j;
1316  }
1317  for (int i = imin_; i <= imax_; ++i) {
1318  if (flip_y_) {
1319  iflipy = T2YSIZE - 1 - i;
1320  n = deltay + iflipy;
1321  } else {
1322  n = deltay + i;
1323  }
1324  if (m >= 0 && m <= BXM3 && n >= 0 && n <= BYM3) {
1325  dxytempdx[0][m][n] = (float)entry00_->xytemp[k0][l0][i][j] +
1326  adx * (float)(entry00_->xytemp[k0][l1][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1327  ady * (float)(entry00_->xytemp[k1][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1328  adcota_ * (float)(entry01_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1329  adcotb_ * (float)(entry10_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]);
1330  }
1331  }
1332  }
1333 
1334  //combine rows and columns to simulate double pixels
1335 
1336  for (int n = 1; n < BYM3; ++n) {
1337  if (ydouble[n]) {
1338  // Combine the y-columns
1339  for (int m = 1; m < BXM3; ++m) {
1340  dxytempdx[0][m][n] += dxytempdx[0][m][n + 1];
1341  }
1342  // Now shift the remaining pixels over by one column
1343  for (int i = n + 1; i < BYM3; ++i) {
1344  for (int m = 1; m < BXM3; ++m) {
1345  dxytempdx[0][m][i] = dxytempdx[0][m][i + 1];
1346  }
1347  }
1348  }
1349  }
1350 
1351  //combine rows and columns to simulate double pixels
1352 
1353  for (int m = 1; m < BXM3; ++m) {
1354  if (xdouble[m]) {
1355  // Combine the x-rows
1356  for (int n = 1; n < BYM3; ++n) {
1357  dxytempdx[0][m][n] += dxytempdx[0][m + 1][n];
1358  }
1359  // Now shift the remaining pixels over by one row
1360  for (int j = m + 1; j < BXM3; ++j) {
1361  for (int n = 1; n < BYM3; ++n) {
1362  dxytempdx[0][j][n] = dxytempdx[0][j + 1][n];
1363  }
1364  }
1365  }
1366  }
1367 
1368  // Finally, normalize the derivatives and copy the results to the output array
1369 
1370  for (int n = 1; n < BYM3; ++n) {
1371  for (int m = 1; m < BXM3; ++m) {
1372  dpdx2d[0][m][n] = (dxytempdx[1][m][n] - dxytempdx[0][m][n]) / (2. * deltaxy[0]);
1373  }
1374  }
1375 
1376  // Next, do shifted y template
1377 
1378  pixy = (int)floorf((yhit + deltaxy[1]) / ysize_);
1379  dy = (yhit + deltaxy[1]) - (pixy + 0.5f) * ysize_;
1380  if (flip_y_) {
1381  dy = -dy;
1382  }
1383  k0 = (int)(dy / ysize_ * 6.f + 3.5f);
1384  if (k0 < 0)
1385  k0 = 0;
1386  if (k0 > 6)
1387  k0 = 6;
1388  ddy = 6.f * dy / ysize_ - (k0 - 3);
1389  ady = fabs(ddy);
1390  if (ddy > 0.f) {
1391  k1 = k0 + 1;
1392  if (k1 > 6)
1393  k1 = k0 - 1;
1394  } else {
1395  k1 = k0 - 1;
1396  if (k1 < 0)
1397  k1 = k0 + 1;
1398  }
1399  pixx = (int)floorf(xhit / xsize_);
1400  dx = xhit - (pixx + 0.5f) * xsize_;
1401  if (flip_x_) {
1402  dx = -dx;
1403  }
1404  l0 = (int)(dx / xsize_ * 6.f + 3.5f);
1405  if (l0 < 0)
1406  l0 = 0;
1407  if (l0 > 6)
1408  l0 = 6;
1409  ddx = 6.f * dx / xsize_ - (l0 - 3);
1410  adx = fabs(ddx);
1411  if (ddx > 0.f) {
1412  l1 = l0 + 1;
1413  if (l1 > 6)
1414  l1 = l0 - 1;
1415  } else {
1416  l1 = l0 - 1;
1417  if (l1 < 0)
1418  l1 = l0 + 1;
1419  }
1420 
1421  // OK, lets do the template interpolation.
1422 
1423  // Calculate the x and y offsets to make the new template
1424 
1425  // First, shift the struck pixel coordinates to the (Ty+2, Tx+2) system
1426 
1427  ++pixy;
1428  ++pixx;
1429 
1430  // In the template store, the struck pixel is always (THy,THx)
1431 
1432  deltax = pixx - T2HX;
1433  deltay = pixy - T2HY;
1434 
1435  // Loop over the non-zero part of the template index space and interpolate
1436 
1437  for (int j = jmin_; j <= jmax_; ++j) {
1438  // Flip indices as needed
1439  if (flip_x_) {
1440  jflipx = T2XSIZE - 1 - j;
1441  m = deltax + jflipx;
1442  } else {
1443  m = deltax + j;
1444  }
1445  for (int i = imin_; i <= imax_; ++i) {
1446  if (flip_y_) {
1447  iflipy = T2YSIZE - 1 - i;
1448  n = deltay + iflipy;
1449  } else {
1450  n = deltay + i;
1451  }
1452  if (m >= 0 && m <= BXM3 && n >= 0 && n <= BYM3) {
1453  dxytempdy[1][m][n] = (float)entry00_->xytemp[k0][l0][i][j] +
1454  adx * (float)(entry00_->xytemp[k0][l1][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1455  ady * (float)(entry00_->xytemp[k1][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1456  adcota_ * (float)(entry01_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1457  adcotb_ * (float)(entry10_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]);
1458  }
1459  }
1460  }
1461 
1462  //combine rows and columns to simulate double pixels
1463 
1464  for (int n = 1; n < BYM3; ++n) {
1465  if (ydouble[n]) {
1466  // Combine the y-columns
1467  for (int m = 1; m < BXM3; ++m) {
1468  dxytempdy[1][m][n] += dxytempdy[1][m][n + 1];
1469  }
1470  // Now shift the remaining pixels over by one column
1471  for (int i = n + 1; i < BYM3; ++i) {
1472  for (int m = 1; m < BXM3; ++m) {
1473  dxytempdy[1][m][i] = dxytempdy[1][m][i + 1];
1474  }
1475  }
1476  }
1477  }
1478 
1479  //combine rows and columns to simulate double pixels
1480 
1481  for (int m = 1; m < BXM3; ++m) {
1482  if (xdouble[m]) {
1483  // Combine the x-rows
1484  for (int n = 1; n < BYM3; ++n) {
1485  dxytempdy[1][m][n] += dxytempdy[1][m + 1][n];
1486  }
1487  // Now shift the remaining pixels over by one row
1488  for (int j = m + 1; j < BXM3; ++j) {
1489  for (int n = 1; n < BYM3; ++n) {
1490  dxytempdy[1][j][n] = dxytempdy[1][j + 1][n];
1491  }
1492  }
1493  }
1494  }
1495 
1496  // Next, do shifted -y template
1497 
1498  pixy = (int)floorf((yhit - deltaxy[1]) / ysize_);
1499  dy = (yhit - deltaxy[1]) - (pixy + 0.5f) * ysize_;
1500  if (flip_y_) {
1501  dy = -dy;
1502  }
1503  k0 = (int)(dy / ysize_ * 6.f + 3.5f);
1504  if (k0 < 0)
1505  k0 = 0;
1506  if (k0 > 6)
1507  k0 = 6;
1508  ddy = 6.f * dy / ysize_ - (k0 - 3);
1509  ady = fabs(ddy);
1510  if (ddy > 0.f) {
1511  k1 = k0 + 1;
1512  if (k1 > 6)
1513  k1 = k0 - 1;
1514  } else {
1515  k1 = k0 - 1;
1516  if (k1 < 0)
1517  k1 = k0 + 1;
1518  }
1519 
1520  // OK, lets do the template interpolation.
1521 
1522  // Calculate the x and y offsets to make the new template
1523 
1524  // First, shift the struck pixel coordinates to the (Ty+2, Tx+2) system
1525 
1526  ++pixy;
1527 
1528  // In the template store, the struck pixel is always (THy,THx)
1529 
1530  deltay = pixy - T2HY;
1531 
1532  // Loop over the non-zero part of the template index space and interpolate
1533 
1534  for (int j = jmin_; j <= jmax_; ++j) {
1535  // Flip indices as needed
1536  if (flip_x_) {
1537  jflipx = T2XSIZE - 1 - j;
1538  m = deltax + jflipx;
1539  } else {
1540  m = deltax + j;
1541  }
1542  for (int i = imin_; i <= imax_; ++i) {
1543  if (flip_y_) {
1544  iflipy = T2YSIZE - 1 - i;
1545  n = deltay + iflipy;
1546  } else {
1547  n = deltay + i;
1548  }
1549  if (m >= 0 && m <= BXM3 && n >= 0 && n <= BYM3) {
1550  dxytempdy[0][m][n] = (float)entry00_->xytemp[k0][l0][i][j] +
1551  adx * (float)(entry00_->xytemp[k0][l1][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1552  ady * (float)(entry00_->xytemp[k1][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1553  adcota_ * (float)(entry01_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]) +
1554  adcotb_ * (float)(entry10_->xytemp[k0][l0][i][j] - entry00_->xytemp[k0][l0][i][j]);
1555  }
1556  }
1557  }
1558 
1559  //combine rows and columns to simulate double pixels
1560 
1561  for (int n = 1; n < BYM3; ++n) {
1562  if (ydouble[n]) {
1563  // Combine the y-columns
1564  for (int m = 1; m < BXM3; ++m) {
1565  dxytempdy[0][m][n] += dxytempdy[0][m][n + 1];
1566  }
1567  // Now shift the remaining pixels over by one column
1568  for (int i = n + 1; i < BYM3; ++i) {
1569  for (int m = 1; m < BXM3; ++m) {
1570  dxytempdy[0][m][i] = dxytempdy[0][m][i + 1];
1571  }
1572  }
1573  }
1574  }
1575 
1576  //combine rows and columns to simulate double pixels
1577 
1578  for (int m = 1; m < BXM3; ++m) {
1579  if (xdouble[m]) {
1580  // Combine the x-rows
1581  for (int n = 1; n < BYM3; ++n) {
1582  dxytempdy[0][m][n] += dxytempdy[0][m + 1][n];
1583  }
1584  // Now shift the remaining pixels over by one row
1585  for (int j = m + 1; j < BXM3; ++j) {
1586  for (int n = 1; n < BYM3; ++n) {
1587  dxytempdy[0][j][n] = dxytempdy[0][j + 1][n];
1588  }
1589  }
1590  }
1591  }
1592 
1593  // Finally, normalize the derivatives and copy the results to the output array
1594 
1595  for (int n = 1; n < BYM3; ++n) {
1596  for (int m = 1; m < BXM3; ++m) {
1597  dpdx2d[1][m][n] = (dxytempdy[1][m][n] - dxytempdy[0][m][n]) / (2. * deltaxy[1]);
1598  }
1599  }
1600  }
1601 
1602  return success_;
1603 } // xytemp

References BXM2, BXM3, BYM2, BYM3, PVValHelper::dx, PVValHelper::dy, f, dqmMemoryStats::float, mps_fire::i, createfilelist::int, dqmiolumiharvest::j, dqmdumpme::k, reco::ParticleMasses::k0, visualization-live-secondInstance_cfg::m, SiStripPI::max, min(), dqmiodumpmetadata::n, T2HX, T2HY, T2XSIZE, and T2YSIZE.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D(), SiPixelChargeReweightingAlgorithm::PixelTempRewgt2D(), SiPixelTemplateSplit::PixelTempSplit(), and xytemp().

◆ xytemp() [3/3]

bool SiPixelTemplate2D::xytemp ( int  id,
float  cotalpha,
float  cotbeta,
float  xhit,
float  yhit,
std::vector< bool > &  ydouble,
std::vector< bool > &  xdouble,
float  template2d[13+2][21+2] 
)

Interpolate stored 2-D information for input angles and hit position to make a 2-D template

Parameters
id- (input) the id of the template
cotalpha- (input) the cotangent of the alpha track angle (see CMS IN 2004/014)
cotbeta- (input) the cotangent of the beta track angle (see CMS IN 2004/014)
xhit- (input) x-position of hit relative to the lower left corner of pixel[1][1] (to allow for the "padding" of the two-d clusters in the splitter)
yhit- (input) y-position of hit relative to the lower left corner of pixel[1][1]
ydouble- (input) STL vector of 21 element array to flag a double-pixel starting at cluster[1][1]
xdouble- (input) STL vector of 11 element array to flag a double-pixel starting at cluster[1][1]
template2d- (output) 2d template of size matched to the cluster. Input must be zeroed since charge is added only.

Definition at line 1638 of file SiPixelTemplate2D.cc.

1645  {
1646  // Local variables
1647 
1648  bool derivatives = false;
1649  float dpdx2d[2][BXM2][BYM2];
1650  float QTemplate;
1651  float locBx = 1.f;
1652  if (cotbeta < 0.f) {
1653  locBx = -1.f;
1654  }
1655  float locBz = locBx;
1656  if (cotalpha < 0.f) {
1657  locBz = -locBx;
1658  }
1659 
1660  bool yd[BYM2], xd[BXM2];
1661 
1662  yd[0] = false;
1663  yd[BYM2 - 1] = false;
1664  for (int i = 0; i < TYSIZE; ++i) {
1665  yd[i + 1] = ydouble[i];
1666  }
1667  xd[0] = false;
1668  xd[BXM2 - 1] = false;
1669  for (int j = 0; j < TXSIZE; ++j) {
1670  xd[j + 1] = xdouble[j];
1671  }
1672 
1673  // Interpolate for a new set of track angles
1674 
1675  if (SiPixelTemplate2D::interpolate(id, cotalpha, cotbeta, locBz, locBx)) {
1676  return SiPixelTemplate2D::xytemp(xhit, yhit, yd, xd, template2d, derivatives, dpdx2d, QTemplate);
1677  } else {
1678  return false;
1679  }
1680 
1681 } // xytemp

References BXM2, BYM2, f, mps_fire::i, interpolate(), dqmiolumiharvest::j, TXSIZE, TYSIZE, and xytemp().

◆ ysize()

float SiPixelTemplate2D::ysize ( )
inline

pixel y-size (microns)

Definition at line 263 of file SiPixelTemplate2D.h.

References ysize_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D(), and SiPixelChargeReweightingAlgorithm::PixelTempRewgt2D().

◆ zsize()

float SiPixelTemplate2D::zsize ( )
inline

pixel z-size or thickness (microns)

Definition at line 264 of file SiPixelTemplate2D.h.

References zsize_.

Member Data Documentation

◆ adcota_

float SiPixelTemplate2D::adcota_
private

fractional pixel distance of cot(alpha) from jx0_

Definition at line 303 of file SiPixelTemplate2D.h.

◆ adcotb_

float SiPixelTemplate2D::adcotb_
private

fractional pixel distance of cot(beta) from iy0_

Definition at line 300 of file SiPixelTemplate2D.h.

◆ chi2avgone_

float SiPixelTemplate2D::chi2avgone_
private

average chi^2 for 1 pixel clusters

Definition at line 326 of file SiPixelTemplate2D.h.

Referenced by chi2avgone().

◆ chi2minone_

float SiPixelTemplate2D::chi2minone_
private

minimum of chi^2 for 1 pixel clusters

Definition at line 327 of file SiPixelTemplate2D.h.

Referenced by chi2minone().

◆ chi2ppix_

float SiPixelTemplate2D::chi2ppix_
private

average chi^2 per struck pixel

Definition at line 324 of file SiPixelTemplate2D.h.

Referenced by chi2ppix().

◆ chi2scale_

float SiPixelTemplate2D::chi2scale_
private

scale factor for chi2 distribution

Definition at line 325 of file SiPixelTemplate2D.h.

Referenced by chi2scale().

◆ clslenx_

float SiPixelTemplate2D::clslenx_
private

projected x-length of cluster

Definition at line 329 of file SiPixelTemplate2D.h.

Referenced by clslenx(), and sizex().

◆ clsleny_

float SiPixelTemplate2D::clsleny_
private

projected y-length of cluster

Definition at line 328 of file SiPixelTemplate2D.h.

Referenced by clsleny(), and sizey().

◆ cota_current_

float SiPixelTemplate2D::cota_current_
private

current cot alpha

Definition at line 287 of file SiPixelTemplate2D.h.

Referenced by SiPixelTemplate2D().

◆ cotalpha0_

float SiPixelTemplate2D::cotalpha0_
private

minimum cot(alpha) covered

Definition at line 295 of file SiPixelTemplate2D.h.

◆ cotalpha1_

float SiPixelTemplate2D::cotalpha1_
private

maximum cot(alpha) covered

Definition at line 296 of file SiPixelTemplate2D.h.

◆ cotb_current_

float SiPixelTemplate2D::cotb_current_
private

current cot beta

Definition at line 288 of file SiPixelTemplate2D.h.

Referenced by SiPixelTemplate2D().

◆ cotbeta0_

float SiPixelTemplate2D::cotbeta0_
private

minimum cot(beta) covered

Definition at line 292 of file SiPixelTemplate2D.h.

◆ cotbeta1_

float SiPixelTemplate2D::cotbeta1_
private

maximum cot(beta) covered

Definition at line 293 of file SiPixelTemplate2D.h.

◆ deltacota_

float SiPixelTemplate2D::deltacota_
private

cot(alpha) bin size

Definition at line 297 of file SiPixelTemplate2D.h.

◆ deltacotb_

float SiPixelTemplate2D::deltacotb_
private

cot(beta) bin size

Definition at line 294 of file SiPixelTemplate2D.h.

◆ delyavg_

float SiPixelTemplate2D::delyavg_
private

average difference between clsleny_ and cluster length [with threshold effects]

Definition at line 332 of file SiPixelTemplate2D.h.

Referenced by delyavg().

◆ delysig_

float SiPixelTemplate2D::delysig_
private

rms of difference between clsleny_ and cluster length [with threshold effects]

Definition at line 333 of file SiPixelTemplate2D.h.

Referenced by delysig().

◆ Dtype_

int SiPixelTemplate2D::Dtype_
private

flags BPix (=0) or FPix (=1)

Definition at line 291 of file SiPixelTemplate2D.h.

◆ entry00_

const SiPixelTemplateEntry2D* SiPixelTemplate2D::entry00_
private

Definition at line 349 of file SiPixelTemplate2D.h.

◆ entry01_

const SiPixelTemplateEntry2D* SiPixelTemplate2D::entry01_
private

Definition at line 351 of file SiPixelTemplate2D.h.

◆ entry10_

const SiPixelTemplateEntry2D* SiPixelTemplate2D::entry10_
private

Definition at line 350 of file SiPixelTemplate2D.h.

◆ fbin_

float SiPixelTemplate2D::fbin_[3]
private

The QBin definitions in Q_clus/Q_avg.

Definition at line 348 of file SiPixelTemplate2D.h.

Referenced by fbin().

◆ flip_x_

bool SiPixelTemplate2D::flip_x_
private

flip x sign-sensitive quantities

Definition at line 309 of file SiPixelTemplate2D.h.

◆ flip_y_

bool SiPixelTemplate2D::flip_y_
private

flip y sign-sensitive quantities

Definition at line 308 of file SiPixelTemplate2D.h.

◆ id_current_

int SiPixelTemplate2D::id_current_
private

current id

Definition at line 285 of file SiPixelTemplate2D.h.

Referenced by SiPixelTemplate2D().

◆ imax_

int SiPixelTemplate2D::imax_
private

max y index of templated cluster

Definition at line 305 of file SiPixelTemplate2D.h.

◆ imin_

int SiPixelTemplate2D::imin_
private

min y index of templated cluster

Definition at line 304 of file SiPixelTemplate2D.h.

◆ index_id_

int SiPixelTemplate2D::index_id_
private

current index

Definition at line 286 of file SiPixelTemplate2D.h.

Referenced by SiPixelTemplate2D().

◆ iy0_

int SiPixelTemplate2D::iy0_
private

index of nearest cot(beta) bin

Definition at line 298 of file SiPixelTemplate2D.h.

◆ iy1_

int SiPixelTemplate2D::iy1_
private

index of next-nearest cot(beta) bin

Definition at line 299 of file SiPixelTemplate2D.h.

◆ jmax_

int SiPixelTemplate2D::jmax_
private

max x index of templated cluster

Definition at line 307 of file SiPixelTemplate2D.h.

◆ jmin_

int SiPixelTemplate2D::jmin_
private

min x index of templated cluster

Definition at line 306 of file SiPixelTemplate2D.h.

◆ jx0_

int SiPixelTemplate2D::jx0_
private

index of nearest cot(alpha) bin

Definition at line 301 of file SiPixelTemplate2D.h.

◆ jx1_

int SiPixelTemplate2D::jx1_
private

index of next-nearest cot(alpha) bin

Definition at line 302 of file SiPixelTemplate2D.h.

◆ kappavav_

float SiPixelTemplate2D::kappavav_
private

kappa parameter in Vavilov distribution

Definition at line 340 of file SiPixelTemplate2D.h.

Referenced by kappavav().

◆ lanpar_

float SiPixelTemplate2D::lanpar_[2][5]
private

Interpolated Landau parameters.

Definition at line 323 of file SiPixelTemplate2D.h.

◆ lorxdrift_

float SiPixelTemplate2D::lorxdrift_
private

Lorentz x-drift.

Definition at line 344 of file SiPixelTemplate2D.h.

Referenced by lorxdrift().

◆ lorxwidth_

float SiPixelTemplate2D::lorxwidth_
private

Lorentz x-width.

Definition at line 342 of file SiPixelTemplate2D.h.

◆ lorydrift_

float SiPixelTemplate2D::lorydrift_
private

Lorentz y-drift.

Definition at line 343 of file SiPixelTemplate2D.h.

Referenced by lorydrift().

◆ lorywidth_

float SiPixelTemplate2D::lorywidth_
private

Lorentz y-width (sign corrected for fpix frame)

Definition at line 341 of file SiPixelTemplate2D.h.

◆ mpvvav_

float SiPixelTemplate2D::mpvvav_
private

most probable Q in Vavilov distribution

Definition at line 338 of file SiPixelTemplate2D.h.

Referenced by mpvvav().

◆ Nxx_

int SiPixelTemplate2D::Nxx_
private

number of cot(alpha)-entries (rows) in template

Definition at line 290 of file SiPixelTemplate2D.h.

◆ Nyx_

int SiPixelTemplate2D::Nyx_
private

number of cot(beta)-entries (columns) in template

Definition at line 289 of file SiPixelTemplate2D.h.

◆ offsetx_

float SiPixelTemplate2D::offsetx_[4]
private

x-offset in charge bins

Definition at line 336 of file SiPixelTemplate2D.h.

Referenced by offsetx().

◆ offsety_

float SiPixelTemplate2D::offsety_[4]
private

y-offset in charge bins

Definition at line 337 of file SiPixelTemplate2D.h.

Referenced by offsety().

◆ pixmax_

float SiPixelTemplate2D::pixmax_
private

maximum pixel charge

Definition at line 315 of file SiPixelTemplate2D.h.

Referenced by pixmax().

◆ qavg_

float SiPixelTemplate2D::qavg_
private

average cluster charge for this set of track angles

Definition at line 314 of file SiPixelTemplate2D.h.

Referenced by qavg().

◆ qscale_

float SiPixelTemplate2D::qscale_
private

charge scaling factor

Definition at line 316 of file SiPixelTemplate2D.h.

Referenced by qscale().

◆ s50_

float SiPixelTemplate2D::s50_
private

1/2 of the pixel threshold signal in adc units

Definition at line 317 of file SiPixelTemplate2D.h.

Referenced by s50().

◆ scalex_

float SiPixelTemplate2D::scalex_[4]
private

x-error scale factor in charge bins

Definition at line 334 of file SiPixelTemplate2D.h.

Referenced by scalex().

◆ scalexavg_

float SiPixelTemplate2D::scalexavg_
private

average x-error scale factor

Definition at line 330 of file SiPixelTemplate2D.h.

Referenced by scalexavg().

◆ scaley_

float SiPixelTemplate2D::scaley_[4]
private

y-error scale factor in charge bins

Definition at line 335 of file SiPixelTemplate2D.h.

Referenced by scaley().

◆ scaleyavg_

float SiPixelTemplate2D::scaleyavg_
private

average y-error scale factor

Definition at line 331 of file SiPixelTemplate2D.h.

Referenced by scaleyavg().

◆ sigmavav_

float SiPixelTemplate2D::sigmavav_
private

scale factor in Vavilov distribution

Definition at line 339 of file SiPixelTemplate2D.h.

Referenced by sigmavav().

◆ success_

bool SiPixelTemplate2D::success_
private

true if cotalpha, cotbeta are inside of the acceptance (dynamically loaded)

Definition at line 310 of file SiPixelTemplate2D.h.

◆ sxymax_

float SiPixelTemplate2D::sxymax_
private

average pixel signal for y-projection of cluster

Definition at line 318 of file SiPixelTemplate2D.h.

Referenced by sxymax().

◆ thePixelTemp_

const std::vector<SiPixelTemplateStore2D>& SiPixelTemplate2D::thePixelTemp_
private

Definition at line 354 of file SiPixelTemplate2D.h.

Referenced by storesize().

◆ xsize_

float SiPixelTemplate2D::xsize_
private

Pixel x-size.

Definition at line 345 of file SiPixelTemplate2D.h.

Referenced by xsize().

◆ xypary0x0_

float SiPixelTemplate2D::xypary0x0_[2][5]
private

Polynomial error parameterization at ix0,iy0.

Definition at line 320 of file SiPixelTemplate2D.h.

◆ xypary0x1_

float SiPixelTemplate2D::xypary0x1_[2][5]
private

Polynomial error parameterization at ix1,iy0.

Definition at line 322 of file SiPixelTemplate2D.h.

◆ xypary1x0_

float SiPixelTemplate2D::xypary1x0_[2][5]
private

Polynomial error parameterization at ix0,iy1.

Definition at line 321 of file SiPixelTemplate2D.h.

◆ xytemp_

float SiPixelTemplate2D::xytemp_[ 13+2][ 21+2]
private

template for xy-reconstruction

Definition at line 319 of file SiPixelTemplate2D.h.

◆ ysize_

float SiPixelTemplate2D::ysize_
private

Pixel y-size.

Definition at line 346 of file SiPixelTemplate2D.h.

Referenced by ysize().

◆ zsize_

float SiPixelTemplate2D::zsize_
private

Pixel z-size (thickness)

Definition at line 347 of file SiPixelTemplate2D.h.

Referenced by zsize().

T2HY
#define T2HY
Definition: SiPixelTemplateDefs.h:40
SiPixelTemplate2D::id_current_
int id_current_
current id
Definition: SiPixelTemplate2D.h:285
SiPixelTemplate2D::chi2ppix_
float chi2ppix_
average chi^2 per struck pixel
Definition: SiPixelTemplate2D.h:324
BXM3
#define BXM3
Definition: SiPixelTemplateDefs.h:37
SiPixelTemplateEntry2D::xypar
float xypar[2][5]
pixel uncertainty parameterization
Definition: SiPixelTemplate2D.h:54
SiPixelTemplate2D::jx1_
int jx1_
index of next-nearest cot(alpha) bin
Definition: SiPixelTemplate2D.h:302
SiPixelTemplateHeader2D::fbin
float fbin[3]
The QBin definitions in Q_clus/Q_avg.
Definition: SiPixelTemplate2D.h:96
SiPixelTemplate2D::xytemp
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)
Definition: SiPixelTemplate2D.cc:982
mps_fire.i
i
Definition: mps_fire.py:428
SiPixelTemplateEntry2D::chi2avgone
float chi2avgone
average y chi^2 for 1 pixel clusters
Definition: SiPixelTemplate2D.h:59
SiPixel2DTemplateDBObject
Definition: SiPixel2DTemplateDBObject.h:16
SiPixelTemplateEntry2D::scaleyavg
float scaleyavg
average y-error scale factor
Definition: SiPixelTemplate2D.h:67
T2YSIZE
#define T2YSIZE
Definition: SiPixelTemplateDefs.h:38
SiPixelTemplate2D::deltacota_
float deltacota_
cot(alpha) bin size
Definition: SiPixelTemplate2D.h:297
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
SiPixelTemplate2D::qavg_
float qavg_
average cluster charge for this set of track angles
Definition: SiPixelTemplate2D.h:314
SiPixelTemplate2D::cotalpha1_
float cotalpha1_
maximum cot(alpha) covered
Definition: SiPixelTemplate2D.h:296
SiPixelTemplateStore2D::entry
std::vector< std::vector< SiPixelTemplateEntry2D > > entry
Definition: SiPixelTemplate2D.h:106
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
SiPixelTemplate2D::xsize_
float xsize_
Pixel x-size.
Definition: SiPixelTemplate2D.h:345
SiPixelTemplateHeader2D::Bfield
float Bfield
Bfield in Tesla.
Definition: SiPixelTemplate2D.h:95
SiPixelTemplate2D::Dtype_
int Dtype_
flags BPix (=0) or FPix (=1)
Definition: SiPixelTemplate2D.h:291
SiPixelTemplateEntry2D::kappavav
float kappavav
kappa parameter for Vavilov distribution
Definition: SiPixelTemplate2D.h:65
reco::ParticleMasses::k0
const double k0
Definition: ParticleMasses.h:7
SiPixelTemplate2D::flip_y_
bool flip_y_
flip y sign-sensitive quantities
Definition: SiPixelTemplate2D.h:308
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
SiPixelTemplateHeader2D::lorybias
float lorybias
estimate of y-lorentz bias
Definition: SiPixelTemplate2D.h:86
T2HX
#define T2HX
Definition: SiPixelTemplateDefs.h:42
SiPixelTemplateEntry2D::delyavg
float delyavg
average length difference between template and cluster
Definition: SiPixelTemplate2D.h:68
SiPixelTemplate2D::scaley_
float scaley_[4]
y-error scale factor in charge bins
Definition: SiPixelTemplate2D.h:335
min
T min(T a, T b)
Definition: MathUtil.h:58
SiPixelTemplateEntry2D::sxymax
float sxymax
average pixel signal for use of the error parameterization
Definition: SiPixelTemplate2D.h:49
SiPixelTemplate2D::fbin_
float fbin_[3]
The QBin definitions in Q_clus/Q_avg.
Definition: SiPixelTemplate2D.h:348
SiPixelTemplate2D::xytemp_
float xytemp_[13+2][21+2]
template for xy-reconstruction
Definition: SiPixelTemplate2D.h:319
SiPixel2DTemplateDBObject::char2float
Definition: SiPixel2DTemplateDBObject.h:70
gather_cfg.cout
cout
Definition: gather_cfg.py:144
SiPixelTemplate2D::jx0_
int jx0_
index of nearest cot(alpha) bin
Definition: SiPixelTemplate2D.h:301
SiPixelTemplate2D::deltacotb_
float deltacotb_
cot(beta) bin size
Definition: SiPixelTemplate2D.h:294
SiPixelTemplate2D::getid
bool getid(int id)
Definition: SiPixelTemplate2D.cc:535
SiPixelTemplate2D::xypary0x1_
float xypary0x1_[2][5]
Polynomial error parameterization at ix1,iy0.
Definition: SiPixelTemplate2D.h:322
SiPixelTemplate2D::delyavg_
float delyavg_
average difference between clsleny_ and cluster length [with threshold effects]
Definition: SiPixelTemplate2D.h:332
cms::cuda::assert
assert(be >=bs)
SiPixelTemplateHeader2D::qscale
float qscale
Charge scaling to match cmssw and pixelav.
Definition: SiPixelTemplate2D.h:83
SiPixelTemplate2D::clslenx_
float clslenx_
projected x-length of cluster
Definition: SiPixelTemplate2D.h:329
SiPixelTemplate2D::index_id_
int index_id_
current index
Definition: SiPixelTemplate2D.h:286
SiPixelTemplateEntry2D::clsleny
float clsleny
cluster y-length in pixels at signal height symax/2
Definition: SiPixelTemplate2D.h:61
SiPixelTemplateHeader2D::temperature
float temperature
detector temperature in deg K
Definition: SiPixelTemplate2D.h:89
SiPixelTemplateHeader2D::ID
int ID
< template header structure
Definition: SiPixelTemplate2D.h:78
SiPixelTemplate2D::scalexavg_
float scalexavg_
average x-error scale factor
Definition: SiPixelTemplate2D.h:330
SiPixelTemplate2D::chi2avgone_
float chi2avgone_
average chi^2 for 1 pixel clusters
Definition: SiPixelTemplate2D.h:326
SiPixelTemplateHeader2D::s50
float s50
1/2 of the multihit dcol threshold in electrons
Definition: SiPixelTemplate2D.h:91
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
SiPixelTemplateHeader2D::templ_version
int templ_version
Version number of the template to ensure code compatibility.
Definition: SiPixelTemplate2D.h:94
SiPixelTemplate2D::sxymax_
float sxymax_
average pixel signal for y-projection of cluster
Definition: SiPixelTemplate2D.h:318
SiPixelTemplate2D::entry01_
const SiPixelTemplateEntry2D * entry01_
Definition: SiPixelTemplate2D.h:351
SiPixelTemplate2D::Nxx_
int Nxx_
number of cot(alpha)-entries (rows) in template
Definition: SiPixelTemplate2D.h:290
TXSIZE
#define TXSIZE
Definition: SiPixelTemplateDefs.h:30
SiPixelTemplateStore2D::head
SiPixelTemplateHeader2D head
< template storage structure
Definition: SiPixelTemplate2D.h:103
dqmiodatasetharvest.db
db
Definition: dqmiodatasetharvest.py:119
edm::FileInPath
Definition: FileInPath.h:64
SiPixelTemplateEntry2D::scalex
float scalex[4]
x-error scale factor in 4 charge bins
Definition: SiPixelTemplate2D.h:70
SiPixelTemplateHeader2D::lorxbias
float lorxbias
estimate of x-lorentz bias
Definition: SiPixelTemplate2D.h:87
SiPixelTemplateEntry2D::mpvvav
float mpvvav
most probable charge in Vavilov distribution (not actually for larger kappa)
Definition: SiPixelTemplate2D.h:63
SiPixelTemplateHeader2D::ysize
float ysize
pixel size (for future use in upgraded geometry)
Definition: SiPixelTemplate2D.h:98
SiPixelTemplate2D::chi2scale_
float chi2scale_
scale factor for chi2 distribution
Definition: SiPixelTemplate2D.h:325
SiPixelTemplateHeader2D::lorxwidth
float lorxwidth
estimate of x-lorentz width for optimal resolution
Definition: SiPixelTemplate2D.h:85
SiPixelTemplate2D::imin_
int imin_
min y index of templated cluster
Definition: SiPixelTemplate2D.h:304
SiPixelTemplateEntry2D::chi2minone
float chi2minone
minimum of y chi^2 for 1 pixel clusters
Definition: SiPixelTemplate2D.h:60
SiPixelTemplate2D::lorydrift_
float lorydrift_
Lorentz y-drift.
Definition: SiPixelTemplate2D.h:343
BYM2
#define BYM2
Definition: SiPixelTemplateDefs.h:28
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
SiPixelTemplateHeader2D::ss50
float ss50
1/2 of the single hit dcol threshold in electrons
Definition: SiPixelTemplate2D.h:92
BXM2
#define BXM2
Definition: SiPixelTemplateDefs.h:36
SiPixelTemplate2D::offsetx_
float offsetx_[4]
x-offset in charge bins
Definition: SiPixelTemplate2D.h:336
SiPixelTemplateHeader2D::zsize
float zsize
pixel size (for future use in upgraded geometry)
Definition: SiPixelTemplate2D.h:99
SiPixelTemplate2D::entry00_
const SiPixelTemplateEntry2D * entry00_
Definition: SiPixelTemplate2D.h:349
SiPixelTemplateEntry2D::delysig
float delysig
rms of length difference between template and cluster
Definition: SiPixelTemplate2D.h:69
SiPixelTemplate2D::s50_
float s50_
1/2 of the pixel threshold signal in adc units
Definition: SiPixelTemplate2D.h:317
SiPixelTemplateEntry2D::iymax
int iymax
the maximum nonzero pixel yindex in template (saves time during interpolation)
Definition: SiPixelTemplate2D.h:51
SiPixelTemplate2D::adcota_
float adcota_
fractional pixel distance of cot(alpha) from jx0_
Definition: SiPixelTemplate2D.h:303
dqmdumpme.k
k
Definition: dqmdumpme.py:60
SiPixelTemplate2D::sigmavav_
float sigmavav_
scale factor in Vavilov distribution
Definition: SiPixelTemplate2D.h:339
SiPixelTemplateHeader2D::title
char title[80]
template title
Definition: SiPixelTemplate2D.h:93
SiPixelTemplate2D::chi2minone_
float chi2minone_
minimum of chi^2 for 1 pixel clusters
Definition: SiPixelTemplate2D.h:327
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SiPixelTemplateHeader2D::lorywidth
float lorywidth
estimate of y-lorentz width for optimal resolution
Definition: SiPixelTemplate2D.h:84
runGCPTkAlMap.in_file
in_file
Definition: runGCPTkAlMap.py:74
BYM3
#define BYM3
Definition: SiPixelTemplateDefs.h:29
SiPixelTemplate2D::thePixelTemp_
const std::vector< SiPixelTemplateStore2D > & thePixelTemp_
Definition: SiPixelTemplate2D.h:354
SiPixelTemplateStore2D
Definition: SiPixelTemplate2D.h:102
SiPixelTemplate2D::interpolate
bool interpolate(int id, float cotalpha, float cotbeta, float locBz, float locBx)
Definition: SiPixelTemplate2D.cc:625
SiPixelTemplate2D::cotbeta0_
float cotbeta0_
minimum cot(beta) covered
Definition: SiPixelTemplate2D.h:292
SiPixelTemplate2D::entry10_
const SiPixelTemplateEntry2D * entry10_
Definition: SiPixelTemplate2D.h:350
SiPixelTemplate2D::imax_
int imax_
max y index of templated cluster
Definition: SiPixelTemplate2D.h:305
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
T2XSIZE
#define T2XSIZE
Definition: SiPixelTemplateDefs.h:39
SiPixelTemplateEntry2D::xytemp
short int xytemp[7][7][21][7]
templates for y-reconstruction (binned over 1 central pixel)
Definition: SiPixelTemplate2D.h:56
SiPixelTemplate2D::lorxdrift_
float lorxdrift_
Lorentz x-drift.
Definition: SiPixelTemplate2D.h:344
SiPixelTemplateEntry2D::iymin
int iymin
the minimum nonzero pixel yindex in template (saves time during interpolation)
Definition: SiPixelTemplate2D.h:50
SiPixelTemplate2D::flip_x_
bool flip_x_
flip x sign-sensitive quantities
Definition: SiPixelTemplate2D.h:309
SiPixelTemplateEntry2D::jxmin
int jxmin
the minimum nonzero pixel xindex in template (saves time during interpolation)
Definition: SiPixelTemplate2D.h:52
SiPixelTemplate2D::cotalpha0_
float cotalpha0_
minimum cot(alpha) covered
Definition: SiPixelTemplate2D.h:295
createfilelist.int
int
Definition: createfilelist.py:10
TYSIZE
#define TYSIZE
Definition: SiPixelTemplateDefs.h:21
FrontierConditions_GlobalTag_cff.file
file
Definition: FrontierConditions_GlobalTag_cff.py:13
SiPixelTemplateHeader2D::NTyx
int NTyx
number of Template y-slices of x entries
Definition: SiPixelTemplate2D.h:80
SiPixelTemplateEntry2D::jxmax
int jxmax
the maximum nonzero pixel xindex in template (saves time during interpolation)
Definition: SiPixelTemplate2D.h:53
SiPixelTemplateEntry2D::lanpar
float lanpar[2][5]
pixel landau distribution parameters
Definition: SiPixelTemplate2D.h:55
SiPixelTemplateEntry2D::sigmavav
float sigmavav
"sigma" scale fctor for Vavilov distribution
Definition: SiPixelTemplate2D.h:64
PVValHelper::dy
Definition: PVValidationHelpers.h:50
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
SiPixelTemplate2D::offsety_
float offsety_[4]
y-offset in charge bins
Definition: SiPixelTemplate2D.h:337
SiPixelTemplateEntry2D::offsetx
float offsetx[4]
x-offset in 4 charge bins
Definition: SiPixelTemplate2D.h:72
SiPixelTemplate2D::pixmax_
float pixmax_
maximum pixel charge
Definition: SiPixelTemplate2D.h:315
SiPixelTemplate2D::clsleny_
float clsleny_
projected y-length of cluster
Definition: SiPixelTemplate2D.h:328
SiPixelTemplate2D::iy1_
int iy1_
index of next-nearest cot(beta) bin
Definition: SiPixelTemplate2D.h:299
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:204
SiPixelTemplate2D::zsize_
float zsize_
Pixel z-size (thickness)
Definition: SiPixelTemplate2D.h:347
SiPixelTemplate2D::Nyx_
int Nyx_
number of cot(beta)-entries (columns) in template
Definition: SiPixelTemplate2D.h:289
SiPixelTemplateEntry2D::offsety
float offsety[4]
y-offset in 4 charge bins
Definition: SiPixelTemplate2D.h:73
SiPixelTemplate2D::lanpar_
float lanpar_[2][5]
Interpolated Landau parameters.
Definition: SiPixelTemplate2D.h:323
SiPixelTemplateHeader2D::NTxx
int NTxx
number of Template x-entries in each slice
Definition: SiPixelTemplate2D.h:81
SiPixelTemplateEntry2D::chi2scale
float chi2scale
scale factor for the chi2 distribution
Definition: SiPixelTemplate2D.h:58
SiPixelTemplate2D::xypary1x0_
float xypary1x0_[2][5]
Polynomial error parameterization at ix0,iy1.
Definition: SiPixelTemplate2D.h:321
SiPixelTemplate2D::cota_current_
float cota_current_
current cot alpha
Definition: SiPixelTemplate2D.h:287
SiPixelTemplate2D::lorxwidth_
float lorxwidth_
Lorentz x-width.
Definition: SiPixelTemplate2D.h:342
SiPixelTemplateHeader2D::Dtype
int Dtype
detector type (0=BPix, 1=FPix)
Definition: SiPixelTemplate2D.h:82
SiPixelTemplate2D::scaleyavg_
float scaleyavg_
average y-error scale factor
Definition: SiPixelTemplate2D.h:331
ENDL
#define ENDL
Definition: SiPixelTemplate2D.cc:45
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
SiPixelTemplate2D::cotbeta1_
float cotbeta1_
maximum cot(beta) covered
Definition: SiPixelTemplate2D.h:293
SiPixelTemplate2D::jmax_
int jmax_
max x index of templated cluster
Definition: SiPixelTemplate2D.h:307
Exception
Definition: hltDiff.cc:245
SiPixelTemplate2D::mpvvav_
float mpvvav_
most probable Q in Vavilov distribution
Definition: SiPixelTemplate2D.h:338
SiPixelTemplate2D::qscale
float qscale()
charge scaling factor
Definition: SiPixelTemplate2D.h:205
SiPixelTemplateEntry2D::clslenx
float clslenx
cluster x-length in pixels at signal height sxmax/2
Definition: SiPixelTemplate2D.h:62
SiPixelTemplateEntry2D::pixmax
float pixmax
maximum charge for individual pixels in cluster
Definition: SiPixelTemplate2D.h:48
LOGINFO
#define LOGINFO(x)
Definition: SiPixelTemplate2D.cc:44
SiPixelTemplate2D::lorywidth_
float lorywidth_
Lorentz y-width (sign corrected for fpix frame)
Definition: SiPixelTemplate2D.h:341
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
SiPixelTemplate2D::success_
bool success_
true if cotalpha, cotbeta are inside of the acceptance (dynamically loaded)
Definition: SiPixelTemplate2D.h:310
SiPixelTemplate2D::iy0_
int iy0_
index of nearest cot(beta) bin
Definition: SiPixelTemplate2D.h:298
SiPixelTemplate2D::ysize_
float ysize_
Pixel y-size.
Definition: SiPixelTemplate2D.h:346
SiPixelTemplate2D::xypary0x0_
float xypary0x0_[2][5]
Polynomial error parameterization at ix0,iy0.
Definition: SiPixelTemplate2D.h:320
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
SiPixelTemplate2D::cotb_current_
float cotb_current_
current cot beta
Definition: SiPixelTemplate2D.h:288
SiPixelTemplateHeader2D::NTy
int NTy
number of Template y entries
Definition: SiPixelTemplate2D.h:79
dummy
Definition: DummySelector.h:38
SiPixelTemplateEntry2D::scalexavg
float scalexavg
average x-error scale factor
Definition: SiPixelTemplate2D.h:66
SiPixelTemplateHeader2D::Vbias
float Vbias
detector bias potential in Volts
Definition: SiPixelTemplate2D.h:88
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:46
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
SiPixelTemplate2D::jmin_
int jmin_
min x index of templated cluster
Definition: SiPixelTemplate2D.h:306
SiPixelTemplateEntry2D::scaley
float scaley[4]
y-error scale factor in 4 charge bins
Definition: SiPixelTemplate2D.h:71
SiPixelTemplate2D::delysig_
float delysig_
rms of difference between clsleny_ and cluster length [with threshold effects]
Definition: SiPixelTemplate2D.h:333
LOGERROR
#define LOGERROR(x)
Definition: SiPixelTemplate2D.cc:43
SiPixelTemplate2D::scalex_
float scalex_[4]
x-error scale factor in charge bins
Definition: SiPixelTemplate2D.h:334
SiPixelTemplateHeader2D::xsize
float xsize
pixel size (for future use in upgraded geometry)
Definition: SiPixelTemplate2D.h:97
PVValHelper::dx
Definition: PVValidationHelpers.h:49
SiPixelTemplateEntry2D::qavg
float qavg
average cluster charge for this set of track angles
Definition: SiPixelTemplate2D.h:47
SiPixelTemplateHeader2D::fluence
float fluence
radiation fluence in n_eq/cm^2
Definition: SiPixelTemplate2D.h:90
SiPixelTemplate2D::qscale_
float qscale_
charge scaling factor
Definition: SiPixelTemplate2D.h:316
SiPixelTemplate2D::adcotb_
float adcotb_
fractional pixel distance of cot(beta) from iy0_
Definition: SiPixelTemplate2D.h:300
SiPixelTemplate2D::kappavav_
float kappavav_
kappa parameter in Vavilov distribution
Definition: SiPixelTemplate2D.h:340
SiPixelTemplateEntry2D::chi2ppix
float chi2ppix
average chi^2 per pixel
Definition: SiPixelTemplate2D.h:57
DeadROC_duringRun.dir
dir
Definition: DeadROC_duringRun.py:23
T2HYP1
#define T2HYP1
Definition: SiPixelTemplateDefs.h:41