CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
PixelCPEGeneric Class Referencefinal

#include <PixelCPEGeneric.h>

Inheritance diagram for PixelCPEGeneric:
PixelCPEBase PixelClusterParameterEstimator

Classes

struct  ClusterParamGeneric
 

Public Member Functions

 PixelCPEGeneric (edm::ParameterSet const &conf, const MagneticField *, const TrackerGeometry &, const TrackerTopology &, const SiPixelLorentzAngle *, const SiPixelGenErrorDBObject *, const SiPixelLorentzAngle *)
 The constructor. More...
 
 ~PixelCPEGeneric () override
 
- Public Member Functions inherited from PixelCPEBase
ReturnType getParameters (const SiPixelCluster &cl, const GeomDetUnit &det) const override
 
ReturnType getParameters (const SiPixelCluster &cl, const GeomDetUnit &det, const LocalTrajectoryParameters &ltp) const override
 
 PixelCPEBase (edm::ParameterSet const &conf, const MagneticField *mag, const TrackerGeometry &geom, const TrackerTopology &ttopo, const SiPixelLorentzAngle *lorentzAngle, const SiPixelGenErrorDBObject *genErrorDBObject, const SiPixelTemplateDBObject *templateDBobject, const SiPixelLorentzAngle *lorentzAngleWidth, int flag=0)
 
- Public Member Functions inherited from PixelClusterParameterEstimator
unsigned int clusterProbComputationFlag () const
 
virtual ReturnType getParameters (const SiPixelCluster &cl, const GeomDetUnit &det, const TrajectoryStateOnSurface &tsos) const
 
virtual VLocalValues localParametersV (const SiPixelCluster &cluster, const GeomDetUnit &gd) const
 
virtual VLocalValues localParametersV (const SiPixelCluster &cluster, const GeomDetUnit &gd, TrajectoryStateOnSurface &tsos) const
 
 PixelClusterParameterEstimator ()
 
virtual ~PixelClusterParameterEstimator ()
 

Static Public Member Functions

