CMS 3D CMS Logo

SiPixelSCurveCalibrationAnalysis.cc
Go to the documentation of this file.
2 #include "TMath.h"
3 
4 #include <fstream>
5 #include <iostream>
6 
13 #include <sstream>
14 
15 // initialize static members
18 
22 }
23 
25  std::ofstream myfile;
26  myfile.open(thresholdfilename_.c_str());
27  for (detIDHistogramMap::iterator thisDetIdHistoGrams = histograms_.begin(); thisDetIdHistoGrams != histograms_.end();
28  ++thisDetIdHistoGrams) {
29  // loop over det id (det id = number (unsigned int) of pixel module
30  const MonitorElement *sigmahist = (*thisDetIdHistoGrams).second[kSigmas];
31  const MonitorElement *thresholdhist = (*thisDetIdHistoGrams).second[kThresholds];
32  uint32_t detid = (*thisDetIdHistoGrams).first;
33  std::string name = sigmahist->getTitle();
34  std::string rocname = name.substr(0, name.size() - 7);
35  rocname += "_ROC";
36  int total_rows = sigmahist->getNbinsY();
37  int total_columns = sigmahist->getNbinsX();
38  // loop over all rows on columns on all ROCs
39  for (int irow = 0; irow < total_rows; ++irow) {
40  for (int icol = 0; icol < total_columns; ++icol) {
41  float threshold_error = sigmahist->getBinContent(icol + 1, irow + 1); // +1 because root bins start at 1
42  if (writeZeroes_ || (!writeZeroes_ && threshold_error > 0)) {
43  // changing from offline to online numbers
44  int realfedID = -1;
45  for (int fedid = 0; fedid <= 40; ++fedid) {
47  if (converter.hasDetUnit(detid)) {
48  realfedID = fedid;
49  break;
50  }
51  }
52  if (realfedID == -1) {
53  std::cout << "error: could not obtain real fed ID" << std::endl;
54  }
55  sipixelobjects::DetectorIndex detector = {detid, irow, icol};
57  SiPixelFrameConverter formatter(theCablingMap_.product(), realfedID);
58  formatter.toCabling(cabling, detector);
59  // cabling should now contain cabling.roc and cabling.dcol and
60  // cabling.pxid however, the coordinates now need to be converted from
61  // dcl,pxid to the row,col coordinates used in the calibration info
63  loc.dcol = cabling.dcol;
64  loc.pxid = cabling.pxid;
65  // FIX to adhere to new cabling map. To be replaced with
66  // CalibTracker/SiPixelTools detid - > hardware id classes ASAP.
67  // const sipixelobjects::PixelFEDCabling *theFed=
68  // theCablingMap.product()->fed(realfedID); const
69  // sipixelobjects::PixelFEDLink * link =
70  // theFed->link(cabling.link); const sipixelobjects::PixelROC
71  // *theRoc = link->roc(cabling.roc);
72  sipixelobjects::LocalPixel locpixel(loc);
73  sipixelobjects::CablingPathToDetUnit path = {static_cast<unsigned int>(realfedID),
74  static_cast<unsigned int>(cabling.link),
75  static_cast<unsigned int>(cabling.roc)};
77  // END of FIX
78  int newrow = locpixel.rocRow();
79  int newcol = locpixel.rocCol();
80  myfile << rocname << theRoc->idInDetUnit() << " " << newcol << " " << newrow << " "
81  << thresholdhist->getBinContent(icol + 1, irow + 1) << " "
82  << threshold_error; // +1 because root bins start at 1
83  myfile << "\n";
84  }
85  }
86  }
87  }
88  myfile.close();
89 }
90 
91 // used for TMinuit fitting
92 void chi2toMinimize(int &npar, double *grad, double &fcnval, double *xval, int iflag) {
94  // setup function parameters
95  for (int i = 0; i < npar; i++)
96  theFormula->SetParameter(i, xval[i]);
97  fcnval = 0;
98  // compute Chi2 of all points
99  const std::vector<short> *theVCalValues = SiPixelSCurveCalibrationAnalysis::getVcalValues();
100  for (uint32_t i = 0; i < theVCalValues->size(); i++) {
101  float chi = (SiPixelSCurveCalibrationAnalysis::efficiencies_[i] - theFormula->Eval((*theVCalValues)[i]));
103  fcnval += chi * chi;
104  }
105 }
106 
108  edm::LogInfo("SiPixelSCurveCalibrationAnalysis") << "Setting up calibration paramters.";
109  std::vector<uint32_t> anEmptyDefaultVectorOfUInts;
110  std::vector<uint32_t> detIDsToSaveVector_;
111  useDetectorHierarchyFolders_ = iConfig.getUntrackedParameter<bool>("useDetectorHierarchyFolders", true);
112  saveCurvesThatFlaggedBad_ = iConfig.getUntrackedParameter<bool>("saveCurvesThatFlaggedBad", false);
113  detIDsToSaveVector_ =
114  iConfig.getUntrackedParameter<std::vector<uint32_t>>("detIDsToSave", anEmptyDefaultVectorOfUInts);
115  maxCurvesToSave_ = iConfig.getUntrackedParameter<uint32_t>("maxCurvesToSave", 1000);
116  write2dHistograms_ = iConfig.getUntrackedParameter<bool>("write2dHistograms", true);
117  write2dFitResult_ = iConfig.getUntrackedParameter<bool>("write2dFitResult", true);
118  printoutthresholds_ = iConfig.getUntrackedParameter<bool>("writeOutThresholdSummary", true);
119  thresholdfilename_ = iConfig.getUntrackedParameter<std::string>("thresholdOutputFileName", "thresholds.txt");
120  minimumChi2prob_ = iConfig.getUntrackedParameter<double>("minimumChi2prob", 0);
121  minimumThreshold_ = iConfig.getUntrackedParameter<double>("minimumThreshold", -10);
122  maximumThreshold_ = iConfig.getUntrackedParameter<double>("maximumThreshold", 300);
123  minimumSigma_ = iConfig.getUntrackedParameter<double>("minimumSigma", 0);
124  maximumSigma_ = iConfig.getUntrackedParameter<double>("maximumSigma", 100);
125  minimumEffAsymptote_ = iConfig.getUntrackedParameter<double>("minimumEffAsymptote", 0);
126  maximumEffAsymptote_ = iConfig.getUntrackedParameter<double>("maximumEffAsymptote", 1000);
127  maximumSigmaBin_ = iConfig.getUntrackedParameter<double>("maximumSigmaBin", 10);
128  maximumThresholdBin_ = iConfig.getUntrackedParameter<double>("maximumThresholdBin", 255);
129 
130  writeZeroes_ = iConfig.getUntrackedParameter<bool>("alsoWriteZeroThresholds", false);
131 
132  // convert the vector into a map for quicker lookups.
133  for (unsigned int i = 0; i < detIDsToSaveVector_.size(); i++)
134  detIDsToSave_.insert(std::make_pair(detIDsToSaveVector_[i], true));
135 }
136 
138  // do nothing
139 }
140 
142  const uint32_t &row,
143  const uint32_t &col,
144  sCurveErrorFlag errorFlag,
145  const std::vector<float> &efficiencies,
146  const std::vector<float> &errors) {
148  edm::LogWarning("SiPixelSCurveCalibrationAnalysis")
149  << "WARNING: Request to save curve for [detid](col/row): [" << detid << "](" << col << "/" << row
150  << ") denied. Maximum number of saved curves (defined in .cfi) "
151  "exceeded.";
152  return;
153  }
154  std::ostringstream rootName;
155  rootName << "SCurve_row_" << row << "_col_" << col;
156  std::ostringstream humanName;
157  humanName << translateDetIdToString(detid) << "_" << rootName.str() << "_ErrorFlag_" << (int)errorFlag;
158 
159  unsigned int numberOfVCalPoints = vCalPointsAsFloats_.size() - 1; // minus one is necessary since the lower
160  // edge of the last bin must be added
161  if (efficiencies.size() != numberOfVCalPoints || errors.size() != numberOfVCalPoints) {
162  edm::LogError("SiPixelSCurveCalibrationAnalysis")
163  << "Error saving single curve histogram! Number of Vcal values (" << numberOfVCalPoints
164  << ") does not match number of efficiency points or error points!";
165  return;
166  }
167  setDQMDirectory(detid);
168  float *vcalValuesToPassToCrappyRoot = &vCalPointsAsFloats_[0];
169  MonitorElement *aBadHisto =
170  bookDQMHistogram1D(detid,
171  rootName.str(),
172  humanName.str(),
173  numberOfVCalPoints,
174  vcalValuesToPassToCrappyRoot); // ROOT only takes an input as array. :(
175  // HOORAY FOR CINT!
177  for (unsigned int iBin = 0; iBin < numberOfVCalPoints; ++iBin) {
178  int rootBin = iBin + 1; // root bins start at 1
179  aBadHisto->setBinContent(rootBin, efficiencies[iBin]);
180  aBadHisto->setBinError(rootBin, errors[iBin]);
181  }
182 }
183 
185  edm::LogInfo("SiPixelSCurveCalibrationAnalysis")
186  << "Calibration Settings: VCalLow: " << vCalValues_[0] << " VCalHigh: " << vCalValues_[vCalValues_.size() - 1]
187  << " nVCal: " << vCalValues_.size() << " nTriggers: " << nTriggers_;
190  // build the vCal values as a vector of floats if we want to save single
191  // curves
192  const std::vector<short> *theVCalValues = this->getVcalValues();
193  unsigned int numberOfVCalPoints = theVCalValues->size();
194  edm::LogWarning("SiPixelSCurveCalibrationAnalysis")
195  << "WARNING: Option set to save indiviual S-Curves - max number: " << maxCurvesToSave_
196  << " This can lead to large memory consumption! (Got " << numberOfVCalPoints << " VCal Points";
197  for (unsigned int i = 0; i < numberOfVCalPoints; i++) {
198  vCalPointsAsFloats_.push_back(static_cast<float>((*theVCalValues)[i]));
199  edm::LogInfo("SiPixelSCurveCalibrationAnalysis") << "Adding calibration Vcal: " << (*theVCalValues)[i];
200  }
201  // must add lower edge of last bin to the vector
202  vCalPointsAsFloats_.push_back(vCalPointsAsFloats_[numberOfVCalPoints - 1] + 1);
203  }
204 
205  fitFunction_ = new TF1("sCurve",
206  "0.5*[2]*(1+TMath::Erf( (x-[0]) / ([1]*sqrt(2)) ) )",
207  vCalValues_[0],
208  vCalValues_[vCalValues_.size() - 1]);
209 }
210 
212  if (calibrationMode_ == "SCurve")
213  return true;
214  else if (calibrationMode_ == "unknown") {
215  edm::LogInfo("SiPixelSCurveCalibrationAnalysis")
216  << "calibration mode is: " << calibrationMode_ << ", continuing anyway...";
217  return true;
218  } else {
219  // edm::LogDebug("SiPixelSCurveCalibrationAnalysis") << "unknown
220  // calibration mode for SCurves, should be \"SCurve\" and is \"" <<
221  // calibrationMode_ << "\"";
222  }
223  return false;
224 }
225 
227  float &threshold,
228  float &sigma) {
230  bool allZeroSoFar = true;
231  int turnOnBin = -1;
232  int saturationBin = -1;
233  for (uint32_t iVcalPt = 0; iVcalPt < eff.size(); iVcalPt++) {
234  if (allZeroSoFar && eff[iVcalPt] != 0) {
235  turnOnBin = iVcalPt;
236  allZeroSoFar = false;
238  } else if (eff[iVcalPt] > 0.90) {
239  saturationBin = iVcalPt;
240  short turnOnVcal = vCalValues_[turnOnBin];
241  short saturationVcal = vCalValues_[saturationBin];
242  short delta = saturationVcal - turnOnVcal;
243  sigma = delta * 0.682;
244  if (sigma < 1) // check to make sure sigma guess is larger than our X resolution.
245  // Hopefully prevents Minuit from getting stuck at boundary
246  sigma = 1;
247  threshold = turnOnVcal + (0.5 * delta);
248  return errOK;
249  }
250  }
251  return output;
252 }
253 
255  float sigma,
256  float amplitude) {
257  // check if nonsensical
258  if (threshold > vCalValues_[vCalValues_.size() - 1] || threshold < vCalValues_[0] ||
259  sigma > vCalValues_[vCalValues_.size() - 1] - vCalValues_[0])
260  return errFitNonPhysical;
261 
262  if (threshold < minimumThreshold_ || threshold > maximumThreshold_ || sigma < minimumSigma_ ||
263  sigma > maximumSigma_ || amplitude < minimumEffAsymptote_ || amplitude > maximumEffAsymptote_)
264  return errFlaggedBadByUser;
265 
266  return errOK;
267 }
268 
269 void calculateEffAndError(int nADCResponse, int nTriggers, float &eff, float &error) {
270  eff = (float)nADCResponse / (float)nTriggers;
271  double effForErrorCalculation = eff;
272  if (eff <= 0 || eff >= 1)
273  effForErrorCalculation = 0.5 / (double)nTriggers;
274  error = TMath::Sqrt(effForErrorCalculation * (1 - effForErrorCalculation) / (double)nTriggers);
275 }
276 
277 // book histograms when new DetID is encountered in Event Record
279  edm::LogInfo("SiPixelSCurveCalibrationAnalysis")
280  << "Found a new DetID (" << detid << ")! Checking to make sure it has not been added.";
281  // ensure that this DetID has not been added yet
282  sCurveHistogramHolder tempMap;
283  std::pair<detIDHistogramMap::iterator, bool> insertResult;
284  insertResult = histograms_.insert(std::make_pair(detid, tempMap));
285  if (insertResult.second) // indicates successful insertion
286  {
287  edm::LogInfo("SiPixelSCurveCalibrationAnalysisHistogramReport")
288  << "Histogram Map.insert() returned true! Booking new histogrames for "
289  "detID: "
290  << detid;
291  // use detector hierarchy folders if desired
293  setDQMDirectory(detid);
294 
295  std::string detIdName = translateDetIdToString(detid);
296  if (write2dHistograms_) {
297  MonitorElement *D2sigma = bookDQMHistoPlaquetteSummary2D(detid, "ScurveSigmas", detIdName + " Sigmas");
298  MonitorElement *D2thresh = bookDQMHistoPlaquetteSummary2D(detid, "ScurveThresholds", detIdName + " Thresholds");
299  MonitorElement *D2chi2 = bookDQMHistoPlaquetteSummary2D(detid, "ScurveChi2Prob", detIdName + " Chi2Prob");
300  insertResult.first->second.insert(std::make_pair(kSigmas, D2sigma));
301  insertResult.first->second.insert(std::make_pair(kThresholds, D2thresh));
302  insertResult.first->second.insert(std::make_pair(kChi2s, D2chi2));
303  }
304  if (write2dFitResult_) {
305  MonitorElement *D2FitResult = bookDQMHistoPlaquetteSummary2D(detid, "ScurveFitResult", detIdName + " Fit Result");
306  insertResult.first->second.insert(std::make_pair(kFitResults, D2FitResult));
307  }
308  MonitorElement *D1sigma =
309  bookDQMHistogram1D(detid, "ScurveSigmasSummary", detIdName + " Sigmas Summary", 100, 0, maximumSigmaBin_);
311  detid, "ScurveThresholdSummary", detIdName + " Thresholds Summary", 255, 0, maximumThresholdBin_);
312  MonitorElement *D1chi2 =
313  bookDQMHistogram1D(detid, "ScurveChi2ProbSummary", detIdName + " Chi2Prob Summary", 101, 0, 1.01);
314  MonitorElement *D1FitResult =
315  bookDQMHistogram1D(detid, "ScurveFitResultSummary", detIdName + " Fit Result Summary", 10, -0.5, 9.5);
316  insertResult.first->second.insert(std::make_pair(kSigmaSummary, D1sigma));
317  insertResult.first->second.insert(std::make_pair(kThresholdSummary, D1thresh));
318  insertResult.first->second.insert(std::make_pair(kChi2Summary, D1chi2));
319  insertResult.first->second.insert(std::make_pair(kFitResultSummary, D1FitResult));
320  }
321 }
322 
323 bool SiPixelSCurveCalibrationAnalysis::doFits(uint32_t detid, std::vector<SiPixelCalibDigi>::const_iterator calibDigi) {
324  sCurveErrorFlag errorFlag = errOK;
325  uint32_t nVCalPts = calibDigi->getnpoints();
326  // reset and fill static datamembers with vector of points and errors
327  efficiencies_.resize(0);
328  effErrors_.resize(0);
329  for (uint32_t iVcalPt = 0; iVcalPt < nVCalPts; iVcalPt++) {
330  float eff;
331  float error;
332  calculateEffAndError(calibDigi->getnentries(iVcalPt), nTriggers_, eff, error);
333  edm::LogInfo("SiPixelSCurveCalibrationAnalysis")
334  << "Eff: " << eff << " Error: " << error << " nEntries: " << calibDigi->getnentries(iVcalPt)
335  << " nTriggers: " << nTriggers_ << " VCalPt " << vCalValues_[iVcalPt];
336  efficiencies_.push_back(eff);
337  effErrors_.push_back(error);
338  }
339 
340  // estimate the S-Curve parameters
341  float thresholdGuess = -1.0;
342  float sigmaGuess = -1.0;
343  errorFlag = estimateSCurveParameters(efficiencies_, thresholdGuess, sigmaGuess);
344 
345  // these -1.0 default values will only be filled if the curve is all zeroes,
346  // or doesn't turn on, WHICH INDICATES A SERIOUS PROBLEM
347  Double_t sigma = -1.0;
348  Double_t sigmaError = -1.0;
349  Double_t threshold = -1.0;
350  Double_t thresholdError = -1.0;
351  Double_t amplitude = -1.0;
352  Double_t amplitudeError = -1.0;
353  Double_t chi2 = -1.0;
354  // calculate NDF
355  Int_t nDOF = vCalValues_.size() - 3;
356  Double_t chi2probability = 0;
357 
358  if (errorFlag == errOK) // only do fit if curve is fittable
359  {
360  // set up minuit fit
361  TMinuit *gMinuit = new TMinuit(3);
362  gMinuit->SetPrintLevel(-1); // save ourselves from gigabytes of stdout
363  gMinuit->SetFCN(chi2toMinimize);
364 
365  // define threshold parameters - choose step size 1, max 300, min -50
366  gMinuit->DefineParameter(0, "Threshold", (Double_t)thresholdGuess, 1, -50, 300);
367  // sigma
368  gMinuit->DefineParameter(1, "Sigma", (Double_t)sigmaGuess, 0.1, 0, 255);
369  // amplitude
370  gMinuit->DefineParameter(2, "Amplitude", 1, 0.1, -0.001, 200);
371 
372  // Do Chi2 minimazation
373  gMinuit->Migrad();
374  gMinuit->GetParameter(0, threshold, thresholdError);
375  gMinuit->GetParameter(1, sigma, sigmaError);
376  gMinuit->GetParameter(2, amplitude, amplitudeError);
377 
378  // get Chi2
379  Double_t params[3] = {threshold, sigma, amplitude};
380  gMinuit->Eval(3, nullptr, chi2, params, 0);
381  // calculate Chi2 proability
382  if (nDOF <= 0)
383  chi2probability = 0;
384  else
385  chi2probability = TMath::Prob(chi2, nDOF);
386 
387  // check to make sure output makes sense (i.e. threshold > 0)
388  if (chi2probability > minimumChi2prob_)
389  errorFlag = fittedSCurveSanityCheck(threshold, sigma, amplitude);
390  else
391  errorFlag = errBadChi2Prob;
392 
393  edm::LogInfo("SiPixelSCurveCalibrationAnalysis")
394  << "Fit finished with errorFlag: " << errorFlag << " - threshold: " << threshold << " sigma: " << sigma
395  << " chi2: " << chi2 << " nDOF: " << nDOF << " chi2Prob: " << chi2probability
396  << " chi2MinUser: " << minimumChi2prob_;
397 
398  delete gMinuit;
399  }
400  // get row and column for this pixel
401  uint32_t row = calibDigi->row();
402  uint32_t col = calibDigi->col();
403 
404  // get iterator to histogram holder for this detid
405  detIDHistogramMap::iterator thisDetIdHistoGrams;
406  thisDetIdHistoGrams = histograms_.find(detid);
407  if (thisDetIdHistoGrams != histograms_.end()) {
408  edm::LogInfo("SiPixelSCurveCalibrationAnalysisHistogramReport")
409  << "Filling histograms for [detid](col/row): [" << detid << "](" << col << "/" << row
410  << ") ErrorFlag: " << errorFlag;
411  // always fill fit result
412  (*thisDetIdHistoGrams).second[kFitResultSummary]->Fill(errorFlag);
413  if (write2dFitResult_)
414  (*thisDetIdHistoGrams)
415  .second[kFitResults]
416  ->setBinContent(col + 1,
417  row + 1,
418  errorFlag); // +1 because root bins start at 1
419 
420  // fill sigma/threshold result
421  (*thisDetIdHistoGrams).second[kSigmaSummary]->Fill(sigma);
422  (*thisDetIdHistoGrams).second[kThresholdSummary]->Fill(threshold);
423  if (write2dHistograms_) {
424  (*thisDetIdHistoGrams)
425  .second[kSigmas]
426  ->setBinContent(col + 1,
427  row + 1,
428  sigma); // +1 because root bins start at 1
429  (*thisDetIdHistoGrams)
430  .second[kThresholds]
431  ->setBinContent(col + 1,
432  row + 1,
433  threshold); // +1 because root bins start at 1
434  }
435  // fill chi2
436  (*thisDetIdHistoGrams).second[kChi2Summary]->Fill(chi2probability);
437  if (write2dHistograms_)
438  (*thisDetIdHistoGrams).second[kChi2s]->Fill(col, row, chi2probability);
439  }
440  // save individual curves, if requested
442  bool thisDetIDinList = false;
443  if (detIDsToSave_.find(detid) != detIDsToSave_.end()) // see if we want to save this histogram
444  thisDetIDinList = true;
445 
446  if (errorFlag != errOK || thisDetIDinList) {
447  edm::LogError("SiPixelSCurveCalibrationAnalysis") << "Saving error histogram for [detid](col/row): [" << detid
448  << "](" << col << "/" << row << ") ErrorFlag: " << errorFlag;
449  buildACurveHistogram(detid, row, col, errorFlag, efficiencies_, effErrors_);
450  }
451  }
452 
453  return true;
454 }
SiPixelSCurveCalibrationAnalysis::~SiPixelSCurveCalibrationAnalysis
~SiPixelSCurveCalibrationAnalysis() override
Definition: SiPixelSCurveCalibrationAnalysis.cc:137
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
SiPixelSCurveCalibrationAnalysis::useDetectorHierarchyFolders_
bool useDetectorHierarchyFolders_
Definition: SiPixelSCurveCalibrationAnalysis.h:89
SiPixelOfflineCalibAnalysisBase::nTriggers_
short nTriggers_
Definition: SiPixelOfflineCalibAnalysisBase.h:118
SiPixelOfflineCalibAnalysisBase::translateDetIdToString
std::string translateDetIdToString(uint32_t detid)
Definition: SiPixelOfflineCalibAnalysisBase.cc:146
kChi2s
Definition: SiPixelSCurveCalibrationAnalysis.h:35
SiPixelSCurveCalibrationAnalysis::calibrationSetup
void calibrationSetup(const edm::EventSetup &iSetup) override
Definition: SiPixelSCurveCalibrationAnalysis.cc:184
mps_fire.i
i
Definition: mps_fire.py:428
SiPixelSCurveCalibrationAnalysis::writeZeroes_
bool writeZeroes_
Definition: SiPixelSCurveCalibrationAnalysis.h:98
CustomPhysics_cfi.amplitude
amplitude
Definition: CustomPhysics_cfi.py:12
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
SiPixelOfflineCalibAnalysisBase::calibrationMode_
std::string calibrationMode_
Definition: SiPixelOfflineCalibAnalysisBase.h:117
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
converter
Definition: CandidateProducer.h:25
CalibrationSummaryClient_cfi.params
params
Definition: CalibrationSummaryClient_cfi.py:14
sCurveErrorFlag
sCurveErrorFlag
Definition: SiPixelSCurveCalibrationAnalysis.h:40
SiPixelSCurveCalibrationAnalysis::minimumChi2prob_
double minimumChi2prob_
Definition: SiPixelSCurveCalibrationAnalysis.h:103
kFitResults
Definition: SiPixelSCurveCalibrationAnalysis.h:36
cuy.col
col
Definition: cuy.py:1010
gather_cfg.cout
cout
Definition: gather_cfg.py:144
SiPixelOfflineCalibAnalysisBase::fitFunction_
static TF1 * fitFunction_
Definition: SiPixelOfflineCalibAnalysisBase.h:107
SiPixelSCurveCalibrationAnalysis::thresholdfilename_
std::string thresholdfilename_
Definition: SiPixelSCurveCalibrationAnalysis.h:99
ElectronicIndex.h
SiPixelSCurveCalibrationAnalysis::detIDsToSave_
std::map< uint32_t, bool > detIDsToSave_
Definition: SiPixelSCurveCalibrationAnalysis.h:100
errFitNonPhysical
Definition: SiPixelSCurveCalibrationAnalysis.h:47
kChi2Summary
Definition: SiPixelSCurveCalibrationAnalysis.h:34
SiPixelSCurveCalibrationAnalysis::estimateSCurveParameters
sCurveErrorFlag estimateSCurveParameters(const std::vector< float > &eff, float &threshold, float &sigma)
Definition: SiPixelSCurveCalibrationAnalysis.cc:226
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
SiPixelOfflineCalibAnalysisBase::bookDQMHistogram1D
MonitorElement * bookDQMHistogram1D(uint32_t detid, std::string name, std::string title, int nchX, double lowX, double highX)
Definition: SiPixelOfflineCalibAnalysisBase.cc:172
sipixelobjects::ElectronicIndex::dcol
int dcol
Definition: ElectronicIndex.h:8
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
hltPixelTracks_cff.chi2
chi2
Definition: hltPixelTracks_cff.py:25
chi2toMinimize
void chi2toMinimize(int &npar, double *grad, double &fcnval, double *xval, int iflag)
Definition: SiPixelSCurveCalibrationAnalysis.cc:92
kSigmas
Definition: SiPixelSCurveCalibrationAnalysis.h:31
tools.TF1
TF1
Definition: tools.py:23
relativeConstraints.error
error
Definition: relativeConstraints.py:53
SiPixelSCurveCalibrationAnalysis::maximumEffAsymptote_
double maximumEffAsymptote_
Definition: SiPixelSCurveCalibrationAnalysis.h:109
sipixelobjects::LocalPixel::rocCol
int rocCol() const
Definition: LocalPixel.h:35
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
fitWZ.gMinuit
gMinuit
Definition: fitWZ.py:36
SiPixelOfflineCalibAnalysisBase::vCalValues_
static std::vector< short > vCalValues_
Definition: SiPixelOfflineCalibAnalysisBase.h:119
sipixelobjects::LocalPixel
identify pixel inside single ROC
Definition: LocalPixel.h:7
SiPixelSCurveCalibrationAnalysis::minimumSigma_
double minimumSigma_
Definition: SiPixelSCurveCalibrationAnalysis.h:106
DetectorIndex.h
SiPixelSCurveCalibrationAnalysis::maximumSigma_
double maximumSigma_
Definition: SiPixelSCurveCalibrationAnalysis.h:107
SiPixelSCurveCalibrationAnalysis::efficiencies_
static std::vector< float > efficiencies_
Definition: SiPixelSCurveCalibrationAnalysis.h:73
SiPixelSCurveCalibrationAnalysis::histograms_
detIDHistogramMap histograms_
Definition: SiPixelSCurveCalibrationAnalysis.h:116
errors
Definition: errors.py:1
SiPixelSCurveCalibrationAnalysis::vCalPointsAsFloats_
std::vector< float > vCalPointsAsFloats_
Definition: SiPixelSCurveCalibrationAnalysis.h:75
sipixelobjects::CablingPathToDetUnit
Definition: CablingPathToDetUnit.h:5
SiPixelSCurveCalibrationAnalysis::minimumEffAsymptote_
double minimumEffAsymptote_
Definition: SiPixelSCurveCalibrationAnalysis.h:108
sipixelobjects::ElectronicIndex::pxid
int pxid
Definition: ElectronicIndex.h:9
SiPixelSCurveCalibrationAnalysis::curvesSavedCounter_
unsigned int curvesSavedCounter_
Definition: SiPixelSCurveCalibrationAnalysis.h:93
errAllZeros
Definition: SiPixelSCurveCalibrationAnalysis.h:50
SiPixelFrameConverter::toCabling
int toCabling(sipixelobjects::ElectronicIndex &cabling, const sipixelobjects::DetectorIndex &detector) const
Definition: SiPixelFrameConverter.cc:37
SiPixelOfflineCalibAnalysisBase::bookDQMHistoPlaquetteSummary2D
MonitorElement * bookDQMHistoPlaquetteSummary2D(uint32_t detid, std::string name, std::string title)
Definition: SiPixelOfflineCalibAnalysisBase.cc:197
SiPixelSCurveCalibrationAnalysis::effErrors_
static std::vector< float > effErrors_
Definition: SiPixelSCurveCalibrationAnalysis.h:74
SiPixelSCurveCalibrationAnalysis::calibrationEnd
void calibrationEnd() override
Definition: SiPixelSCurveCalibrationAnalysis.cc:19
SiPixelCalibDigiError.h
sipixelobjects::ElectronicIndex
Definition: ElectronicIndex.h:5
sipixelobjects::ElectronicIndex::link
int link
Definition: ElectronicIndex.h:6
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SiPixelSCurveCalibrationAnalysis::checkCorrectCalibrationType
bool checkCorrectCalibrationType() override
Definition: SiPixelSCurveCalibrationAnalysis.cc:211
TrackerDigiGeometryRecord.h
SiPixelFrameConverter.h
edm::ParameterSet
Definition: ParameterSet.h:47
dqm::impl::MonitorElement::getNbinsY
virtual int getNbinsY() const
get # of bins in Y-axis
Definition: MonitorElement.cc:580
sipixelobjects::LocalPixel::DcolPxid::pxid
int pxid
Definition: LocalPixel.h:20
sipixelobjects::LocalPixel::DcolPxid
double collumn and pixel ID in double collumn representation
Definition: LocalPixel.h:19
sipixelobjects::LocalPixel::rocRow
int rocRow() const
Definition: LocalPixel.h:34
calculateEffAndError
void calculateEffAndError(int nADCResponse, int nTriggers, float &eff, float &error)
Definition: SiPixelSCurveCalibrationAnalysis.cc:269
dumpMFGeometry_cfg.delta
delta
Definition: dumpMFGeometry_cfg.py:25
electronProducer_cfi.efficiencies
efficiencies
Definition: electronProducer_cfi.py:76
kFitResultSummary
Definition: SiPixelSCurveCalibrationAnalysis.h:37
createfilelist.int
int
Definition: createfilelist.py:10
kThresholdSummary
Definition: SiPixelSCurveCalibrationAnalysis.h:32
LocalPixel.h
SiPixelSCurveCalibrationAnalysis::write2dHistograms_
bool write2dHistograms_
Definition: SiPixelSCurveCalibrationAnalysis.h:94
SiPixelOfflineCalibAnalysisBase::setDQMDirectory
bool setDQMDirectory(std::string dirName)
Definition: SiPixelOfflineCalibAnalysisBase.cc:209
kSigmaSummary
Definition: SiPixelSCurveCalibrationAnalysis.h:30
edm::EventSetup
Definition: EventSetup.h:57
SiPixelFrameConverter
Definition: SiPixelFrameConverter.h:15
dqm::impl::MonitorElement::getTitle
virtual std::string getTitle() const
get MonitorElement title
Definition: MonitorElement.cc:683
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
SiPixelSCurveCalibrationAnalysis::maximumSigmaBin_
double maximumSigmaBin_
Definition: SiPixelSCurveCalibrationAnalysis.h:113
SiPixelSCurveCalibrationAnalysis::maxCurvesToSave_
unsigned int maxCurvesToSave_
Definition: SiPixelSCurveCalibrationAnalysis.h:91
PixelSLinkDataInputSource_cfi.fedid
fedid
Definition: PixelSLinkDataInputSource_cfi.py:6
errBadChi2Prob
Definition: SiPixelSCurveCalibrationAnalysis.h:46
kThresholds
Definition: SiPixelSCurveCalibrationAnalysis.h:33
SiPixelSCurveCalibrationAnalysis::doFits
bool doFits(uint32_t detid, std::vector< SiPixelCalibDigi >::const_iterator ipix) override
Definition: SiPixelSCurveCalibrationAnalysis.cc:323
SiPixelSCurveCalibrationAnalysis::maximumThresholdBin_
double maximumThresholdBin_
Definition: SiPixelSCurveCalibrationAnalysis.h:112
dqm::impl::MonitorElement::setBinContent
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
Definition: MonitorElement.cc:691
sipixelobjects::PixelROC
Definition: PixelROC.h:23
SiPixelSCurveCalibrationAnalysis::printoutthresholds_
bool printoutthresholds_
Definition: SiPixelSCurveCalibrationAnalysis.h:97
SiPixelSCurveCalibrationAnalysis.h
errFlaggedBadByUser
Definition: SiPixelSCurveCalibrationAnalysis.h:44
errNoTurnOn
Definition: SiPixelSCurveCalibrationAnalysis.h:49
SiPixelSCurveCalibrationAnalysis::buildACurveHistogram
void buildACurveHistogram(const uint32_t &detid, const uint32_t &row, const uint32_t &col, sCurveErrorFlag errorFlag, const std::vector< float > &efficiencies, const std::vector< float > &errors)
Definition: SiPixelSCurveCalibrationAnalysis.cc:141
dqm::impl::MonitorElement::getNbinsX
virtual int getNbinsX() const
get # of bins in X-axis
Definition: MonitorElement.cc:574
dqm::impl::MonitorElement::setBinError
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
Definition: MonitorElement.cc:709
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
SiPixelSCurveCalibrationAnalysis::makeThresholdSummary
void makeThresholdSummary(void)
Definition: SiPixelSCurveCalibrationAnalysis.cc:24
SiPixelSCurveCalibrationAnalysis::newDetID
void newDetID(uint32_t detid) override
Definition: SiPixelSCurveCalibrationAnalysis.cc:278
hgcalTestNeighbor_cfi.detector
detector
Definition: hgcalTestNeighbor_cfi.py:6
SiPixelSCurveCalibrationAnalysis::minimumThreshold_
double minimumThreshold_
Definition: SiPixelSCurveCalibrationAnalysis.h:104
SiPixelSCurveCalibrationAnalysis::fittedSCurveSanityCheck
sCurveErrorFlag fittedSCurveSanityCheck(float threshold, float sigma, float amplitude)
Definition: SiPixelSCurveCalibrationAnalysis.cc:254
SiPixelOfflineCalibAnalysisBase::theCablingMap_
edm::ESHandle< SiPixelFedCablingMap > theCablingMap_
Definition: SiPixelOfflineCalibAnalysisBase.h:115
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
errOK
Definition: SiPixelSCurveCalibrationAnalysis.h:43
SiPixelOfflineCalibAnalysisBase::getVcalValues
static const std::vector< short > * getVcalValues()
Definition: SiPixelOfflineCalibAnalysisBase.cc:144
SiPixelSCurveCalibrationAnalysis::maximumThreshold_
double maximumThreshold_
Definition: SiPixelSCurveCalibrationAnalysis.h:105
remoteMonitoring_LED_IterMethod_cfg.threshold
threshold
Definition: remoteMonitoring_LED_IterMethod_cfg.py:426
SiPixelSCurveCalibrationAnalysis::saveCurvesThatFlaggedBad_
bool saveCurvesThatFlaggedBad_
Definition: SiPixelSCurveCalibrationAnalysis.h:90
SiPixelSCurveCalibrationAnalysis::write2dFitResult_
bool write2dFitResult_
Definition: SiPixelSCurveCalibrationAnalysis.h:95
sCurveHistogramHolder
std::map< sCurveHistogramType, MonitorElement * > sCurveHistogramHolder
Definition: SiPixelSCurveCalibrationAnalysis.h:56
dqm::impl::MonitorElement::getBinContent
virtual double getBinContent(int binx) const
get content of bin (1-D)
Definition: MonitorElement.cc:592
SiPixelFedCablingMap::findItem
const sipixelobjects::PixelROC * findItem(const sipixelobjects::CablingPathToDetUnit &path) const final
Definition: SiPixelFedCablingMap.cc:124
SiPixelSCurveCalibrationAnalysis::doSetup
void doSetup(const edm::ParameterSet &)
Definition: SiPixelSCurveCalibrationAnalysis.cc:107
sipixelobjects::PixelROC::idInDetUnit
unsigned int idInDetUnit() const
id of this ROC in DetUnit etermined by token path
Definition: PixelROC.h:37
sipixelobjects::LocalPixel::DcolPxid::dcol
int dcol
Definition: LocalPixel.h:20
sipixelobjects::DetectorIndex
Definition: DetectorIndex.h:6
sipixelobjects::ElectronicIndex::roc
int roc
Definition: ElectronicIndex.h:7