CMS 3D CMS Logo

PixelCPEBase.cc
Go to the documentation of this file.
1 // Move geomCorrection to the concrete class. d.k. 06/06.
2 // Change drift direction. d.k. 06/06
3 // G. Giurgiu (ggiurgiu@pha.jhu.edu), 12/01/06, implemented the function:
4 // computeAnglesFromDetPosition(const SiPixelCluster & cl,
5 // change to use Lorentz angle from DB Lotte Wilke, Jan. 31st, 2008
6 // Change to use Generic error & Template calibration from DB - D.Fehling 11/08
7 
11 
13 
14 #define CORRECT_FOR_BIG_PIXELS
15 
16 // MessageLogger
18 
19 // Magnetic field
21 
22 #include <iostream>
23 
24 using namespace std;
25 
26 //-----------------------------------------------------------------------------
27 // A constructor run for generic and templates
28 //
29 //-----------------------------------------------------------------------------
31  const MagneticField* mag,
32  const TrackerGeometry& geom,
33  const TrackerTopology& ttopo,
34  const SiPixelLorentzAngle* lorentzAngle,
35  const SiPixelGenErrorDBObject* genErrorDBObject,
36  const SiPixelTemplateDBObject* templateDBobject,
37  const SiPixelLorentzAngle* lorentzAngleWidth,
38  int flag)
39  // : useLAAlignmentOffsets_(false), useLAOffsetFromConfig_(false),
40  : useLAOffsetFromConfig_(false),
41  useLAWidthFromConfig_(false),
42  useLAWidthFromDB_(false),
43  theFlag_(flag),
44  magfield_(mag),
45  geom_(geom),
46  ttopo_(ttopo) {
47 #ifdef EDM_ML_DEBUG
48  nRecHitsTotal_ = 0;
49  nRecHitsUsedEdge_ = 0,
50 #endif
51 
52  //--- Lorentz angle tangent per Tesla
53  lorentzAngle_ = lorentzAngle;
54  lorentzAngleWidth_ = lorentzAngleWidth;
55 
56  //-- GenError Calibration Object (different from SiPixelCPEGenericErrorParm) from DB
57  genErrorDBObject_ = genErrorDBObject;
58 
59  //-- Template Calibration Object from DB
60  if (theFlag_ != 0)
61  templateDBobject_ = templateDBobject; // flag to check if it is generic or templates
62 
63  // Configurables
64  // For both templates & generic
65 
66  // Read templates and/or generic errors from DB
67  LoadTemplatesFromDB_ = conf.getParameter<bool>("LoadTemplatesFromDB");
68 
69  //--- Algorithm's verbosity
70  theVerboseLevel = conf.getUntrackedParameter<int>("VerboseLevel", 0);
71 
72  //-- Switch on/off E.B
73  alpha2Order = conf.getParameter<bool>("Alpha2Order");
74 
75  //--- A flag that could be used to change the behavior of
76  //--- clusterProbability() in TSiPixelRecHit (the *transient* one).
77  //--- The problem is that the transient hits are made after the CPE runs
78  //--- and they don't get the access to the PSet, so we pass it via the
79  //--- CPE itself...
80  //
81  clusterProbComputationFlag_ = (unsigned int)conf.getParameter<int>("ClusterProbComputationFlag");
82 
83  // This LA related parameters are only relevant for the Generic algo
84  // They still have to be used in Base since the LA computation is in Base
85 
86  // Use LA-width from DB.
87  // If both (this and from config) are false LA-width is calcuated from LA-offset
88  useLAWidthFromDB_ = conf.getParameter<bool>("useLAWidthFromDB");
89 
90  // Use Alignment LA-offset in generic
91  // (Experimental; leave commented out)
92  //useLAAlignmentOffsets_ = conf.existsAs<bool>("useLAAlignmentOffsets")?
93  //conf.getParameter<bool>("useLAAlignmentOffsets"):false;
94 
95  // Used only for testing
96  lAOffset_ = conf.getParameter<double>("lAOffset");
97  lAWidthBPix_ = conf.getParameter<double>("lAWidthBPix");
98  lAWidthFPix_ = conf.getParameter<double>("lAWidthFPix");
99 
100  // Use LA-offset from config, for testing only
101  if (lAOffset_ > 0.0)
102  useLAOffsetFromConfig_ = true;
103  // Use LA-width from config, split into fpix & bpix, for testing only
104  if (lAWidthBPix_ > 0.0 || lAWidthFPix_ > 0.0)
105  useLAWidthFromConfig_ = true;
106 
107  // For Templates only
108  // Compute the Lorentz shifts for this detector element for templates (from Alignment)
109  DoLorentz_ = conf.getParameter<bool>("DoLorentz");
110 
111  LogDebug("PixelCPEBase") << " LA constants - " << lAOffset_ << " " << lAWidthBPix_ << " " << lAWidthFPix_
112  << endl; //dk
113 
114  fillDetParams();
115 }
116 
117 //-----------------------------------------------------------------------------
118 // Fill all variables which are constant for an event (geometry)
119 //-----------------------------------------------------------------------------
121  // MM: this code finds the last Pixel (Inner Tracker) DetUnit to loop upon when filling the det params, by looking the first detId which is from
122  // the Outer Tracker (Strips in case of the Phase-0/1 detector).
123 
124  auto const& dus = geom_.detUnits();
125  unsigned m_detectors = dus.size();
126  for (unsigned int i = 1; i < 7; ++i) {
127  LogDebug("PixelCPEBase:: LookingForFirstStrip")
128  << "Subdetector " << i << " GeomDetEnumerator " << GeomDetEnumerators::tkDetEnum[i] << " offset "
129  << geom_.offsetDU(GeomDetEnumerators::tkDetEnum[i]) << " is it strip? "
130  << (geom_.offsetDU(GeomDetEnumerators::tkDetEnum[i]) != dus.size()
131  ? dus[geom_.offsetDU(GeomDetEnumerators::tkDetEnum[i])]->type().isOuterTracker()
132  : false);
133 
134  if (geom_.offsetDU(GeomDetEnumerators::tkDetEnum[i]) != dus.size() &&
135  dus[geom_.offsetDU(GeomDetEnumerators::tkDetEnum[i])]->type().isOuterTracker()) {
136  if (geom_.offsetDU(GeomDetEnumerators::tkDetEnum[i]) < m_detectors) {
138  }
139  }
140  }
141  LogDebug("LookingForFirstStrip") << " Chosen offset: " << m_detectors;
142 
143  m_DetParams.resize(m_detectors);
144  LogDebug("PixelCPEBase::fillDetParams():") << "caching " << m_detectors << " pixel detectors" << endl;
145  for (unsigned i = 0; i != m_detectors; ++i) {
146  auto& p = m_DetParams[i];
147  p.theDet = dynamic_cast<const PixelGeomDetUnit*>(dus[i]);
148  assert(p.theDet);
149  assert(p.theDet->index() == int(i));
150 
151  p.theOrigin = p.theDet->surface().toLocal(GlobalPoint(0, 0, 0));
152 
153  //--- p.theDet->type() returns a GeomDetType, which implements subDetector()
154  p.thePart = p.theDet->type().subDetector();
155 
156  //--- The location in of this DetUnit in a cyllindrical coord system (R,Z)
157  //--- The call goes via BoundSurface, returned by p.theDet->surface(), but
158  //--- position() is implemented in GloballyPositioned<> template
159  //--- ( BoundSurface : Surface : GloballyPositioned<float> )
160  //p.theDetR = p.theDet->surface().position().perp(); //Not used, AH
161  //p.theDetZ = p.theDet->surface().position().z(); //Not used, AH
162  //--- Define parameters for chargewidth calculation
163 
164  //--- bounds() is implemented in BoundSurface itself.
165  p.theThickness = p.theDet->surface().bounds().thickness();
166 
167  // Cache the det id for templates and generic erros
168 
169  if (theFlag_ == 0) { // for generic
170  if (LoadTemplatesFromDB_) // do only if genError requested
171  p.detTemplateId = genErrorDBObject_->getGenErrorID(p.theDet->geographicalId().rawId());
172  } else { // for templates
173  p.detTemplateId = templateDBobject_->getTemplateID(p.theDet->geographicalId());
174  }
175 
176  auto topol = &(p.theDet->specificTopology());
177  p.theTopol = topol;
178  auto const proxyT = dynamic_cast<const ProxyPixelTopology*>(p.theTopol);
179  if (proxyT)
180  p.theRecTopol = dynamic_cast<const RectangularPixelTopology*>(&(proxyT->specificTopology()));
181  else
182  p.theRecTopol = dynamic_cast<const RectangularPixelTopology*>(p.theTopol);
183  assert(p.theRecTopol);
184 
185  //--- The geometrical description of one module/plaquette
186  //p.theNumOfRow = p.theRecTopol->nrows(); // rows in x //Not used, AH. PM: leave commented out.
187  //p.theNumOfCol = p.theRecTopol->ncolumns(); // cols in y //Not used, AH. PM: leave commented out.
188  std::pair<float, float> pitchxy = p.theRecTopol->pitch();
189  p.thePitchX = pitchxy.first; // pitch along x
190  p.thePitchY = pitchxy.second; // pitch along y
191 
192  LocalVector Bfield = p.theDet->surface().toLocal(magfield_->inTesla(p.theDet->surface().position()));
193  p.bz = Bfield.z();
194  p.bx = Bfield.x();
195 
196  //--- Compute the Lorentz shifts for this detector element
197  if ((theFlag_ == 0) || DoLorentz_) { // do always for generic and if(DOLorentz) for templates
198  p.driftDirection = driftDirection(p, Bfield);
200  }
201 
202  LogDebug("PixelCPEBase::fillDetParams()") << "***** PIXEL LAYOUT *****"
203  << " thePart = " << p.thePart << " theThickness = " << p.theThickness
204  << " thePitchX = " << p.thePitchX << " thePitchY = " << p.thePitchY;
205  // << " theLShiftX = " << p.theLShiftX;
206  }
207 }
208 
209 //-----------------------------------------------------------------------------
210 // One function to cache the variables common for one DetUnit.
211 //-----------------------------------------------------------------------------
212 void PixelCPEBase::setTheClu(DetParam const& theDetParam, ClusterParam& theClusterParam) const {
213  //--- Geometric Quality Information
214  int minInX, minInY, maxInX, maxInY = 0;
215  minInX = theClusterParam.theCluster->minPixelRow();
216  minInY = theClusterParam.theCluster->minPixelCol();
217  maxInX = theClusterParam.theCluster->maxPixelRow();
218  maxInY = theClusterParam.theCluster->maxPixelCol();
219 
220  int min_row(0), min_col(0);
221  int max_row = theDetParam.theRecTopol->nrows() - 1;
222  int max_col = theDetParam.theRecTopol->ncolumns() - 1;
223 
224  if (minInX == min_row)
225  theClusterParam.edgeTypeX_ = 1;
226  else if (maxInX == max_row)
227  theClusterParam.edgeTypeX_ = 2;
228  else
229  theClusterParam.edgeTypeX_ = 0;
230 
231  if (minInY == min_col)
232  theClusterParam.edgeTypeY_ = 1;
233  else if (maxInY == max_col)
234  theClusterParam.edgeTypeY_ = 2;
235  else
236  theClusterParam.edgeTypeY_ = 0;
237 
238  theClusterParam.isOnEdge_ = (theClusterParam.edgeTypeX_ || theClusterParam.edgeTypeY_);
239 
240  // &&& FOR NOW UNUSED. KEEP IT IN CASE WE WANT TO USE IT IN THE FUTURE
241  // Bad Pixels have their charge set to 0 in the clusterizer
242  //hasBadPixels_ = false;
243  //for(unsigned int i=0; i<theClusterParam.theCluster->pixelADC().size(); ++i) {
244  //if(theClusterParam.theCluster->pixelADC()[i] == 0) { hasBadPixels_ = true; break;}
245  //}
246 
247  theClusterParam.spansTwoROCs_ = theDetParam.theRecTopol->containsBigPixelInX(minInX, maxInX) |
248  theDetParam.theRecTopol->containsBigPixelInY(minInY, maxInY);
249 }
250 
251 //-----------------------------------------------------------------------------
252 // Compute alpha_ and beta_ from the LocalTrajectoryParameters.
253 // Note: should become const after both localParameters() become const.
254 //-----------------------------------------------------------------------------
256  ClusterParam& theClusterParam,
257  const LocalTrajectoryParameters& ltp) const {
258  theClusterParam.cotalpha = ltp.dxdz();
259  theClusterParam.cotbeta = ltp.dydz();
260 
261  LocalPoint trk_lp = ltp.position();
262  theClusterParam.trk_lp_x = trk_lp.x();
263  theClusterParam.trk_lp_y = trk_lp.y();
264 
265  theClusterParam.with_track_angle = true;
266 
267  // GG: needed to correct for bows/kinks
268  theClusterParam.loc_trk_pred = Topology::LocalTrackPred(
269  theClusterParam.trk_lp_x, theClusterParam.trk_lp_y, theClusterParam.cotalpha, theClusterParam.cotbeta);
270 }
271 
272 //-----------------------------------------------------------------------------
273 // Estimate theAlpha for barrel, based on the det position.
274 // &&& Needs to be consolidated from the above.
275 //-----------------------------------------------------------------------------
276 //float
277 //PixelCPEBase::estimatedAlphaForBarrel(float centerx) const
278 //{
279 // float tanalpha = theSign * (centerx-theOffsetX) * thePitchX / theDetR;
280 // return PI/2.0 - atan(tanalpha);
281 //}
282 
283 //-----------------------------------------------------------------------------
284 // Compute alpha_ and beta_ from the position of this DetUnit.
285 // &&& DOES NOT WORK FOR NOW. d.k. 6/06
286 // The angles from dets are calculated internaly in the PixelCPEInitial class
287 //-----------------------------------------------------------------------------
288 // G. Giurgiu, 12/01/06 : implement the function
289 void PixelCPEBase::computeAnglesFromDetPosition(DetParam const& theDetParam, ClusterParam& theClusterParam) const {
290  LocalPoint lp = theDetParam.theTopol->localPosition(
291  MeasurementPoint(theClusterParam.theCluster->x(), theClusterParam.theCluster->y()));
292  auto gvx = lp.x() - theDetParam.theOrigin.x();
293  auto gvy = lp.y() - theDetParam.theOrigin.y();
294  auto gvz = -1.f / theDetParam.theOrigin.z();
295  //--- Note that the normalization is not required as only the ratio used
296 
297  //theClusterParam.zneg = (gvz < 0); // Not used, AH
298 
299  // calculate angles
300  theClusterParam.cotalpha = gvx * gvz;
301  theClusterParam.cotbeta = gvy * gvz;
302 
303  theClusterParam.with_track_angle = false;
304 
305  /*
306  // used only in dberror param...
307  auto alpha = HALF_PI - std::atan(cotalpha_);
308  auto beta = HALF_PI - std::atan(cotbeta_);
309  if (zneg) { beta -=PI; alpha -=PI;}
310 
311  auto alpha_ = atan2( gv_dot_gvz, gv_dot_gvx );
312  auto beta_ = atan2( gv_dot_gvz, gv_dot_gvy );
313 
314  assert(std::abs(std::round(alpha*10000.f)-std::round(alpha_*10000.f))<2);
315  assert(std::abs(std::round(beta*10000.f)-std::round(beta_*10000.f))<2);
316  */
317 }
318 
319 //------------------------------------------------------------------------
321  auto i = det.index();
322  //cout << "get parameters of detector " << i << endl;
323  assert(i < int(m_DetParams.size()));
324  //if (i>=int(m_DetParams.size())) m_DetParams.resize(i+1); // should never happen!
325  const DetParam& p = m_DetParams[i];
326  return p;
327 }
328 
329 //-----------------------------------------------------------------------------
330 // Drift direction.
331 // Works OK for barrel and forward.
332 // The formulas used for dir_x,y,z have to be exactly the same as the ones
333 // used in the digitizer (SiPixelDigitizerAlgorithm.cc).
334 // &&& PM: needs to be consolidated, discuss with PS.
335 //-----------------------------------------------------------------------------
337  Frame detFrame(theDetParam.theDet->surface().position(), theDetParam.theDet->surface().rotation());
338  LocalVector Bfield = detFrame.toLocal(bfield);
339  return driftDirection(theDetParam, Bfield);
340 }
341 
343  // Use LA from DB or from config
344  float langle = 0.;
345  if (!useLAOffsetFromConfig_) { // get it from DB
346  if (lorentzAngle_ != nullptr) { // a real LA object
347  langle = lorentzAngle_->getLorentzAngle(theDetParam.theDet->geographicalId().rawId());
348  LogDebug("PixelCPEBase::driftDirection()")
349  << " la " << langle << " " << theDetParam.theDet->geographicalId().rawId() << endl;
350  } else { // no LA, unused
351  langle = 0; // set to a fake value
352  LogDebug("PixelCPEBase::driftDirection()") << " LA object is NULL, assume LA = 0" << endl; //dk
353  }
354  LogDebug("PixelCPEBase::driftDirection()") << " Will use LA Offset from DB " << langle << endl;
355  } else { // from config file
356  langle = lAOffset_;
357  LogDebug("PixelCPEBase::driftDirection()") << " Will use LA Offset from config " << langle << endl;
358  }
359 
360  // Now do the LA width stuff
361  theDetParam.widthLAFractionX = 1.; // predefine to 1 (default) if things fail
362  theDetParam.widthLAFractionY = 1.;
363 
364  // Compute the charge width, generic only
365  if (theFlag_ == 0) {
366  if (useLAWidthFromDB_ && (lorentzAngleWidth_ != nullptr)) {
367  // take it from a separate, special LA DB object (forWidth)
368 
369  auto langleWidth = lorentzAngleWidth_->getLorentzAngle(theDetParam.theDet->geographicalId().rawId());
370  if (langleWidth != 0.0)
371  theDetParam.widthLAFractionX = std::abs(langleWidth / langle);
372  // leave the widthLAFractionY=1.
373  //cout<<" LAWidth lorentz width "<<theDetParam.widthLAFractionX<<" "<<theDetParam.widthLAFractionY<<endl;
374 
375  } else if (useLAWidthFromConfig_) { // get from config
376 
377  double lAWidth = 0;
379  lAWidth = lAWidthBPix_; // barrel
380  else
381  lAWidth = lAWidthFPix_;
382 
383  if (langle != 0.0)
384  theDetParam.widthLAFractionX = std::abs(lAWidth / langle);
385  // fix the FractionY at 1
386 
387  //cout<<" Lorentz width from config "<<theDetParam.widthLAFractionX<<" "<<theDetParam.widthLAFractionY<<endl;
388 
389  } else { // get if from the offset LA (old method used until 2013)
390  // do nothing
391  //cout<<" Old default LA width method "<<theDetParam.widthLAFractionX<<" "<<theDetParam.widthLAFractionY<<endl;
392  }
393 
394  //cout<<" Final LA fraction "<<theDetParam.widthLAFractionX<<" "<<theDetParam.widthLAFractionY<<endl;
395 
396  } // if flag
397 
398  float alpha2 = alpha2Order ? langle * langle : 0; //
399 
400  // **********************************************************************
401  // Our convention is the following:
402  // +x is defined by the direction of the Lorentz drift!
403  // +z is defined by the direction of E field (so electrons always go into -z!)
404  // +y is defined by +x and +z, and it turns out to be always opposite to the +B field.
405  // **********************************************************************
406 
407  float dir_x = -(langle * Bfield.y() + alpha2 * Bfield.z() * Bfield.x());
408  float dir_y = (langle * Bfield.x() - alpha2 * Bfield.z() * Bfield.y());
409  float dir_z = -(1.f + alpha2 * Bfield.z() * Bfield.z());
410  auto scale = 1.f / std::abs(dir_z); // same as 1 + alpha2*Bfield.z()*Bfield.z()
411  LocalVector dd(dir_x * scale, dir_y * scale, -1.f); // last is -1 !
412 
413  LogDebug("PixelCPEBase") << " The drift direction in local coordinate is " << dd;
414 
415  return dd;
416 }
417 
418 //-----------------------------------------------------------------------------
419 // One-shot computation of the driftDirection and both lorentz shifts
420 //-----------------------------------------------------------------------------
422  // Max shift (at the other side of the sensor) in cm
423  theDetParam.lorentzShiftInCmX =
424  theDetParam.driftDirection.x() / theDetParam.driftDirection.z() * theDetParam.theThickness; //
425  theDetParam.lorentzShiftInCmY =
426  theDetParam.driftDirection.y() / theDetParam.driftDirection.z() * theDetParam.theThickness; //
427 
428  LogDebug("PixelCPEBase::computeLorentzShifts()")
429  << " lorentzShiftsInCmX,Y = " << theDetParam.lorentzShiftInCmX << " " << theDetParam.lorentzShiftInCmY << " "
430  << theDetParam.driftDirection;
431 }
432 
433 //-----------------------------------------------------------------------------
438 //-----------------------------------------------------------------------------
441  if (theClusterParam.hasFilledProb_) {
442  float probabilityXY = 0;
443  if (theClusterParam.filled_from_2d)
444  probabilityXY = theClusterParam.probabilityX_;
445  else if (theClusterParam.probabilityX_ != 0 && theClusterParam.probabilityY_ != 0)
446  probabilityXY = theClusterParam.probabilityX_ * theClusterParam.probabilityY_ *
447  (1.f - std::log(theClusterParam.probabilityX_ * theClusterParam.probabilityY_));
448  SiPixelRecHitQuality::thePacking.setProbabilityXY(probabilityXY, qualWord);
449 
451  }
452  SiPixelRecHitQuality::thePacking.setQBin(theClusterParam.qBin_, qualWord);
453 
454  SiPixelRecHitQuality::thePacking.setIsOnEdge(theClusterParam.isOnEdge_, qualWord);
455 
457 
459 
461 
462  return qualWord;
463 }
464 
466  desc.add<bool>("LoadTemplatesFromDB", true);
467  desc.add<bool>("Alpha2Order", true);
468  desc.add<int>("ClusterProbComputationFlag", 0);
469  desc.add<bool>("useLAWidthFromDB", true);
470  desc.add<double>("lAOffset", 0.0);
471  desc.add<double>("lAWidthBPix", 0.0);
472  desc.add<double>("lAWidthFPix", 0.0);
473 }
Vector3DBase< float, LocalTag >
GloballyPositioned
Definition: GloballyPositioned.h:18
SiPixelCluster::minPixelCol
int minPixelCol() const
Definition: SiPixelCluster.h:140
PixelCPEBase::ClusterParam
Definition: PixelCPEBase.h:80
PixelCPEBase::useLAOffsetFromConfig_
bool useLAOffsetFromConfig_
Definition: PixelCPEBase.h:230
PixelCPEBase::DetParam::theTopol
const PixelTopology * theTopol
Definition: PixelCPEBase.h:60
PixelCPEBase::DetParam::lorentzShiftInCmY
float lorentzShiftInCmY
Definition: PixelCPEBase.h:75
PixelCPEBase::DetParam::widthLAFractionX
float widthLAFractionX
Definition: PixelCPEBase.h:72
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
PixelCPEBase::templateDBobject_
const SiPixelTemplateDBObject * templateDBobject_
Definition: PixelCPEBase.h:248
mps_fire.i
i
Definition: mps_fire.py:428
LocalTrajectoryParameters::dxdz
float dxdz() const
Definition: LocalTrajectoryParameters.h:159
MessageLogger.h
funct::false
false
Definition: Factorize.h:29
GeomDet
Definition: GeomDet.h:27
L1EGammaCrystalsEmulatorProducer_cfi.scale
scale
Definition: L1EGammaCrystalsEmulatorProducer_cfi.py:10
RectangularPixelTopology.h
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
PixelCPEBase::DetParam::theRecTopol
const RectangularPixelTopology * theRecTopol
Definition: PixelCPEBase.h:61
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
PixelClusterParameterEstimator::clusterProbComputationFlag_
unsigned int clusterProbComputationFlag_
Definition: PixelClusterParameterEstimator.h:68
PixelCPEBase::DetParam::theThickness
float theThickness
Definition: PixelCPEBase.h:65
TrackerTopology
Definition: TrackerTopology.h:16
PixelCPEBase::genErrorDBObject_
const SiPixelGenErrorDBObject * genErrorDBObject_
Definition: PixelCPEBase.h:245
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
SiPixelRecHitQuality::Packing::setSpansTwoROCs
void setSpansTwoROCs(bool flag, QualWordType &qualWord) const
Definition: SiPixelRecHitQuality.h:157
SiPixelCluster::y
float y() const
Definition: SiPixelCluster.h:113
SiPixelCluster::maxPixelCol
int maxPixelCol() const
Definition: SiPixelCluster.h:141
PixelCPEBase::DetParam::widthLAFractionY
float widthLAFractionY
Definition: PixelCPEBase.h:73
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
PixelCPEBase::useLAWidthFromDB_
bool useLAWidthFromDB_
Definition: PixelCPEBase.h:232
LocalTrajectoryParameters::dydz
float dydz() const
Definition: LocalTrajectoryParameters.h:160
cms::cuda::assert
assert(be >=bs)
SiPixelCluster::maxPixelRow
int maxPixelRow() const
Definition: SiPixelCluster.h:139
SiPixelRecHitQuality::Packing::setIsOnEdge
void setIsOnEdge(bool flag, QualWordType &qualWord) const
Definition: SiPixelRecHitQuality.h:153
PixelCPEBase.h
PixelCPEBase::driftDirection
LocalVector driftDirection(DetParam &theDetParam, GlobalVector bfield) const
Definition: PixelCPEBase.cc:336
PixelCPEBase::geom_
const TrackerGeometry & geom_
Definition: PixelCPEBase.h:239
Topology::localPosition
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
GeomDet::index
int index() const
Definition: GeomDet.h:83
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
PixelCPEBase::theFlag_
int theFlag_
Definition: PixelCPEBase.h:236
RectangularPixelTopology::containsBigPixelInY
bool containsBigPixelInY(int iymin, int iymax) const override
Definition: RectangularPixelTopology.h:135
PixelCPEBase::alpha2Order
bool alpha2Order
Definition: PixelCPEBase.h:249
PixelCPEBase::detParam
DetParam const & detParam(const GeomDetUnit &det) const
Definition: PixelCPEBase.cc:320
PixelCPEBase::ClusterParam::hasFilledProb_
bool hasFilledProb_
Definition: PixelCPEBase.h:110
PixelCPEBase::DetParam::theDet
const PixelGeomDetUnit * theDet
Definition: PixelCPEBase.h:58
PixelCPEBase::ClusterParam::theCluster
const SiPixelCluster * theCluster
Definition: PixelCPEBase.h:85
PixelCPEBase::computeAnglesFromTrajectory
void computeAnglesFromTrajectory(DetParam const &theDetParam, ClusterParam &theClusterParam, const LocalTrajectoryParameters &ltp) const
Definition: PixelCPEBase.cc:255
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
LocalTrajectoryParameters
Definition: LocalTrajectoryParameters.h:25
SiPixelLorentzAngle::getLorentzAngle
float getLorentzAngle(const uint32_t &) const
Definition: SiPixelLorentzAngle.cc:14
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
RectangularPixelTopology::containsBigPixelInX
bool containsBigPixelInX(int ixmin, int ixmax) const override
Definition: RectangularPixelTopology.h:132
LocalTrajectoryParameters::position
LocalPoint position() const
Local x and y position coordinates.
Definition: LocalTrajectoryParameters.h:85
SiPixelRecHitQuality::thePacking
static const Packing thePacking
Definition: SiPixelRecHitQuality.h:166
TrackerGeometry::detUnits
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
Definition: TrackerGeometry.h:61
PixelCPEBase::m_DetParams
DetParams m_DetParams
Definition: PixelCPEBase.h:291
SiPixelRecHitQuality::QualWordType
unsigned int QualWordType
Definition: SiPixelRecHitQuality.h:10
GeomDetEnumerators::tkDetEnum
constexpr SubDetector tkDetEnum[8]
Definition: GeomDetEnumerators.h:37
SiPixelCluster::minPixelRow
int minPixelRow() const
Definition: SiPixelCluster.h:138
SiPixelLorentzAngle
Definition: SiPixelLorentzAngle.h:11
Topology::LocalTrackPred
Definition: Topology.h:56
RectangularPixelTopology::nrows
int nrows() const override
Definition: RectangularPixelTopology.h:153
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
ProxyPixelTopology.h
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
SiPixelRecHitQuality::Packing::setQBin
void setQBin(int qbin, QualWordType &qualWord) const
Definition: SiPixelRecHitQuality.h:144
PixelCPEBase::useLAWidthFromConfig_
bool useLAWidthFromConfig_
Definition: PixelCPEBase.h:231
Point3DBase< float, LocalTag >
createTree.dd
string dd
Definition: createTree.py:154
PixelCPEBase::ClusterParam::filled_from_2d
bool filled_from_2d
Definition: PixelCPEBase.h:113
PixelCPEBase::ClusterParam::spansTwoROCs_
bool spansTwoROCs_
Definition: PixelCPEBase.h:109
SiPixelGenErrorDBObject::getGenErrorID
short getGenErrorID(const uint32_t &detid) const
Definition: SiPixelGenErrorDBObject.h:89
MeasurementPoint
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
Definition: MeasurementPoint.h:12
GeomDet::geographicalId
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:64
PixelCPEBase::ClusterParam::hasBadPixels_
bool hasBadPixels_
Definition: PixelCPEBase.h:108
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
edm::ParameterSet
Definition: ParameterSet.h:47
PixelCPEBase::setTheClu
void setTheClu(DetParam const &, ClusterParam &theClusterParam) const
Definition: PixelCPEBase.cc:212
SiPixelCluster::x
float x() const
Definition: SiPixelCluster.h:105
SiPixelRecHitQuality::Packing::setHasBadPixels
void setHasBadPixels(bool flag, QualWordType &qualWord) const
Definition: SiPixelRecHitQuality.h:154
PixelCPEBase::lorentzAngle_
const SiPixelLorentzAngle * lorentzAngle_
Definition: PixelCPEBase.h:242
PixelCPEBase::lAWidthFPix_
float lAWidthFPix_
Definition: PixelCPEBase.h:228
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
SiPixelTemplateDBObject
Definition: SiPixelTemplateDBObject.h:16
createfilelist.int
int
Definition: createfilelist.py:10
GeomDetEnumerators::isTrackerPixel
bool isTrackerPixel(GeomDetEnumerators::SubDetector m)
Definition: GeomDetEnumerators.cc:68
PixelCPEBase::ClusterParam::probabilityY_
float probabilityY_
Definition: PixelCPEBase.h:103
PixelCPEBase::theVerboseLevel
int theVerboseLevel
Definition: PixelCPEBase.h:235
GeomDetEnumerators::isBarrel
bool isBarrel(GeomDetEnumerators::SubDetector m)
Definition: GeomDetEnumerators.cc:57
PixelCPEBase::DoLorentz_
bool DoLorentz_
Definition: PixelCPEBase.h:251
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
MagneticField.h
PixelCPEBase::lorentzAngleWidth_
const SiPixelLorentzAngle * lorentzAngleWidth_
Definition: PixelCPEBase.h:243
PixelCPEBase::LoadTemplatesFromDB_
bool LoadTemplatesFromDB_
Definition: PixelCPEBase.h:252
SiPixelTemplateDBObject::getTemplateID
short getTemplateID(const uint32_t &detid) const
Definition: SiPixelTemplateDBObject.h:131
PixelCPEBase::DetParam::thePart
GeomDetType::SubDetector thePart
Definition: PixelCPEBase.h:63
PixelCPEBase::DetParam::lorentzShiftInCmX
float lorentzShiftInCmX
Definition: PixelCPEBase.h:74
PixelCPEBase::ClusterParam::edgeTypeY_
int edgeTypeY_
Definition: PixelCPEBase.h:117
PixelCPEBase::computeAnglesFromDetPosition
void computeAnglesFromDetPosition(DetParam const &theDetParam, ClusterParam &theClusterParam) const
Definition: PixelCPEBase.cc:289
GloballyPositioned::position
const PositionType & position() const
Definition: GloballyPositioned.h:36
mag
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Definition: Basic3DVectorLD.h:127
PixelCPEBase::DetParam
Definition: PixelCPEBase.h:56
PixelCPEBase::ClusterParam::probabilityX_
float probabilityX_
Definition: PixelCPEBase.h:102
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
PixelCPEBase::ClusterParam::probabilityQ_
float probabilityQ_
Definition: PixelCPEBase.h:104
RectangularPixelTopology::ncolumns
int ncolumns() const override
Definition: RectangularPixelTopology.h:155
SiPixelRecHitQuality::Packing::setProbabilityQ
void setProbabilityQ(float prob, QualWordType &qualWord) const
Definition: SiPixelRecHitQuality.h:132
PixelCPEBase::ClusterParam::isOnEdge_
bool isOnEdge_
Definition: PixelCPEBase.h:107
PixelCPEBase::DetParam::theOrigin
Local3DPoint theOrigin
Definition: PixelCPEBase.h:64
PixelCPEBase::DetParam::driftDirection
LocalVector driftDirection
Definition: PixelCPEBase.h:71
PixelGeomDetUnit.h
PixelCPEBase::computeLorentzShifts
void computeLorentzShifts(DetParam &) const
Definition: PixelCPEBase.cc:421
PixelCPEBase::ClusterParam::loc_trk_pred
Topology::LocalTrackPred loc_trk_pred
Definition: PixelCPEBase.h:99
PixelCPEBase::fillPSetDescription
static void fillPSetDescription(edm::ParameterSetDescription &desc)
Definition: PixelCPEBase.cc:465
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
PixelCPEBase::ClusterParam::trk_lp_x
float trk_lp_x
Definition: PixelCPEBase.h:93
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
PixelCPEBase::rawQualityWord
SiPixelRecHitQuality::QualWordType rawQualityWord(ClusterParam &theClusterParam) const
Definition: PixelCPEBase.cc:439
PixelCPEBase::ClusterParam::cotbeta
float cotbeta
Definition: PixelCPEBase.h:89
SiPixelGenErrorDBObject
Definition: SiPixelGenErrorDBObject.h:16
SiPixelRecHitQuality::Packing::setProbabilityXY
void setProbabilityXY(float prob, QualWordType &qualWord) const
Definition: SiPixelRecHitQuality.h:120
PixelCPEBase::lAWidthBPix_
float lAWidthBPix_
Definition: PixelCPEBase.h:227
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
PixelCPEBase::fillDetParams
void fillDetParams()
Definition: PixelCPEBase.cc:120
PixelCPEBase::ClusterParam::cotalpha
float cotalpha
Definition: PixelCPEBase.h:88
SiPixelRecHitQuality::Packing::setHasFilledProb
void setHasFilledProb(bool flag, QualWordType &qualWord) const
Definition: SiPixelRecHitQuality.h:160
GloballyPositioned::rotation
const RotationType & rotation() const
Definition: GloballyPositioned.h:38
PixelCPEBase::ClusterParam::trk_lp_y
float trk_lp_y
Definition: PixelCPEBase.h:94
MagneticField
Definition: MagneticField.h:19
TrackerGeometry::offsetDU
unsigned int offsetDU(SubDetector sid) const
Definition: TrackerGeometry.h:72
PixelCPEBase::ClusterParam::with_track_angle
bool with_track_angle
Definition: PixelCPEBase.h:112
PixelCPEBase::ClusterParam::edgeTypeX_
int edgeTypeX_
Definition: PixelCPEBase.h:116
PixelCPEBase::magfield_
const MagneticField * magfield_
Definition: PixelCPEBase.h:238
RemoveAddSevLevel.flag
flag
Definition: RemoveAddSevLevel.py:116
PixelCPEBase::lAOffset_
float lAOffset_
Definition: PixelCPEBase.h:226
TrackerGeometry
Definition: TrackerGeometry.h:14
PixelCPEBase::ClusterParam::qBin_
int qBin_
Definition: PixelCPEBase.h:105