ROOT logo
void CorrectForEfficiencyPbPb(const char *filedata,const char *fileMC,const char *NameList,Bool_t smoothingon=kFALSE,Bool_t hadroncontaminationsubtracted=kFALSE,Bool_t unsetCorrelatedErrors=kTRUE);
TList *GetResults(const Char_t *testfile,const Char_t *plus="");
TList *GetQA(const Char_t *testfile,const Char_t *plus="");
TObject* GetSpectrum(AliCFContainer *c, Int_t step);
THnSparseF* GetHadronEffbyIPcut(TList *hfeqa);
void CorrectFromTheWidth(TH1D *h1);

void CorrectForEfficiencyPbPb(const char *filedata,const char *fileMC,const char *NameList,Bool_t smoothingon,Bool_t hadroncontaminationsubtracted,Bool_t unsetCorrelatedErrors) {
  
  ///////////////////////////////////////////////////////////////////////////////////////////////////////
  // Inputs of the macro:
  // filedata and fileMC: path of the output over data and MC
  // NameList: name of the list in this output ("HFE_Results" for example)
  // smoothingon: kTRUE means smoothing is used, should be kFALSE in general
  // hadroncontaminationsubtracted: kTRUE means hadron contamination is subtracted
  // unsetCorrelatedErrors: kTRUE means that the errors may be not properly calculated, nevertheless in 2D (centrality,pt) the proper calculation of the errors gave crazy results in the past, therefore kTRUE per default
  //
  // In the macro the centrality bins for the final corrected spectra are choosen
  // Look at: 
  // spectrum->SetNCentralityBinAtTheEnd(2);
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(0,2,0); // 0-10%
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(7,9,1); // 60-80%
  // Per definition:
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(0,1,0); // 0-5%
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(1,2,0); // 5-10%
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(2,3,0); // 10-20%
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(3,4,0); // 20-30%
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(4,5,0); // 30-40%
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(5,6,0); // 40-50%
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(6,7,0); // 50-60%
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(7,8,0); // 60-70%
  // spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(8,9,0); // 70-80%
  //
  // Outputs:
  //  TFile*         finalSpectrum.root
  //
  //  Minimum-bias results not relevant for the analysis
  //
  //  TGraphErrors     UnfoldingCorrectedSpectrum;1
  //  TGraphErrors     AlltogetherSpectrum;1
  //  TH1D     RatioUnfoldingAlltogetherSpectrum;1
  //  THnSparseT<TArrayF>      UnfoldingCorrectedNotNormalizedSpectrum;1       step1 projection centralitypt
  //  AliCFDataGrid    AlltogetherCorrectedNotNormalizedSpectrum;1     dataGrid
  //
  // Results:
  //
  // Unfolded results: can be used for minimum-bias and enhanced sample
  //
  // TH1D     Unfolded_Notnormalized_centrality_bin_[0_2[;1    // Not normalized to the number of events
  // TGraphErrors     Unfolded_normalized_centrality_bin_[0_2[;1  // Normalized to the number of events ---> usual output
  //
  // Direct correction (ptesd/ptMC): can be used ONLY for minimum-bias sample
  //
  // TH1D     Dirrectcorrected_Notnormalized_centrality_bin_[0_2[;1   // Not normalized to the number of events
  // TGraphErrors     Dirrectedcorrected_normalized_centrality_bin_[0_2[;1 // Normalized to the number of events --> usual output
  //
  // Important:
  //
  // TPC pid efficiency is not included --> results have to be multiplied by 2
  //
  // For minimum-bias Dirrectcorrected_normalized_centrality_bin_[0_2[ and Unfolded_normalized_centrality_bin_[0_2[ should be similar
  // Not for enhance sample: Dirrectcorrected is wrong.
  //
  // Will produce finalSpectrum.root with results inside
  // TGraphErrors UnfoldingCorrectedSpectrum -> unfolding procedure (doesn't work in 2D with trunk)
  // TGraphErrors AlltogetherSpectrum -> corrected spectrum with other method
  // TH1D RatioUnfoldingAlltogetherSpectrum 
  // THnSparseF UnfoldingCorrectedNotNormalizedSpectrum -> unfolding procedure not yet normalized
  // AliCFDataGrid AlltogetherCorrectedNotNormalizedSpectrum -> other method not yet normalized
  ///////////////////////////////////////////////////////////////////////////////////////////////////////

  gStyle->SetPalette(1);
  gStyle->SetOptStat(1111);
  gStyle->SetPadBorderMode(0);
  gStyle->SetCanvasColor(10);
  gStyle->SetPadLeftMargin(0.13);
  gStyle->SetPadRightMargin(0.13);

  /////////////////////
  // Take the stuff
  /////////////////////
  
  TList *resultsdata = GetResults(filedata,NameList);
  if(!resultsdata){
    printf("No output objects for data: Calculation will terminate here\n");
    return;
  }

  ///////////////////////////////////////////////////////////
  // Event container for the normalization to CINB1
  // Normalize to the number events after event selection
  ////////////////////////////////////////////////////////////
  
  AliCFContainer *containerdata = (AliCFContainer *) resultsdata->FindObject("eventContainer");
  if(!containerdata) {
    printf("No container \n");
    return;
  }
  AliCFDataGrid *dataGrid = (AliCFDataGrid *) GetSpectrum(containerdata,AliHFEcuts::kEventStepReconstructed);
  THnSparseF *eventcontainer = (THnSparseF*) dataGrid->GetGrid();
  TAxis *cenaxisb = eventcontainer->GetAxis(2);
  Int_t nbbin = cenaxisb->GetNbins();
  printf("There are %d centrality bins!!!!!!!!!!!\n",nbbin);
  Double_t *nbeventstotal = new Double_t[nbbin];
  
  for(Int_t binc = 0; binc < nbbin; binc++){
    cenaxisb->SetRange(binc+1,binc+1);
    TH1D *spectrum1Dc = (TH1D *) dataGrid->Project(0);
    nbeventstotal[binc] = spectrum1Dc->Integral();
  }

  Float_t *numberofentries = new Float_t[nbbin]; 
  Float_t numberofentriessum = 0.0;
  for(Int_t binc = 0; binc < nbbin; binc++) {
    numberofentries[binc] = nbeventstotal[binc];
    numberofentriessum += numberofentries[binc];
    printf("Number %f for centrality bin %d\n",numberofentries[binc],binc);
  }

  //////////////////////////////
  // Take more stuff
  ///////////////////////////////
 
  
  TList *resultsmc = GetResults(fileMC,NameList);
  if(!resultsmc){
    printf("No output objects for mc: Calculation will terminate here\n");
    return;
  }

  AliHFEcontainer *datahfecontainer = (AliHFEcontainer *) resultsdata->FindObject("trackContainer");
  if(!datahfecontainer) {
    printf("No container for data \n");
    return;
  }
  AliCFContainer *sumcontainer = datahfecontainer->GetCFContainer("recTrackContReco");


  /////////////////////////////
  // Check number of events
  /////////////////////////////


  Int_t numberOfEventsafterallcuts = (Int_t) datahfecontainer->GetNumberOfEvents();
   
  AliHFEcontainer *mchfecontainer = (AliHFEcontainer *) resultsmc->FindObject("trackContainer");
  if(!mchfecontainer) {
    printf("No mc container \n");
    return;
  }
 
  
  //////////////
  // Correct
  /////////////

  AliHFEspectrum *spectrum = new AliHFEspectrum("HFEspectrum");
  spectrum->SetNbDimensions(1);
  // If you want to correct positive (0) or negative (1) separately
  //spectrum->SetChargeChoosen(0);
  spectrum->SetDebugLevel(1);
  // Give the number of events per centrality bins
  for(Int_t binc = 0; binc < nbbin; binc++) {
    spectrum->SetNumberOfEvents((Int_t)numberofentries[binc],binc);
  }
  // Calculation of the errors
  spectrum->SetUnSetCorrelatedErrors(unsetCorrelatedErrors);
  /////////////////////////////////////////////////////////////////////////
  // Number of centrality bin we want for the final corrected spectra
  ///////////////////////////////////////////////////////////////////////
  spectrum->SetNCentralityBinAtTheEnd(2);
  spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(0,2,0); // 0-10%
  spectrum->SetLowHighBoundaryCentralityBinAtTheEnd(7,9,1); // 60-80%

  spectrum->SetDumpToFile(kTRUE);
  spectrum->SetSmoothing(smoothingon);
  // True step in MC (events in range +- 10 cm and no pile up)
  spectrum->SetMCTruthStep(AliHFEcuts::kStepMCGeneratedEventCut);
  // Step where we correct from MC (tracking + TOF)
  spectrum->SetMCEffStep(AliHFEcuts::kNcutStepsMCTrack + AliHFEcuts::kStepHFEcutsTRD +1);
  // Step from data we correct for
  spectrum->SetStepToCorrect(AliHFEcuts::kStepHFEcutsTRD + 2);
  // PbPb flag
  spectrum->SetPbPbAnalysis(kTRUE);  

  // Give everything (data container, mc container and V0 data container)
  spectrum->Init(datahfecontainer,mchfecontainer);
    
  // kTRUE means subtract hadron background, kFALSE means do not subtract hadron background
  spectrum->Correct(hadroncontaminationsubtracted);



  

}