static void fillPSetDescription (edm::ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from PixelCPEBase
static void fillPSetDescription (edm::ParameterSetDescription &desc)
 

Private Member Functions

void collect_edge_charges (ClusterParam &theClusterParam, int &Q_f_X, int &Q_l_X, int &Q_f_Y, int &Q_l_Y) const
 
std::unique_ptr< ClusterParamcreateClusterParam (const SiPixelCluster &cl) const override
 
float err2X (bool &, int &) const
 
float err2Y (bool &, int &) const
 
LocalError localError (DetParam const &theDetParam, ClusterParam &theClusterParam) const override
 
LocalPoint localPosition (DetParam const &theDetParam, ClusterParam &theClusterParam) const override
 

Private Attributes

bool DoCosmics_
 
float EdgeClusterErrorX_
 
float EdgeClusterErrorY_
 
bool inflate_all_errors_no_trk_angle
 
bool inflate_errors
 
bool IrradiationBiasCorrection_
 
bool isUpgrade_
 
bool NoTemplateErrorsWhenNoTrkAngles_
 
float the_eff_charge_cut_highX
 
float the_eff_charge_cut_highY
 
float the_eff_charge_cut_lowX
 
float the_eff_charge_cut_lowY
 
float the_size_cutX
 
float the_size_cutY
 
std::vector< SiPixelGenErrorStorethePixelGenError_
 
bool TruncatePixelCharge_
 
bool UseErrorsFromTemplates_
 
std::vector< float > xerr_barrel_l1_
 
float xerr_barrel_l1_def_
 
std::vector< float > xerr_barrel_ln_
 
float xerr_barrel_ln_def_
 
std::vector< float > xerr_endcap_
 
float xerr_endcap_def_
 
std::vector< float > yerr_barrel_l1_
 
float yerr_barrel_l1_def_
 
std::vector< float > yerr_barrel_ln_
 
float yerr_barrel_ln_def_
 
std::vector< float > yerr_endcap_
 
float yerr_endcap_def_
 

Additional Inherited Members

- Public Types inherited from PixelClusterParameterEstimator
typedef std::pair< LocalPoint, LocalErrorLocalValues
 
using ReturnType = std::tuple< LocalPoint, LocalError, SiPixelRecHitQuality::QualWordType >
 
typedef std::vector< LocalValuesVLocalValues
 
- Protected Types inherited from PixelCPEBase
using DetParams = std::vector< DetParam >
 
typedef GloballyPositioned< double > Frame
 
- Protected Member Functions inherited from PixelCPEBase
void computeAnglesFromDetPosition (DetParam const &theDetParam, ClusterParam &theClusterParam) const
 
void computeAnglesFromTrajectory (DetParam const &theDetParam, ClusterParam &theClusterParam, const LocalTrajectoryParameters &ltp) const
 
void computeLorentzShifts (DetParam &) const
 
DetParam const & detParam (const GeomDetUnit &det) const
 
LocalVector driftDirection (DetParam &theDetParam, GlobalVector bfield) const
 
LocalVector driftDirection (DetParam &theDetParam, LocalVector bfield) const
 
void setTheClu (DetParam const &, ClusterParam &theClusterParam) const
 
- Protected Attributes inherited from PixelCPEBase
bool alpha2Order
 
bool DoLorentz_
 
const SiPixelGenErrorDBObjectgenErrorDBObject_
 
const TrackerGeometrygeom_
 
float lAOffset_
 
float lAWidthBPix_
 
float lAWidthFPix_
 
bool LoadTemplatesFromDB_
 
const SiPixelLorentzAnglelorentzAngle_
 
const SiPixelLorentzAnglelorentzAngleWidth_
 
DetParams m_DetParams = DetParams(1440)
 
const MagneticFieldmagfield_
 
const SiPixelTemplateDBObjecttemplateDBobject_
 
int theFlag_
 
int theVerboseLevel
 
const TrackerTopologyttopo_
 
bool useLAOffsetFromConfig_
 
bool useLAWidthFromConfig_
 
bool useLAWidthFromDB_
 
- Protected Attributes inherited from PixelClusterParameterEstimator
unsigned int clusterProbComputationFlag_
 

Detailed Description

Definition at line 52 of file PixelCPEGeneric.h.

Constructor & Destructor Documentation

◆ PixelCPEGeneric()

PixelCPEGeneric::PixelCPEGeneric ( edm::ParameterSet const &  conf,
const MagneticField mag,
const TrackerGeometry geom,
const TrackerTopology ttopo,
const SiPixelLorentzAngle lorentzAngle,
const SiPixelGenErrorDBObject genErrorDBObject,
const SiPixelLorentzAngle lorentzAngleWidth = nullptr 
)

The constructor.

Definition at line 30 of file PixelCPEGeneric.cc.

37  : PixelCPEBase(conf, mag, geom, ttopo, lorentzAngle, genErrorDBObject, nullptr, lorentzAngleWidth, 0) {
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  EdgeClusterErrorX_ = conf.getParameter<double>("EdgeClusterErrorX");
51  EdgeClusterErrorY_ = conf.getParameter<double>("EdgeClusterErrorY");
52 
53  // Externally settable flags to inflate errors
54  inflate_errors = conf.getParameter<bool>("inflate_errors");
55  inflate_all_errors_no_trk_angle = conf.getParameter<bool>("inflate_all_errors_no_trk_angle");
56 
57  NoTemplateErrorsWhenNoTrkAngles_ = conf.getParameter<bool>("NoTemplateErrorsWhenNoTrkAngles");
58  UseErrorsFromTemplates_ = conf.getParameter<bool>("UseErrorsFromTemplates");
59  TruncatePixelCharge_ = conf.getParameter<bool>("TruncatePixelCharge");
60  IrradiationBiasCorrection_ = conf.getParameter<bool>("IrradiationBiasCorrection");
61  DoCosmics_ = conf.getParameter<bool>("DoCosmics");
62 
63  // Upgrade means phase 2
64  isUpgrade_ = conf.getParameter<bool>("Upgrade");
65 
66  // For cosmics force the use of simple errors
67  if ((DoCosmics_))
69 
71  throw cms::Exception("PixelCPEGeneric::PixelCPEGeneric: ")
72  << "\nERROR: UseErrorsFromTemplates_ is set to False in PixelCPEGeneric_cfi.py. "
73  << " In this case it does not make sense to set any of the following to True: "
74  << " TruncatePixelCharge_, IrradiationBiasCorrection_, DoCosmics_, LoadTemplatesFromDB_ !!!"
75  << "\n\n";
76  }
77 
78  // Use errors from templates or from GenError
80  if (LoadTemplatesFromDB_) { // From DB
82  throw cms::Exception("InvalidCalibrationLoaded")
83  << "ERROR: GenErrors not filled correctly. Check the sqlite file. Using SiPixelTemplateDBObject version "
84  << (*genErrorDBObject_).version();
85  if (MYDEBUG)
86  cout << "Loaded genErrorDBObject v" << (*genErrorDBObject_).version() << endl;
87  } else { // From file
89  throw cms::Exception("InvalidCalibrationLoaded")
90  << "ERROR: GenErrors not loaded correctly from text file. Reconstruction will fail.";
91  } // if load from DB
92 
93  } else {
94  if (MYDEBUG)
95  cout << " Use simple parametrised errors " << endl;
96  } // if ( UseErrorsFromTemplates_ )
97 
98  // Rechit errors in case other, more correct, errors are not vailable
99  // This are constants. Maybe there is a more efficienct way to store them.
100  if (!isUpgrade_) { // normal case
101  xerr_barrel_l1_ = {0.00115, 0.00120, 0.00088};
102  xerr_barrel_l1_def_ = 0.01030;
103  yerr_barrel_l1_ = {0.00375, 0.00230, 0.00250, 0.00250, 0.00230, 0.00230, 0.00210, 0.00210, 0.00240};
104  yerr_barrel_l1_def_ = 0.00210;
105  xerr_barrel_ln_ = {0.00115, 0.00120, 0.00088};
106  xerr_barrel_ln_def_ = 0.01030;
107  yerr_barrel_ln_ = {0.00375, 0.00230, 0.00250, 0.00250, 0.00230, 0.00230, 0.00210, 0.00210, 0.00240};
108  yerr_barrel_ln_def_ = 0.00210;
109  xerr_endcap_ = {0.0020, 0.0020};
110  xerr_endcap_def_ = 0.0020;
111  yerr_endcap_ = {0.00210};
112  yerr_endcap_def_ = 0.00075;
113  } else { // isUpgrade=true
114  xerr_barrel_ln_ = {0.00025, 0.00030, 0.00035, 0.00035};
115  xerr_barrel_ln_def_ = 0.00035;
116  yerr_barrel_ln_ = {0.00210, 0.00115, 0.00125};
117  yerr_barrel_ln_def_ = 0.00125;
118  xerr_endcap_ = {0.00072, 0.00025};
119  xerr_endcap_def_ = 0.00060;
120  yerr_endcap_ = {0.00289, 0.00025};
121  yerr_endcap_def_ = 0.00180;
122 
123  if (conf.getParameter<bool>("SmallPitch")) {
124  xerr_barrel_l1_ = {0.00104, 0.000691, 0.00122};
125  xerr_barrel_l1_def_ = 0.00321;
126  yerr_barrel_l1_ = {0.00199, 0.00136, 0.0015, 0.00153, 0.00152, 0.00171, 0.00154, 0.00157, 0.00154};
127  yerr_barrel_l1_def_ = 0.00164;
128  } else {
129  xerr_barrel_l1_ = {0.00025, 0.00030, 0.00035, 0.00035};
130  xerr_barrel_l1_def_ = 0.00035;
131  yerr_barrel_l1_ = {0.00210, 0.00115, 0.00125};
132  yerr_barrel_l1_def_ = 0.00125;
133  }
134  } // if isUpgrade
135 
136  if (MYDEBUG) {
137  cout << "From PixelCPEGeneric::PixelCPEGeneric(...)" << endl;
138  cout << "(int)UseErrorsFromTemplates_ = " << (int)UseErrorsFromTemplates_ << endl;
139  cout << "TruncatePixelCharge_ = " << (int)TruncatePixelCharge_ << endl;
140  cout << "IrradiationBiasCorrection_ = " << (int)IrradiationBiasCorrection_ << endl;
141  cout << "(int)DoCosmics_ = " << (int)DoCosmics_ << endl;
142  cout << "(int)LoadTemplatesFromDB_ = " << (int)LoadTemplatesFromDB_ << endl;
143  }
144 }

References gather_cfg::cout, DoCosmics_, EdgeClusterErrorX_, EdgeClusterErrorY_, Exception, PixelCPEBase::genErrorDBObject_, edm::ParameterSet::getParameter(), inflate_all_errors_no_trk_angle, inflate_errors, createfilelist::int, IrradiationBiasCorrection_, isUpgrade_, PixelCPEBase::LoadTemplatesFromDB_, LogDebug, NoTemplateErrorsWhenNoTrkAngles_, SiPixelGenError::pushfile(), the_eff_charge_cut_highX, the_eff_charge_cut_highY, the_eff_charge_cut_lowX, the_eff_charge_cut_lowY, the_size_cutX, the_size_cutY, thePixelGenError_, PixelCPEBase::theVerboseLevel, TruncatePixelCharge_, UseErrorsFromTemplates_, xerr_barrel_l1_, xerr_barrel_l1_def_, xerr_barrel_ln_, xerr_barrel_ln_def_, xerr_endcap_, xerr_endcap_def_, yerr_barrel_l1_, yerr_barrel_l1_def_, yerr_barrel_ln_, yerr_barrel_ln_def_, yerr_endcap_, and yerr_endcap_def_.

◆ ~PixelCPEGeneric()

PixelCPEGeneric::~PixelCPEGeneric ( )
inlineoverride

Definition at line 87 of file PixelCPEGeneric.h.

87 { ; }

Member Function Documentation

◆ collect_edge_charges()

void PixelCPEGeneric::collect_edge_charges ( ClusterParam theClusterParamBase,
int &  Q_f_X,
int &  Q_l_X,
int &  Q_f_Y,
int &  Q_l_Y 
) const
private

Collect the edge charges in x and y, in a single pass over the pixel vector. Calculate charge in the first and last pixel projected in x and y and the inner cluster charge, projected in x and y.

