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 132 of file SiPixelTemplate2D.h.

Constructor & Destructor Documentation

◆ SiPixelTemplate2D()

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

Default constructor.

Definition at line 134 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 274 of file SiPixelTemplate2D.h.

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

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 251 of file SiPixelTemplate2D.h.

References chi2avgone_.

◆ chi2minone()

float SiPixelTemplate2D::chi2minone ( )
inline

minimum of y chi^2 for 1 pixel clusters

Definition at line 252 of file SiPixelTemplate2D.h.

References chi2minone_.

◆ chi2ppix()

float SiPixelTemplate2D::chi2ppix ( )
inline

average chi^2 per struck pixel

Definition at line 249 of file SiPixelTemplate2D.h.

References chi2ppix_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ chi2scale()

float SiPixelTemplate2D::chi2scale ( )
inline

scale factor for chi^2 distribution

Definition at line 250 of file SiPixelTemplate2D.h.

References chi2scale_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ clslenx()

float SiPixelTemplate2D::clslenx ( )
inline

cluster x-size

Definition at line 259 of file SiPixelTemplate2D.h.

References clslenx_.

◆ clsleny()

float SiPixelTemplate2D::clsleny ( )
inline

cluster y-size

Definition at line 258 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 262 of file SiPixelTemplate2D.h.

References delyavg_.

◆ delysig()

float SiPixelTemplate2D::delysig ( )
inline

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

Definition at line 265 of file SiPixelTemplate2D.h.

References delysig_.

◆ fbin()

float SiPixelTemplate2D::fbin ( int  i)
inline

Return lower bound of Qbin definition.

Definition at line 240 of file SiPixelTemplate2D.h.

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

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ getid()

bool SiPixelTemplate2D::getid ( int  id)

Definition at line 569 of file SiPixelTemplate2D.cc.

569  {
570  if (id != id_current_) {
571  // Find the index corresponding to id
572 
573  index_id_ = -1;
574  for (int i = 0; i < (int)thePixelTemp_.size(); ++i) {
575  if (id == thePixelTemp_[i].head.ID) {
576  index_id_ = i;
577  id_current_ = id;
578 
579  // Copy the detector type to the private variable
580 
581  Dtype_ = thePixelTemp_[index_id_].head.Dtype;
582 
583  // Copy the charge scaling factor to the private variable
584 
585  qscale_ = thePixelTemp_[index_id_].head.qscale;
586 
587  // Copy the pseudopixel signal size to the private variable
588 
589  s50_ = thePixelTemp_[index_id_].head.s50;
590 
591  // Copy Qbinning info to private variables
592 
593  for (int j = 0; j < 3; ++j) {
594  fbin_[j] = thePixelTemp_[index_id_].head.fbin[j];
595  }
596 
597  // Copy the Lorentz widths to private variables
598 
599  lorywidth_ = thePixelTemp_[index_id_].head.lorywidth;
600  lorxwidth_ = thePixelTemp_[index_id_].head.lorxwidth;
601 
602  // Copy the pixel sizes private variables
603 
604  xsize_ = thePixelTemp_[index_id_].head.xsize;
605  ysize_ = thePixelTemp_[index_id_].head.ysize;
606  zsize_ = thePixelTemp_[index_id_].head.zsize;
607 
608  // Determine the size of this template
609 
610  Nyx_ = thePixelTemp_[index_id_].head.NTyx;
611  Nxx_ = thePixelTemp_[index_id_].head.NTxx;
612 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
613  if (Nyx_ < 2 || Nxx_ < 2) {
614  throw cms::Exception("DataCorrupt") << "template ID = " << id_current_
615  << "has too few entries: Nyx/Nxx = " << Nyx_ << "/" << Nxx_ << std::endl;
616  }
617 #else
618  assert(Nyx_ > 1 && Nxx_ > 1);
619 #endif
620  int imidx = Nxx_ / 2;
621 
622  cotalpha0_ = thePixelTemp_[index_id_].entry[0][0].cotalpha;
623  cotalpha1_ = thePixelTemp_[index_id_].entry[0][Nxx_ - 1].cotalpha;
624  deltacota_ = (cotalpha1_ - cotalpha0_) / (float)(Nxx_ - 1);
625 
626  cotbeta0_ = thePixelTemp_[index_id_].entry[0][imidx].cotbeta;
627  cotbeta1_ = thePixelTemp_[index_id_].entry[Nyx_ - 1][imidx].cotbeta;
628  deltacotb_ = (cotbeta1_ - cotbeta0_) / (float)(Nyx_ - 1);
629 
630  break;
631  }
632  }
633  }
634 
635 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
636  if (index_id_ < 0 || index_id_ >= (int)thePixelTemp_.size()) {
637  throw cms::Exception("DataCorrupt") << "SiPixelTemplate2D::interpolate can't find needed template ID = " << id
638  << ", Are you using the correct global tag?" << std::endl;
639  }
640 #else
641  assert(index_id_ >= 0 && index_id_ < (int)thePixelTemp_.size());
642 #endif
643  return true;
644 }

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 659 of file SiPixelTemplate2D.cc.

