rivet is hosted by Hepforge, IPPP Durham

Rivet analyses reference

ALICE_2021_I1891391

$K_{S}^{0}$ - and (anti-)$\Lambda$-hadron correlations in pp collisions at $\sqrt{s} = 13$ TeV
Experiment: ALICE (LHC)
Inspire ID: 1891391
Status: VALIDATED
Authors:
  • Lucia Anna Tarasovicova
  • Daniel Gunther
References:
  • Eur.Phys.J.C 81 (2021) 10, 945
  • arXiv: 2107.11209
Beams: p+ p+
Beam energies: (6500.0, 6500.0) GeV
    No run details listed

$\delta\varphi$ projections of two-particle correlation functions, triggered with charged hadrons, $K_S^0$, and $\Lambda$($\overline{\Lambda}$), per-trigger jet-like yields spectra extracted from these correlation functions on the nera-side and away-side as a function of multiplicity class, $p_{\mathrm{T}}$ of the trigger particle, and $p_{\mathrm{T}}$ of the associated particle in pp collisions at $\sqrt{s} = 13$ TeV. The ratios of these yields to the yields from minimum bias collisions as well as the ratios of yields triggered with different particles are also included.

Source code: ALICE_2021_I1891391.cc
  1// -*- C++ -*-
  2#include "Rivet/Analysis.hh"
  3#include "Rivet/Projections/FinalState.hh"
  4#include "Rivet/Projections/PromptFinalState.hh"
  5#include "Rivet/Tools/AliceCommon.hh"
  6#include "Rivet/Projections/AliceCommon.hh"
  7#include "Rivet/Projections/ChargedFinalState.hh"
  8#include "Rivet/Projections/EventMixingFinalState.hh"
  9#include "Rivet/Projections/CentralityProjection.hh"
 10 #include "YODA/Utils/sortedvector.h"
 11#include "Rivet/Tools/BinnedHistogram.hh"
 12
 13namespace Rivet {
 14
 15  /// @brief Add a short analysis description here
 16  class ALICE_2021_I1891391 : public Analysis {
 17  public:
 18
 19    /// Constructor
 20    DEFAULT_RIVET_ANALYSIS_CTOR(ALICE_2021_I1891391);
 21
 22
 23    /// @name Analysis methods
 24    ///@{
 25    void fillbyparticles(BinnedHistogram &_histo, Particle tp, Particle ap) {
 26      double dphi = (ap.phi() - tp.phi());
 27      if (dphi < -0.5*M_PI) dphi = dphi + 2*M_PI;
 28      if (dphi > 1.5*M_PI) dphi = dphi - 2*M_PI;
 29      double deta = (ap.eta() - tp.eta());
 30
 31      _histo.fill(deta, dphi, 1.0);
 32        
 33      return;
 34    }
 35
 36    void S2DProjectionY(Scatter2DPtr projection, BinnedHistogram &hist2D) {
 37
 38      double phiValues[N_phibins];
 39      double phiValueserr[N_phibins];
 40
 41      vector<Point2D> points = projection->points();
 42
 43      for (int i = 0; i < N_phibins; ++i)
 44      {
 45        phiValues[i]=0;
 46        phiValueserr[i]=0;
 47      }
 48
 49      for(Histo1DPtr hist : hist2D.histos()) {
 50        int idx =0;
 51        for(auto bin:hist->bins()){
 52          phiValues[idx]+= bin.height();
 53          phiValueserr[idx]+=bin.heightErr()*bin.heightErr();
 54          idx+=1;
 55        }
 56      }
 57      projection->reset();
 58
 59      for (int idx = 0; idx < N_phibins; ++idx) {
 60        phiValueserr[idx]=sqrt(phiValueserr[idx]);
 61        phiValues[idx]=phiValues[idx];
 62        projection->addPoint(points[idx].x(),phiValues[idx],points[idx].xErrAvg(),phiValueserr[idx]);
 63      }
 64      return;
 65    }
 66
 67    pair<double, double> BackgEstimate (Scatter2DPtr hist) {
 68
 69      pair<double, double> backg;
 70      vector<Point2D> points = hist->points();
 71      backg.first = (points[1].y()+points[2].y()+points[3].y()+points[34].y()+points[35].y()+points[36].y())/6;
 72      backg.second= pow(points[1].yErrAvg(),2)+pow(points[2].yErrAvg(),2)+pow(points[3].yErrAvg(),2);
 73      backg.second+= pow(points[34].yErrAvg(),2)+pow(points[35].yErrAvg(),2)+pow(points[36].yErrAvg(),2);
 74
 75      backg.second=sqrt(backg.second)/6;
 76
 77      return backg;
 78    }
 79
 80    void ZYAM (Scatter2DPtr hist_final, Scatter2DPtr hist) {
 81
 82      vector<Point2D> points = hist->points();
 83      
 84      pair<double, double> backg = BackgEstimate(hist);
 85
 86      hist_final->reset();
 87      for(int idx = 0; idx < N_phibins; ++idx) {
 88        hist_final->addPoint(points[idx].x() ,points[idx].y()-backg.first,points[idx].xErrAvg(),sqrt(pow(points[idx].yErrAvg(),2)+pow(backg.second,2)));
 89      }
 90      return;
 91    }
 92
 93    Point2D IntegratePeak (Scatter2DPtr s, pair<double, double> PeakInterval) {
 94      Point2D PeakYield;
 95      pair<double, double> Errs;
 96      PeakYield.setY(0);
 97      Errs.first = 0;
 98      Errs.second = 0;
 99      PeakYield.setYErrs(Errs);
100
101      for (auto point : s->points()) {
102        if (point.xMin() > PeakInterval.first && point.xMax() < PeakInterval.second) {
103          PeakYield.setY(point.y() + PeakYield.y());
104          Errs.first = sqrt(pow(point.yErrs().first,2) + pow(PeakYield.yErrs().first,2));
105          Errs.second =  sqrt(pow(point.yErrs().second,2) + pow(PeakYield.yErrs().second,2));
106          PeakYield.setYErrs(Errs);
107        }
108      }
109
110      PeakYield.setY(PeakYield.y()*2*M_PI/N_phibins);
111      Errs.first = PeakYield.yErrs().first*2*M_PI/N_phibins;
112      Errs.second = PeakYield.yErrs().second*2*M_PI/N_phibins;
113      PeakYield.setYErrs(Errs);
114
115      return PeakYield;
116    }
117
118    void IntegratePeakByPT(Scatter2DPtr s, Scatter2DPtr vs[8], pair<double,double> PeakInterval, int pt_interval) {
119      
120      Point2D PeakYield;
121
122      double xval_trig[PT_ASSOC_BINS] = { 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 8., 10., 13., 17.5};
123      double xval_trigerr[PT_ASSOC_BINS] = { 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1., 1., 2., 2.5};
124      
125      s->reset();
126      int pt = 0;
127      for (int pTsel = 0; pTsel < pt_interval+2; ++pTsel) {
128        if(pt_interval==8){
129            pt=pTsel+2;
130            if(pTsel>7) continue; 
131        }
132        else pt=pTsel;
133        PeakYield = IntegratePeak(vs[pTsel], PeakInterval);
134        s->addPoint(xval_trig[pt],PeakYield.y(),xval_trigerr[pt],PeakYield.yErrAvg());
135      }
136      return;
137    }
138
139    void sdivide(Scatter2DPtr V0hist, Scatter2DPtr hhist, Scatter2DPtr ratio_hist,int pt_interval, bool V0mult) {
140      vector<Point2D> V0h_points = V0hist->points();
141      vector<Point2D> hh_points = hhist->points();
142
143      double xval[PT_ASSOC_BINS] = { 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 8., 10., 13.,17.5};
144      double xval_err[PT_ASSOC_BINS] = { 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1., 1., 2., 2.5};
145      double ratio,ratio_err;
146
147      if(V0mult){
148        xval[6]=9;
149        xval[7]=15.5;
150        xval_err[6]=2;
151        xval_err[7]=4.5;
152      }
153      ratio_hist->reset();
154      int pt = 0;
155      for (int idx = 0; idx < pt_interval+2; ++idx) {
156        if(pt_interval>=7||V0mult){
157            pt = idx+2;
158            if(idx>pt_interval-1) continue;
159        }
160        else pt = idx;
161        if(V0mult&&idx>3){
162          if(idx==4&&(hh_points[4].y()>0||hh_points[5].y())){
163            ratio = (V0h_points[4].y()+V0h_points[5].y())/(hh_points[4].y()+hh_points[5].y());
164            ratio_err=sqrt(pow(V0h_points[4].yErrAvg()/(hh_points[4].y()+hh_points[5].y()),2)+pow(V0h_points[5].yErrAvg()/(hh_points[4].y()+hh_points[5].y()),2)
165                      +pow(((V0h_points[4].y()+V0h_points[5].y())*hh_points[4].yErrAvg())/(pow(hh_points[4].y()+hh_points[5].y(),2)),2)
166                      +pow(((V0h_points[4].y()+V0h_points[5].y())*hh_points[5].yErrAvg())/(pow(hh_points[4].y()+hh_points[5].y(),2)),2));
167          }
168          else if(idx==5&&(hh_points[6].y()>0||hh_points[7].y())){
169            ratio = (V0h_points[6].y()+V0h_points[7].y())/(hh_points[6].y()+hh_points[7].y());
170            ratio_err=sqrt(pow(V0h_points[6].yErrAvg()/(hh_points[6].y()+hh_points[7].y()),2)+pow(V0h_points[7].yErrAvg()/(hh_points[6].y()+hh_points[7].y()),2)
171                      +pow(((V0h_points[6].y()+V0h_points[7].y())*hh_points[6].yErrAvg())/(pow(hh_points[6].y()+hh_points[7].y(),2)),2)
172                      +pow(((V0h_points[6].y()+V0h_points[7].y())*hh_points[7].yErrAvg())/(pow(hh_points[6].y()+hh_points[7].y(),2)),2));
173          }else{
174            ratio=1;
175            ratio_err=0.02;
176          }
177        }
178        else if(hh_points[idx].y()>0){
179          ratio= V0h_points[idx].y()/hh_points[idx].y();
180          ratio_err=sqrt(pow(V0h_points[idx].yErrAvg()/hh_points[idx].y(),2)+pow((V0h_points[idx].y()*hh_points[idx].yErrAvg())/(pow(hh_points[idx].y(),2)),2));
181        }
182        else {
183          ratio=10;
184          ratio_err=1;
185        }
186        ratio_hist->addPoint(xval[pt],ratio,xval_err[pt],ratio_err);
187      }
188    
189      return;  
190    }
191
192    int profileIndex(vector<double> cBins, double c) {
193      int index = 100;
194      for (size_t i = 0; i < cBins.size() - 1; ++i) {
195        if (c > cBins[i] && c <= cBins[i + 1]) {
196          index = i;
197          break;
198        }
199      }
200      return index;
201    }
202
203    /// Book histograms and initialise projections before the run
204    void init() {
205
206      // Projections
207
208      //multiplicity
209      declareCentrality(ALICE::V0MMultiplicity(),"ALICE_2015_PPCentrality","V0M","V0M");
210
211      // Projections for trigger particles: charged, primary particles
212      // with |eta| < 0.8 and different pT bins
213      for (int ipt = 0; ipt < PT_TRIGG_BINS; ++ipt) {
214        Cut cut = Cuts::abseta < 0.8 && Cuts::abscharge > 0 &&
215          Cuts::ptIn(bins_pt_trigg[ipt]*GeV, bins_pt_trigg[ipt+1]*GeV);
216        declare(ALICE::PrimaryParticles(cut), "APRIMTrigg" + toString(ipt));
217      }
218
219      // Projections for trigger particles: neutral, primary particles
220      // with |y| < 0.5 and different pT bins
221      for (int ipt = 0; ipt < PT_TRIGG_BINS; ++ipt) {
222        Cut cut = Cuts::absrap < 0.5 && Cuts::abscharge == 0 &&
223          Cuts::ptIn(bins_pt_trigg[ipt]*GeV, bins_pt_trigg[ipt+1]*GeV);
224        declare(ALICE::PrimaryParticles(cut), "APRIMTrigg0" + toString(ipt));
225      }
226
227      // Projections for associated particles: charged, primary particles
228      // with |eta| < 0.8 and different pT bins
229      for (int ipt = 0; ipt < PT_ASSOC_BINS; ++ipt) {
230        Cut cut = Cuts::abseta < 0.8 && Cuts::abscharge > 0 &&
231          Cuts::ptIn(bins_pt_assoc[ipt]*GeV, bins_pt_assoc[ipt+1]*GeV);
232        declare(ALICE::PrimaryParticles(cut), "APRIMAssoc" + toString(ipt));
233      }
234      const ChargedFinalState cfs(Cuts::pT > 1*GeV && Cuts::abseta < 0.8);
235      declare(cfs, "CFS");
236      const EventMixingFinalState evmc(cfs, cfs, 5, 0, 100, 10, 1.0);
237      declare(evmc, "EVMc");
238
239      multiplicityBins = {0.,1.,3.,7.,15.,50,100.};
240
241      etabins[0]=-1.013333-2.666650e-02;
242      for (int i = 1; i < Num_etabins; ++i){ etabins[i]=etabins[i-1]+(2*2.666650e-02);}
243      
244      // Histograms    
245
246      for (int imult = 0; imult < MULT_BINS; ++imult) {
247        for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS; ++ipt_trigg) {
248          
249          for(int ieta=1; ieta<Num_etabins; ieta++){Histo1DPtr tmp; _hist_hh_2D_mult[imult][ipt_trigg].add(etabins[ieta-1], etabins[ieta], book(tmp, "TMP/hist_hh_2D_mult_"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg]+std::to_string(ieta), refData(2, 1, 1)));}
250          for(int ieta=1; ieta<Num_etabins; ieta++){Histo1DPtr tmp; _hist_K0h_2D_mult[imult][ipt_trigg].add(etabins[ieta-1], etabins[ieta], book(tmp, "TMP/hist_K0h_2D_mult_"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg]+std::to_string(ieta), refData(2, 1, 1)));}
251          for(int ieta=1; ieta<Num_etabins; ieta++){Histo1DPtr tmp; _hist_Lamh_2D_mult[imult][ipt_trigg].add(etabins[ieta-1], etabins[ieta], book(tmp, "TMP/hist_Lamh_2D_mult_"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg]+std::to_string(ieta), refData(2, 1, 1)));}
252          
253          book(_counterChargedTriggers_mult[imult][ipt_trigg], "TMP/counterChargedTriggers_mult_"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg]);
254          book(_counterK0Triggers_mult[imult][ipt_trigg], "TMP/counterK0Triggers_mult_"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg]);
255          book(_counterLamTriggers_mult[imult][ipt_trigg], "TMP/counterLamTriggers_mult_"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg]);
256          
257          book(_hist_dPhi_hh_mult[imult][ipt_trigg],"TMP/hist_dPhi_hh_mult_"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg], refData(2,1,1));
258          book(_hist_dPhi_K0h_mult[imult][ipt_trigg],"TMP/hist_dPhi_K0h_mult_"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg], refData(3,1,1));
259          book(_hist_dPhi_Lamh_mult[imult][ipt_trigg],"TMP/hist_dPhi_Lamh_mult_"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg], refData(4,1,1));
260
261          if(imult<6||(imult==6&&!(ipt_trigg==0||ipt_trigg==5))){
262            book(_hist_dPhi_hh_mult_fin[imult][ipt_trigg],"TMP/hist_dPhi_hh_mult_fin"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg], refData(2,1,1));
263            book(_hist_dPhi_K0h_mult_fin[imult][ipt_trigg],"TMP/hist_dPhi_K0h_mult_fin"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg], refData(3,1,1));
264            book(_hist_dPhi_Lamh_mult_fin[imult][ipt_trigg],"TMP/hist_dPhi_Lamh_mult_fin"+mulsel_name[imult]+"_"+bins_pt_trigg_name[ipt_trigg], refData(4,1,1));
265          }
266        } 
267      }
268      book(_hist_dPhi_hh_mult_fin[6][0],2,1,1);
269      book(_hist_dPhi_K0h_mult_fin[6][0],3,1,1);
270      book(_hist_dPhi_Lamh_mult_fin[6][0],4,1,1);
271
272      book(_hist_dPhi_hh_mult_fin[6][5],5,1,1);
273      book(_hist_dPhi_K0h_mult_fin[6][5],6,1,1);
274      book(_hist_dPhi_Lamh_mult_fin[6][5],7,1,1);
275         
276      for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS; ++ipt_trigg) {
277
278        for (int ipt_assoc = 0; ipt_assoc < PT_ASSOC_BINS; ++ipt_assoc) {  
279          for(int ieta=1; ieta<Num_etabins; ieta++){Histo1DPtr tmp; _hist_hh_2D_ptassoc[ipt_trigg][ipt_assoc].add(etabins[ieta-1], etabins[ieta], book(tmp, "TMP/hist_hh_2D_ptassoc_"+bins_pt_trigg_name[ipt_trigg]+bins_pt_assoc_name[ipt_assoc]+std::to_string(ieta), refData(2, 1, 1)));}
280          for(int ieta=1; ieta<Num_etabins; ieta++){Histo1DPtr tmp; _hist_K0h_2D_ptassoc[ipt_trigg][ipt_assoc].add(etabins[ieta-1], etabins[ieta], book(tmp, "TMP/hist_K0h_2D_ptassoc_"+bins_pt_trigg_name[ipt_trigg]+bins_pt_assoc_name[ipt_assoc]+std::to_string(ieta), refData(2, 1, 1)));}
281          for(int ieta=1; ieta<Num_etabins; ieta++){Histo1DPtr tmp; _hist_Lamh_2D_ptassoc[ipt_trigg][ipt_assoc].add(etabins[ieta-1], etabins[ieta], book(tmp, "TMP/hist_Lamh_2D_ptassoc_"+bins_pt_trigg_name[ipt_trigg]+bins_pt_assoc_name[ipt_assoc]+std::to_string(ieta), refData(2, 1, 1)));}
282          
283          book(_hist_dPhi_hh_ptassoc[ipt_trigg][ipt_assoc],"TMP/hist_dPhi_hh_ptassoc_"+bins_pt_trigg_name[ipt_trigg]+bins_pt_assoc_name[ipt_assoc], refData(2,1,1));
284          book(_hist_dPhi_K0h_ptassoc[ipt_trigg][ipt_assoc],"TMP/hist_dPhi_K0h_ptassoc_"+bins_pt_trigg_name[ipt_trigg]+bins_pt_assoc_name[ipt_assoc], refData(3,1,1));
285          book(_hist_dPhi_Lamh_ptassoc[ipt_trigg][ipt_assoc],"TMP/hist_dPhi_Lamh_ptassoc_"+bins_pt_trigg_name[ipt_trigg]+bins_pt_assoc_name[ipt_assoc], refData(4,1,1));
286
287          book(_hist_dPhi_hh_ptassoc_fin[ipt_trigg][ipt_assoc],"TMP/hist_dPhi_hh_ptassoc_fin_"+bins_pt_trigg_name[ipt_trigg]+bins_pt_assoc_name[ipt_assoc], refData(2,1,1));
288          book(_hist_dPhi_K0h_ptassoc_fin[ipt_trigg][ipt_assoc],"TMP/hist_dPhi_K0h_ptassoc_fin_"+bins_pt_trigg_name[ipt_trigg]+bins_pt_assoc_name[ipt_assoc], refData(3,1,1));
289          book(_hist_dPhi_Lamh_ptassoc_fin[ipt_trigg][ipt_assoc],"TMP/hist_dPhi_Lamh_ptassoc_fin_"+bins_pt_trigg_name[ipt_trigg]+bins_pt_assoc_name[ipt_assoc], refData(4,1,1));
290          
291        }
292      }
293
294      for (int imult = 0; imult < MULT_BINS; ++imult)
295      {
296        book(_hist_hh_NearSideYield_mult[imult],8,1,imult+1);
297        book(_hist_K0h_NearSideYield_mult[imult],9,1,imult+1);
298        book(_hist_Lamh_NearSideYield_mult[imult],10,1,imult+1);
299
300        book(_hist_hh_AwaySideYield_mult[imult],11,1,imult+1);
301        book(_hist_K0h_AwaySideYield_mult[imult],12,1,imult+1);
302        book(_hist_Lamh_AwaySideYield_mult[imult],13,1,imult+1);
303
304        
305
306        if(imult<MULT_BINS-1){
307          book(_hist_hh_NearSideYield_mult_ratio[imult],14,1,imult+1);
308          book(_hist_K0h_NearSideYield_mult_ratio[imult],15,1,imult+1);
309          book(_hist_Lamh_NearSideYield_mult_ratio[imult],16,1,imult+1);
310
311          book(_hist_hh_AwaySideYield_mult_ratio[imult],17,1,imult+1);
312          book(_hist_K0h_AwaySideYield_mult_ratio[imult],18,1,imult+1);
313          book(_hist_Lamh_AwaySideYield_mult_ratio[imult],19,1,imult+1);
314
315          book(_hist_K0h_NearSideYield_ratioTo_hh_mult[imult],imult+27,1,1);
316          book(_hist_Lamh_NearSideYield_ratioTo_hh_mult[imult],imult+34,1,1);
317          book(_hist_K0h_AwaySideYield_ratioTo_hh_mult[imult],imult+41,1,1);
318          book(_hist_Lamh_AwaySideYield_ratioTo_hh_mult[imult],imult+48,1,1);
319        }else{
320          book(_hist_K0h_NearSideYield_ratioTo_hh_mult[imult],26,1,1);
321          book(_hist_Lamh_NearSideYield_ratioTo_hh_mult[imult],33,1,1);
322          book(_hist_K0h_AwaySideYield_ratioTo_hh_mult[imult],40,1,1);
323          book(_hist_Lamh_AwaySideYield_ratioTo_hh_mult[imult],47,1,1);
324        } 
325      }
326      
327      for (int ipttrigg = 0; ipttrigg < PT_TRIGG_BINS; ++ipttrigg)
328      {
329        book(_hist_hh_NearSideYield_ptassoc[ipttrigg],20,1,ipttrigg+1);
330        book(_hist_hh_AwaySideYield_ptassoc[ipttrigg],23,1,ipttrigg+1);
331
332        book(_hist_K0h_NearSideYield_ptassoc[ipttrigg],21,1,ipttrigg+1);
333        book(_hist_K0h_AwaySideYield_ptassoc[ipttrigg],24,1,ipttrigg+1);
334
335
336
337        if(ipttrigg<PT_TRIGG_BINS-1){
338          book(_hist_Lamh_NearSideYield_ptassoc[ipttrigg],22,1,ipttrigg+1);
339          book(_hist_Lamh_AwaySideYield_ptassoc[ipttrigg],25,1,ipttrigg+1);
340
341          book(_hist_K0h_NearSideYield_ratioTo_hh_ptassoc[ipttrigg],ipttrigg+54,1,1);
342          book(_hist_Lamh_NearSideYield_ratioTo_hh_ptassoc[ipttrigg],ipttrigg+61,1,1);
343          book(_hist_K0h_AwaySideYield_ratioTo_hh_ptassoc[ipttrigg],ipttrigg+68,1,1);
344          book(_hist_Lamh_AwaySideYield_ratioTo_hh_ptassoc[ipttrigg],ipttrigg+75,1,1);
345        }
346      }
347
348      for(int ieta=1; ieta<Num_etabins; ieta++){Histo1DPtr tmp; _hist_mix_hh.add(etabins[ieta-1], etabins[ieta], book(tmp, "TMP/hist_mix_hh"+std::to_string(ieta), refData(2, 1, 1)));}
349      for(int ieta=1; ieta<Num_etabins; ieta++){Histo1DPtr tmp; _hist_mix_K0h.add(etabins[ieta-1], etabins[ieta], book(tmp, "TMP/hist_mix_K0h"+std::to_string(ieta), refData(2, 1, 1)));}
350      for(int ieta=1; ieta<Num_etabins; ieta++){Histo1DPtr tmp; _hist_mix_Lamh.add(etabins[ieta-1], etabins[ieta], book(tmp, "TMP/hist_mix_Lamh"+std::to_string(ieta), refData(2, 1, 1)));}
351    }
352
353    /// Perform the per-event analysis
354    void analyze(const Event& event) { 
355
356      //multiplicity block
357      const CentralityProjection& cent = apply<CentralityProjection>(event,"V0M");
358      double c  = cent();
359      int index = profileIndex(multiplicityBins,c);
360      
361      //particle correlation block
362      // Get trigger particles, charged hadrons  
363      Particles trigg_h_Particles[PT_TRIGG_BINS];
364      for (int ipt = 0; ipt < PT_TRIGG_BINS; ++ipt) {
365        string pname = "APRIMTrigg" + toString(ipt);
366        trigg_h_Particles[ipt] =
367          applyProjection<ALICE::PrimaryParticles>(event,pname).particles();
368      }
369      // Get trigger particles, neutral hadrons  
370      Particles trigg_V0_Particles[PT_TRIGG_BINS];
371      for (int ipt = 0; ipt < PT_TRIGG_BINS; ++ipt) {
372        string pname = "APRIMTrigg0" + toString(ipt);
373        trigg_V0_Particles[ipt] =
374          applyProjection<ALICE::PrimaryParticles>(event,pname).particles();
375      }
376
377      // Get associated particles particles, charged hadrons  
378      Particles assocParticles[PT_ASSOC_BINS];
379      for (int ipt = 0; ipt < PT_ASSOC_BINS; ++ipt) {
380        string pname = "APRIMAssoc" + toString(ipt);
381        assocParticles[ipt] =
382          applyProjection<ALICE::PrimaryParticles>(event,pname).particles();
383      }
384
385      //trigger = any charged particle
386      for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS; ++ipt_trigg){
387          if(trigg_h_Particles[ipt_trigg].size()==0)continue;
388        for (const Particle& trigg : trigg_h_Particles[ipt_trigg]) {
389          _counterChargedTriggers_mult[6][ipt_trigg]->fill(1);
390          if(index>-1&&index<6)_counterChargedTriggers_mult[index][ipt_trigg]->fill(1);
391          for (int ipt_assoc = 0; ipt_assoc < PT_ASSOC_BINS; ++ipt_assoc){
392              if(assocParticles[ipt_assoc].size()==0)continue;
393            for(const Particle& assoc : assocParticles[ipt_assoc]){
394              if(assoc.pT() < trigg.pT()){
395                fillbyparticles(_hist_hh_2D_ptassoc[ipt_trigg][ipt_assoc], trigg, assoc); 
396                if(index>-1&&index<6)fillbyparticles(_hist_hh_2D_mult[index][ipt_trigg], trigg, assoc); 
397                fillbyparticles(_hist_hh_2D_mult[6][ipt_trigg], trigg, assoc); 
398              }
399            }
400          }
401        }
402      }
403
404      //trigger = V0
405      for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS; ++ipt_trigg){
406          if(trigg_V0_Particles[ipt_trigg].size()==0)continue;
407        for (const Particle& triggV0 : trigg_V0_Particles[ipt_trigg]) {
408          const int pid = abs(triggV0.pid());
409          if(pid==310){
410            _counterK0Triggers_mult[6][ipt_trigg]->fill(1);
411            if(index>-1&&index<6)_counterK0Triggers_mult[index][ipt_trigg]->fill(1);
412          }
413          if(pid==3122){
414            _counterLamTriggers_mult[6][ipt_trigg]->fill(1);
415            if(index>-1&&index<6)_counterLamTriggers_mult[index][ipt_trigg]->fill(1);
416          }
417          for (int ipt_assoc = 0; ipt_assoc < PT_ASSOC_BINS; ++ipt_assoc){
418              if(assocParticles[ipt_assoc].size()==0)continue;
419            for(const Particle& assoc : assocParticles[ipt_assoc]){
420              if(assoc.pT() < triggV0.pT() && pid==310){
421                fillbyparticles(_hist_K0h_2D_mult[6][ipt_trigg], triggV0, assoc); 
422                if(index>-1&&index<6)fillbyparticles(_hist_K0h_2D_mult[index][ipt_trigg], triggV0, assoc); 
423                fillbyparticles(_hist_K0h_2D_ptassoc[ipt_trigg][ipt_assoc], triggV0, assoc); 
424              }
425              if(assoc.pT() < triggV0.pT() && pid==3122){
426                fillbyparticles(_hist_Lamh_2D_mult[6][ipt_trigg], triggV0, assoc);  
427                if(index>-1&&index<6)fillbyparticles(_hist_Lamh_2D_mult[index][ipt_trigg], triggV0, assoc);   
428                fillbyparticles(_hist_Lamh_2D_ptassoc[ipt_trigg][ipt_assoc], triggV0, assoc);  
429              }
430            }
431          }
432        }
433      }
434      //end of particle correlation block
435      
436      //mixed event block
437      const EventMixingFinalState& evmc = apply<EventMixingFinalState>(event, "EVMc");
438      if (!evmc.hasMixingEvents()) return;
439
440      for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS; ++ipt_trigg){
441          if(trigg_h_Particles[ipt_trigg].size()==0)continue;
442        for (const Particle& trigg : trigg_h_Particles[ipt_trigg]) {
443            if(evmc.particles().size()==0)continue;
444          for (const Particle& assoc_mix : evmc.particles()){
445            if (assoc_mix.pT() < trigg.pT())fillbyparticles(_hist_mix_hh, trigg, assoc_mix);   
446          }
447        }
448      }
449      for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS; ++ipt_trigg){
450          if(trigg_V0_Particles[ipt_trigg].size()==0)continue;
451        for (const Particle& triggV0 : trigg_V0_Particles[ipt_trigg]) {
452          const int pid = abs(triggV0.pid());
453          if(evmc.particles().size()==0)continue;
454          for (const Particle& assoc_mix : evmc.particles()){
455            if(assoc_mix.pT() < triggV0.pT() && pid==310)fillbyparticles(_hist_mix_K0h, triggV0, assoc_mix); 
456            if(assoc_mix.pT() < triggV0.pT() && pid==3122)fillbyparticles(_hist_mix_Lamh, triggV0, assoc_mix);   
457          }
458        }
459      }
460      //end of mixed event block
461    }
462
463
464    /// Finalize
465    void finalize() {
466
467      double mix_nomalisation_hh = (_hist_mix_hh.histo(0))->integral()/(_hist_mix_hh.histo(0))->numBins();
468      double mix_scaling_hh[38];
469      int i_mix=0;
470      for(Histo1DPtr hist : _hist_mix_hh.histos()){
471        mix_scaling_hh[i_mix]=(hist->integral()/hist->numBins())/mix_nomalisation_hh;
472        i_mix++;
473      }
474
475      double mix_nomalisation_K0h = (_hist_mix_K0h.histo(0))->integral()/(_hist_mix_K0h.histo(0))->numBins();
476      double mix_scaling_K0h[38];
477      i_mix=0;
478      for(Histo1DPtr hist : _hist_mix_K0h.histos()){
479        mix_scaling_K0h[i_mix]=(hist->integral()/hist->numBins())/mix_nomalisation_K0h;
480        i_mix++;
481      }
482
483      double mix_nomalisation_Lamh = (_hist_mix_Lamh.histo(0))->integral()/(_hist_mix_Lamh.histo(0))->numBins();
484      double mix_scaling_Lamh[38];
485      i_mix=0;
486      for(Histo1DPtr hist : _hist_mix_Lamh.histos()){
487        mix_scaling_Lamh[i_mix]=(hist->integral()/hist->numBins())/mix_nomalisation_Lamh;
488        i_mix++;
489      }
490      
491      for (int imult = 0; imult < MULT_BINS; ++imult) {
492        for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS; ++ipt_trigg) {
493          //cor. scaling + mixing
494            if(_counterChargedTriggers_mult[imult][ipt_trigg]->sumW() >0)  for (Histo1DPtr hist : _hist_hh_2D_mult[imult][ipt_trigg].histos()) { scale(hist,1./_counterChargedTriggers_mult[imult][ipt_trigg]->sumW()); }
495            i_mix=0;
496            for (Histo1DPtr hist : _hist_hh_2D_mult[imult][ipt_trigg].histos()) { if(mix_scaling_hh[i_mix]>0) scale(hist,1./mix_scaling_hh[i_mix]); i_mix++; }
497            if(_counterK0Triggers_mult[imult][ipt_trigg]->sumW() >0)  for (Histo1DPtr hist : _hist_K0h_2D_mult[imult][ipt_trigg].histos()) { scale(hist,1./_counterK0Triggers_mult[imult][ipt_trigg]->sumW()); }
498            i_mix=0;
499            for (Histo1DPtr hist : _hist_K0h_2D_mult[imult][ipt_trigg].histos()) { if(mix_scaling_K0h[i_mix]>0) scale(hist,1./mix_scaling_K0h[i_mix]); i_mix++; }
500            if(_counterLamTriggers_mult[imult][ipt_trigg]->sumW() >0)  for (Histo1DPtr hist : _hist_Lamh_2D_mult[imult][ipt_trigg].histos()) { scale(hist,1./_counterLamTriggers_mult[imult][ipt_trigg]->sumW()); }
501            i_mix=0;
502            for (Histo1DPtr hist : _hist_Lamh_2D_mult[imult][ipt_trigg].histos()) { if(mix_scaling_Lamh[i_mix]>0) scale(hist,1./mix_scaling_Lamh[i_mix]); i_mix++; }
503        
504          //integration by eta
505          S2DProjectionY(_hist_dPhi_hh_mult[imult][ipt_trigg], _hist_hh_2D_mult[imult][ipt_trigg]);
506          S2DProjectionY(_hist_dPhi_K0h_mult[imult][ipt_trigg], _hist_K0h_2D_mult[imult][ipt_trigg]);
507          S2DProjectionY(_hist_dPhi_Lamh_mult[imult][ipt_trigg], _hist_Lamh_2D_mult[imult][ipt_trigg]);
508          //ZYAM
509          ZYAM(_hist_dPhi_hh_mult_fin[imult][ipt_trigg], _hist_dPhi_hh_mult[imult][ipt_trigg]);
510          ZYAM(_hist_dPhi_K0h_mult_fin[imult][ipt_trigg], _hist_dPhi_K0h_mult[imult][ipt_trigg]);
511          ZYAM(_hist_dPhi_Lamh_mult_fin[imult][ipt_trigg], _hist_dPhi_Lamh_mult[imult][ipt_trigg]);
512        }
513      }
514
515      for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS; ++ipt_trigg) {
516        for (int ipt_assoc = 0; ipt_assoc < PT_ASSOC_BINS; ++ipt_assoc) {
517          //cor. scaling + mixing
518          if(_counterChargedTriggers_mult[6][ipt_trigg]->sumW() >0)  for (Histo1DPtr hist : _hist_hh_2D_ptassoc[ipt_trigg][ipt_assoc].histos()) { scale(hist,1./_counterChargedTriggers_mult[6][ipt_trigg]->sumW()); }
519          i_mix=0;
520          for (Histo1DPtr hist : _hist_hh_2D_ptassoc[ipt_trigg][ipt_assoc].histos()) { if(mix_scaling_hh[i_mix]>0)scale(hist,1./mix_scaling_hh[i_mix]); i_mix++; }
521          if(_counterK0Triggers_mult[6][ipt_trigg]->sumW() >0)  for (Histo1DPtr hist : _hist_K0h_2D_ptassoc[ipt_trigg][ipt_assoc].histos()) { scale(hist,1./_counterK0Triggers_mult[6][ipt_trigg]->sumW()); }
522          i_mix=0;
523          for (Histo1DPtr hist : _hist_K0h_2D_ptassoc[ipt_trigg][ipt_assoc].histos()) { if(mix_scaling_K0h[i_mix]>0)scale(hist,1./mix_scaling_K0h[i_mix]); i_mix++; }
524          if(_counterLamTriggers_mult[6][ipt_trigg]->sumW() >0)  for (Histo1DPtr hist : _hist_Lamh_2D_ptassoc[ipt_trigg][ipt_assoc].histos()) { scale(hist,1./_counterLamTriggers_mult[6][ipt_trigg]->sumW()); }
525          i_mix=0;
526          for (Histo1DPtr hist : _hist_Lamh_2D_ptassoc[ipt_trigg][ipt_assoc].histos()) { if(mix_scaling_Lamh[i_mix]>0) scale(hist,1./mix_scaling_Lamh[i_mix]); i_mix++; }
527        
528          //integration by eta
529          S2DProjectionY(_hist_dPhi_hh_ptassoc[ipt_trigg][ipt_assoc], _hist_hh_2D_ptassoc[ipt_trigg][ipt_assoc]);
530          S2DProjectionY(_hist_dPhi_K0h_ptassoc[ipt_trigg][ipt_assoc], _hist_K0h_2D_ptassoc[ipt_trigg][ipt_assoc]);
531          S2DProjectionY(_hist_dPhi_Lamh_ptassoc[ipt_trigg][ipt_assoc], _hist_Lamh_2D_ptassoc[ipt_trigg][ipt_assoc]);
532          //Subtracting underlying event with the ZYAM method
533          ZYAM(_hist_dPhi_hh_ptassoc_fin[ipt_trigg][ipt_assoc], _hist_dPhi_hh_ptassoc[ipt_trigg][ipt_assoc]);
534          ZYAM(_hist_dPhi_K0h_ptassoc_fin[ipt_trigg][ipt_assoc], _hist_dPhi_K0h_ptassoc[ipt_trigg][ipt_assoc]);
535          ZYAM(_hist_dPhi_Lamh_ptassoc_fin[ipt_trigg][ipt_assoc], _hist_dPhi_Lamh_ptassoc[ipt_trigg][ipt_assoc]);
536        }
537      }
538
539      //PeakYield 
540      pair<double,double> NearInterval={-0.9,0.9};
541      pair<double,double> AwayInterval={M_PI-1.4,M_PI+1.4};
542
543      for (int imult = MULT_BINS-1; imult > -1; --imult) { 
544        //fig 3
545        IntegratePeakByPT(_hist_hh_NearSideYield_mult[imult],_hist_dPhi_hh_mult_fin[imult], NearInterval,8);
546        IntegratePeakByPT(_hist_K0h_NearSideYield_mult[imult],_hist_dPhi_K0h_mult_fin[imult], NearInterval,8);
547        IntegratePeakByPT(_hist_Lamh_NearSideYield_mult[imult],_hist_dPhi_Lamh_mult_fin[imult], NearInterval,8);
548
549        IntegratePeakByPT(_hist_hh_AwaySideYield_mult[imult],_hist_dPhi_hh_mult_fin[imult], AwayInterval,8);
550        IntegratePeakByPT(_hist_K0h_AwaySideYield_mult[imult],_hist_dPhi_K0h_mult_fin[imult], AwayInterval,8);
551        IntegratePeakByPT(_hist_Lamh_AwaySideYield_mult[imult],_hist_dPhi_Lamh_mult_fin[imult], AwayInterval,8);
552
553        //fig 4
554        if(imult<MULT_BINS-1){
555          sdivide(_hist_hh_NearSideYield_mult[imult], _hist_hh_NearSideYield_mult[6], _hist_hh_NearSideYield_mult_ratio[imult],8,false);
556          sdivide(_hist_hh_AwaySideYield_mult[imult], _hist_hh_AwaySideYield_mult[6], _hist_hh_AwaySideYield_mult_ratio[imult],8,false);
557
558          sdivide(_hist_K0h_NearSideYield_mult[imult], _hist_K0h_NearSideYield_mult[6], _hist_K0h_NearSideYield_mult_ratio[imult],6,true);
559          sdivide(_hist_K0h_AwaySideYield_mult[imult], _hist_K0h_AwaySideYield_mult[6], _hist_K0h_AwaySideYield_mult_ratio[imult],6,true);
560          sdivide(_hist_Lamh_NearSideYield_mult[imult], _hist_Lamh_NearSideYield_mult[6], _hist_Lamh_NearSideYield_mult_ratio[imult],6,true);
561          if(imult==1)sdivide(_hist_Lamh_AwaySideYield_mult[imult], _hist_Lamh_AwaySideYield_mult[6], _hist_Lamh_AwaySideYield_mult_ratio[imult],5,true);
562          else sdivide(_hist_Lamh_AwaySideYield_mult[imult], _hist_Lamh_AwaySideYield_mult[6], _hist_Lamh_AwaySideYield_mult_ratio[imult],6,true);
563        }
564      }
565
566      //fig 5
567      for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS; ++ipt_trigg)
568      {
569        IntegratePeakByPT(_hist_hh_NearSideYield_ptassoc[ipt_trigg], _hist_dPhi_hh_ptassoc_fin[ipt_trigg], NearInterval,ipt_trigg);
570        IntegratePeakByPT(_hist_hh_AwaySideYield_ptassoc[ipt_trigg], _hist_dPhi_hh_ptassoc_fin[ipt_trigg], AwayInterval,ipt_trigg);
571        IntegratePeakByPT(_hist_K0h_NearSideYield_ptassoc[ipt_trigg], _hist_dPhi_K0h_ptassoc_fin[ipt_trigg], NearInterval,ipt_trigg);
572        IntegratePeakByPT(_hist_K0h_AwaySideYield_ptassoc[ipt_trigg], _hist_dPhi_K0h_ptassoc_fin[ipt_trigg], AwayInterval,ipt_trigg);
573        if(ipt_trigg<7)IntegratePeakByPT(_hist_Lamh_NearSideYield_ptassoc[ipt_trigg], _hist_dPhi_Lamh_ptassoc_fin[ipt_trigg], NearInterval,ipt_trigg);
574        
575        if(ipt_trigg==6)IntegratePeakByPT(_hist_Lamh_AwaySideYield_ptassoc[ipt_trigg], _hist_dPhi_Lamh_ptassoc_fin[ipt_trigg], AwayInterval,2);
576        else if(ipt_trigg==7) continue;
577        else IntegratePeakByPT(_hist_Lamh_AwaySideYield_ptassoc[ipt_trigg], _hist_dPhi_Lamh_ptassoc_fin[ipt_trigg], AwayInterval,ipt_trigg);
578      }
579
580      //fig 8
581      for (int imult = 0; imult < MULT_BINS; ++imult)
582      {
583        sdivide(_hist_K0h_NearSideYield_mult[imult], _hist_hh_NearSideYield_mult[imult], _hist_K0h_NearSideYield_ratioTo_hh_mult[imult],7,false);
584        sdivide(_hist_K0h_AwaySideYield_mult[imult], _hist_hh_AwaySideYield_mult[imult], _hist_K0h_AwaySideYield_ratioTo_hh_mult[imult],7,false);
585        
586        sdivide(_hist_Lamh_NearSideYield_mult[imult], _hist_hh_NearSideYield_mult[imult], _hist_Lamh_NearSideYield_ratioTo_hh_mult[imult],7,false);
587        sdivide(_hist_Lamh_AwaySideYield_mult[imult], _hist_hh_AwaySideYield_mult[imult], _hist_Lamh_AwaySideYield_ratioTo_hh_mult[imult],7,false);
588      }
589
590      //fig 9
591      for (int ipt_trigg = 0; ipt_trigg < PT_TRIGG_BINS-1; ++ipt_trigg)
592      {
593        sdivide(_hist_K0h_NearSideYield_ptassoc[ipt_trigg], _hist_hh_NearSideYield_ptassoc[ipt_trigg], _hist_K0h_NearSideYield_ratioTo_hh_ptassoc[ipt_trigg],ipt_trigg,false);
594        sdivide(_hist_K0h_AwaySideYield_ptassoc[ipt_trigg], _hist_hh_AwaySideYield_ptassoc[ipt_trigg], _hist_K0h_AwaySideYield_ratioTo_hh_ptassoc[ipt_trigg],ipt_trigg,false);
595        
596        sdivide(_hist_Lamh_NearSideYield_ptassoc[ipt_trigg], _hist_hh_NearSideYield_ptassoc[ipt_trigg], _hist_Lamh_NearSideYield_ratioTo_hh_ptassoc[ipt_trigg],ipt_trigg,false);
597        if(ipt_trigg<6)sdivide(_hist_Lamh_AwaySideYield_ptassoc[ipt_trigg], _hist_hh_AwaySideYield_ptassoc[ipt_trigg], _hist_Lamh_AwaySideYield_ratioTo_hh_ptassoc[ipt_trigg],ipt_trigg,false);
598        else sdivide(_hist_Lamh_AwaySideYield_ptassoc[ipt_trigg], _hist_hh_AwaySideYield_ptassoc[ipt_trigg], _hist_Lamh_AwaySideYield_ratioTo_hh_ptassoc[ipt_trigg],2,false);
599      }
600  }
601    
602    //@}
603
604
605  private:
606
607    static const int PT_TRIGG_BINS = 8;
608    static const int PT_ASSOC_BINS = 10;
609    static const int MULT_BINS = 7;
610    static const int N_phibins = 72;
611    /// @name Histograms
612    //@{
613    
614    BinnedHistogram _hist_mix_hh, _hist_mix_K0h, _hist_mix_Lamh;
615
616    CounterPtr _counterChargedTriggers_mult[MULT_BINS][PT_TRIGG_BINS];
617    CounterPtr _counterK0Triggers_mult[MULT_BINS][PT_TRIGG_BINS];
618    CounterPtr _counterLamTriggers_mult[MULT_BINS][PT_TRIGG_BINS];
619
620    BinnedHistogram _hist_hh_2D_ptassoc[PT_TRIGG_BINS][PT_ASSOC_BINS];
621    BinnedHistogram _hist_K0h_2D_ptassoc[PT_TRIGG_BINS][PT_ASSOC_BINS];
622    BinnedHistogram _hist_Lamh_2D_ptassoc[PT_TRIGG_BINS][PT_ASSOC_BINS];    
623    
624    BinnedHistogram _hist_hh_2D_mult[MULT_BINS][PT_TRIGG_BINS];
625    BinnedHistogram _hist_K0h_2D_mult[MULT_BINS][PT_TRIGG_BINS];
626    BinnedHistogram _hist_Lamh_2D_mult[MULT_BINS][PT_TRIGG_BINS];
627    
628    Scatter2DPtr _hist_dPhi_hh_ptassoc[PT_TRIGG_BINS][PT_ASSOC_BINS];
629    Scatter2DPtr _hist_dPhi_K0h_ptassoc[PT_TRIGG_BINS][PT_ASSOC_BINS];
630    Scatter2DPtr _hist_dPhi_Lamh_ptassoc[PT_TRIGG_BINS][PT_ASSOC_BINS];
631    
632    Scatter2DPtr _hist_dPhi_hh_ptassoc_fin[PT_TRIGG_BINS][PT_ASSOC_BINS];
633    Scatter2DPtr _hist_dPhi_K0h_ptassoc_fin[PT_TRIGG_BINS][PT_ASSOC_BINS];
634    Scatter2DPtr _hist_dPhi_Lamh_ptassoc_fin[PT_TRIGG_BINS][PT_ASSOC_BINS];
635    
636    Scatter2DPtr _hist_dPhi_hh_mult[MULT_BINS][PT_TRIGG_BINS]; 
637    Scatter2DPtr _hist_dPhi_K0h_mult[MULT_BINS][PT_TRIGG_BINS];
638    Scatter2DPtr _hist_dPhi_Lamh_mult[MULT_BINS][PT_TRIGG_BINS];
639
640    Scatter2DPtr _hist_dPhi_hh_mult_fin[MULT_BINS][PT_TRIGG_BINS];
641    Scatter2DPtr _hist_dPhi_K0h_mult_fin[MULT_BINS][PT_TRIGG_BINS];
642    Scatter2DPtr _hist_dPhi_Lamh_mult_fin[MULT_BINS][PT_TRIGG_BINS];
643
644    Scatter2DPtr _hist_K0h_NearSideYield_ratioTo_hh_mult[MULT_BINS];
645    Scatter2DPtr _hist_K0h_AwaySideYield_ratioTo_hh_mult[MULT_BINS];
646    Scatter2DPtr _hist_Lamh_NearSideYield_ratioTo_hh_mult[MULT_BINS];
647    Scatter2DPtr _hist_Lamh_AwaySideYield_ratioTo_hh_mult[MULT_BINS];
648
649    Scatter2DPtr _hist_K0h_NearSideYield_ratioTo_hh_ptassoc[PT_TRIGG_BINS-1];
650    Scatter2DPtr _hist_K0h_AwaySideYield_ratioTo_hh_ptassoc[PT_TRIGG_BINS-1];
651    Scatter2DPtr _hist_Lamh_NearSideYield_ratioTo_hh_ptassoc[PT_TRIGG_BINS-1];
652    Scatter2DPtr _hist_Lamh_AwaySideYield_ratioTo_hh_ptassoc[PT_TRIGG_BINS-1];
653
654    Scatter2DPtr _hist_hh_NearSideYield_mult[MULT_BINS];
655    Scatter2DPtr _hist_K0h_NearSideYield_mult[MULT_BINS];
656    Scatter2DPtr _hist_Lamh_NearSideYield_mult[MULT_BINS];
657    Scatter2DPtr _hist_hh_AwaySideYield_mult[MULT_BINS];
658    Scatter2DPtr _hist_K0h_AwaySideYield_mult[MULT_BINS];
659    Scatter2DPtr _hist_Lamh_AwaySideYield_mult[MULT_BINS];
660
661    Scatter2DPtr _hist_hh_NearSideYield_mult_ratio[MULT_BINS];
662    Scatter2DPtr _hist_K0h_NearSideYield_mult_ratio[MULT_BINS];
663    Scatter2DPtr _hist_Lamh_NearSideYield_mult_ratio[MULT_BINS];
664    Scatter2DPtr _hist_hh_AwaySideYield_mult_ratio[MULT_BINS];
665    Scatter2DPtr _hist_K0h_AwaySideYield_mult_ratio[MULT_BINS];
666    Scatter2DPtr _hist_Lamh_AwaySideYield_mult_ratio[MULT_BINS];
667
668    Scatter2DPtr _hist_hh_NearSideYield_ptassoc[PT_TRIGG_BINS];
669    Scatter2DPtr _hist_hh_AwaySideYield_ptassoc[PT_TRIGG_BINS];
670    Scatter2DPtr _hist_K0h_NearSideYield_ptassoc[PT_TRIGG_BINS];
671    Scatter2DPtr _hist_K0h_AwaySideYield_ptassoc[PT_TRIGG_BINS];
672    Scatter2DPtr _hist_Lamh_NearSideYield_ptassoc[PT_TRIGG_BINS-1];
673    Scatter2DPtr _hist_Lamh_AwaySideYield_ptassoc[PT_TRIGG_BINS-1];
674
675    static const int Num_etabins = 39; 
676    vector<double> multiplicityBins; 
677    double etabins[Num_etabins];
678
679    vector<double> bins_pt_trigg = {3. ,4. ,5. ,6. ,7. ,9. ,11. ,15. ,20.};
680    vector<double> bins_pt_assoc = {1. ,2., 3. ,4. ,5. ,6. ,7. ,9. ,11. ,15., 20.};
681    vector<string> mulsel_name = {"000-001", "001-003", "003-007", "007-015", "015-050", "050-100", "MB"};
682    vector<string> bins_pt_trigg_name = {"3-4", "4-5", "5-6", "6-7", "7-9", "9-11", "11-15", "15-20"};
683    vector<string> bins_pt_assoc_name = {"_1-2","_2-3", "_3-4", "_4-5", "_5-6", "_6-7", "_7-9", "_9-11", "_11-15", "_15-20"};
684    
685  };
686
687
688  RIVET_DECLARE_PLUGIN(ALICE_2021_I1891391);
689
690}