Parameters
theClusterParamBaseinput, the cluster
Q_f_Xoutput, Q first in X
Q_l_Xoutput, Q last in X
Q_f_Youtput, Q first in Y
Q_l_Youtput, Q last in Y

Definition at line 400 of file PixelCPEGeneric.cc.

405  {
406  ClusterParamGeneric& theClusterParam = static_cast<ClusterParamGeneric&>(theClusterParamBase);
407 
408  // Initialize return variables.
409  Q_f_X = Q_l_X = 0.0;
410  Q_f_Y = Q_l_Y = 0.0;
411 
412  // Obtain boundaries in index units
413  int xmin = theClusterParam.theCluster->minPixelRow();
414  int xmax = theClusterParam.theCluster->maxPixelRow();
415  int ymin = theClusterParam.theCluster->minPixelCol();
416  int ymax = theClusterParam.theCluster->maxPixelCol();
417 
418  // Iterate over the pixels.
419  int isize = theClusterParam.theCluster->size();
420  for (int i = 0; i != isize; ++i) {
421  auto const& pixel = theClusterParam.theCluster->pixel(i);
422  // ggiurgiu@fnal.gov: add pixel charge truncation
423  int pix_adc = pixel.adc;
425  pix_adc = std::min(pix_adc, theClusterParam.pixmx);
426 
427  //
428  // X projection
429  if (pixel.x == xmin)
430  Q_f_X += pix_adc;
431  if (pixel.x == xmax)
432  Q_l_X += pix_adc;
433  //
434  // Y projection
435  if (pixel.y == ymin)
436  Q_f_Y += pix_adc;
437  if (pixel.y == ymax)
438  Q_l_Y += pix_adc;
439  }
440 
441  return;
442 }

References mps_fire::i, SiPixelCluster::maxPixelCol(), SiPixelCluster::maxPixelRow(), min(), SiPixelCluster::minPixelCol(), SiPixelCluster::minPixelRow(), muonClassificationByHits_cfi::pixel, SiPixelCluster::pixel(), PixelCPEGeneric::ClusterParamGeneric::pixmx, SiPixelCluster::size(), PixelCPEBase::ClusterParam::theCluster, TruncatePixelCharge_, UseErrorsFromTemplates_, TrackerOfflineValidation_Dqm_cff::xmax, TrackerOfflineValidation_Dqm_cff::xmin, L1TOccupancyClient_cfi::ymax, and L1TOccupancyClient_cfi::ymin.

Referenced by localPosition().

◆ createClusterParam()

std::unique_ptr< PixelCPEBase::ClusterParam > PixelCPEGeneric::createClusterParam ( const SiPixelCluster cl) const
overrideprivatevirtual

Implements PixelCPEBase.

Definition at line 146 of file PixelCPEGeneric.cc.

146  {
147  return std::make_unique<ClusterParamGeneric>(cl);
148 }

References GetRecoTauVFromDQM_MC_cff::cl.

◆ err2X()

float PixelCPEGeneric::err2X ( bool &  ,
int &   
) const
private

◆ err2Y()

float PixelCPEGeneric::err2Y ( bool &  ,
int &   
) const
private

◆ fillPSetDescription()

void PixelCPEGeneric::fillPSetDescription ( edm::ParameterSetDescription desc)
static

Definition at line 630 of file PixelCPEGeneric.cc.

630  {
631  desc.add<double>("eff_charge_cut_highX", 1.0);
632  desc.add<double>("eff_charge_cut_highY", 1.0);
633  desc.add<double>("eff_charge_cut_lowX", 0.0);
634  desc.add<double>("eff_charge_cut_lowY", 0.0);
635  desc.add<double>("size_cutX", 3.0);
636  desc.add<double>("size_cutY", 3.0);
637  desc.add<double>("EdgeClusterErrorX", 50.0);
638  desc.add<double>("EdgeClusterErrorY", 85.0);
639  desc.add<bool>("inflate_errors", false);
640  desc.add<bool>("inflate_all_errors_no_trk_angle", false);
641  desc.add<bool>("NoTemplateErrorsWhenNoTrkAngles", false);
642  desc.add<bool>("UseErrorsFromTemplates", true);
643  desc.add<bool>("TruncatePixelCharge", true);
644  desc.add<bool>("IrradiationBiasCorrection", false);
645  desc.add<bool>("DoCosmics", false);
646  desc.add<bool>("Upgrade", false);
647  desc.add<bool>("SmallPitch", false);
648 }

References edm::ParameterSetDescription::add().

Referenced by PixelCPEGenericESProducer::fillDescriptions().

◆ localError()

LocalError PixelCPEGeneric::localError ( DetParam const &  theDetParam,
ClusterParam theClusterParam 
) const
overrideprivatevirtual

Implements PixelCPEBase.

Definition at line 449 of file PixelCPEGeneric.cc.