659  {
660  // Interpolate for a new set of track angles
661 
662  // Local variables
663 
664  float acotb, dcota, dcotb;
665 
666  // Check to see if interpolation is valid
667 
668  if (id != id_current_ || cotalpha != cota_current_ || cotbeta != cotb_current_) {
669  cota_current_ = cotalpha;
670  cotb_current_ = cotbeta;
671  // Try to find the correct template. Fill the class variable index_id_ .
672  success_ = getid(id);
673  }
674 
675 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
676  if (index_id_ < 0 || index_id_ >= (int)thePixelTemp_.size()) {
677  throw cms::Exception("DataCorrupt") << "SiPixelTemplate2D::interpolate can't find needed template ID = " << id
678  << ", Are you using the correct global tag?" << std::endl;
679  }
680 #else
681  assert(index_id_ >= 0 && index_id_ < (int)thePixelTemp_.size());
682 #endif
683 
684  // Check angle limits and et up interpolation parameters
685 
686  float cota = cotalpha;
687  flip_x_ = false;
688  flip_y_ = false;
689  switch (Dtype_) {
690  case 0:
691  if (cotbeta < 0.f) {
692  flip_y_ = true;
693  }
694  break;
695  case 1:
696  if (locBz > 0.f) {
697  flip_y_ = true;
698  }
699  break;
700  case 2:
701  case 3:
702  case 4:
703  case 5:
704  if (locBx * locBz < 0.f) {
705  cota = std::abs(cotalpha);
706  flip_x_ = true;
707  }
708  if (locBx < 0.f) {
709  flip_y_ = true;
710  }
711  break;
712  default:
713 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
714  throw cms::Exception("DataCorrupt")
715  << "SiPixelTemplate2D::illegal subdetector ID = " << thePixelTemp_[index_id_].head.Dtype << std::endl;
716 #else
717  std::cout << "SiPixelTemplate:2D:illegal subdetector ID = " << thePixelTemp_[index_id_].head.Dtype << std::endl;
718 #endif
719  }
720 
721  if (cota < cotalpha0_) {
722  success_ = false;
723  jx0_ = 0;
724  jx1_ = 1;
725  adcota_ = 0.f;
726  } else if (cota > cotalpha1_) {
727  success_ = false;
728  jx0_ = Nxx_ - 1;
729  jx1_ = jx0_ - 1;
730  adcota_ = 0.f;
731  } else {
732  jx0_ = (int)((cota - cotalpha0_) / deltacota_ + 0.5f);
733  dcota = (cota - (cotalpha0_ + jx0_ * deltacota_)) / deltacota_;
734  adcota_ = fabs(dcota);
735  if (dcota > 0.f) {
736  jx1_ = jx0_ + 1;
737  if (jx1_ > Nxx_ - 1)
738  jx1_ = jx0_ - 1;
739  } else {
740  jx1_ = jx0_ - 1;
741  if (jx1_ < 0)
742  jx1_ = jx0_ + 1;
743  }
744  }
745 
746  // Interpolate the absolute value of cot(beta)
747 
748  acotb = std::abs(cotbeta);
749 
750  if (acotb < cotbeta0_) {
751  success_ = false;
752  iy0_ = 0;
753  iy1_ = 1;
754  adcotb_ = 0.f;
755  } else if (acotb > cotbeta1_) {
756  success_ = false;
757  iy0_ = Nyx_ - 1;
758  iy1_ = iy0_ - 1;
759  adcotb_ = 0.f;
760  } else {
761  iy0_ = (int)((acotb - cotbeta0_) / deltacotb_ + 0.5f);
762  dcotb = (acotb - (cotbeta0_ + iy0_ * deltacotb_)) / deltacotb_;
763  adcotb_ = fabs(dcotb);
764  if (dcotb > 0.f) {
765  iy1_ = iy0_ + 1;
766  if (iy1_ > Nyx_ - 1)
767  iy1_ = iy0_ - 1;
768  } else {
769  iy1_ = iy0_ - 1;
770  if (iy1_ < 0)
771  iy1_ = iy0_ + 1;
772  }
773  }
774 
775  // Calculate signed quantities
776 
777  lorydrift_ = lorywidth_ / 2.;
778  if (flip_y_)
780  lorxdrift_ = lorxwidth_ / 2.;
781  if (flip_x_)
783 
784  // Use pointers to the three angle pairs used in the interpolation
785 
789 
790  // Interpolate things in cot(alpha)-cot(beta)
791 
793 
796 
799 
802 
805 
808 
811 
814 
817 
820 
823 
826 
829 
832 
835 
838 
839  for (int i = 0; i < 4; ++i) {
842 
845 
848  if (flip_x_)
849  offsetx_[i] = -offsetx_[i];
850 
853  if (flip_y_)
854  offsety_[i] = -offsety_[i];
855  }
856 
857  for (int i = 0; i < 2; ++i) {
858  for (int j = 0; j < 5; ++j) {
859  // Charge loss switches sides when cot(beta) changes sign
860  if (flip_y_) {
861  xypary0x0_[1 - i][j] = (float)entry00_->xypar[i][j];
862  xypary1x0_[1 - i][j] = (float)entry10_->xypar[i][j];
863  xypary0x1_[1 - i][j] = (float)entry01_->xypar[i][j];
864  lanpar_[1 - i][j] = entry00_->lanpar[i][j] + adcota_ * (entry01_->lanpar[i][j] - entry00_->lanpar[i][j]) +
865  adcotb_ * (entry10_->lanpar[i][j] - entry00_->lanpar[i][j]);
866  } else {
867  xypary0x0_[i][j] = (float)entry00_->xypar[i][j];
868  xypary1x0_[i][j] = (float)entry10_->xypar[i][j];
869  xypary0x1_[i][j] = (float)entry01_->xypar[i][j];
870  lanpar_[i][j] = entry00_->lanpar[i][j] + adcota_ * (entry01_->lanpar[i][j] - entry00_->lanpar[i][j]) +
871  adcotb_ * (entry10_->lanpar[i][j] - entry00_->lanpar[i][j]);
872  }
873  }
874  }
875 
876  return success_;
877 } // 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 255 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 1785 of file SiPixelTemplate2D.cc.

1787 {
1788  // Interpolate using quantities already stored in the private variables
1789 
1790  for (int i = 0; i < 2; ++i) {
1791  for (int j = 0; j < 5; ++j) {
1792  lanpar[i][j] = lanpar_[i][j];
1793  }
1794  }
1795  return;
1796 
1797 } // 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 257 of file SiPixelTemplate2D.h.

References lorxdrift_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ lorydrift()

float SiPixelTemplate2D::lorydrift ( )
inline

signed lorentz y-width (microns)

Definition at line 256 of file SiPixelTemplate2D.h.

References lorydrift_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ mpvvav()

float SiPixelTemplate2D::mpvvav ( )
inline

most probable Q in Vavilov distribution

Definition at line 253 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 226 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 233 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 208 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 329 of file SiPixelTemplate2D.cc.

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

