16 #ifndef SiPixelTemplate2D_h
17 #define SiPixelTemplate2D_h 1
23 #include "boost/multi_array.hpp"
25 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
80 boost::multi_array<SiPixelTemplateEntry2D,2>
entry;
112 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
119 bool xytemp(
int id,
float cotalpha,
float cotbeta,
float locBz,
float xhit,
float yhit, std::vector<bool>& ydouble, std::vector<bool>& xdouble,
float template2d[
BXM2][
BYM2]);
123 bool xytemp(
int id,
float cotalpha,
float cotbeta,
float xhit,
float yhit, std::vector<bool>& ydouble, std::vector<bool>& xdouble,
float template2d[
BXM2][
BYM2]);
139 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
140 if(j < 0 || j >
BXM3 || i < 0 || i >
BYM3) {
throw cms::Exception(
"DataCorrupt") <<
"SiPixelTemplate2D::xytemp called with illegal indices = " << j <<
"," << i << std::endl;}
142 assert((j>=0 && j<
BYM2) && (i>=0 && i<
BYM2));
146 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
147 if(i < 0 || i > 3) {
throw cms::Exception(
"DataCorrupt") <<
"SiPixelTemplate2D::chi2yavg called with illegal index = " << i << std::endl;}
153 #ifndef SI_PIXEL_TEMPLATE_STANDALONE
154 if(i < 0 || i > 3) {
throw cms::Exception(
"DataCorrupt") <<
"SiPixelTemplate2D::chi2ymin called with illegal index = " << i << std::endl;}
float pixmax
maximum charge for individual pixels in cluster
float chi2avg[4]
average chi^2 in 4 charge bins
float adcotb_
fractional pixel distance of cot(beta) from iy0_
float deltacota_
cot(alpha) bin size
float xsize()
pixel x-size (microns)
int jx1_
index of next-nearest cot(alpha) bin
float chi2avgone
average y chi^2 for 1 pixel clusters
float qavg
average cluster charge for this set of track angles
int runnum
< Basic template entry corresponding to a single set of track angles
int jx0_
index of nearest cot(alpha) bin
float deltacotb_
cot(beta) bin size
SiPixelTemplateHeader2D head
< template storage structure
float qavg_
average cluster charge for this set of track angles
float cotalpha1_
maximum cot(alpha) covered
float xsize_
Pixel x-size.
int Dtype_
flags BPix (=0) or FPix (=1)
void xysigma2(float qpixel, int index, float &xysig2)
float xytemp(int j, int i)
current 2-d template
float sxymax
average pixel signal for use of the error parameterization
float xypar[2][5]
pixel uncertainty parameterization
float chi2avgone_
average chi^2 for 1 pixel clusters
float chi2min_[4]
minimum of chi^2 in 4 charge bins
float chi2minone
minimum of y chi^2 for 1 pixel clusters
float xypary0x1_[2][5]
Polynomial error parameterization at ix1,iy0.
float sxymax_
average pixel signal for y-projection of cluster
int Nxx_
number of cot(alpha)-entries (rows) in template
int index_id_
current index
std::vector< SiPixelTemplateStore2D > thePixelTemp_
float s50()
1/2 of the pixel threshold signal in adc units
boost::multi_array< SiPixelTemplateEntry2D, 2 > entry
use 2d entry to store [47][5] barrel entries or [5][9] fpix entries
float cotbeta
cot(beta) is proportional to cluster length in y and is basis of interpolation
float xytemp_[BXM2][BYM2]
templates for y-reconstruction (binned over 5 central pixels)
bool xytemp(int id, float cotalpha, float cotbeta, float locBz, float xhit, float yhit, std::vector< bool > &ydouble, std::vector< bool > &xdouble, float template2d[BXM2][BYM2])
int iymax
the maximum nonzero pixel yindex in template (saves time during interpolation)
float adcota_
fractional pixel distance of cot(alpha) from jx0_
float chi2min(int i)
minimum chi^2 in 4 charge bins
int storesize()
return the size of the template store (the number of stored IDs
int iymin
the minimum nonzero pixel yindex in template (saves time during interpolation)
float chi2avgone()
//!< average y chi^2 for 1 pixel clusters
float s50_
1/2 of the pixel threshold signal in adc units
float cotbeta0_
minimum cot(beta) covered
int jxmax
the maximum nonzero pixel xindex in template (saves time during interpolation)
float lanpar[2][5]
pixel landau distribution parameters
float costrk[3]
direction cosines of tracks used to generate this entry
float chi2minone_
minimum of chi^2 for 1 pixel clusters
int jxmin
the minimum nonzero pixel xindex in template (saves time during interpolation)
float chi2minone()
//!< minimum of y chi^2 for 1 pixel clusters
float cotalpha0_
minimum cot(alpha) covered
float cotalpha
cot(alpha) is proportional to cluster length in x and is basis of interpolation
float lorywidth()
signed lorentz y-width (microns)
SiPixelTemplate2D()
Default constructor.
int iy1_
index of next-nearest cot(beta) bin
float xytemp[7][7][T2YSIZE][T2XSIZE]
templates for y-reconstruction (binned over 1 central pixel)
float zsize_
Pixel z-size (thickness)
int Nyx_
number of cot(beta)-entries (columns) in template
float lanpar_[2][5]
Interpolated Landau parameters.
float chi2avg_[4]
average chi^2 in 4 charge bins
float cota_current_
current cot alpha
float pixmax()
maximum pixel charge
float lorxwidth_
Lorentz x-width.
float chi2avg(int i)
average chi^2 in 4 charge bins
float lorxwidth()
signed lorentz x-width (microns)
float sxymax()
max pixel signal for pixel error calculation
float pixmax_
maximum pixel charge
float cotbeta1_
maximum cot(beta) covered
float ysize()
pixel y-size (microns)
float qscale()
charge scaling factor
float xypary1x0_[2][5]
Polynomial error parameterization at ix0,iy1.
float qavg()
average cluster charge for this set of track angles
float chi2min[4]
minimum of chi^2 in 4 charge bins
bool success_
true if cotalpha, cotbeta are inside of the acceptance (dynamically loaded)
float ysize_
Pixel y-size.
void landau_par(float lanpar[2][5])
Return the Landau probability parameters for this set of cot(alpha, cot(beta)
float xypary0x0_[2][5]
Polynomial error parameterization at ix0,iy0.
float cotb_current_
current cot beta
bool pushfile(int filenum)
float zsize()
pixel z-size or thickness (microns)
float lorywidth_
Lorentz y-width (sign corrected for fpix frame)
float qscale_
charge scaling factor
int iy0_
index of nearest cot(beta) bin
int id_current_
current id