//_____________________________________________________________________
TList *GetResults(const Char_t *testfile,const Char_t *plus){
  //
  // read output
  //
  TFile *f = TFile::Open(testfile);
  if(!f || f->IsZombie()){
    printf("File not readable\n");
    return 0x0;
  }
  TString name(plus);
  printf("Name of TList %s\n",(const char*)name); 
  TList *l = dynamic_cast<TList *>(f->Get((const char*)name));
  if(!l){
    printf("Results list was not found\n");
    f->Close(); delete f;
    return 0x0;
  } 
  TList *returnlist = dynamic_cast<TList *>(l->Clone());
  f->Close(); delete f;
  return returnlist;
}


//_____________________________________________________________________
TList *GetQA(const Char_t *testfile,const Char_t *plus){
  //
  // read output
  //
  TFile *f = TFile::Open(testfile);
  if(!f || f->IsZombie()){
    printf("File not readable\n");
    return 0x0;
  }
  TString name("HFE_QA");
  name += plus;
  printf("Name of TList %s\n",(const char*)name);
  TList *l = dynamic_cast<TList *>(f->Get((const char*)name));
  if(!l){
    printf("QA list was not found\n");
    f->Close(); delete f;
    return 0x0;
  }
  TList *returnlist = dynamic_cast<TList *>(l->Clone());
  f->Close(); delete f;
  return returnlist;
}