References SiPixelTemplateHeader2D::Bfield, SiPixelTemplateEntry2D::chi2ppix, SiPixelTemplateEntry2D::chi2scale, SiPixelTemplateEntry2D::clslenx, SiPixelTemplateEntry2D::clsleny, SiPixelTemplateEntry2D::costrk, SiPixelTemplateEntry2D::cotalpha, SiPixelTemplateEntry2D::cotbeta, dqmiodatasetharvest::db, SiPixelTemplateEntry2D::delyavg, SiPixelTemplateEntry2D::delysig, SiPixelTemplateHeader2D::Dtype, ENDL, SiPixelTemplateStore2D::entry, SiPixelTemplateHeader2D::fbin, SiPixelTemplateHeader2D::fluence, cms::cuda::for(), SiPixelTemplateStore2D::head, mps_fire::i, SiPixelTemplateHeader2D::ID, createfilelist::int, SiPixelTemplateEntry2D::iymax, SiPixelTemplateEntry2D::iymin, dqmiolumiharvest::j, SiPixelTemplateEntry2D::jxmax, SiPixelTemplateEntry2D::jxmin, dqmdumpme::k, SiPixelTemplateEntry2D::kappavav, cmsLHEtoEOSManager::l, SiPixelTemplateEntry2D::lanpar, LOGERROR, LOGINFO, SiPixelTemplateHeader2D::lorxbias, SiPixelTemplateHeader2D::lorxwidth, SiPixelTemplateHeader2D::lorybias, SiPixelTemplateHeader2D::lorywidth, visualization-live-secondInstance_cfg::m, SiPixelTemplateEntry2D::mpvvav, SiPixelTemplateHeader2D::NTxx, SiPixelTemplateHeader2D::NTy, SiPixelTemplateHeader2D::NTyx, SiPixelTemplateEntry2D::offsetx, SiPixelTemplateEntry2D::offsety, SiPixelTemplateEntry2D::pixmax, SiPixelTemplateEntry2D::qavg, SiPixelTemplateHeader2D::qscale, SiPixelTemplateEntry2D::runnum, SiPixelTemplateHeader2D::s50, SiPixelTemplateEntry2D::scalex, SiPixelTemplateEntry2D::scalexavg, SiPixelTemplateEntry2D::scaley, SiPixelTemplateEntry2D::scaleyavg, SiPixelTemplateEntry2D::sigmavav, SiPixelTemplateEntry2D::spare, SiPixelTemplateHeader2D::ss50, SiPixelTemplateEntry2D::sxymax, T2XSIZE, T2YSIZE, groupFilesInBlocks::temp, SiPixelTemplateHeader2D::temperature, SiPixelTemplateHeader2D::templ_version, SiPixelTemplateHeader2D::title, SiPixelTemplateHeader2D::Vbias, SiPixelTemplateHeader2D::xsize, SiPixelTemplateEntry2D::xypar, SiPixelTemplateEntry2D::xytemp, 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 = new SiPixelTemplateEntry2D*[theCurrentTemp.head.NTyx];
170  theCurrentTemp.entry[0] = new SiPixelTemplateEntry2D[theCurrentTemp.head.NTyx * theCurrentTemp.head.NTxx];
171  for (int i = 1; i < theCurrentTemp.head.NTyx; ++i)
172  theCurrentTemp.entry[i] = theCurrentTemp.entry[i - 1] + theCurrentTemp.head.NTxx;
173 
174  // Read in the file info
175 
176  for (int iy = 0; iy < theCurrentTemp.head.NTyx; ++iy) {
177  for (int jx = 0; jx < theCurrentTemp.head.NTxx; ++jx) {
178  in_file >> theCurrentTemp.entry[iy][jx].runnum >> theCurrentTemp.entry[iy][jx].costrk[0] >>
179  theCurrentTemp.entry[iy][jx].costrk[1] >> theCurrentTemp.entry[iy][jx].costrk[2];
180 
181  if (in_file.fail()) {
182  LOGERROR("SiPixelTemplate2D") << "Error reading file 1, no template load, run # "
183  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
184  delete[] theCurrentTemp.entry[0];
185  delete[] theCurrentTemp.entry;
186  return false;
187  }
188 
189  // Calculate cot(alpha) and cot(beta) for this entry
190 
191  theCurrentTemp.entry[iy][jx].cotalpha =
192  theCurrentTemp.entry[iy][jx].costrk[0] / theCurrentTemp.entry[iy][jx].costrk[2];
193 
194  theCurrentTemp.entry[iy][jx].cotbeta =
195  theCurrentTemp.entry[iy][jx].costrk[1] / theCurrentTemp.entry[iy][jx].costrk[2];
196 
197  in_file >> theCurrentTemp.entry[iy][jx].qavg >> theCurrentTemp.entry[iy][jx].pixmax >>
198  theCurrentTemp.entry[iy][jx].sxymax >> theCurrentTemp.entry[iy][jx].iymin >>
199  theCurrentTemp.entry[iy][jx].iymax >> theCurrentTemp.entry[iy][jx].jxmin >>
200  theCurrentTemp.entry[iy][jx].jxmax;
201 
202  if (in_file.fail()) {
203  LOGERROR("SiPixelTemplate2D") << "Error reading file 2, no template load, run # "
204  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
205  delete[] theCurrentTemp.entry[0];
206  delete[] theCurrentTemp.entry;
207  return false;
208  }
209 
210  for (int k = 0; k < 2; ++k) {
211  in_file >> theCurrentTemp.entry[iy][jx].xypar[k][0] >> theCurrentTemp.entry[iy][jx].xypar[k][1] >>
212  theCurrentTemp.entry[iy][jx].xypar[k][2] >> theCurrentTemp.entry[iy][jx].xypar[k][3] >>
213  theCurrentTemp.entry[iy][jx].xypar[k][4];
214 
215  if (in_file.fail()) {
216  LOGERROR("SiPixelTemplate2D")
217  << "Error reading file 3, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum << ENDL;
218  delete[] theCurrentTemp.entry[0];
219  delete[] theCurrentTemp.entry;
220  return false;
221  }
222  }
223 
224  for (int k = 0; k < 2; ++k) {
225  in_file >> theCurrentTemp.entry[iy][jx].lanpar[k][0] >> theCurrentTemp.entry[iy][jx].lanpar[k][1] >>
226  theCurrentTemp.entry[iy][jx].lanpar[k][2] >> theCurrentTemp.entry[iy][jx].lanpar[k][3] >>
227  theCurrentTemp.entry[iy][jx].lanpar[k][4];
228 
229  if (in_file.fail()) {
230  LOGERROR("SiPixelTemplate2D")
231  << "Error reading file 4, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum << ENDL;
232  delete[] theCurrentTemp.entry[0];
233  delete[] theCurrentTemp.entry;
234  return false;
235  }
236  }
237 
238  // Read the 2D template entries as floats [they are formatted that way] and cast to short ints
239 
240  float dummy[T2YSIZE];
241  for (int l = 0; l < 7; ++l) {
242  for (int k = 0; k < 7; ++k) {
243  for (int j = 0; j < T2XSIZE; ++j) {
244  for (int i = 0; i < T2YSIZE; ++i) {
245  in_file >> dummy[i];
246  }
247  if (in_file.fail()) {
248  LOGERROR("SiPixelTemplate2D")
249  << "Error reading file 5, no template load, run # " << theCurrentTemp.entry[iy][jx].runnum << ENDL;
250  delete[] theCurrentTemp.entry[0];
251  delete[] theCurrentTemp.entry;
252  return false;
253  }
254  for (int i = 0; i < T2YSIZE; ++i) {
255  theCurrentTemp.entry[iy][jx].xytemp[k][l][i][j] = (short int)dummy[i];
256  }
257  }
258  }
259  }
260 
261  in_file >> theCurrentTemp.entry[iy][jx].chi2ppix >> theCurrentTemp.entry[iy][jx].chi2scale >>
262  theCurrentTemp.entry[iy][jx].offsetx[0] >> theCurrentTemp.entry[iy][jx].offsetx[1] >>
263  theCurrentTemp.entry[iy][jx].offsetx[2] >> theCurrentTemp.entry[iy][jx].offsetx[3] >>
264  theCurrentTemp.entry[iy][jx].offsety[0] >> theCurrentTemp.entry[iy][jx].offsety[1] >>
265  theCurrentTemp.entry[iy][jx].offsety[2] >> theCurrentTemp.entry[iy][jx].offsety[3];
266 
267  if (in_file.fail()) {
268  LOGERROR("SiPixelTemplate2D") << "Error reading file 6, no template load, run # "
269  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
270  delete[] theCurrentTemp.entry[0];
271  delete[] theCurrentTemp.entry;
272  return false;
273  }
274 
275  in_file >> theCurrentTemp.entry[iy][jx].clsleny >> theCurrentTemp.entry[iy][jx].clslenx >>
276  theCurrentTemp.entry[iy][jx].mpvvav >> theCurrentTemp.entry[iy][jx].sigmavav >>
277  theCurrentTemp.entry[iy][jx].kappavav >> theCurrentTemp.entry[iy][jx].scalexavg >>
278  theCurrentTemp.entry[iy][jx].scaleyavg >> theCurrentTemp.entry[iy][jx].delyavg >>
279  theCurrentTemp.entry[iy][jx].delysig >> theCurrentTemp.entry[iy][jx].spare[0];
280 
281  if (in_file.fail()) {
282  LOGERROR("SiPixelTemplate2D") << "Error reading file 7, no template load, run # "
283  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
284  delete[] theCurrentTemp.entry[0];
285  delete[] theCurrentTemp.entry;
286  return false;
287  }
288 
289  in_file >> theCurrentTemp.entry[iy][jx].scalex[0] >> theCurrentTemp.entry[iy][jx].scalex[1] >>
290  theCurrentTemp.entry[iy][jx].scalex[2] >> theCurrentTemp.entry[iy][jx].scalex[3] >>
291  theCurrentTemp.entry[iy][jx].scaley[0] >> theCurrentTemp.entry[iy][jx].scaley[1] >>
292  theCurrentTemp.entry[iy][jx].scaley[2] >> theCurrentTemp.entry[iy][jx].scaley[3] >>
293  theCurrentTemp.entry[iy][jx].spare[1] >> theCurrentTemp.entry[iy][jx].spare[2];
294 
295  if (in_file.fail()) {
296  LOGERROR("SiPixelTemplate2D") << "Error reading file 8, no template load, run # "
297  << theCurrentTemp.entry[iy][jx].runnum << ENDL;
298  delete[] theCurrentTemp.entry[0];
299  delete[] theCurrentTemp.entry;
300  return false;
301  }
302  }
303  }
304 
305  in_file.close();
306 
307  // Add this template to the store
308 
309  pixelTemp.push_back(theCurrentTemp);
310 
311  return true;
312 
313  } else {
314  // If file didn't open, report this
315 
316  LOGERROR("SiPixelTemplate2D") << "Error opening File" << tempfile << ENDL;
317  return false;
318  }
319 
320 } // TempInit