449  {
450  ClusterParamGeneric& theClusterParam = static_cast<ClusterParamGeneric&>(theClusterParamBase);
451 
452  const bool localPrint = false;
453  // Default errors are the maximum error used for edge clusters.
454  // These are determined by looking at residuals for edge clusters
455  float xerr = EdgeClusterErrorX_ * micronsToCm;
456  float yerr = EdgeClusterErrorY_ * micronsToCm;
457 
458  // Find if cluster is at the module edge.
459  int maxPixelCol = theClusterParam.theCluster->maxPixelCol();
460  int maxPixelRow = theClusterParam.theCluster->maxPixelRow();
461  int minPixelCol = theClusterParam.theCluster->minPixelCol();
462  int minPixelRow = theClusterParam.theCluster->minPixelRow();
463 
464  bool edgex = (theDetParam.theRecTopol->isItEdgePixelInX(minPixelRow)) ||
465  (theDetParam.theRecTopol->isItEdgePixelInX(maxPixelRow));
466  bool edgey = (theDetParam.theRecTopol->isItEdgePixelInY(minPixelCol)) ||
467  (theDetParam.theRecTopol->isItEdgePixelInY(maxPixelCol));
468 
469  unsigned int sizex = theClusterParam.theCluster->sizeX();
470  unsigned int sizey = theClusterParam.theCluster->sizeY();
471  if (MYDEBUG) {
472  if (int(sizex) != (maxPixelRow - minPixelRow + 1))
473  cout << " wrong x" << endl;
474  if (int(sizey) != (maxPixelCol - minPixelCol + 1))
475  cout << " wrong y" << endl;
476  }
477 
478  // Find if cluster contains double (big) pixels.
479  bool bigInX = theDetParam.theRecTopol->containsBigPixelInX(minPixelRow, maxPixelRow);
480  bool bigInY = theDetParam.theRecTopol->containsBigPixelInY(minPixelCol, maxPixelCol);
481 
482  if (localPrint) {
483  cout << " edge clus " << xerr << " " << yerr << endl; //dk
484  if (bigInX || bigInY)
485  cout << " big " << bigInX << " " << bigInY << endl;
486  if (edgex || edgey)
487  cout << " edge " << edgex << " " << edgey << endl;
488  cout << " before if " << UseErrorsFromTemplates_ << " " << theClusterParam.qBin_ << endl;
489  if (theClusterParam.qBin_ == 0)
490  cout << " qbin 0! " << edgex << " " << edgey << " " << bigInX << " " << bigInY << " " << sizex << " " << sizey
491  << endl;
492  }
493 
494  bool useTempErrors =
495  UseErrorsFromTemplates_ && (!NoTemplateErrorsWhenNoTrkAngles_ || theClusterParam.with_track_angle);
496 
497  if
498  LIKELY(useTempErrors) {
499  //
500  // Use template errors
501 
502  if (!edgex) { // Only use this for non-edge clusters
503  if (sizex == 1) {
504  if (!bigInX) {
505  xerr = theClusterParam.sx1;
506  } else {
507  xerr = theClusterParam.sx2;
508  }
509  } else {
510  xerr = theClusterParam.sigmax;
511  }
512  }
513 
514  if (!edgey) { // Only use for non-edge clusters
515  if (sizey == 1) {
516  if (!bigInY) {
517  yerr = theClusterParam.sy1;
518  } else {
519  yerr = theClusterParam.sy2;
520  }
521  } else {
522  yerr = theClusterParam.sigmay;
523  }
524  }
525 
526  if (localPrint) {
527  cout << " in if " << edgex << " " << edgey << " " << sizex << " " << sizey << endl;
528  cout << " errors " << xerr << " " << yerr << " " << theClusterParam.sx1 << " " << theClusterParam.sx2 << " "
529  << theClusterParam.sigmax << endl; //dk
530  }
531  }
532  else { // simple errors
533 
534  // This are the simple errors, hardcoded in the code
535  //cout << "Track angles are not known " << endl;
536  //cout << "Default angle estimation which assumes track from PV (0,0,0) does not work." << endl;
537 
538  if (GeomDetEnumerators::isTrackerPixel(theDetParam.thePart)) {
539  if (GeomDetEnumerators::isBarrel(theDetParam.thePart)) {
540  DetId id = (theDetParam.theDet->geographicalId());
541  int layer = ttopo_.layer(id);
542  if (layer == 1) {
543  if (!edgex) {
544  if (sizex <= xerr_barrel_l1_.size())
545  xerr = xerr_barrel_l1_[sizex - 1];
546  else
547  xerr = xerr_barrel_l1_def_;
548  }
549 
550  if (!edgey) {
551  if (sizey <= yerr_barrel_l1_.size())
552  yerr = yerr_barrel_l1_[sizey - 1];
553  else
554  yerr = yerr_barrel_l1_def_;
555  }
556  } else { // layer 2,3
557  if (!edgex) {
558  if (sizex <= xerr_barrel_ln_.size())
559  xerr = xerr_barrel_ln_[sizex - 1];
560  else
561  xerr = xerr_barrel_ln_def_;
562  }
563 
564  if (!edgey) {
565  if (sizey <= yerr_barrel_ln_.size())
566  yerr = yerr_barrel_ln_[sizey - 1];
567  else
568  yerr = yerr_barrel_ln_def_;
569  }
570  }
571 
572  } else { // EndCap
573 
574  if (!edgex) {
575  if (sizex <= xerr_endcap_.size())
576  xerr = xerr_endcap_[sizex - 1];
577  else
578  xerr = xerr_endcap_def_;
579  }
580 
581  if (!edgey) {
582  if (sizey <= yerr_endcap_.size())
583  yerr = yerr_endcap_[sizey - 1];
584  else
585  yerr = yerr_endcap_def_;
586  }
587  } // end endcap
588  }
589 
590  if (inflate_errors) {
591  int n_bigx = 0;
592  int n_bigy = 0;
593 
594  for (int irow = 0; irow < 7; ++irow) {
595  if (theDetParam.theRecTopol->isItBigPixelInX(irow + minPixelRow))
596  ++n_bigx;
597  }
598 
599  for (int icol = 0; icol < 21; ++icol) {
600  if (theDetParam.theRecTopol->isItBigPixelInY(icol + minPixelCol))
601  ++n_bigy;
602  }
603 
604  xerr = (float)(sizex + n_bigx) * theDetParam.thePitchX / std::sqrt(12.0f);
605  yerr = (float)(sizey + n_bigy) * theDetParam.thePitchY / std::sqrt(12.0f);
606 
607  } // if(inflate_errors)
608 
609  } // end
610 
611 #ifdef EDM_ML_DEBUG
612  if (!(xerr > 0.0))
613  throw cms::Exception("PixelCPEGeneric::localError") << "\nERROR: Negative pixel error xerr = " << xerr << "\n\n";
614 
615  if (!(yerr > 0.0))
616  throw cms::Exception("PixelCPEGeneric::localError") << "\nERROR: Negative pixel error yerr = " << yerr << "\n\n";
617 #endif
618 
619  //if(localPrint) {
620  //cout<<" errors "<<xerr<<" "<<yerr<<endl; //dk
621  //if(theClusterParam.qBin_ == 0) cout<<" qbin 0 "<<xerr<<" "<<yerr<<endl;
622  //}
623 
624  auto xerr_sq = xerr * xerr;
625  auto yerr_sq = yerr * yerr;
626 
627  return LocalError(xerr_sq, 0, yerr_sq);
628 }

References RectangularPixelTopology::containsBigPixelInX(), RectangularPixelTopology::containsBigPixelInY(), gather_cfg::cout, EdgeClusterErrorX_, EdgeClusterErrorY_, Exception, f, dqmMemoryStats::float, GeomDet::geographicalId(), inflate_errors, GeomDetEnumerators::isBarrel(), RectangularPixelTopology::isItBigPixelInX(), RectangularPixelTopology::isItBigPixelInY(), RectangularPixelTopology::isItEdgePixelInX(), RectangularPixelTopology::isItEdgePixelInY(), GeomDetEnumerators::isTrackerPixel(), TrackerTopology::layer(), LIKELY, SiPixelCluster::maxPixelCol(), SiPixelCluster::maxPixelRow(), SiPixelCluster::minPixelCol(), SiPixelCluster::minPixelRow(), NoTemplateErrorsWhenNoTrkAngles_, PixelCPEBase::ClusterParam::qBin_, PixelCPEGeneric::ClusterParamGeneric::sigmax, PixelCPEGeneric::ClusterParamGeneric::sigmay, SiPixelCluster::sizeX(), SiPixelCluster::sizeY(), mathSSE::sqrt(), PixelCPEGeneric::ClusterParamGeneric::sx1, PixelCPEGeneric::ClusterParamGeneric::sx2, PixelCPEGeneric::ClusterParamGeneric::sy1, PixelCPEGeneric::ClusterParamGeneric::sy2, PixelCPEBase::ClusterParam::theCluster, PixelCPEBase::DetParam::theDet, PixelCPEBase::DetParam::thePart, PixelCPEBase::DetParam::thePitchX, PixelCPEBase::DetParam::thePitchY, PixelCPEBase::DetParam::theRecTopol, PixelCPEBase::ttopo_, UseErrorsFromTemplates_, PixelCPEBase::ClusterParam::with_track_angle, xerr_barrel_l1_, xerr_barrel_l1_def_, xerr_barrel_ln_, xerr_barrel_ln_def_, xerr_endcap_, xerr_endcap_def_, yerr_barrel_l1_, yerr_barrel_l1_def_, yerr_barrel_ln_, yerr_barrel_ln_def_, yerr_endcap_, and yerr_endcap_def_.