//_____________________________________________________________________
THnSparseF* GetHadronEffbyIPcut(TList *hfeqa){


  // get hadron reduction factors due to the IP cuts
  TList* tl=(TList*)hfeqa->FindObject("list_TaskQA");
  TH1F* hbefore=(TH1F*)tl->FindObject("hadronsBeforeIPcut");
  TH1F* hafter=(TH1F*)tl->FindObject("hadronsAfterIPcut");
  TH1F* hreduction= (TH1F*)hafter->Clone("hreduction");
  hbefore->Sumw2(); 
  hafter->Sumw2();
  hreduction->Sumw2();
  hreduction->Divide(hbefore);

  Double_t* binEdges[0];
  Int_t hnBin = hreduction->GetNbinsX();
  Int_t nBin[1] = {hnBin};

  for(int i=0; i<nBin[0]; i++){
    binEdges[0][i] = hreduction->GetBinLowEdge(i+1);
  }
  binEdges[0][nBin[0]] = hreduction->GetBinLowEdge(nBin[0]) + hreduction->GetBinWidth(nBin[0]);

  THnSparseF* hsreduction = new THnSparseF("hadroncontamin", "hadroncontamin; pt[GeV/c]", 1, nBin);
  hsreduction->SetBinEdges(0, binEdges[0]);

  Double_t dataE[1];
  Double_t yval;
  for(int i=0; i<nBin[0]; i++){
    dataE[0]=hreduction->GetBinCenter(i+1);
    yval=hreduction->GetBinContent(i+1);
    hsreduction->Fill(dataE,yval);
  }

  Int_t* ibins;
  ibins = new Int_t[nBin[0] + 1];
  hsreduction->SetBinError(ibins,0);


  return hsreduction;
}