References SiPixelTemplateHeader2D::Bfield, HltBtagPostValidation_cff::c, SiPixelTemplateEntry2D::chi2ppix, SiPixelTemplateEntry2D::chi2scale, SiPixelTemplateEntry2D::clslenx, SiPixelTemplateEntry2D::clsleny, SiPixelTemplateEntry2D::costrk, SiPixelTemplateEntry2D::cotalpha, SiPixelTemplateEntry2D::cotbeta, SiPixelTemplateEntry2D::delyavg, SiPixelTemplateEntry2D::delysig, DeadROC_duringRun::dir, SiPixelTemplateHeader2D::Dtype, ENDL, SiPixelTemplateStore2D::entry, SiPixelTemplateHeader2D::fbin, FrontierConditions_GlobalTag_cff::file, SiPixelTemplateHeader2D::fluence, cms::cuda::for(), SiPixelTemplateStore2D::head, mps_fire::i, SiPixelTemplateHeader2D::ID, runGCPTkAlMap::in_file, createfilelist::int, SiPixelTemplateEntry2D::iymax, SiPixelTemplateEntry2D::iymin, dqmiolumiharvest::j, SiPixelTemplateEntry2D::jxmax, SiPixelTemplateEntry2D::jxmin, dqmdumpme::k, SiPixelTemplateEntry2D::kappavav, cmsLHEtoEOSManager::l, SiPixelTemplateEntry2D::lanpar, LOGERROR, LOGINFO, SiPixelTemplateHeader2D::lorxbias, SiPixelTemplateHeader2D::lorxwidth, SiPixelTemplateHeader2D::lorybias, SiPixelTemplateHeader2D::lorywidth, SiPixelTemplateEntry2D::mpvvav, SiPixelTemplateHeader2D::NTxx, SiPixelTemplateHeader2D::NTy, SiPixelTemplateHeader2D::NTyx, SiPixelTemplateEntry2D::offsetx, SiPixelTemplateEntry2D::offsety, SiPixelTemplateEntry2D::pixmax, SiPixelTemplateEntry2D::qavg, SiPixelTemplateHeader2D::qscale, SiPixelTemplateEntry2D::runnum, SiPixelTemplateHeader2D::s50, SiPixelTemplateEntry2D::scalex, SiPixelTemplateEntry2D::scalexavg, SiPixelTemplateEntry2D::scaley, SiPixelTemplateEntry2D::scaleyavg, SiPixelTemplateEntry2D::sigmavav, SiPixelTemplateEntry2D::spare, SiPixelTemplateHeader2D::ss50, AlCaHLTBitMon_QueryRunRegistry::string, SiPixelTemplateEntry2D::sxymax, T2XSIZE, T2YSIZE, SiPixelTemplateHeader2D::temperature, SiPixelTemplateHeader2D::templ_version, SiPixelTemplateHeader2D::title, SiPixelTemplateHeader2D::Vbias, SiPixelTemplateHeader2D::xsize, SiPixelTemplateEntry2D::xypar, SiPixelTemplateEntry2D::xytemp, 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 207 of file SiPixelTemplate2D.h.