◆ localPosition()

LocalPoint PixelCPEGeneric::localPosition ( DetParam const &  theDetParam,
ClusterParam theClusterParamBase 
) const
overrideprivatevirtual

Hit position in the local frame (in cm). Unlike other CPE's, this one converts everything from the measurement frame (in channel numbers) into the local frame (in centimeters).

< Q of the first pixel in X

< Q of the last pixel in X

< Q of the first pixel in Y

< Q of the last pixel in Y

Implements PixelCPEBase.

Definition at line 155 of file PixelCPEGeneric.cc.

155  {
156  ClusterParamGeneric& theClusterParam = static_cast<ClusterParamGeneric&>(theClusterParamBase);
157 
158  //cout<<" in PixelCPEGeneric:localPosition - "<<endl; //dk
159 
160  float chargeWidthX = (theDetParam.lorentzShiftInCmX * theDetParam.widthLAFractionX);
161  float chargeWidthY = (theDetParam.lorentzShiftInCmY * theDetParam.widthLAFractionY);
162  float shiftX = 0.5f * theDetParam.lorentzShiftInCmX;
163  float shiftY = 0.5f * theDetParam.lorentzShiftInCmY;
164 
165  //cout<<" main la width "<<chargeWidthX<<" "<<chargeWidthY<<endl;
166 
168  float qclus = theClusterParam.theCluster->charge();
169  float locBz = theDetParam.bz;
170  float locBx = theDetParam.bx;
171  //cout << "PixelCPEGeneric::localPosition(...) : locBz = " << locBz << endl;
172 
173  theClusterParam.pixmx = -999; // max pixel charge for truncation of 2-D cluster
174  theClusterParam.sigmay = -999.9; // CPE Generic y-error for multi-pixel cluster
175  theClusterParam.deltay = -999.9; // CPE Generic y-bias for multi-pixel cluster
176  theClusterParam.sigmax = -999.9; // CPE Generic x-error for multi-pixel cluster
177  theClusterParam.deltax = -999.9; // CPE Generic x-bias for multi-pixel cluster
178  theClusterParam.sy1 = -999.9; // CPE Generic y-error for single single-pixel
179  theClusterParam.dy1 = -999.9; // CPE Generic y-bias for single single-pixel cluster
180  theClusterParam.sy2 = -999.9; // CPE Generic y-error for single double-pixel cluster
181  theClusterParam.dy2 = -999.9; // CPE Generic y-bias for single double-pixel cluster
182  theClusterParam.sx1 = -999.9; // CPE Generic x-error for single single-pixel cluster
183  theClusterParam.dx1 = -999.9; // CPE Generic x-bias for single single-pixel cluster
184  theClusterParam.sx2 = -999.9; // CPE Generic x-error for single double-pixel cluster
185  theClusterParam.dx2 = -999.9; // CPE Generic x-bias for single double-pixel cluster
186 
188  int gtemplID_ = theDetParam.detTemplateId;
189 
190  //int gtemplID0 = genErrorDBObject_->getGenErrorID(theDetParam.theDet->geographicalId().rawId());
191  //if(gtemplID0!=gtemplID_) cout<<" different id "<< gtemplID_<<" "<<gtemplID0<<endl;
192 
193  theClusterParam.qBin_ = gtempl.qbin(gtemplID_,
194  theClusterParam.cotalpha,
195  theClusterParam.cotbeta,
196  locBz,
197  locBx,
198  qclus,
200  theClusterParam.pixmx,
201  theClusterParam.sigmay,
202  theClusterParam.deltay,
203  theClusterParam.sigmax,
204  theClusterParam.deltax,
205  theClusterParam.sy1,
206  theClusterParam.dy1,
207  theClusterParam.sy2,
208  theClusterParam.dy2,
209  theClusterParam.sx1,
210  theClusterParam.dx1,
211  theClusterParam.sx2,
212  theClusterParam.dx2);
213 
214  // now use the charge widths stored in the new generic template headers (change to the
215  // incorrect sign convention of the base class)
216  bool useLAWidthFromGenError = false;
217  if (useLAWidthFromGenError) {
218  chargeWidthX = (-micronsToCm * gtempl.lorxwidth());
219  chargeWidthY = (-micronsToCm * gtempl.lorywidth());
220  if (MYDEBUG)
221  cout << " redefine la width (gen-error) " << chargeWidthX << " " << chargeWidthY << endl;
222  }
223  if (MYDEBUG)
224  cout << " GenError: " << gtemplID_ << endl;
225 
226  // These numbers come in microns from the qbin(...) call. Transform them to cm.
227  theClusterParam.deltax = theClusterParam.deltax * micronsToCm;
228  theClusterParam.dx1 = theClusterParam.dx1 * micronsToCm;
229  theClusterParam.dx2 = theClusterParam.dx2 * micronsToCm;
230 
231  theClusterParam.deltay = theClusterParam.deltay * micronsToCm;
232  theClusterParam.dy1 = theClusterParam.dy1 * micronsToCm;
233  theClusterParam.dy2 = theClusterParam.dy2 * micronsToCm;
234 
235  theClusterParam.sigmax = theClusterParam.sigmax * micronsToCm;
236  theClusterParam.sx1 = theClusterParam.sx1 * micronsToCm;
237  theClusterParam.sx2 = theClusterParam.sx2 * micronsToCm;
238 
239  theClusterParam.sigmay = theClusterParam.sigmay * micronsToCm;
240  theClusterParam.sy1 = theClusterParam.sy1 * micronsToCm;
241  theClusterParam.sy2 = theClusterParam.sy2 * micronsToCm;
242 
243  } // if ( UseErrorsFromTemplates_ )
244  else {
245  theClusterParam.qBin_ = 0;
246  }
247 
248  int Q_f_X;
249  int Q_l_X;
250  int Q_f_Y;
251  int Q_l_Y;
252  collect_edge_charges(theClusterParam, Q_f_X, Q_l_X, Q_f_Y, Q_l_Y);
253 
254  //--- Find the inner widths along X and Y in one shot. We
255  //--- compute the upper right corner of the inner pixels
256  //--- (== lower left corner of upper right pixel) and
257  //--- the lower left corner of the inner pixels
258  //--- (== upper right corner of lower left pixel), and then
259  //--- subtract these two points in the formula.
260 
261  //--- Upper Right corner of Lower Left pixel -- in measurement frame
262  MeasurementPoint meas_URcorn_LLpix(theClusterParam.theCluster->minPixelRow() + 1.0,
263  theClusterParam.theCluster->minPixelCol() + 1.0);
264 
265  //--- Lower Left corner of Upper Right pixel -- in measurement frame
266  MeasurementPoint meas_LLcorn_URpix(theClusterParam.theCluster->maxPixelRow(),
267  theClusterParam.theCluster->maxPixelCol());
268 
269  //--- These two now converted into the local
270  LocalPoint local_URcorn_LLpix;
271  LocalPoint local_LLcorn_URpix;
272 
273  // PixelCPEGeneric can be used with or without track angles
274  // If PixelCPEGeneric is called with track angles, use them to correct for bows/kinks:
275  if (theClusterParam.with_track_angle) {
276  local_URcorn_LLpix = theDetParam.theTopol->localPosition(meas_URcorn_LLpix, theClusterParam.loc_trk_pred);
277  local_LLcorn_URpix = theDetParam.theTopol->localPosition(meas_LLcorn_URpix, theClusterParam.loc_trk_pred);
278  } else {
279  local_URcorn_LLpix = theDetParam.theTopol->localPosition(meas_URcorn_LLpix);
280  local_LLcorn_URpix = theDetParam.theTopol->localPosition(meas_LLcorn_URpix);
281  }
282 
283 #ifdef EDM_ML_DEBUG
284  if (theVerboseLevel > 20) {
285  cout << "\n\t >>> theClusterParam.theCluster->x = " << theClusterParam.theCluster->x()
286  << "\n\t >>> theClusterParam.theCluster->y = " << theClusterParam.theCluster->y()
287  << "\n\t >>> cluster: minRow = " << theClusterParam.theCluster->minPixelRow()
288  << " minCol = " << theClusterParam.theCluster->minPixelCol()
289  << "\n\t >>> cluster: maxRow = " << theClusterParam.theCluster->maxPixelRow()
290  << " maxCol = " << theClusterParam.theCluster->maxPixelCol()
291  << "\n\t >>> meas: inner lower left = " << meas_URcorn_LLpix.x() << "," << meas_URcorn_LLpix.y()
292  << "\n\t >>> meas: inner upper right = " << meas_LLcorn_URpix.x() << "," << meas_LLcorn_URpix.y() << endl;
293  }
294 #endif
295 
296  //--- &&& Note that the cuts below should not be hardcoded (like in Orca and
297  //--- &&& CPEFromDetPosition/PixelCPEInitial), but rather be
298  //--- &&& externally settable (but tracked) parameters.
299 
300  //--- Position, including the half lorentz shift
301 
302 #ifdef EDM_ML_DEBUG
303  if (theVerboseLevel > 20)
304  cout << "\t >>> Generic:: processing X" << endl;
305 #endif
306 
308  theClusterParam.theCluster->sizeX(),
309  Q_f_X,
310  Q_l_X,
311  local_URcorn_LLpix.x(),
312  local_LLcorn_URpix.x(),
313  chargeWidthX, // lorentz shift in cm
314  theDetParam.theThickness,
315  theClusterParam.cotalpha,
316  theDetParam.thePitchX,
317  theDetParam.theRecTopol->isItBigPixelInX(theClusterParam.theCluster->minPixelRow()),
318  theDetParam.theRecTopol->isItBigPixelInX(theClusterParam.theCluster->maxPixelRow()),
321  the_size_cutX); // cut for eff charge width &&&
322 
323  // apply the lorentz offset correction
324  xPos = xPos + shiftX;
325 
326 #ifdef EDM_ML_DEBUG
327  if (theVerboseLevel > 20)
328  cout << "\t >>> Generic:: processing Y" << endl;
329 #endif
330 
332  theClusterParam.theCluster->sizeY(),
333  Q_f_Y,
334  Q_l_Y,
335  local_URcorn_LLpix.y(),
336  local_LLcorn_URpix.y(),
337  chargeWidthY, // lorentz shift in cm
338  theDetParam.theThickness,
339  theClusterParam.cotbeta,
340  theDetParam.thePitchY,
341  theDetParam.theRecTopol->isItBigPixelInY(theClusterParam.theCluster->minPixelCol()),
342  theDetParam.theRecTopol->isItBigPixelInY(theClusterParam.theCluster->maxPixelCol()),
345  the_size_cutY); // cut for eff charge width &&&
346 
347  // apply the lorentz offset correction
348  yPos = yPos + shiftY;
349 
350  // Apply irradiation corrections
352  if (theClusterParam.theCluster->sizeX() == 1) { // size=1
353  // ggiurgiu@jhu.edu, 02/03/09 : for size = 1, the Lorentz shift is already accounted by the irradiation correction
354  //float tmp1 = (0.5 * theDetParam.lorentzShiftInCmX);
355  //cout << "Apply correction correction_dx1 = " << theClusterParam.dx1 << " to xPos = " << xPos;
356  xPos = xPos - (0.5f * theDetParam.lorentzShiftInCmX);
357  // Find if pixel is double (big).
358  bool bigInX = theDetParam.theRecTopol->isItBigPixelInX(theClusterParam.theCluster->maxPixelRow());
359  if (!bigInX)
360  xPos -= theClusterParam.dx1;
361  else
362  xPos -= theClusterParam.dx2;
363  //cout<<" to "<<xPos<<" "<<(tmp1+theClusterParam.dx1)<<endl;
364  } else { // size>1
365  //cout << "Apply correction correction_deltax = " << theClusterParam.deltax << " to xPos = " << xPos;
366  xPos -= theClusterParam.deltax;
367  //cout<<" to "<<xPos<<endl;
368  }
369 
370  if (theClusterParam.theCluster->sizeY() == 1) {
371  // ggiurgiu@jhu.edu, 02/03/09 : for size = 1, the Lorentz shift is already accounted by the irradiation correction
372  yPos = yPos - (0.5f * theDetParam.lorentzShiftInCmY);
373 
374  // Find if pixel is double (big).
375  bool bigInY = theDetParam.theRecTopol->isItBigPixelInY(theClusterParam.theCluster->maxPixelCol());
376  if (!bigInY)
377  yPos -= theClusterParam.dy1;
378  else
379  yPos -= theClusterParam.dy2;
380 
381  } else {
382  //cout << "Apply correction correction_deltay = " << theClusterParam.deltay << " to yPos = " << yPos << endl;
383  yPos -= theClusterParam.deltay;
384  }
385 
386  } // if ( IrradiationBiasCorrection_ )
387 
388  //cout<<" in PixelCPEGeneric:localPosition - pos = "<<xPos<<" "<<yPos<<endl; //dk
389 
390  //--- Now put the two together
391  LocalPoint pos_in_local(xPos, yPos);
392  return pos_in_local;
393 }

