diff --git a/analyses/pluginALICE/ALICE_2012_I930312.cc b/analyses/pluginALICE/ALICE_2012_I930312.cc new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2012_I930312.cc @@ -0,0 +1,321 @@ +// -*- C++ -*- +#include "Rivet/Analysis.hh" +#include "Rivet/Projections/ChargedFinalState.hh" +#include "Rivet/Tools/Cuts.hh" +#include + +#define _USE_MATH_DEFINES +#include + +#define PT_BINS 4 +#define EVENT_TYPES 3 + +namespace Rivet { + + double quantile(double value, const Histo1DPtr hist); + + class ALICE_2012_I930312 : public Analysis { + + public: + + ALICE_2012_I930312() : + Analysis("ALICE_2012_I930312") + { } + + + void init() { + + // Charged final states with |eta| < 1.0 and 8 < pT < 15 GeV/c for trigger particles + const Cut& cutTrigger = Cuts::abseta < 1.0 && Cuts::pT > 8*GeV && Cuts::pT < 15*GeV; + const ChargedFinalState cfsTrigger(cutTrigger); + addProjection(cfsTrigger,"CFSTrigger"); + + // Chaged final states with |eta| < 1.0 and 3 < pT < 15 GeV/c for associated particles + for (int ipt = 0; ipt < PT_BINS; ipt++) + num_trig[ipt] = 0; + + pt_limits[0] = 3; + pt_limits[1] = 4; + pt_limits[2] = 6; + pt_limits[3] = 8; + pt_limits[4] = 10; + + // Cut cutAssoc[4]; + // ChargedFinalState cfsAssoc[4]; + for (int ipt = 0; ipt < PT_BINS; ipt++) { + + Cut mycut = Cuts::abseta < 1.0 && Cuts::pT > pt_limits[ipt]*GeV && Cuts::pT < pt_limits[ipt + 1]*GeV; + addProjection(ChargedFinalState(mycut), "CFSAssoc" + std::to_string(ipt)); + + //ChargedFinalState mycfs = ChargedFinalState(mycut); + // const ChargedFinalState &mycfs(mycut); + //addProjection(mycfs, "CFSAssoc" + std::to_string(ipt)); + } + + // Impact parameter distribution histogram for centrality calculation. If the histogram with the same name + // is loaded in readData() function, it will bind such preloaded histogram to the following histogram. + // Otherwise, empty histogram will be created + // @note the name was not discussed yet, this is only an example: calib_mult... + std::cout << "Initialization..." << std::endl; + _histCalibration = bookHisto1D("calib_impactpar_(eta<0.5)&&(pT>50*MeV)", 200, 0, 20.0, "Calibration histogram", "xlabel", "ylabel"); + _histControl = bookHisto1D("control_impactpar_(eta<0.5)&&(pT>50*MeV)", 200, 0, 20.0, "Control histogram", "xlabel", "ylabel"); + + // Histograms and variables initialization. Do it for each centrality range + for (int ipt = 0; ipt < PT_BINS; ipt++) { + _histYield[0][ipt] = bookHisto1D("Yield_pp_" + std::to_string(ipt), 36, -0.5 * M_PI, 1.5 * M_PI, + "Associated particle per trigger particle yield", "#Delta#eta (rad)", "1 / N_trig dN_assoc / d#Delta#eta (rad^-1)"); + _histYield[1][ipt] = bookHisto1D("Yield_central_" + std::to_string(ipt), 36, -0.5 * M_PI, 1.5 * M_PI, + "Associated particle per trigger particle yield", "#Delta#eta (rad)", "1 / N_trig dN_assoc / d#Delta#eta (rad^-1)"); + _histYield[2][ipt] = bookHisto1D("Yield_peripheral_" + std::to_string(ipt), 36, -0.5 * M_PI, 1.5 * M_PI, + "Associated particle per trigger particle yield", "#Delta#eta (rad)", "1 / N_trig dN_assoc / d#Delta#eta (rad^-1)"); + _histYieldBkgRemoved[0][ipt] = bookHisto1D("Yield_pp_nobkg_" + std::to_string(ipt), 36, -0.5 * M_PI, 1.5 * M_PI, + "Associated particle per trigger particle yield no bkg", "#Delta#eta (rad)", "1 / N_trig dN_assoc / d#Delta#eta (rad^-1)"); + _histYieldBkgRemoved[1][ipt] = bookHisto1D("Yield_central_nobkg_" + std::to_string(ipt), 36, -0.5 * M_PI, 1.5 * M_PI, + "Associated particle per trigger particle yield no bkg", "#Delta#eta (rad)", "1 / N_trig dN_assoc / d#Delta#eta (rad^-1)"); + _histYieldBkgRemoved[2][ipt] = bookHisto1D("Yield_peripheral_nobkg_" + std::to_string(ipt), 36, -0.5 * M_PI, 1.5 * M_PI, + "Associated particle per trigger particle yield no bkg", "#Delta#eta (rad)", "1 / N_trig dN_assoc / d#Delta#eta (rad^-1)"); + + } + _histTriggerCounter[0] = bookHisto1D("Trigger_pp", PT_BINS, 0.0, PT_BINS, "Trigger counter pp", "pt bin", "N"); + _histTriggerCounter[1] = bookHisto1D("Trigger_central", PT_BINS, 0.0, PT_BINS, "Trigger counter central", "pt bin", "N"); + _histTriggerCounter[2] = bookHisto1D("Trigger_peripheral", PT_BINS, 0.0, PT_BINS, "Trigger counter peripheral", "pt bin", "N"); + + _histIAA[0] = bookHisto1D(1, 1, 1); + _histIAA[1] = bookHisto1D(4, 1, 1); + _histIAA[2] = bookHisto1D(5, 1, 1); + _histIAA[3] = bookHisto1D(6, 1, 1); + + } + + void analyze(const Event& event) { + + if (event.genEvent()->heavy_ion()) { + std::cout << "HI EVENT" << std::endl; + } else { + std::cout << "PP EVENT" << std::endl; + } + std::cout << event.genEvent()->heavy_ion() << std::endl; + + const ChargedFinalState& triggerFinalState = applyProjection(event, "CFSTrigger"); + Particles triggerParticles = triggerFinalState.particlesByPt(); + std::cout << "Trigger particles: " << triggerParticles.size() << std::endl; + + ChargedFinalState associatedFinalState[PT_BINS]; + Particles associatedParticles[PT_BINS]; + std::cout << "Associated particles: "; + for (int ipt = 0; ipt < PT_BINS; ipt++) { + associatedFinalState[ipt] = applyProjection(event, "CFSAssoc" + std::to_string(ipt)); + associatedParticles[ipt] = associatedFinalState[ipt].particlesByPt(); + std::cout << associatedParticles[ipt].size() << " "; + } + std::cout << std::endl; + + // Check event type + if (event.genEvent()->heavy_ion()) { + // For PbPb events fill calibration and control histogram + if (_histCalibration->numEntries() >= 10000) { + _histControl->fill(event.genEvent()->heavy_ion() ? event.genEvent()->heavy_ion()->impact_parameter() : -1.0, 1); + } else { + _histCalibration->fill(event.genEvent()->heavy_ion() ? event.genEvent()->heavy_ion()->impact_parameter() : -1.0, 1); + // Veto event in case there are not enough events in calibration histogram + vetoEvent; + } + double centr = quantile(event.genEvent()->heavy_ion()->impact_parameter(), _histCalibration) * 100.0; + if (centr > 0.0 && centr < 5.0) + event_type = 1; // PbPb, central + else if (centr > 60.0 && centr < 90.0) + event_type = 2; // PbPb, peripherial + else + event_type = 3; // PbPb, other + } else { + event_type = 0; // pp + } + std::cout << "Event type: " << event_type << std::endl; + + if (event_type == 3) + vetoEvent; + + // Loop over trigger particles + foreach (const Particle& triggerParticle, triggerParticles) { + + for (int ipt = 0; ipt < PT_BINS; ipt++) { + if (associatedParticles[ipt].size() > 1 || + (associatedParticles[ipt].size() == 1 && associatedParticles[ipt].at(0) != triggerParticle)) { + num_trig[ipt] += 1; + _histTriggerCounter[event_type]->fill(ipt, 1); + std::cout << "Found some associated particles" << std::endl; + foreach (const Particle& associatedParticle, associatedParticles[ipt]) { + if (triggerParticle.pt() > associatedParticle.pt()) { + double dPhi = triggerParticle.phi() - associatedParticle.phi(); + while (dPhi > 1.5 * M_PI) { dPhi -= 2 * M_PI; } + while (dPhi < -0.5 * M_PI) { dPhi += 2 * M_PI; } + std::cout << "Filling yield histogram for pt = " << pt_limits[ipt] << "-" << pt_limits[ipt + 1] << " GeV/c for delta phi = " << dPhi << std::endl; + _histYield[event_type][ipt]->fill(dPhi, 1); + } + } + } + else { + std::cout << "No associated particles with pt = " << pt_limits[ipt] << "-" << pt_limits[ipt + 1] << " GeV/c found for that trigger particle" << std::endl; + } + } + + } + + } + + void finalize() { + + std::cout << "Finalising..." << std::endl; + // Normalize all histograms by number of trigger particles used to create each one of them + /*for (int ipt = 0; ipt < PT_BINS; ipt++) { + std::cout << "finalize(): number of trigger particles: " << num_trig[ipt] << std::endl; + if (num_trig[ipt] != 0) { + scale(_histYield[event_type][ipt], (1. / num_trig[ipt])); + } + }*/ + + } + + void post() { + + double nearSide[EVENT_TYPES][PT_BINS] = { {0.0} }; + double awaySide[EVENT_TYPES][PT_BINS] = { {0.0} }; + + std::cout << "Calibration entries: " << _histCalibration->numEntries() << std::endl; + std::cout << "Control entries: " << _histControl->numEntries() << std::endl; + std::cout << "pp trigger counter histogram entries: " <<_histTriggerCounter[0]->numEntries() << std::endl; + std::cout << "Central trigger counter histogram entries: " << _histTriggerCounter[1]->numEntries() << std::endl; + std::cout << "Peripheral trigger counter histogram entries: " << _histTriggerCounter[2]->numEntries() << std::endl; + std::cout << "pp yield pt bin 0, entries: " << _histYield[0][0]->numEntries() << std::endl; + std::cout << "pp yield pt bin 1, entries: " << _histYield[0][1]->numEntries() << std::endl; + std::cout << "pp yield pt bin 2, entries: " << _histYield[0][2]->numEntries() << std::endl; + std::cout << "pp yield pt bin 3, entries: " << _histYield[0][3]->numEntries() << std::endl; + std::cout << "Central yield pt bin 0, entries: " << _histYield[1][0]->numEntries() << std::endl; + std::cout << "Central yield pt bin 1, entries: " << _histYield[1][1]->numEntries() << std::endl; + std::cout << "Central yield pt bin 2, entries: " << _histYield[1][2]->numEntries() << std::endl; + std::cout << "Central yield pt bin 3, entries: " << _histYield[1][3]->numEntries() << std::endl; + std::cout << "Peripheral yield pt bin 0, entries: " << _histYield[2][0]->numEntries() << std::endl; + std::cout << "Peripheral yield pt bin 1, entries: " << _histYield[2][1]->numEntries() << std::endl; + std::cout << "Peripheral yield pt bin 2, entries: " << _histYield[2][2]->numEntries() << std::endl; + std::cout << "Peripheral yield pt bin 3, entries: " << _histYield[2][3]->numEntries() << std::endl; + + // For each event type + for (int itype = 0; itype < EVENT_TYPES; itype++) { + // For each pT range + for (int ipt = 0; ipt < PT_BINS; ipt++) { + + // Check if histograms are fine + if (_histTriggerCounter[itype]->numEntries() == 0 || _histYield[itype][ipt]->numEntries() == 0) { + std::cout << _histTriggerCounter[itype]->numEntries() << std::endl; + std::cout << _histYield[itype][ipt]->numEntries() << std::endl; + std::cout << "There are no entries in one of the histograms" << std::endl; + continue; + } + + // Scale yield histogram + std::cout << "Scaling yield histograms..." << std::endl; + if (_histTriggerCounter[itype]->bin(ipt).sumW() != 0) { + std::cout << "Scaling histogram type " << itype << " pt bin " << ipt << "..." << std::endl; + scale(_histYield[itype][ipt], (1. / _histTriggerCounter[itype]->bin(ipt).sumW())); + } + + // Calculate background + std::cout << "Calculating background" << std::endl; + double sum = 0.0; + int nbins = 0; + for (unsigned int ibin = 0; ibin < _histYield[itype][ipt]->numBins(); ibin++) { + std::cout << "Bin " << ibin << std::endl; + if (_histYield[itype][ipt]->bin(ibin).xMid() > (0.5 * M_PI - 0.4) && + _histYield[itype][ipt]->bin(ibin).xMid() < (0.5 * M_PI + 0.4)) { + std::cout << "Adding " << _histYield[itype][ipt]->bin(ibin).sumW() << std::endl; + sum += _histYield[itype][ipt]->bin(ibin).sumW(); + nbins++; + } + } + if (nbins == 0) { + std::cout << "Failed to estimate background!" << std::endl; + continue; + } + std::cout << "Dividing " << sum << " / " << nbins << std::endl; + double bkg = sum / nbins; + + // Fill histograms with removed background + std::cout << "Filling histogram with removed background..." << std::endl; + for (unsigned int ibin = 0; ibin < _histYield[itype][ipt]->numBins(); ibin++) { + std::cout << "Bin " << ibin << ", value " << _histYield[itype][ipt]->bin(ibin).sumW() - bkg << std::endl; + _histYieldBkgRemoved[itype][ipt]->fillBin(ibin, _histYield[itype][ipt]->bin(ibin).sumW() - bkg); + } + + std::cout << "Integrating the whole histogram: " << _histYieldBkgRemoved[itype][ipt]->integral() << std::endl; + + // Integrate near-side yield + std::cout << "Integrating near-side yield..." << std::endl; + unsigned int lowerBin = _histYieldBkgRemoved[itype][ipt]->binIndexAt(-0.7); + unsigned int upperBin = _histYieldBkgRemoved[itype][ipt]->binIndexAt(0.7); + nearSide[itype][ipt] = _histYieldBkgRemoved[itype][ipt]->integralRange(lowerBin, upperBin); + std::cout << "Integrating bins (" << lowerBin << ", " << upperBin << "): " << nearSide[itype][ipt] << std::endl; + // Integrate away-side yield + std::cout << "Integrating away-side yield..." << std::endl; + lowerBin = _histYieldBkgRemoved[itype][ipt]->binIndexAt(M_PI - 0.7); + upperBin = _histYieldBkgRemoved[itype][ipt]->binIndexAt(M_PI + 0.7); + awaySide[itype][ipt] = _histYieldBkgRemoved[itype][ipt]->integralRange(lowerBin, upperBin); + std::cout << "Integrating bins (" << lowerBin << ", " << upperBin << "): " << awaySide[itype][ipt] << std::endl; + + } + } + + // Print I_CP results + std::cout << "Near side" << std::endl; + for (int ipt = 0; ipt < PT_BINS; ipt++) { + std::cout << "I_AA, pt=(" << pt_limits[ipt] << ", " << pt_limits[ipt+1] << "): " << nearSide[0][ipt] / nearSide[1][ipt] << std::endl; + _histIAA[0]->fillBin(ipt, nearSide[0][ipt] / nearSide[1][ipt]); + std::cout << "I_CP, pt=(" << pt_limits[ipt] << ", " << pt_limits[ipt+1] << "): " << nearSide[1][ipt] / nearSide[2][ipt] << std::endl; + _histIAA[1]->fillBin(ipt, nearSide[1][ipt] / nearSide[2][ipt]); + } + std::cout << "Away side" << std::endl; + for (int ipt = 0; ipt < PT_BINS; ipt++) { + std::cout << "I_AA, pt=(" << pt_limits[ipt] << ", " << pt_limits[ipt+1] << "): " << awaySide[0][ipt] / awaySide[1][ipt] << std::endl; + _histIAA[2]->fillBin(ipt, awaySide[0][ipt] / awaySide[1][ipt]); + std::cout << "I_CP, pt=(" << pt_limits[ipt] << ", " << pt_limits[ipt+1] << "): " << awaySide[1][ipt] / awaySide[2][ipt] << std::endl; + _histIAA[3]->fillBin(ipt, awaySide[1][ipt] / awaySide[2][ipt]); + } + + } + + private: + + Histo1DPtr _histCalibration; + Histo1DPtr _histControl; + Histo1DPtr _histYield[EVENT_TYPES][PT_BINS]; + Histo1DPtr _histYieldBkgRemoved[EVENT_TYPES][PT_BINS]; + Histo1DPtr _histTriggerCounter[EVENT_TYPES]; + Histo1DPtr _histIAA[4]; + int num_trig[PT_BINS]; + int pt_limits[5]; + int event_type; + + }; + + // The hook for the plugin system + DECLARE_RIVET_PLUGIN(ALICE_2012_I930312); + + // Function for calculating the quantile from histogram at selected value + // (below this value, including overflow) + // @note this function is here temporarily, it will be moved and modified + // to create a general function for calculating the quantile of a histogram + double quantile(double value, const Histo1DPtr hist) { + + // Check if there are entries in the histogram + if (hist->numEntries() == 0) { + throw WeightError("There are no entires in the histogram!"); + } + + // Integration ranges + size_t upperBin = hist->binIndexAt(value); + + // Calculate centrality as percentile + return hist->integralTo(upperBin, true) / hist->integral(true); + + } + +} diff --git a/analyses/pluginALICE/ALICE_2012_I930312.yoda b/analyses/pluginALICE/ALICE_2012_I930312.yoda new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2012_I930312.yoda @@ -0,0 +1,162 @@ +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d01-x01-y01 +Path=/REF/ALICE_2012_I930312/d01-x01-y01 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 1.4 0.1118033988749895 0.1118033988749895 +5.0 1.0 1.0 1.21 0.09848857801796104 0.09848857801796104 +7.0 1.0 1.0 1.12 0.08944271909999159 0.08944271909999159 +9.0 1.0 1.0 1.25 0.12041594578792295 0.12041594578792295 +# END YODA_SCATTER2D + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d01-x01-y02 +Path=/REF/ALICE_2012_I930312/d01-x01-y02 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 1.29 0.10295630140987 0.10295630140987 +5.0 1.0 1.0 1.19 0.08544003745317531 0.08544003745317531 +7.0 1.0 1.0 1.12 0.08944271909999159 0.08944271909999159 +9.0 1.0 1.0 1.25 0.12041594578792295 0.12041594578792295 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d01-x01-y03 +Path=/REF/ALICE_2012_I930312/d01-x01-y03 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 1.25 0.1140175425099138 0.1140175425099138 +5.0 1.0 1.0 1.22 0.09848857801796104 0.09848857801796104 +7.0 1.0 1.0 1.09 0.09433981132056604 0.09433981132056604 +9.0 1.0 1.0 1.3 0.12727922061357855 0.12727922061357855 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d02-x01-y01 +Path=/REF/ALICE_2012_I930312/d02-x01-y01 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 1.02 0.07615773105863909 0.07615773105863909 +5.0 1.0 1.0 1.03 0.07615773105863909 0.07615773105863909 +7.0 1.0 1.0 0.97 0.0806225774829855 0.0806225774829855 +9.0 1.0 1.0 0.96 0.09899494936611666 0.09899494936611666 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d02-x01-y02 +Path=/REF/ALICE_2012_I930312/d02-x01-y02 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 0.94 0.07615773105863909 0.07615773105863909 +5.0 1.0 1.0 1.01 0.07615773105863909 0.07615773105863909 +7.0 1.0 1.0 0.96 0.0806225774829855 0.0806225774829855 +9.0 1.0 1.0 0.96 0.09899494936611666 0.09899494936611666 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d02-x01-y03 +Path=/REF/ALICE_2012_I930312/d02-x01-y03 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 0.97 0.0806225774829855 0.0806225774829855 +5.0 1.0 1.0 1.01 0.07615773105863909 0.07615773105863909 +7.0 1.0 1.0 0.99 0.08602325267042628 0.08602325267042628 +9.0 1.0 1.0 1.03 0.1063014581273465 0.1063014581273465 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d03-x01-y01 +Path=/REF/ALICE_2012_I930312/d03-x01-y01 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 0.65 0.14317821063276354 0.14317821063276354 +5.0 1.0 1.0 0.54 0.11704699910719625 0.11704699910719625 +7.0 1.0 1.0 0.49 0.1077032961426901 0.1077032961426901 +9.0 1.0 1.0 0.61 0.14317821063276354 0.14317821063276354 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d03-x01-y02 +Path=/REF/ALICE_2012_I930312/d03-x01-y02 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 0.46 0.11661903789690602 0.11661903789690602 +5.0 1.0 1.0 0.5 0.1077032961426901 0.1077032961426901 +7.0 1.0 1.0 0.48 0.1077032961426901 0.1077032961426901 +9.0 1.0 1.0 0.61 0.14317821063276354 0.14317821063276354 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d04-x01-y01 +Path=/REF/ALICE_2012_I930312/d04-x01-y01 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 0.99 0.08944271909999159 0.08944271909999159 +5.0 1.0 1.0 0.95 0.0806225774829855 0.0806225774829855 +7.0 1.0 1.0 0.92 0.09219544457292887 0.09219544457292887 +9.0 1.0 1.0 0.86 0.1140175425099138 0.1140175425099138 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d04-x01-y02 +Path=/REF/ALICE_2012_I930312/d04-x01-y02 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 0.87 0.0806225774829855 0.0806225774829855 +5.0 1.0 1.0 0.9 0.0806225774829855 0.0806225774829855 +7.0 1.0 1.0 0.9 0.09219544457292887 0.09219544457292887 +9.0 1.0 1.0 0.85 0.1140175425099138 0.1140175425099138 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d05-x01-y01 +Path=/REF/ALICE_2012_I930312/d05-x01-y01 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 1.38 0.1118033988749895 0.1118033988749895 +5.0 1.0 1.0 1.17 0.08544003745317531 0.08544003745317531 +7.0 1.0 1.0 1.16 0.08944271909999159 0.08944271909999159 +9.0 1.0 1.0 1.3 0.1140175425099138 0.1140175425099138 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d05-x01-y02 +Path=/REF/ALICE_2012_I930312/d05-x01-y02 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 1.37 0.1118033988749895 0.1118033988749895 +5.0 1.0 1.0 1.18 0.09486832980505137 0.09486832980505137 +7.0 1.0 1.0 1.16 0.08944271909999159 0.08944271909999159 +9.0 1.0 1.0 1.3 0.1140175425099138 0.1140175425099138 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d05-x01-y03 +Path=/REF/ALICE_2012_I930312/d05-x01-y03 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 1.28 0.1140175425099138 0.1140175425099138 +5.0 1.0 1.0 1.21 0.09848857801796104 0.09848857801796104 +7.0 1.0 1.0 1.1 0.08944271909999159 0.08944271909999159 +9.0 1.0 1.0 1.26 0.1140175425099138 0.1140175425099138 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d06-x01-y01 +Path=/REF/ALICE_2012_I930312/d06-x01-y01 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 0.65 0.15231546211727817 0.15231546211727817 +5.0 1.0 1.0 0.57 0.12649110640673517 0.12649110640673517 +7.0 1.0 1.0 0.53 0.11704699910719625 0.11704699910719625 +9.0 1.0 1.0 0.71 0.16155494421403513 0.16155494421403513 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/ALICE_2012_I930312/d06-x01-y02 +Path=/REF/ALICE_2012_I930312/d06-x01-y02 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +3.5 0.5 0.5 0.53 0.130384048104053 0.130384048104053 +5.0 1.0 1.0 0.55 0.12649110640673517 0.12649110640673517 +7.0 1.0 1.0 0.53 0.11704699910719625 0.11704699910719625 +9.0 1.0 1.0 0.71 0.16552945357246848 0.16552945357246848 +# END YODA_SCATTER2D \ No newline at end of file