References qavg_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ qscale()

float SiPixelTemplate2D::qscale ( )
inline

charge scaling factor

Definition at line 209 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 210 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 212 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 261 of file SiPixelTemplate2D.h.

References scalexavg_.

◆ scaley()

float SiPixelTemplate2D::scaley ( int  i)
inline

y-error scale factor in 4 charge bins

Definition at line 219 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 260 of file SiPixelTemplate2D.h.

References scaleyavg_.

◆ sigmavav()

float SiPixelTemplate2D::sigmavav ( )
inline

scale factor in Vavilov distribution

Definition at line 254 of file SiPixelTemplate2D.h.

References sigmavav_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ sizex()

float SiPixelTemplate2D::sizex ( )
inline

return x size of template cluster

Definition at line 247 of file SiPixelTemplate2D.h.

References clslenx_.

◆ sizey()

float SiPixelTemplate2D::sizey ( )
inline

return y size of template cluster

Definition at line 248 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 269 of file SiPixelTemplate2D.h.

References thePixelTemp_.

◆ sxymax()

float SiPixelTemplate2D::sxymax ( )
inline

max pixel signal for pixel error calculation

Definition at line 211 of file SiPixelTemplate2D.h.

References sxymax_.

Referenced by SiPixelTemplateReco2D::PixelTempReco2D().

◆ xsize()

float SiPixelTemplate2D::xsize ( )
inline

pixel x-size (microns)

Definition at line 266 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 1724 of file SiPixelTemplate2D.cc.

1726 {
1727  // Interpolate using quantities already stored in the private variables
1728 
1729  // Local variables
1730  float sigi, sigi2, sigi3, sigi4, qscale, err2, err00;
1731 
1732  // Make sure that input is OK
1733 
1734 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
1735  if (index < 1 || index >= BYM2) {
1736  throw cms::Exception("DataCorrupt") << "SiPixelTemplate2D::ysigma2 called with index = " << index << std::endl;
1737  }
1738 #else
1739  assert(index > 0 && index < BYM2);
1740 #endif
1741 
1742  // Define the maximum signal to use in the parameterization
1743 
1744  // Evaluate pixel-by-pixel uncertainties (weights) for the templ analysis
1745 
1746  if (qpixel < sxymax_) {
1747  sigi = qpixel;
1748  qscale = 1.f;
1749  } else {
1750  sigi = sxymax_;
1751  qscale = qpixel / sxymax_;
1752  }
1753  sigi2 = sigi * sigi;
1754  sigi3 = sigi2 * sigi;
1755  sigi4 = sigi3 * sigi;
1756  if (index <= T2HYP1) {
1757  err00 = xypary0x0_[0][0] + xypary0x0_[0][1] * sigi + xypary0x0_[0][2] * sigi2 + xypary0x0_[0][3] * sigi3 +
1758  xypary0x0_[0][4] * sigi4;
1759  err2 = err00 +
1760  adcota_ * (xypary0x1_[0][0] + xypary0x1_[0][1] * sigi + xypary0x1_[0][2] * sigi2 + xypary0x1_[0][3] * sigi3 +
1761  xypary0x1_[0][4] * sigi4 - err00) +
1762  adcotb_ * (xypary1x0_[0][0] + xypary1x0_[0][1] * sigi + xypary1x0_[0][2] * sigi2 + xypary1x0_[0][3] * sigi3 +
1763  xypary1x0_[0][4] * sigi4 - err00);
1764  } else {
1765  err00 = xypary0x0_[1][0] + xypary0x0_[1][1] * sigi + xypary0x0_[1][2] * sigi2 + xypary0x0_[1][3] * sigi3 +
1766  xypary0x0_[1][4] * sigi4;
1767  err2 = err00 +
1768  adcota_ * (xypary0x1_[1][0] + xypary0x1_[1][1] * sigi + xypary0x1_[1][2] * sigi2 + xypary0x1_[1][3] * sigi3 +
1769  xypary0x1_[1][4] * sigi4 - err00) +
1770  adcotb_ * (xypary1x0_[1][0] + xypary1x0_[1][1] * sigi + xypary1x0_[1][2] * sigi2 + xypary1x0_[1][3] * sigi3 +
1771  xypary1x0_[1][4] * sigi4 - err00);
1772  }
1773  xysig2 = qscale * err2;
1774  if (xysig2 <= 0.f) {
1775  xysig2 = s50_ * s50_;
1776  }
1777 
1778  return;
1779 
1780 } // 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 1648 of file SiPixelTemplate2D.cc.

1649  {
1650  // Interpolate for a new set of track angles
1651 
1652  bool derivatives = false;
1653  float dpdx2d[2][BXM2][BYM2];
1654  float QTemplate;
1655 
1656  return SiPixelTemplate2D::xytemp(xhit, yhit, ydouble, xdouble, template2d, derivatives, dpdx2d, QTemplate);
1657 
1658 } // 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 1016 of file SiPixelTemplate2D.cc.

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

1679  {
1680  // Local variables
1681 
1682  bool derivatives = false;
1683  float dpdx2d[2][BXM2][BYM2];
1684  float QTemplate;
1685  float locBx = 1.f;
1686  if (cotbeta < 0.f) {
1687  locBx = -1.f;
1688  }
1689  float locBz = locBx;
1690  if (cotalpha < 0.f) {
1691  locBz = -locBx;
1692  }
1693 
1694  bool yd[BYM2], xd[BXM2];
1695 
1696  yd[0] = false;
1697  yd[BYM2 - 1] = false;
1698  for (int i = 0; i < TYSIZE; ++i) {
1699  yd[i + 1] = ydouble[i];
1700  }
1701  xd[0] = false;
1702  xd[BXM2 - 1] = false;
1703  for (int j = 0; j < TXSIZE; ++j) {
1704  xd[j + 1] = xdouble[j];
1705  }
1706 
1707  // Interpolate for a new set of track angles
1708 
1709  if (SiPixelTemplate2D::interpolate(id, cotalpha, cotbeta, locBz, locBx)) {
1710  return SiPixelTemplate2D::xytemp(xhit, yhit, yd, xd, template2d, derivatives, dpdx2d, QTemplate);
1711  } else {
1712  return false;
1713  }
1714 
1715 } // 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 267 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 268 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 307 of file SiPixelTemplate2D.h.

◆ adcotb_

float SiPixelTemplate2D::adcotb_
private

fractional pixel distance of cot(beta) from iy0_

Definition at line 304 of file SiPixelTemplate2D.h.

◆ chi2avgone_

