From df269636365318ff66a5a9e374dcd9327ba29b38 Mon Sep 17 00:00:00 2001 From: jgrosseo Date: Sun, 7 Nov 2010 13:25:26 +0000 Subject: [PATCH] plotting macros for systematic uncertainties --- PWG4/JetTasks/AliUEHist.cxx | 39 ++-- PWG4/JetTasks/AliUEHist.h | 2 +- PWG4/macros/underlyingevent/correct.C | 263 ++++++++++++++++++++++++-- PWG4/macros/underlyingevent/plots.C | 16 +- 4 files changed, 286 insertions(+), 34 deletions(-) diff --git a/PWG4/JetTasks/AliUEHist.cxx b/PWG4/JetTasks/AliUEHist.cxx index c2355950e63..b32fb6f0994 100644 --- a/PWG4/JetTasks/AliUEHist.cxx +++ b/PWG4/JetTasks/AliUEHist.cxx @@ -60,6 +60,8 @@ AliUEHist::AliUEHist(const char* reqHist) : if (strlen(reqHist) == 0) return; + AliLog::SetClassDebugLevel("AliCFContainer", -1); + const char* title = ""; // track level @@ -481,8 +483,8 @@ TH1D* AliUEHist::GetUEHist(AliUEHist::CFStep step, AliUEHist::Region region, Flo else { fTrackHist[region]->GetGrid(step)->SetRangeUser(2, ptLeadMin, ptLeadMax); - tracks = fTrackHist[region]->GetGrid(step)->Project(4); - Printf("Calculated histogram in %.2f <= pT <= %.2f --> %f entries", ptLeadMin, ptLeadMax, tracks->Integral()); + tracks = (TH1D*) fTrackHist[region]->GetGrid(step)->Project(4); + Printf("Calculated histogram in %.2f <= pT <= %.2f --> %f tracks", ptLeadMin, ptLeadMax, tracks->Integral()); fTrackHist[region]->GetGrid(step)->SetRangeUser(2, 0, -1); // normalize to get a density (deta dphi) @@ -495,6 +497,7 @@ TH1D* AliUEHist::GetUEHist(AliUEHist::CFStep step, AliUEHist::Region region, Flo Int_t nEvents = (Int_t) events->Integral(events->FindBin(ptLeadMin), events->FindBin(ptLeadMax)); if (nEvents > 0) tracks->Scale(1.0 / nEvents); + Printf("Calculated histogram in %.2f <= pT <= %.2f --> %d events", ptLeadMin, ptLeadMax, nEvents); } ResetBinLimits(fTrackHist[region]->GetGrid(step)); @@ -973,12 +976,12 @@ TH1* AliUEHist::GetBias(CFStep step1, CFStep step2, Int_t region, const char* ax ResetBinLimits(fEventHist->GetGrid(step2)); SetBinLimits(tmp->GetGrid(step2)); - TH1D* events1 = fEventHist->Project(0, step1); - TH3D* hist1 = tmp->Project(0, tmp->GetNVar()-1, 2, step1); + TH1D* events1 = (TH1D*)fEventHist->Project(0, step1); + TH3D* hist1 = (TH3D*)tmp->Project(0, tmp->GetNVar()-1, 2, step1); WeightHistogram(hist1, events1); - TH1D* events2 = fEventHist->Project(0, step2); - TH3D* hist2 = tmp->Project(0, tmp->GetNVar()-1, 2, step2); + TH1D* events2 = (TH1D*)fEventHist->Project(0, step2); + TH3D* hist2 = (TH3D*)tmp->Project(0, tmp->GetNVar()-1, 2, step2); WeightHistogram(hist2, events2); TH1* generated = hist1; @@ -1166,15 +1169,17 @@ void AliUEHist::CopyReconstructedData(AliUEHist* from) continue; fTrackHist[region]->SetGrid(AliUEHist::kCFStepReconstructed, from->fTrackHist[region]->GetGrid(AliUEHist::kCFStepReconstructed)); + //fTrackHist[region]->SetGrid(AliUEHist::kCFStepTrackedOnlyPrim, from->fTrackHist[region]->GetGrid(AliUEHist::kCFStepTrackedOnlyPrim)); fTrackHist[region]->SetGrid(AliUEHist::kCFStepBiasStudy, from->fTrackHist[region]->GetGrid(AliUEHist::kCFStepBiasStudy)); } fEventHist->SetGrid(AliUEHist::kCFStepReconstructed, from->fEventHist->GetGrid(AliUEHist::kCFStepReconstructed)); + //fEventHist->SetGrid(AliUEHist::kCFStepTrackedOnlyPrim, from->fEventHist->GetGrid(AliUEHist::kCFStepTrackedOnlyPrim)); fEventHist->SetGrid(AliUEHist::kCFStepBiasStudy, from->fEventHist->GetGrid(AliUEHist::kCFStepBiasStudy)); } //____________________________________________________________________ -void AliUEHist::ExtendTrackingEfficiency() +void AliUEHist::ExtendTrackingEfficiency(Bool_t verbose) { // fits the tracking efficiency at high pT with a constant and fills all bins with this tracking efficiency @@ -1184,15 +1189,17 @@ void AliUEHist::ExtendTrackingEfficiency() TH1* obj = GetTrackingEfficiency(1); - //new TCanvas; obj->Draw(); - obj->Fit("pol0", "+0", "SAME", fitRangeBegin, fitRangeEnd); + if (verbose) + new TCanvas; obj->Draw(); + obj->Fit("pol0", (verbose) ? "+" : "+0", "SAME", fitRangeBegin, fitRangeEnd); Float_t trackingEff = obj->GetFunction("pol0")->GetParameter(0); obj = GetTrackingContamination(1); - //new TCanvas; obj->Draw(); - obj->Fit("pol0", "+0", "SAME", fitRangeBegin, fitRangeEnd); + if (verbose) + new TCanvas; obj->Draw(); + obj->Fit("pol0", (verbose) ? "+" : "+0", "SAME", fitRangeBegin, fitRangeEnd); Float_t trackingCont = obj->GetFunction("pol0")->GetParameter(0); @@ -1201,17 +1208,15 @@ void AliUEHist::ExtendTrackingEfficiency() // extend up to pT 100 for (Int_t x = fTrackHistEfficiency->GetAxis(0, 0)->FindBin(fEtaMin); x <= fTrackHistEfficiency->GetAxis(0, 0)->FindBin(fEtaMax); x++) for (Int_t y = fTrackHistEfficiency->GetAxis(1, 0)->FindBin(extendRangeBegin); y <= fTrackHistEfficiency->GetNBins(1); y++) - for (Int_t z = 1; z <= fTrackHistEfficiency->GetNBins(2); z++) + for (Int_t z = 1; z <= fTrackHistEfficiency->GetNBins(2); z++) // particle type axis { - // TODO fit contamination as well Int_t bins[3]; bins[0] = x; bins[1] = y; bins[2] = z; - fTrackHistEfficiency->GetGrid(0)->SetElement(bins, 1); - fTrackHistEfficiency->GetGrid(1)->SetElement(bins, trackingEff); - fTrackHistEfficiency->GetGrid(2)->SetElement(bins, trackingEff / trackingCont); + fTrackHistEfficiency->GetGrid(0)->SetElement(bins, 100); + fTrackHistEfficiency->GetGrid(1)->SetElement(bins, 100.0 * trackingEff); + fTrackHistEfficiency->GetGrid(2)->SetElement(bins, 100.0 * trackingEff / trackingCont); } } - diff --git a/PWG4/JetTasks/AliUEHist.h b/PWG4/JetTasks/AliUEHist.h index 484df6a11a9..ebacbb6a5f3 100644 --- a/PWG4/JetTasks/AliUEHist.h +++ b/PWG4/JetTasks/AliUEHist.h @@ -62,7 +62,7 @@ class AliUEHist : public TObject TH1D* GetTrackingEfficiencyCorrection(Int_t axis); TH2D* GetTrackingEfficiencyCorrection(); - void ExtendTrackingEfficiency(); + void ExtendTrackingEfficiency(Bool_t verbose = kFALSE); void Correct(AliUEHist* corrections); void CorrectTracks(CFStep step1, CFStep step2, TH1* trackCorrection, Int_t var1, Int_t var2 = -1); diff --git a/PWG4/macros/underlyingevent/correct.C b/PWG4/macros/underlyingevent/correct.C index 2a648af7ebd..b98c9638c40 100644 --- a/PWG4/macros/underlyingevent/correct.C +++ b/PWG4/macros/underlyingevent/correct.C @@ -30,6 +30,93 @@ void Prepare1DPlot(TH1* hist) SetRanges(hist); } +TH1* GetSystematicUncertainty(TH1* corr) +{ + Int_t energy = 900; + Int_t ueHist = 0; + + systError = (TH1*) corr->Clone("systError"); + systError->Reset(); + + Float_t constantUnc = 0; + + // particle composition + constantUnc += 0.8 ** 2; + + // tpc efficiency + if (energy == 900 && gLeadingpTMin < 1.0) + constantUnc += 1.0 ** 2; + else if (energy == 900 && gLeadingpTMin < 1.5) + constantUnc += 0.5 ** 2; + if (energy == 7000 && gLeadingpTMin < 1.0) + constantUnc += 1.0 ** 2; + else if (energy == 7000 && gLeadingpTMin < 1.5) + constantUnc += 0.6 ** 2; + + // track cuts + if (energy == 900 && gLeadingpTMin < 1.0) + constantUnc += 2.5 ** 2; + else if (energy == 900 && gLeadingpTMin < 1.5) + constantUnc += 2.0 ** 2; + if (energy == 7000) + constantUnc += 3.0 ** 2; + + // difference corrected with pythia and phojet + if (energy == 900 && gLeadingpTMin < 1.0) + constantUnc += 0.6 ** 2; + else if (energy == 900 && gLeadingpTMin < 1.5) + constantUnc += 0.8 ** 2; + + for (Int_t bin=1; bin<=systError->GetNbinsX(); bin++) + systError->SetBinContent(bin, constantUnc); + + // mis id bias + if (ueHist == 0 || ueHist == 2) + systError->Fill(0.75, 4.0 ** 2); + if (ueHist == 1) + systError->Fill(0.75, 5.0 ** 2); + + if (energy == 900) + { + if (gLeadingpTMin < 1.0) + systError->Fill(1.25, 1.0 ** 2); + else if (gLeadingpTMin < 1.5) + systError->Fill(1.25, 2.0 ** 2); + } + + // non-closure in MC + if (energy == 900) + for (Int_t bin=1; bin<=systError->GetNbinsX(); bin++) + systError->Fill(systError->GetXaxis()->GetBinCenter(bin), 1.0 ** 2); + + if (energy == 7000) + systError->Fill(0.75, 2.0 ** 2); + + // vertex efficiency + systError->Fill(0.75, 1.0 ** 2); + + // strangeness + for (Int_t bin=1; bin<=systError->GetNbinsX(); bin++) + { + if (energy == 900) + systError->Fill(systError->GetXaxis()->GetBinCenter(bin), 0.5 ** 2); + if (energy == 7000 && systError->GetXaxis()->GetBinCenter(bin) < 1.5) + systError->Fill(systError->GetXaxis()->GetBinCenter(bin), 2.0 ** 2); + else if (energy == 7000) + systError->Fill(systError->GetXaxis()->GetBinCenter(bin), 1.0 ** 2); + } + + systError->SetFillColor(kGray); + systError->SetFillStyle(1001); + systError->SetMarkerStyle(0); + systError->SetLineColor(0); + + for (Int_t bin=1; bin<=systError->GetNbinsX(); bin++) + systError->SetBinContent(bin, TMath::Sqrt(systError->GetBinContent(bin))); + + return systError; +} + void DrawRatio(TH1* corr, TH1* mc, const char* name) { mc->SetLineColor(2); @@ -79,7 +166,20 @@ void DrawRatio(TH1* corr, TH1* mc, const char* name) dummy->GetYaxis()->SetTitleSize(0.08); dummy->GetYaxis()->SetTitleOffset(0.8); dummy->DrawCopy(); - + + + // systematic uncertainty + TH1* syst = GetSystematicUncertainty(corr); + + systError = (TH1*) syst->Clone("corrSystError"); + for (Int_t bin=1; bin<=systError->GetNbinsX(); bin++) + { + systError->SetBinError(bin, corr->GetBinContent(bin) * syst->GetBinContent(bin) / 100); + systError->SetBinContent(bin, corr->GetBinContent(bin)); + } + + systError->Draw("E2 ][ SAME"); + corr->Draw("SAME"); mc->Draw("SAME"); @@ -113,10 +213,24 @@ void DrawRatio(TH1* corr, TH1* mc, const char* name) dummy3.GetYaxis()->SetTitleSize(0.08); dummy3.GetYaxis()->SetTitleOffset(0.8); dummy3.DrawCopy(); + + // for the ratio add in quadrature + for (Int_t bin=1; bin<=syst->GetNbinsX(); bin++) + { + if (corr->GetBinError(bin) > 0) + syst->SetBinError(bin, TMath::Sqrt(TMath::Power(syst->GetBinContent(bin) / 100, 2) + TMath::Power(corr->GetBinError(bin) / corr->GetBinContent(bin), 2))); + else + syst->SetBinError(bin, 0); + syst->SetBinContent(bin, 1); + } + + syst->Draw("E2 ][ SAME"); + dummy3.DrawCopy("SAME"); ratio->Draw("SAME"); canvas3->Modified(); + } void loadlibs() @@ -228,6 +342,8 @@ void CompareEventHist(const char* fileName1, const char* fileName2, Int_t id, In void CompareStep(const char* fileName1, const char* fileName2, Int_t id, Int_t step, Int_t region, Float_t ptLeadMin = -1, Float_t ptLeadMax = -1) { + // fileName1 is labelled Corrected in the plot + loadlibs(); Compare(fileName1, fileName2, id, step, step, region, ptLeadMin, ptLeadMax); @@ -310,10 +426,10 @@ void DrawRatios(void* correctedVoid, void* comparisonVoid, Int_t compareStep = - AliUEHistograms* corrected = (AliUEHistograms*) correctedVoid; AliUEHistograms* comparison = (AliUEHistograms*) comparisonVoid; - if (compareUEHist == 2) + if (1 && compareUEHist == 2) { - for (Float_t ptLeadMin = 1.01; ptLeadMin < 4; ptLeadMin += 2) - DrawRatios(TString(Form("UE %d pT %f", compareUEHist, ptLeadMin)), corrected->GetUEHist(compareUEHist), comparison->GetUEHist(compareUEHist), compareStep, compareRegion, ptLeadMin, ptLeadMin + 0.48); + for (Float_t ptLeadMin = 0.51; ptLeadMin < 4; ptLeadMin += 2.5) + DrawRatios(TString(Form("UE %d pT %f", compareUEHist, ptLeadMin)), corrected->GetUEHist(compareUEHist), comparison->GetUEHist(compareUEHist), compareStep, compareRegion, ptLeadMin, ptLeadMin + 2.48); return; } @@ -397,7 +513,7 @@ void correctMC(const char* fileNameCorrections, const char* fileNameESD = 0, Int // function to compare only final step for all regions and distributions -void correctData(const char* fileNameCorrections, const char* fileNameESD, Int_t compareStep = -1, Int_t compareRegion = 2, Int_t compareUEHist = 0) +void correctData(const char* fileNameCorrections, const char* fileNameESD, const char* contEnhancement, Float_t contEncUpTo = 1.0, Int_t compareStep = -1, Int_t compareRegion = 2, Int_t compareUEHist = 0) { // corrects fileNameESD with fileNameCorrections and compares the two @@ -416,6 +532,19 @@ void correctData(const char* fileNameCorrections, const char* fileNameESD, Int_t corr->ExtendTrackingEfficiency(); + TFile::Open(contEnhancement); + contEncHist = (TH1*) gFile->Get("histo"); + contEncHistFullRange = (TH1*) corr->GetUEHist(0)->GetTrackingEfficiency(1)->Clone("contEncHistFullRange"); + + contEncHistFullRange->Reset(); + for (Int_t i=1; i<=contEncHistFullRange->GetNbinsX(); i++) + { + contEncHistFullRange->SetBinContent(i, 1); + if (i <= contEncHist->GetNbinsX() && contEncHist->GetXaxis()->GetBinCenter(i) < contEncUpTo && contEncHist->GetBinContent(i) > 0) + contEncHistFullRange->SetBinContent(i, contEncHist->GetBinContent(i)); + } + corr->SetContaminationEnhancement((TH1F*) contEncHistFullRange); + esd->Correct(corr); file3 = TFile::Open("corrected.root", "RECREATE"); @@ -447,11 +576,11 @@ void ITSTPCEfficiency(const char* fileNameData, Int_t id, Int_t itsTPC = 0) new TCanvas; effHist->Draw(); - EffectOfModifiedTrackingEfficiency(fileNameData, id, effHist, 1, -1, (itsTPC == 0) ? "ITS" : "TPC"); + EffectOfModifiedTrackingEfficiency(fileNameData, id, 2, effHist, 1, -1, (itsTPC == 0) ? "ITS" : "TPC"); } -void EffectOfModifiedTrackingEfficiency(const char* fileNameData, Int_t id, TH1* trackingEff, Int_t axis1, Int_t axis2 = -1, const char* name = "EffectOfModifiedTrackingEfficiency") +void EffectOfModifiedTrackingEfficiency(const char* fileNameData, Int_t id, Int_t region, TH1* trackingEff, Int_t axis1, Int_t axis2 = -1, const char* name = "EffectOfModifiedTrackingEfficiency") { // trackingEff should contain the change in tracking efficiency, i.e. between before and after in the eta-pT plane @@ -463,10 +592,18 @@ void EffectOfModifiedTrackingEfficiency(const char* fileNameData, Int_t id, TH1* SetupRanges(corrected); AliUEHist* ueHist = corrected->GetUEHist(id); - Int_t region = 2; + Float_t ptLeadMin = -1; + Float_t ptLeadMax = -1; + if (id == 2) + { + // the uncertainty is flat in delta phi, so use this trick to get directly the uncertainty as function of leading pT + //ptLeadMin = 1.01; + //ptLeadMax = 1.99; + } + // histogram before - TH1* before = ueHist->GetUEHist(AliUEHist::kCFStepAll, region); + TH1* before = ueHist->GetUEHist(AliUEHist::kCFStepAll, region, ptLeadMin, ptLeadMax); // copy histogram // the CFStepTriggered step is overwritten here and cannot be used for comparison afterwards anymore @@ -476,7 +613,7 @@ void EffectOfModifiedTrackingEfficiency(const char* fileNameData, Int_t id, TH1* ueHist->CorrectTracks(AliUEHist::kCFStepTriggered, AliUEHist::kCFStepAll, trackingEff, axis1, axis2); // histogram after - TH1* after = ueHist->GetUEHist(AliUEHist::kCFStepAll, region); + TH1* after = ueHist->GetUEHist(AliUEHist::kCFStepAll, region, ptLeadMin, ptLeadMax); DrawRatio(before, after, name); gPad->GetCanvas()->SaveAs(Form("%s.png", name)); @@ -518,7 +655,7 @@ void EffectOfTrackCuts(const char* fileNameData, Int_t id, const char* systFile) //new TCanvas; systEffect->Draw("COLZ"); new TCanvas; effHist->Draw("COLZ"); - EffectOfModifiedTrackingEfficiency(fileNameData, id, effHist, 0, 1, histName); + EffectOfModifiedTrackingEfficiency(fileNameData, id, (id == 2) ? 0 : 2, effHist, 0, 1, histName); //return; } @@ -562,8 +699,10 @@ void ModifyComposition(const char* fileNameData, const char* fileNameCorrections for (Int_t region=0; regionGetUEHist(AliUEHist::kCFStepAll, region, ptLeadMin, ptLeadMax); - defaultEff = ueHistCorrections->GetTrackingEfficiency(); - defaultEffpT = ueHistCorrections->GetTrackingEfficiency(1); + //defaultEff = ueHistCorrections->GetTrackingEfficiency(); + defaultEff = ueHistCorrections->GetTrackingCorrection(); + //defaultEffpT = ueHistCorrections->GetTrackingEfficiency(1); + defaultEffpT = ueHistCorrections->GetTrackingCorrection(1); defaultContainer = ueHistCorrections->GetTrackHistEfficiency(); c = new TCanvas; @@ -615,12 +754,14 @@ void ModifyComposition(const char* fileNameData, const char* fileNameCorrections ueHistCorrections->SetTrackHistEfficiency(newContainer); // ratio - modifiedEff = ueHistCorrections->GetTrackingEfficiency(); + //modifiedEff = ueHistCorrections->GetTrackingEfficiency(); + modifiedEff = ueHistCorrections->GetTrackingCorrection(); modifiedEff->Divide(modifiedEff, defaultEff); //modifiedEff->Draw("COLZ"); c->cd(); - modifiedEffpT = ueHistCorrections->GetTrackingEfficiency(1); + //modifiedEffpT = ueHistCorrections->GetTrackingEfficiency(1); + modifiedEffpT = ueHistCorrections->GetTrackingCorrection(1); modifiedEffpT->SetLineColor(i+1); modifiedEffpT->Draw("SAME"); @@ -650,3 +791,95 @@ void ModifyComposition(const char* fileNameData, const char* fileNameCorrections for (Int_t i=0; i> line; + + if (line.Length() == 0) + continue; + + TString fileName; + fileName.Form("%s/%s/PWG4_JetTasksOutput.root", "maps", line.Data()); + Printf("%s", fileName.Data()); + + m.AddFile(fileName); + } + + m.SetFastMethod(); + m.OutputFile("merged.root"); + m.Merge(); +} + +void MergeList2(const char* listFile, Bool_t onlyPrintEvents = kFALSE) +{ + loadlibs(); + + ifstream in; + in.open(listFile); + + AliUEHistograms* final = 0; + TList* finalList = 0; + + TString line; + while (in.good()) + { + in >> line; + + if (line.Length() == 0) + continue; + + TString fileName; + fileName.Form("%s/%s/PWG4_JetTasksOutput.root", "maps", line.Data()); + Printf("%s", fileName.Data()); + + file = TFile::Open(fileName); + if (!file) + continue; + + list = (TList*) file->Get(objectName); + + if (!final) + { + final = (AliUEHistograms*) list->FindObject("AliUEHistograms"); + //final->GetEventCount()->Draw(); return; + Printf("Events: %d", (Int_t) final->GetEventCount()->ProjectionX()->GetBinContent(4)); + finalList = list; + } + else + { + additional = (AliUEHistograms*) list->FindObject("AliUEHistograms"); + Printf("Events: %d", (Int_t) additional->GetEventCount()->ProjectionX()->GetBinContent(4)); + + if (!onlyPrintEvents) + { + TList list2; + list2.Add(additional); + final->Merge(&list2); + } + delete additional; + file->Close(); + } + } + + if (onlyPrintEvents) + return; + + Printf("Total events (at step 0): %d", (Int_t) final->GetEventCount()->ProjectionX()->GetBinContent(4)); + + file3 = TFile::Open("merged.root", "RECREATE"); + file3->mkdir("PWG4_LeadingTrackUE"); + file3->cd("PWG4_LeadingTrackUE"); + finalList->Write(0, TObject::kSingleKey); + file3->Close(); +} diff --git a/PWG4/macros/underlyingevent/plots.C b/PWG4/macros/underlyingevent/plots.C index 2f94e8c205a..910e8abc517 100644 --- a/PWG4/macros/underlyingevent/plots.C +++ b/PWG4/macros/underlyingevent/plots.C @@ -30,7 +30,8 @@ void PlotTrackingEfficiencies() continue; TString fileName; - fileName.Form("%s/%s/PWG4_JetTasksOutput.root", "alien:///alice/cern.ch/user/k/kleinb/analysisESD/LHC10d4/output_pwg4train_LHC10d4_101001a", line.Data()); + //fileName.Form("%s/%s/PWG4_JetTasksOutput.root", "alien:///alice/cern.ch/user/k/kleinb/analysisESD/LHC10d4/output_pwg4train_LHC10d4_101001a", line.Data()); + fileName.Form("%s/%s/PWG4_JetTasksOutput.root", "maps", line.Data()); Printf("%s", fileName.Data()); file = TFile::Open(fileName); if (!file) @@ -119,6 +120,7 @@ void CheckTrackingEfficiency(const char* reference = 0, const char* fileName = " hist->DrawCopy("SAME"); if (!all) break; + Printf("%d", i); } } @@ -139,6 +141,18 @@ void PlotSingleTrackingEfficiency(const char* fileName, Int_t what = 0) eff->Draw("colz"); } +void ExtendTrackingEfficiency(const char* fileName) +{ + loadlibs(); + + file = TFile::Open(fileName); + list = (TList*) file->Get("PWG4_LeadingTrackUE/histosLeadingTrackUE"); + AliUEHistograms* h = (AliUEHistograms*) list->FindObject("AliUEHistograms"); + h->SetEtaRange(-0.79, 0.79); + + h->GetUEHist(0)->ExtendTrackingEfficiency(1); +} + void PlotSystUncertainties() { // -- 2.43.0