References PixelCPEBase::DetParam::bx, PixelCPEBase::DetParam::bz, SiPixelCluster::charge(), collect_edge_charges(), PixelCPEBase::ClusterParam::cotalpha, PixelCPEBase::ClusterParam::cotbeta, gather_cfg::cout, PixelCPEGeneric::ClusterParamGeneric::deltax, PixelCPEGeneric::ClusterParamGeneric::deltay, PixelCPEBase::DetParam::detTemplateId, PixelCPEGeneric::ClusterParamGeneric::dx1, PixelCPEGeneric::ClusterParamGeneric::dx2, PixelCPEGeneric::ClusterParamGeneric::dy1, PixelCPEGeneric::ClusterParamGeneric::dy2, SiPixelUtils::generic_position_formula(), IrradiationBiasCorrection_, RectangularPixelTopology::isItBigPixelInX(), RectangularPixelTopology::isItBigPixelInY(), PixelCPEBase::ClusterParam::loc_trk_pred, Topology::localPosition(), PixelCPEBase::DetParam::lorentzShiftInCmX, PixelCPEBase::DetParam::lorentzShiftInCmY, SiPixelGenError::lorxwidth(), SiPixelGenError::lorywidth(), SiPixelCluster::maxPixelCol(), SiPixelCluster::maxPixelRow(), SiPixelCluster::minPixelCol(), SiPixelCluster::minPixelRow(), PixelCPEGeneric::ClusterParamGeneric::pixmx, SiPixelGenError::qbin(), PixelCPEBase::ClusterParam::qBin_, PixelCPEGeneric::ClusterParamGeneric::sigmax, PixelCPEGeneric::ClusterParamGeneric::sigmay, SiPixelCluster::sizeX(), SiPixelCluster::sizeY(), PixelCPEGeneric::ClusterParamGeneric::sx1, PixelCPEGeneric::ClusterParamGeneric::sx2, PixelCPEGeneric::ClusterParamGeneric::sy1, PixelCPEGeneric::ClusterParamGeneric::sy2, the_eff_charge_cut_highX, the_eff_charge_cut_highY, the_eff_charge_cut_lowX, the_eff_charge_cut_lowY, the_size_cutX, the_size_cutY, PixelCPEBase::ClusterParam::theCluster, PixelCPEBase::DetParam::thePitchX, PixelCPEBase::DetParam::thePitchY, thePixelGenError_, PixelCPEBase::DetParam::theRecTopol, PixelCPEBase::DetParam::theThickness, PixelCPEBase::DetParam::theTopol, PixelCPEBase::theVerboseLevel, UseErrorsFromTemplates_, PixelCPEBase::DetParam::widthLAFractionX, PixelCPEBase::DetParam::widthLAFractionY, PixelCPEBase::ClusterParam::with_track_angle, PV2DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::x(), SiPixelCluster::x(), PV2DBase< T, PVType, FrameType >::y(), PV3DBase< T, PVType, FrameType >::y(), and SiPixelCluster::y().