float SiPixelTemplate2D::chi2avgone_
private

average chi^2 for 1 pixel clusters

Definition at line 330 of file SiPixelTemplate2D.h.

Referenced by chi2avgone().

◆ chi2minone_

float SiPixelTemplate2D::chi2minone_
private

minimum of chi^2 for 1 pixel clusters

Definition at line 331 of file SiPixelTemplate2D.h.

Referenced by chi2minone().

◆ chi2ppix_

float SiPixelTemplate2D::chi2ppix_
private

average chi^2 per struck pixel

Definition at line 328 of file SiPixelTemplate2D.h.

Referenced by chi2ppix().

◆ chi2scale_

float SiPixelTemplate2D::chi2scale_
private

scale factor for chi2 distribution

Definition at line 329 of file SiPixelTemplate2D.h.

Referenced by chi2scale().

◆ clslenx_

float SiPixelTemplate2D::clslenx_
private

projected x-length of cluster

Definition at line 333 of file SiPixelTemplate2D.h.

Referenced by clslenx(), and sizex().

◆ clsleny_

float SiPixelTemplate2D::clsleny_
private

projected y-length of cluster

Definition at line 332 of file SiPixelTemplate2D.h.

Referenced by clsleny(), and sizey().

◆ cota_current_

float SiPixelTemplate2D::cota_current_
private

current cot alpha

Definition at line 291 of file SiPixelTemplate2D.h.

Referenced by SiPixelTemplate2D().

◆ cotalpha0_

float SiPixelTemplate2D::cotalpha0_
private

minimum cot(alpha) covered

Definition at line 299 of file SiPixelTemplate2D.h.

◆ cotalpha1_

float SiPixelTemplate2D::cotalpha1_
private

maximum cot(alpha) covered

Definition at line 300 of file SiPixelTemplate2D.h.

◆ cotb_current_

float SiPixelTemplate2D::cotb_current_
private

current cot beta

Definition at line 292 of file SiPixelTemplate2D.h.

Referenced by SiPixelTemplate2D().

◆ cotbeta0_

float SiPixelTemplate2D::cotbeta0_
private

minimum cot(beta) covered

Definition at line 296 of file SiPixelTemplate2D.h.

◆ cotbeta1_

float SiPixelTemplate2D::cotbeta1_
private

maximum cot(beta) covered

Definition at line 297 of file SiPixelTemplate2D.h.

◆ deltacota_

float SiPixelTemplate2D::deltacota_
private

cot(alpha) bin size

Definition at line 301 of file SiPixelTemplate2D.h.

◆ deltacotb_

float SiPixelTemplate2D::deltacotb_
private

cot(beta) bin size

Definition at line 298 of file SiPixelTemplate2D.h.

◆ delyavg_

float SiPixelTemplate2D::delyavg_
private

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

Definition at line 336 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 337 of file SiPixelTemplate2D.h.

Referenced by delysig().

◆ Dtype_

int SiPixelTemplate2D::Dtype_
private

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

Definition at line 295 of file SiPixelTemplate2D.h.

◆ entry00_

const SiPixelTemplateEntry2D* SiPixelTemplate2D::entry00_
private

Definition at line 353 of file SiPixelTemplate2D.h.

◆ entry01_

const SiPixelTemplateEntry2D* SiPixelTemplate2D::entry01_
private

Definition at line 355 of file SiPixelTemplate2D.h.

◆ entry10_

const SiPixelTemplateEntry2D* SiPixelTemplate2D::entry10_
private

Definition at line 354 of file SiPixelTemplate2D.h.

◆ fbin_

float SiPixelTemplate2D::fbin_[3]
private

The QBin definitions in Q_clus/Q_avg.

Definition at line 352 of file SiPixelTemplate2D.h.

Referenced by fbin().

◆ flip_x_

bool SiPixelTemplate2D::flip_x_
private

flip x sign-sensitive quantities

Definition at line 313 of file SiPixelTemplate2D.h.

◆ flip_y_

bool SiPixelTemplate2D::flip_y_
private

flip y sign-sensitive quantities

Definition at line 312 of file SiPixelTemplate2D.h.

◆ id_current_

int SiPixelTemplate2D::id_current_
private

current id

Definition at line 289 of file SiPixelTemplate2D.h.

Referenced by SiPixelTemplate2D().

◆ imax_

int SiPixelTemplate2D::imax_
private

max y index of templated cluster

Definition at line 309 of file SiPixelTemplate2D.h.

◆ imin_

int SiPixelTemplate2D::imin_
private

min y index of templated cluster

Definition at line 308 of file SiPixelTemplate2D.h.

◆ index_id_

int SiPixelTemplate2D::index_id_
private

current index

Definition at line 290 of file SiPixelTemplate2D.h.

Referenced by SiPixelTemplate2D().

◆ iy0_

int SiPixelTemplate2D::iy0_
private

index of nearest cot(beta) bin

Definition at line 302 of file SiPixelTemplate2D.h.

◆ iy1_

int SiPixelTemplate2D::iy1_
private

index of next-nearest cot(beta) bin

Definition at line 303 of file SiPixelTemplate2D.h.

◆ jmax_

int SiPixelTemplate2D::jmax_
private

max x index of templated cluster

Definition at line 311 of file SiPixelTemplate2D.h.

◆ jmin_

int SiPixelTemplate2D::jmin_
private

min x index of templated cluster

Definition at line 310 of file SiPixelTemplate2D.h.

◆ jx0_

int SiPixelTemplate2D::jx0_
private

index of nearest cot(alpha) bin

Definition at line 305 of file SiPixelTemplate2D.h.

◆ jx1_

int SiPixelTemplate2D::jx1_
private

index of next-nearest cot(alpha) bin

Definition at line 306 of file SiPixelTemplate2D.h.

◆ kappavav_

float SiPixelTemplate2D::kappavav_
private

kappa parameter in Vavilov distribution

Definition at line 344 of file SiPixelTemplate2D.h.

Referenced by kappavav().

◆ lanpar_

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

Interpolated Landau parameters.

Definition at line 327 of file SiPixelTemplate2D.h.

◆ lorxdrift_

float SiPixelTemplate2D::lorxdrift_
private

Lorentz x-drift.

Definition at line 348 of file SiPixelTemplate2D.h.

Referenced by lorxdrift().

◆ lorxwidth_

float SiPixelTemplate2D::lorxwidth_
private

Lorentz x-width.

Definition at line 346 of file SiPixelTemplate2D.h.

◆ lorydrift_

float SiPixelTemplate2D::lorydrift_
private

Lorentz y-drift.

