Skip to content

Commit 08c6681

Browse files
committed
further improvements in CalibTracker/SiStripHit* plugins
1 parent 75a6c3d commit 08c6681

File tree

2 files changed

+125
-73
lines changed

2 files changed

+125
-73
lines changed

CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEffFromCalibTree.cc

Lines changed: 62 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class SiStripHitEffFromCalibTree : public ConditionDBWriter<SiStripBadStrip> {
114114
void totalStatistics();
115115
void makeSummary();
116116
void makeSummaryVsBx();
117-
void computeEff(vector<TH1F*>& vhfound, vector<TH1F*>& vhtotal, string name);
117+
void computeEff(vector<TH1F*>& vhfound, vector<TH1F*>& vhtotal, string name, vector<TGraphAsymmErrors*> geff);
118118
void makeSummaryVsLumi();
119119
void makeSummaryVsCM();
120120
TString getLayerSideName(Long_t k);
@@ -172,11 +172,11 @@ class SiStripHitEffFromCalibTree : public ConditionDBWriter<SiStripBadStrip> {
172172
vector<hit> hits[::k_END_OF_LAYERS];
173173
vector<TH2F*> HotColdMaps;
174174
map<unsigned int, pair<unsigned int, unsigned int> > modCounter[::k_END_OF_LAYERS];
175-
TrackerMap* tkmap;
176-
TrackerMap* tkmapbad;
177-
TrackerMap* tkmapeff;
178-
TrackerMap* tkmapnum;
179-
TrackerMap* tkmapden;
175+
TrackerMap* tkmap{nullptr};
176+
TrackerMap* tkmapbad{nullptr};
177+
TrackerMap* tkmapeff{nullptr};
178+
TrackerMap* tkmapnum{nullptr};
179+
TrackerMap* tkmapden{nullptr};
180180
long layerfound[::k_END_OF_LAYERS];
181181
long layertotal[::k_END_OF_LAYERS];
182182
map<unsigned int, vector<int> > layerfound_perBx;
@@ -189,6 +189,11 @@ class SiStripHitEffFromCalibTree : public ConditionDBWriter<SiStripBadStrip> {
189189
vector<TH1F*> layertotal_vsCM;
190190
vector<TH1F*> layerfound_vsBX;
191191
vector<TH1F*> layertotal_vsBX;
192+
vector<TGraphAsymmErrors*> geff_vsBX;
193+
vector<TGraphAsymmErrors*> geff_avg_vsBX;
194+
vector<TGraphAsymmErrors*> geff_avg_vsLumi;
195+
vector<TGraphAsymmErrors*> geff_avg_vsPU;
196+
vector<TGraphAsymmErrors*> geff_avg_vsCM;
192197
int goodlayertotal[::k_END_OF_LAYS_AND_RINGS];
193198
int goodlayerfound[::k_END_OF_LAYS_AND_RINGS];
194199
int alllayertotal[::k_END_OF_LAYS_AND_RINGS];
@@ -239,6 +244,11 @@ SiStripHitEffFromCalibTree::SiStripHitEffFromCalibTree(const edm::ParameterSet&
239244
layertotal_vsCM.reserve(::k_END_OF_LAYERS);
240245
layerfound_vsBX.reserve(::k_END_OF_LAYERS);
241246
layertotal_vsBX.reserve(::k_END_OF_LAYERS);
247+
geff_vsBX.reserve(::k_END_OF_LAYERS);
248+
geff_avg_vsBX.reserve(::k_END_OF_LAYERS);
249+
geff_avg_vsLumi.reserve(::k_END_OF_LAYERS);
250+
geff_avg_vsPU.reserve(::k_END_OF_LAYERS);
251+
geff_avg_vsCM.reserve(::k_END_OF_LAYERS);
242252
}
243253

244254
namespace utils {
@@ -296,8 +306,7 @@ SiStripHitEffFromCalibTree::~SiStripHitEffFromCalibTree() {
296306
edm::LogPrint("") << __PRETTY_FUNCTION__ << " File has inconsistent hash: " << tFile.HasInconsistentHash()
297307
<< std::endl;
298308

299-
bool debug{false};
300-
309+
bool debug{false}; // the following is only used for debugging purposes
301310
if (!tFile.IsZombie() && tFile.IsWritable() && debug) {
302311
// Delete all objects in the file recursively
303312
utils::Recursion(&tFile, &tFile);
@@ -378,11 +387,40 @@ void SiStripHitEffFromCalibTree::algoAnalyze(const edm::Event& e, const edm::Eve
378387
layertotal_vsBX.push_back(fs->make<TH1F>(
379388
Form("totalVsBx_layer%i", (int)ilayer), Form("layer %i", (int)ilayer), nBxInAnOrbit_, 0, nBxInAnOrbit_));
380389

390+
geff_vsBX.push_back(fs->make<TGraphAsymmErrors>(nBxInAnOrbit_ - 1));
391+
geff_vsBX[ilayer]->SetName(Form("effVsBx_layer%i", (int)ilayer));
392+
geff_vsBX[ilayer]->SetTitle(
393+
fmt::format("Hit Efficiency vs bx - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
394+
395+
geff_avg_vsBX.push_back(fs->make<TGraphAsymmErrors>(nBxInAnOrbit_ - 1));
396+
geff_avg_vsBX[ilayer]->SetName(Form("effVsBxAvg_layer%i", (int)ilayer));
397+
geff_avg_vsBX[ilayer]->SetTitle(
398+
fmt::format("Hit Efficiency vs bx - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
399+
geff_avg_vsBX[ilayer]->SetMarkerStyle(20);
400+
401+
geff_avg_vsLumi.push_back(fs->make<TGraphAsymmErrors>(99));
402+
geff_avg_vsLumi[ilayer]->SetName(Form("effVsLumiAvg_layer%i", (int)ilayer));
403+
geff_avg_vsLumi[ilayer]->SetTitle(
404+
fmt::format("Hit Efficiency vs inst. lumi. - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
405+
geff_avg_vsLumi[ilayer]->SetMarkerStyle(20);
406+
407+
geff_avg_vsPU.push_back(fs->make<TGraphAsymmErrors>(44));
408+
geff_avg_vsLumi[ilayer]->SetName(Form("effVsPUAvg_layer%i", (int)ilayer));
409+
geff_avg_vsPU[ilayer]->SetTitle(
410+
fmt::format("Hit Efficiency vs pileup - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
411+
geff_avg_vsPU[ilayer]->SetMarkerStyle(20);
412+
381413
if (useCM_) {
382414
layerfound_vsCM.push_back(
383415
fs->make<TH1F>(Form("layerfound_vsCM_layer_%i", (int)(ilayer)), lyrName.c_str(), 20, 0, 400));
384416
layertotal_vsCM.push_back(
385417
fs->make<TH1F>(Form("layertotal_vsCM_layer_%i", (int)(ilayer)), lyrName.c_str(), 20, 0, 400));
418+
419+
geff_avg_vsCM.push_back(fs->make<TGraphAsymmErrors>(19));
420+
geff_avg_vsCM[ilayer]->SetName(Form("effVsCMAvg_layer%i", (int)ilayer));
421+
geff_avg_vsCM[ilayer]->SetTitle(
422+
fmt::format("Hit Efficiency vs common Mode - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
423+
geff_avg_vsCM[ilayer]->SetMarkerStyle(20);
386424
}
387425
layertotal[ilayer] = 0;
388426
layerfound[ilayer] = 0;
@@ -1528,7 +1566,7 @@ void SiStripHitEffFromCalibTree::makeSummaryVsBx() {
15281566
if (showRings_)
15291567
nLayers = 20;
15301568

1531-
for (unsigned int ilayer = 1; ilayer < nLayers; ilayer++) {
1569+
for (unsigned int ilayer = 0; ilayer <= nLayers; ilayer++) {
15321570
for (unsigned int ibx = 0; ibx <= nBxInAnOrbit_; ibx++) {
15331571
layerfound_vsBX[ilayer]->SetBinContent(ibx, 1e-6);
15341572
layertotal_vsBX[ilayer]->SetBinContent(ibx, 1);
@@ -1546,17 +1584,9 @@ void SiStripHitEffFromCalibTree::makeSummaryVsBx() {
15461584
layerfound_vsBX[ilayer]->Sumw2();
15471585
layertotal_vsBX[ilayer]->Sumw2();
15481586

1549-
TGraphAsymmErrors* geff = fs->make<TGraphAsymmErrors>(nBxInAnOrbit_ - 1);
1550-
geff->SetName(Form("effVsBx_layer%i", ilayer));
1551-
1552-
geff->SetTitle(fmt::format("Hit Efficiency vs bx - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
1553-
geff->BayesDivide(layerfound_vsBX[ilayer], layertotal_vsBX[ilayer]);
1587+
geff_vsBX[ilayer]->BayesDivide(layerfound_vsBX[ilayer], layertotal_vsBX[ilayer]);
15541588

15551589
//Average over trains
1556-
TGraphAsymmErrors* geff_avg = fs->make<TGraphAsymmErrors>();
1557-
geff_avg->SetName(Form("effVsBxAvg_layer%i", ilayer));
1558-
geff_avg->SetTitle(fmt::format("Hit Efficiency vs bx - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
1559-
geff_avg->SetMarkerStyle(20);
15601590
int ibx = 0;
15611591
int previous_bx = -80;
15621592
int delta_bx = 0;
@@ -1574,10 +1604,11 @@ void SiStripHitEffFromCalibTree::makeSummaryVsBx() {
15741604
if (delta_bx > (int)spaceBetweenTrains_ && nbx > 0 && total > 0) {
15751605
eff = found / (float)total;
15761606
//LOGPRINT<<"new train "<<ipt<<" "<<sum_bx/nbx<<" "<<eff<<endl;
1577-
geff_avg->SetPoint(ipt, sum_bx / nbx, eff);
1607+
geff_avg_vsBX[ilayer]->SetPoint(ipt, sum_bx / nbx, eff);
15781608
low = TEfficiency::Bayesian(total, found, .683, 1, 1, false);
15791609
up = TEfficiency::Bayesian(total, found, .683, 1, 1, true);
1580-
geff_avg->SetPointError(ipt, sum_bx / nbx - firstbx, previous_bx - sum_bx / nbx, eff - low, up - eff);
1610+
geff_avg_vsBX[ilayer]->SetPointError(
1611+
ipt, sum_bx / nbx - firstbx, previous_bx - sum_bx / nbx, eff - low, up - eff);
15811612
ipt++;
15821613
sum_bx = 0;
15831614
found = 0;
@@ -1595,22 +1626,25 @@ void SiStripHitEffFromCalibTree::makeSummaryVsBx() {
15951626
//last train
15961627
eff = found / (float)total;
15971628
//LOGPRINT<<"new train "<<ipt<<" "<<sum_bx/nbx<<" "<<eff<<endl;
1598-
geff_avg->SetPoint(ipt, sum_bx / nbx, eff);
1629+
geff_avg_vsBX[ilayer]->SetPoint(ipt, sum_bx / nbx, eff);
15991630
low = TEfficiency::Bayesian(total, found, .683, 1, 1, false);
16001631
up = TEfficiency::Bayesian(total, found, .683, 1, 1, true);
1601-
geff_avg->SetPointError(ipt, sum_bx / nbx - firstbx, previous_bx - sum_bx / nbx, eff - low, up - eff);
1632+
geff_avg_vsBX[ilayer]->SetPointError(ipt, sum_bx / nbx - firstbx, previous_bx - sum_bx / nbx, eff - low, up - eff);
16021633
}
16031634
}
16041635

1605-
void SiStripHitEffFromCalibTree::computeEff(vector<TH1F*>& vhfound, vector<TH1F*>& vhtotal, string name) {
1636+
void SiStripHitEffFromCalibTree::computeEff(vector<TH1F*>& vhfound,
1637+
vector<TH1F*>& vhtotal,
1638+
string name,
1639+
vector<TGraphAsymmErrors*> geff) {
16061640
unsigned int nLayers = siStripLayers_;
16071641
if (showRings_)
16081642
nLayers = 20;
16091643

16101644
TH1F* hfound;
16111645
TH1F* htotal;
16121646

1613-
for (unsigned int ilayer = 1; ilayer < nLayers; ilayer++) {
1647+
for (unsigned int ilayer = 0; ilayer <= nLayers; ilayer++) {
16141648
hfound = vhfound[ilayer];
16151649
htotal = vhtotal[ilayer];
16161650

@@ -1625,18 +1659,7 @@ void SiStripHitEffFromCalibTree::computeEff(vector<TH1F*>& vhfound, vector<TH1F*
16251659
htotal->SetBinContent(i, 1);
16261660
}
16271661

1628-
TGraphAsymmErrors* geff = fs->make<TGraphAsymmErrors>(hfound->GetNbinsX());
1629-
geff->SetName(Form("%s_layer%i", name.c_str(), ilayer));
1630-
geff->BayesDivide(hfound, htotal);
1631-
if (name == "effVsLumi")
1632-
geff->SetTitle(
1633-
fmt::format("Hit Efficiency vs inst. lumi. - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
1634-
if (name == "effVsPU")
1635-
geff->SetTitle(fmt::format("Hit Efficiency vs pileup - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
1636-
if (name == "effVsCM")
1637-
geff->SetTitle(
1638-
fmt::format("Hit Efficiency vs common Mode - {}", ::layerName(ilayer, showRings_, nTEClayers)).c_str());
1639-
geff->SetMarkerStyle(20);
1662+
geff[ilayer]->BayesDivide(hfound, htotal);
16401663
}
16411664
}
16421665

@@ -1674,13 +1697,13 @@ void SiStripHitEffFromCalibTree::makeSummaryVsLumi() {
16741697
LOGPRINT << "Avg conditions: lumi :" << avgLumi << " pu: " << avgPU;
16751698
}
16761699

1677-
computeEff(layerfound_vsLumi, layertotal_vsLumi, "effVsLumi");
1678-
computeEff(layerfound_vsPU, layertotal_vsPU, "effVsPU");
1700+
computeEff(layerfound_vsLumi, layertotal_vsLumi, "effVsLumi", geff_avg_vsLumi);
1701+
computeEff(layerfound_vsPU, layertotal_vsPU, "effVsPU", geff_avg_vsPU);
16791702
}
16801703

16811704
void SiStripHitEffFromCalibTree::makeSummaryVsCM() {
16821705
LOGPRINT << "Computing efficiency vs CM";
1683-
computeEff(layerfound_vsCM, layertotal_vsCM, "effVsCM");
1706+
computeEff(layerfound_vsCM, layertotal_vsCM, "effVsCM", geff_avg_vsCM);
16841707
}
16851708

16861709
TString SiStripHitEffFromCalibTree::getLayerSideName(Long_t k) {

0 commit comments

Comments
 (0)