CMS 3D CMS Logo

DeDxTools.cc
Go to the documentation of this file.
2 #include <vector>
3 
4 #include <numeric>
5 namespace DeDxTools {
6  using namespace std;
7  using namespace reco;
8 
9  bool shapeSelection(const SiStripCluster& clus) {
10  // ---------------- COMPTAGE DU NOMBRE DE MAXIMA --------------------------
11  //----------------------------------------------------------------------------
12  // printf("ShapeTest \n");
13  auto const& ampls = clus.amplitudes();
14  Int_t NofMax = 0;
15  Int_t recur255 = 1;
16  Int_t recur254 = 1;
17  bool MaxOnStart = false;
18  bool MaxInMiddle = false, MaxOnEnd = false;
19  Int_t MaxPos = 0;
20  // Début avec max
21  if (ampls.size() != 1 &&
22  ((ampls[0] > ampls[1]) ||
23  (ampls.size() > 2 && ampls[0] == ampls[1] && ampls[1] > ampls[2] && ampls[0] != 254 && ampls[0] != 255) ||
24  (ampls.size() == 2 && ampls[0] == ampls[1] && ampls[0] != 254 && ampls[0] != 255))) {
25  NofMax = NofMax + 1;
26  MaxOnStart = true;
27  }
28 
29  // Maximum entouré
30  if (ampls.size() > 2) {
31  for (unsigned int i = 1; i < ampls.size() - 1U; i++) {
32  if ((ampls[i] > ampls[i - 1] && ampls[i] > ampls[i + 1]) ||
33  (ampls.size() > 3 && i > 0 && i < ampls.size() - 2U && ampls[i] == ampls[i + 1] &&
34  ampls[i] > ampls[i - 1] && ampls[i] > ampls[i + 2] && ampls[i] != 254 && ampls[i] != 255)) {
35  NofMax = NofMax + 1;
36  MaxInMiddle = true;
37  MaxPos = i;
38  }
39  if (ampls[i] == 255 && ampls[i] == ampls[i - 1]) {
40  recur255 = recur255 + 1;
41  MaxPos = i - (recur255 / 2);
42  if (ampls[i] > ampls[i + 1]) {
43  NofMax = NofMax + 1;
44  MaxInMiddle = true;
45  }
46  }
47  if (ampls[i] == 254 && ampls[i] == ampls[i - 1]) {
48  recur254 = recur254 + 1;
49  MaxPos = i - (recur254 / 2);
50  if (ampls[i] > ampls[i + 1]) {
51  NofMax = NofMax + 1;
52  MaxInMiddle = true;
53  }
54  }
55  }
56  }
57  // Fin avec un max
58  if (ampls.size() > 1) {
59  if (ampls[ampls.size() - 1] > ampls[ampls.size() - 2] ||
60  (ampls.size() > 2 && ampls[ampls.size() - 1] == ampls[ampls.size() - 2] &&
61  ampls[ampls.size() - 2] > ampls[ampls.size() - 3]) ||
62  ampls[ampls.size() - 1] == 255) {
63  NofMax = NofMax + 1;
64  MaxOnEnd = true;
65  }
66  }
67  // Si une seule strip touchée
68  if (ampls.size() == 1) {
69  NofMax = 1;
70  }
71 
72  // --- SELECTION EN FONCTION DE LA FORME POUR LES MAXIMA UNIQUES ---------
73  //------------------------------------------------------------------------
74  /*
75  ____
76  | |____
77  ____| | |
78  | | | |____
79  ____| | | | |
80  | | | | | |____
81  __|____|____|____|____|____|____|__
82  C_Mnn C_Mn C_M C_D C_Dn C_Dnn
83  */
84  // bool shapetest=true;
85  bool shapecdtn = false;
86 
87  // Float_t C_M; Float_t C_D; Float_t C_Mn; Float_t C_Dn; Float_t C_Mnn; Float_t C_Dnn;
88  Float_t C_M = 0.0;
89  Float_t C_D = 0.0;
90  Float_t C_Mn = 10000;
91  Float_t C_Dn = 10000;
92  Float_t C_Mnn = 10000;
93  Float_t C_Dnn = 10000;
94  Int_t CDPos;
95  Float_t coeff1 = 1.7;
96  Float_t coeff2 = 2.0;
97  Float_t coeffn = 0.10;
98  Float_t coeffnn = 0.02;
99  Float_t noise = 4.0;
100 
101  if (NofMax == 1) {
102  if (MaxOnStart == true) {
103  C_M = (Float_t)ampls[0];
104  C_D = (Float_t)ampls[1];
105  if (ampls.size() < 3)
106  shapecdtn = true;
107  else if (ampls.size() == 3) {
108  C_Dn = (Float_t)ampls[2];
109  if (C_Dn <= coeff1 * coeffn * C_D + coeff2 * coeffnn * C_M + 2 * noise || C_D == 255)
110  shapecdtn = true;
111  } else if (ampls.size() > 3) {
112  C_Dn = (Float_t)ampls[2];
113  C_Dnn = (Float_t)ampls[3];
114  if ((C_Dn <= coeff1 * coeffn * C_D + coeff2 * coeffnn * C_M + 2 * noise || C_D == 255) &&
115  C_Dnn <= coeff1 * coeffn * C_Dn + coeff2 * coeffnn * C_D + 2 * noise) {
116  shapecdtn = true;
117  }
118  }
119  }
120 
121  if (MaxOnEnd == true) {
122  C_M = (Float_t)ampls[ampls.size() - 1];
123  C_D = (Float_t)ampls[ampls.size() - 2];
124  if (ampls.size() < 3)
125  shapecdtn = true;
126  else if (ampls.size() == 3) {
127  C_Dn = (Float_t)ampls[0];
128  if (C_Dn <= coeff1 * coeffn * C_D + coeff2 * coeffnn * C_M + 2 * noise || C_D == 255)
129  shapecdtn = true;
130  } else if (ampls.size() > 3) {
131  C_Dn = (Float_t)ampls[ampls.size() - 3];
132  C_Dnn = (Float_t)ampls[ampls.size() - 4];
133  if ((C_Dn <= coeff1 * coeffn * C_D + coeff2 * coeffnn * C_M + 2 * noise || C_D == 255) &&
134  C_Dnn <= coeff1 * coeffn * C_Dn + coeff2 * coeffnn * C_D + 2 * noise) {
135  shapecdtn = true;
136  }
137  }
138  }
139 
140  if (MaxInMiddle == true) {
141  C_M = (Float_t)ampls[MaxPos];
142  int LeftOfMaxPos = MaxPos - 1;
143  if (LeftOfMaxPos <= 0)
144  LeftOfMaxPos = 0;
145  int RightOfMaxPos = MaxPos + 1;
146  if (RightOfMaxPos >= (int)ampls.size())
147  RightOfMaxPos = ampls.size() - 1;
148  //int after = RightOfMaxPos; int before = LeftOfMaxPos; if (after>=(int)ampls.size() || before<0) std::cout<<"invalid read MaxPos:"<<MaxPos <<"size:"<<ampls.size() <<std::endl;
149  if (ampls[LeftOfMaxPos] < ampls[RightOfMaxPos]) {
150  C_D = (Float_t)ampls[RightOfMaxPos];
151  C_Mn = (Float_t)ampls[LeftOfMaxPos];
152  CDPos = RightOfMaxPos;
153  } else {
154  C_D = (Float_t)ampls[LeftOfMaxPos];
155  C_Mn = (Float_t)ampls[RightOfMaxPos];
156  CDPos = LeftOfMaxPos;
157  }
158  if (C_Mn < coeff1 * coeffn * C_M + coeff2 * coeffnn * C_D + 2 * noise || C_M == 255) {
159  if (ampls.size() == 3)
160  shapecdtn = true;
161  else if (ampls.size() > 3) {
162  if (CDPos > MaxPos) {
163  if (ampls.size() - CDPos - 1 == 0) {
164  C_Dn = 0;
165  C_Dnn = 0;
166  }
167  if (ampls.size() - CDPos - 1 == 1) {
168  C_Dn = (Float_t)ampls[CDPos + 1];
169  C_Dnn = 0;
170  }
171  if (ampls.size() - CDPos - 1 > 1) {
172  C_Dn = (Float_t)ampls[CDPos + 1];
173  C_Dnn = (Float_t)ampls[CDPos + 2];
174  }
175  if (MaxPos >= 2) {
176  C_Mnn = (Float_t)ampls[MaxPos - 2];
177  } else if (MaxPos < 2)
178  C_Mnn = 0;
179  }
180  if (CDPos < MaxPos) {
181  if (CDPos == 0) {
182  C_Dn = 0;
183  C_Dnn = 0;
184  }
185  if (CDPos == 1) {
186  C_Dn = (Float_t)ampls[0];
187  C_Dnn = 0;
188  }
189  if (CDPos > 1) {
190  C_Dn = (Float_t)ampls[CDPos - 1];
191  C_Dnn = (Float_t)ampls[CDPos - 2];
192  }
193  if (ampls.size() - LeftOfMaxPos > 1 && MaxPos + 2 < (int)(ampls.size()) - 1) {
194  C_Mnn = (Float_t)ampls[MaxPos + 2];
195  } else
196  C_Mnn = 0;
197  }
198  if ((C_Dn <= coeff1 * coeffn * C_D + coeff2 * coeffnn * C_M + 2 * noise || C_D == 255) &&
199  C_Mnn <= coeff1 * coeffn * C_Mn + coeff2 * coeffnn * C_M + 2 * noise &&
200  C_Dnn <= coeff1 * coeffn * C_Dn + coeff2 * coeffnn * C_D + 2 * noise) {
201  shapecdtn = true;
202  }
203  }
204  }
205  }
206  }
207  if (ampls.size() == 1) {
208  shapecdtn = true;
209  }
210 
211  return shapecdtn;
212  }
213 
214  int getCharge(const SiStripCluster* cluster,
215  int& nSatStrip,
216  const GeomDetUnit& detUnit,
217  const std::vector<std::vector<float> >& calibGains,
218  const unsigned int& m_off) {
219  const auto& Ampls = cluster->amplitudes();
220 
221  nSatStrip = 0;
222  int charge = 0;
223 
224  if (calibGains.empty()) {
225  for (unsigned int i = 0; i < Ampls.size(); i++) {
226  int calibratedCharge = Ampls[i];
227  charge += calibratedCharge;
228  if (calibratedCharge >= 254)
229  nSatStrip++;
230  }
231  } else {
232  for (unsigned int i = 0; i < Ampls.size(); i++) {
233  int calibratedCharge = Ampls[i];
234 
235  auto& gains = calibGains[detUnit.index() - m_off];
236  calibratedCharge = (int)(calibratedCharge / gains[(cluster->firstStrip() + i) / 128]);
237  if (calibratedCharge >= 255) {
238  if (calibratedCharge >= 1025)
239  calibratedCharge = 255;
240  else
241  calibratedCharge = 254;
242  }
243 
244  charge += calibratedCharge;
245  if (calibratedCharge >= 254)
246  nSatStrip++;
247  }
248  }
249  return charge;
250  }
251 
252  void makeCalibrationMap(const std::string& m_calibrationPath,
253  const TrackerGeometry& tkGeom,
254  std::vector<std::vector<float> >& calibGains,
255  const unsigned int& m_off) {
256  auto const& dus = tkGeom.detUnits();
257  calibGains.resize(dus.size() - m_off);
258 
259  TChain* t1 = new TChain("SiStripCalib/APVGain");
260  t1->Add(m_calibrationPath.c_str());
261 
262  unsigned int tree_DetId;
263  unsigned char tree_APVId;
264  double tree_Gain;
265  t1->SetBranchAddress("DetId", &tree_DetId);
266  t1->SetBranchAddress("APVId", &tree_APVId);
267  t1->SetBranchAddress("Gain", &tree_Gain);
268 
269  for (unsigned int ientry = 0; ientry < t1->GetEntries(); ientry++) {
270  t1->GetEntry(ientry);
271  auto& gains = calibGains[tkGeom.idToDetUnit(DetId(tree_DetId))->index() - m_off];
272  if (gains.size() < (size_t)(tree_APVId + 1)) {
273  gains.resize(tree_APVId + 1);
274  }
275  gains[tree_APVId] = tree_Gain;
276  }
277  t1->Delete();
278  }
279 
281  const edm::EventSetup& iSetup,
284  TH3F*& Prob_ChargePath) {
286  if (strcmp(Reccord.c_str(), "SiStripDeDxMip_3D_Rcd") == 0) {
287  iSetup.get<SiStripDeDxMip_3D_Rcd>().get(deDxMapHandle);
288  } else if (strcmp(Reccord.c_str(), "SiStripDeDxPion_3D_Rcd") == 0) {
289  iSetup.get<SiStripDeDxPion_3D_Rcd>().get(deDxMapHandle);
290  } else if (strcmp(Reccord.c_str(), "SiStripDeDxKaon_3D_Rcd") == 0) {
291  iSetup.get<SiStripDeDxKaon_3D_Rcd>().get(deDxMapHandle);
292  } else if (strcmp(Reccord.c_str(), "SiStripDeDxProton_3D_Rcd") == 0) {
293  iSetup.get<SiStripDeDxProton_3D_Rcd>().get(deDxMapHandle);
294  } else if (strcmp(Reccord.c_str(), "SiStripDeDxElectron_3D_Rcd") == 0) {
295  iSetup.get<SiStripDeDxElectron_3D_Rcd>().get(deDxMapHandle);
296  } else {
297  throw cms::Exception("WrongReccord for dEdx") << "The reccord : " << Reccord << "is unknown\n";
298  }
299 
300  float xmin = deDxMapHandle->rangeX().min;
301  float xmax = deDxMapHandle->rangeX().max;
302  float ymin = deDxMapHandle->rangeY().min;
303  float ymax = deDxMapHandle->rangeY().max;
304  float zmin = deDxMapHandle->rangeZ().min;
305  float zmax = deDxMapHandle->rangeZ().max;
306 
307  if (Prob_ChargePath)
308  delete Prob_ChargePath;
309  Prob_ChargePath = new TH3F("Prob_ChargePath",
310  "Prob_ChargePath",
311  deDxMapHandle->numberOfBinsX(),
312  xmin,
313  xmax,
314  deDxMapHandle->numberOfBinsY(),
315  ymin,
316  ymax,
317  deDxMapHandle->numberOfBinsZ(),
318  zmin,
319  zmax);
320 
321  if (strcmp(ProbabilityMode.c_str(), "Accumulation") == 0) {
322  for (int i = 0; i <= Prob_ChargePath->GetXaxis()->GetNbins() + 1; i++) {
323  for (int j = 0; j <= Prob_ChargePath->GetYaxis()->GetNbins() + 1; j++) {
324  float Ni = 0;
325  for (int k = 0; k <= Prob_ChargePath->GetZaxis()->GetNbins() + 1; k++) {
326  Ni += deDxMapHandle->binContent(i, j, k);
327  }
328  for (int k = 0; k <= Prob_ChargePath->GetZaxis()->GetNbins() + 1; k++) {
329  float tmp = 0;
330  for (int l = 0; l <= k; l++) {
331  tmp += deDxMapHandle->binContent(i, j, l);
332  }
333  if (Ni > 0) {
334  Prob_ChargePath->SetBinContent(i, j, k, tmp / Ni);
335  } else {
336  Prob_ChargePath->SetBinContent(i, j, k, 0);
337  }
338  }
339  }
340  }
341  } else if (strcmp(ProbabilityMode.c_str(), "Integral") == 0) {
342  for (int i = 0; i <= Prob_ChargePath->GetXaxis()->GetNbins() + 1; i++) {
343  for (int j = 0; j <= Prob_ChargePath->GetYaxis()->GetNbins() + 1; j++) {
344  float Ni = 0;
345  for (int k = 0; k <= Prob_ChargePath->GetZaxis()->GetNbins() + 1; k++) {
346  Ni += deDxMapHandle->binContent(i, j, k);
347  }
348  for (int k = 0; k <= Prob_ChargePath->GetZaxis()->GetNbins() + 1; k++) {
349  float tmp = deDxMapHandle->binContent(i, j, k);
350  if (Ni > 0) {
351  Prob_ChargePath->SetBinContent(i, j, k, tmp / Ni);
352  } else {
353  Prob_ChargePath->SetBinContent(i, j, k, 0);
354  }
355  }
356  }
357  }
358  } else {
359  throw cms::Exception("WrongConfig for dEdx") << "The ProbabilityMode: " << ProbabilityMode << "is unknown\n";
360  }
361  }
362 
363  bool IsSpanningOver2APV(unsigned int FirstStrip, unsigned int ClusterSize) {
364  if (FirstStrip == 0)
365  return true;
366  if (FirstStrip == 128)
367  return true;
368  if (FirstStrip == 256)
369  return true;
370  if (FirstStrip == 384)
371  return true;
372  if (FirstStrip == 512)
373  return true;
374  if (FirstStrip == 640)
375  return true;
376 
377  if (FirstStrip <= 127 && FirstStrip + ClusterSize > 127)
378  return true;
379  if (FirstStrip <= 255 && FirstStrip + ClusterSize > 255)
380  return true;
381  if (FirstStrip <= 383 && FirstStrip + ClusterSize > 383)
382  return true;
383  if (FirstStrip <= 511 && FirstStrip + ClusterSize > 511)
384  return true;
385  if (FirstStrip <= 639 && FirstStrip + ClusterSize > 639)
386  return true;
387 
388  if (FirstStrip + ClusterSize == 127)
389  return true;
390  if (FirstStrip + ClusterSize == 255)
391  return true;
392  if (FirstStrip + ClusterSize == 383)
393  return true;
394  if (FirstStrip + ClusterSize == 511)
395  return true;
396  if (FirstStrip + ClusterSize == 639)
397  return true;
398  if (FirstStrip + ClusterSize == 767)
399  return true;
400 
401  return false;
402  }
403 
404  bool IsFarFromBorder(const TrajectoryStateOnSurface& trajState, const GeomDetUnit* it) {
405  if (dynamic_cast<const StripGeomDetUnit*>(it) == nullptr && dynamic_cast<const PixelGeomDetUnit*>(it) == nullptr) {
406  edm::LogInfo("DeDxTools::IsFarFromBorder") << "this detID doesn't seem to belong to the Tracker" << std::endl;
407  return false;
408  }
409 
410  LocalPoint HitLocalPos = trajState.localPosition();
411  LocalError HitLocalError = trajState.localError().positionError();
412 
413  const BoundPlane plane = it->surface();
414  const TrapezoidalPlaneBounds* trapezoidalBounds(dynamic_cast<const TrapezoidalPlaneBounds*>(&(plane.bounds())));
415  const RectangularPlaneBounds* rectangularBounds(dynamic_cast<const RectangularPlaneBounds*>(&(plane.bounds())));
416 
417  if (!trapezoidalBounds && !rectangularBounds)
418  return false;
419 
420  double DistFromBorder = 1.0;
421  //double HalfWidth = it->surface().bounds().width() /2.0;
422  double HalfLength =
423  trapezoidalBounds ? (*trapezoidalBounds).parameters()[3] : it->surface().bounds().length() / 2.0;
424 
425  // if (fabs(HitLocalPos.x())+HitLocalError.xx() >= (HalfWidth - DistFromBorder) ) return false;//Don't think is really necessary
426  if (fabs(HitLocalPos.y()) + HitLocalError.yy() >= (HalfLength - DistFromBorder))
427  return false;
428 
429  return true;
430  }
431 
432 } // namespace DeDxTools
PhysicsTools::Calibration::Histogram3D::numberOfBinsZ
int numberOfBinsZ() const
Definition: Histogram3D.h:126
mps_fire.i
i
Definition: mps_fire.py:355
ProducerES_cfi.HalfLength
HalfLength
Definition: ProducerES_cfi.py:87
GeomDet
Definition: GeomDet.h:27
SiStripDeDxMip_3D_Rcd
Definition: SiStripDeDxMip_3D_Rcd.h:6
LocalTrajectoryError::positionError
LocalError positionError() const
Definition: LocalTrajectoryError.h:81
DeDxTools::makeCalibrationMap
void makeCalibrationMap(const std::string &m_calibrationPath, const TrackerGeometry &tkGeom, std::vector< std::vector< float > > &calibGains, const unsigned int &m_off)
Definition: DeDxTools.cc:252
edm::Run
Definition: Run.h:45
DeDxTools::IsSpanningOver2APV
bool IsSpanningOver2APV(unsigned int FirstStrip, unsigned int ClusterSize)
Definition: DeDxTools.cc:363
edm::LogInfo
Definition: MessageLogger.h:254
SiStripDeDxProton_3D_Rcd
Definition: SiStripDeDxProton_3D_Rcd.h:6
GeomDet::index
int index() const
Definition: GeomDet.h:83
PhysicsTools::Calibration::Histogram3D::rangeY
RangeY rangeY() const
Definition: Histogram3D.h:137
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
SiStripMonitorCluster_cfi.zmin
zmin
Definition: SiStripMonitorCluster_cfi.py:200
DeDxTools::buildDiscrimMap
void buildDiscrimMap(edm::Run const &run, const edm::EventSetup &iSetup, std::string Reccord, std::string ProbabilityMode, TH3F *&Prob_ChargePath)
Definition: DeDxTools.cc:280
DeDxTools::IsFarFromBorder
bool IsFarFromBorder(const TrajectoryStateOnSurface &trajState, const GeomDetUnit *it)
Definition: DeDxTools.cc:404
Bounds::length
virtual float length() const =0
DeDxTools::getCharge
int getCharge(const SiStripCluster *cluster, int &nSatStrip, const GeomDetUnit &detUnit, const std::vector< std::vector< float > > &calibGains, const unsigned int &m_off)
Definition: DeDxTools.cc:214
SiStripCluster::firstStrip
uint16_t firstStrip() const
Definition: SiStripCluster.h:38
TrackerGeometry::idToDetUnit
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
Definition: TrackerGeometry.cc:183
DetId
Definition: DetId.h:17
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
RandomServiceHelper.t1
t1
Definition: RandomServiceHelper.py:256
PhysicsTools::Calibration::Range::max
Axis_t max
Definition: Histogram.h:29
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
L1TOccupancyClient_cfi.ymax
ymax
Definition: L1TOccupancyClient_cfi.py:43
SiStripMonitorCluster_cfi.zmax
zmax
Definition: SiStripMonitorCluster_cfi.py:201
DeDxTools.h
TrackerGeometry::detUnits
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
Definition: TrackerGeometry.h:61
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
DeDxTools
Definition: DeDxTools.h:44
edm::ESHandle
Definition: DTSurvey.h:22
dqmdumpme.k
k
Definition: dqmdumpme.py:60
PhysicsTools::Calibration::Histogram3D::rangeX
RangeX rangeX() const
Definition: Histogram3D.h:136
DeDxTools::shapeSelection
bool shapeSelection(const SiStripCluster &ampls)
Definition: DeDxTools.cc:9
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
PhysicsTools::Calibration::Range::min
Axis_t min
Definition: Histogram.h:29
TrajectoryStateOnSurface::localPosition
LocalPoint localPosition() const
Definition: TrajectoryStateOnSurface.h:74
SiStripDeDxKaon_3D_Rcd
Definition: SiStripDeDxKaon_3D_Rcd.h:6
LocalError
Definition: LocalError.h:12
hgcalDigitizer_cfi.noise
noise
Definition: hgcalDigitizer_cfi.py:150
SiStripDeDxPion_3D_Rcd
Definition: SiStripDeDxPion_3D_Rcd.h:6
SiStripCluster::amplitudes
const std::vector< uint8_t > & amplitudes() const
Definition: SiStripCluster.h:51
createfilelist.int
int
Definition: createfilelist.py:10
PixelTestBeamValidation_cfi.ClusterSize
ClusterSize
Definition: PixelTestBeamValidation_cfi.py:72
SiStripDeDxElectron_3D_Rcd
Definition: SiStripDeDxElectron_3D_Rcd.h:6
math::LocalPoint
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::LocalCoordinateSystemTag > LocalPoint
point in local coordinate system
Definition: Point3D.h:15
PhysicsTools::Calibration::Histogram3D::numberOfBinsY
int numberOfBinsY() const
Definition: Histogram3D.h:125
edm::EventSetup
Definition: EventSetup.h:57
PhysicsTools::Calibration::Histogram3D::binContent
Value_t binContent(int bin) const
Definition: Histogram3D.h:93
TrapezoidalPlaneBounds
Definition: TrapezoidalPlaneBounds.h:15
get
#define get
HLT_2018_cff.Reccord
Reccord
Definition: HLT_2018_cff.py:51320
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:193
std
Definition: JetResolutionObject.h:76
writedatasetfile.run
run
Definition: writedatasetfile.py:27
RectangularPlaneBounds
Definition: RectangularPlaneBounds.h:12
L1TOccupancyClient_cfi.ymin
ymin
Definition: L1TOccupancyClient_cfi.py:43
TrackerOfflineValidation_Dqm_cff.xmax
xmax
Definition: TrackerOfflineValidation_Dqm_cff.py:11
Exception
Definition: hltDiff.cc:246
BoundPlane
PhysicsTools::Calibration::Histogram3D::numberOfBinsX
int numberOfBinsX() const
Definition: Histogram3D.h:124
PhysicsTools::Calibration::Histogram3D::rangeZ
RangeZ rangeZ() const
Definition: Histogram3D.h:138
TrackerOfflineValidation_Dqm_cff.xmin
xmin
Definition: TrackerOfflineValidation_Dqm_cff.py:10
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
HLT_2018_cff.ProbabilityMode
ProbabilityMode
Definition: HLT_2018_cff.py:51313
TrajectoryStateOnSurface::localError
const LocalTrajectoryError & localError() const
Definition: TrajectoryStateOnSurface.h:77
SiStripCluster
Definition: SiStripCluster.h:9
LocalError::yy
float yy() const
Definition: LocalError.h:24
TrackerGeometry
Definition: TrackerGeometry.h:14