Definition at line 347 of file SiPixelTemplate2D.h.

Referenced by lorydrift().

◆ lorywidth_

float SiPixelTemplate2D::lorywidth_
private

Lorentz y-width (sign corrected for fpix frame)

Definition at line 345 of file SiPixelTemplate2D.h.

◆ mpvvav_

float SiPixelTemplate2D::mpvvav_
private

most probable Q in Vavilov distribution

Definition at line 342 of file SiPixelTemplate2D.h.

Referenced by mpvvav().

◆ Nxx_

int SiPixelTemplate2D::Nxx_
private

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

Definition at line 294 of file SiPixelTemplate2D.h.

◆ Nyx_

int SiPixelTemplate2D::Nyx_
private

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

Definition at line 293 of file SiPixelTemplate2D.h.

◆ offsetx_

float SiPixelTemplate2D::offsetx_[4]
private

x-offset in charge bins

Definition at line 340 of file SiPixelTemplate2D.h.

Referenced by offsetx().

◆ offsety_

float SiPixelTemplate2D::offsety_[4]
private

y-offset in charge bins

Definition at line 341 of file SiPixelTemplate2D.h.

Referenced by offsety().

◆ pixmax_

float SiPixelTemplate2D::pixmax_
private

maximum pixel charge

Definition at line 319 of file SiPixelTemplate2D.h.

Referenced by pixmax().

◆ qavg_

float SiPixelTemplate2D::qavg_
private

average cluster charge for this set of track angles

Definition at line 318 of file SiPixelTemplate2D.h.

Referenced by qavg().

◆ qscale_

float SiPixelTemplate2D::qscale_
private

charge scaling factor

Definition at line 320 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 321 of file SiPixelTemplate2D.h.

Referenced by s50().

◆ scalex_

float SiPixelTemplate2D::scalex_[4]
private

x-error scale factor in charge bins

Definition at line 338 of file SiPixelTemplate2D.h.

Referenced by scalex().

◆ scalexavg_

float SiPixelTemplate2D::scalexavg_
private

average x-error scale factor

Definition at line 334 of file SiPixelTemplate2D.h.

Referenced by scalexavg().

◆ scaley_

float SiPixelTemplate2D::scaley_[4]
private

y-error scale factor in charge bins

Definition at line 339 of file SiPixelTemplate2D.h.

Referenced by scaley().

◆ scaleyavg_

float SiPixelTemplate2D::scaleyavg_
private

average y-error scale factor

Definition at line 335 of file SiPixelTemplate2D.h.

Referenced by scaleyavg().

◆ sigmavav_

float SiPixelTemplate2D::sigmavav_
private

scale factor in Vavilov distribution

Definition at line 343 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 314 of file SiPixelTemplate2D.h.

◆ sxymax_

float SiPixelTemplate2D::sxymax_
private

average pixel signal for y-projection of cluster

Definition at line 322 of file SiPixelTemplate2D.h.

Referenced by sxymax().

◆ thePixelTemp_

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

Definition at line 358 of file SiPixelTemplate2D.h.

Referenced by storesize().

◆ xsize_

float SiPixelTemplate2D::xsize_
private

Pixel x-size.

Definition at line 349 of file SiPixelTemplate2D.h.

Referenced by xsize().

◆ xypary0x0_

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

Polynomial error parameterization at ix0,iy0.

Definition at line 324 of file SiPixelTemplate2D.h.

◆ xypary0x1_

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

Polynomial error parameterization at ix1,iy0.

Definition at line 326 of file SiPixelTemplate2D.h.

◆ xypary1x0_

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

Polynomial error parameterization at ix0,iy1.

Definition at line 325 of file SiPixelTemplate2D.h.

◆ xytemp_

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

template for xy-reconstruction

Definition at line 323 of file SiPixelTemplate2D.h.

◆ ysize_

float SiPixelTemplate2D::ysize_
private

Pixel y-size.

Definition at line 350 of file SiPixelTemplate2D.h.

Referenced by ysize().

◆ zsize_

float SiPixelTemplate2D::zsize_
private

Pixel z-size (thickness)

