![]() |
|
|||
File indexing completed on 2024-04-06 12:26:23
0001 // 0002 // SiPixelTemplateReco.cc (Version 10.00) 0003 // 0004 // Add goodness-of-fit to algorithm, include single pixel clusters in chi2 calculation 0005 // Try "decapitation" of large single pixels 0006 // Add correction for (Q_F-Q_L)/(Q_F+Q_L) bias 0007 // Add cot(beta) reflection to reduce y-entries and more sophisticated x-interpolation 0008 // Fix small double pixel bug with decapitation (2.41 5-Mar-2007). 0009 // Fix pseudopixel bug causing possible memory overwrite (2.42 12-Mar-2007) 0010 // Adjust template binning to span 3 (or 4) central pixels and implement improved (faster) chi2min search 0011 // Replace internal containers with static arrays 0012 // Add external threshold to calls to ysigma2 and xsigma2, use sorted signal heights to guarrantee min clust size = 2 0013 // Use denser search over larger bin range for clusters with big pixels. 0014 // Use single calls to template object to load template arrays (had been many) 0015 // Add speed switch to trade-off speed and robustness 0016 // Add qmin and re-define qbin to flag low-q clusters 0017 // Add qscale to match charge scales 0018 // Return error if no pixels in cluster 0019 // Replace 4 cout's with LogError's 0020 // Add LogDebug I/O to report various common errors 0021 // Incorporate "cluster repair" to handle dead pixels 0022 // Take truncation size from new pixmax information 0023 // Change to allow template sizes to be changed at compile time 0024 // Move interpolation range error to LogDebug 0025 // Add qbin = 5 and change 1-pixel probability to use new template info 0026 // Add floor for probabilities (no exact zeros) 0027 // Replace asserts with exceptions in CMSSW 0028 // Change calling sequence to handle cot(beta)<0 for FPix cosmics 0029 // 0030 // V7.00 - Decouple BPix and FPix information into separate templates 0031 // Pass all containers by alias to prevent excessive cpu-usage (v7.01) 0032 // Slightly modify search bin range to avoid problem with single pixel clusters + large Lorentz drift (V7.02) 0033 // 0034 // V8.00 - Add 2D probabilities, take pixel sizes from the template 0035 // V8.05 - Shift 2-D cluster to center on the buffer 0036 // V8.06 - Add locBz to the 2-D template (causes failover to the simple template when the cotbeta-locBz correlation is incorrect ... ie for non-IP tracks). 0037 // - include minimum value for prob2D (1.e-30) 0038 // V8.07 - Tune 2-d probability: consider only pixels above threshold and use threshold value for zero signal pixels (non-zero template) 0039 // V8.10 - Remove 2-d probability for ineffectiveness and replace with simple cluster charge probability 0040 // V8.11 - Change probQ to upper tail probability always (rather than two-sided tail probability) 0041 // V8.20 - Use template cytemp/cxtemp methods to center the data cluster in the right place when the template becomes asymmetric after irradiation 0042 // V8.25 - Incorporate VIs speed improvements 0043 // V8.26 - Fix centering problem for small signals 0044 // V9.00 - Set QProb = Q/Q_avg when calcultion is turned off, use fbin definitions of Qbin 0045 // V10.00 - Use new template object to reco Phase 1 FPix hits 0046 // 0047 // 0048 // 0049 // Created by Morris Swartz on 10/27/06. 0050 // 0051 // 0052 0053 #ifndef SiPixelTemplateReco_h 0054 #define SiPixelTemplateReco_h 1 0055 0056 #ifndef SI_PIXEL_TEMPLATE_STANDALONE 0057 #include "CondFormats/SiPixelTransient/interface/SiPixelTemplateDefs.h" 0058 #include "CondFormats/SiPixelTransient/interface/SiPixelTemplate.h" 0059 #else 0060 #include "SiPixelTemplateDefs.h" 0061 #include "SiPixelTemplate.h" 0062 #endif 0063 0064 #define N2D 500 0065 0066 #include <vector> 0067 0068 #ifndef SiPixelTemplateClusMatrix 0069 #define SiPixelTemplateClusMatrix 1 0070 0071 namespace SiPixelTemplateReco { 0072 0073 struct ClusMatrix { 0074 float& operator()(int x, int y) { return matrix[mcol * x + y]; } 0075 float operator()(int x, int y) const { return matrix[mcol * x + y]; } 0076 float* matrix; 0077 bool const* xdouble; 0078 bool const* ydouble; 0079 int mrow, mcol; 0080 }; 0081 #endif 0082 0083 int PixelTempReco1D(int id, 0084 float cotalpha, 0085 float cotbeta, 0086 float locBz, 0087 float locBx, 0088 ClusMatrix& cluster, 0089 SiPixelTemplate& templ, 0090 float& yrec, 0091 float& sigmay, 0092 float& proby, 0093 float& xrec, 0094 float& sigmax, 0095 float& probx, 0096 int& qbin, 0097 int speed, 0098 bool deadpix, 0099 std::vector<std::pair<int, int> >& zeropix, 0100 float& probQ, 0101 int& nypix, 0102 int& nxpix); 0103 0104 int PixelTempReco1D(int id, 0105 float cotalpha, 0106 float cotbeta, 0107 float locBz, 0108 float locBx, 0109 ClusMatrix& cluster, 0110 SiPixelTemplate& templ, 0111 float& yrec, 0112 float& sigmay, 0113 float& proby, 0114 float& xrec, 0115 float& sigmax, 0116 float& probx, 0117 int& qbin, 0118 int speed, 0119 float& probQ); 0120 0121 int PixelTempReco1D(int id, 0122 float cotalpha, 0123 float cotbeta, 0124 ClusMatrix& cluster, 0125 SiPixelTemplate& templ, 0126 float& yrec, 0127 float& sigmay, 0128 float& proby, 0129 float& xrec, 0130 float& sigmax, 0131 float& probx, 0132 int& qbin, 0133 int speed, 0134 float& probQ); 0135 0136 int PixelTempReco1D(int id, 0137 float cotalpha, 0138 float cotbeta, 0139 ClusMatrix& cluster, 0140 SiPixelTemplate& templ, 0141 float& yrec, 0142 float& sigmay, 0143 float& proby, 0144 float& xrec, 0145 float& sigmax, 0146 float& probx, 0147 int& qbin, 0148 int speed); 0149 } 0150 0151 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |
![]() ![]() |