//_________________________________________________________________________
TObject* GetSpectrum(AliCFContainer *c, Int_t step) {
  AliCFDataGrid* data = new AliCFDataGrid("data","",*c,step);
  //data->SetMeasured(step);
  return data;
}
//___________________________________________________________________________
void CorrectFromTheWidth(TH1D *h1) {
  //
  // Correct from the width of the bins --> dN/dp_{T} (GeV/c)^{-1}
  //

  TAxis *axis = h1->GetXaxis();
  Int_t nbinX = h1->GetNbinsX();

  for(Int_t i = 1; i <= nbinX; i++) {

    Double_t width = axis->GetBinWidth(i);
    Double_t content = h1->GetBinContent(i);
    Double_t error = h1->GetBinError(i); 
    h1->SetBinContent(i,content/width); 
    h1->SetBinError(i,error/width);
  }

}
 CorrectForEfficiencyPbPb.C:1
 CorrectForEfficiencyPbPb.C:2
 CorrectForEfficiencyPbPb.C:3
 CorrectForEfficiencyPbPb.C:4
 CorrectForEfficiencyPbPb.C:5
 CorrectForEfficiencyPbPb.C:6
 CorrectForEfficiencyPbPb.C:7
 CorrectForEfficiencyPbPb.C:8
 CorrectForEfficiencyPbPb.C:9
 CorrectForEfficiencyPbPb.C:10
 CorrectForEfficiencyPbPb.C:11
 CorrectForEfficiencyPbPb.C:12
 CorrectForEfficiencyPbPb.C:13
 CorrectForEfficiencyPbPb.C:14
 CorrectForEfficiencyPbPb.C:15
 CorrectForEfficiencyPbPb.C:16
 CorrectForEfficiencyPbPb.C:17
 CorrectForEfficiencyPbPb.C:18
 CorrectForEfficiencyPbPb.C:19
 CorrectForEfficiencyPbPb.C:20
 CorrectForEfficiencyPbPb.C:21
 CorrectForEfficiencyPbPb.C:22
 CorrectForEfficiencyPbPb.C:23
 CorrectForEfficiencyPbPb.C:24
 CorrectForEfficiencyPbPb.C:25
 CorrectForEfficiencyPbPb.C:26
 CorrectForEfficiencyPbPb.C:27
 CorrectForEfficiencyPbPb.C:28
 CorrectForEfficiencyPbPb.C:29
 CorrectForEfficiencyPbPb.C:30
 CorrectForEfficiencyPbPb.C:31
 CorrectForEfficiencyPbPb.C:32
 CorrectForEfficiencyPbPb.C:33
 CorrectForEfficiencyPbPb.C:34
 CorrectForEfficiencyPbPb.C:35
 CorrectForEfficiencyPbPb.C:36
 CorrectForEfficiencyPbPb.C:37
 CorrectForEfficiencyPbPb.C:38
 CorrectForEfficiencyPbPb.C:39
 CorrectForEfficiencyPbPb.C:40
 CorrectForEfficiencyPbPb.C:41
 CorrectForEfficiencyPbPb.C:42
 CorrectForEfficiencyPbPb.C:43
 CorrectForEfficiencyPbPb.C:44
 CorrectForEfficiencyPbPb.C:45
 CorrectForEfficiencyPbPb.C:46
 CorrectForEfficiencyPbPb.C:47
 CorrectForEfficiencyPbPb.C:48
 CorrectForEfficiencyPbPb.C:49
 CorrectForEfficiencyPbPb.C:50
 CorrectForEfficiencyPbPb.C:51
 CorrectForEfficiencyPbPb.C:52
 CorrectForEfficiencyPbPb.C:53
 CorrectForEfficiencyPbPb.C:54
 CorrectForEfficiencyPbPb.C:55
 CorrectForEfficiencyPbPb.C:56
 CorrectForEfficiencyPbPb.C:57
 CorrectForEfficiencyPbPb.C:58
 CorrectForEfficiencyPbPb.C:59
 CorrectForEfficiencyPbPb.C:60
 CorrectForEfficiencyPbPb.C:61
 CorrectForEfficiencyPbPb.C:62
 CorrectForEfficiencyPbPb.C:63
 CorrectForEfficiencyPbPb.C:64
 CorrectForEfficiencyPbPb.C:65
 CorrectForEfficiencyPbPb.C:66
 CorrectForEfficiencyPbPb.C:67
 CorrectForEfficiencyPbPb.C:68
 CorrectForEfficiencyPbPb.C:69
 CorrectForEfficiencyPbPb.C:70
 CorrectForEfficiencyPbPb.C:71
 CorrectForEfficiencyPbPb.C:72
 CorrectForEfficiencyPbPb.C:73
 CorrectForEfficiencyPbPb.C:74
 CorrectForEfficiencyPbPb.C:75
 CorrectForEfficiencyPbPb.C:76
 CorrectForEfficiencyPbPb.C:77
 CorrectForEfficiencyPbPb.C:78
 CorrectForEfficiencyPbPb.C:79
 CorrectForEfficiencyPbPb.C:80
 CorrectForEfficiencyPbPb.C:81
 CorrectForEfficiencyPbPb.C:82
 CorrectForEfficiencyPbPb.C:83
 CorrectForEfficiencyPbPb.C:84
 CorrectForEfficiencyPbPb.C:85
 CorrectForEfficiencyPbPb.C:86
 CorrectForEfficiencyPbPb.C:87
 CorrectForEfficiencyPbPb.C:88
 CorrectForEfficiencyPbPb.C:89
 CorrectForEfficiencyPbPb.C:90
 CorrectForEfficiencyPbPb.C:91
 CorrectForEfficiencyPbPb.C:92
 CorrectForEfficiencyPbPb.C:93
 CorrectForEfficiencyPbPb.C:94
 CorrectForEfficiencyPbPb.C:95
 CorrectForEfficiencyPbPb.C:96
 CorrectForEfficiencyPbPb.C:97
 CorrectForEfficiencyPbPb.C:98
 CorrectForEfficiencyPbPb.C:99
 CorrectForEfficiencyPbPb.C:100
 CorrectForEfficiencyPbPb.C:101
 CorrectForEfficiencyPbPb.C:102
 CorrectForEfficiencyPbPb.C:103
 CorrectForEfficiencyPbPb.C:104
 CorrectForEfficiencyPbPb.C:105
 CorrectForEfficiencyPbPb.C:106
 CorrectForEfficiencyPbPb.C:107
 CorrectForEfficiencyPbPb.C:108
 CorrectForEfficiencyPbPb.C:109
 CorrectForEfficiencyPbPb.C:110
 CorrectForEfficiencyPbPb.C:111
 CorrectForEfficiencyPbPb.C:112
 CorrectForEfficiencyPbPb.C:113
 CorrectForEfficiencyPbPb.C:114
 CorrectForEfficiencyPbPb.C:115
 CorrectForEfficiencyPbPb.C:116
 CorrectForEfficiencyPbPb.C:117
 CorrectForEfficiencyPbPb.C:118
 CorrectForEfficiencyPbPb.C:119
 CorrectForEfficiencyPbPb.C:120
 CorrectForEfficiencyPbPb.C:121
 CorrectForEfficiencyPbPb.C:122
 CorrectForEfficiencyPbPb.C:123
 CorrectForEfficiencyPbPb.C:124
 CorrectForEfficiencyPbPb.C:125
 CorrectForEfficiencyPbPb.C:126
 CorrectForEfficiencyPbPb.C:127
 CorrectForEfficiencyPbPb.C:128
 CorrectForEfficiencyPbPb.C:129
 CorrectForEfficiencyPbPb.C:130
 CorrectForEfficiencyPbPb.C:131
 CorrectForEfficiencyPbPb.C:132
 CorrectForEfficiencyPbPb.C:133
 CorrectForEfficiencyPbPb.C:134
 CorrectForEfficiencyPbPb.C:135
 CorrectForEfficiencyPbPb.C:136
 CorrectForEfficiencyPbPb.C:137
 CorrectForEfficiencyPbPb.C:138
 CorrectForEfficiencyPbPb.C:139
 CorrectForEfficiencyPbPb.C:140
 CorrectForEfficiencyPbPb.C:141
 CorrectForEfficiencyPbPb.C:142
 CorrectForEfficiencyPbPb.C:143
 CorrectForEfficiencyPbPb.C:144
 CorrectForEfficiencyPbPb.C:145
 CorrectForEfficiencyPbPb.C:146
 CorrectForEfficiencyPbPb.C:147
 CorrectForEfficiencyPbPb.C:148
 CorrectForEfficiencyPbPb.C:149
 CorrectForEfficiencyPbPb.C:150
 CorrectForEfficiencyPbPb.C:151
 CorrectForEfficiencyPbPb.C:152
 CorrectForEfficiencyPbPb.C:153
 CorrectForEfficiencyPbPb.C:154
 CorrectForEfficiencyPbPb.C:155
 CorrectForEfficiencyPbPb.C:156
 CorrectForEfficiencyPbPb.C:157
 CorrectForEfficiencyPbPb.C:158
 CorrectForEfficiencyPbPb.C:159
 CorrectForEfficiencyPbPb.C:160
 CorrectForEfficiencyPbPb.C:161
 CorrectForEfficiencyPbPb.C:162
 CorrectForEfficiencyPbPb.C:163
 CorrectForEfficiencyPbPb.C:164
 CorrectForEfficiencyPbPb.C:165
 CorrectForEfficiencyPbPb.C:166
 CorrectForEfficiencyPbPb.C:167
 CorrectForEfficiencyPbPb.C:168
 CorrectForEfficiencyPbPb.C:169
 CorrectForEfficiencyPbPb.C:170
 CorrectForEfficiencyPbPb.C:171
 CorrectForEfficiencyPbPb.C:172
 CorrectForEfficiencyPbPb.C:173
 CorrectForEfficiencyPbPb.C:174
 CorrectForEfficiencyPbPb.C:175
 CorrectForEfficiencyPbPb.C:176
 CorrectForEfficiencyPbPb.C:177
 CorrectForEfficiencyPbPb.C:178
 CorrectForEfficiencyPbPb.C:179
 CorrectForEfficiencyPbPb.C:180
 CorrectForEfficiencyPbPb.C:181
 CorrectForEfficiencyPbPb.C:182
 CorrectForEfficiencyPbPb.C:183
 CorrectForEfficiencyPbPb.C:184
 CorrectForEfficiencyPbPb.C:185
 CorrectForEfficiencyPbPb.C:186
 CorrectForEfficiencyPbPb.C:187
 CorrectForEfficiencyPbPb.C:188
 CorrectForEfficiencyPbPb.C:189
 CorrectForEfficiencyPbPb.C:190
 CorrectForEfficiencyPbPb.C:191
 CorrectForEfficiencyPbPb.C:192
 CorrectForEfficiencyPbPb.C:193
 CorrectForEfficiencyPbPb.C:194
 CorrectForEfficiencyPbPb.C:195
 CorrectForEfficiencyPbPb.C:196
 CorrectForEfficiencyPbPb.C:197
 CorrectForEfficiencyPbPb.C:198
 CorrectForEfficiencyPbPb.C:199
 CorrectForEfficiencyPbPb.C:200
 CorrectForEfficiencyPbPb.C:201
 CorrectForEfficiencyPbPb.C:202
 CorrectForEfficiencyPbPb.C:203
 CorrectForEfficiencyPbPb.C:204
 CorrectForEfficiencyPbPb.C:205
 CorrectForEfficiencyPbPb.C:206
 CorrectForEfficiencyPbPb.C:207
 CorrectForEfficiencyPbPb.C:208
 CorrectForEfficiencyPbPb.C:209
 CorrectForEfficiencyPbPb.C:210
 CorrectForEfficiencyPbPb.C:211
 CorrectForEfficiencyPbPb.C:212
 CorrectForEfficiencyPbPb.C:213
 CorrectForEfficiencyPbPb.C:214
 CorrectForEfficiencyPbPb.C:215
 CorrectForEfficiencyPbPb.C:216
 CorrectForEfficiencyPbPb.C:217
 CorrectForEfficiencyPbPb.C:218
 CorrectForEfficiencyPbPb.C:219
 CorrectForEfficiencyPbPb.C:220
 CorrectForEfficiencyPbPb.C:221
 CorrectForEfficiencyPbPb.C:222
 CorrectForEfficiencyPbPb.C:223
 CorrectForEfficiencyPbPb.C:224
 CorrectForEfficiencyPbPb.C:225
 CorrectForEfficiencyPbPb.C:226
 CorrectForEfficiencyPbPb.C:227
 CorrectForEfficiencyPbPb.C:228
 CorrectForEfficiencyPbPb.C:229
 CorrectForEfficiencyPbPb.C:230
 CorrectForEfficiencyPbPb.C:231
 CorrectForEfficiencyPbPb.C:232
 CorrectForEfficiencyPbPb.C:233
 CorrectForEfficiencyPbPb.C:234
 CorrectForEfficiencyPbPb.C:235
 CorrectForEfficiencyPbPb.C:236
 CorrectForEfficiencyPbPb.C:237
 CorrectForEfficiencyPbPb.C:238
 CorrectForEfficiencyPbPb.C:239
 CorrectForEfficiencyPbPb.C:240
 CorrectForEfficiencyPbPb.C:241
 CorrectForEfficiencyPbPb.C:242
 CorrectForEfficiencyPbPb.C:243
 CorrectForEfficiencyPbPb.C:244
 CorrectForEfficiencyPbPb.C:245
 CorrectForEfficiencyPbPb.C:246
 CorrectForEfficiencyPbPb.C:247
 CorrectForEfficiencyPbPb.C:248
 CorrectForEfficiencyPbPb.C:249
 CorrectForEfficiencyPbPb.C:250
 CorrectForEfficiencyPbPb.C:251
 CorrectForEfficiencyPbPb.C:252
 CorrectForEfficiencyPbPb.C:253
 CorrectForEfficiencyPbPb.C:254
 CorrectForEfficiencyPbPb.C:255
 CorrectForEfficiencyPbPb.C:256
 CorrectForEfficiencyPbPb.C:257
 CorrectForEfficiencyPbPb.C:258
 CorrectForEfficiencyPbPb.C:259
 CorrectForEfficiencyPbPb.C:260
 CorrectForEfficiencyPbPb.C:261
 CorrectForEfficiencyPbPb.C:262
 CorrectForEfficiencyPbPb.C:263
 CorrectForEfficiencyPbPb.C:264
 CorrectForEfficiencyPbPb.C:265
 CorrectForEfficiencyPbPb.C:266
 CorrectForEfficiencyPbPb.C:267
 CorrectForEfficiencyPbPb.C:268
 CorrectForEfficiencyPbPb.C:269
 CorrectForEfficiencyPbPb.C:270
 CorrectForEfficiencyPbPb.C:271
 CorrectForEfficiencyPbPb.C:272
 CorrectForEfficiencyPbPb.C:273
 CorrectForEfficiencyPbPb.C:274
 CorrectForEfficiencyPbPb.C:275
 CorrectForEfficiencyPbPb.C:276
 CorrectForEfficiencyPbPb.C:277
 CorrectForEfficiencyPbPb.C:278
 CorrectForEfficiencyPbPb.C:279
 CorrectForEfficiencyPbPb.C:280
 CorrectForEfficiencyPbPb.C:281
 CorrectForEfficiencyPbPb.C:282
 CorrectForEfficiencyPbPb.C:283
 CorrectForEfficiencyPbPb.C:284
 CorrectForEfficiencyPbPb.C:285
 CorrectForEfficiencyPbPb.C:286
 CorrectForEfficiencyPbPb.C:287
 CorrectForEfficiencyPbPb.C:288
 CorrectForEfficiencyPbPb.C:289
 CorrectForEfficiencyPbPb.C:290
 CorrectForEfficiencyPbPb.C:291
 CorrectForEfficiencyPbPb.C:292
 CorrectForEfficiencyPbPb.C:293
 CorrectForEfficiencyPbPb.C:294
 CorrectForEfficiencyPbPb.C:295
 CorrectForEfficiencyPbPb.C:296
 CorrectForEfficiencyPbPb.C:297
 CorrectForEfficiencyPbPb.C:298
 CorrectForEfficiencyPbPb.C:299
 CorrectForEfficiencyPbPb.C:300
 CorrectForEfficiencyPbPb.C:301
 CorrectForEfficiencyPbPb.C:302
 CorrectForEfficiencyPbPb.C:303
 CorrectForEfficiencyPbPb.C:304
 CorrectForEfficiencyPbPb.C:305
 CorrectForEfficiencyPbPb.C:306
 CorrectForEfficiencyPbPb.C:307
 CorrectForEfficiencyPbPb.C:308
 CorrectForEfficiencyPbPb.C:309
 CorrectForEfficiencyPbPb.C:310
 CorrectForEfficiencyPbPb.C:311
 CorrectForEfficiencyPbPb.C:312
 CorrectForEfficiencyPbPb.C:313