Definition at line 351 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:289
SiPixelTemplate2D::chi2ppix_
float chi2ppix_
average chi^2 per struck pixel
Definition: SiPixelTemplate2D.h:328
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:306
SiPixelTemplateHeader2D::fbin
float fbin[3]
The QBin definitions in Q_clus/Q_avg.
Definition: SiPixelTemplate2D.h:96
SiPixelTemplateEntry2D::runnum
int runnum
< Basic template entry corresponding to a single set of track angles
Definition: SiPixelTemplate2D.h:43
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:1016
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
SiPixelTemplateEntry2D::spare
float spare[3]
Definition: SiPixelTemplate2D.h:74
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:301
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
SiPixelTemplate2D::qavg_
float qavg_
average cluster charge for this set of track angles
Definition: SiPixelTemplate2D.h:318
SiPixelTemplate2D::cotalpha1_
float cotalpha1_
maximum cot(alpha) covered
Definition: SiPixelTemplate2D.h:300
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
SiPixelTemplate2D::xsize_
float xsize_
Pixel x-size.
Definition: SiPixelTemplate2D.h:349
SiPixelTemplateHeader2D::Bfield
float Bfield
Bfield in Tesla.
Definition: SiPixelTemplate2D.h:95
SiPixelTemplate2D::Dtype_
int Dtype_
flags BPix (=0) or FPix (=1)
Definition: SiPixelTemplate2D.h:295
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:312
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:339
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:352
SiPixelTemplate2D::xytemp_
float xytemp_[13+2][21+2]
template for xy-reconstruction
Definition: SiPixelTemplate2D.h:323
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:305
SiPixelTemplate2D::deltacotb_
float deltacotb_
cot(beta) bin size
Definition: SiPixelTemplate2D.h:298
SiPixelTemplateEntry2D
Definition: SiPixelTemplate2D.h:42
SiPixelTemplate2D::getid
bool getid(int id)
Definition: SiPixelTemplate2D.cc:569
SiPixelTemplate2D::xypary0x1_
float xypary0x1_[2][5]
Polynomial error parameterization at ix1,iy0.
Definition: SiPixelTemplate2D.h:326
SiPixelTemplate2D::delyavg_
float delyavg_
average difference between clsleny_ and cluster length [with threshold effects]
Definition: SiPixelTemplate2D.h:336
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:333
SiPixelTemplate2D::index_id_
int index_id_
current index
Definition: SiPixelTemplate2D.h:290
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:334
SiPixelTemplate2D::chi2avgone_
float chi2avgone_
average chi^2 for 1 pixel clusters
Definition: SiPixelTemplate2D.h:330
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:322
SiPixelTemplate2D::entry01_
const SiPixelTemplateEntry2D * entry01_
Definition: SiPixelTemplate2D.h:355
SiPixelTemplate2D::Nxx_
int Nxx_
number of cot(alpha)-entries (rows) in template
Definition: SiPixelTemplate2D.h:294
TXSIZE
#define TXSIZE
Definition: SiPixelTemplateDefs.h:30
SiPixelTemplateStore2D::head
SiPixelTemplateHeader2D head
< template storage structure
Definition: SiPixelTemplate2D.h:103
SiPixelTemplateEntry2D::cotbeta
float cotbeta
cot(beta) is proportional to cluster length in y and is basis of interpolation
Definition: SiPixelTemplate2D.h:45
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:329
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:308
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:347
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:340
SiPixelTemplateHeader2D::zsize
float zsize
pixel size (for future use in upgraded geometry)
Definition: SiPixelTemplate2D.h:99
SiPixelTemplate2D::entry00_
const SiPixelTemplateEntry2D * entry00_
Definition: SiPixelTemplate2D.h:353
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:321
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:307
dqmdumpme.k
k
Definition: dqmdumpme.py:60
SiPixelTemplate2D::sigmavav_
float sigmavav_
scale factor in Vavilov distribution
Definition: SiPixelTemplate2D.h:343
SiPixelTemplateHeader2D::title
char title[80]
template title
Definition: SiPixelTemplate2D.h:93
SiPixelTemplateEntry2D::costrk
float costrk[3]
direction cosines of tracks used to generate this entry
Definition: SiPixelTemplate2D.h:46
SiPixelTemplate2D::chi2minone_
float chi2minone_
minimum of chi^2 for 1 pixel clusters
Definition: SiPixelTemplate2D.h:331
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:358
SiPixelTemplateStore2D
Definition: SiPixelTemplate2D.h:102
SiPixelTemplate2D::interpolate
bool interpolate(int id, float cotalpha, float cotbeta, float locBz, float locBx)
Definition: SiPixelTemplate2D.cc:659
SiPixelTemplate2D::cotbeta0_
float cotbeta0_
minimum cot(beta) covered
Definition: SiPixelTemplate2D.h:296
SiPixelTemplateStore2D::entry
SiPixelTemplateEntry2D ** entry
use 2d entry to store BPix and FPix entries [dynamically allocated]
Definition: SiPixelTemplate2D.h:104
SiPixelTemplate2D::entry10_
const SiPixelTemplateEntry2D * entry10_
Definition: SiPixelTemplate2D.h:354
SiPixelTemplate2D::imax_
int imax_
max y index of templated cluster
Definition: SiPixelTemplate2D.h:309
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:348
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:313
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:299
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::cotalpha
float cotalpha
cot(alpha) is proportional to cluster length in x and is basis of interpolation
Definition: SiPixelTemplate2D.h:44
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:49
SiPixelTemplate2D::offsety_
float offsety_[4]
y-offset in charge bins
Definition: SiPixelTemplate2D.h:341
SiPixelTemplateEntry2D::offsetx
float offsetx[4]
x-offset in 4 charge bins
Definition: SiPixelTemplate2D.h:72
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
cms::cuda::for
for(int i=first, nt=offsets[nh];i< nt;i+=gridDim.x *blockDim.x)
Definition: HistoContainer.h:27
SiPixelTemplate2D::pixmax_
float pixmax_
maximum pixel charge
Definition: SiPixelTemplate2D.h:319
SiPixelTemplate2D::clsleny_
float clsleny_
projected y-length of cluster
Definition: SiPixelTemplate2D.h:332
SiPixelTemplate2D::iy1_
int iy1_
index of next-nearest cot(beta) bin
Definition: SiPixelTemplate2D.h:303
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:204
SiPixelTemplate2D::zsize_
float zsize_
Pixel z-size (thickness)
Definition: SiPixelTemplate2D.h:351
SiPixelTemplate2D::Nyx_
int Nyx_
number of cot(beta)-entries (columns) in template
Definition: SiPixelTemplate2D.h:293
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:327
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:325
SiPixelTemplate2D::cota_current_
float cota_current_
current cot alpha
Definition: SiPixelTemplate2D.h:291
SiPixelTemplate2D::lorxwidth_
float lorxwidth_
Lorentz x-width.
Definition: SiPixelTemplate2D.h:346
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:335
ENDL
#define ENDL
Definition: SiPixelTemplate2D.cc:45
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
SiPixelTemplate2D::cotbeta1_
float cotbeta1_
maximum cot(beta) covered
Definition: SiPixelTemplate2D.h:297
SiPixelTemplate2D::jmax_
int jmax_
max x index of templated cluster
Definition: SiPixelTemplate2D.h:311
Exception
Definition: hltDiff.cc:246
SiPixelTemplate2D::mpvvav_
float mpvvav_
most probable Q in Vavilov distribution
Definition: SiPixelTemplate2D.h:342
SiPixelTemplate2D::qscale
float qscale()
charge scaling factor
Definition: SiPixelTemplate2D.h:209
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:345
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:314
SiPixelTemplate2D::iy0_
int iy0_
index of nearest cot(beta) bin
Definition: SiPixelTemplate2D.h:302
SiPixelTemplate2D::ysize_
float ysize_
Pixel y-size.
Definition: SiPixelTemplate2D.h:350
SiPixelTemplate2D::xypary0x0_
float xypary0x0_[2][5]
Polynomial error parameterization at ix0,iy0.
Definition: SiPixelTemplate2D.h:324
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:292
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
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
SiPixelTemplate2D::jmin_
int jmin_
min x index of templated cluster
Definition: SiPixelTemplate2D.h:310
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:337
LOGERROR
#define LOGERROR(x)
Definition: SiPixelTemplate2D.cc:43
SiPixelTemplate2D::scalex_
float scalex_[4]
x-error scale factor in charge bins
Definition: SiPixelTemplate2D.h:338
SiPixelTemplateHeader2D::xsize
float xsize
pixel size (for future use in upgraded geometry)
Definition: SiPixelTemplate2D.h:97
PVValHelper::dx
Definition: PVValidationHelpers.h:48
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:320
SiPixelTemplate2D::adcotb_
float adcotb_
fractional pixel distance of cot(beta) from iy0_
Definition: SiPixelTemplate2D.h:304
SiPixelTemplate2D::kappavav_
float kappavav_
kappa parameter in Vavilov distribution
Definition: SiPixelTemplate2D.h:344
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