CMS 3D CMS Logo

PixelCPEGeneric.cc
Go to the documentation of this file.
2 
6 
7 // Pixel templates contain the rec hit error parameterizaiton
9 
10 // The generic formula
12 
13 // Services
16 
17 #include "boost/multi_array.hpp"
18 
19 #include <iostream>
20 using namespace std;
21 
22 namespace {
23  constexpr float micronsToCm = 1.0e-4;
24  const bool MYDEBUG = false;
25 } // namespace
26 
27 //-----------------------------------------------------------------------------
29 //-----------------------------------------------------------------------------
31  const MagneticField* mag,
32  const TrackerGeometry& geom,
33  const TrackerTopology& ttopo,
34  const SiPixelLorentzAngle* lorentzAngle,
35  const SiPixelGenErrorDBObject* genErrorDBObject,
36  const SiPixelLorentzAngle* lorentzAngleWidth = nullptr)
37  : PixelCPEGenericBase(conf, mag, geom, ttopo, lorentzAngle, genErrorDBObject, lorentzAngleWidth) {
38  if (theVerboseLevel > 0)
39  LogDebug("PixelCPEGeneric") << " constructing a generic algorithm for ideal pixel detector.\n"
40  << " CPEGeneric:: VerboseLevel = " << theVerboseLevel;
41 
42  // Externally settable cuts
43  the_eff_charge_cut_lowX = conf.getParameter<double>("eff_charge_cut_lowX");
44  the_eff_charge_cut_lowY = conf.getParameter<double>("eff_charge_cut_lowY");
45  the_eff_charge_cut_highX = conf.getParameter<double>("eff_charge_cut_highX");
46  the_eff_charge_cut_highY = conf.getParameter<double>("eff_charge_cut_highY");
47  the_size_cutX = conf.getParameter<double>("size_cutX");
48  the_size_cutY = conf.getParameter<double>("size_cutY");
49 
50  // Externally settable flags to inflate errors
51  inflate_errors = conf.getParameter<bool>("inflate_errors");
52  inflate_all_errors_no_trk_angle = conf.getParameter<bool>("inflate_all_errors_no_trk_angle");
53 
54  NoTemplateErrorsWhenNoTrkAngles_ = conf.getParameter<bool>("NoTemplateErrorsWhenNoTrkAngles");
55  IrradiationBiasCorrection_ = conf.getParameter<bool>("IrradiationBiasCorrection");
56  DoCosmics_ = conf.getParameter<bool>("DoCosmics");
57 
58  // Upgrade means phase 2
59  isUpgrade_ = conf.getParameter<bool>("Upgrade");
60 
61  // For cosmics force the use of simple errors
62  if ((DoCosmics_))
64 
66  throw cms::Exception("PixelCPEGeneric::PixelCPEGeneric: ")
67  << "\nERROR: useErrorsFromTemplates_ is set to False in PixelCPEGeneric_cfi.py. "
68  << " In this case it does not make sense to set any of the following to True: "
69  << " truncatePixelCharge_, IrradiationBiasCorrection_, DoCosmics_, LoadTemplatesFromDB_ !!!"
70  << "\n\n";
71  }
72 
73  // Use errors from templates or from GenError
75  if (LoadTemplatesFromDB_) { // From DB
77  throw cms::Exception("InvalidCalibrationLoaded")
78  << "ERROR: GenErrors not filled correctly. Check the sqlite file. Using SiPixelTemplateDBObject version "
79  << (*genErrorDBObject_).version();
80  if (MYDEBUG)
81  cout << "Loaded genErrorDBObject v" << (*genErrorDBObject_).version() << endl;
82  } else { // From file
84  throw cms::Exception("InvalidCalibrationLoaded")
85  << "ERROR: GenErrors not loaded correctly from text file. Reconstruction will fail.";
86  } // if load from DB
87 
88  } else {
89  if (MYDEBUG)
90  cout << " Use simple parametrised errors " << endl;
91  } // if ( useErrorsFromTemplates_ )
92 
93  if (MYDEBUG) {
94  cout << "From PixelCPEGeneric::PixelCPEGeneric(...)" << endl;
95  cout << "(int)useErrorsFromTemplates_ = " << (int)useErrorsFromTemplates_ << endl;
96  cout << "truncatePixelCharge_ = " << (int)truncatePixelCharge_ << endl;
97  cout << "IrradiationBiasCorrection_ = " << (int)IrradiationBiasCorrection_ << endl;
98  cout << "(int)DoCosmics_ = " << (int)DoCosmics_ << endl;
99  cout << "(int)LoadTemplatesFromDB_ = " << (int)LoadTemplatesFromDB_ << endl;
100  }
101 }
102 
103 //-----------------------------------------------------------------------------
107 //-----------------------------------------------------------------------------
108 LocalPoint PixelCPEGeneric::localPosition(DetParam const& theDetParam, ClusterParam& theClusterParamBase) const {
109  ClusterParamGeneric& theClusterParam = static_cast<ClusterParamGeneric&>(theClusterParamBase);
110 
111  //cout<<" in PixelCPEGeneric:localPosition - "<<endl; //dk
112 
113  float chargeWidthX = (theDetParam.lorentzShiftInCmX * theDetParam.widthLAFractionX);
114  float chargeWidthY = (theDetParam.lorentzShiftInCmY * theDetParam.widthLAFractionY);
115  float shiftX = 0.5f * theDetParam.lorentzShiftInCmX;
116  float shiftY = 0.5f * theDetParam.lorentzShiftInCmY;
117 
118  //cout<<" main la width "<<chargeWidthX<<" "<<chargeWidthY<<endl;
119 
120  if (useErrorsFromTemplates_) {
121  float qclus = theClusterParam.theCluster->charge();
122  float locBz = theDetParam.bz;
123  float locBx = theDetParam.bx;
124  //cout << "PixelCPEGeneric::localPosition(...) : locBz = " << locBz << endl;
125 
126  theClusterParam.pixmx = -999; // max pixel charge for truncation of 2-D cluster
127  theClusterParam.sigmay = -999.9; // CPE Generic y-error for multi-pixel cluster
128  theClusterParam.deltay = -999.9; // CPE Generic y-bias for multi-pixel cluster
129  theClusterParam.sigmax = -999.9; // CPE Generic x-error for multi-pixel cluster
130  theClusterParam.deltax = -999.9; // CPE Generic x-bias for multi-pixel cluster
131  theClusterParam.sy1 = -999.9; // CPE Generic y-error for single single-pixel
132  theClusterParam.dy1 = -999.9; // CPE Generic y-bias for single single-pixel cluster
133  theClusterParam.sy2 = -999.9; // CPE Generic y-error for single double-pixel cluster
134  theClusterParam.dy2 = -999.9; // CPE Generic y-bias for single double-pixel cluster
135  theClusterParam.sx1 = -999.9; // CPE Generic x-error for single single-pixel cluster
136  theClusterParam.dx1 = -999.9; // CPE Generic x-bias for single single-pixel cluster
137  theClusterParam.sx2 = -999.9; // CPE Generic x-error for single double-pixel cluster
138  theClusterParam.dx2 = -999.9; // CPE Generic x-bias for single double-pixel cluster
139 
140  SiPixelGenError gtempl(thePixelGenError_);
141  int gtemplID_ = theDetParam.detTemplateId;
142 
143  //int gtemplID0 = genErrorDBObject_->getGenErrorID(theDetParam.theDet->geographicalId().rawId());
144  //if(gtemplID0!=gtemplID_) cout<<" different id "<< gtemplID_<<" "<<gtemplID0<<endl;
145 
146  theClusterParam.qBin_ = gtempl.qbin(gtemplID_,
147  theClusterParam.cotalpha,
148  theClusterParam.cotbeta,
149  locBz,
150  locBx,
151  qclus,
152  IrradiationBiasCorrection_,
153  theClusterParam.pixmx,
154  theClusterParam.sigmay,
155  theClusterParam.deltay,
156  theClusterParam.sigmax,
157  theClusterParam.deltax,
158  theClusterParam.sy1,
159  theClusterParam.dy1,
160  theClusterParam.sy2,
161  theClusterParam.dy2,
162  theClusterParam.sx1,
163  theClusterParam.dx1,
164  theClusterParam.sx2,
165  theClusterParam.dx2);
166 
167  // now use the charge widths stored in the new generic template headers (change to the
168  // incorrect sign convention of the base class)
169  bool useLAWidthFromGenError = false;
170  if (useLAWidthFromGenError) {
171  chargeWidthX = (-micronsToCm * gtempl.lorxwidth());
172  chargeWidthY = (-micronsToCm * gtempl.lorywidth());
173  if (MYDEBUG)
174  cout << " redefine la width (gen-error) " << chargeWidthX << " " << chargeWidthY << endl;
175  }
176  if (MYDEBUG)
177  cout << " GenError: " << gtemplID_ << endl;
178 
179  // These numbers come in microns from the qbin(...) call. Transform them to cm.
180  theClusterParam.deltax = theClusterParam.deltax * micronsToCm;
181  theClusterParam.dx1 = theClusterParam.dx1 * micronsToCm;
182  theClusterParam.dx2 = theClusterParam.dx2 * micronsToCm;
183 
184  theClusterParam.deltay = theClusterParam.deltay * micronsToCm;
185  theClusterParam.dy1 = theClusterParam.dy1 * micronsToCm;
186  theClusterParam.dy2 = theClusterParam.dy2 * micronsToCm;
187 
188  theClusterParam.sigmax = theClusterParam.sigmax * micronsToCm;
189  theClusterParam.sx1 = theClusterParam.sx1 * micronsToCm;
190  theClusterParam.sx2 = theClusterParam.sx2 * micronsToCm;
191 
192  theClusterParam.sigmay = theClusterParam.sigmay * micronsToCm;
193  theClusterParam.sy1 = theClusterParam.sy1 * micronsToCm;
194  theClusterParam.sy2 = theClusterParam.sy2 * micronsToCm;
195 
196  } // if ( useErrorsFromTemplates_ )
197  else {
198  theClusterParam.qBin_ = 0;
199  }
200 
201  int q_f_X;
202  int q_l_X;
203  int q_f_Y;
204  int q_l_Y;
205  collect_edge_charges(theClusterParam, q_f_X, q_l_X, q_f_Y, q_l_Y, useErrorsFromTemplates_ && truncatePixelCharge_);
206 
207  //--- Find the inner widths along X and Y in one shot. We
208  //--- compute the upper right corner of the inner pixels
209  //--- (== lower left corner of upper right pixel) and
210  //--- the lower left corner of the inner pixels
211  //--- (== upper right corner of lower left pixel), and then
212  //--- subtract these two points in the formula.
213 
214  //--- Upper Right corner of Lower Left pixel -- in measurement frame
215  MeasurementPoint meas_URcorn_LLpix(theClusterParam.theCluster->minPixelRow() + 1.0,
216  theClusterParam.theCluster->minPixelCol() + 1.0);
217 
218  //--- Lower Left corner of Upper Right pixel -- in measurement frame
219  MeasurementPoint meas_LLcorn_URpix(theClusterParam.theCluster->maxPixelRow(),
220  theClusterParam.theCluster->maxPixelCol());
221 
222  //--- These two now converted into the local
223  LocalPoint local_URcorn_LLpix;
224  LocalPoint local_LLcorn_URpix;
225 
226  // PixelCPEGeneric can be used with or without track angles
227  // If PixelCPEGeneric is called with track angles, use them to correct for bows/kinks:
228  if (theClusterParam.with_track_angle) {
229  local_URcorn_LLpix = theDetParam.theTopol->localPosition(meas_URcorn_LLpix, theClusterParam.loc_trk_pred);
230  local_LLcorn_URpix = theDetParam.theTopol->localPosition(meas_LLcorn_URpix, theClusterParam.loc_trk_pred);
231  } else {
232  local_URcorn_LLpix = theDetParam.theTopol->localPosition(meas_URcorn_LLpix);
233  local_LLcorn_URpix = theDetParam.theTopol->localPosition(meas_LLcorn_URpix);
234  }
235 
236 #ifdef EDM_ML_DEBUG
237  if (theVerboseLevel > 20) {
238  cout << "\n\t >>> theClusterParam.theCluster->x = " << theClusterParam.theCluster->x()
239  << "\n\t >>> theClusterParam.theCluster->y = " << theClusterParam.theCluster->y()
240  << "\n\t >>> cluster: minRow = " << theClusterParam.theCluster->minPixelRow()
241  << " minCol = " << theClusterParam.theCluster->minPixelCol()
242  << "\n\t >>> cluster: maxRow = " << theClusterParam.theCluster->maxPixelRow()
243  << " maxCol = " << theClusterParam.theCluster->maxPixelCol()
244  << "\n\t >>> meas: inner lower left = " << meas_URcorn_LLpix.x() << "," << meas_URcorn_LLpix.y()
245  << "\n\t >>> meas: inner upper right = " << meas_LLcorn_URpix.x() << "," << meas_LLcorn_URpix.y() << endl;
246  }
247 #endif
248 
249  //--- &&& Note that the cuts below should not be hardcoded (like in Orca and
250  //--- &&& CPEFromDetPosition/PixelCPEInitial), but rather be
251  //--- &&& externally settable (but tracked) parameters.
252 
253  //--- Position, including the half lorentz shift
254 
255 #ifdef EDM_ML_DEBUG
256  if (theVerboseLevel > 20)
257  cout << "\t >>> Generic:: processing X" << endl;
258 #endif
259 
261  theClusterParam.theCluster->sizeX(),
262  q_f_X,
263  q_l_X,
264  local_URcorn_LLpix.x(),
265  local_LLcorn_URpix.x(),
266  chargeWidthX, // lorentz shift in cm
267  theDetParam.theThickness,
268  theClusterParam.cotalpha,
269  theDetParam.thePitchX,
270  theDetParam.theRecTopol->isItBigPixelInX(theClusterParam.theCluster->minPixelRow()),
271  theDetParam.theRecTopol->isItBigPixelInX(theClusterParam.theCluster->maxPixelRow()),
272  the_eff_charge_cut_lowX,
273  the_eff_charge_cut_highX,
274  the_size_cutX); // cut for eff charge width &&&
275 
276  // apply the lorentz offset correction
277  xPos = xPos + shiftX;
278 
279 #ifdef EDM_ML_DEBUG
280  if (theVerboseLevel > 20)
281  cout << "\t >>> Generic:: processing Y" << endl;
282 #endif
283 
285  theClusterParam.theCluster->sizeY(),
286  q_f_Y,
287  q_l_Y,
288  local_URcorn_LLpix.y(),
289  local_LLcorn_URpix.y(),
290  chargeWidthY, // lorentz shift in cm
291  theDetParam.theThickness,
292  theClusterParam.cotbeta,
293  theDetParam.thePitchY,
294  theDetParam.theRecTopol->isItBigPixelInY(theClusterParam.theCluster->minPixelCol()),
295  theDetParam.theRecTopol->isItBigPixelInY(theClusterParam.theCluster->maxPixelCol()),
296  the_eff_charge_cut_lowY,
297  the_eff_charge_cut_highY,
298  the_size_cutY); // cut for eff charge width &&&
299 
300  // apply the lorentz offset correction
301  yPos = yPos + shiftY;
302 
303  // Apply irradiation corrections
304  if (IrradiationBiasCorrection_) {
305  if (theClusterParam.theCluster->sizeX() == 1) { // size=1
306  // ggiurgiu@jhu.edu, 02/03/09 : for size = 1, the Lorentz shift is already accounted by the irradiation correction
307  //float tmp1 = (0.5 * theDetParam.lorentzShiftInCmX);
308  //cout << "Apply correction correction_dx1 = " << theClusterParam.dx1 << " to xPos = " << xPos;
309  xPos = xPos - (0.5f * theDetParam.lorentzShiftInCmX);
310  // Find if pixel is double (big).
311  bool bigInX = theDetParam.theRecTopol->isItBigPixelInX(theClusterParam.theCluster->maxPixelRow());
312  if (!bigInX)
313  xPos -= theClusterParam.dx1;
314  else
315  xPos -= theClusterParam.dx2;
316  //cout<<" to "<<xPos<<" "<<(tmp1+theClusterParam.dx1)<<endl;
317  } else { // size>1
318  //cout << "Apply correction correction_deltax = " << theClusterParam.deltax << " to xPos = " << xPos;
319  xPos -= theClusterParam.deltax;
320  //cout<<" to "<<xPos<<endl;
321  }
322 
323  if (theClusterParam.theCluster->sizeY() == 1) {
324  // ggiurgiu@jhu.edu, 02/03/09 : for size = 1, the Lorentz shift is already accounted by the irradiation correction
325  yPos = yPos - (0.5f * theDetParam.lorentzShiftInCmY);
326 
327  // Find if pixel is double (big).
328  bool bigInY = theDetParam.theRecTopol->isItBigPixelInY(theClusterParam.theCluster->maxPixelCol());
329  if (!bigInY)
330  yPos -= theClusterParam.dy1;
331  else
332  yPos -= theClusterParam.dy2;
333 
334  } else {
335  //cout << "Apply correction correction_deltay = " << theClusterParam.deltay << " to yPos = " << yPos << endl;
336  yPos -= theClusterParam.deltay;
337  }
338 
339  } // if ( IrradiationBiasCorrection_ )
340 
341  //cout<<" in PixelCPEGeneric:localPosition - pos = "<<xPos<<" "<<yPos<<endl; //dk
342 
343  //--- Now put the two together
344  LocalPoint pos_in_local(xPos, yPos);
345  return pos_in_local;
346 }
347 
348 //============== INFLATED ERROR AND ERRORS FROM DB BELOW ================
349 
350 //-------------------------------------------------------------------------
351 // Hit error in the local frame
352 //-------------------------------------------------------------------------
353 LocalError PixelCPEGeneric::localError(DetParam const& theDetParam, ClusterParam& theClusterParamBase) const {
354  ClusterParamGeneric& theClusterParam = static_cast<ClusterParamGeneric&>(theClusterParamBase);
355 
356  // local variables
357  float xerr, yerr;
358  bool edgex, edgey, bigInX, bigInY;
359  int maxPixelCol, maxPixelRow, minPixelCol, minPixelRow;
360  uint sizex, sizey;
361 
362  initializeLocalErrorVariables(xerr,
363  yerr,
364  edgex,
365  edgey,
366  bigInX,
367  bigInY,
368  maxPixelCol,
369  maxPixelRow,
370  minPixelCol,
371  minPixelRow,
372  sizex,
373  sizey,
374  theDetParam,
375  theClusterParam);
376 
377  bool useTempErrors =
378  useErrorsFromTemplates_ && (!NoTemplateErrorsWhenNoTrkAngles_ || theClusterParam.with_track_angle);
379 
380  if (int(sizex) != (maxPixelRow - minPixelRow + 1))
381  LogDebug("PixelCPEGeneric") << " wrong x" << endl;
382  if (int(sizey) != (maxPixelCol - minPixelCol + 1))
383  LogDebug("PixelCPEGeneric") << " wrong y" << endl;
384 
385  LogDebug("PixelCPEGeneric") << " edge clus " << xerr << " " << yerr << endl; //dk
386  if (bigInX || bigInY)
387  LogDebug("PixelCPEGeneric") << " big " << bigInX << " " << bigInY << endl;
388  if (edgex || edgey)
389  LogDebug("PixelCPEGeneric") << " edge " << edgex << " " << edgey << endl;
390  LogDebug("PixelCPEGeneric") << " before if " << useErrorsFromTemplates_ << " " << theClusterParam.qBin_ << endl;
391  if (theClusterParam.qBin_ == 0)
392  LogDebug("PixelCPEGeneric") << " qbin 0! " << edgex << " " << edgey << " " << bigInX << " " << bigInY << " "
393  << sizex << " " << sizey << endl;
394 
395  // from PixelCPEGenericBase
396  setXYErrors(xerr, yerr, edgex, edgey, sizex, sizey, bigInX, bigInY, useTempErrors, theDetParam, theClusterParam);
397 
398  if (!useTempErrors) {
399  LogDebug("PixelCPEGeneric") << "Track angles are not known.\n"
400  << "Default angle estimation which assumes track from PV (0,0,0) does not work.";
401  }
402 
403  if (!useTempErrors && inflate_errors) {
404  int n_bigx = 0;
405  int n_bigy = 0;
406 
407  for (int irow = 0; irow < 7; ++irow) {
408  if (theDetParam.theRecTopol->isItBigPixelInX(irow + minPixelRow))
409  ++n_bigx;
410  }
411 
412  for (int icol = 0; icol < 21; ++icol) {
413  if (theDetParam.theRecTopol->isItBigPixelInY(icol + minPixelCol))
414  ++n_bigy;
415  }
416 
417  xerr = (float)(sizex + n_bigx) * theDetParam.thePitchX / std::sqrt(12.0f);
418  yerr = (float)(sizey + n_bigy) * theDetParam.thePitchY / std::sqrt(12.0f);
419  }
420 
421 #ifdef EDM_ML_DEBUG
422  if (!(xerr > 0.0))
423  throw cms::Exception("PixelCPEGeneric::localError") << "\nERROR: Negative pixel error xerr = " << xerr << "\n\n";
424 
425  if (!(yerr > 0.0))
426  throw cms::Exception("PixelCPEGeneric::localError") << "\nERROR: Negative pixel error yerr = " << yerr << "\n\n";
427 #endif
428 
429  LogDebug("PixelCPEGeneric") << " errors " << xerr << " " << yerr << endl; //dk
430  if (theClusterParam.qBin_ == 0)
431  LogDebug("PixelCPEGeneric") << " qbin 0 " << xerr << " " << yerr << endl;
432 
433  auto xerr_sq = xerr * xerr;
434  auto yerr_sq = yerr * yerr;
435 
436  return LocalError(xerr_sq, 0, yerr_sq);
437 }
438 
441  desc.add<double>("eff_charge_cut_highX", 1.0);
442  desc.add<double>("eff_charge_cut_highY", 1.0);
443  desc.add<double>("eff_charge_cut_lowX", 0.0);
444  desc.add<double>("eff_charge_cut_lowY", 0.0);
445  desc.add<double>("size_cutX", 3.0);
446  desc.add<double>("size_cutY", 3.0);
447  desc.add<double>("EdgeClusterErrorX", 50.0);
448  desc.add<double>("EdgeClusterErrorY", 85.0);
449  desc.add<bool>("inflate_errors", false);
450  desc.add<bool>("inflate_all_errors_no_trk_angle", false);
451  desc.add<bool>("NoTemplateErrorsWhenNoTrkAngles", false);
452  desc.add<bool>("UseErrorsFromTemplates", true);
453  desc.add<bool>("TruncatePixelCharge", true);
454  desc.add<bool>("IrradiationBiasCorrection", false);
455  desc.add<bool>("DoCosmics", false);
456  desc.add<bool>("Upgrade", false);
457  desc.add<bool>("SmallPitch", false);
458 }
Point2DBase
Definition: Point2DBase.h:9
PixelCPEGeneric::localError
LocalError localError(DetParam const &theDetParam, ClusterParam &theClusterParam) const override
Definition: PixelCPEGeneric.cc:353
SiPixelCluster::minPixelCol
int minPixelCol() const
Definition: SiPixelCluster.h:152
PixelCPEBase::ClusterParam
Definition: PixelCPEBase.h:69
PixelCPEBase::DetParam::bz
float bz
Definition: PixelCPEBase.h:58
PixelCPEGenericBase::useErrorsFromTemplates_
bool useErrorsFromTemplates_
Definition: PixelCPEGenericBase.h:86
PixelCPEBase::DetParam::bx
float bx
Definition: PixelCPEBase.h:59
PixelCPEBase::DetParam::theTopol
const PixelTopology * theTopol
Definition: PixelCPEBase.h:49
PixelCPEBase::DetParam::lorentzShiftInCmY
float lorentzShiftInCmY
Definition: PixelCPEBase.h:64
PixelCPEBase::DetParam::thePitchX
float thePitchX
Definition: PixelCPEBase.h:55
PixelCPEBase::DetParam::widthLAFractionX
float widthLAFractionX
Definition: PixelCPEBase.h:61
PixelCPEGenericBase::ClusterParamGeneric::sy2
float sy2
Definition: PixelCPEGenericBase.h:22
MessageLogger.h
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
theVerboseLevel
static const int theVerboseLevel
Definition: SiPixelTemplateReco.cc:68
RectangularPixelTopology.h
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
PixelCPEBase::DetParam::theRecTopol
const RectangularPixelTopology * theRecTopol
Definition: PixelCPEBase.h:50
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
PixelCPEBase::DetParam::theThickness
float theThickness
Definition: PixelCPEBase.h:54
TrackerTopology
Definition: TrackerTopology.h:16
PixelCPEBase::genErrorDBObject_
const SiPixelGenErrorDBObject * genErrorDBObject_
Definition: PixelCPEBase.h:235
PixelCPEGenericBase::ClusterParamGeneric::sx1
float sx1
Definition: PixelCPEGenericBase.h:23
SiPixelCluster::y
float y() const
Definition: SiPixelCluster.h:125
gather_cfg.cout
cout
Definition: gather_cfg.py:144
SiPixelGenError::lorxwidth
float lorxwidth()
signed lorentz x-width (microns)
Definition: SiPixelGenError.h:187
SiPixelCluster::maxPixelCol
int maxPixelCol() const
Definition: SiPixelCluster.h:153
PixelCPEBase::DetParam::widthLAFractionY
float widthLAFractionY
Definition: PixelCPEBase.h:62
PixelCPEGenericBase::ClusterParamGeneric::pixmx
int pixmx
Definition: PixelCPEGenericBase.h:16
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
PixelCPEGenericBase::ClusterParamGeneric::sy1
float sy1
Definition: PixelCPEGenericBase.h:21
PixelCPEBase::DetParam::thePitchY
float thePitchY
Definition: PixelCPEBase.h:56
PixelCPEGenericBase::fillPSetDescription
static void fillPSetDescription(edm::ParameterSetDescription &desc)
Definition: PixelCPEGenericBase.cc:217
SiPixelCluster::maxPixelRow
int maxPixelRow() const
Definition: SiPixelCluster.h:151
SiPixelGenError::qbin
int qbin(int id, float cotalpha, float cotbeta, float locBz, float locBx, float qclus, bool irradiationCorrections, int &pixmx, float &sigmay, float &deltay, float &sigmax, float &deltax, float &sy1, float &dy1, float &sy2, float &dy2, float &sx1, float &dx1, float &sx2, float &dx2)
Definition: SiPixelGenError.cc:538
Topology::localPosition
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
PixelCPEGeneric::DoCosmics_
bool DoCosmics_
Definition: PixelCPEGeneric.h:89
parallelization.uint
uint
Definition: parallelization.py:124
PixelCPEGenericBase::ClusterParamGeneric::sigmax
float sigmax
Definition: PixelCPEGenericBase.h:20
PixelCPEGeneric::localPosition
LocalPoint localPosition(DetParam const &theDetParam, ClusterParam &theClusterParam) const override
Definition: PixelCPEGeneric.cc:108
PixelCPEGenericBase::ClusterParamGeneric
Definition: PixelCPEGenericBase.h:9
PixelCPEBase::ClusterParam::theCluster
const SiPixelCluster * theCluster
Definition: PixelCPEBase.h:75
PixelCPEGeneric::thePixelGenError_
std::vector< SiPixelGenErrorStore > thePixelGenError_
Definition: PixelCPEGeneric.h:95
RectangularPixelTopology::isItBigPixelInY
bool isItBigPixelInY(const int iybin) const override
Definition: RectangularPixelTopology.h:120
SiPixelCluster::sizeY
int sizeY() const
Definition: SiPixelCluster.h:140
PixelCPEGeneric::the_size_cutX
float the_size_cutX
Definition: PixelCPEGeneric.h:83
SiPixelTemplate.h
PixelCPEGeneric::the_eff_charge_cut_lowX
float the_eff_charge_cut_lowX
Definition: PixelCPEGeneric.h:79
RectangularPixelTopology::isItBigPixelInX
bool isItBigPixelInX(const int ixbin) const override
Definition: RectangularPixelTopology.h:116
PixelCPEGeneric::IrradiationBiasCorrection_
bool IrradiationBiasCorrection_
Definition: PixelCPEGeneric.h:90
PixelCPEGeneric::the_size_cutY
float the_size_cutY
Definition: PixelCPEGeneric.h:84
PixelCPEGeneric::NoTemplateErrorsWhenNoTrkAngles_
bool NoTemplateErrorsWhenNoTrkAngles_
Definition: PixelCPEGeneric.h:92
SiPixelCluster::minPixelRow
int minPixelRow() const
Definition: SiPixelCluster.h:150
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
PixelCPEGeneric::the_eff_charge_cut_lowY
float the_eff_charge_cut_lowY
Definition: PixelCPEGeneric.h:80
SiPixelLorentzAngle
Definition: SiPixelLorentzAngle.h:11
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
PixelCPEGeneric::PixelCPEGeneric
PixelCPEGeneric(edm::ParameterSet const &conf, const MagneticField *, const TrackerGeometry &, const TrackerTopology &, const SiPixelLorentzAngle *, const SiPixelGenErrorDBObject *, const SiPixelLorentzAngle *)
The constructor.
Definition: PixelCPEGeneric.cc:30
Point3DBase< float, LocalTag >
SiPixelUtils.h
PixelCPEGeneric::the_eff_charge_cut_highX
float the_eff_charge_cut_highX
Definition: PixelCPEGeneric.h:81
PixelCPEGenericBase::ClusterParamGeneric::sx2
float sx2
Definition: PixelCPEGenericBase.h:24
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
SiPixelGenError
Definition: SiPixelGenError.h:113
edm::ParameterSet
Definition: ParameterSet.h:47
SiPixelCluster::x
float x() const
Definition: SiPixelCluster.h:117
PixelCPEGenericBase::truncatePixelCharge_
const bool truncatePixelCharge_
Definition: PixelCPEGenericBase.h:87
LocalError
Definition: LocalError.h:12
PV2DBase::y
T y() const
Definition: PV2DBase.h:44
PV2DBase::x
T x() const
Definition: PV2DBase.h:43
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
createfilelist.int
int
Definition: createfilelist.py:10
PixelCPEGeneric::the_eff_charge_cut_highY
float the_eff_charge_cut_highY
Definition: PixelCPEGeneric.h:82
PixelCPEBase::theVerboseLevel
int theVerboseLevel
Definition: PixelCPEBase.h:225
MagneticField.h
PixelCPEGenericBase
Definition: PixelCPEGenericBase.h:7
PixelCPEBase::LoadTemplatesFromDB_
bool LoadTemplatesFromDB_
Definition: PixelCPEBase.h:244
PixelCPEGeneric.h
SiPixelGenError::pushfile
static bool pushfile(int filenum, std::vector< SiPixelGenErrorStore > &pixelTemp, std::string dir="")
Definition: SiPixelGenError.cc:55
PixelCPEGenericBase::ClusterParamGeneric::dy2
float dy2
Definition: PixelCPEGenericBase.h:30
PixelCPEBase::DetParam::detTemplateId
int detTemplateId
Definition: PixelCPEBase.h:65
PixelCPEBase::DetParam::lorentzShiftInCmX
float lorentzShiftInCmX
Definition: PixelCPEBase.h:63
HLTSiStripMonitoring_cff.inflate_errors
inflate_errors
Definition: HLTSiStripMonitoring_cff.py:38
mag
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Definition: Basic3DVectorLD.h:127
PixelCPEBase::DetParam
Definition: PixelCPEBase.h:45
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
std
Definition: JetResolutionObject.h:76
DetId.h
PixelCPEGenericBase::ClusterParamGeneric::sigmay
float sigmay
Definition: PixelCPEGenericBase.h:19
SiPixelGenError::lorywidth
float lorywidth()
signed lorentz y-width (microns)
Definition: SiPixelGenError.h:186
Exception
Definition: hltDiff.cc:245
PixelCPEGenericBase::ClusterParamGeneric::deltay
float deltay
Definition: PixelCPEGenericBase.h:27
PixelCPEGenericBase::ClusterParamGeneric::dy1
float dy1
Definition: PixelCPEGenericBase.h:29
PixelCPEGeneric::fillPSetDescription
static void fillPSetDescription(edm::ParameterSetDescription &desc)
Definition: PixelCPEGeneric.cc:439
PixelGeomDetUnit.h
PixelCPEBase::ClusterParam::loc_trk_pred
Topology::LocalTrackPred loc_trk_pred
Definition: PixelCPEBase.h:89
SiPixelCluster::charge
int charge() const
Definition: SiPixelCluster.h:142
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
PixelCPEGenericBase::ClusterParamGeneric::dx1
float dx1
Definition: PixelCPEGenericBase.h:31
PixelCPEBase::ClusterParam::cotbeta
float cotbeta
Definition: PixelCPEBase.h:79
SiPixelGenErrorDBObject
Definition: SiPixelGenErrorDBObject.h:16
PixelCPEBase::ClusterParam::cotalpha
float cotalpha
Definition: PixelCPEBase.h:78
SiPixelCluster::sizeX
int sizeX() const
Definition: SiPixelCluster.h:137
MagneticField
Definition: MagneticField.h:19
PixelCPEGeneric::inflate_errors
bool inflate_errors
Definition: PixelCPEGeneric.h:86
PixelCPEGeneric::isUpgrade_
bool isUpgrade_
Definition: PixelCPEGeneric.h:91
SiPixelUtils::generic_position_formula
float generic_position_formula(int size, int Q_f, int Q_l, float upper_edge_first_pix, float lower_edge_last_pix, float lorentz_shift, float theThickness, float cot_angle, float pitch, bool first_is_big, bool last_is_big, float eff_charge_cut_low, float eff_charge_cut_high, float size_cut)
Definition: SiPixelUtils.cc:16
PixelCPEBase::ClusterParam::with_track_angle
bool with_track_angle
Definition: PixelCPEBase.h:102
PixelCPEGeneric::inflate_all_errors_no_trk_angle
bool inflate_all_errors_no_trk_angle
Definition: PixelCPEGeneric.h:87
PixelCPEGenericBase::ClusterParamGeneric::dx2
float dx2
Definition: PixelCPEGenericBase.h:32
TrackerGeometry
Definition: TrackerGeometry.h:14
PixelCPEBase::ClusterParam::qBin_
int qBin_
Definition: PixelCPEBase.h:95
PixelCPEGenericBase::ClusterParamGeneric::deltax
float deltax
Definition: PixelCPEGenericBase.h:28