Member Data Documentation

◆ DoCosmics_

bool PixelCPEGeneric::DoCosmics_
private

Definition at line 123 of file PixelCPEGeneric.h.

Referenced by PixelCPEGeneric().

◆ EdgeClusterErrorX_

float PixelCPEGeneric::EdgeClusterErrorX_
private

Definition at line 129 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ EdgeClusterErrorY_

float PixelCPEGeneric::EdgeClusterErrorY_
private

Definition at line 130 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ inflate_all_errors_no_trk_angle

bool PixelCPEGeneric::inflate_all_errors_no_trk_angle
private

Definition at line 120 of file PixelCPEGeneric.h.

Referenced by PixelCPEGeneric().

◆ inflate_errors

bool PixelCPEGeneric::inflate_errors
private

Definition at line 119 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ IrradiationBiasCorrection_

bool PixelCPEGeneric::IrradiationBiasCorrection_
private

Definition at line 125 of file PixelCPEGeneric.h.

Referenced by localPosition(), and PixelCPEGeneric().

◆ isUpgrade_

bool PixelCPEGeneric::isUpgrade_
private

Definition at line 126 of file PixelCPEGeneric.h.

Referenced by PixelCPEGeneric().

◆ NoTemplateErrorsWhenNoTrkAngles_

bool PixelCPEGeneric::NoTemplateErrorsWhenNoTrkAngles_
private

Definition at line 127 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ the_eff_charge_cut_highX

float PixelCPEGeneric::the_eff_charge_cut_highX
private

Definition at line 114 of file PixelCPEGeneric.h.

Referenced by localPosition(), and PixelCPEGeneric().

◆ the_eff_charge_cut_highY

float PixelCPEGeneric::the_eff_charge_cut_highY
private

Definition at line 115 of file PixelCPEGeneric.h.

Referenced by localPosition(), and PixelCPEGeneric().

◆ the_eff_charge_cut_lowX

float PixelCPEGeneric::the_eff_charge_cut_lowX
private

Definition at line 112 of file PixelCPEGeneric.h.

Referenced by localPosition(), and PixelCPEGeneric().

◆ the_eff_charge_cut_lowY

float PixelCPEGeneric::the_eff_charge_cut_lowY
private

Definition at line 113 of file PixelCPEGeneric.h.

Referenced by localPosition(), and PixelCPEGeneric().

◆ the_size_cutX

float PixelCPEGeneric::the_size_cutX
private

Definition at line 116 of file PixelCPEGeneric.h.

Referenced by localPosition(), and PixelCPEGeneric().

◆ the_size_cutY

float PixelCPEGeneric::the_size_cutY
private

Definition at line 117 of file PixelCPEGeneric.h.

Referenced by localPosition(), and PixelCPEGeneric().

◆ thePixelGenError_

std::vector<SiPixelGenErrorStore> PixelCPEGeneric::thePixelGenError_
private

Definition at line 138 of file PixelCPEGeneric.h.

Referenced by localPosition(), and PixelCPEGeneric().

◆ TruncatePixelCharge_

bool PixelCPEGeneric::TruncatePixelCharge_
private

Definition at line 124 of file PixelCPEGeneric.h.

Referenced by collect_edge_charges(), and PixelCPEGeneric().

◆ UseErrorsFromTemplates_

bool PixelCPEGeneric::UseErrorsFromTemplates_
private

◆ xerr_barrel_l1_

std::vector<float> PixelCPEGeneric::xerr_barrel_l1_
private

Definition at line 132 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ xerr_barrel_l1_def_

float PixelCPEGeneric::xerr_barrel_l1_def_
private

Definition at line 134 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ xerr_barrel_ln_

std::vector<float> PixelCPEGeneric::xerr_barrel_ln_
private

Definition at line 132 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ xerr_barrel_ln_def_

float PixelCPEGeneric::xerr_barrel_ln_def_
private

Definition at line 134 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ xerr_endcap_

std::vector<float> PixelCPEGeneric::xerr_endcap_
private

Definition at line 133 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ xerr_endcap_def_

float PixelCPEGeneric::xerr_endcap_def_
private

Definition at line 135 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ yerr_barrel_l1_

std::vector<float> PixelCPEGeneric::yerr_barrel_l1_
private

Definition at line 132 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ yerr_barrel_l1_def_

float PixelCPEGeneric::yerr_barrel_l1_def_
private

Definition at line 134 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ yerr_barrel_ln_

std::vector<float> PixelCPEGeneric::yerr_barrel_ln_
private

Definition at line 133 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ yerr_barrel_ln_def_

float PixelCPEGeneric::yerr_barrel_ln_def_
private

Definition at line 135 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ yerr_endcap_

std::vector<float> PixelCPEGeneric::yerr_endcap_
private

Definition at line 133 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

◆ yerr_endcap_def_

float PixelCPEGeneric::yerr_endcap_def_
private

Definition at line 135 of file PixelCPEGeneric.h.

Referenced by localError(), and PixelCPEGeneric().

Point2DBase
Definition: Point2DBase.h:9
PixelCPEGeneric::yerr_barrel_ln_def_
float yerr_barrel_ln_def_
Definition: PixelCPEGeneric.h:135
PixelCPEGeneric::xerr_barrel_l1_def_
float xerr_barrel_l1_def_
Definition: PixelCPEGeneric.h:134
mps_fire.i
i
Definition: mps_fire.py:355
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
PixelCPEGeneric::collect_edge_charges
void collect_edge_charges(ClusterParam &theClusterParam, int &Q_f_X, int &Q_l_X, int &Q_f_Y, int &Q_l_Y) const
Definition: PixelCPEGeneric.cc:400
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
min
T min(T a, T b)
Definition: MathUtil.h:58
PixelCPEBase::genErrorDBObject_
const SiPixelGenErrorDBObject * genErrorDBObject_
Definition: PixelCPEBase.h:245
PixelCPEBase::ttopo_
const TrackerTopology & ttopo_
Definition: PixelCPEBase.h:240
gather_cfg.cout
cout
Definition: gather_cfg.py:144
PixelCPEGeneric::EdgeClusterErrorY_
float EdgeClusterErrorY_
Definition: PixelCPEGeneric.h:130
muonClassificationByHits_cfi.pixel
pixel
Definition: muonClassificationByHits_cfi.py:9
TrackerTopology::layer
unsigned int layer(const DetId &id) const
Definition: TrackerTopology.cc:47
PixelCPEGeneric::DoCosmics_
bool DoCosmics_
Definition: PixelCPEGeneric.h:123
PixelCPEGeneric::thePixelGenError_
std::vector< SiPixelGenErrorStore > thePixelGenError_
Definition: PixelCPEGeneric.h:138
GetRecoTauVFromDQM_MC_cff.cl
cl
Definition: GetRecoTauVFromDQM_MC_cff.py:38
DetId
Definition: DetId.h:17
PixelCPEGeneric::xerr_barrel_l1_
std::vector< float > xerr_barrel_l1_
Definition: PixelCPEGeneric.h:132
PixelCPEGeneric::the_size_cutX
float the_size_cutX
Definition: PixelCPEGeneric.h:116
PixelCPEGeneric::EdgeClusterErrorX_
float EdgeClusterErrorX_
Definition: PixelCPEGeneric.h:129
L1TOccupancyClient_cfi.ymax
ymax
Definition: L1TOccupancyClient_cfi.py:43
PixelCPEGeneric::the_eff_charge_cut_lowX
float the_eff_charge_cut_lowX
Definition: PixelCPEGeneric.h:112
PixelCPEGeneric::IrradiationBiasCorrection_
bool IrradiationBiasCorrection_
Definition: PixelCPEGeneric.h:125
PixelCPEGeneric::the_size_cutY
float the_size_cutY
Definition: PixelCPEGeneric.h:117
PixelCPEGeneric::NoTemplateErrorsWhenNoTrkAngles_
bool NoTemplateErrorsWhenNoTrkAngles_
Definition: PixelCPEGeneric.h:127
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:113
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
Point3DBase< float, LocalTag >
PixelCPEGeneric::TruncatePixelCharge_
bool TruncatePixelCharge_
Definition: PixelCPEGeneric.h:124
PixelCPEGeneric::the_eff_charge_cut_highX
float the_eff_charge_cut_highX
Definition: PixelCPEGeneric.h:114
PixelCPEGeneric::xerr_barrel_ln_def_
float xerr_barrel_ln_def_
Definition: PixelCPEGeneric.h:134
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
SiPixelGenError
Definition: SiPixelGenError.h:113
LocalError
Definition: LocalError.h:12
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
createfilelist.int
int
Definition: createfilelist.py:10
GeomDetEnumerators::isTrackerPixel
bool isTrackerPixel(GeomDetEnumerators::SubDetector m)
Definition: GeomDetEnumerators.cc:68
PixelCPEGeneric::yerr_barrel_l1_
std::vector< float > yerr_barrel_l1_
Definition: PixelCPEGeneric.h:132
PixelCPEGeneric::the_eff_charge_cut_highY
float the_eff_charge_cut_highY
Definition: PixelCPEGeneric.h:115
PixelCPEBase::theVerboseLevel
int theVerboseLevel
Definition: PixelCPEBase.h:235
GeomDetEnumerators::isBarrel
bool isBarrel(GeomDetEnumerators::SubDetector m)
Definition: GeomDetEnumerators.cc:57
PixelCPEBase::PixelCPEBase
PixelCPEBase(edm::ParameterSet const &conf, const MagneticField *mag, const TrackerGeometry &geom, const TrackerTopology &ttopo, const SiPixelLorentzAngle *lorentzAngle, const SiPixelGenErrorDBObject *genErrorDBObject, const SiPixelTemplateDBObject *templateDBobject, const SiPixelLorentzAngle *lorentzAngleWidth, int flag=0)
Definition: PixelCPEBase.cc:30
PixelCPEGeneric::yerr_endcap_
std::vector< float > yerr_endcap_
Definition: PixelCPEGeneric.h:133
PixelCPEGeneric::xerr_barrel_ln_
std::vector< float > xerr_barrel_ln_
Definition: PixelCPEGeneric.h:132
PixelCPEGeneric::xerr_endcap_
std::vector< float > xerr_endcap_
Definition: PixelCPEGeneric.h:133
PixelCPEGeneric::yerr_barrel_l1_def_
float yerr_barrel_l1_def_
Definition: PixelCPEGeneric.h:134
PixelCPEBase::LoadTemplatesFromDB_
bool LoadTemplatesFromDB_
Definition: PixelCPEBase.h:252
SiPixelGenError::pushfile
static bool pushfile(int filenum, std::vector< SiPixelGenErrorStore > &pixelTemp, std::string dir="")
Definition: SiPixelGenError.cc:55
PixelCPEGeneric::UseErrorsFromTemplates_
bool UseErrorsFromTemplates_
Definition: PixelCPEGeneric.h:122
mag
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Definition: Basic3DVectorLD.h:127
PixelCPEGeneric::yerr_endcap_def_
float yerr_endcap_def_
Definition: PixelCPEGeneric.h:135
L1TOccupancyClient_cfi.ymin
ymin
Definition: L1TOccupancyClient_cfi.py:43
LIKELY
#define LIKELY(x)
Definition: Likely.h:20
TrackerOfflineValidation_Dqm_cff.xmax
xmax
Definition: TrackerOfflineValidation_Dqm_cff.py:11
Exception
Definition: hltDiff.cc:246
PixelCPEGeneric::yerr_barrel_ln_
std::vector< float > yerr_barrel_ln_
Definition: PixelCPEGeneric.h:133
TrackerOfflineValidation_Dqm_cff.xmin
xmin
Definition: TrackerOfflineValidation_Dqm_cff.py:10
PixelCPEGeneric::inflate_errors
bool inflate_errors
Definition: PixelCPEGeneric.h:119
PixelCPEGeneric::isUpgrade_
bool isUpgrade_
Definition: PixelCPEGeneric.h:126
PixelCPEGeneric::xerr_endcap_def_
float xerr_endcap_def_
Definition: PixelCPEGeneric.h:135
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
PixelCPEGeneric::inflate_all_errors_no_trk_angle
bool inflate_all_errors_no_trk_angle
Definition: PixelCPEGeneric.h:120