diff --git a/analyses/pluginALICE/ALICE_2016_I1394676.cc b/analyses/pluginALICE/ALICE_2016_I1394676.cc new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1394676.cc @@ -0,0 +1,108 @@ +// -*- C++ -*- +#include "Rivet/Analysis.hh" +#include "Rivet/Projections/ChargedFinalState.hh" +#include "Rivet/Tools/AliceCommon.hh" +#include "Rivet/Projections/AliceCommon.hh" +namespace Rivet { + + + /// @brief ALICE PbPb at 2.76 TeV eta distributions, peripheral events. + class ALICE_2016_I1394676 : public Analysis { + public: + + /// Constructor + DEFAULT_RIVET_ANALYSIS_CTOR(ALICE_2016_I1394676); + + + /// @name Analysis methods + //@{ + + /// Book histograms and initialise projections before the run + void init() { + // Initialise and register projections + // Centrality projection. + declareCentrality(ALICE::V0MMultiplicity(), "ALICE_2015_PBPBCentrality", + "V0M","V0M"); + // Projections for the 2-out-of-3 trigger. + declare(ChargedFinalState( (Cuts::eta > 2.8 && Cuts::eta < 5.1) && + Cuts::pT > 0.1*GeV), "VZERO1"); + declare(ChargedFinalState( (Cuts::eta > -3.7 && Cuts::eta < -1.7) && + Cuts::pT > 0.1*GeV), "VZERO2"); + declare(ChargedFinalState(Cuts::abseta < 1. && Cuts::pT > 0.15*GeV), + "SPD"); + + // Primary particles. + declare(ALICE::PrimaryParticles(Cuts::abseta < 5.6),"APRIM"); + + // The centrality bins and the corresponding histograms and sow counters. + centralityBins = { 40, 50, 60, 70, 80, 90 }; + vector< std::tuple > refData; + for (int i = 0, N = centralityBins.size(); i < N; ++i) { + histEta[centralityBins[i]] = bookHisto1D(1, 1, i + 1); + sow[centralityBins[i]] = bookCounter("sow_" + toString(i)); + } + } + + + /// Perform the per-event analysis + void analyze(const Event& event) { + const double weight = event.weight(); + // Trigger projections. + const ChargedFinalState& vz1 = + applyProjection(event,"VZERO1"); + const ChargedFinalState& vz2 = + applyProjection(event,"VZERO2"); + const ChargedFinalState& spd = + applyProjection(event,"SPD"); + int fwdTrig = (vz1.particles().size() > 0 ? 1 : 0); + int bwdTrig = (vz2.particles().size() > 0 ? 1 : 0); + int cTrig = (spd.particles().size() > 0 ? 1 : 0); + + if (fwdTrig + bwdTrig + cTrig < 2) vetoEvent; + const CentralityProjection& cent = apply(event,"V0M"); + double c = cent(); + // No centralities below 30 % + if (c < 30.) return; + // Find the correct centrality histogram + auto hItr = histEta.upper_bound(c); + if (hItr == histEta.end()) return; + // Find the correct sow. + auto sItr = sow.upper_bound(c); + if (sItr == sow.end()) return; + sItr->second->fill(weight); + + // Fill the histograms. + for ( const auto& p : + applyProjection(event,"APRIM").particles() ) + if(p.abscharge() > 0) hItr->second->fill(p.eta(), weight); + + } + + + /// Normalise histograms etc., after the run + void finalize() { + + for (int i = 0, N = centralityBins.size(); i < N; ++i) + histEta[centralityBins[i]]->scaleW(1./sow[centralityBins[i]]->sumW()); + + } + + //@} + + + /// @name Histograms + //@{ + vector centralityBins; + map histEta; + map sow; + //@} + + + }; + + + // The hook for the plugin system + DECLARE_RIVET_PLUGIN(ALICE_2016_I1394676); + + +} diff --git a/analyses/pluginALICE/ALICE_2016_I1394676.info b/analyses/pluginALICE/ALICE_2016_I1394676.info new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1394676.info @@ -0,0 +1,43 @@ +Name: ALICE_2016_I1394676 +Year: 2016 +Summary: Charged particle production as function of centrality, peripheral events only, in PbPb collisions at 2.76 TeV. +Experiment: ALICE +Collider: LHC +InspireID: 1394676 +Status: UNVALIDATED +Authors: + - Christian Bierlich +References: +- Phys.Lett.B754(2016)373-385 +- DOI:10.1016/j.physletb.2015.12.082" +- arXiv:1509.07299 +RunInfo: PbPb minimum bias events. The analysis holds the Primary Particle definition, so don't limit decays on generator level. +NeedCrossSection: no +Beams: [1000822080, 1000822080] +# This is _total_ energy of beams, so this becomes 208*2760=574080 +Energies: [574080] +Options: + - cent=REF,GEN,IMP,USR +Description: + 'Charged particle pseudorapidity density in centrality classes 30-40, 40-50, 50-60, 60-70, 70-80, 80-90. Measurements cover a wide $\eta$ range from -3.5 to 5. Centrality classes refer to forward V0 spectrum, as also measured by ALICE, can be modified to use a user definition instead.' +BibKey: Adam:2015kda +BibTeX: '@article{Adam:2015kda, + author = "Adam, Jaroslav and others", + title = "{Centrality evolution of the charged-particle + pseudorapidity density over a broad pseudorapidity range + in Pb-Pb collisions at $\sqrt{s_{\rm NN}} =$ 2.76 TeV}", + collaboration = "ALICE", + journal = "Phys. Lett.", + volume = "B754", + year = "2016", + pages = "373-385", + doi = "10.1016/j.physletb.2015.12.082", + eprint = "1509.07299", + archivePrefix = "arXiv", + primaryClass = "nucl-ex", + reportNumber = "CERN-PH-EP-2015-257, ALICE-PUBLIC-2015-010", + SLACcitation = "%%CITATION = ARXIV:1509.07299;%%" +}' +ToDo: + - Implement the analysis, test it, remove this ToDo, and mark as VALIDATED :-) + diff --git a/analyses/pluginALICE/ALICE_2016_I1394676.plot b/analyses/pluginALICE/ALICE_2016_I1394676.plot new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1394676.plot @@ -0,0 +1,8 @@ +# BEGIN PLOT /ALICE_2016_I1394676/d01-x01-y01 +#Title=[Uncomment and insert title for histogram d01-x01-y01 here] +#XLabel=[Uncomment and insert x-axis label for histogram d01-x01-y01 here] +#YLabel=[Uncomment and insert y-axis label for histogram d01-x01-y01 here] +# + any additional plot settings you might like, see make-plots documentation +# END PLOT + +# ... add more histograms as you need them ... diff --git a/analyses/pluginALICE/ALICE_2016_I1394676.yoda b/analyses/pluginALICE/ALICE_2016_I1394676.yoda new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1394676.yoda @@ -0,0 +1,340 @@ +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d01-x01-y01 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d01-x01-y01 +Title: doi:10.17182/hepdata.70834.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 3.950000e+02 1.800000e+01 1.800000e+01 +-3.125000e+00 1.250000e-01 1.250000e-01 4.100000e+02 1.800000e+01 1.800000e+01 +-2.875000e+00 1.250000e-01 1.250000e-01 4.220000e+02 1.900000e+01 1.900000e+01 +-2.625000e+00 1.250000e-01 1.250000e-01 4.370000e+02 2.000000e+01 2.000000e+01 +-2.375000e+00 1.250000e-01 1.250000e-01 4.470000e+02 2.000000e+01 2.000000e+01 +-2.125000e+00 1.250000e-01 1.250000e-01 4.550000e+02 2.000000e+01 2.000000e+01 +-1.875000e+00 1.250000e-01 1.250000e-01 4.610000e+02 2.000000e+01 2.000000e+01 +-1.625000e+00 1.250000e-01 1.250000e-01 4.570000e+02 1.300000e+01 1.300000e+01 +-1.375000e+00 1.250000e-01 1.250000e-01 4.560000e+02 1.300000e+01 1.300000e+01 +-1.125000e+00 1.250000e-01 1.250000e-01 4.510000e+02 1.300000e+01 1.300000e+01 +-8.750000e-01 1.150000e-01 1.150000e-01 4.460000e+02 1.300000e+01 1.300000e+01 +-6.250000e-01 1.150000e-01 1.150000e-01 4.340000e+02 1.200000e+01 1.200000e+01 +-3.750000e-01 1.150000e-01 1.150000e-01 4.280000e+02 1.100000e+01 1.100000e+01 +-1.225000e-01 1.175000e-01 1.175000e-01 4.220000e+02 1.100000e+01 1.100000e+01 +1.225000e-01 1.175000e-01 1.175000e-01 4.220000e+02 1.100000e+01 1.100000e+01 +3.750000e-01 1.150000e-01 1.150000e-01 4.280000e+02 1.100000e+01 1.100000e+01 +6.250000e-01 1.150000e-01 1.150000e-01 4.340000e+02 1.200000e+01 1.200000e+01 +8.750000e-01 1.150000e-01 1.150000e-01 4.460000e+02 1.300000e+01 1.300000e+01 +1.125000e+00 1.250000e-01 1.250000e-01 4.510000e+02 1.300000e+01 1.300000e+01 +1.375000e+00 1.250000e-01 1.250000e-01 4.560000e+02 1.300000e+01 1.300000e+01 +1.625000e+00 1.250000e-01 1.250000e-01 4.570000e+02 1.300000e+01 1.300000e+01 +1.875000e+00 1.250000e-01 1.250000e-01 4.610000e+02 2.000000e+01 2.000000e+01 +2.125000e+00 1.250000e-01 1.250000e-01 4.550000e+02 2.000000e+01 2.000000e+01 +2.375000e+00 1.250000e-01 1.250000e-01 4.470000e+02 2.000000e+01 2.000000e+01 +2.625000e+00 1.250000e-01 1.250000e-01 4.370000e+02 2.000000e+01 2.000000e+01 +2.875000e+00 1.250000e-01 1.250000e-01 4.220000e+02 1.900000e+01 1.900000e+01 +3.125000e+00 1.250000e-01 1.250000e-01 4.100000e+02 1.800000e+01 1.800000e+01 +3.375000e+00 1.250000e-01 1.250000e-01 3.950000e+02 1.800000e+01 1.800000e+01 +3.625000e+00 1.250000e-01 1.250000e-01 3.610000e+02 2.500000e+01 2.400000e+01 +3.875000e+00 1.250000e-01 1.250000e-01 3.420000e+02 2.300000e+01 2.300000e+01 +4.125000e+00 1.250000e-01 1.250000e-01 3.200000e+02 2.200000e+01 2.100000e+01 +4.375000e+00 1.250000e-01 1.250000e-01 3.010000e+02 2.000000e+01 2.000000e+01 +4.625000e+00 1.250000e-01 1.250000e-01 2.830000e+02 1.900000e+01 1.900000e+01 +4.875000e+00 1.250000e-01 1.250000e-01 2.650000e+02 1.800000e+01 1.700000e+01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d01-x01-y02 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d01-x01-y02 +Title: doi:10.17182/hepdata.70834.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 2.460000e+02 1.100000e+01 1.100000e+01 +-3.125000e+00 1.250000e-01 1.250000e-01 2.550000e+02 1.100000e+01 1.100000e+01 +-2.875000e+00 1.250000e-01 1.250000e-01 2.620000e+02 1.200000e+01 1.200000e+01 +-2.625000e+00 1.250000e-01 1.250000e-01 2.710000e+02 1.200000e+01 1.200000e+01 +-2.375000e+00 1.250000e-01 1.250000e-01 2.760000e+02 1.200000e+01 1.200000e+01 +-2.125000e+00 1.250000e-01 1.250000e-01 2.800000e+02 1.300000e+01 1.300000e+01 +-1.875000e+00 1.250000e-01 1.250000e-01 2.830000e+02 1.200000e+01 1.200000e+01 +-1.625000e+00 1.250000e-01 1.250000e-01 2.786000e+02 8.200000e+00 8.200000e+00 +-1.375000e+00 1.250000e-01 1.250000e-01 2.792000e+02 8.200000e+00 8.200000e+00 +-1.125000e+00 1.250000e-01 1.250000e-01 2.765000e+02 8.100000e+00 8.100000e+00 +-8.750000e-01 1.150000e-01 1.150000e-01 2.699000e+02 7.900000e+00 7.900000e+00 +-6.250000e-01 1.150000e-01 1.150000e-01 2.669000e+02 7.300000e+00 7.300000e+00 +-3.750000e-01 1.150000e-01 1.150000e-01 2.618000e+02 6.500000e+00 6.500000e+00 +-1.225000e-01 1.175000e-01 1.175000e-01 2.591000e+02 6.500000e+00 6.500000e+00 +1.225000e-01 1.175000e-01 1.175000e-01 2.591000e+02 6.500000e+00 6.500000e+00 +3.750000e-01 1.150000e-01 1.150000e-01 2.618000e+02 6.500000e+00 6.500000e+00 +6.250000e-01 1.150000e-01 1.150000e-01 2.669000e+02 7.300000e+00 7.300000e+00 +8.750000e-01 1.150000e-01 1.150000e-01 2.699000e+02 7.900000e+00 7.900000e+00 +1.125000e+00 1.250000e-01 1.250000e-01 2.765000e+02 8.100000e+00 8.100000e+00 +1.375000e+00 1.250000e-01 1.250000e-01 2.792000e+02 8.200000e+00 8.200000e+00 +1.625000e+00 1.250000e-01 1.250000e-01 2.786000e+02 8.200000e+00 8.200000e+00 +1.875000e+00 1.250000e-01 1.250000e-01 2.830000e+02 1.200000e+01 1.200000e+01 +2.125000e+00 1.250000e-01 1.250000e-01 2.800000e+02 1.300000e+01 1.300000e+01 +2.375000e+00 1.250000e-01 1.250000e-01 2.760000e+02 1.200000e+01 1.200000e+01 +2.625000e+00 1.250000e-01 1.250000e-01 2.710000e+02 1.200000e+01 1.200000e+01 +2.875000e+00 1.250000e-01 1.250000e-01 2.620000e+02 1.200000e+01 1.200000e+01 +3.125000e+00 1.250000e-01 1.250000e-01 2.550000e+02 1.100000e+01 1.100000e+01 +3.375000e+00 1.250000e-01 1.250000e-01 2.460000e+02 1.100000e+01 1.100000e+01 +3.625000e+00 1.250000e-01 1.250000e-01 2.250000e+02 1.500000e+01 1.500000e+01 +3.875000e+00 1.250000e-01 1.250000e-01 2.130000e+02 1.400000e+01 1.400000e+01 +4.125000e+00 1.250000e-01 1.250000e-01 2.000000e+02 1.400000e+01 1.300000e+01 +4.375000e+00 1.250000e-01 1.250000e-01 1.880000e+02 1.300000e+01 1.200000e+01 +4.625000e+00 1.250000e-01 1.250000e-01 1.770000e+02 1.200000e+01 1.200000e+01 +4.875000e+00 1.250000e-01 1.250000e-01 1.670000e+02 1.100000e+01 1.100000e+01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d01-x01-y03 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d01-x01-y03 +Title: doi:10.17182/hepdata.70834.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 1.429000e+02 6.400000e+00 6.400000e+00 +-3.125000e+00 1.250000e-01 1.250000e-01 1.479000e+02 6.700000e+00 6.700000e+00 +-2.875000e+00 1.250000e-01 1.250000e-01 1.520000e+02 6.900000e+00 6.900000e+00 +-2.625000e+00 1.250000e-01 1.250000e-01 1.563000e+02 7.000000e+00 7.000000e+00 +-2.375000e+00 1.250000e-01 1.250000e-01 1.586000e+02 7.200000e+00 7.200000e+00 +-2.125000e+00 1.250000e-01 1.250000e-01 1.603000e+02 7.200000e+00 7.200000e+00 +-1.875000e+00 1.250000e-01 1.250000e-01 1.618000e+02 7.200000e+00 7.200000e+00 +-1.625000e+00 1.250000e-01 1.250000e-01 1.603000e+02 4.700000e+00 4.700000e+00 +-1.375000e+00 1.250000e-01 1.250000e-01 1.591000e+02 4.700000e+00 4.700000e+00 +-1.125000e+00 1.250000e-01 1.250000e-01 1.570000e+02 4.600000e+00 4.600000e+00 +-8.750000e-01 1.150000e-01 1.150000e-01 1.532000e+02 4.500000e+00 4.500000e+00 +-6.250000e-01 1.150000e-01 1.150000e-01 1.514000e+02 4.100000e+00 4.100000e+00 +-3.750000e-01 1.150000e-01 1.150000e-01 1.480000e+02 3.600000e+00 3.600000e+00 +-1.225000e-01 1.175000e-01 1.175000e-01 1.471000e+02 3.600000e+00 3.600000e+00 +1.225000e-01 1.175000e-01 1.175000e-01 1.471000e+02 3.600000e+00 3.600000e+00 +3.750000e-01 1.150000e-01 1.150000e-01 1.480000e+02 3.600000e+00 3.600000e+00 +6.250000e-01 1.150000e-01 1.150000e-01 1.514000e+02 4.100000e+00 4.100000e+00 +8.750000e-01 1.150000e-01 1.150000e-01 1.532000e+02 4.500000e+00 4.500000e+00 +1.125000e+00 1.250000e-01 1.250000e-01 1.570000e+02 4.600000e+00 4.600000e+00 +1.375000e+00 1.250000e-01 1.250000e-01 1.591000e+02 4.700000e+00 4.700000e+00 +1.625000e+00 1.250000e-01 1.250000e-01 1.603000e+02 4.700000e+00 4.700000e+00 +1.875000e+00 1.250000e-01 1.250000e-01 1.618000e+02 7.200000e+00 7.200000e+00 +2.125000e+00 1.250000e-01 1.250000e-01 1.603000e+02 7.200000e+00 7.200000e+00 +2.375000e+00 1.250000e-01 1.250000e-01 1.586000e+02 7.200000e+00 7.200000e+00 +2.625000e+00 1.250000e-01 1.250000e-01 1.563000e+02 7.000000e+00 7.000000e+00 +2.875000e+00 1.250000e-01 1.250000e-01 1.520000e+02 6.900000e+00 6.900000e+00 +3.125000e+00 1.250000e-01 1.250000e-01 1.479000e+02 6.700000e+00 6.700000e+00 +3.375000e+00 1.250000e-01 1.250000e-01 1.429000e+02 6.400000e+00 6.400000e+00 +3.625000e+00 1.250000e-01 1.250000e-01 1.309000e+02 8.900000e+00 8.600000e+00 +3.875000e+00 1.250000e-01 1.250000e-01 1.240000e+02 8.400000e+00 8.100000e+00 +4.125000e+00 1.250000e-01 1.250000e-01 1.166000e+02 7.900000e+00 7.700000e+00 +4.375000e+00 1.250000e-01 1.250000e-01 1.102000e+02 7.500000e+00 7.200000e+00 +4.625000e+00 1.250000e-01 1.250000e-01 1.042000e+02 7.100000e+00 6.800000e+00 +4.875000e+00 1.250000e-01 1.250000e-01 9.840000e+01 6.700000e+00 6.500000e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d01-x01-y04 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d01-x01-y04 +Title: doi:10.17182/hepdata.70834.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 7.610000e+01 3.400000e+00 3.400000e+00 +-3.125000e+00 1.250000e-01 1.250000e-01 7.850000e+01 3.500000e+00 3.500000e+00 +-2.875000e+00 1.250000e-01 1.250000e-01 8.000000e+01 3.600000e+00 3.600000e+00 +-2.625000e+00 1.250000e-01 1.250000e-01 8.180000e+01 3.700000e+00 3.700000e+00 +-2.375000e+00 1.250000e-01 1.250000e-01 8.310000e+01 3.700000e+00 3.700000e+00 +-2.125000e+00 1.250000e-01 1.250000e-01 8.350000e+01 3.800000e+00 3.800000e+00 +-1.875000e+00 1.250000e-01 1.250000e-01 8.430000e+01 3.800000e+00 3.800000e+00 +-1.625000e+00 1.250000e-01 1.250000e-01 8.030000e+01 2.400000e+00 2.400000e+00 +-1.375000e+00 1.250000e-01 1.250000e-01 8.190000e+01 2.500000e+00 2.500000e+00 +-1.125000e+00 1.250000e-01 1.250000e-01 8.170000e+01 2.500000e+00 2.500000e+00 +-8.750000e-01 1.150000e-01 1.150000e-01 7.890000e+01 2.400000e+00 2.400000e+00 +-6.250000e-01 1.150000e-01 1.150000e-01 7.750000e+01 2.100000e+00 2.100000e+00 +-3.750000e-01 1.150000e-01 1.150000e-01 7.580000e+01 1.900000e+00 1.900000e+00 +-1.225000e-01 1.175000e-01 1.175000e-01 7.470000e+01 1.800000e+00 1.800000e+00 +1.225000e-01 1.175000e-01 1.175000e-01 7.470000e+01 1.800000e+00 1.800000e+00 +3.750000e-01 1.150000e-01 1.150000e-01 7.580000e+01 1.900000e+00 1.900000e+00 +6.250000e-01 1.150000e-01 1.150000e-01 7.750000e+01 2.100000e+00 2.100000e+00 +8.750000e-01 1.150000e-01 1.150000e-01 7.890000e+01 2.400000e+00 2.400000e+00 +1.125000e+00 1.250000e-01 1.250000e-01 8.170000e+01 2.500000e+00 2.500000e+00 +1.375000e+00 1.250000e-01 1.250000e-01 8.190000e+01 2.500000e+00 2.500000e+00 +1.625000e+00 1.250000e-01 1.250000e-01 8.030000e+01 2.400000e+00 2.400000e+00 +1.875000e+00 1.250000e-01 1.250000e-01 8.430000e+01 3.800000e+00 3.800000e+00 +2.125000e+00 1.250000e-01 1.250000e-01 8.350000e+01 3.800000e+00 3.800000e+00 +2.375000e+00 1.250000e-01 1.250000e-01 8.310000e+01 3.700000e+00 3.700000e+00 +2.625000e+00 1.250000e-01 1.250000e-01 8.180000e+01 3.700000e+00 3.700000e+00 +2.875000e+00 1.250000e-01 1.250000e-01 8.000000e+01 3.600000e+00 3.600000e+00 +3.125000e+00 1.250000e-01 1.250000e-01 7.850000e+01 3.500000e+00 3.500000e+00 +3.375000e+00 1.250000e-01 1.250000e-01 7.610000e+01 3.400000e+00 3.400000e+00 +3.625000e+00 1.250000e-01 1.250000e-01 6.940000e+01 4.700000e+00 4.600000e+00 +3.875000e+00 1.250000e-01 1.250000e-01 6.600000e+01 4.500000e+00 4.300000e+00 +4.125000e+00 1.250000e-01 1.250000e-01 6.240000e+01 4.200000e+00 4.100000e+00 +4.375000e+00 1.250000e-01 1.250000e-01 5.910000e+01 4.000000e+00 3.900000e+00 +4.625000e+00 1.250000e-01 1.250000e-01 5.630000e+01 3.800000e+00 3.700000e+00 +4.875000e+00 1.250000e-01 1.250000e-01 5.360000e+01 3.600000e+00 3.500000e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d01-x01-y05 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d01-x01-y05 +Title: doi:10.17182/hepdata.70834.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 3.520000e+01 1.600000e+00 1.600000e+00 +-3.125000e+00 1.250000e-01 1.250000e-01 3.610000e+01 1.600000e+00 1.600000e+00 +-2.875000e+00 1.250000e-01 1.250000e-01 3.670000e+01 1.700000e+00 1.700000e+00 +-2.625000e+00 1.250000e-01 1.250000e-01 3.760000e+01 1.700000e+00 1.700000e+00 +-2.375000e+00 1.250000e-01 1.250000e-01 3.770000e+01 1.700000e+00 1.700000e+00 +-2.125000e+00 1.250000e-01 1.250000e-01 3.790000e+01 1.700000e+00 1.700000e+00 +-1.875000e+00 1.250000e-01 1.250000e-01 3.800000e+01 1.700000e+00 1.700000e+00 +-1.625000e+00 1.250000e-01 1.250000e-01 3.830000e+01 1.300000e+00 1.300000e+00 +-1.375000e+00 1.250000e-01 1.250000e-01 3.830000e+01 1.200000e+00 1.200000e+00 +-1.125000e+00 1.250000e-01 1.250000e-01 3.690000e+01 1.200000e+00 1.200000e+00 +-8.750000e-01 1.150000e-01 1.150000e-01 3.700000e+01 1.200000e+00 1.200000e+00 +-6.250000e-01 1.150000e-01 1.150000e-01 3.530000e+01 1.000000e+00 1.000000e+00 +-3.750000e-01 1.150000e-01 1.150000e-01 3.481000e+01 8.600000e-01 8.600000e-01 +-1.225000e-01 1.175000e-01 1.175000e-01 3.482000e+01 8.600000e-01 8.600000e-01 +1.225000e-01 1.175000e-01 1.175000e-01 3.482000e+01 8.600000e-01 8.600000e-01 +3.750000e-01 1.150000e-01 1.150000e-01 3.481000e+01 8.600000e-01 8.600000e-01 +6.250000e-01 1.150000e-01 1.150000e-01 3.530000e+01 1.000000e+00 1.000000e+00 +8.750000e-01 1.150000e-01 1.150000e-01 3.700000e+01 1.200000e+00 1.200000e+00 +1.125000e+00 1.250000e-01 1.250000e-01 3.690000e+01 1.200000e+00 1.200000e+00 +1.375000e+00 1.250000e-01 1.250000e-01 3.830000e+01 1.200000e+00 1.200000e+00 +1.625000e+00 1.250000e-01 1.250000e-01 3.830000e+01 1.300000e+00 1.300000e+00 +1.875000e+00 1.250000e-01 1.250000e-01 3.800000e+01 1.700000e+00 1.700000e+00 +2.125000e+00 1.250000e-01 1.250000e-01 3.790000e+01 1.700000e+00 1.700000e+00 +2.375000e+00 1.250000e-01 1.250000e-01 3.770000e+01 1.700000e+00 1.700000e+00 +2.625000e+00 1.250000e-01 1.250000e-01 3.760000e+01 1.700000e+00 1.700000e+00 +2.875000e+00 1.250000e-01 1.250000e-01 3.670000e+01 1.700000e+00 1.700000e+00 +3.125000e+00 1.250000e-01 1.250000e-01 3.610000e+01 1.600000e+00 1.600000e+00 +3.375000e+00 1.250000e-01 1.250000e-01 3.520000e+01 1.600000e+00 1.600000e+00 +3.625000e+00 1.250000e-01 1.250000e-01 3.230000e+01 2.200000e+00 2.100000e+00 +3.875000e+00 1.250000e-01 1.250000e-01 3.050000e+01 2.100000e+00 2.000000e+00 +4.125000e+00 1.250000e-01 1.250000e-01 2.900000e+01 2.000000e+00 1.900000e+00 +4.375000e+00 1.250000e-01 1.250000e-01 2.770000e+01 1.900000e+00 1.800000e+00 +4.625000e+00 1.250000e-01 1.250000e-01 2.660000e+01 1.800000e+00 1.800000e+00 +4.875000e+00 1.250000e-01 1.250000e-01 2.520000e+01 1.700000e+00 1.700000e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d01-x01-y06 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d01-x01-y06 +Title: doi:10.17182/hepdata.70834.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 1.392000e+01 6.300000e-01 6.300000e-01 +-3.125000e+00 1.250000e-01 1.250000e-01 1.431000e+01 6.500000e-01 6.500000e-01 +-2.875000e+00 1.250000e-01 1.250000e-01 1.444000e+01 6.500000e-01 6.500000e-01 +-2.625000e+00 1.250000e-01 1.250000e-01 1.467000e+01 6.600000e-01 6.600000e-01 +-2.375000e+00 1.250000e-01 1.250000e-01 1.461000e+01 6.600000e-01 6.600000e-01 +-2.125000e+00 1.250000e-01 1.250000e-01 1.458000e+01 6.600000e-01 6.600000e-01 +-1.875000e+00 1.250000e-01 1.250000e-01 1.474000e+01 6.700000e-01 6.700000e-01 +-1.625000e+00 1.250000e-01 1.250000e-01 1.451000e+01 5.500000e-01 5.500000e-01 +-1.375000e+00 1.250000e-01 1.250000e-01 1.432000e+01 5.500000e-01 5.500000e-01 +-1.125000e+00 1.250000e-01 1.250000e-01 1.480000e+01 5.600000e-01 5.600000e-01 +-8.750000e-01 1.150000e-01 1.150000e-01 1.418000e+01 5.400000e-01 5.400000e-01 +-6.250000e-01 1.150000e-01 1.150000e-01 1.372000e+01 4.400000e-01 4.400000e-01 +-3.750000e-01 1.150000e-01 1.150000e-01 1.353000e+01 3.500000e-01 3.500000e-01 +-1.225000e-01 1.175000e-01 1.175000e-01 1.340000e+01 3.500000e-01 3.500000e-01 +1.225000e-01 1.175000e-01 1.175000e-01 1.340000e+01 3.500000e-01 3.500000e-01 +3.750000e-01 1.150000e-01 1.150000e-01 1.353000e+01 3.500000e-01 3.500000e-01 +6.250000e-01 1.150000e-01 1.150000e-01 1.372000e+01 4.400000e-01 4.400000e-01 +8.750000e-01 1.150000e-01 1.150000e-01 1.418000e+01 5.400000e-01 5.400000e-01 +1.125000e+00 1.250000e-01 1.250000e-01 1.480000e+01 5.600000e-01 5.600000e-01 +1.375000e+00 1.250000e-01 1.250000e-01 1.432000e+01 5.500000e-01 5.500000e-01 +1.625000e+00 1.250000e-01 1.250000e-01 1.451000e+01 5.500000e-01 5.500000e-01 +1.875000e+00 1.250000e-01 1.250000e-01 1.474000e+01 6.700000e-01 6.700000e-01 +2.125000e+00 1.250000e-01 1.250000e-01 1.458000e+01 6.600000e-01 6.600000e-01 +2.375000e+00 1.250000e-01 1.250000e-01 1.461000e+01 6.600000e-01 6.600000e-01 +2.625000e+00 1.250000e-01 1.250000e-01 1.467000e+01 6.600000e-01 6.600000e-01 +2.875000e+00 1.250000e-01 1.250000e-01 1.444000e+01 6.500000e-01 6.500000e-01 +3.125000e+00 1.250000e-01 1.250000e-01 1.431000e+01 6.500000e-01 6.500000e-01 +3.375000e+00 1.250000e-01 1.250000e-01 1.392000e+01 6.300000e-01 6.300000e-01 +3.625000e+00 1.250000e-01 1.250000e-01 1.317000e+01 9.000000e-01 8.700000e-01 +3.875000e+00 1.250000e-01 1.250000e-01 1.232000e+01 8.400000e-01 8.100000e-01 +4.125000e+00 1.250000e-01 1.250000e-01 1.192000e+01 8.100000e-01 7.800000e-01 +4.375000e+00 1.250000e-01 1.250000e-01 1.144000e+01 7.800000e-01 7.500000e-01 +4.625000e+00 1.250000e-01 1.250000e-01 1.111000e+01 7.600000e-01 7.300000e-01 +4.875000e+00 1.250000e-01 1.250000e-01 1.068000e+01 7.300000e-01 7.000000e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d02-x01-y01 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d02-x01-y01 +Title: doi:10.17182/hepdata.70834.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +7.200000e+00 1.000000e-01 1.000000e-01 1.250000e+01 4.000000e-01 4.000000e-01 +1.490000e+01 3.000000e-01 3.000000e-01 1.150000e+01 2.000000e-01 2.000000e-01 +3.000000e+01 5.000000e-01 5.000000e-01 1.110000e+01 2.000000e-01 2.000000e-01 +5.200000e+01 1.000000e+00 1.000000e+00 1.080000e+01 1.000000e-01 1.000000e-01 +8.400000e+01 1.000000e+00 1.000000e+00 1.060000e+01 1.000000e-01 1.000000e-01 +1.280000e+02 1.000000e+00 1.000000e+00 1.050000e+01 1.000000e-01 1.000000e-01 +1.850000e+02 2.000000e+00 2.000000e+00 1.040000e+01 1.000000e-01 1.000000e-01 +2.600000e+02 2.000000e+00 2.000000e+00 1.026000e+01 4.000000e-02 4.000000e-02 +3.290000e+02 4.000000e+00 4.000000e+00 1.018000e+01 4.000000e-02 4.000000e-02 +3.868000e+02 4.000000e-01 4.000000e-01 1.012000e+01 4.000000e-02 4.000000e-02 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d03-x01-y01 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d03-x01-y01 +Title: doi:10.17182/hepdata.70834.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +7.200000e+00 0.000000e+00 0.000000e+00 3.942000e+00 3.700000e-02 3.700000e-02 +1.500000e+01 0.000000e+00 0.000000e+00 4.906000e+00 4.400000e-02 4.400000e-02 +3.000000e+01 0.000000e+00 0.000000e+00 5.275000e+00 4.200000e-02 4.200000e-02 +5.200000e+01 0.000000e+00 0.000000e+00 5.951000e+00 4.700000e-02 4.700000e-02 +8.400000e+01 0.000000e+00 0.000000e+00 6.472000e+00 5.500000e-02 5.500000e-02 +1.300000e+02 0.000000e+00 0.000000e+00 6.963000e+00 5.700000e-02 5.700000e-02 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d03-x01-y02 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d03-x01-y02 +Title: doi:10.17182/hepdata.70834.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +7.200000e+00 0.000000e+00 0.000000e+00 4.130000e+00 4.800000e-02 4.800000e-02 +1.500000e+01 0.000000e+00 0.000000e+00 5.134000e+00 5.400000e-02 5.400000e-02 +3.000000e+01 0.000000e+00 0.000000e+00 5.538000e+00 5.800000e-02 5.800000e-02 +5.200000e+01 0.000000e+00 0.000000e+00 6.181000e+00 6.300000e-02 6.300000e-02 +8.400000e+01 0.000000e+00 0.000000e+00 6.663000e+00 6.800000e-02 6.800000e-02 +1.300000e+02 0.000000e+00 0.000000e+00 7.136000e+00 7.100000e-02 7.100000e-02 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d03-x01-y03 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d03-x01-y03 +Title: doi:10.17182/hepdata.70834.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +7.200000e+00 0.000000e+00 0.000000e+00 3.971000e+00 5.700000e-02 5.700000e-02 +1.500000e+01 0.000000e+00 0.000000e+00 4.821000e+00 6.800000e-02 6.800000e-02 +3.000000e+01 0.000000e+00 0.000000e+00 5.226000e+00 7.200000e-02 7.200000e-02 +5.200000e+01 0.000000e+00 0.000000e+00 5.725000e+00 7.800000e-02 7.800000e-02 +8.400000e+01 0.000000e+00 0.000000e+00 6.115000e+00 8.400000e-02 8.400000e-02 +1.300000e+02 0.000000e+00 0.000000e+00 6.474000e+00 9.000000e-02 9.000000e-02 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d03-x01-y04 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d03-x01-y04 +Title: doi:10.17182/hepdata.70834.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +7.200000e+00 0.000000e+00 0.000000e+00 3.483000e+00 6.700000e-02 6.700000e-02 +1.500000e+01 0.000000e+00 0.000000e+00 4.086000e+00 7.800000e-02 7.800000e-02 +3.000000e+01 0.000000e+00 0.000000e+00 4.381000e+00 8.600000e-02 8.600000e-02 +5.200000e+01 0.000000e+00 0.000000e+00 4.721000e+00 8.900000e-02 8.900000e-02 +8.400000e+01 0.000000e+00 0.000000e+00 4.997000e+00 9.400000e-02 9.400000e-02 +1.300000e+02 0.000000e+00 0.000000e+00 5.260000e+00 1.000000e-01 1.000000e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1394676/d04-x01-y01 +IsRef: 1 +Path: /REF/ALICE_2016_I1394676/d04-x01-y01 +Title: doi:10.17182/hepdata.70834.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +7.152000e+00 9.200000e-02 9.200000e-02 1.618000e+02 2.992925e+01 2.992925e+01 +1.495000e+01 2.600000e-01 2.600000e-01 4.080000e+02 5.316014e+01 5.316014e+01 +3.005000e+01 4.700000e-01 4.700000e-01 8.810000e+02 9.148224e+01 9.148224e+01 +5.202000e+01 7.000000e-01 7.000000e-01 1.684000e+03 1.445545e+02 1.445545e+02 +8.409000e+01 9.200000e-01 9.200000e-01 2.920000e+03 2.247576e+02 2.247576e+02 +1.279000e+02 1.300000e+00 1.300000e+00 4.731000e+03 3.539901e+02 3.539901e+02 +END YODA_SCATTER2D_V2 diff --git a/analyses/pluginALICE/ALICE_2016_I1507090.cc b/analyses/pluginALICE/ALICE_2016_I1507090.cc new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1507090.cc @@ -0,0 +1,105 @@ +// -*- C++ -*- +#include "Rivet/Analysis.hh" +#include "Rivet/Projections/ChargedFinalState.hh" +#include "Rivet/Tools/AliceCommon.hh" +#include "Rivet/Projections/AliceCommon.hh" +namespace Rivet { + + + /// @brief ALICE PbPb at 5.02 TeV eta distributions. + class ALICE_2016_I1507090 : public Analysis { + public: + + /// Constructor + DEFAULT_RIVET_ANALYSIS_CTOR(ALICE_2016_I1507090); + + + /// @name Analysis methods + //@{ + + /// Book histograms and initialise projections before the run + void init() { + // Initialise and register projections + // Centrality projection. + declareCentrality(ALICE::V0MMultiplicity(), "ALICE_2015_PBPBCentrality", + "V0M","V0M"); + // Projections for the 2-out-of-3 trigger. + declare(ChargedFinalState( (Cuts::eta > 2.8 && Cuts::eta < 5.1) && + Cuts::pT > 0.1*GeV), "VZERO1"); + declare(ChargedFinalState( (Cuts::eta > -3.7 && Cuts::eta < -1.7) && + Cuts::pT > 0.1*GeV), "VZERO2"); + declare(ChargedFinalState(Cuts::abseta < 1. && Cuts::pT > 0.15*GeV), + "SPD"); + + // Primary particles. + declare(ALICE::PrimaryParticles(Cuts::abseta < 5.6),"APRIM"); + + // The centrality bins and the corresponding histograms. + centralityBins = + { 5, 10, 20, 30, 40, 50, 60, 70, 80, 90 }; + for (int i = 0, N = centralityBins.size(); i < N; ++i) { + histEta[centralityBins[i]] = bookHisto1D(1, 1, i + 1); + sow[centralityBins[i]] = bookCounter("sow_" + toString(i)); + } + } + + + /// Perform the per-event analysis + void analyze(const Event& event) { + const double weight = event.weight(); + // Trigger projections. + const ChargedFinalState& vz1 = + applyProjection(event,"VZERO1"); + const ChargedFinalState& vz2 = + applyProjection(event,"VZERO2"); + const ChargedFinalState& spd = + applyProjection(event,"SPD"); + int fwdTrig = (vz1.particles().size() > 0 ? 1 : 0); + int bwdTrig = (vz2.particles().size() > 0 ? 1 : 0); + int cTrig = (spd.particles().size() > 0 ? 1 : 0); + + if (fwdTrig + bwdTrig + cTrig < 2) vetoEvent; + const CentralityProjection& cent = apply(event,"V0M"); + double c = cent(); + // Find the correct centrality histogram + auto hItr = histEta.upper_bound(c); + if (hItr == histEta.end()) return; + // Find the correct sow. + auto sItr = sow.upper_bound(c); + if (sItr == sow.end()) return; + sItr->second->fill(weight); + + // Fill the histograms. + for ( const auto& p : + applyProjection(event,"APRIM").particles() ) + if(p.abscharge() > 0) hItr->second->fill(p.eta(), weight); + + } + + + /// Normalise histograms etc., after the run + void finalize() { + for (int i = 0, N = centralityBins.size(); i < N; ++i) + histEta[centralityBins[i]]->scaleW(1./sow[centralityBins[i]]->sumW()); + + } + + //@} + + + /// @name Histograms + //@{ + vector centralityBins; + map histEta; + map sow; + //@} + + + }; + + + // The hook for the plugin system + DECLARE_RIVET_PLUGIN(ALICE_2016_I1507090); + + +} diff --git a/analyses/pluginALICE/ALICE_2016_I1507090.info b/analyses/pluginALICE/ALICE_2016_I1507090.info new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1507090.info @@ -0,0 +1,41 @@ +Name: ALICE_2016_I1507090 +Year: 2016 +Summary: Charged particle production as function of centrality in PbPb collisions at 5.02 TeV. +Experiment: ALICE +Collider: LHC +InspireID: 1507090 +Status: UNVALIDATED +Authors: + - Christian Bierlich +References: +- Phys.Lett.B772(2017)567-577 +- DOI:10.1016/j.physletb.2017.07.017 +- arXiv:1612.08966 +RunInfo: PbPb minimum bias events. The analysis holds the Primary Particle definition, so don't limit decays on generator level. +NeedCrossSection: no +Options: + - cent=REF,GEN,IMP,USR +Beams: [1000822080, 1000822080] +# This is _total_ energy of beams, so this becomes 208*5023=1044784 +Energies: [1044784] +Description: + 'Charged particle pseudorapidity density in centrality classes. Measurements cover a wide $\eta$ range from -3.5 to 5. Centrality classes refer to forward V0 spectrum, as also measured by ALICE, can be modified to use a user definition instead.' +BibKey: Adam:2016ddh +BibTeX: '@article{Adam:2016ddh, + author = "Adam, Jaroslav and others", + title = "{Centrality dependence of the pseudorapidity density + distribution for charged particles in Pb-Pb collisions at + $\sqrt{s_{\rm NN}}=5.02$ TeV}", + collaboration = "ALICE", + journal = "Phys. Lett.", + volume = "B772", + year = "2017", + pages = "567-577", + doi = "10.1016/j.physletb.2017.07.017", + eprint = "1612.08966", + archivePrefix = "arXiv", + primaryClass = "nucl-ex", + reportNumber = "CERN-EP-2016-327", + SLACcitation = "%%CITATION = ARXIV:1612.08966;%%" +}' + diff --git a/analyses/pluginALICE/ALICE_2016_I1507090.plot b/analyses/pluginALICE/ALICE_2016_I1507090.plot new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1507090.plot @@ -0,0 +1,73 @@ +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y01 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 0-5 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y02 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 5-10 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y03 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 10-20 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y04 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 20-30 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y05 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 30-40 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y06 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 40-50 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y07 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 50-60 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y08 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 60-70 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y09 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 70-80 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +# BEGIN PLOT /ALICE_2016_I1507090/d01-x01-y10 +Title=$\sqrt{s}=5.02$ TeV/nn, Centrality: 80-90 pct. +XLabel=$\eta$ +YLabel=$\frac{1}{N_{evt}}\frac{dN_{ch}}{d\eta}$ +LogY=0 +LogX=0 +# END PLOT +Stack=d01-x01-y01 d01-x01-y02 + + diff --git a/analyses/pluginALICE/ALICE_2016_I1507090.yoda b/analyses/pluginALICE/ALICE_2016_I1507090.yoda new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1507090.yoda @@ -0,0 +1,516 @@ +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y01 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y01 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 1.643000e+03 7.406079e+01 7.406079e+01 +-3.125000e+00 1.250000e-01 1.250000e-01 1.670000e+03 7.500667e+01 7.500667e+01 +-2.875000e+00 1.250000e-01 1.250000e-01 1.718000e+03 7.700649e+01 7.700649e+01 +-2.625000e+00 1.250000e-01 1.250000e-01 1.787000e+03 8.100617e+01 8.100617e+01 +-2.375000e+00 1.250000e-01 1.250000e-01 1.835000e+03 8.300602e+01 8.300602e+01 +-2.125000e+00 1.250000e-01 1.250000e-01 1.912000e+03 8.600581e+01 8.600581e+01 +-1.875000e+00 1.250000e-01 1.250000e-01 1.968000e+03 6.400781e+01 6.400781e+01 +-1.625000e+00 1.250000e-01 1.250000e-01 2.001000e+03 8.002500e+01 8.002500e+01 +-1.375000e+00 1.250000e-01 1.250000e-01 2.021000e+03 7.100704e+01 7.100704e+01 +-1.125000e+00 1.250000e-01 1.250000e-01 2.017000e+03 6.400781e+01 6.400781e+01 +-8.750000e-01 1.250000e-01 1.250000e-01 1.995000e+03 5.600893e+01 5.600893e+01 +-6.250000e-01 1.250000e-01 1.250000e-01 1.970000e+03 5.200961e+01 5.200961e+01 +-3.750000e-01 1.250000e-01 1.250000e-01 1.943000e+03 4.701064e+01 4.701064e+01 +-1.250000e-01 1.250000e-01 1.250000e-01 1.929000e+03 4.601087e+01 4.601087e+01 +1.250000e-01 1.250000e-01 1.250000e-01 1.929000e+03 4.601087e+01 4.601087e+01 +3.750000e-01 1.250000e-01 1.250000e-01 1.943000e+03 4.701064e+01 4.701064e+01 +6.250000e-01 1.250000e-01 1.250000e-01 1.970000e+03 5.200961e+01 5.200961e+01 +8.750000e-01 1.250000e-01 1.250000e-01 1.995000e+03 5.600893e+01 5.600893e+01 +1.125000e+00 1.250000e-01 1.250000e-01 2.017000e+03 6.400781e+01 6.400781e+01 +1.375000e+00 1.250000e-01 1.250000e-01 2.021000e+03 7.100704e+01 7.100704e+01 +1.625000e+00 1.250000e-01 1.250000e-01 2.001000e+03 8.002500e+01 8.002500e+01 +1.875000e+00 1.250000e-01 1.250000e-01 1.968000e+03 6.400781e+01 6.400781e+01 +2.125000e+00 1.250000e-01 1.250000e-01 1.912000e+03 8.600581e+01 8.600581e+01 +2.375000e+00 1.250000e-01 1.250000e-01 1.835000e+03 8.300602e+01 8.300602e+01 +2.625000e+00 1.250000e-01 1.250000e-01 1.787000e+03 8.100617e+01 8.100617e+01 +2.875000e+00 1.250000e-01 1.250000e-01 1.718000e+03 7.700649e+01 7.700649e+01 +3.125000e+00 1.250000e-01 1.250000e-01 1.670000e+03 7.500667e+01 7.500667e+01 +3.375000e+00 1.250000e-01 1.250000e-01 1.643000e+03 7.406079e+01 7.406079e+01 +3.625000e+00 1.250000e-01 1.250000e-01 1.563000e+03 1.060189e+02 1.030194e+02 +3.875000e+00 1.250000e-01 1.250000e-01 1.474000e+03 1.000050e+02 9.700515e+01 +4.125000e+00 1.250000e-01 1.250000e-01 1.370000e+03 9.300538e+01 9.000556e+01 +4.375000e+00 1.250000e-01 1.250000e-01 1.324000e+03 9.000556e+01 8.700575e+01 +4.625000e+00 1.250000e-01 1.250000e-01 1.281000e+03 8.700575e+01 8.400595e+01 +4.875000e+00 1.250000e-01 1.250000e-01 1.244000e+03 8.500588e+01 8.200610e+01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y02 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y02 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 1.364000e+03 6.203225e+01 6.203225e+01 +-3.125000e+00 1.250000e-01 1.250000e-01 1.391000e+03 6.300794e+01 6.300794e+01 +-2.875000e+00 1.250000e-01 1.250000e-01 1.424000e+03 6.400781e+01 6.400781e+01 +-2.625000e+00 1.250000e-01 1.250000e-01 1.474000e+03 6.700746e+01 6.700746e+01 +-2.375000e+00 1.250000e-01 1.250000e-01 1.507000e+03 6.800735e+01 6.800735e+01 +-2.125000e+00 1.250000e-01 1.250000e-01 1.569000e+03 7.100704e+01 7.100704e+01 +-1.875000e+00 1.250000e-01 1.250000e-01 1.644000e+03 5.300943e+01 5.300943e+01 +-1.625000e+00 1.250000e-01 1.250000e-01 1.679000e+03 6.702984e+01 6.702984e+01 +-1.375000e+00 1.250000e-01 1.250000e-01 1.682000e+03 5.900847e+01 5.900847e+01 +-1.125000e+00 1.250000e-01 1.250000e-01 1.672000e+03 5.200961e+01 5.200961e+01 +-8.750000e-01 1.250000e-01 1.250000e-01 1.646000e+03 4.701064e+01 4.701064e+01 +-6.250000e-01 1.250000e-01 1.250000e-01 1.621000e+03 4.201190e+01 4.201190e+01 +-3.750000e-01 1.250000e-01 1.250000e-01 1.597000e+03 3.901282e+01 3.901282e+01 +-1.250000e-01 1.250000e-01 1.250000e-01 1.583000e+03 3.701351e+01 3.701351e+01 +1.250000e-01 1.250000e-01 1.250000e-01 1.583000e+03 3.701351e+01 3.701351e+01 +3.750000e-01 1.250000e-01 1.250000e-01 1.597000e+03 3.901282e+01 3.901282e+01 +6.250000e-01 1.250000e-01 1.250000e-01 1.621000e+03 4.201190e+01 4.201190e+01 +8.750000e-01 1.250000e-01 1.250000e-01 1.646000e+03 4.701064e+01 4.701064e+01 +1.125000e+00 1.250000e-01 1.250000e-01 1.672000e+03 5.200961e+01 5.200961e+01 +1.375000e+00 1.250000e-01 1.250000e-01 1.682000e+03 5.900847e+01 5.900847e+01 +1.625000e+00 1.250000e-01 1.250000e-01 1.679000e+03 6.702984e+01 6.702984e+01 +1.875000e+00 1.250000e-01 1.250000e-01 1.644000e+03 5.300943e+01 5.300943e+01 +2.125000e+00 1.250000e-01 1.250000e-01 1.569000e+03 7.100704e+01 7.100704e+01 +2.375000e+00 1.250000e-01 1.250000e-01 1.507000e+03 6.800735e+01 6.800735e+01 +2.625000e+00 1.250000e-01 1.250000e-01 1.474000e+03 6.700746e+01 6.700746e+01 +2.875000e+00 1.250000e-01 1.250000e-01 1.424000e+03 6.400781e+01 6.400781e+01 +3.125000e+00 1.250000e-01 1.250000e-01 1.391000e+03 6.300794e+01 6.300794e+01 +3.375000e+00 1.250000e-01 1.250000e-01 1.364000e+03 6.203225e+01 6.203225e+01 +3.625000e+00 1.250000e-01 1.250000e-01 1.292000e+03 8.802272e+01 8.502353e+01 +3.875000e+00 1.250000e-01 1.250000e-01 1.218000e+03 8.300602e+01 8.000625e+01 +4.125000e+00 1.250000e-01 1.250000e-01 1.132000e+03 7.700649e+01 7.400676e+01 +4.375000e+00 1.250000e-01 1.250000e-01 1.093000e+03 7.400676e+01 7.200694e+01 +4.625000e+00 1.250000e-01 1.250000e-01 1.062000e+03 7.200694e+01 7.000714e+01 +4.875000e+00 1.250000e-01 1.250000e-01 1.032000e+03 7.000714e+01 6.800735e+01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y03 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y03 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 1.038000e+03 4.704253e+01 4.704253e+01 +-3.125000e+00 1.250000e-01 1.250000e-01 1.061000e+03 4.801042e+01 4.801042e+01 +-2.875000e+00 1.250000e-01 1.250000e-01 1.080000e+03 4.901020e+01 4.901020e+01 +-2.625000e+00 1.250000e-01 1.250000e-01 1.114000e+03 5.001000e+01 5.001000e+01 +-2.375000e+00 1.250000e-01 1.250000e-01 1.136000e+03 5.100980e+01 5.100980e+01 +-2.125000e+00 1.250000e-01 1.250000e-01 1.178000e+03 5.300943e+01 5.300943e+01 +-1.875000e+00 1.250000e-01 1.250000e-01 1.229000e+03 3.901282e+01 3.901282e+01 +-1.625000e+00 1.250000e-01 1.250000e-01 1.253000e+03 4.901020e+01 4.901020e+01 +-1.375000e+00 1.250000e-01 1.250000e-01 1.256000e+03 4.301163e+01 4.301163e+01 +-1.125000e+00 1.250000e-01 1.250000e-01 1.247000e+03 3.801316e+01 3.801316e+01 +-8.750000e-01 1.250000e-01 1.250000e-01 1.229000e+03 3.401470e+01 3.401470e+01 +-6.250000e-01 1.250000e-01 1.250000e-01 1.210000e+03 3.101612e+01 3.101612e+01 +-3.750000e-01 1.250000e-01 1.250000e-01 1.191000e+03 2.801785e+01 2.801785e+01 +-1.250000e-01 1.250000e-01 1.250000e-01 1.181000e+03 2.801785e+01 2.801785e+01 +1.250000e-01 1.250000e-01 1.250000e-01 1.181000e+03 2.801785e+01 2.801785e+01 +3.750000e-01 1.250000e-01 1.250000e-01 1.191000e+03 2.801785e+01 2.801785e+01 +6.250000e-01 1.250000e-01 1.250000e-01 1.210000e+03 3.101612e+01 3.101612e+01 +8.750000e-01 1.250000e-01 1.250000e-01 1.229000e+03 3.401470e+01 3.401470e+01 +1.125000e+00 1.250000e-01 1.250000e-01 1.247000e+03 3.801316e+01 3.801316e+01 +1.375000e+00 1.250000e-01 1.250000e-01 1.256000e+03 4.301163e+01 4.301163e+01 +1.625000e+00 1.250000e-01 1.250000e-01 1.253000e+03 4.901020e+01 4.901020e+01 +1.875000e+00 1.250000e-01 1.250000e-01 1.229000e+03 3.901282e+01 3.901282e+01 +2.125000e+00 1.250000e-01 1.250000e-01 1.178000e+03 5.300943e+01 5.300943e+01 +2.375000e+00 1.250000e-01 1.250000e-01 1.136000e+03 5.100980e+01 5.100980e+01 +2.625000e+00 1.250000e-01 1.250000e-01 1.114000e+03 5.001000e+01 5.001000e+01 +2.875000e+00 1.250000e-01 1.250000e-01 1.080000e+03 4.901020e+01 4.901020e+01 +3.125000e+00 1.250000e-01 1.250000e-01 1.061000e+03 4.801042e+01 4.801042e+01 +3.375000e+00 1.250000e-01 1.250000e-01 1.038000e+03 4.704253e+01 4.704253e+01 +3.625000e+00 1.250000e-01 1.250000e-01 9.770000e+02 6.600758e+01 6.400781e+01 +3.875000e+00 1.250000e-01 1.250000e-01 9.213000e+02 6.260128e+01 6.060132e+01 +4.125000e+00 1.250000e-01 1.250000e-01 8.577000e+02 5.830137e+01 5.640142e+01 +4.375000e+00 1.250000e-01 1.250000e-01 8.296000e+02 5.640142e+01 5.450147e+01 +4.625000e+00 1.250000e-01 1.250000e-01 8.074000e+02 5.490228e+01 5.310235e+01 +4.875000e+00 1.250000e-01 1.250000e-01 7.870000e+02 5.300943e+01 5.200961e+01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y04 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y04 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 7.140000e+02 3.201562e+01 3.201562e+01 +-3.125000e+00 1.250000e-01 1.250000e-01 7.260000e+02 3.301515e+01 3.301515e+01 +-2.875000e+00 1.250000e-01 1.250000e-01 7.380000e+02 3.301515e+01 3.301515e+01 +-2.625000e+00 1.250000e-01 1.250000e-01 7.590000e+02 3.401470e+01 3.401470e+01 +-2.375000e+00 1.250000e-01 1.250000e-01 7.720000e+02 3.501428e+01 3.501428e+01 +-2.125000e+00 1.250000e-01 1.250000e-01 7.970000e+02 3.601389e+01 3.601389e+01 +-1.875000e+00 1.250000e-01 1.250000e-01 8.270000e+02 2.601922e+01 2.601922e+01 +-1.625000e+00 1.250000e-01 1.250000e-01 8.420000e+02 3.101612e+01 3.101612e+01 +-1.375000e+00 1.250000e-01 1.250000e-01 8.440000e+02 2.801785e+01 2.801785e+01 +-1.125000e+00 1.250000e-01 1.250000e-01 8.380000e+02 2.501999e+01 2.501999e+01 +-8.750000e-01 1.250000e-01 1.250000e-01 8.260000e+02 2.202272e+01 2.202272e+01 +-6.250000e-01 1.250000e-01 1.250000e-01 8.119000e+02 2.010622e+01 2.010622e+01 +-3.750000e-01 1.250000e-01 1.250000e-01 7.992000e+02 1.870668e+01 1.870668e+01 +-1.250000e-01 1.250000e-01 1.250000e-01 7.924000e+02 1.790698e+01 1.790698e+01 +1.250000e-01 1.250000e-01 1.250000e-01 7.924000e+02 1.790698e+01 1.790698e+01 +3.750000e-01 1.250000e-01 1.250000e-01 7.992000e+02 1.870668e+01 1.870668e+01 +6.250000e-01 1.250000e-01 1.250000e-01 8.119000e+02 2.010622e+01 2.010622e+01 +8.750000e-01 1.250000e-01 1.250000e-01 8.260000e+02 2.202272e+01 2.202272e+01 +1.125000e+00 1.250000e-01 1.250000e-01 8.380000e+02 2.501999e+01 2.501999e+01 +1.375000e+00 1.250000e-01 1.250000e-01 8.440000e+02 2.801785e+01 2.801785e+01 +1.625000e+00 1.250000e-01 1.250000e-01 8.420000e+02 3.101612e+01 3.101612e+01 +1.875000e+00 1.250000e-01 1.250000e-01 8.270000e+02 2.601922e+01 2.601922e+01 +2.125000e+00 1.250000e-01 1.250000e-01 7.970000e+02 3.601389e+01 3.601389e+01 +2.375000e+00 1.250000e-01 1.250000e-01 7.720000e+02 3.501428e+01 3.501428e+01 +2.625000e+00 1.250000e-01 1.250000e-01 7.590000e+02 3.401470e+01 3.401470e+01 +2.875000e+00 1.250000e-01 1.250000e-01 7.380000e+02 3.301515e+01 3.301515e+01 +3.125000e+00 1.250000e-01 1.250000e-01 7.260000e+02 3.301515e+01 3.301515e+01 +3.375000e+00 1.250000e-01 1.250000e-01 7.140000e+02 3.201562e+01 3.201562e+01 +3.625000e+00 1.250000e-01 1.250000e-01 6.650000e+02 4.501111e+01 4.401136e+01 +3.875000e+00 1.250000e-01 1.250000e-01 6.254000e+02 4.250106e+01 4.110109e+01 +4.125000e+00 1.250000e-01 1.250000e-01 5.826000e+02 3.960114e+01 3.830117e+01 +4.375000e+00 1.250000e-01 1.250000e-01 5.655000e+02 3.840117e+01 3.720121e+01 +4.625000e+00 1.250000e-01 1.250000e-01 5.514000e+02 3.750213e+01 3.620221e+01 +4.875000e+00 1.250000e-01 1.250000e-01 5.380000e+02 3.701351e+01 3.501428e+01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y05 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y05 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 4.750000e+02 2.102380e+01 2.102380e+01 +-3.125000e+00 1.250000e-01 1.250000e-01 4.827000e+02 2.180573e+01 2.180573e+01 +-2.875000e+00 1.250000e-01 1.250000e-01 4.897000e+02 2.210362e+01 2.210362e+01 +-2.625000e+00 1.250000e-01 1.250000e-01 5.026000e+02 2.270352e+01 2.270352e+01 +-2.375000e+00 1.250000e-01 1.250000e-01 5.106000e+02 2.300543e+01 2.300543e+01 +-2.125000e+00 1.250000e-01 1.250000e-01 5.220000e+02 2.350340e+01 2.350340e+01 +-1.875000e+00 1.250000e-01 1.250000e-01 5.399000e+02 1.590503e+01 1.590503e+01 +-1.625000e+00 1.250000e-01 1.250000e-01 5.490000e+02 1.902630e+01 1.902630e+01 +-1.375000e+00 1.250000e-01 1.250000e-01 5.493000e+02 1.670748e+01 1.670748e+01 +-1.125000e+00 1.250000e-01 1.250000e-01 5.455000e+02 1.510530e+01 1.510530e+01 +-8.750000e-01 1.250000e-01 1.250000e-01 5.375000e+02 1.360588e+01 1.360588e+01 +-6.250000e-01 1.250000e-01 1.250000e-01 5.276000e+02 1.260635e+01 1.260635e+01 +-3.750000e-01 1.250000e-01 1.250000e-01 5.193000e+02 1.170684e+01 1.170684e+01 +-1.250000e-01 1.250000e-01 1.250000e-01 5.147000e+02 1.140702e+01 1.140702e+01 +1.250000e-01 1.250000e-01 1.250000e-01 5.147000e+02 1.140702e+01 1.140702e+01 +3.750000e-01 1.250000e-01 1.250000e-01 5.193000e+02 1.170684e+01 1.170684e+01 +6.250000e-01 1.250000e-01 1.250000e-01 5.276000e+02 1.260635e+01 1.260635e+01 +8.750000e-01 1.250000e-01 1.250000e-01 5.375000e+02 1.360588e+01 1.360588e+01 +1.125000e+00 1.250000e-01 1.250000e-01 5.455000e+02 1.510530e+01 1.510530e+01 +1.375000e+00 1.250000e-01 1.250000e-01 5.493000e+02 1.670748e+01 1.670748e+01 +1.625000e+00 1.250000e-01 1.250000e-01 5.490000e+02 1.902630e+01 1.902630e+01 +1.875000e+00 1.250000e-01 1.250000e-01 5.399000e+02 1.590503e+01 1.590503e+01 +2.125000e+00 1.250000e-01 1.250000e-01 5.220000e+02 2.350340e+01 2.350340e+01 +2.375000e+00 1.250000e-01 1.250000e-01 5.106000e+02 2.300543e+01 2.300543e+01 +2.625000e+00 1.250000e-01 1.250000e-01 5.026000e+02 2.270352e+01 2.270352e+01 +2.875000e+00 1.250000e-01 1.250000e-01 4.897000e+02 2.210362e+01 2.210362e+01 +3.125000e+00 1.250000e-01 1.250000e-01 4.827000e+02 2.180573e+01 2.180573e+01 +3.375000e+00 1.250000e-01 1.250000e-01 4.750000e+02 2.102380e+01 2.102380e+01 +3.625000e+00 1.250000e-01 1.250000e-01 4.400000e+02 3.001666e+01 2.901724e+01 +3.875000e+00 1.250000e-01 1.250000e-01 4.136000e+02 2.810160e+01 2.720165e+01 +4.125000e+00 1.250000e-01 1.250000e-01 3.867000e+02 2.630171e+01 2.540177e+01 +4.375000e+00 1.250000e-01 1.250000e-01 3.756000e+02 2.550176e+01 2.470182e+01 +4.625000e+00 1.250000e-01 1.250000e-01 3.680000e+02 2.500180e+01 2.420186e+01 +4.875000e+00 1.250000e-01 1.250000e-01 3.599000e+02 2.450327e+01 2.370338e+01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y06 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y06 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 3.020000e+02 1.403567e+01 1.403567e+01 +-3.125000e+00 1.250000e-01 1.250000e-01 3.063000e+02 1.380580e+01 1.380580e+01 +-2.875000e+00 1.250000e-01 1.250000e-01 3.101000e+02 1.400321e+01 1.400321e+01 +-2.625000e+00 1.250000e-01 1.250000e-01 3.179000e+02 1.430315e+01 1.430315e+01 +-2.375000e+00 1.250000e-01 1.250000e-01 3.223000e+02 1.450552e+01 1.450552e+01 +-2.125000e+00 1.250000e-01 1.250000e-01 3.276000e+02 1.480304e+01 1.480304e+01 +-1.875000e+00 1.250000e-01 1.250000e-01 3.351000e+02 9.304837e+00 9.304837e+00 +-1.625000e+00 1.250000e-01 1.250000e-01 3.400000e+02 1.104536e+01 1.104536e+01 +-1.375000e+00 1.250000e-01 1.250000e-01 3.402000e+02 9.608330e+00 9.608330e+00 +-1.125000e+00 1.250000e-01 1.250000e-01 3.377000e+02 8.705171e+00 8.705171e+00 +-8.750000e-01 1.250000e-01 1.250000e-01 3.325000e+02 7.905694e+00 7.905694e+00 +-6.250000e-01 1.250000e-01 1.250000e-01 3.263000e+02 7.406079e+00 7.406079e+00 +-3.750000e-01 1.250000e-01 1.250000e-01 3.207000e+02 7.006426e+00 7.006426e+00 +-1.250000e-01 1.250000e-01 1.250000e-01 3.175000e+02 6.706713e+00 6.706713e+00 +1.250000e-01 1.250000e-01 1.250000e-01 3.175000e+02 6.706713e+00 6.706713e+00 +3.750000e-01 1.250000e-01 1.250000e-01 3.207000e+02 7.006426e+00 7.006426e+00 +6.250000e-01 1.250000e-01 1.250000e-01 3.263000e+02 7.406079e+00 7.406079e+00 +8.750000e-01 1.250000e-01 1.250000e-01 3.325000e+02 7.905694e+00 7.905694e+00 +1.125000e+00 1.250000e-01 1.250000e-01 3.377000e+02 8.705171e+00 8.705171e+00 +1.375000e+00 1.250000e-01 1.250000e-01 3.402000e+02 9.608330e+00 9.608330e+00 +1.625000e+00 1.250000e-01 1.250000e-01 3.400000e+02 1.104536e+01 1.104536e+01 +1.875000e+00 1.250000e-01 1.250000e-01 3.351000e+02 9.304837e+00 9.304837e+00 +2.125000e+00 1.250000e-01 1.250000e-01 3.276000e+02 1.480304e+01 1.480304e+01 +2.375000e+00 1.250000e-01 1.250000e-01 3.223000e+02 1.450552e+01 1.450552e+01 +2.625000e+00 1.250000e-01 1.250000e-01 3.179000e+02 1.430315e+01 1.430315e+01 +2.875000e+00 1.250000e-01 1.250000e-01 3.101000e+02 1.400321e+01 1.400321e+01 +3.125000e+00 1.250000e-01 1.250000e-01 3.063000e+02 1.380580e+01 1.380580e+01 +3.375000e+00 1.250000e-01 1.250000e-01 3.020000e+02 1.403567e+01 1.403567e+01 +3.625000e+00 1.250000e-01 1.250000e-01 2.775000e+02 1.890661e+01 1.820687e+01 +3.875000e+00 1.250000e-01 1.250000e-01 2.613000e+02 1.780112e+01 1.720116e+01 +4.125000e+00 1.250000e-01 1.250000e-01 2.447000e+02 1.660120e+01 1.610124e+01 +4.375000e+00 1.250000e-01 1.250000e-01 2.384000e+02 1.620123e+01 1.570127e+01 +4.625000e+00 1.250000e-01 1.250000e-01 2.338000e+02 1.590126e+01 1.540130e+01 +4.875000e+00 1.250000e-01 1.250000e-01 2.294000e+02 1.560288e+01 1.510298e+01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y07 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y07 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 1.780000e+02 8.062258e+00 8.062258e+00 +-3.125000e+00 1.250000e-01 1.250000e-01 1.799000e+02 8.105554e+00 8.105554e+00 +-2.875000e+00 1.250000e-01 1.250000e-01 1.817000e+02 8.202439e+00 8.202439e+00 +-2.625000e+00 1.250000e-01 1.250000e-01 1.860000e+02 8.402381e+00 8.402381e+00 +-2.375000e+00 1.250000e-01 1.250000e-01 1.882000e+02 8.505292e+00 8.505292e+00 +-2.125000e+00 1.250000e-01 1.250000e-01 1.898000e+02 8.602325e+00 8.602325e+00 +-1.875000e+00 1.250000e-01 1.250000e-01 1.935000e+02 4.904080e+00 4.904080e+00 +-1.625000e+00 1.250000e-01 1.250000e-01 1.964000e+02 5.514526e+00 5.514526e+00 +-1.375000e+00 1.250000e-01 1.250000e-01 1.965000e+02 5.008992e+00 5.008992e+00 +-1.125000e+00 1.250000e-01 1.250000e-01 1.948000e+02 4.604346e+00 4.604346e+00 +-8.750000e-01 1.250000e-01 1.250000e-01 1.914000e+02 4.304649e+00 4.304649e+00 +-6.250000e-01 1.250000e-01 1.250000e-01 1.875000e+02 4.004997e+00 4.004997e+00 +-3.750000e-01 1.250000e-01 1.250000e-01 1.843000e+02 3.805260e+00 3.805260e+00 +-1.250000e-01 1.250000e-01 1.250000e-01 1.825000e+02 3.705401e+00 3.705401e+00 +1.250000e-01 1.250000e-01 1.250000e-01 1.825000e+02 3.705401e+00 3.705401e+00 +3.750000e-01 1.250000e-01 1.250000e-01 1.843000e+02 3.805260e+00 3.805260e+00 +6.250000e-01 1.250000e-01 1.250000e-01 1.875000e+02 4.004997e+00 4.004997e+00 +8.750000e-01 1.250000e-01 1.250000e-01 1.914000e+02 4.304649e+00 4.304649e+00 +1.125000e+00 1.250000e-01 1.250000e-01 1.948000e+02 4.604346e+00 4.604346e+00 +1.375000e+00 1.250000e-01 1.250000e-01 1.965000e+02 5.008992e+00 5.008992e+00 +1.625000e+00 1.250000e-01 1.250000e-01 1.964000e+02 5.514526e+00 5.514526e+00 +1.875000e+00 1.250000e-01 1.250000e-01 1.935000e+02 4.904080e+00 4.904080e+00 +2.125000e+00 1.250000e-01 1.250000e-01 1.898000e+02 8.602325e+00 8.602325e+00 +2.375000e+00 1.250000e-01 1.250000e-01 1.882000e+02 8.505292e+00 8.505292e+00 +2.625000e+00 1.250000e-01 1.250000e-01 1.860000e+02 8.402381e+00 8.402381e+00 +2.875000e+00 1.250000e-01 1.250000e-01 1.817000e+02 8.202439e+00 8.202439e+00 +3.125000e+00 1.250000e-01 1.250000e-01 1.799000e+02 8.105554e+00 8.105554e+00 +3.375000e+00 1.250000e-01 1.250000e-01 1.780000e+02 8.062258e+00 8.062258e+00 +3.625000e+00 1.250000e-01 1.250000e-01 1.632000e+02 1.110720e+01 1.070747e+01 +3.875000e+00 1.250000e-01 1.250000e-01 1.534000e+02 1.040048e+01 1.010050e+01 +4.125000e+00 1.250000e-01 1.250000e-01 1.438000e+02 9.800510e+00 9.500526e+00 +4.375000e+00 1.250000e-01 1.250000e-01 1.403000e+02 9.502105e+00 9.202174e+00 +4.625000e+00 1.250000e-01 1.250000e-01 1.387000e+02 9.402127e+00 9.102198e+00 +4.875000e+00 1.250000e-01 1.250000e-01 1.360000e+02 9.202174e+00 8.902247e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y08 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y08 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 9.490000e+01 4.318565e+00 4.318565e+00 +-3.125000e+00 1.250000e-01 1.250000e-01 9.610000e+01 4.304649e+00 4.304649e+00 +-2.875000e+00 1.250000e-01 1.250000e-01 9.680000e+01 4.404543e+00 4.404543e+00 +-2.625000e+00 1.250000e-01 1.250000e-01 9.830000e+01 4.404543e+00 4.404543e+00 +-2.375000e+00 1.250000e-01 1.250000e-01 9.880000e+01 4.504442e+00 4.504442e+00 +-2.125000e+00 1.250000e-01 1.250000e-01 9.910000e+01 4.504442e+00 4.504442e+00 +-1.875000e+00 1.250000e-01 1.250000e-01 1.012000e+02 2.308679e+00 2.308679e+00 +-1.625000e+00 1.250000e-01 1.250000e-01 1.027000e+02 2.517936e+00 2.517936e+00 +-1.375000e+00 1.250000e-01 1.250000e-01 1.031000e+02 2.308679e+00 2.308679e+00 +-1.125000e+00 1.250000e-01 1.250000e-01 1.020000e+02 2.209072e+00 2.209072e+00 +-8.750000e-01 1.250000e-01 1.250000e-01 1.003000e+02 2.109502e+00 2.109502e+00 +-6.250000e-01 1.250000e-01 1.250000e-01 9.800000e+01 2.009975e+00 2.009975e+00 +-3.750000e-01 1.250000e-01 1.250000e-01 9.610000e+01 1.902630e+00 1.902630e+00 +-1.250000e-01 1.250000e-01 1.250000e-01 9.520000e+01 1.902630e+00 1.902630e+00 +1.250000e-01 1.250000e-01 1.250000e-01 9.520000e+01 1.902630e+00 1.902630e+00 +3.750000e-01 1.250000e-01 1.250000e-01 9.610000e+01 1.902630e+00 1.902630e+00 +6.250000e-01 1.250000e-01 1.250000e-01 9.800000e+01 2.009975e+00 2.009975e+00 +8.750000e-01 1.250000e-01 1.250000e-01 1.003000e+02 2.109502e+00 2.109502e+00 +1.125000e+00 1.250000e-01 1.250000e-01 1.020000e+02 2.209072e+00 2.209072e+00 +1.375000e+00 1.250000e-01 1.250000e-01 1.031000e+02 2.308679e+00 2.308679e+00 +1.625000e+00 1.250000e-01 1.250000e-01 1.027000e+02 2.517936e+00 2.517936e+00 +1.875000e+00 1.250000e-01 1.250000e-01 1.012000e+02 2.308679e+00 2.308679e+00 +2.125000e+00 1.250000e-01 1.250000e-01 9.910000e+01 4.504442e+00 4.504442e+00 +2.375000e+00 1.250000e-01 1.250000e-01 9.880000e+01 4.504442e+00 4.504442e+00 +2.625000e+00 1.250000e-01 1.250000e-01 9.830000e+01 4.404543e+00 4.404543e+00 +2.875000e+00 1.250000e-01 1.250000e-01 9.680000e+01 4.404543e+00 4.404543e+00 +3.125000e+00 1.250000e-01 1.250000e-01 9.610000e+01 4.304649e+00 4.304649e+00 +3.375000e+00 1.250000e-01 1.250000e-01 9.490000e+01 4.318565e+00 4.318565e+00 +3.625000e+00 1.250000e-01 1.250000e-01 8.680000e+01 5.903389e+00 5.703508e+00 +3.875000e+00 1.250000e-01 1.250000e-01 8.190000e+01 5.600893e+00 5.400926e+00 +4.125000e+00 1.250000e-01 1.250000e-01 7.730000e+01 5.300943e+00 5.100980e+00 +4.375000e+00 1.250000e-01 1.250000e-01 7.580000e+01 5.200961e+00 5.001000e+00 +4.625000e+00 1.250000e-01 1.250000e-01 7.510000e+01 5.100980e+00 4.901020e+00 +4.875000e+00 1.250000e-01 1.250000e-01 7.380000e+01 5.003998e+00 4.804165e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y09 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y09 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 4.540000e+01 2.009975e+00 2.009975e+00 +-3.125000e+00 1.250000e-01 1.250000e-01 4.600000e+01 2.102380e+00 2.102380e+00 +-2.875000e+00 1.250000e-01 1.250000e-01 4.600000e+01 2.102380e+00 2.102380e+00 +-2.625000e+00 1.250000e-01 1.250000e-01 4.650000e+01 2.102380e+00 2.102380e+00 +-2.375000e+00 1.250000e-01 1.250000e-01 4.680000e+01 2.102380e+00 2.102380e+00 +-2.125000e+00 1.250000e-01 1.250000e-01 4.670000e+01 2.102380e+00 2.102380e+00 +-1.875000e+00 1.250000e-01 1.250000e-01 4.730000e+01 9.055385e-01 9.055385e-01 +-1.625000e+00 1.250000e-01 1.250000e-01 4.790000e+01 1.019804e+00 1.019804e+00 +-1.375000e+00 1.250000e-01 1.250000e-01 4.820000e+01 1.004988e+00 1.004988e+00 +-1.125000e+00 1.250000e-01 1.250000e-01 4.760000e+01 9.055385e-01 9.055385e-01 +-8.750000e-01 1.250000e-01 1.250000e-01 4.670000e+01 9.055385e-01 9.055385e-01 +-6.250000e-01 1.250000e-01 1.250000e-01 4.550000e+01 9.055385e-01 9.055385e-01 +-3.750000e-01 1.250000e-01 1.250000e-01 4.460000e+01 8.062258e-01 8.062258e-01 +-1.250000e-01 1.250000e-01 1.250000e-01 4.410000e+01 8.062258e-01 8.062258e-01 +1.250000e-01 1.250000e-01 1.250000e-01 4.410000e+01 8.062258e-01 8.062258e-01 +3.750000e-01 1.250000e-01 1.250000e-01 4.460000e+01 8.062258e-01 8.062258e-01 +6.250000e-01 1.250000e-01 1.250000e-01 4.550000e+01 9.055385e-01 9.055385e-01 +8.750000e-01 1.250000e-01 1.250000e-01 4.670000e+01 9.055385e-01 9.055385e-01 +1.125000e+00 1.250000e-01 1.250000e-01 4.760000e+01 9.055385e-01 9.055385e-01 +1.375000e+00 1.250000e-01 1.250000e-01 4.820000e+01 1.004988e+00 1.004988e+00 +1.625000e+00 1.250000e-01 1.250000e-01 4.790000e+01 1.019804e+00 1.019804e+00 +1.875000e+00 1.250000e-01 1.250000e-01 4.730000e+01 9.055385e-01 9.055385e-01 +2.125000e+00 1.250000e-01 1.250000e-01 4.670000e+01 2.102380e+00 2.102380e+00 +2.375000e+00 1.250000e-01 1.250000e-01 4.680000e+01 2.102380e+00 2.102380e+00 +2.625000e+00 1.250000e-01 1.250000e-01 4.650000e+01 2.102380e+00 2.102380e+00 +2.875000e+00 1.250000e-01 1.250000e-01 4.600000e+01 2.102380e+00 2.102380e+00 +3.125000e+00 1.250000e-01 1.250000e-01 4.600000e+01 2.102380e+00 2.102380e+00 +3.375000e+00 1.250000e-01 1.250000e-01 4.540000e+01 2.009975e+00 2.009975e+00 +3.625000e+00 1.250000e-01 1.250000e-01 4.140000e+01 2.807134e+00 2.707397e+00 +3.875000e+00 1.250000e-01 1.250000e-01 3.930000e+01 2.701851e+00 2.601922e+00 +4.125000e+00 1.250000e-01 1.250000e-01 3.740000e+01 2.501999e+00 2.501999e+00 +4.375000e+00 1.250000e-01 1.250000e-01 3.680000e+01 2.501999e+00 2.402082e+00 +4.625000e+00 1.250000e-01 1.250000e-01 3.660000e+01 2.501999e+00 2.402082e+00 +4.875000e+00 1.250000e-01 1.250000e-01 3.570000e+01 2.402082e+00 2.302173e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d01-x01-y10 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d01-x01-y10 +Title: doi:10.17182/hepdata.78365.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.375000e+00 1.250000e-01 1.250000e-01 1.870000e+01 8.246211e-01 8.246211e-01 +-3.125000e+00 1.250000e-01 1.250000e-01 1.870000e+01 8.062258e-01 8.062258e-01 +-2.875000e+00 1.250000e-01 1.250000e-01 1.860000e+01 8.062258e-01 8.062258e-01 +-2.625000e+00 1.250000e-01 1.250000e-01 1.870000e+01 8.062258e-01 8.062258e-01 +-2.375000e+00 1.250000e-01 1.250000e-01 1.860000e+01 8.062258e-01 8.062258e-01 +-2.125000e+00 1.250000e-01 1.250000e-01 1.860000e+01 8.062258e-01 8.062258e-01 +-1.875000e+00 1.250000e-01 1.250000e-01 1.920000e+01 3.162278e-01 3.162278e-01 +-1.625000e+00 1.250000e-01 1.250000e-01 1.910000e+01 5.000000e-01 5.000000e-01 +-1.375000e+00 1.250000e-01 1.250000e-01 1.920000e+01 4.472136e-01 4.472136e-01 +-1.125000e+00 1.250000e-01 1.250000e-01 1.890000e+01 4.472136e-01 4.472136e-01 +-8.750000e-01 1.250000e-01 1.250000e-01 1.850000e+01 4.472136e-01 4.472136e-01 +-6.250000e-01 1.250000e-01 1.250000e-01 1.800000e+01 3.162278e-01 3.162278e-01 +-3.750000e-01 1.250000e-01 1.250000e-01 1.760000e+01 3.162278e-01 3.162278e-01 +-1.250000e-01 1.250000e-01 1.250000e-01 1.740000e+01 3.162278e-01 3.162278e-01 +1.250000e-01 1.250000e-01 1.250000e-01 1.740000e+01 3.162278e-01 3.162278e-01 +3.750000e-01 1.250000e-01 1.250000e-01 1.760000e+01 3.162278e-01 3.162278e-01 +6.250000e-01 1.250000e-01 1.250000e-01 1.800000e+01 3.162278e-01 3.162278e-01 +8.750000e-01 1.250000e-01 1.250000e-01 1.850000e+01 4.472136e-01 4.472136e-01 +1.125000e+00 1.250000e-01 1.250000e-01 1.890000e+01 4.472136e-01 4.472136e-01 +1.375000e+00 1.250000e-01 1.250000e-01 1.920000e+01 4.472136e-01 4.472136e-01 +1.625000e+00 1.250000e-01 1.250000e-01 1.910000e+01 5.000000e-01 5.000000e-01 +1.875000e+00 1.250000e-01 1.250000e-01 1.920000e+01 3.162278e-01 3.162278e-01 +2.125000e+00 1.250000e-01 1.250000e-01 1.860000e+01 8.062258e-01 8.062258e-01 +2.375000e+00 1.250000e-01 1.250000e-01 1.860000e+01 8.062258e-01 8.062258e-01 +2.625000e+00 1.250000e-01 1.250000e-01 1.870000e+01 8.062258e-01 8.062258e-01 +2.875000e+00 1.250000e-01 1.250000e-01 1.860000e+01 8.062258e-01 8.062258e-01 +3.125000e+00 1.250000e-01 1.250000e-01 1.870000e+01 8.062258e-01 8.062258e-01 +3.375000e+00 1.250000e-01 1.250000e-01 1.870000e+01 8.246211e-01 8.246211e-01 +3.625000e+00 1.250000e-01 1.250000e-01 1.710000e+01 1.204159e+00 1.104536e+00 +3.875000e+00 1.250000e-01 1.250000e-01 1.627000e+01 1.111126e+00 1.071168e+00 +4.125000e+00 1.250000e-01 1.250000e-01 1.546000e+01 1.051190e+00 1.021225e+00 +4.375000e+00 1.250000e-01 1.250000e-01 1.547000e+01 1.051190e+00 1.021225e+00 +4.625000e+00 1.250000e-01 1.250000e-01 1.560000e+01 1.104536e+00 1.004988e+00 +4.875000e+00 1.250000e-01 1.250000e-01 1.540000e+01 1.004988e+00 1.004988e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d02-x01-y01 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d02-x01-y01 +Title: doi:10.17182/hepdata.78365.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +7.320000e+00 1.000000e-01 1.000000e-01 1.752000e+01 1.001249e+00 1.001249e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d03-x01-y01 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d03-x01-y01 +Title: doi:10.17182/hepdata.78365.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +7.320000e+00 1.000000e-01 1.000000e-01 2.300000e+02 2.828427e+01 2.828427e+01 +1.540200e+01 2.000000e-01 2.000000e-01 5.600000e+02 7.071068e+01 7.071068e+01 +2.958100e+01 4.000000e-01 4.000000e-01 1.180000e+03 1.140175e+02 1.140175e+02 +5.307000e+01 1.000000e+00 1.000000e+00 2.200000e+03 1.414214e+02 1.414214e+02 +8.543000e+01 1.000000e+00 1.000000e+00 3.800000e+03 2.236068e+02 2.236068e+02 +1.297020e+02 1.000000e+00 1.000000e+00 6.000000e+03 3.162278e+02 3.162278e+02 +1.874000e+02 1.000000e+00 1.000000e+00 9.100000e+03 5.573150e+02 5.573150e+02 +2.632050e+02 2.000000e+00 2.000000e+00 1.342000e+04 9.013878e+02 9.013878e+02 +3.328040e+02 1.000000e+00 1.000000e+00 1.777000e+04 1.280156e+03 1.280156e+03 +3.893007e+02 5.000000e-01 5.000000e-01 2.149000e+04 1.460137e+03 1.460137e+03 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d04-x01-y01 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d04-x01-y01 +Title: doi:10.17182/hepdata.78365.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-3.170000e+00 1.200000e-01 1.200000e-01 1.650000e+03 7.000000e+01 7.000000e+01 +-2.970000e+00 1.200000e-01 1.200000e-01 1.680000e+03 8.000000e+01 8.000000e+01 +-2.680000e+00 1.100000e-01 1.100000e-01 1.730000e+03 8.000000e+01 8.000000e+01 +-2.475000e+00 1.150000e-01 1.150000e-01 1.800000e+03 8.000000e+01 8.000000e+01 +-2.175000e+00 1.150000e-01 1.150000e-01 1.860000e+03 8.000000e+01 8.000000e+01 +-1.980000e+00 1.200000e-01 1.200000e-01 1.950000e+03 9.000000e+01 9.000000e+01 +-1.695000e+00 1.250000e-01 1.250000e-01 2.030000e+03 7.000000e+01 7.000000e+01 +-1.495000e+00 1.150000e-01 1.150000e-01 2.080000e+03 8.000000e+01 8.000000e+01 +-1.210000e+00 1.100000e-01 1.100000e-01 2.140000e+03 8.000000e+01 8.000000e+01 +-1.020000e+00 1.100000e-01 1.100000e-01 2.170000e+03 7.000000e+01 7.000000e+01 +-7.450000e-01 1.050000e-01 1.050000e-01 2.200000e+03 6.000000e+01 6.000000e+01 +-5.650000e-01 1.150000e-01 1.150000e-01 2.210000e+03 6.000000e+01 6.000000e+01 +-3.000000e-01 1.000000e-01 1.000000e-01 2.230000e+03 6.000000e+01 6.000000e+01 +-1.000000e-01 1.000000e-01 1.000000e-01 2.240000e+03 6.000000e+01 6.000000e+01 +1.000000e-01 1.000000e-01 1.000000e-01 2.240000e+03 6.000000e+01 6.000000e+01 +3.000000e-01 1.000000e-01 1.000000e-01 2.230000e+03 6.000000e+01 6.000000e+01 +5.650000e-01 1.150000e-01 1.150000e-01 2.210000e+03 6.000000e+01 6.000000e+01 +7.450000e-01 1.050000e-01 1.050000e-01 2.200000e+03 6.000000e+01 6.000000e+01 +1.020000e+00 1.100000e-01 1.100000e-01 2.170000e+03 7.000000e+01 7.000000e+01 +1.210000e+00 1.100000e-01 1.100000e-01 2.140000e+03 8.000000e+01 8.000000e+01 +1.495000e+00 1.150000e-01 1.150000e-01 2.080000e+03 8.000000e+01 8.000000e+01 +1.695000e+00 1.250000e-01 1.250000e-01 2.030000e+03 7.000000e+01 7.000000e+01 +1.980000e+00 1.200000e-01 1.200000e-01 1.950000e+03 9.000000e+01 9.000000e+01 +2.175000e+00 1.150000e-01 1.150000e-01 1.860000e+03 8.000000e+01 8.000000e+01 +2.475000e+00 1.150000e-01 1.150000e-01 1.800000e+03 8.000000e+01 8.000000e+01 +2.680000e+00 1.100000e-01 1.100000e-01 1.730000e+03 8.000000e+01 8.000000e+01 +2.970000e+00 1.200000e-01 1.200000e-01 1.680000e+03 8.000000e+01 8.000000e+01 +3.170000e+00 1.200000e-01 1.200000e-01 1.650000e+03 7.000000e+01 7.000000e+01 +3.470000e+00 1.200000e-01 1.200000e-01 1.600000e+03 1.000000e+02 1.000000e+02 +3.670000e+00 1.200000e-01 1.200000e-01 1.500000e+03 1.000000e+02 1.000000e+02 +3.970000e+00 1.200000e-01 1.200000e-01 1.370000e+03 9.000000e+01 9.000000e+01 +4.170000e+00 1.200000e-01 1.200000e-01 1.320000e+03 9.000000e+01 9.000000e+01 +4.470000e+00 1.200000e-01 1.200000e-01 1.280000e+03 9.000000e+01 8.000000e+01 +4.670000e+00 1.200000e-01 1.200000e-01 1.240000e+03 8.000000e+01 8.000000e+01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d05-x01-y01 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d05-x01-y01 +Title: doi:10.17182/hepdata.78365.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.023000e+03 0.000000e+00 0.000000e+00 4.100000e+00 1.000000e-01 1.000000e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d05-x01-y02 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d05-x01-y02 +Title: doi:10.17182/hepdata.78365.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.023000e+03 0.000000e+00 0.000000e+00 2.800000e+00 0.000000e+00 0.000000e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507090/d05-x01-y03 +IsRef: 1 +Path: /REF/ALICE_2016_I1507090/d05-x01-y03 +Title: doi:10.17182/hepdata.78365.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.023000e+03 0.000000e+00 0.000000e+00 8.600000e+00 0.000000e+00 0.000000e+00 +END YODA_SCATTER2D_V2 diff --git a/analyses/pluginALICE/ALICE_2016_I1507157.cc b/analyses/pluginALICE/ALICE_2016_I1507157.cc new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1507157.cc @@ -0,0 +1,143 @@ +// -*- C++ -*- +#include "Rivet/Analysis.hh" +#include "Rivet/Tools/AliceCommon.hh" +#include "Rivet/Projections/PrimaryParticles.hh" +#include "Rivet/Projections/ChargedFinalState.hh" +#include "Rivet/Projections/MixedFinalState.hh" +namespace Rivet { + + + /// @brief Add a short analysis description here + class ALICE_2016_I1507157 : public Analysis { + public: + + /// Constructor + DEFAULT_RIVET_ANALYSIS_CTOR(ALICE_2016_I1507157); + + + /// @name Analysis methods + //@{ + + /// @brief Calculate angular distance between particles. + double phaseDif(double a1, double a2){ + double dif = a1 - a2; + while (dif < -M_PI/2) + dif += 2*M_PI; + while (dif > 3*M_PI/2) + dif -= 2*M_PI; + return dif; + } + + /// Book histograms and initialise projections before the run + void init() { + + double etamax = 0.8; + double pTmin = 0.1; // GeV + + // Charged tracks used to manage the mixing observable. + ChargedFinalState cfsMult(Cuts::abseta < etamax); + addProjection(cfsMult, "CFSMult"); + + // Primary particles. + + PrimaryParticles pp({Rivet::PID::PIPLUS, Rivet::PID::KPLUS, + Rivet::PID::K0S, Rivet::PID::K0L, Rivet::PID::PROTON, + Rivet::PID::NEUTRON, Rivet::PID::LAMBDA, Rivet::PID::SIGMAMINUS, + Rivet::PID::SIGMAPLUS, Rivet::PID::XIMINUS, Rivet::PID::XI0, + Rivet::PID::OMEGAMINUS},Cuts::abseta < etamax && Cuts::pT > pTmin*GeV); + addProjection(pp,"APRIM"); + + // The event mixing projection + declare(MixedFinalState(cfsMult, pp, 5, 0, 100, 10),"EVM"); + + // Book histograms + _h_protonRatio = bookScatter2D(2, 1, 2, true); + _h_protonSignal = bookHisto1D("protonSignal",*_h_protonRatio,"protonSignal"); + _h_protonBackground = bookHisto1D("protonBackground",*_h_protonRatio,"protonBackground"); + nmp = 0; + nsp = 0; + + } + + + /// Perform the per-event analysis + void analyze(const Event& event) { + const double weight = event.weight(); + + // The projections + const PrimaryParticles& pp = applyProjection(event,"APRIM"); + const MixedFinalState& evm = applyProjection(event, "EVM"); + + // Get all mixing events + vector mixEvents = evm.getMixingEvents(); + + // If there are not enough events to mix, don't fill any histograms + if(mixEvents.size() == 0) + return; + + // Make a vector of mixed event particles + vector mixParticles; + size_t pSize = 0; + for(size_t i = 0; i < mixEvents.size(); ++i) + pSize+=mixEvents[i].size(); + mixParticles.reserve(pSize); + for(size_t i = 0; i < mixEvents.size(); ++i) + mixParticles.insert(mixParticles.end(), mixEvents[i].begin(), + mixEvents[i].end()); + + // Shuffle the particles in the mixing events + random_shuffle(mixParticles.begin(), mixParticles.end()); + + for(const Particle& p1 : pp.particles()){ + // Start by doing the signal distribution + for(const Particle& p2 : pp.particles() ){ + if(p1 == p2) + continue; + nsp+=1.0; + double dEta = abs(p1.eta() - p2.eta()); + double dPhi = phaseDif(p1.phi(), p2.phi()); + if(dEta < 1.3 && p1.pid() == 2212 && p2.pid() == -2212){ + _h_protonSignal->fill(dPhi,weight); + } + } + // Then do the background distribution + for(const Particle& pMix : mixParticles){ + nmp+=1.0; + double dEta = abs(p1.eta() - pMix.eta()); + double dPhi = phaseDif(p1.phi(), pMix.phi()); + if(dEta < 1.3 && p1.pid() == 2212 && pMix.pid() == -2212){ + _h_protonBackground->fill(dPhi,weight); + } + } + } + } + + + /// Normalise histograms etc., after the run + void finalize() { + double sc = nmp / nsp; + scale(_h_protonSignal,sc); + divide(_h_protonSignal,_h_protonBackground,_h_protonRatio); + scale(_h_protonSignal,1.0/sc); + } + + //@} + + + /// @name Histograms + //@{ + Histo1DPtr _h_protonSignal; + Histo1DPtr _h_protonBackground; + Scatter2DPtr _h_protonRatio; + double nmp, nsp; + //@} + + + }; + + + // The hook for the plugin system + DECLARE_RIVET_PLUGIN(ALICE_2016_I1507157); + + +} diff --git a/analyses/pluginALICE/ALICE_2016_I1507157.info b/analyses/pluginALICE/ALICE_2016_I1507157.info new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1507157.info @@ -0,0 +1,48 @@ +Name: ALICE_2016_I1507157 +Year: 2016 +Summary: +Experiment: ALICE +Collider: LHC +InspireID: 1507157 +Status: UNVALIDATED +Authors: + - Your Name +#References: +#- '' +#- '' +#- '' +RunInfo: +NeedCrossSection: no +#Beams: +#Energies: +#Luminosity_fb: +Description: + ' 50\;\GeV$.>' +Keywords: [] +BibKey: Adam:2016iwf +BibTeX: '%%% contains utf-8, see: http://inspirehep.net/info/faq/general#utf8 +%%% add \usepackage[utf8]{inputenc} to your latex preamble + +@article{Adam:2016iwf, + author = "Adam, Jaroslav and others", + title = "{Insight into particle production mechanisms via angular + correlations of identified particles in pp collisions at + $\sqrt{\mathrm{s}}=7$  TeV}", + collaboration = "ALICE", + journal = "Eur. Phys. J.", + volume = "C77", + year = "2017", + number = "8", + pages = "569", + doi = "10.1140/epjc/s10052-017-5129-6", + eprint = "1612.08975", + archivePrefix = "arXiv", + primaryClass = "nucl-ex", + reportNumber = "CERN-EP-2016-322", + SLACcitation = "%%CITATION = ARXIV:1612.08975;%%" +}' +ToDo: + - Implement the analysis, test it, remove this ToDo, and mark as VALIDATED :-) + diff --git a/analyses/pluginALICE/ALICE_2016_I1507157.plot b/analyses/pluginALICE/ALICE_2016_I1507157.plot new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1507157.plot @@ -0,0 +1,8 @@ +BEGIN PLOT /ALICE_2016_I1507157/d01-x01-y01 +Title=[Insert title for histogram d01-x01-y01 here] +XLabel=[Insert $x$-axis label for histogram d01-x01-y01 here] +YLabel=[Insert $y$-axis label for histogram d01-x01-y01 here] +# + any additional plot settings you might like, see make-plots documentation +END PLOT + +# ... add more histograms as you need them ... diff --git a/analyses/pluginALICE/ALICE_2016_I1507157.yoda b/analyses/pluginALICE/ALICE_2016_I1507157.yoda new file mode 100644 --- /dev/null +++ b/analyses/pluginALICE/ALICE_2016_I1507157.yoda @@ -0,0 +1,563 @@ +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d04-x01-y03 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d04-x01-y03 +Title: doi:10.17182/hepdata.78803.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.300000e+00 1.600000e-01 1.100000e-01 9.306000e-01 1.522367e-02 1.522367e-02 +-1.080000e+00 1.100000e-01 1.050000e-01 9.833000e-01 1.524106e-02 1.524106e-02 +-8.700000e-01 1.050000e-01 1.100000e-01 1.048400e+00 1.525910e-02 1.525910e-02 +-6.500000e-01 1.100000e-01 1.100000e-01 1.141200e+00 1.527776e-02 1.527776e-02 +-4.300000e-01 1.100000e-01 1.050000e-01 1.249600e+00 1.531698e-02 1.531698e-02 +-2.200000e-01 1.050000e-01 1.100000e-01 1.336900e+00 1.533754e-02 1.533754e-02 +0.000000e+00 1.100000e-01 1.100000e-01 1.378200e+00 1.535871e-02 1.535871e-02 +2.200000e-01 1.100000e-01 1.050000e-01 1.337000e+00 1.533754e-02 1.533754e-02 +4.300000e-01 1.050000e-01 1.100000e-01 1.241900e+00 1.531698e-02 1.531698e-02 +6.500000e-01 1.100000e-01 1.100000e-01 1.137500e+00 1.527776e-02 1.527776e-02 +8.700000e-01 1.100000e-01 1.050000e-01 1.042900e+00 1.525910e-02 1.525910e-02 +1.080000e+00 1.050000e-01 1.100000e-01 9.800000e-01 1.524106e-02 1.524106e-02 +1.300000e+00 1.100000e-01 1.100000e-01 9.350000e-01 1.524106e-02 1.524106e-02 +1.520000e+00 1.100000e-01 1.050000e-01 9.034000e-01 1.522367e-02 1.522367e-02 +1.730000e+00 1.050000e-01 1.100000e-01 8.869000e-01 1.522367e-02 1.522367e-02 +1.950000e+00 1.100000e-01 1.100000e-01 8.795000e-01 1.522367e-02 1.522367e-02 +2.170000e+00 1.100000e-01 1.050000e-01 8.805000e-01 1.522367e-02 1.522367e-02 +2.380000e+00 1.050000e-01 1.100000e-01 8.891000e-01 1.522367e-02 1.522367e-02 +2.600000e+00 1.100000e-01 1.100000e-01 8.909000e-01 1.522367e-02 1.522367e-02 +2.820000e+00 1.100000e-01 1.050000e-01 8.907000e-01 1.522367e-02 1.522367e-02 +3.030000e+00 1.050000e-01 1.100000e-01 8.931000e-01 1.522367e-02 1.522367e-02 +3.250000e+00 1.100000e-01 1.100000e-01 8.841000e-01 1.522367e-02 1.522367e-02 +3.470000e+00 1.100000e-01 1.050000e-01 8.941000e-01 1.522367e-02 1.522367e-02 +3.680000e+00 1.050000e-01 1.100000e-01 8.945000e-01 1.522367e-02 1.522367e-02 +3.900000e+00 1.100000e-01 1.100000e-01 8.767000e-01 1.522367e-02 1.522367e-02 +4.120000e+00 1.100000e-01 1.050000e-01 8.791000e-01 1.522367e-02 1.522367e-02 +4.330000e+00 1.050000e-01 1.100000e-01 8.753000e-01 1.522367e-02 1.522367e-02 +4.550000e+00 1.100000e-01 1.100000e-01 8.879000e-01 1.522367e-02 1.522367e-02 +4.770000e+00 1.100000e-01 3.732000e-01 9.105000e-01 1.522367e-02 1.522367e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d04-x01-y02 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d04-x01-y02 +Title: doi:10.17182/hepdata.78803.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.300000e+00 1.600000e-01 1.100000e-01 9.270000e-01 1.505623e-02 1.505623e-02 +-1.080000e+00 1.100000e-01 1.050000e-01 9.496000e-01 1.505623e-02 1.505623e-02 +-8.700000e-01 1.050000e-01 1.100000e-01 9.878000e-01 1.505623e-02 1.505623e-02 +-6.500000e-01 1.100000e-01 1.100000e-01 1.073500e+00 1.506519e-02 1.506519e-02 +-4.300000e-01 1.100000e-01 1.050000e-01 1.188100e+00 1.507481e-02 1.507481e-02 +-2.200000e-01 1.050000e-01 1.100000e-01 1.395800e+00 1.508509e-02 1.508509e-02 +0.000000e+00 1.100000e-01 1.100000e-01 1.535200e+00 1.509603e-02 1.509603e-02 +2.200000e-01 1.100000e-01 1.050000e-01 1.391700e+00 1.508509e-02 1.508509e-02 +4.300000e-01 1.050000e-01 1.100000e-01 1.183900e+00 1.507481e-02 1.507481e-02 +6.500000e-01 1.100000e-01 1.100000e-01 1.073300e+00 1.506519e-02 1.506519e-02 +8.700000e-01 1.100000e-01 1.050000e-01 9.892000e-01 1.505623e-02 1.505623e-02 +1.080000e+00 1.050000e-01 1.100000e-01 9.527000e-01 1.505623e-02 1.505623e-02 +1.300000e+00 1.100000e-01 1.100000e-01 9.251000e-01 1.505623e-02 1.505623e-02 +1.520000e+00 1.100000e-01 1.050000e-01 9.090000e-01 1.505623e-02 1.505623e-02 +1.730000e+00 1.050000e-01 1.100000e-01 8.960000e-01 1.505623e-02 1.505623e-02 +1.950000e+00 1.100000e-01 1.100000e-01 8.954000e-01 1.505623e-02 1.505623e-02 +2.170000e+00 1.100000e-01 1.050000e-01 8.950000e-01 1.505623e-02 1.505623e-02 +2.380000e+00 1.050000e-01 1.100000e-01 8.980000e-01 1.505623e-02 1.505623e-02 +2.600000e+00 1.100000e-01 1.100000e-01 9.024000e-01 1.505623e-02 1.505623e-02 +2.820000e+00 1.100000e-01 1.050000e-01 9.024000e-01 1.505623e-02 1.505623e-02 +3.030000e+00 1.050000e-01 1.100000e-01 9.032000e-01 1.505623e-02 1.505623e-02 +3.250000e+00 1.100000e-01 1.100000e-01 9.065000e-01 1.505623e-02 1.505623e-02 +3.470000e+00 1.100000e-01 1.050000e-01 9.045000e-01 1.505623e-02 1.505623e-02 +3.680000e+00 1.050000e-01 1.100000e-01 9.020000e-01 1.505623e-02 1.505623e-02 +3.900000e+00 1.100000e-01 1.100000e-01 8.950000e-01 1.505623e-02 1.505623e-02 +4.120000e+00 1.100000e-01 1.050000e-01 8.950000e-01 1.505623e-02 1.505623e-02 +4.330000e+00 1.050000e-01 1.100000e-01 8.953000e-01 1.505623e-02 1.505623e-02 +4.550000e+00 1.100000e-01 1.100000e-01 9.023000e-01 1.505623e-02 1.505623e-02 +4.770000e+00 1.100000e-01 3.732000e-01 9.046000e-01 1.505623e-02 1.505623e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d04-x01-y01 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d04-x01-y01 +Title: doi:10.17182/hepdata.78803.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.300000e+00 1.600000e-01 1.100000e-01 9.929350e-01 5.000865e-03 5.000865e-03 +-1.080000e+00 1.100000e-01 1.050000e-01 1.006180e+00 5.000884e-03 5.000884e-03 +-8.700000e-01 1.050000e-01 1.100000e-01 1.022440e+00 5.000902e-03 5.000902e-03 +-6.500000e-01 1.100000e-01 1.100000e-01 1.039540e+00 5.001000e-03 5.001000e-03 +-4.300000e-01 1.100000e-01 1.050000e-01 1.055350e+00 5.001000e-03 5.001000e-03 +-2.200000e-01 1.050000e-01 1.100000e-01 1.067480e+00 5.001000e-03 5.001000e-03 +0.000000e+00 1.100000e-01 1.100000e-01 1.072200e+00 5.001000e-03 5.001000e-03 +2.200000e-01 1.100000e-01 1.050000e-01 1.067990e+00 5.001000e-03 5.001000e-03 +4.300000e-01 1.050000e-01 1.100000e-01 1.054940e+00 5.001000e-03 5.001000e-03 +6.500000e-01 1.100000e-01 1.100000e-01 1.039360e+00 5.001000e-03 5.001000e-03 +8.700000e-01 1.100000e-01 1.050000e-01 1.022188e+00 5.000902e-03 5.000902e-03 +1.080000e+00 1.050000e-01 1.100000e-01 1.006296e+00 5.000884e-03 5.000884e-03 +1.300000e+00 1.100000e-01 1.100000e-01 9.928740e-01 5.000865e-03 5.000865e-03 +1.520000e+00 1.100000e-01 1.050000e-01 9.826540e-01 5.000865e-03 5.000865e-03 +1.730000e+00 1.050000e-01 1.100000e-01 9.753340e-01 5.000865e-03 5.000865e-03 +1.950000e+00 1.100000e-01 1.100000e-01 9.708730e-01 5.000846e-03 5.000846e-03 +2.170000e+00 1.100000e-01 1.050000e-01 9.693140e-01 5.000846e-03 5.000846e-03 +2.380000e+00 1.050000e-01 1.100000e-01 9.691550e-01 5.000846e-03 5.000846e-03 +2.600000e+00 1.100000e-01 1.100000e-01 9.696880e-01 5.000846e-03 5.000846e-03 +2.820000e+00 1.100000e-01 1.050000e-01 9.711920e-01 5.000846e-03 5.000846e-03 +3.030000e+00 1.050000e-01 1.100000e-01 9.716970e-01 5.000846e-03 5.000846e-03 +3.250000e+00 1.100000e-01 1.100000e-01 9.715290e-01 5.000846e-03 5.000846e-03 +3.470000e+00 1.100000e-01 1.050000e-01 9.708310e-01 5.000846e-03 5.000846e-03 +3.680000e+00 1.050000e-01 1.100000e-01 9.698640e-01 5.000846e-03 5.000846e-03 +3.900000e+00 1.100000e-01 1.100000e-01 9.692410e-01 5.000846e-03 5.000846e-03 +4.120000e+00 1.100000e-01 1.050000e-01 9.692000e-01 5.000846e-03 5.000846e-03 +4.330000e+00 1.050000e-01 1.100000e-01 9.711250e-01 5.000846e-03 5.000846e-03 +4.550000e+00 1.100000e-01 1.100000e-01 9.755100e-01 5.000865e-03 5.000865e-03 +4.770000e+00 1.100000e-01 3.732000e-01 9.825610e-01 5.000865e-03 5.000865e-03 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d02-x01-y01 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d02-x01-y01 +Title: doi:10.17182/hepdata.78803.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 9.796000e-01 1.538051e-02 1.538051e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 1.066900e+00 1.542595e-02 1.542595e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 1.190000e+00 1.547385e-02 1.547385e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 1.325600e+00 1.552417e-02 1.552417e-02 +0.000000e+00 1.350000e-01 1.350000e-01 1.383600e+00 1.555024e-02 1.555024e-02 +2.700000e-01 1.350000e-01 1.400000e-01 1.321800e+00 1.552417e-02 1.552417e-02 +5.500000e-01 1.400000e-01 1.350000e-01 1.185100e+00 1.547385e-02 1.547385e-02 +8.200000e-01 1.350000e-01 1.350000e-01 1.060600e+00 1.542595e-02 1.542595e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.764000e-01 1.538051e-02 1.538051e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.233000e-01 1.535871e-02 1.535871e-02 +1.640000e+00 1.350000e-01 1.350000e-01 8.918000e-01 1.535871e-02 1.535871e-02 +1.910000e+00 1.350000e-01 1.400000e-01 8.772000e-01 1.535871e-02 1.535871e-02 +2.190000e+00 1.400000e-01 1.350000e-01 8.809000e-01 1.535871e-02 1.535871e-02 +2.460000e+00 1.350000e-01 1.350000e-01 8.886000e-01 1.535871e-02 1.535871e-02 +2.730000e+00 1.350000e-01 1.400000e-01 8.917000e-01 1.535871e-02 1.535871e-02 +3.010000e+00 1.400000e-01 1.350000e-01 8.921000e-01 1.535871e-02 1.535871e-02 +3.280000e+00 1.350000e-01 1.350000e-01 8.880000e-01 1.535871e-02 1.535871e-02 +3.550000e+00 1.350000e-01 1.350000e-01 8.908000e-01 1.535871e-02 1.535871e-02 +3.820000e+00 1.350000e-01 1.400000e-01 8.820000e-01 1.533754e-02 1.533754e-02 +4.100000e+00 1.400000e-01 1.350000e-01 8.765000e-01 1.533754e-02 1.533754e-02 +4.370000e+00 1.350000e-01 1.350000e-01 8.765000e-01 1.533754e-02 1.533754e-02 +4.640000e+00 1.350000e-01 1.400000e-01 8.979000e-01 1.535871e-02 1.535871e-02 +4.920000e+00 1.400000e-01 2.232000e-01 9.197000e-01 1.535871e-02 1.535871e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d02-x01-y03 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d02-x01-y03 +Title: doi:10.17182/hepdata.78803.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 9.770000e-01 4.024922e-02 4.024922e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 1.064000e+00 4.070626e-02 4.070626e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 1.230000e+00 4.219005e-02 4.219005e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 1.296000e+00 4.219005e-02 4.219005e-02 +0.000000e+00 1.350000e-01 1.350000e-01 1.361000e+00 4.272002e-02 4.272002e-02 +2.700000e-01 1.350000e-01 1.400000e-01 1.290000e+00 4.219005e-02 4.219005e-02 +5.500000e-01 1.400000e-01 1.350000e-01 1.194000e+00 4.167733e-02 4.167733e-02 +8.200000e-01 1.350000e-01 1.350000e-01 1.076000e+00 4.070626e-02 4.070626e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.880000e-01 4.024922e-02 4.024922e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.360000e-01 4.024922e-02 4.024922e-02 +1.640000e+00 1.350000e-01 1.350000e-01 9.010000e-01 3.981206e-02 3.981206e-02 +1.910000e+00 1.350000e-01 1.400000e-01 8.850000e-01 3.981206e-02 3.981206e-02 +2.190000e+00 1.400000e-01 1.350000e-01 8.910000e-01 3.981206e-02 3.981206e-02 +2.460000e+00 1.350000e-01 1.350000e-01 8.890000e-01 3.981206e-02 3.981206e-02 +2.730000e+00 1.350000e-01 1.400000e-01 8.870000e-01 3.981206e-02 3.981206e-02 +3.010000e+00 1.400000e-01 1.350000e-01 9.030000e-01 3.981206e-02 3.981206e-02 +3.280000e+00 1.350000e-01 1.350000e-01 8.840000e-01 3.981206e-02 3.981206e-02 +3.550000e+00 1.350000e-01 1.350000e-01 8.820000e-01 3.981206e-02 3.981206e-02 +3.820000e+00 1.350000e-01 1.400000e-01 9.010000e-01 3.981206e-02 3.981206e-02 +4.100000e+00 1.400000e-01 1.350000e-01 8.720000e-01 3.981206e-02 3.981206e-02 +4.370000e+00 1.350000e-01 1.350000e-01 8.940000e-01 3.981206e-02 3.981206e-02 +4.640000e+00 1.350000e-01 1.400000e-01 8.840000e-01 3.981206e-02 3.981206e-02 +4.920000e+00 1.400000e-01 2.232000e-01 9.130000e-01 3.981206e-02 3.981206e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d02-x01-y02 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d02-x01-y02 +Title: doi:10.17182/hepdata.78803.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 9.720000e-01 1.980808e-02 1.980808e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 1.029500e+00 1.986555e-02 1.986555e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 1.127400e+00 1.995520e-02 1.995520e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 1.224300e+00 2.004894e-02 2.004894e-02 +0.000000e+00 1.350000e-01 1.350000e-01 1.249400e+00 2.008109e-02 2.008109e-02 +2.700000e-01 1.350000e-01 1.400000e-01 1.218700e+00 2.004894e-02 2.004894e-02 +5.500000e-01 1.400000e-01 1.350000e-01 1.134200e+00 1.995520e-02 1.995520e-02 +8.200000e-01 1.350000e-01 1.350000e-01 1.026600e+00 1.986555e-02 1.986555e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.693000e-01 1.980808e-02 1.980808e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.321000e-01 1.975247e-02 1.975247e-02 +1.640000e+00 1.350000e-01 1.350000e-01 9.253000e-01 1.975247e-02 1.975247e-02 +1.910000e+00 1.350000e-01 1.400000e-01 9.253000e-01 1.975247e-02 1.975247e-02 +2.190000e+00 1.400000e-01 1.350000e-01 9.178000e-01 1.975247e-02 1.975247e-02 +2.460000e+00 1.350000e-01 1.350000e-01 9.271000e-01 1.975247e-02 1.975247e-02 +2.730000e+00 1.350000e-01 1.400000e-01 9.390000e-01 1.975247e-02 1.975247e-02 +3.010000e+00 1.400000e-01 1.350000e-01 9.564000e-01 1.978004e-02 1.978004e-02 +3.280000e+00 1.350000e-01 1.350000e-01 9.565000e-01 1.978004e-02 1.978004e-02 +3.550000e+00 1.350000e-01 1.350000e-01 9.488000e-01 1.978004e-02 1.978004e-02 +3.820000e+00 1.350000e-01 1.400000e-01 9.303000e-01 1.975247e-02 1.975247e-02 +4.100000e+00 1.400000e-01 1.350000e-01 9.309000e-01 1.975247e-02 1.975247e-02 +4.370000e+00 1.350000e-01 1.350000e-01 9.186000e-01 1.975247e-02 1.975247e-02 +4.640000e+00 1.350000e-01 1.400000e-01 9.163000e-01 1.975247e-02 1.975247e-02 +4.920000e+00 1.400000e-01 2.232000e-01 9.255000e-01 1.975247e-02 1.975247e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d05-x01-y02 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d05-x01-y02 +Title: doi:10.17182/hepdata.78803.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.300000e+00 1.600000e-01 1.100000e-01 9.637000e-01 1.506519e-02 1.506519e-02 +-1.080000e+00 1.100000e-01 1.050000e-01 9.652000e-01 1.507481e-02 1.507481e-02 +-8.700000e-01 1.050000e-01 1.100000e-01 9.700000e-01 1.507481e-02 1.507481e-02 +-6.500000e-01 1.100000e-01 1.100000e-01 9.854000e-01 1.507481e-02 1.507481e-02 +-4.300000e-01 1.100000e-01 1.050000e-01 1.010200e+00 1.507481e-02 1.507481e-02 +-2.200000e-01 1.050000e-01 1.100000e-01 1.042700e+00 1.507481e-02 1.507481e-02 +0.000000e+00 1.100000e-01 1.100000e-01 1.061600e+00 1.507481e-02 1.507481e-02 +2.200000e-01 1.100000e-01 1.050000e-01 1.043400e+00 1.507481e-02 1.507481e-02 +4.300000e-01 1.050000e-01 1.100000e-01 1.008800e+00 1.507481e-02 1.507481e-02 +6.500000e-01 1.100000e-01 1.100000e-01 9.875000e-01 1.507481e-02 1.507481e-02 +8.700000e-01 1.100000e-01 1.050000e-01 9.743000e-01 1.507481e-02 1.507481e-02 +1.080000e+00 1.050000e-01 1.100000e-01 9.638000e-01 1.506519e-02 1.506519e-02 +1.300000e+00 1.100000e-01 1.100000e-01 9.640000e-01 1.506519e-02 1.506519e-02 +1.520000e+00 1.100000e-01 1.050000e-01 9.703000e-01 1.507481e-02 1.507481e-02 +1.730000e+00 1.050000e-01 1.100000e-01 9.812000e-01 1.507481e-02 1.507481e-02 +1.950000e+00 1.100000e-01 1.100000e-01 9.867000e-01 1.507481e-02 1.507481e-02 +2.170000e+00 1.100000e-01 1.050000e-01 9.991000e-01 1.507481e-02 1.507481e-02 +2.380000e+00 1.050000e-01 1.100000e-01 1.011900e+00 1.507481e-02 1.507481e-02 +2.600000e+00 1.100000e-01 1.100000e-01 1.017500e+00 1.507481e-02 1.507481e-02 +2.820000e+00 1.100000e-01 1.050000e-01 1.027800e+00 1.507481e-02 1.507481e-02 +3.030000e+00 1.050000e-01 1.100000e-01 1.031100e+00 1.507481e-02 1.507481e-02 +3.250000e+00 1.100000e-01 1.100000e-01 1.037900e+00 1.507481e-02 1.507481e-02 +3.470000e+00 1.100000e-01 1.050000e-01 1.028600e+00 1.507481e-02 1.507481e-02 +3.680000e+00 1.050000e-01 1.100000e-01 1.020800e+00 1.507481e-02 1.507481e-02 +3.900000e+00 1.100000e-01 1.100000e-01 1.009800e+00 1.507481e-02 1.507481e-02 +4.120000e+00 1.100000e-01 1.050000e-01 1.001000e+00 1.507481e-02 1.507481e-02 +4.330000e+00 1.050000e-01 1.100000e-01 9.860000e-01 1.507481e-02 1.507481e-02 +4.550000e+00 1.100000e-01 1.100000e-01 9.793000e-01 1.507481e-02 1.507481e-02 +4.770000e+00 1.100000e-01 3.732000e-01 9.683000e-01 1.507481e-02 1.507481e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d05-x01-y03 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d05-x01-y03 +Title: doi:10.17182/hepdata.78803.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.300000e+00 1.600000e-01 1.100000e-01 9.508000e-01 2.520397e-02 2.520397e-02 +-1.080000e+00 1.100000e-01 1.050000e-01 9.223000e-01 2.520397e-02 2.520397e-02 +-8.700000e-01 1.050000e-01 1.100000e-01 8.819000e-01 2.519147e-02 2.519147e-02 +-6.500000e-01 1.100000e-01 1.100000e-01 8.642000e-01 2.519147e-02 2.519147e-02 +-4.300000e-01 1.100000e-01 1.050000e-01 8.489000e-01 2.517936e-02 2.517936e-02 +-2.200000e-01 1.050000e-01 1.100000e-01 8.407000e-01 2.517936e-02 2.517936e-02 +0.000000e+00 1.100000e-01 1.100000e-01 8.665000e-01 2.517936e-02 2.517936e-02 +2.200000e-01 1.100000e-01 1.050000e-01 8.435000e-01 2.517936e-02 2.517936e-02 +4.300000e-01 1.050000e-01 1.100000e-01 8.545000e-01 2.517936e-02 2.517936e-02 +6.500000e-01 1.100000e-01 1.100000e-01 8.606000e-01 2.519147e-02 2.519147e-02 +8.700000e-01 1.100000e-01 1.050000e-01 8.799000e-01 2.519147e-02 2.519147e-02 +1.080000e+00 1.050000e-01 1.100000e-01 9.246000e-01 2.520397e-02 2.520397e-02 +1.300000e+00 1.100000e-01 1.100000e-01 9.504000e-01 2.520397e-02 2.520397e-02 +1.520000e+00 1.100000e-01 1.050000e-01 9.855000e-01 2.521686e-02 2.521686e-02 +1.730000e+00 1.050000e-01 1.100000e-01 1.022200e+00 2.521686e-02 2.521686e-02 +1.950000e+00 1.100000e-01 1.100000e-01 1.053400e+00 2.523014e-02 2.523014e-02 +2.170000e+00 1.100000e-01 1.050000e-01 1.090000e+00 2.524381e-02 2.524381e-02 +2.380000e+00 1.050000e-01 1.100000e-01 1.119500e+00 2.524381e-02 2.524381e-02 +2.600000e+00 1.100000e-01 1.100000e-01 1.146800e+00 2.525787e-02 2.525787e-02 +2.820000e+00 1.100000e-01 1.050000e-01 1.172100e+00 2.525787e-02 2.525787e-02 +3.030000e+00 1.050000e-01 1.100000e-01 1.169600e+00 2.525787e-02 2.525787e-02 +3.250000e+00 1.100000e-01 1.100000e-01 1.175600e+00 2.525787e-02 2.525787e-02 +3.470000e+00 1.100000e-01 1.050000e-01 1.166100e+00 2.525787e-02 2.525787e-02 +3.680000e+00 1.050000e-01 1.100000e-01 1.141700e+00 2.524381e-02 2.524381e-02 +3.900000e+00 1.100000e-01 1.100000e-01 1.124000e+00 2.524381e-02 2.524381e-02 +4.120000e+00 1.100000e-01 1.050000e-01 1.101100e+00 2.524381e-02 2.524381e-02 +4.330000e+00 1.050000e-01 1.100000e-01 1.068300e+00 2.523014e-02 2.523014e-02 +4.550000e+00 1.100000e-01 1.100000e-01 1.021400e+00 2.521686e-02 2.521686e-02 +4.770000e+00 1.100000e-01 3.732000e-01 9.840000e-01 2.521686e-02 2.521686e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d05-x01-y01 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d05-x01-y01 +Title: doi:10.17182/hepdata.78803.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.300000e+00 1.600000e-01 1.100000e-01 9.762330e-01 5.000902e-03 5.000902e-03 +-1.080000e+00 1.100000e-01 1.050000e-01 9.874500e-01 5.001000e-03 5.001000e-03 +-8.700000e-01 1.050000e-01 1.100000e-01 1.004530e+00 5.001000e-03 5.001000e-03 +-6.500000e-01 1.100000e-01 1.100000e-01 1.029530e+00 5.001000e-03 5.001000e-03 +-4.300000e-01 1.100000e-01 1.050000e-01 1.064780e+00 5.001000e-03 5.001000e-03 +-2.200000e-01 1.050000e-01 1.100000e-01 1.107170e+00 5.001000e-03 5.001000e-03 +0.000000e+00 1.100000e-01 1.100000e-01 1.123640e+00 5.001000e-03 5.001000e-03 +2.200000e-01 1.100000e-01 1.050000e-01 1.107200e+00 5.001000e-03 5.001000e-03 +4.300000e-01 1.050000e-01 1.100000e-01 1.064630e+00 5.001000e-03 5.001000e-03 +6.500000e-01 1.100000e-01 1.100000e-01 1.029320e+00 5.001000e-03 5.001000e-03 +8.700000e-01 1.100000e-01 1.050000e-01 1.004750e+00 5.001000e-03 5.001000e-03 +1.080000e+00 1.050000e-01 1.100000e-01 9.874200e-01 5.001000e-03 5.001000e-03 +1.300000e+00 1.100000e-01 1.100000e-01 9.759840e-01 5.000902e-03 5.000902e-03 +1.520000e+00 1.100000e-01 1.050000e-01 9.693090e-01 5.000902e-03 5.000902e-03 +1.730000e+00 1.050000e-01 1.100000e-01 9.664520e-01 5.000902e-03 5.000902e-03 +1.950000e+00 1.100000e-01 1.100000e-01 9.661140e-01 5.000902e-03 5.000902e-03 +2.170000e+00 1.100000e-01 1.050000e-01 9.677500e-01 5.000902e-03 5.000902e-03 +2.380000e+00 1.050000e-01 1.100000e-01 9.703130e-01 5.000902e-03 5.000902e-03 +2.600000e+00 1.100000e-01 1.100000e-01 9.736040e-01 5.000902e-03 5.000902e-03 +2.820000e+00 1.100000e-01 1.050000e-01 9.761100e-01 5.001000e-03 5.001000e-03 +3.030000e+00 1.050000e-01 1.100000e-01 9.774700e-01 5.001000e-03 5.001000e-03 +3.250000e+00 1.100000e-01 1.100000e-01 9.774100e-01 5.001000e-03 5.001000e-03 +3.470000e+00 1.100000e-01 1.050000e-01 9.758900e-01 5.001000e-03 5.001000e-03 +3.680000e+00 1.050000e-01 1.100000e-01 9.735420e-01 5.000902e-03 5.000902e-03 +3.900000e+00 1.100000e-01 1.100000e-01 9.703750e-01 5.000902e-03 5.000902e-03 +4.120000e+00 1.100000e-01 1.050000e-01 9.676720e-01 5.000902e-03 5.000902e-03 +4.330000e+00 1.050000e-01 1.100000e-01 9.662560e-01 5.000902e-03 5.000902e-03 +4.550000e+00 1.100000e-01 1.100000e-01 9.663750e-01 5.000884e-03 5.000884e-03 +4.770000e+00 1.100000e-01 3.732000e-01 9.695280e-01 5.000902e-03 5.000902e-03 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d03-x01-y01 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d03-x01-y01 +Title: doi:10.17182/hepdata.78803.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 9.411000e-01 2.561952e-02 2.561952e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 8.871000e-01 2.557655e-02 2.557655e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 8.901000e-01 2.557655e-02 2.557655e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 8.776000e-01 2.553507e-02 2.553507e-02 +0.000000e+00 1.350000e-01 1.350000e-01 9.206000e-01 2.555563e-02 2.555563e-02 +2.700000e-01 1.350000e-01 1.400000e-01 8.807000e-01 2.555563e-02 2.555563e-02 +5.500000e-01 1.400000e-01 1.350000e-01 8.943000e-01 2.557655e-02 2.557655e-02 +8.200000e-01 1.350000e-01 1.350000e-01 8.883000e-01 2.557655e-02 2.557655e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.327000e-01 2.559785e-02 2.559785e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.499000e-01 2.561952e-02 2.561952e-02 +1.640000e+00 1.350000e-01 1.350000e-01 9.978000e-01 2.564157e-02 2.564157e-02 +1.910000e+00 1.350000e-01 1.400000e-01 1.033300e+00 2.566398e-02 2.566398e-02 +2.190000e+00 1.400000e-01 1.350000e-01 1.086500e+00 2.570992e-02 2.570992e-02 +2.460000e+00 1.350000e-01 1.350000e-01 1.104200e+00 2.570992e-02 2.570992e-02 +2.730000e+00 1.350000e-01 1.400000e-01 1.139200e+00 2.573344e-02 2.573344e-02 +3.010000e+00 1.400000e-01 1.350000e-01 1.133800e+00 2.570992e-02 2.570992e-02 +3.280000e+00 1.350000e-01 1.350000e-01 1.140300e+00 2.570992e-02 2.570992e-02 +3.550000e+00 1.350000e-01 1.350000e-01 1.121300e+00 2.570992e-02 2.570992e-02 +3.820000e+00 1.350000e-01 1.400000e-01 1.112500e+00 2.570992e-02 2.570992e-02 +4.100000e+00 1.400000e-01 1.350000e-01 1.077600e+00 2.568677e-02 2.568677e-02 +4.370000e+00 1.350000e-01 1.350000e-01 1.038800e+00 2.566398e-02 2.566398e-02 +4.640000e+00 1.350000e-01 1.400000e-01 1.006500e+00 2.564157e-02 2.564157e-02 +4.920000e+00 1.400000e-01 2.232000e-01 9.590000e-01 2.561952e-02 2.561952e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d03-x01-y02 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d03-x01-y02 +Title: doi:10.17182/hepdata.78803.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 9.109000e-01 2.610077e-02 2.610077e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 8.716000e-01 2.604400e-02 2.604400e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 8.539000e-01 2.601615e-02 2.601615e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 8.228000e-01 2.596151e-02 2.596151e-02 +0.000000e+00 1.350000e-01 1.350000e-01 8.425000e-01 2.593473e-02 2.593473e-02 +2.700000e-01 1.350000e-01 1.400000e-01 8.035000e-01 2.593473e-02 2.593473e-02 +5.500000e-01 1.400000e-01 1.350000e-01 8.377000e-01 2.598865e-02 2.598865e-02 +8.200000e-01 1.350000e-01 1.350000e-01 8.653000e-01 2.604400e-02 2.604400e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.160000e-01 2.610077e-02 2.610077e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.500000e-01 2.612968e-02 2.612968e-02 +1.640000e+00 1.350000e-01 1.350000e-01 9.999000e-01 2.621850e-02 2.621850e-02 +1.910000e+00 1.350000e-01 1.400000e-01 1.051600e+00 2.627946e-02 2.627946e-02 +2.190000e+00 1.400000e-01 1.350000e-01 1.109200e+00 2.634179e-02 2.634179e-02 +2.460000e+00 1.350000e-01 1.350000e-01 1.158500e+00 2.640549e-02 2.640549e-02 +2.730000e+00 1.350000e-01 1.400000e-01 1.179400e+00 2.643785e-02 2.643785e-02 +3.010000e+00 1.400000e-01 1.350000e-01 1.198900e+00 2.647055e-02 2.647055e-02 +3.280000e+00 1.350000e-01 1.350000e-01 1.189700e+00 2.643785e-02 2.643785e-02 +3.550000e+00 1.350000e-01 1.350000e-01 1.174300e+00 2.643785e-02 2.643785e-02 +3.820000e+00 1.350000e-01 1.400000e-01 1.156800e+00 2.640549e-02 2.640549e-02 +4.100000e+00 1.400000e-01 1.350000e-01 1.110600e+00 2.634179e-02 2.634179e-02 +4.370000e+00 1.350000e-01 1.350000e-01 1.066200e+00 2.631045e-02 2.631045e-02 +4.640000e+00 1.350000e-01 1.400000e-01 9.854000e-01 2.618855e-02 2.618855e-02 +4.920000e+00 1.400000e-01 2.232000e-01 9.711000e-01 2.615894e-02 2.615894e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d01-x01-y02 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d01-x01-y02 +Title: doi:10.17182/hepdata.78803.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 9.289000e-01 2.198295e-02 2.198295e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 8.942000e-01 2.195359e-02 2.195359e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 8.769000e-01 2.192464e-02 2.192464e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 8.509000e-01 2.189612e-02 2.189612e-02 +0.000000e+00 1.350000e-01 1.350000e-01 8.637000e-01 2.192464e-02 2.192464e-02 +2.700000e-01 1.350000e-01 1.400000e-01 8.731000e-01 2.192464e-02 2.192464e-02 +5.500000e-01 1.400000e-01 1.350000e-01 8.576000e-01 2.189612e-02 2.189612e-02 +8.200000e-01 1.350000e-01 1.350000e-01 8.826000e-01 2.192464e-02 2.192464e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.209000e-01 2.198295e-02 2.198295e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.744000e-01 2.204291e-02 2.204291e-02 +1.640000e+00 1.350000e-01 1.350000e-01 1.009000e+00 2.210452e-02 2.210452e-02 +1.910000e+00 1.350000e-01 1.400000e-01 1.046400e+00 2.213594e-02 2.213594e-02 +2.190000e+00 1.400000e-01 1.350000e-01 1.093300e+00 2.220000e-02 2.220000e-02 +2.460000e+00 1.350000e-01 1.350000e-01 1.122900e+00 2.226567e-02 2.226567e-02 +2.730000e+00 1.350000e-01 1.400000e-01 1.139800e+00 2.226567e-02 2.226567e-02 +3.010000e+00 1.400000e-01 1.350000e-01 1.154000e+00 2.229910e-02 2.229910e-02 +3.280000e+00 1.350000e-01 1.350000e-01 1.145900e+00 2.226567e-02 2.226567e-02 +3.550000e+00 1.350000e-01 1.350000e-01 1.142700e+00 2.226567e-02 2.226567e-02 +3.820000e+00 1.350000e-01 1.400000e-01 1.122000e+00 2.223263e-02 2.223263e-02 +4.100000e+00 1.400000e-01 1.350000e-01 1.087200e+00 2.220000e-02 2.220000e-02 +4.370000e+00 1.350000e-01 1.350000e-01 1.036700e+00 2.210452e-02 2.210452e-02 +4.640000e+00 1.350000e-01 1.400000e-01 1.006500e+00 2.207351e-02 2.207351e-02 +4.920000e+00 1.400000e-01 2.232000e-01 9.684000e-01 2.204291e-02 2.204291e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d01-x01-y03 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d01-x01-y03 +Title: doi:10.17182/hepdata.78803.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 9.170000e-01 4.308132e-02 4.308132e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 8.600000e-01 4.308132e-02 4.308132e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 8.390000e-01 4.272002e-02 4.272002e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 8.490000e-01 4.272002e-02 4.272002e-02 +0.000000e+00 1.350000e-01 1.350000e-01 8.200000e-01 4.272002e-02 4.272002e-02 +2.700000e-01 1.350000e-01 1.400000e-01 8.310000e-01 4.272002e-02 4.272002e-02 +5.500000e-01 1.400000e-01 1.350000e-01 8.650000e-01 4.308132e-02 4.308132e-02 +8.200000e-01 1.350000e-01 1.350000e-01 8.750000e-01 4.308132e-02 4.308132e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.170000e-01 4.308132e-02 4.308132e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.630000e-01 4.308132e-02 4.308132e-02 +1.640000e+00 1.350000e-01 1.350000e-01 1.046000e+00 4.346263e-02 4.346263e-02 +1.910000e+00 1.350000e-01 1.400000e-01 1.041000e+00 4.346263e-02 4.346263e-02 +2.190000e+00 1.400000e-01 1.350000e-01 1.097000e+00 4.346263e-02 4.346263e-02 +2.460000e+00 1.350000e-01 1.350000e-01 1.119000e+00 4.386342e-02 4.386342e-02 +2.730000e+00 1.350000e-01 1.400000e-01 1.171000e+00 4.386342e-02 4.386342e-02 +3.010000e+00 1.400000e-01 1.350000e-01 1.192000e+00 4.386342e-02 4.386342e-02 +3.280000e+00 1.350000e-01 1.350000e-01 1.163000e+00 4.386342e-02 4.386342e-02 +3.550000e+00 1.350000e-01 1.350000e-01 1.173000e+00 4.386342e-02 4.386342e-02 +3.820000e+00 1.350000e-01 1.400000e-01 1.140000e+00 4.386342e-02 4.386342e-02 +4.100000e+00 1.400000e-01 1.350000e-01 1.087000e+00 4.346263e-02 4.346263e-02 +4.370000e+00 1.350000e-01 1.350000e-01 1.052000e+00 4.346263e-02 4.346263e-02 +4.640000e+00 1.350000e-01 1.400000e-01 1.015000e+00 4.346263e-02 4.346263e-02 +4.920000e+00 1.400000e-01 2.232000e-01 9.690000e-01 4.308132e-02 4.308132e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d01-x01-y01 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d01-x01-y01 +Title: doi:10.17182/hepdata.78803.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 9.247000e-01 2.531798e-02 2.531798e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 8.743000e-01 2.530237e-02 2.530237e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 8.578000e-01 2.528715e-02 2.528715e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 8.438000e-01 2.528715e-02 2.528715e-02 +0.000000e+00 1.350000e-01 1.350000e-01 8.592000e-01 2.527232e-02 2.527232e-02 +2.700000e-01 1.350000e-01 1.400000e-01 8.433000e-01 2.528715e-02 2.528715e-02 +5.500000e-01 1.400000e-01 1.350000e-01 8.571000e-01 2.528715e-02 2.528715e-02 +8.200000e-01 1.350000e-01 1.350000e-01 8.762000e-01 2.530237e-02 2.530237e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.252000e-01 2.531798e-02 2.531798e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.624000e-01 2.533397e-02 2.533397e-02 +1.640000e+00 1.350000e-01 1.350000e-01 1.004100e+00 2.535035e-02 2.535035e-02 +1.910000e+00 1.350000e-01 1.400000e-01 1.050100e+00 2.536710e-02 2.536710e-02 +2.190000e+00 1.400000e-01 1.350000e-01 1.096400e+00 2.538425e-02 2.538425e-02 +2.460000e+00 1.350000e-01 1.350000e-01 1.128600e+00 2.538425e-02 2.538425e-02 +2.730000e+00 1.350000e-01 1.400000e-01 1.164900e+00 2.540177e-02 2.540177e-02 +3.010000e+00 1.400000e-01 1.350000e-01 1.167000e+00 2.540177e-02 2.540177e-02 +3.280000e+00 1.350000e-01 1.350000e-01 1.175200e+00 2.540177e-02 2.540177e-02 +3.550000e+00 1.350000e-01 1.350000e-01 1.154200e+00 2.540177e-02 2.540177e-02 +3.820000e+00 1.350000e-01 1.400000e-01 1.132000e+00 2.540177e-02 2.540177e-02 +4.100000e+00 1.400000e-01 1.350000e-01 1.101600e+00 2.538425e-02 2.538425e-02 +4.370000e+00 1.350000e-01 1.350000e-01 1.059000e+00 2.536710e-02 2.536710e-02 +4.640000e+00 1.350000e-01 1.400000e-01 1.005200e+00 2.535035e-02 2.535035e-02 +4.920000e+00 1.400000e-01 2.232000e-01 9.618000e-01 2.533397e-02 2.533397e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d06-x01-y01 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d06-x01-y01 +Title: doi:10.17182/hepdata.78803.v1/t6 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 8.950000e-01 4.237924e-02 4.237924e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 8.360000e-01 4.237924e-02 4.237924e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 8.110000e-01 4.205948e-02 4.205948e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 8.320000e-01 4.205948e-02 4.205948e-02 +0.000000e+00 1.350000e-01 1.350000e-01 8.130000e-01 4.205948e-02 4.205948e-02 +2.700000e-01 1.350000e-01 1.400000e-01 8.060000e-01 4.205948e-02 4.205948e-02 +5.500000e-01 1.400000e-01 1.350000e-01 8.630000e-01 4.237924e-02 4.237924e-02 +8.200000e-01 1.350000e-01 1.350000e-01 8.930000e-01 4.237924e-02 4.237924e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.090000e-01 4.237924e-02 4.237924e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.400000e-01 4.237924e-02 4.237924e-02 +1.640000e+00 1.350000e-01 1.350000e-01 1.045000e+00 4.272002e-02 4.272002e-02 +1.910000e+00 1.350000e-01 1.400000e-01 1.054000e+00 4.272002e-02 4.272002e-02 +2.190000e+00 1.400000e-01 1.350000e-01 1.135000e+00 4.308132e-02 4.308132e-02 +2.460000e+00 1.350000e-01 1.350000e-01 1.114000e+00 4.308132e-02 4.308132e-02 +2.730000e+00 1.350000e-01 1.400000e-01 1.178000e+00 4.308132e-02 4.308132e-02 +3.010000e+00 1.400000e-01 1.350000e-01 1.212000e+00 4.308132e-02 4.308132e-02 +3.280000e+00 1.350000e-01 1.350000e-01 1.190000e+00 4.308132e-02 4.308132e-02 +3.550000e+00 1.350000e-01 1.350000e-01 1.168000e+00 4.308132e-02 4.308132e-02 +3.820000e+00 1.350000e-01 1.400000e-01 1.166000e+00 4.308132e-02 4.308132e-02 +4.100000e+00 1.400000e-01 1.350000e-01 1.097000e+00 4.272002e-02 4.272002e-02 +4.370000e+00 1.350000e-01 1.350000e-01 1.034000e+00 4.272002e-02 4.272002e-02 +4.640000e+00 1.350000e-01 1.400000e-01 1.017000e+00 4.272002e-02 4.272002e-02 +4.920000e+00 1.400000e-01 2.232000e-01 9.930000e-01 4.272002e-02 4.272002e-02 +END YODA_SCATTER2D_V2 + +BEGIN YODA_SCATTER2D_V2 /REF/ALICE_2016_I1507157/d06-x01-y02 +Variations: [""] +IsRef: 1 +Path: /REF/ALICE_2016_I1507157/d06-x01-y02 +Title: doi:10.17182/hepdata.78803.v1/t6 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr- +-1.090000e+00 5.000000e-02 1.350000e-01 9.570000e-01 3.764306e-02 3.764306e-02 +-8.200000e-01 1.350000e-01 1.350000e-01 1.052000e+00 3.794733e-02 3.794733e-02 +-5.500000e-01 1.350000e-01 1.400000e-01 1.224000e+00 3.862642e-02 3.862642e-02 +-2.700000e-01 1.400000e-01 1.350000e-01 1.346000e+00 3.900000e-02 3.900000e-02 +0.000000e+00 1.350000e-01 1.350000e-01 1.430000e+00 3.900000e-02 3.900000e-02 +2.700000e-01 1.350000e-01 1.400000e-01 1.339000e+00 3.900000e-02 3.900000e-02 +5.500000e-01 1.400000e-01 1.350000e-01 1.203000e+00 3.862642e-02 3.862642e-02 +8.200000e-01 1.350000e-01 1.350000e-01 1.068000e+00 3.794733e-02 3.794733e-02 +1.090000e+00 1.350000e-01 1.400000e-01 9.680000e-01 3.794733e-02 3.794733e-02 +1.370000e+00 1.400000e-01 1.350000e-01 9.080000e-01 3.764306e-02 3.764306e-02 +1.640000e+00 1.350000e-01 1.350000e-01 8.840000e-01 3.764306e-02 3.764306e-02 +1.910000e+00 1.350000e-01 1.400000e-01 8.770000e-01 3.764306e-02 3.764306e-02 +2.190000e+00 1.400000e-01 1.350000e-01 8.680000e-01 3.764306e-02 3.764306e-02 +2.460000e+00 1.350000e-01 1.350000e-01 8.780000e-01 3.764306e-02 3.764306e-02 +2.730000e+00 1.350000e-01 1.400000e-01 8.820000e-01 3.764306e-02 3.764306e-02 +3.010000e+00 1.400000e-01 1.350000e-01 9.050000e-01 3.764306e-02 3.764306e-02 +3.280000e+00 1.350000e-01 1.350000e-01 8.970000e-01 3.764306e-02 3.764306e-02 +3.550000e+00 1.350000e-01 1.350000e-01 8.870000e-01 3.764306e-02 3.764306e-02 +3.820000e+00 1.350000e-01 1.400000e-01 8.990000e-01 3.764306e-02 3.764306e-02 +4.100000e+00 1.400000e-01 1.350000e-01 8.770000e-01 3.764306e-02 3.764306e-02 +4.370000e+00 1.350000e-01 1.350000e-01 8.780000e-01 3.764306e-02 3.764306e-02 +4.640000e+00 1.350000e-01 1.400000e-01 8.700000e-01 3.764306e-02 3.764306e-02 +4.920000e+00 1.400000e-01 2.232000e-01 8.980000e-01 3.764306e-02 3.764306e-02 +END YODA_SCATTER2D_V2 diff --git a/analyses/pluginATLAS/ATLAS_2010_S8817804.info b/analyses/pluginATLAS/ATLAS_2010_S8817804.info --- a/analyses/pluginATLAS/ATLAS_2010_S8817804.info +++ b/analyses/pluginATLAS/ATLAS_2010_S8817804.info @@ -1,40 +1,41 @@ Name: ATLAS_2010_S8817804 Year: 2010 Summary: Inclusive jet cross section and di-jet mass and chi spectra at 7 TeV in ATLAS Experiment: ATLAS Collider: LHC 7TeV SpiresID: 8817804 InspireID: 871366 Status: VALIDATED +Reentrant: True Authors: - James Monk References: - arXiv:1009.5908 RunInfo: pp QCD jet production with a minimum jet pT of 60 GeV (inclusive) or 30 GeV (di-jets) at 7 TeV. NumEvents: 10000000 Beams: [p+, p+] Energies: [7000] PtCuts: [30, 60] Description: The first jet cross section measurement made with the ATLAS detector at the LHC. Anti-kt jets with $R=0.4$ and $R=0.6$ are resconstructed within $|y|<2.8$ and above 60~GeV for the inclusive jet cross section plots. For the di-jet plots the second jet must have pT>30~GeV. Jet pT and di-jet mass spectra are plotted in bins of rapidity between $|y| = $ 0.3, 0.8, 1.2, 2.1, and 2.8. Di-jet $\chi$ spectra are plotted in bins of di-jet mass between 340 GeV, 520 GeV, 800 GeV and 1200 GeV. NeedCrossSection: yes BibKey: Aad:2010wv BibTeX: '@Article{Aad:2010wv, author = "Aad, G. and others", collaboration = "ATLAS", title = "{Measurement of inclusive jet and dijet cross sections in proton-proton collisions at 7 TeV centre-of-mass energy with the ATLAS detector}", year = "2010", eprint = "1009.5908", archivePrefix = "arXiv", primaryClass = "hep-ex", SLACcitation = "%%CITATION = 1009.5908;%%" }' diff --git a/analyses/pluginATLAS/ATLAS_2015_I1386475.cc b/analyses/pluginATLAS/ATLAS_2015_I1386475.cc new file mode 100644 --- /dev/null +++ b/analyses/pluginATLAS/ATLAS_2015_I1386475.cc @@ -0,0 +1,86 @@ +// -*- C++ -*- +#include "Rivet/Analysis.hh" +#include "Rivet/Tools/AtlasCommon.hh" + +namespace Rivet { + + + /// @brief Add a short analysis description here + class ATLAS_2015_I1386475 : public Analysis { + public: + + /// Constructor + DEFAULT_RIVET_ANALYSIS_CTOR(ATLAS_2015_I1386475); + /// Book histograms and initialise projections before the run + void init() { + + // The centrality projection. + declareCentrality(ATLAS::SumET_PB_Centrality(), + "ATLAS_pPb_Calib", "SumETPb", "CENT"); + + // The trigger projection. + declare(ATLAS::MinBiasTrigger(), "Trigger"); + + // The particles to be analysed. + declare(ChargedFinalState(Cuts::eta > -2.7 && Cuts::eta < 2.7 && + Cuts::pT > 0.1*GeV), "CFS"); + + // The centrality bins' upper edges. + centralityBins = {90., 60., 40., 30., 20., 10., 5., 1.}; + for (int i = 0; i < 8; ++i) { + histEta[centralityBins[i]] = bookHisto1D(2, 1, i + 1); + sow[centralityBins[i]] = 0.; + } + } + + /// Perform the per-event analysis + void analyze(const Event& event) { + const double weight = event.weight(); + + // Apply event triggers. + if ( !apply(event, "Trigger")() ) vetoEvent; + + // We must have direct acces to the centrality projection. + const CentralityProjection& cent = + apply(event,"CENT"); + double c = cent(); + // Find the correct centrality histogram + auto hItr = histEta.upper_bound(c); + if (hItr == histEta.end()) return; + // Find the correct sow. + auto sItr = sow.upper_bound(c); + if (sItr == sow.end()) return; + sItr->second += weight; + for ( const auto &p : apply(event,"CFS").particles() ) + hItr->second->fill(p.eta(), weight); + } + + /// Finalize + void finalize() { + + // Scale by the inverse sum of event weights in each centrality + // bin. + for (int i = 0; i < 8; ++i) + histEta[centralityBins[i]]->scaleW(1./sow[centralityBins[i]]); + + } + +private: + + /// The histograms binned in centrality. + vector centralityBins; + map histEta; + map sow; + + + + + + }; + + + // The hook for the plugin system + DECLARE_RIVET_PLUGIN(ATLAS_2015_I1386475); + + +} diff --git a/analyses/pluginATLAS/ATLAS_2015_I1386475.info b/analyses/pluginATLAS/ATLAS_2015_I1386475.info new file mode 100644 --- /dev/null +++ b/analyses/pluginATLAS/ATLAS_2015_I1386475.info @@ -0,0 +1,49 @@ +Name: ATLAS_2015_I1386475 +Year: 2015 +Summary: Centrality dependent of pseudorapidity distributions in p-Pb collisions $\sqrt{s_{_\text{NN}}}=5.02$ TeV. +Experiment: ATLAS +Collider: LHC +InspireID: 1386475 +Status: UNVALIDATED +Authors: + - Leif Lönnblad + - Christian Bierlich +References: +- Eur.Phys.J. C76 (2016) no.4, 199 +- DOI:0.1140/epjc/s10052-016-4002-3 +- arXiv:1508.00848 [hep-ex] +RunInfo: p-Pb minimum bias events with $c\tau > 10 cm$ stable. +NeedCrossSection: no +Options: + - cent=REF,GEN,IMP,USR +Beams: [2212,1000822080] +Energies: [[4000,326560]] +Description: + 'The centrality dependence of the mean charged-particle multiplicity as a function + of pseudorapidity in proton-lead collisions. The collision energy is asymmetric, + 4000 GeV for the proton and 1570/N for the lead. The primary particle definition is + $c\tau > 10 cm$ stable, and should be enforced at generator level.' +BibKey: Aad:2015zza +BibTeX: '%%% contains utf-8, see: http://inspirehep.net/info/faq/general#utf8 +%%% add \usepackage[utf8]{inputenc} to your latex preamble + +@article{Aad:2015zza, + author = "Aad, Georges and others", + title = "{Measurement of the centrality dependence of the + charged-particle pseudorapidity distribution in + proton–lead collisions at $\sqrt{s_{_\text {NN}}} = + 5.02$  TeV with the ATLAS detector}", + collaboration = "ATLAS", + journal = "Eur. Phys. J.", + volume = "C76", + year = "2016", + number = "4", + pages = "199", + doi = "10.1140/epjc/s10052-016-4002-3", + eprint = "1508.00848", + archivePrefix = "arXiv", + primaryClass = "hep-ex", + reportNumber = "CERN-PH-EP-2015-160", + SLACcitation = "%%CITATION = ARXIV:1508.00848;%%" +}' + diff --git a/analyses/pluginATLAS/ATLAS_2015_I1386475.plot b/analyses/pluginATLAS/ATLAS_2015_I1386475.plot new file mode 100644 --- /dev/null +++ b/analyses/pluginATLAS/ATLAS_2015_I1386475.plot @@ -0,0 +1,8 @@ +BEGIN PLOT /ATLAS_2015_I1386475/d01-x01-y01 +Title=[Insert title for histogram d01-x01-y01 here] +XLabel=[Insert $x$-axis label for histogram d01-x01-y01 here] +YLabel=[Insert $y$-axis label for histogram d01-x01-y01 here] +# + any additional plot settings you might like, see make-plots documentation +END PLOT + +# ... add more histograms as you need them ... diff --git a/analyses/pluginATLAS/ATLAS_2015_I1386475.yoda b/analyses/pluginATLAS/ATLAS_2015_I1386475.yoda new file mode 100644 --- /dev/null +++ b/analyses/pluginATLAS/ATLAS_2015_I1386475.yoda @@ -0,0 +1,1589 @@ +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d01-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d01-x01-y01 +Title: doi:10.17182/hepdata.69240.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 1.820000e+01 1.000000e+00 2.700000e+00 +3.000000e+00 2.000000e+00 2.000000e+00 1.610000e+01 9.000000e-01 1.700000e+00 +7.500000e+00 2.500000e+00 2.500000e+00 1.460000e+01 8.000000e-01 1.200000e+00 +1.500000e+01 5.000000e+00 5.000000e+00 1.300000e+01 7.000000e-01 8.000000e-01 +2.500000e+01 5.000000e+00 5.000000e+00 1.140000e+01 6.000000e-01 6.000000e-01 +3.500000e+01 5.000000e+00 5.000000e+00 9.800000e+00 6.000000e-01 6.000000e-01 +4.500000e+01 4.500000e+01 4.500000e+01 8.400000e+00 4.000000e-01 5.000000e-01 +5.000000e+01 1.000000e+01 1.000000e+01 7.400000e+00 6.000000e-01 4.000000e-01 +7.500000e+01 1.500000e+01 1.500000e+01 4.000000e+00 3.000000e-01 2.000000e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d01-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d01-x01-y02 +Title: doi:10.17182/hepdata.69240.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 2.410000e+01 2.000000e+00 1.600000e+00 +3.000000e+00 2.000000e+00 2.000000e+00 1.950000e+01 1.300000e+00 1.300000e+00 +7.500000e+00 2.500000e+00 2.500000e+00 1.650000e+01 1.000000e+00 1.000000e+00 +1.500000e+01 5.000000e+00 5.000000e+00 1.370000e+01 8.000000e-01 8.000000e-01 +2.500000e+01 5.000000e+00 5.000000e+00 1.120000e+01 7.000000e-01 6.000000e-01 +3.500000e+01 5.000000e+00 5.000000e+00 9.200000e+00 5.000000e-01 5.000000e-01 +4.500000e+01 4.500000e+01 4.500000e+01 8.500000e+00 5.000000e-01 5.000000e-01 +5.000000e+01 1.000000e+01 1.000000e+01 6.600000e+00 4.000000e-01 4.000000e-01 +7.500000e+01 1.500000e+01 1.500000e+01 3.600000e+00 2.000000e-01 2.000000e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d01-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d01-x01-y03 +Title: doi:10.17182/hepdata.69240.v1/t1 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 2.740000e+01 4.000000e+00 1.600000e+00 +3.000000e+00 2.000000e+00 2.000000e+00 2.140000e+01 2.000000e+00 1.400000e+00 +7.500000e+00 2.500000e+00 2.500000e+00 1.740000e+01 1.100000e+00 1.100000e+00 +1.500000e+01 5.000000e+00 5.000000e+00 1.410000e+01 8.000000e-01 9.000000e-01 +2.500000e+01 5.000000e+00 5.000000e+00 1.110000e+01 6.000000e-01 7.000000e-01 +3.500000e+01 5.000000e+00 5.000000e+00 8.900000e+00 5.000000e-01 6.000000e-01 +4.500000e+01 4.500000e+01 4.500000e+01 8.600000e+00 4.000000e-01 5.000000e-01 +5.000000e+01 1.000000e+01 1.000000e+01 6.300000e+00 3.000000e-01 5.000000e-01 +7.500000e+01 1.500000e+01 1.500000e+01 3.400000e+00 2.000000e-01 3.000000e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d02-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d02-x01-y01 +Title: doi:10.17182/hepdata.69240.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 7.908000e+00 5.645467e-01 5.645467e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 7.815000e+00 5.531121e-01 5.531121e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 8.035000e+00 5.512840e-01 5.512840e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 8.135000e+00 5.490974e-01 5.490974e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 8.206000e+00 5.481104e-01 5.481104e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 8.239000e+00 5.476139e-01 5.476139e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 8.286000e+00 5.418671e-01 5.418671e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 8.393000e+00 5.418671e-01 5.418671e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 8.369000e+00 5.339850e-01 5.339850e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 8.427000e+00 5.321889e-01 5.321889e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 8.457000e+00 5.312043e-01 5.312043e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 8.419000e+00 5.233297e-01 5.233297e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 8.418000e+00 5.152795e-01 5.152795e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 8.405000e+00 5.113443e-01 5.113443e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 8.358000e+00 5.054434e-01 5.054434e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 8.338000e+00 5.024938e-01 5.024938e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 8.325000e+00 4.975791e-01 4.975791e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 8.227000e+00 4.875674e-01 4.875674e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 8.222000e+00 4.856027e-01 4.856027e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 8.149000e+00 4.795216e-01 4.795216e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 8.100000e+00 4.726479e-01 4.726479e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 8.047000e+00 4.687217e-01 4.687217e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 7.997000e+00 4.642252e-01 4.642252e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 7.940000e+00 4.622607e-01 4.622607e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 7.958000e+00 4.593147e-01 4.593147e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 7.923000e+00 4.565611e-01 4.565611e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 7.888000e+00 4.544062e-01 4.544062e-01 +5.000000e-02 5.000000e-02 5.000000e-02 7.863000e+00 4.514621e-01 4.514621e-01 +1.500000e-01 5.000000e-02 5.000000e-02 7.917000e+00 4.565611e-01 4.565611e-01 +2.500000e-01 5.000000e-02 5.000000e-02 7.985000e+00 4.614683e-01 4.614683e-01 +3.500000e-01 5.000000e-02 5.000000e-02 8.030000e+00 4.675489e-01 4.675489e-01 +4.500000e-01 5.000000e-02 5.000000e-02 8.083000e+00 4.724585e-01 4.724585e-01 +5.500000e-01 5.000000e-02 5.000000e-02 8.201000e+00 4.803176e-01 4.803176e-01 +6.500000e-01 5.000000e-02 5.000000e-02 8.254000e+00 4.842489e-01 4.842489e-01 +7.500000e-01 5.000000e-02 5.000000e-02 8.289000e+00 4.891646e-01 4.891646e-01 +8.500000e-01 5.000000e-02 5.000000e-02 8.380000e+00 4.981967e-01 4.981967e-01 +9.500000e-01 5.000000e-02 5.000000e-02 8.459000e+00 5.060672e-01 5.060672e-01 +1.050000e+00 5.000000e-02 5.000000e-02 8.492000e+00 5.109883e-01 5.109883e-01 +1.150000e+00 5.000000e-02 5.000000e-02 8.563000e+00 5.168955e-01 5.168955e-01 +1.250000e+00 5.000000e-02 5.000000e-02 8.656000e+00 5.288875e-01 5.288875e-01 +1.350000e+00 5.000000e-02 5.000000e-02 8.658000e+00 5.306873e-01 5.306873e-01 +1.450000e+00 5.000000e-02 5.000000e-02 8.668000e+00 5.366013e-01 5.366013e-01 +1.550000e+00 5.000000e-02 5.000000e-02 8.706000e+00 5.428527e-01 5.428527e-01 +1.650000e+00 5.000000e-02 5.000000e-02 8.747000e+00 5.518922e-01 5.518922e-01 +1.750000e+00 5.000000e-02 5.000000e-02 8.730000e+00 5.558354e-01 5.558354e-01 +1.850000e+00 5.000000e-02 5.000000e-02 8.717000e+00 5.635601e-01 5.635601e-01 +1.950000e+00 5.000000e-02 5.000000e-02 8.702000e+00 5.716161e-01 5.716161e-01 +2.050000e+00 5.000000e-02 5.000000e-02 8.702000e+00 5.854340e-01 5.854340e-01 +2.150000e+00 5.000000e-02 5.000000e-02 8.604000e+00 5.854340e-01 5.854340e-01 +2.250000e+00 5.000000e-02 5.000000e-02 8.700000e+00 6.205610e-01 6.205610e-01 +2.350000e+00 5.000000e-02 5.000000e-02 8.693000e+00 6.204168e-01 6.204168e-01 +2.450000e+00 5.000000e-02 5.000000e-02 8.544000e+00 6.210032e-01 6.210032e-01 +2.550000e+00 5.000000e-02 5.000000e-02 8.546000e+00 6.260966e-01 6.260966e-01 +2.650000e+00 5.000000e-02 5.000000e-02 8.420000e+00 6.543699e-01 6.543699e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d02-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d02-x01-y02 +Title: doi:10.17182/hepdata.69240.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 1.635700e+01 7.618300e-01 7.618300e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 1.627500e+01 7.586145e-01 7.586145e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 1.670900e+01 7.371838e-01 7.371838e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 1.688800e+01 7.302630e-01 7.302630e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 1.698500e+01 7.274737e-01 7.274737e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 1.706700e+01 7.340695e-01 7.340695e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 1.720500e+01 7.234141e-01 7.234141e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 1.720100e+01 7.106230e-01 7.106230e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 1.714500e+01 7.007888e-01 7.007888e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 1.724700e+01 6.970409e-01 6.970409e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 1.720600e+01 6.940929e-01 6.940929e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 1.713700e+01 6.832876e-01 6.832876e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 1.712400e+01 6.664083e-01 6.664083e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 1.700400e+01 6.605210e-01 6.605210e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 1.695500e+01 6.554220e-01 6.554220e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 1.680300e+01 6.495368e-01 6.495368e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 1.675500e+01 6.405154e-01 6.405154e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 1.662100e+01 6.277746e-01 6.277746e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 1.644200e+01 6.226757e-01 6.226757e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 1.622500e+01 6.114982e-01 6.114982e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 1.612600e+01 5.987696e-01 5.987696e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 1.600600e+01 5.966071e-01 5.966071e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 1.587100e+01 5.907351e-01 5.907351e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 1.570200e+01 5.885720e-01 5.885720e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 1.558800e+01 5.748782e-01 5.748782e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 1.557000e+01 5.717351e-01 5.717351e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 1.545300e+01 5.678248e-01 5.678248e-01 +5.000000e-02 5.000000e-02 5.000000e-02 1.543700e+01 5.629387e-01 5.629387e-01 +1.500000e-01 5.000000e-02 5.000000e-02 1.538800e+01 5.678248e-01 5.678248e-01 +2.500000e-01 5.000000e-02 5.000000e-02 1.547600e+01 5.727128e-01 5.727128e-01 +3.500000e-01 5.000000e-02 5.000000e-02 1.555900e+01 5.846580e-01 5.846580e-01 +4.500000e-01 5.000000e-02 5.000000e-02 1.561600e+01 5.895507e-01 5.895507e-01 +5.500000e-01 5.000000e-02 5.000000e-02 1.567700e+01 5.917136e-01 5.917136e-01 +6.500000e-01 5.000000e-02 5.000000e-02 1.582100e+01 5.987696e-01 5.987696e-01 +7.500000e-01 5.000000e-02 5.000000e-02 1.586400e+01 6.046429e-01 6.046429e-01 +8.500000e-01 5.000000e-02 5.000000e-02 1.598200e+01 6.165971e-01 6.165971e-01 +9.500000e-01 5.000000e-02 5.000000e-02 1.602000e+01 6.212970e-01 6.212970e-01 +1.050000e+00 5.000000e-02 5.000000e-02 1.607100e+01 6.291407e-01 6.291407e-01 +1.150000e+00 5.000000e-02 5.000000e-02 1.611700e+01 6.301214e-01 6.301214e-01 +1.250000e+00 5.000000e-02 5.000000e-02 1.614700e+01 6.428763e-01 6.428763e-01 +1.350000e+00 5.000000e-02 5.000000e-02 1.618400e+01 6.418949e-01 6.418949e-01 +1.450000e+00 5.000000e-02 5.000000e-02 1.615100e+01 6.497484e-01 6.497484e-01 +1.550000e+00 5.000000e-02 5.000000e-02 1.614100e+01 6.530743e-01 6.530743e-01 +1.650000e+00 5.000000e-02 5.000000e-02 1.613500e+01 6.599462e-01 6.599462e-01 +1.750000e+00 5.000000e-02 5.000000e-02 1.605700e+01 6.638742e-01 6.638742e-01 +1.850000e+00 5.000000e-02 5.000000e-02 1.593000e+01 6.744961e-01 6.744961e-01 +1.950000e+00 5.000000e-02 5.000000e-02 1.584700e+01 6.853116e-01 6.853116e-01 +2.050000e+00 5.000000e-02 5.000000e-02 1.574900e+01 7.099134e-01 7.099134e-01 +2.150000e+00 5.000000e-02 5.000000e-02 1.568400e+01 7.150112e-01 7.150112e-01 +2.250000e+00 5.000000e-02 5.000000e-02 1.563400e+01 7.783065e-01 7.783065e-01 +2.350000e+00 5.000000e-02 5.000000e-02 1.544800e+01 7.579294e-01 7.579294e-01 +2.450000e+00 5.000000e-02 5.000000e-02 1.535600e+01 7.718633e-01 7.718633e-01 +2.550000e+00 5.000000e-02 5.000000e-02 1.510000e+01 7.608449e-01 7.608449e-01 +2.650000e+00 5.000000e-02 5.000000e-02 1.473100e+01 8.106719e-01 8.106719e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d02-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d02-x01-y03 +Title: doi:10.17182/hepdata.69240.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 2.248300e+01 9.143850e-01 9.143850e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 2.222700e+01 9.090374e-01 9.090374e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 2.278000e+01 8.682079e-01 8.682079e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 2.297400e+01 8.571138e-01 8.571138e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 2.313100e+01 8.555817e-01 8.555817e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 2.326100e+01 8.688067e-01 8.688067e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 2.324900e+01 8.473470e-01 8.473470e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 2.340200e+01 8.356536e-01 8.356536e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 2.342100e+01 8.273488e-01 8.273488e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 2.348600e+01 8.207728e-01 8.207728e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 2.328200e+01 8.147055e-01 8.147055e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 2.324300e+01 8.020736e-01 8.020736e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 2.318100e+01 7.775706e-01 7.775706e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 2.313000e+01 7.756314e-01 7.756314e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 2.296700e+01 7.686000e-01 7.686000e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 2.277300e+01 7.637545e-01 7.637545e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 2.257700e+01 7.480107e-01 7.480107e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 2.237600e+01 7.313125e-01 7.313125e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 2.216300e+01 7.271898e-01 7.271898e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 2.202800e+01 7.201673e-01 7.201673e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 2.166200e+01 6.955070e-01 6.955070e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 2.148900e+01 6.942795e-01 6.942795e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 2.124900e+01 6.853335e-01 6.853335e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 2.113600e+01 6.889303e-01 6.889303e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 2.087300e+01 6.655239e-01 6.655239e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 2.073600e+01 6.594763e-01 6.594763e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 2.063900e+01 6.563178e-01 6.563178e-01 +5.000000e-02 5.000000e-02 5.000000e-02 2.044500e+01 6.435348e-01 6.435348e-01 +1.500000e-01 5.000000e-02 5.000000e-02 2.059000e+01 6.575508e-01 6.575508e-01 +2.500000e-01 5.000000e-02 5.000000e-02 2.053100e+01 6.592071e-01 6.592071e-01 +3.500000e-01 5.000000e-02 5.000000e-02 2.058900e+01 6.739317e-01 6.739317e-01 +4.500000e-01 5.000000e-02 5.000000e-02 2.069600e+01 6.809479e-01 6.809479e-01 +5.500000e-01 5.000000e-02 5.000000e-02 2.077500e+01 6.834047e-01 6.834047e-01 +6.500000e-01 5.000000e-02 5.000000e-02 2.070200e+01 6.821759e-01 6.821759e-01 +7.500000e-01 5.000000e-02 5.000000e-02 2.089500e+01 6.930527e-01 6.930527e-01 +8.500000e-01 5.000000e-02 5.000000e-02 2.083900e+01 7.017443e-01 7.017443e-01 +9.500000e-01 5.000000e-02 5.000000e-02 2.098000e+01 7.104435e-01 7.104435e-01 +1.050000e+00 5.000000e-02 5.000000e-02 2.103700e+01 7.191502e-01 7.191502e-01 +1.150000e+00 5.000000e-02 5.000000e-02 2.101900e+01 7.162472e-01 7.162472e-01 +1.250000e+00 5.000000e-02 5.000000e-02 2.096800e+01 7.302773e-01 7.302773e-01 +1.350000e+00 5.000000e-02 5.000000e-02 2.096900e+01 7.237410e-01 7.237410e-01 +1.450000e+00 5.000000e-02 5.000000e-02 2.093800e+01 7.363396e-01 7.363396e-01 +1.550000e+00 5.000000e-02 5.000000e-02 2.085900e+01 7.361100e-01 7.361100e-01 +1.650000e+00 5.000000e-02 5.000000e-02 2.080600e+01 7.428923e-01 7.428923e-01 +1.750000e+00 5.000000e-02 5.000000e-02 2.049900e+01 7.392489e-01 7.392489e-01 +1.850000e+00 5.000000e-02 5.000000e-02 2.043700e+01 7.579294e-01 7.579294e-01 +1.950000e+00 5.000000e-02 5.000000e-02 2.017600e+01 7.664366e-01 7.664366e-01 +2.050000e+00 5.000000e-02 5.000000e-02 2.001500e+01 8.002756e-01 8.002756e-01 +2.150000e+00 5.000000e-02 5.000000e-02 1.981700e+01 8.002756e-01 8.002756e-01 +2.250000e+00 5.000000e-02 5.000000e-02 1.965200e+01 8.837024e-01 8.837024e-01 +2.350000e+00 5.000000e-02 5.000000e-02 1.937600e+01 8.533024e-01 8.533024e-01 +2.450000e+00 5.000000e-02 5.000000e-02 1.926100e+01 8.705659e-01 8.705659e-01 +2.550000e+00 5.000000e-02 5.000000e-02 1.895400e+01 8.578322e-01 8.578322e-01 +2.650000e+00 5.000000e-02 5.000000e-02 1.871800e+01 9.458377e-01 9.458377e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d02-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d02-x01-y04 +Title: doi:10.17182/hepdata.69240.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 2.738200e+01 9.996504e-01 9.996504e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 2.719300e+01 1.003339e+00 1.003339e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 2.779700e+01 9.431066e-01 9.431066e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 2.797500e+01 9.256052e-01 9.256052e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 2.806200e+01 9.209696e-01 9.209696e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 2.825000e+01 9.425179e-01 9.425179e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 2.819800e+01 9.143593e-01 9.143593e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 2.827900e+01 8.959397e-01 8.959397e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 2.820200e+01 8.833510e-01 8.833510e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 2.841700e+01 8.821757e-01 8.821757e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 2.824900e+01 8.802420e-01 8.802420e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 2.817600e+01 8.647832e-01 8.647832e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 2.797100e+01 8.292677e-01 8.292677e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 2.774000e+01 8.251460e-01 8.251460e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 2.759300e+01 8.193668e-01 8.193668e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 2.749900e+01 8.203298e-01 8.203298e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 2.712200e+01 7.986144e-01 7.986144e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 2.689600e+01 7.794004e-01 7.794004e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 2.663000e+01 7.769202e-01 7.769202e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 2.633100e+01 7.670411e-01 7.670411e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 2.599900e+01 7.396350e-01 7.396350e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 2.581600e+01 7.409750e-01 7.409750e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 2.548200e+01 7.319809e-01 7.319809e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 2.515000e+01 7.320669e-01 7.320669e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 2.500900e+01 7.088223e-01 7.088223e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 2.484200e+01 7.011854e-01 7.011854e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 2.463600e+01 6.961157e-01 6.961157e-01 +5.000000e-02 5.000000e-02 5.000000e-02 2.441200e+01 6.802595e-01 6.802595e-01 +1.500000e-01 5.000000e-02 5.000000e-02 2.446400e+01 6.945632e-01 6.945632e-01 +2.500000e-01 5.000000e-02 5.000000e-02 2.430000e+01 6.933109e-01 6.933109e-01 +3.500000e-01 5.000000e-02 5.000000e-02 2.439500e+01 7.136792e-01 7.136792e-01 +4.500000e-01 5.000000e-02 5.000000e-02 2.448200e+01 7.203811e-01 7.203811e-01 +5.500000e-01 5.000000e-02 5.000000e-02 2.456200e+01 7.215407e-01 7.215407e-01 +6.500000e-01 5.000000e-02 5.000000e-02 2.453500e+01 7.224971e-01 7.224971e-01 +7.500000e-01 5.000000e-02 5.000000e-02 2.464300e+01 7.311094e-01 7.311094e-01 +8.500000e-01 5.000000e-02 5.000000e-02 2.473400e+01 7.457674e-01 7.457674e-01 +9.500000e-01 5.000000e-02 5.000000e-02 2.464900e+01 7.483615e-01 7.483615e-01 +1.050000e+00 5.000000e-02 5.000000e-02 2.471400e+01 7.582401e-01 7.582401e-01 +1.150000e+00 5.000000e-02 5.000000e-02 2.474400e+01 7.550801e-01 7.550801e-01 +1.250000e+00 5.000000e-02 5.000000e-02 2.451000e+01 7.670235e-01 7.670235e-01 +1.350000e+00 5.000000e-02 5.000000e-02 2.454200e+01 7.583680e-01 7.583680e-01 +1.450000e+00 5.000000e-02 5.000000e-02 2.441900e+01 7.696395e-01 7.696395e-01 +1.550000e+00 5.000000e-02 5.000000e-02 2.414500e+01 7.640026e-01 7.640026e-01 +1.650000e+00 5.000000e-02 5.000000e-02 2.408200e+01 7.714175e-01 7.714175e-01 +1.750000e+00 5.000000e-02 5.000000e-02 2.369400e+01 7.667516e-01 7.667516e-01 +1.850000e+00 5.000000e-02 5.000000e-02 2.360000e+01 7.879492e-01 7.879492e-01 +1.950000e+00 5.000000e-02 5.000000e-02 2.319900e+01 7.961137e-01 7.961137e-01 +2.050000e+00 5.000000e-02 5.000000e-02 2.297100e+01 8.365082e-01 8.365082e-01 +2.150000e+00 5.000000e-02 5.000000e-02 2.266000e+01 8.333547e-01 8.333547e-01 +2.250000e+00 5.000000e-02 5.000000e-02 2.233000e+01 9.304494e-01 9.304494e-01 +2.350000e+00 5.000000e-02 5.000000e-02 2.205600e+01 8.949687e-01 8.949687e-01 +2.450000e+00 5.000000e-02 5.000000e-02 2.184200e+01 9.127349e-01 9.127349e-01 +2.550000e+00 5.000000e-02 5.000000e-02 2.147300e+01 8.949514e-01 8.949514e-01 +2.650000e+00 5.000000e-02 5.000000e-02 2.124900e+01 1.006263e+00 1.006263e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d02-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d02-x01-y05 +Title: doi:10.17182/hepdata.69240.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 3.401700e+01 1.240195e+00 1.240195e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 3.366200e+01 1.239652e+00 1.239652e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 3.434500e+01 1.162886e+00 1.162886e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 3.446700e+01 1.138914e+00 1.138914e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 3.471900e+01 1.138389e+00 1.138389e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 3.482300e+01 1.160142e+00 1.160142e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 3.497500e+01 1.132414e+00 1.132414e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 3.496000e+01 1.106933e+00 1.106933e+00 +-1.850000e+00 5.000000e-02 5.000000e-02 3.490700e+01 1.092631e+00 1.092631e+00 +-1.750000e+00 5.000000e-02 5.000000e-02 3.490600e+01 1.081504e+00 1.081504e+00 +-1.650000e+00 5.000000e-02 5.000000e-02 3.465500e+01 1.077632e+00 1.077632e+00 +-1.550000e+00 5.000000e-02 5.000000e-02 3.477200e+01 1.066276e+00 1.066276e+00 +-1.450000e+00 5.000000e-02 5.000000e-02 3.446000e+01 1.020106e+00 1.020106e+00 +-1.350000e+00 5.000000e-02 5.000000e-02 3.422900e+01 1.016949e+00 1.016949e+00 +-1.250000e+00 5.000000e-02 5.000000e-02 3.391300e+01 1.006342e+00 1.006342e+00 +-1.150000e+00 5.000000e-02 5.000000e-02 3.361700e+01 1.001954e+00 1.001954e+00 +-1.050000e+00 5.000000e-02 5.000000e-02 3.344000e+01 9.829573e-01 9.829573e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 3.289500e+01 9.523240e-01 9.523240e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 3.257700e+01 9.488878e-01 9.488878e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 3.217800e+01 9.358424e-01 9.358424e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 3.175800e+01 9.016984e-01 9.016984e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 3.151900e+01 9.040050e-01 9.040050e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 3.105500e+01 8.914539e-01 8.914539e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 3.073200e+01 8.937477e-01 8.937477e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 3.031100e+01 8.584381e-01 8.584381e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 3.010400e+01 8.488910e-01 8.488910e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 2.969600e+01 8.381527e-01 8.381527e-01 +5.000000e-02 5.000000e-02 5.000000e-02 2.978000e+01 8.289156e-01 8.289156e-01 +1.500000e-01 5.000000e-02 5.000000e-02 2.955700e+01 8.388099e-01 8.388099e-01 +2.500000e-01 5.000000e-02 5.000000e-02 2.950600e+01 8.416751e-01 8.416751e-01 +3.500000e-01 5.000000e-02 5.000000e-02 2.949000e+01 8.627149e-01 8.627149e-01 +4.500000e-01 5.000000e-02 5.000000e-02 2.942600e+01 8.653005e-01 8.653005e-01 +5.500000e-01 5.000000e-02 5.000000e-02 2.945700e+01 8.660831e-01 8.660831e-01 +6.500000e-01 5.000000e-02 5.000000e-02 2.954300e+01 8.699080e-01 8.699080e-01 +7.500000e-01 5.000000e-02 5.000000e-02 2.946600e+01 8.746914e-01 8.746914e-01 +8.500000e-01 5.000000e-02 5.000000e-02 2.945100e+01 8.890557e-01 8.890557e-01 +9.500000e-01 5.000000e-02 5.000000e-02 2.948300e+01 8.957662e-01 8.957662e-01 +1.050000e+00 5.000000e-02 5.000000e-02 2.948900e+01 9.050801e-01 9.050801e-01 +1.150000e+00 5.000000e-02 5.000000e-02 2.936700e+01 8.964424e-01 8.964424e-01 +1.250000e+00 5.000000e-02 5.000000e-02 2.928800e+01 9.163324e-01 9.163324e-01 +1.350000e+00 5.000000e-02 5.000000e-02 2.905900e+01 8.982038e-01 8.982038e-01 +1.450000e+00 5.000000e-02 5.000000e-02 2.881700e+01 9.085043e-01 9.085043e-01 +1.550000e+00 5.000000e-02 5.000000e-02 2.866800e+01 9.075605e-01 9.075605e-01 +1.650000e+00 5.000000e-02 5.000000e-02 2.833900e+01 9.086435e-01 9.086435e-01 +1.750000e+00 5.000000e-02 5.000000e-02 2.799600e+01 9.071295e-01 9.071295e-01 +1.850000e+00 5.000000e-02 5.000000e-02 2.757200e+01 9.217120e-01 9.217120e-01 +1.950000e+00 5.000000e-02 5.000000e-02 2.727100e+01 9.368735e-01 9.368735e-01 +2.050000e+00 5.000000e-02 5.000000e-02 2.686000e+01 9.798658e-01 9.798658e-01 +2.150000e+00 5.000000e-02 5.000000e-02 2.645100e+01 9.745255e-01 9.745255e-01 +2.250000e+00 5.000000e-02 5.000000e-02 2.604400e+01 1.085643e+00 1.085643e+00 +2.350000e+00 5.000000e-02 5.000000e-02 2.582300e+01 1.048978e+00 1.048978e+00 +2.450000e+00 5.000000e-02 5.000000e-02 2.518100e+01 1.052878e+00 1.052878e+00 +2.550000e+00 5.000000e-02 5.000000e-02 2.480300e+01 1.035553e+00 1.035553e+00 +2.650000e+00 5.000000e-02 5.000000e-02 2.439000e+01 1.156731e+00 1.156731e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d02-x01-y06 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d02-x01-y06 +Title: doi:10.17182/hepdata.69240.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 4.161300e+01 1.476570e+00 1.476570e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 4.138800e+01 1.485224e+00 1.485224e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 4.210400e+01 1.383285e+00 1.383285e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 4.208900e+01 1.348508e+00 1.348508e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 4.220600e+01 1.341972e+00 1.341972e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 4.251600e+01 1.376962e+00 1.376962e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 4.250900e+01 1.336376e+00 1.336376e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 4.270200e+01 1.311562e+00 1.311562e+00 +-1.850000e+00 5.000000e-02 5.000000e-02 4.248300e+01 1.290645e+00 1.290645e+00 +-1.750000e+00 5.000000e-02 5.000000e-02 4.237400e+01 1.274570e+00 1.274570e+00 +-1.650000e+00 5.000000e-02 5.000000e-02 4.236700e+01 1.280889e+00 1.280889e+00 +-1.550000e+00 5.000000e-02 5.000000e-02 4.201200e+01 1.252085e+00 1.252085e+00 +-1.450000e+00 5.000000e-02 5.000000e-02 4.170400e+01 1.198548e+00 1.198548e+00 +-1.350000e+00 5.000000e-02 5.000000e-02 4.135500e+01 1.194138e+00 1.194138e+00 +-1.250000e+00 5.000000e-02 5.000000e-02 4.122200e+01 1.189651e+00 1.189651e+00 +-1.150000e+00 5.000000e-02 5.000000e-02 4.064300e+01 1.179211e+00 1.179211e+00 +-1.050000e+00 5.000000e-02 5.000000e-02 4.018300e+01 1.149318e+00 1.149318e+00 +-9.500000e-01 5.000000e-02 5.000000e-02 3.982600e+01 1.120130e+00 1.120130e+00 +-8.500000e-01 5.000000e-02 5.000000e-02 3.937700e+01 1.116662e+00 1.116662e+00 +-7.500000e-01 5.000000e-02 5.000000e-02 3.885700e+01 1.100514e+00 1.100514e+00 +-6.500000e-01 5.000000e-02 5.000000e-02 3.823100e+01 1.056835e+00 1.056835e+00 +-5.500000e-01 5.000000e-02 5.000000e-02 3.766500e+01 1.052408e+00 1.052408e+00 +-4.500000e-01 5.000000e-02 5.000000e-02 3.745100e+01 1.046733e+00 1.046733e+00 +-3.500000e-01 5.000000e-02 5.000000e-02 3.683600e+01 1.045771e+00 1.045771e+00 +-2.500000e-01 5.000000e-02 5.000000e-02 3.632100e+01 1.001906e+00 1.001906e+00 +-1.500000e-01 5.000000e-02 5.000000e-02 3.582500e+01 9.835954e-01 9.835954e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 3.543200e+01 9.741099e-01 9.741099e-01 +5.000000e-02 5.000000e-02 5.000000e-02 3.549700e+01 9.612497e-01 9.612497e-01 +1.500000e-01 5.000000e-02 5.000000e-02 3.518900e+01 9.725045e-01 9.725045e-01 +2.500000e-01 5.000000e-02 5.000000e-02 3.519700e+01 9.794432e-01 9.794432e-01 +3.500000e-01 5.000000e-02 5.000000e-02 3.513200e+01 1.003087e+00 1.003087e+00 +4.500000e-01 5.000000e-02 5.000000e-02 3.487600e+01 1.001180e+00 1.001180e+00 +5.500000e-01 5.000000e-02 5.000000e-02 3.492900e+01 1.003466e+00 1.003466e+00 +6.500000e-01 5.000000e-02 5.000000e-02 3.493700e+01 1.005356e+00 1.005356e+00 +7.500000e-01 5.000000e-02 5.000000e-02 3.465500e+01 1.004703e+00 1.004703e+00 +8.500000e-01 5.000000e-02 5.000000e-02 3.481100e+01 1.026797e+00 1.026797e+00 +9.500000e-01 5.000000e-02 5.000000e-02 3.461900e+01 1.027109e+00 1.027109e+00 +1.050000e+00 5.000000e-02 5.000000e-02 3.465100e+01 1.039759e+00 1.039759e+00 +1.150000e+00 5.000000e-02 5.000000e-02 3.442000e+01 1.026476e+00 1.026476e+00 +1.250000e+00 5.000000e-02 5.000000e-02 3.425600e+01 1.047402e+00 1.047402e+00 +1.350000e+00 5.000000e-02 5.000000e-02 3.398500e+01 1.026170e+00 1.026170e+00 +1.450000e+00 5.000000e-02 5.000000e-02 3.367300e+01 1.037915e+00 1.037915e+00 +1.550000e+00 5.000000e-02 5.000000e-02 3.324200e+01 1.029005e+00 1.029005e+00 +1.650000e+00 5.000000e-02 5.000000e-02 3.302400e+01 1.035333e+00 1.035333e+00 +1.750000e+00 5.000000e-02 5.000000e-02 3.242600e+01 1.027120e+00 1.027120e+00 +1.850000e+00 5.000000e-02 5.000000e-02 3.198600e+01 1.045578e+00 1.045578e+00 +1.950000e+00 5.000000e-02 5.000000e-02 3.159800e+01 1.062460e+00 1.062460e+00 +2.050000e+00 5.000000e-02 5.000000e-02 3.115400e+01 1.114840e+00 1.114840e+00 +2.150000e+00 5.000000e-02 5.000000e-02 3.060900e+01 1.106601e+00 1.106601e+00 +2.250000e+00 5.000000e-02 5.000000e-02 2.996300e+01 1.229425e+00 1.229425e+00 +2.350000e+00 5.000000e-02 5.000000e-02 2.920800e+01 1.166355e+00 1.166355e+00 +2.450000e+00 5.000000e-02 5.000000e-02 2.901500e+01 1.193792e+00 1.193792e+00 +2.550000e+00 5.000000e-02 5.000000e-02 2.836600e+01 1.165223e+00 1.165223e+00 +2.650000e+00 5.000000e-02 5.000000e-02 2.760300e+01 1.307951e+00 1.307951e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d02-x01-y07 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d02-x01-y07 +Title: doi:10.17182/hepdata.69240.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 5.065900e+01 1.792847e+00 1.792847e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 5.052200e+01 1.807139e+00 1.807139e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 5.123700e+01 1.678344e+00 1.678344e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 5.124700e+01 1.639227e+00 1.639227e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 5.156700e+01 1.636352e+00 1.636352e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 5.148500e+01 1.666443e+00 1.666443e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 5.150900e+01 1.619585e+00 1.619585e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 5.179100e+01 1.591627e+00 1.591627e+00 +-1.850000e+00 5.000000e-02 5.000000e-02 5.161500e+01 1.569128e+00 1.569128e+00 +-1.750000e+00 5.000000e-02 5.000000e-02 5.120800e+01 1.542565e+00 1.542565e+00 +-1.650000e+00 5.000000e-02 5.000000e-02 5.126600e+01 1.552371e+00 1.552371e+00 +-1.550000e+00 5.000000e-02 5.000000e-02 5.095000e+01 1.522083e+00 1.522083e+00 +-1.450000e+00 5.000000e-02 5.000000e-02 5.026800e+01 1.447727e+00 1.447727e+00 +-1.350000e+00 5.000000e-02 5.000000e-02 5.014800e+01 1.452843e+00 1.452843e+00 +-1.250000e+00 5.000000e-02 5.000000e-02 4.939800e+01 1.429512e+00 1.429512e+00 +-1.150000e+00 5.000000e-02 5.000000e-02 4.914900e+01 1.430793e+00 1.430793e+00 +-1.050000e+00 5.000000e-02 5.000000e-02 4.852600e+01 1.394085e+00 1.394085e+00 +-9.500000e-01 5.000000e-02 5.000000e-02 4.785200e+01 1.353717e+00 1.353717e+00 +-8.500000e-01 5.000000e-02 5.000000e-02 4.728000e+01 1.347267e+00 1.347267e+00 +-7.500000e-01 5.000000e-02 5.000000e-02 4.666900e+01 1.328085e+00 1.328085e+00 +-6.500000e-01 5.000000e-02 5.000000e-02 4.607900e+01 1.280383e+00 1.280383e+00 +-5.500000e-01 5.000000e-02 5.000000e-02 4.486900e+01 1.261834e+00 1.261834e+00 +-4.500000e-01 5.000000e-02 5.000000e-02 4.468500e+01 1.259966e+00 1.259966e+00 +-3.500000e-01 5.000000e-02 5.000000e-02 4.406500e+01 1.260500e+00 1.260500e+00 +-2.500000e-01 5.000000e-02 5.000000e-02 4.337600e+01 1.208077e+00 1.208077e+00 +-1.500000e-01 5.000000e-02 5.000000e-02 4.286500e+01 1.188619e+00 1.188619e+00 +-5.000000e-02 5.000000e-02 5.000000e-02 4.245100e+01 1.178773e+00 1.178773e+00 +5.000000e-02 5.000000e-02 5.000000e-02 4.210500e+01 1.152214e+00 1.152214e+00 +1.500000e-01 5.000000e-02 5.000000e-02 4.169000e+01 1.164078e+00 1.164078e+00 +2.500000e-01 5.000000e-02 5.000000e-02 4.158000e+01 1.167769e+00 1.167769e+00 +3.500000e-01 5.000000e-02 5.000000e-02 4.158600e+01 1.197925e+00 1.197925e+00 +4.500000e-01 5.000000e-02 5.000000e-02 4.131900e+01 1.196251e+00 1.196251e+00 +5.500000e-01 5.000000e-02 5.000000e-02 4.113200e+01 1.193769e+00 1.193769e+00 +6.500000e-01 5.000000e-02 5.000000e-02 4.099900e+01 1.192846e+00 1.192846e+00 +7.500000e-01 5.000000e-02 5.000000e-02 4.088200e+01 1.197241e+00 1.197241e+00 +8.500000e-01 5.000000e-02 5.000000e-02 4.071900e+01 1.214279e+00 1.214279e+00 +9.500000e-01 5.000000e-02 5.000000e-02 4.067700e+01 1.219466e+00 1.219466e+00 +1.050000e+00 5.000000e-02 5.000000e-02 4.052400e+01 1.228005e+00 1.228005e+00 +1.150000e+00 5.000000e-02 5.000000e-02 4.037700e+01 1.216864e+00 1.216864e+00 +1.250000e+00 5.000000e-02 5.000000e-02 3.998500e+01 1.234182e+00 1.234182e+00 +1.350000e+00 5.000000e-02 5.000000e-02 3.977200e+01 1.212410e+00 1.212410e+00 +1.450000e+00 5.000000e-02 5.000000e-02 3.921300e+01 1.219891e+00 1.219891e+00 +1.550000e+00 5.000000e-02 5.000000e-02 3.863000e+01 1.208322e+00 1.208322e+00 +1.650000e+00 5.000000e-02 5.000000e-02 3.823100e+01 1.210921e+00 1.210921e+00 +1.750000e+00 5.000000e-02 5.000000e-02 3.768700e+01 1.205727e+00 1.205727e+00 +1.850000e+00 5.000000e-02 5.000000e-02 3.702900e+01 1.223114e+00 1.223114e+00 +1.950000e+00 5.000000e-02 5.000000e-02 3.632800e+01 1.232560e+00 1.232560e+00 +2.050000e+00 5.000000e-02 5.000000e-02 3.545200e+01 1.278032e+00 1.278032e+00 +2.150000e+00 5.000000e-02 5.000000e-02 3.481800e+01 1.267934e+00 1.267934e+00 +2.250000e+00 5.000000e-02 5.000000e-02 3.423300e+01 1.412132e+00 1.412132e+00 +2.350000e+00 5.000000e-02 5.000000e-02 3.352400e+01 1.344597e+00 1.344597e+00 +2.450000e+00 5.000000e-02 5.000000e-02 3.259800e+01 1.351128e+00 1.351128e+00 +2.550000e+00 5.000000e-02 5.000000e-02 3.190200e+01 1.320022e+00 1.320022e+00 +2.650000e+00 5.000000e-02 5.000000e-02 3.088400e+01 1.505008e+00 1.505008e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d02-x01-y08 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d02-x01-y08 +Title: doi:10.17182/hepdata.69240.v1/t2 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 6.741900e+01 2.798495e+00 2.798495e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 6.720000e+01 2.818803e+00 2.818803e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 6.749700e+01 2.572081e+00 2.572081e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 6.730000e+01 2.486345e+00 2.486345e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 6.792300e+01 2.477824e+00 2.477824e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 6.785900e+01 2.509781e+00 2.509781e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 6.755300e+01 2.412668e+00 2.412668e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 6.746800e+01 2.341360e+00 2.341360e+00 +-1.850000e+00 5.000000e-02 5.000000e-02 6.818000e+01 2.329114e+00 2.329114e+00 +-1.750000e+00 5.000000e-02 5.000000e-02 6.746000e+01 2.272559e+00 2.272559e+00 +-1.650000e+00 5.000000e-02 5.000000e-02 6.668700e+01 2.248792e+00 2.248792e+00 +-1.550000e+00 5.000000e-02 5.000000e-02 6.625000e+01 2.192336e+00 2.192336e+00 +-1.450000e+00 5.000000e-02 5.000000e-02 6.598500e+01 2.095647e+00 2.095647e+00 +-1.350000e+00 5.000000e-02 5.000000e-02 6.482900e+01 2.061788e+00 2.061788e+00 +-1.250000e+00 5.000000e-02 5.000000e-02 6.382100e+01 2.020396e+00 2.020396e+00 +-1.150000e+00 5.000000e-02 5.000000e-02 6.354300e+01 2.017339e+00 2.017339e+00 +-1.050000e+00 5.000000e-02 5.000000e-02 6.189300e+01 1.930331e+00 1.930331e+00 +-9.500000e-01 5.000000e-02 5.000000e-02 6.144100e+01 1.879400e+00 1.879400e+00 +-8.500000e-01 5.000000e-02 5.000000e-02 6.033300e+01 1.855080e+00 1.855080e+00 +-7.500000e-01 5.000000e-02 5.000000e-02 6.037500e+01 1.849771e+00 1.849771e+00 +-6.500000e-01 5.000000e-02 5.000000e-02 5.927300e+01 1.767311e+00 1.767311e+00 +-5.500000e-01 5.000000e-02 5.000000e-02 5.819600e+01 1.752544e+00 1.752544e+00 +-4.500000e-01 5.000000e-02 5.000000e-02 5.682500e+01 1.711585e+00 1.711585e+00 +-3.500000e-01 5.000000e-02 5.000000e-02 5.657600e+01 1.728746e+00 1.728746e+00 +-2.500000e-01 5.000000e-02 5.000000e-02 5.531500e+01 1.639988e+00 1.639988e+00 +-1.500000e-01 5.000000e-02 5.000000e-02 5.498300e+01 1.621624e+00 1.621624e+00 +-5.000000e-02 5.000000e-02 5.000000e-02 5.387400e+01 1.591259e+00 1.591259e+00 +5.000000e-02 5.000000e-02 5.000000e-02 5.316200e+01 1.547652e+00 1.547652e+00 +1.500000e-01 5.000000e-02 5.000000e-02 5.275900e+01 1.568808e+00 1.568808e+00 +2.500000e-01 5.000000e-02 5.000000e-02 5.259300e+01 1.572942e+00 1.572942e+00 +3.500000e-01 5.000000e-02 5.000000e-02 5.246400e+01 1.613521e+00 1.613521e+00 +4.500000e-01 5.000000e-02 5.000000e-02 5.226400e+01 1.618029e+00 1.618029e+00 +5.500000e-01 5.000000e-02 5.000000e-02 5.177200e+01 1.608025e+00 1.608025e+00 +6.500000e-01 5.000000e-02 5.000000e-02 5.155700e+01 1.605826e+00 1.605826e+00 +7.500000e-01 5.000000e-02 5.000000e-02 5.119000e+01 1.610909e+00 1.610909e+00 +8.500000e-01 5.000000e-02 5.000000e-02 5.107300e+01 1.639162e+00 1.639162e+00 +9.500000e-01 5.000000e-02 5.000000e-02 5.081200e+01 1.645885e+00 1.645885e+00 +1.050000e+00 5.000000e-02 5.000000e-02 5.039200e+01 1.655488e+00 1.655488e+00 +1.150000e+00 5.000000e-02 5.000000e-02 4.985900e+01 1.632042e+00 1.632042e+00 +1.250000e+00 5.000000e-02 5.000000e-02 4.960200e+01 1.672560e+00 1.672560e+00 +1.350000e+00 5.000000e-02 5.000000e-02 4.887200e+01 1.630048e+00 1.630048e+00 +1.450000e+00 5.000000e-02 5.000000e-02 4.828900e+01 1.650911e+00 1.650911e+00 +1.550000e+00 5.000000e-02 5.000000e-02 4.761200e+01 1.641527e+00 1.641527e+00 +1.650000e+00 5.000000e-02 5.000000e-02 4.693200e+01 1.645484e+00 1.645484e+00 +1.750000e+00 5.000000e-02 5.000000e-02 4.607400e+01 1.639532e+00 1.639532e+00 +1.850000e+00 5.000000e-02 5.000000e-02 4.519400e+01 1.669804e+00 1.669804e+00 +1.950000e+00 5.000000e-02 5.000000e-02 4.393700e+01 1.677860e+00 1.677860e+00 +2.050000e+00 5.000000e-02 5.000000e-02 4.290400e+01 1.753266e+00 1.753266e+00 +2.150000e+00 5.000000e-02 5.000000e-02 4.228400e+01 1.753266e+00 1.753266e+00 +2.250000e+00 5.000000e-02 5.000000e-02 4.117300e+01 1.956172e+00 1.956172e+00 +2.350000e+00 5.000000e-02 5.000000e-02 4.023700e+01 1.869557e+00 1.869557e+00 +2.450000e+00 5.000000e-02 5.000000e-02 3.934700e+01 1.894288e+00 1.894288e+00 +2.550000e+00 5.000000e-02 5.000000e-02 3.799200e+01 1.834801e+00 1.834801e+00 +2.650000e+00 5.000000e-02 5.000000e-02 3.699100e+01 2.082272e+00 2.082272e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d03-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d03-x01-y01 +Title: doi:10.17182/hepdata.69240.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 8.681000e+00 6.444944e-01 6.444944e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 8.556000e+00 6.280549e-01 6.280549e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 8.791000e+00 6.242339e-01 6.242339e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 8.889000e+00 6.219920e-01 6.219920e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 8.937000e+00 6.180372e-01 6.180372e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 8.969000e+00 6.145445e-01 6.145445e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 8.993000e+00 6.076315e-01 6.076315e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 9.109000e+00 6.038419e-01 6.038419e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 9.059000e+00 5.949605e-01 5.949605e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 9.093000e+00 5.900280e-01 5.900280e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 9.093000e+00 5.850966e-01 5.850966e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 9.030000e+00 5.742517e-01 5.742517e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 9.016000e+00 5.632415e-01 5.632415e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 8.975000e+00 5.563452e-01 5.563452e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 8.898000e+00 5.482928e-01 5.482928e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 8.868000e+00 5.433691e-01 5.433691e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 8.825000e+00 5.354942e-01 5.354942e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 8.698000e+00 5.235084e-01 5.235084e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 8.672000e+00 5.195739e-01 5.195739e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 8.585000e+00 5.115252e-01 5.115252e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 8.524000e+00 5.026778e-01 5.026778e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 8.456000e+00 4.987474e-01 4.987474e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 8.375000e+00 4.911313e-01 4.911313e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 8.308000e+00 4.871981e-01 4.871981e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 8.325000e+00 4.854163e-01 4.854163e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 8.285000e+00 4.814862e-01 4.814862e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 8.253000e+00 4.795216e-01 4.795216e-01 +5.000000e-02 5.000000e-02 5.000000e-02 8.214000e+00 4.754051e-01 4.754051e-01 +1.500000e-01 5.000000e-02 5.000000e-02 8.284000e+00 4.814862e-01 4.814862e-01 +2.500000e-01 5.000000e-02 5.000000e-02 8.358000e+00 4.875674e-01 4.875674e-01 +3.500000e-01 5.000000e-02 5.000000e-02 8.415000e+00 4.944462e-01 4.944462e-01 +4.500000e-01 5.000000e-02 5.000000e-02 8.473000e+00 5.005277e-01 5.005277e-01 +5.500000e-01 5.000000e-02 5.000000e-02 8.609000e+00 5.113443e-01 5.113443e-01 +6.500000e-01 5.000000e-02 5.000000e-02 8.686000e+00 5.172475e-01 5.172475e-01 +7.500000e-01 5.000000e-02 5.000000e-02 8.723000e+00 5.221686e-01 5.221686e-01 +8.500000e-01 5.000000e-02 5.000000e-02 8.839000e+00 5.341582e-01 5.341582e-01 +9.500000e-01 5.000000e-02 5.000000e-02 8.955000e+00 5.451651e-01 5.451651e-01 +1.050000e+00 5.000000e-02 5.000000e-02 8.993000e+00 5.509065e-01 5.509065e-01 +1.150000e+00 5.000000e-02 5.000000e-02 9.089000e+00 5.609323e-01 5.609323e-01 +1.250000e+00 5.000000e-02 5.000000e-02 9.212000e+00 5.767122e-01 5.767122e-01 +1.350000e+00 5.000000e-02 5.000000e-02 9.221000e+00 5.776989e-01 5.776989e-01 +1.450000e+00 5.000000e-02 5.000000e-02 9.265000e+00 5.905294e-01 5.905294e-01 +1.550000e+00 5.000000e-02 5.000000e-02 9.340000e+00 6.007204e-01 6.007204e-01 +1.650000e+00 5.000000e-02 5.000000e-02 9.410000e+00 6.127267e-01 6.127267e-01 +1.750000e+00 5.000000e-02 5.000000e-02 9.405000e+00 6.216148e-01 6.216148e-01 +1.850000e+00 5.000000e-02 5.000000e-02 9.405000e+00 6.324824e-01 6.324824e-01 +1.950000e+00 5.000000e-02 5.000000e-02 9.433000e+00 6.423659e-01 6.423659e-01 +2.050000e+00 5.000000e-02 5.000000e-02 9.444000e+00 6.603128e-01 6.603128e-01 +2.150000e+00 5.000000e-02 5.000000e-02 9.372000e+00 6.652578e-01 6.652578e-01 +2.250000e+00 5.000000e-02 5.000000e-02 9.489000e+00 7.054261e-01 7.054261e-01 +2.350000e+00 5.000000e-02 5.000000e-02 9.474000e+00 7.072743e-01 7.072743e-01 +2.450000e+00 5.000000e-02 5.000000e-02 9.340000e+00 7.127692e-01 7.127692e-01 +2.550000e+00 5.000000e-02 5.000000e-02 9.364000e+00 7.198403e-01 7.198403e-01 +2.650000e+00 5.000000e-02 5.000000e-02 9.230000e+00 7.470696e-01 7.470696e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d03-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d03-x01-y02 +Title: doi:10.17182/hepdata.69240.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 1.787500e+01 9.092288e-01 9.092288e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 1.776000e+01 8.971967e-01 8.971967e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 1.821300e+01 8.717213e-01 8.717213e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 1.837700e+01 8.617105e-01 8.617105e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 1.847200e+01 8.588952e-01 8.588952e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 1.849900e+01 8.545712e-01 8.545712e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 1.862800e+01 8.438685e-01 8.438685e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 1.859600e+01 8.200226e-01 8.200226e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 1.849400e+01 8.072001e-01 8.072001e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 1.858200e+01 7.994805e-01 7.994805e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 1.848000e+01 7.915965e-01 7.915965e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 1.835300e+01 7.717227e-01 7.717227e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 1.829200e+01 7.489045e-01 7.489045e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 1.812500e+01 7.380820e-01 7.380820e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 1.801300e+01 7.300329e-01 7.300329e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 1.782700e+01 7.190341e-01 7.190341e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 1.772500e+01 7.042904e-01 7.042904e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 1.756400e+01 6.893686e-01 6.893686e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 1.731700e+01 6.783782e-01 6.783782e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 1.706700e+01 6.632722e-01 6.632722e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 1.692500e+01 6.475755e-01 6.475755e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 1.678100e+01 6.434571e-01 6.434571e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 1.659900e+01 6.346338e-01 6.346338e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 1.640400e+01 6.283566e-01 6.283566e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 1.629000e+01 6.146381e-01 6.146381e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 1.624600e+01 6.087627e-01 6.087627e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 1.612700e+01 6.066012e-01 6.066012e-01 +5.000000e-02 5.000000e-02 5.000000e-02 1.612500e+01 6.009326e-01 6.009326e-01 +1.500000e-01 5.000000e-02 5.000000e-02 1.606200e+01 6.046429e-01 6.046429e-01 +2.500000e-01 5.000000e-02 5.000000e-02 1.615900e+01 6.126794e-01 6.126794e-01 +3.500000e-01 5.000000e-02 5.000000e-02 1.626600e+01 6.254159e-01 6.254159e-01 +4.500000e-01 5.000000e-02 5.000000e-02 1.633700e+01 6.334556e-01 6.334556e-01 +5.500000e-01 5.000000e-02 5.000000e-02 1.644500e+01 6.424765e-01 6.424765e-01 +6.500000e-01 5.000000e-02 5.000000e-02 1.663900e+01 6.505175e-01 6.505175e-01 +7.500000e-01 5.000000e-02 5.000000e-02 1.669700e+01 6.573842e-01 6.573842e-01 +8.500000e-01 5.000000e-02 5.000000e-02 1.684200e+01 6.732793e-01 6.732793e-01 +9.500000e-01 5.000000e-02 5.000000e-02 1.691300e+01 6.850642e-01 6.850642e-01 +1.050000e+00 5.000000e-02 5.000000e-02 1.701400e+01 6.948906e-01 6.948906e-01 +1.150000e+00 5.000000e-02 5.000000e-02 1.710300e+01 7.017720e-01 7.017720e-01 +1.250000e+00 5.000000e-02 5.000000e-02 1.715600e+01 7.214458e-01 7.214458e-01 +1.350000e+00 5.000000e-02 5.000000e-02 1.725100e+01 7.214458e-01 7.214458e-01 +1.450000e+00 5.000000e-02 5.000000e-02 1.727500e+01 7.411370e-01 7.411370e-01 +1.550000e+00 5.000000e-02 5.000000e-02 1.730600e+01 7.505212e-01 7.505212e-01 +1.650000e+00 5.000000e-02 5.000000e-02 1.733100e+01 7.652954e-01 7.652954e-01 +1.750000e+00 5.000000e-02 5.000000e-02 1.729300e+01 7.790924e-01 7.790924e-01 +1.850000e+00 5.000000e-02 5.000000e-02 1.719200e+01 7.947050e-01 7.947050e-01 +1.950000e+00 5.000000e-02 5.000000e-02 1.714300e+01 8.035851e-01 8.035851e-01 +2.050000e+00 5.000000e-02 5.000000e-02 1.710400e+01 8.371553e-01 8.371553e-01 +2.150000e+00 5.000000e-02 5.000000e-02 1.704900e+01 8.491655e-01 8.491655e-01 +2.250000e+00 5.000000e-02 5.000000e-02 1.703600e+01 9.206628e-01 9.206628e-01 +2.350000e+00 5.000000e-02 5.000000e-02 1.686900e+01 9.083661e-01 9.083661e-01 +2.450000e+00 5.000000e-02 5.000000e-02 1.680000e+01 9.321100e-01 9.321100e-01 +2.550000e+00 5.000000e-02 5.000000e-02 1.657600e+01 9.222088e-01 9.222088e-01 +2.650000e+00 5.000000e-02 5.000000e-02 1.613500e+01 9.621980e-01 9.621980e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d03-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d03-x01-y03 +Title: doi:10.17182/hepdata.69240.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 2.448500e+01 1.114641e+00 1.114641e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 2.418900e+01 1.094897e+00 1.094897e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 2.475900e+01 1.049895e+00 1.049895e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 2.492100e+01 1.034596e+00 1.034596e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 2.507800e+01 1.033000e+00 1.033000e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 2.515900e+01 1.032361e+00 1.032361e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 2.510100e+01 1.007645e+00 1.007645e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 2.524000e+01 9.813878e-01 9.813878e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 2.518400e+01 9.698459e-01 9.698459e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 2.521100e+01 9.563608e-01 9.563608e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 2.495700e+01 9.444199e-01 9.444199e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 2.486000e+01 9.209783e-01 9.209783e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 2.467400e+01 8.854225e-01 8.854225e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 2.455200e+01 8.766527e-01 8.766527e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 2.433900e+01 8.657124e-01 8.657124e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 2.406800e+01 8.528282e-01 8.528282e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 2.383400e+01 8.302253e-01 8.302253e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 2.353600e+01 8.093485e-01 8.093485e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 2.329000e+01 7.984291e-01 7.984291e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 2.308400e+01 7.846031e-01 7.846031e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 2.268100e+01 7.576939e-01 7.576939e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 2.249800e+01 7.547880e-01 7.547880e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 2.219900e+01 7.417007e-01 7.417007e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 2.206200e+01 7.404823e-01 7.404823e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 2.176500e+01 7.150783e-01 7.150783e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 2.162400e+01 7.061253e-01 7.061253e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 2.152800e+01 7.058668e-01 7.058668e-01 +5.000000e-02 5.000000e-02 5.000000e-02 2.130400e+01 6.891923e-01 6.891923e-01 +1.500000e-01 5.000000e-02 5.000000e-02 2.147500e+01 7.041939e-01 7.041939e-01 +2.500000e-01 5.000000e-02 5.000000e-02 2.143600e+01 7.097323e-01 7.097323e-01 +3.500000e-01 5.000000e-02 5.000000e-02 2.150800e+01 7.244929e-01 7.244929e-01 +4.500000e-01 5.000000e-02 5.000000e-02 2.164200e+01 7.373276e-01 7.373276e-01 +5.500000e-01 5.000000e-02 5.000000e-02 2.178500e+01 7.487283e-01 7.487283e-01 +6.500000e-01 5.000000e-02 5.000000e-02 2.173300e+01 7.472623e-01 7.472623e-01 +7.500000e-01 5.000000e-02 5.000000e-02 2.197700e+01 7.613232e-01 7.613232e-01 +8.500000e-01 5.000000e-02 5.000000e-02 2.194700e+01 7.749019e-01 7.749019e-01 +9.500000e-01 5.000000e-02 5.000000e-02 2.215500e+01 7.935899e-01 7.935899e-01 +1.050000e+00 5.000000e-02 5.000000e-02 2.225800e+01 8.042810e-01 8.042810e-01 +1.150000e+00 5.000000e-02 5.000000e-02 2.229600e+01 8.091434e-01 8.091434e-01 +1.250000e+00 5.000000e-02 5.000000e-02 2.229400e+01 8.322800e-01 8.322800e-01 +1.350000e+00 5.000000e-02 5.000000e-02 2.234300e+01 8.276352e-01 8.276352e-01 +1.450000e+00 5.000000e-02 5.000000e-02 2.239300e+01 8.539514e-01 8.539514e-01 +1.550000e+00 5.000000e-02 5.000000e-02 2.236900e+01 8.626384e-01 8.626384e-01 +1.650000e+00 5.000000e-02 5.000000e-02 2.236800e+01 8.801960e-01 8.801960e-01 +1.750000e+00 5.000000e-02 5.000000e-02 2.207700e+01 8.883383e-01 8.883383e-01 +1.850000e+00 5.000000e-02 5.000000e-02 2.206200e+01 9.159236e-01 9.159236e-01 +1.950000e+00 5.000000e-02 5.000000e-02 2.188000e+01 9.215883e-01 9.215883e-01 +2.050000e+00 5.000000e-02 5.000000e-02 2.174300e+01 9.637147e-01 9.637147e-01 +2.150000e+00 5.000000e-02 5.000000e-02 2.156500e+01 9.725415e-01 9.725415e-01 +2.250000e+00 5.000000e-02 5.000000e-02 2.140200e+01 1.062530e+00 1.062530e+00 +2.350000e+00 5.000000e-02 5.000000e-02 2.119600e+01 1.043943e+00 1.043943e+00 +2.450000e+00 5.000000e-02 5.000000e-02 2.107000e+01 1.073068e+00 1.073068e+00 +2.550000e+00 5.000000e-02 5.000000e-02 2.077300e+01 1.059280e+00 1.059280e+00 +2.650000e+00 5.000000e-02 5.000000e-02 2.064000e+01 1.144640e+00 1.144640e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d03-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d03-x01-y04 +Title: doi:10.17182/hepdata.69240.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 2.980500e+01 1.246924e+00 1.246924e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 2.956900e+01 1.232372e+00 1.232372e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 3.018300e+01 1.166793e+00 1.166793e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 3.032100e+01 1.144927e+00 1.144927e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 3.037200e+01 1.139239e+00 1.139239e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 3.056600e+01 1.143979e+00 1.143979e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 3.043500e+01 1.112669e+00 1.112669e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 3.047100e+01 1.073589e+00 1.073589e+00 +-1.850000e+00 5.000000e-02 5.000000e-02 3.032300e+01 1.058732e+00 1.058732e+00 +-1.750000e+00 5.000000e-02 5.000000e-02 3.051100e+01 1.048670e+00 1.048670e+00 +-1.650000e+00 5.000000e-02 5.000000e-02 3.027000e+01 1.038927e+00 1.038927e+00 +-1.550000e+00 5.000000e-02 5.000000e-02 3.014100e+01 1.009727e+00 1.009727e+00 +-1.450000e+00 5.000000e-02 5.000000e-02 2.977300e+01 9.611712e-01 9.611712e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 2.945700e+01 9.463741e-01 9.463741e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 2.923100e+01 9.374017e-01 9.374017e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 2.904600e+01 9.286770e-01 9.286770e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 2.858400e+01 8.962243e-01 8.962243e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 2.832500e+01 8.747005e-01 8.747005e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 2.796700e+01 8.625920e-01 8.625920e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 2.760500e+01 8.430291e-01 8.430291e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 2.722900e+01 8.142825e-01 8.142825e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 2.699500e+01 8.118177e-01 8.118177e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 2.664000e+01 7.988892e-01 7.988892e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 2.623600e+01 7.910607e-01 7.910607e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 2.606400e+01 7.670411e-01 7.670411e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 2.587800e+01 7.552490e-01 7.552490e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 2.566100e+01 7.530471e-01 7.530471e-01 +5.000000e-02 5.000000e-02 5.000000e-02 2.543000e+01 7.345597e-01 7.345597e-01 +1.500000e-01 5.000000e-02 5.000000e-02 2.548600e+01 7.479693e-01 7.479693e-01 +2.500000e-01 5.000000e-02 5.000000e-02 2.533600e+01 7.522001e-01 7.522001e-01 +3.500000e-01 5.000000e-02 5.000000e-02 2.548000e+01 7.729282e-01 7.729282e-01 +4.500000e-01 5.000000e-02 5.000000e-02 2.557500e+01 7.854330e-01 7.854330e-01 +5.500000e-01 5.000000e-02 5.000000e-02 2.574700e+01 7.993028e-01 7.993028e-01 +6.500000e-01 5.000000e-02 5.000000e-02 2.576200e+01 7.993028e-01 7.993028e-01 +7.500000e-01 5.000000e-02 5.000000e-02 2.593000e+01 8.120868e-01 8.120868e-01 +8.500000e-01 5.000000e-02 5.000000e-02 2.605700e+01 8.332929e-01 8.332929e-01 +9.500000e-01 5.000000e-02 5.000000e-02 2.602800e+01 8.468087e-01 8.468087e-01 +1.050000e+00 5.000000e-02 5.000000e-02 2.615600e+01 8.584061e-01 8.584061e-01 +1.150000e+00 5.000000e-02 5.000000e-02 2.627400e+01 8.661438e-01 8.661438e-01 +1.250000e+00 5.000000e-02 5.000000e-02 2.605300e+01 8.879245e-01 8.879245e-01 +1.350000e+00 5.000000e-02 5.000000e-02 2.616100e+01 8.804164e-01 8.804164e-01 +1.450000e+00 5.000000e-02 5.000000e-02 2.609400e+01 9.092733e-01 9.092733e-01 +1.550000e+00 5.000000e-02 5.000000e-02 2.582500e+01 9.102362e-01 9.102362e-01 +1.650000e+00 5.000000e-02 5.000000e-02 2.581400e+01 9.303849e-01 9.303849e-01 +1.750000e+00 5.000000e-02 5.000000e-02 2.547600e+01 9.415838e-01 9.415838e-01 +1.850000e+00 5.000000e-02 5.000000e-02 2.543600e+01 9.727425e-01 9.727425e-01 +1.950000e+00 5.000000e-02 5.000000e-02 2.504400e+01 9.722963e-01 9.722963e-01 +2.050000e+00 5.000000e-02 5.000000e-02 2.487800e+01 1.023062e+00 1.023062e+00 +2.150000e+00 5.000000e-02 5.000000e-02 2.458500e+01 1.030674e+00 1.030674e+00 +2.250000e+00 5.000000e-02 5.000000e-02 2.427300e+01 1.133508e+00 1.133508e+00 +2.350000e+00 5.000000e-02 5.000000e-02 2.407300e+01 1.111952e+00 1.111952e+00 +2.450000e+00 5.000000e-02 5.000000e-02 2.385900e+01 1.143449e+00 1.143449e+00 +2.550000e+00 5.000000e-02 5.000000e-02 2.347200e+01 1.123609e+00 1.123609e+00 +2.650000e+00 5.000000e-02 5.000000e-02 2.341800e+01 1.231638e+00 1.231638e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d03-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d03-x01-y05 +Title: doi:10.17182/hepdata.69240.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 3.689900e+01 1.541759e+00 1.541759e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 3.644700e+01 1.518396e+00 1.518396e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 3.718200e+01 1.436003e+00 1.436003e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 3.724600e+01 1.404610e+00 1.404610e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 3.747700e+01 1.404992e+00 1.404992e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 3.753500e+01 1.403020e+00 1.403020e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 3.764000e+01 1.374040e+00 1.374040e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 3.751400e+01 1.321015e+00 1.321015e+00 +-1.850000e+00 5.000000e-02 5.000000e-02 3.740200e+01 1.304621e+00 1.304621e+00 +-1.750000e+00 5.000000e-02 5.000000e-02 3.734600e+01 1.282390e+00 1.282390e+00 +-1.650000e+00 5.000000e-02 5.000000e-02 3.703600e+01 1.269712e+00 1.269712e+00 +-1.550000e+00 5.000000e-02 5.000000e-02 3.707900e+01 1.241680e+00 1.241680e+00 +-1.450000e+00 5.000000e-02 5.000000e-02 3.661300e+01 1.180445e+00 1.180445e+00 +-1.350000e+00 5.000000e-02 5.000000e-02 3.627500e+01 1.164665e+00 1.164665e+00 +-1.250000e+00 5.000000e-02 5.000000e-02 3.588400e+01 1.150104e+00 1.150104e+00 +-1.150000e+00 5.000000e-02 5.000000e-02 3.548600e+01 1.132884e+00 1.132884e+00 +-1.050000e+00 5.000000e-02 5.000000e-02 3.523300e+01 1.104055e+00 1.104055e+00 +-9.500000e-01 5.000000e-02 5.000000e-02 3.459000e+01 1.067243e+00 1.067243e+00 +-8.500000e-01 5.000000e-02 5.000000e-02 3.417400e+01 1.053197e+00 1.053197e+00 +-7.500000e-01 5.000000e-02 5.000000e-02 3.372300e+01 1.029495e+00 1.029495e+00 +-6.500000e-01 5.000000e-02 5.000000e-02 3.319300e+01 9.920489e-01 9.920489e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 3.289100e+01 9.886243e-01 9.886243e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 3.239400e+01 9.711395e-01 9.711395e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 3.200800e+01 9.657831e-01 9.657831e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 3.156400e+01 9.281600e-01 9.281600e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 3.132100e+01 9.137702e-01 9.137702e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 3.088400e+01 9.049641e-01 9.049641e-01 +5.000000e-02 5.000000e-02 5.000000e-02 3.098600e+01 8.937477e-01 8.937477e-01 +1.500000e-01 5.000000e-02 5.000000e-02 3.076100e+01 9.020870e-01 9.020870e-01 +2.500000e-01 5.000000e-02 5.000000e-02 3.072500e+01 9.116803e-01 9.116803e-01 +3.500000e-01 5.000000e-02 5.000000e-02 3.072700e+01 9.306181e-01 9.306181e-01 +4.500000e-01 5.000000e-02 5.000000e-02 3.070500e+01 9.431272e-01 9.431272e-01 +5.500000e-01 5.000000e-02 5.000000e-02 3.085800e+01 9.575411e-01 9.575411e-01 +6.500000e-01 5.000000e-02 5.000000e-02 3.098100e+01 9.613891e-01 9.613891e-01 +7.500000e-01 5.000000e-02 5.000000e-02 3.096100e+01 9.700515e-01 9.700515e-01 +8.500000e-01 5.000000e-02 5.000000e-02 3.100200e+01 9.912517e-01 9.912517e-01 +9.500000e-01 5.000000e-02 5.000000e-02 3.111000e+01 1.011780e+00 1.011780e+00 +1.050000e+00 5.000000e-02 5.000000e-02 3.116800e+01 1.023115e+00 1.023115e+00 +1.150000e+00 5.000000e-02 5.000000e-02 3.113600e+01 1.026982e+00 1.026982e+00 +1.250000e+00 5.000000e-02 5.000000e-02 3.113000e+01 1.060862e+00 1.060862e+00 +1.350000e+00 5.000000e-02 5.000000e-02 3.099400e+01 1.043648e+00 1.043648e+00 +1.450000e+00 5.000000e-02 5.000000e-02 3.078300e+01 1.072495e+00 1.072495e+00 +1.550000e+00 5.000000e-02 5.000000e-02 3.068800e+01 1.082200e+00 1.082200e+00 +1.650000e+00 5.000000e-02 5.000000e-02 3.042500e+01 1.096993e+00 1.096993e+00 +1.750000e+00 5.000000e-02 5.000000e-02 3.015500e+01 1.114978e+00 1.114978e+00 +1.850000e+00 5.000000e-02 5.000000e-02 2.979800e+01 1.139816e+00 1.139816e+00 +1.950000e+00 5.000000e-02 5.000000e-02 2.952000e+01 1.147383e+00 1.147383e+00 +2.050000e+00 5.000000e-02 5.000000e-02 2.911200e+01 1.197679e+00 1.197679e+00 +2.150000e+00 5.000000e-02 5.000000e-02 2.874900e+01 1.205284e+00 1.205284e+00 +2.250000e+00 5.000000e-02 5.000000e-02 2.839500e+01 1.326265e+00 1.326265e+00 +2.350000e+00 5.000000e-02 5.000000e-02 2.824300e+01 1.304525e+00 1.304525e+00 +2.450000e+00 5.000000e-02 5.000000e-02 2.754200e+01 1.319937e+00 1.319937e+00 +2.550000e+00 5.000000e-02 5.000000e-02 2.718000e+01 1.302632e+00 1.302632e+00 +2.650000e+00 5.000000e-02 5.000000e-02 2.683100e+01 1.412758e+00 1.412758e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d03-x01-y06 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d03-x01-y06 +Title: doi:10.17182/hepdata.69240.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 4.507600e+01 1.844692e+00 1.844692e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 4.475800e+01 1.826793e+00 1.826793e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 4.548600e+01 1.717193e+00 1.717193e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 4.540500e+01 1.672811e+00 1.672811e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 4.547600e+01 1.665198e+00 1.665198e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 4.573700e+01 1.671343e+00 1.671343e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 4.567000e+01 1.629632e+00 1.629632e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 4.573600e+01 1.572195e+00 1.572195e+00 +-1.850000e+00 5.000000e-02 5.000000e-02 4.546800e+01 1.548130e+00 1.548130e+00 +-1.750000e+00 5.000000e-02 5.000000e-02 4.524100e+01 1.516090e+00 1.516090e+00 +-1.650000e+00 5.000000e-02 5.000000e-02 4.522900e+01 1.514880e+00 1.514880e+00 +-1.550000e+00 5.000000e-02 5.000000e-02 4.473400e+01 1.462322e+00 1.462322e+00 +-1.450000e+00 5.000000e-02 5.000000e-02 4.421800e+01 1.390489e+00 1.390489e+00 +-1.350000e+00 5.000000e-02 5.000000e-02 4.375900e+01 1.370931e+00 1.370931e+00 +-1.250000e+00 5.000000e-02 5.000000e-02 4.349600e+01 1.360061e+00 1.360061e+00 +-1.150000e+00 5.000000e-02 5.000000e-02 4.280600e+01 1.334206e+00 1.334206e+00 +-1.050000e+00 5.000000e-02 5.000000e-02 4.227000e+01 1.292566e+00 1.292566e+00 +-9.500000e-01 5.000000e-02 5.000000e-02 4.179700e+01 1.258406e+00 1.258406e+00 +-8.500000e-01 5.000000e-02 5.000000e-02 4.123500e+01 1.240294e+00 1.240294e+00 +-7.500000e-01 5.000000e-02 5.000000e-02 4.065700e+01 1.210694e+00 1.210694e+00 +-6.500000e-01 5.000000e-02 5.000000e-02 3.992800e+01 1.163334e+00 1.163334e+00 +-5.500000e-01 5.000000e-02 5.000000e-02 3.927100e+01 1.152302e+00 1.152302e+00 +-4.500000e-01 5.000000e-02 5.000000e-02 3.900100e+01 1.141043e+00 1.141043e+00 +-3.500000e-01 5.000000e-02 5.000000e-02 3.833200e+01 1.129347e+00 1.129347e+00 +-2.500000e-01 5.000000e-02 5.000000e-02 3.780600e+01 1.085303e+00 1.085303e+00 +-1.500000e-01 5.000000e-02 5.000000e-02 3.726100e+01 1.059996e+00 1.059996e+00 +-5.000000e-02 5.000000e-02 5.000000e-02 3.683800e+01 1.054621e+00 1.054621e+00 +5.000000e-02 5.000000e-02 5.000000e-02 3.693200e+01 1.039766e+00 1.039766e+00 +1.500000e-01 5.000000e-02 5.000000e-02 3.657600e+01 1.047347e+00 1.047347e+00 +2.500000e-01 5.000000e-02 5.000000e-02 3.664000e+01 1.061905e+00 1.061905e+00 +3.500000e-01 5.000000e-02 5.000000e-02 3.658700e+01 1.083478e+00 1.083478e+00 +4.500000e-01 5.000000e-02 5.000000e-02 3.637500e+01 1.092405e+00 1.092405e+00 +5.500000e-01 5.000000e-02 5.000000e-02 3.654200e+01 1.110984e+00 1.110984e+00 +6.500000e-01 5.000000e-02 5.000000e-02 3.659600e+01 1.111936e+00 1.111936e+00 +7.500000e-01 5.000000e-02 5.000000e-02 3.640100e+01 1.116094e+00 1.116094e+00 +8.500000e-01 5.000000e-02 5.000000e-02 3.660600e+01 1.147230e+00 1.147230e+00 +9.500000e-01 5.000000e-02 5.000000e-02 3.646900e+01 1.163191e+00 1.163191e+00 +1.050000e+00 5.000000e-02 5.000000e-02 3.661200e+01 1.179085e+00 1.179085e+00 +1.150000e+00 5.000000e-02 5.000000e-02 3.645900e+01 1.178223e+00 1.178223e+00 +1.250000e+00 5.000000e-02 5.000000e-02 3.638400e+01 1.215778e+00 1.215778e+00 +1.350000e+00 5.000000e-02 5.000000e-02 3.616100e+01 1.193401e+00 1.193401e+00 +1.450000e+00 5.000000e-02 5.000000e-02 3.591500e+01 1.228704e+00 1.228704e+00 +1.550000e+00 5.000000e-02 5.000000e-02 3.559400e+01 1.233088e+00 1.233088e+00 +1.650000e+00 5.000000e-02 5.000000e-02 3.547600e+01 1.256861e+00 1.256861e+00 +1.750000e+00 5.000000e-02 5.000000e-02 3.492800e+01 1.269280e+00 1.269280e+00 +1.850000e+00 5.000000e-02 5.000000e-02 3.454000e+01 1.299850e+00 1.299850e+00 +1.950000e+00 5.000000e-02 5.000000e-02 3.421000e+01 1.307588e+00 1.307588e+00 +2.050000e+00 5.000000e-02 5.000000e-02 3.381800e+01 1.370328e+00 1.370328e+00 +2.150000e+00 5.000000e-02 5.000000e-02 3.330000e+01 1.375913e+00 1.375913e+00 +2.250000e+00 5.000000e-02 5.000000e-02 3.268500e+01 1.507224e+00 1.507224e+00 +2.350000e+00 5.000000e-02 5.000000e-02 3.191300e+01 1.454847e+00 1.454847e+00 +2.450000e+00 5.000000e-02 5.000000e-02 3.181500e+01 1.506724e+00 1.506724e+00 +2.550000e+00 5.000000e-02 5.000000e-02 3.114300e+01 1.473074e+00 1.473074e+00 +2.650000e+00 5.000000e-02 5.000000e-02 3.030200e+01 1.592779e+00 1.592779e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d03-x01-y07 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d03-x01-y07 +Title: doi:10.17182/hepdata.69240.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 5.473500e+01 2.256166e+00 2.256166e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 5.450500e+01 2.239800e+00 2.239800e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 5.518000e+01 2.096670e+00 2.096670e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 5.516700e+01 2.048468e+00 2.048468e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 5.536300e+01 2.043613e+00 2.043613e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 5.517500e+01 2.033226e+00 2.033226e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 5.518800e+01 1.986837e+00 1.986837e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 5.537000e+01 1.920240e+00 1.920240e+00 +-1.850000e+00 5.000000e-02 5.000000e-02 5.509100e+01 1.893805e+00 1.893805e+00 +-1.750000e+00 5.000000e-02 5.000000e-02 5.450700e+01 1.844486e+00 1.844486e+00 +-1.650000e+00 5.000000e-02 5.000000e-02 5.454500e+01 1.844640e+00 1.844640e+00 +-1.550000e+00 5.000000e-02 5.000000e-02 5.410300e+01 1.786826e+00 1.786826e+00 +-1.450000e+00 5.000000e-02 5.000000e-02 5.320300e+01 1.690504e+00 1.690504e+00 +-1.350000e+00 5.000000e-02 5.000000e-02 5.304200e+01 1.680268e+00 1.680268e+00 +-1.250000e+00 5.000000e-02 5.000000e-02 5.211600e+01 1.648608e+00 1.648608e+00 +-1.150000e+00 5.000000e-02 5.000000e-02 5.179200e+01 1.633687e+00 1.633687e+00 +-1.050000e+00 5.000000e-02 5.000000e-02 5.097400e+01 1.577345e+00 1.577345e+00 +-9.500000e-01 5.000000e-02 5.000000e-02 5.019900e+01 1.530919e+00 1.530919e+00 +-8.500000e-01 5.000000e-02 5.000000e-02 4.951900e+01 1.508163e+00 1.508163e+00 +-7.500000e-01 5.000000e-02 5.000000e-02 4.881500e+01 1.472513e+00 1.472513e+00 +-6.500000e-01 5.000000e-02 5.000000e-02 4.809900e+01 1.420628e+00 1.420628e+00 +-5.500000e-01 5.000000e-02 5.000000e-02 4.675700e+01 1.390557e+00 1.390557e+00 +-4.500000e-01 5.000000e-02 5.000000e-02 4.650000e+01 1.382608e+00 1.382608e+00 +-3.500000e-01 5.000000e-02 5.000000e-02 4.580700e+01 1.370787e+00 1.370787e+00 +-2.500000e-01 5.000000e-02 5.000000e-02 4.505700e+01 1.315162e+00 1.315162e+00 +-1.500000e-01 5.000000e-02 5.000000e-02 4.456600e+01 1.290420e+00 1.290420e+00 +-5.000000e-02 5.000000e-02 5.000000e-02 4.406500e+01 1.282078e+00 1.282078e+00 +5.000000e-02 5.000000e-02 5.000000e-02 4.373200e+01 1.252515e+00 1.252515e+00 +1.500000e-01 5.000000e-02 5.000000e-02 4.333400e+01 1.262199e+00 1.262199e+00 +2.500000e-01 5.000000e-02 5.000000e-02 4.322400e+01 1.273948e+00 1.273948e+00 +3.500000e-01 5.000000e-02 5.000000e-02 4.325800e+01 1.302552e+00 1.302552e+00 +4.500000e-01 5.000000e-02 5.000000e-02 4.300900e+01 1.313092e+00 1.313092e+00 +5.500000e-01 5.000000e-02 5.000000e-02 4.297500e+01 1.329599e+00 1.329599e+00 +6.500000e-01 5.000000e-02 5.000000e-02 4.288400e+01 1.325860e+00 1.325860e+00 +7.500000e-01 5.000000e-02 5.000000e-02 4.287100e+01 1.337312e+00 1.337312e+00 +8.500000e-01 5.000000e-02 5.000000e-02 4.277500e+01 1.363907e+00 1.363907e+00 +9.500000e-01 5.000000e-02 5.000000e-02 4.279900e+01 1.387395e+00 1.387395e+00 +1.050000e+00 5.000000e-02 5.000000e-02 4.274400e+01 1.399294e+00 1.399294e+00 +1.150000e+00 5.000000e-02 5.000000e-02 4.271300e+01 1.404005e+00 1.404005e+00 +1.250000e+00 5.000000e-02 5.000000e-02 4.237400e+01 1.438868e+00 1.438868e+00 +1.350000e+00 5.000000e-02 5.000000e-02 4.228500e+01 1.418388e+00 1.418388e+00 +1.450000e+00 5.000000e-02 5.000000e-02 4.180300e+01 1.451802e+00 1.451802e+00 +1.550000e+00 5.000000e-02 5.000000e-02 4.133700e+01 1.455001e+00 1.455001e+00 +1.650000e+00 5.000000e-02 5.000000e-02 4.100200e+01 1.474886e+00 1.474886e+00 +1.750000e+00 5.000000e-02 5.000000e-02 4.053100e+01 1.496738e+00 1.496738e+00 +1.850000e+00 5.000000e-02 5.000000e-02 3.989400e+01 1.524428e+00 1.524428e+00 +1.950000e+00 5.000000e-02 5.000000e-02 3.924100e+01 1.523231e+00 1.523231e+00 +2.050000e+00 5.000000e-02 5.000000e-02 3.843900e+01 1.579962e+00 1.579962e+00 +2.150000e+00 5.000000e-02 5.000000e-02 3.779200e+01 1.584200e+00 1.584200e+00 +2.250000e+00 5.000000e-02 5.000000e-02 3.727200e+01 1.740921e+00 1.740921e+00 +2.350000e+00 5.000000e-02 5.000000e-02 3.650400e+01 1.684896e+00 1.684896e+00 +2.450000e+00 5.000000e-02 5.000000e-02 3.562900e+01 1.710666e+00 1.710666e+00 +2.550000e+00 5.000000e-02 5.000000e-02 3.497600e+01 1.678231e+00 1.678231e+00 +2.650000e+00 5.000000e-02 5.000000e-02 3.383100e+01 1.832029e+00 1.832029e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d03-x01-y08 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d03-x01-y08 +Title: doi:10.17182/hepdata.69240.v1/t3 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 7.272200e+01 3.518000e+00 3.518000e+00 +-2.550000e+00 5.000000e-02 5.000000e-02 7.230500e+01 3.479819e+00 3.479819e+00 +-2.450000e+00 5.000000e-02 5.000000e-02 7.246300e+01 3.202796e+00 3.202796e+00 +-2.350000e+00 5.000000e-02 5.000000e-02 7.221100e+01 3.096800e+00 3.096800e+00 +-2.250000e+00 5.000000e-02 5.000000e-02 7.294000e+01 3.094039e+00 3.094039e+00 +-2.150000e+00 5.000000e-02 5.000000e-02 7.258900e+01 3.055279e+00 3.055279e+00 +-2.050000e+00 5.000000e-02 5.000000e-02 7.230000e+01 2.956296e+00 2.956296e+00 +-1.950000e+00 5.000000e-02 5.000000e-02 7.184900e+01 2.813311e+00 2.813311e+00 +-1.850000e+00 5.000000e-02 5.000000e-02 7.264600e+01 2.804657e+00 2.804657e+00 +-1.750000e+00 5.000000e-02 5.000000e-02 7.175100e+01 2.713126e+00 2.713126e+00 +-1.650000e+00 5.000000e-02 5.000000e-02 7.086700e+01 2.666704e+00 2.666704e+00 +-1.550000e+00 5.000000e-02 5.000000e-02 7.016400e+01 2.564578e+00 2.564578e+00 +-1.450000e+00 5.000000e-02 5.000000e-02 6.971700e+01 2.438455e+00 2.438455e+00 +-1.350000e+00 5.000000e-02 5.000000e-02 6.835600e+01 2.373251e+00 2.373251e+00 +-1.250000e+00 5.000000e-02 5.000000e-02 6.729900e+01 2.323719e+00 2.323719e+00 +-1.150000e+00 5.000000e-02 5.000000e-02 6.684800e+01 2.294251e+00 2.294251e+00 +-1.050000e+00 5.000000e-02 5.000000e-02 6.495700e+01 2.177494e+00 2.177494e+00 +-9.500000e-01 5.000000e-02 5.000000e-02 6.447300e+01 2.120016e+00 2.120016e+00 +-8.500000e-01 5.000000e-02 5.000000e-02 6.313500e+01 2.068619e+00 2.068619e+00 +-7.500000e-01 5.000000e-02 5.000000e-02 6.298200e+01 2.038645e+00 2.038645e+00 +-6.500000e-01 5.000000e-02 5.000000e-02 6.185000e+01 1.952774e+00 1.952774e+00 +-5.500000e-01 5.000000e-02 5.000000e-02 6.064800e+01 1.925587e+00 1.925587e+00 +-4.500000e-01 5.000000e-02 5.000000e-02 5.914500e+01 1.871128e+00 1.871128e+00 +-3.500000e-01 5.000000e-02 5.000000e-02 5.871000e+01 1.868931e+00 1.868931e+00 +-2.500000e-01 5.000000e-02 5.000000e-02 5.740300e+01 1.776124e+00 1.776124e+00 +-1.500000e-01 5.000000e-02 5.000000e-02 5.694700e+01 1.745832e+00 1.745832e+00 +-5.000000e-02 5.000000e-02 5.000000e-02 5.590900e+01 1.723322e+00 1.723322e+00 +5.000000e-02 5.000000e-02 5.000000e-02 5.510100e+01 1.670482e+00 1.670482e+00 +1.500000e-01 5.000000e-02 5.000000e-02 5.462800e+01 1.686253e+00 1.686253e+00 +2.500000e-01 5.000000e-02 5.000000e-02 5.462100e+01 1.706203e+00 1.706203e+00 +3.500000e-01 5.000000e-02 5.000000e-02 5.444000e+01 1.743248e+00 1.743248e+00 +4.500000e-01 5.000000e-02 5.000000e-02 5.445700e+01 1.770315e+00 1.770315e+00 +5.500000e-01 5.000000e-02 5.000000e-02 5.419400e+01 1.786802e+00 1.786802e+00 +6.500000e-01 5.000000e-02 5.000000e-02 5.391900e+01 1.780204e+00 1.780204e+00 +7.500000e-01 5.000000e-02 5.000000e-02 5.358100e+01 1.790221e+00 1.790221e+00 +8.500000e-01 5.000000e-02 5.000000e-02 5.358300e+01 1.834217e+00 1.834217e+00 +9.500000e-01 5.000000e-02 5.000000e-02 5.353900e+01 1.870590e+00 1.870590e+00 +1.050000e+00 5.000000e-02 5.000000e-02 5.308600e+01 1.878494e+00 1.878494e+00 +1.150000e+00 5.000000e-02 5.000000e-02 5.268800e+01 1.878168e+00 1.878168e+00 +1.250000e+00 5.000000e-02 5.000000e-02 5.262500e+01 1.948803e+00 1.948803e+00 +1.350000e+00 5.000000e-02 5.000000e-02 5.179500e+01 1.899104e+00 1.899104e+00 +1.450000e+00 5.000000e-02 5.000000e-02 5.146700e+01 1.964544e+00 1.964544e+00 +1.550000e+00 5.000000e-02 5.000000e-02 5.086800e+01 1.974510e+00 1.974510e+00 +1.650000e+00 5.000000e-02 5.000000e-02 5.030200e+01 2.006498e+00 2.006498e+00 +1.750000e+00 5.000000e-02 5.000000e-02 4.961700e+01 2.041710e+00 2.041710e+00 +1.850000e+00 5.000000e-02 5.000000e-02 4.878000e+01 2.088500e+00 2.088500e+00 +1.950000e+00 5.000000e-02 5.000000e-02 4.730700e+01 2.066759e+00 2.066759e+00 +2.050000e+00 5.000000e-02 5.000000e-02 4.631300e+01 2.158501e+00 2.158501e+00 +2.150000e+00 5.000000e-02 5.000000e-02 4.577700e+01 2.186088e+00 2.186088e+00 +2.250000e+00 5.000000e-02 5.000000e-02 4.470000e+01 2.402164e+00 2.402164e+00 +2.350000e+00 5.000000e-02 5.000000e-02 4.379500e+01 2.339739e+00 2.339739e+00 +2.450000e+00 5.000000e-02 5.000000e-02 4.300300e+01 2.398403e+00 2.398403e+00 +2.550000e+00 5.000000e-02 5.000000e-02 4.148600e+01 2.323620e+00 2.323620e+00 +2.650000e+00 5.000000e-02 5.000000e-02 4.029000e+01 2.520823e+00 2.520823e+00 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d04-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d04-x01-y01 +Title: doi:10.17182/hepdata.69240.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 2.072000e+00 8.982205e-02 8.982205e-02 +-2.550000e+00 5.000000e-02 5.000000e-02 2.083000e+00 8.649277e-02 8.649277e-02 +-2.450000e+00 5.000000e-02 5.000000e-02 2.081000e+00 7.864477e-02 7.864477e-02 +-2.350000e+00 5.000000e-02 5.000000e-02 2.082000e+00 7.083078e-02 7.083078e-02 +-2.250000e+00 5.000000e-02 5.000000e-02 2.073000e+00 6.791171e-02 6.791171e-02 +-2.150000e+00 5.000000e-02 5.000000e-02 2.068000e+00 6.500000e-02 6.500000e-02 +-2.050000e+00 5.000000e-02 5.000000e-02 2.078000e+00 6.525335e-02 6.525335e-02 +-1.950000e+00 5.000000e-02 5.000000e-02 2.049000e+00 6.428841e-02 6.428841e-02 +-1.850000e+00 5.000000e-02 5.000000e-02 2.045000e+00 6.621933e-02 6.621933e-02 +-1.750000e+00 5.000000e-02 5.000000e-02 2.046000e+00 7.009280e-02 7.009280e-02 +-1.650000e+00 5.000000e-02 5.000000e-02 2.034000e+00 7.106335e-02 7.106335e-02 +-1.550000e+00 5.000000e-02 5.000000e-02 2.031000e+00 7.300685e-02 7.300685e-02 +-1.450000e+00 5.000000e-02 5.000000e-02 2.037000e+00 6.815424e-02 6.815424e-02 +-1.350000e+00 5.000000e-02 5.000000e-02 2.023000e+00 7.009280e-02 7.009280e-02 +-1.250000e+00 5.000000e-02 5.000000e-02 2.028000e+00 7.009280e-02 7.009280e-02 +-1.150000e+00 5.000000e-02 5.000000e-02 2.016000e+00 7.009280e-02 7.009280e-02 +-1.050000e+00 5.000000e-02 5.000000e-02 2.011000e+00 6.621933e-02 6.621933e-02 +-9.500000e-01 5.000000e-02 5.000000e-02 2.023000e+00 6.428841e-02 6.428841e-02 +-8.500000e-01 5.000000e-02 5.000000e-02 2.001000e+00 6.332456e-02 6.332456e-02 +-7.500000e-01 5.000000e-02 5.000000e-02 1.993000e+00 6.236185e-02 6.236185e-02 +-6.500000e-01 5.000000e-02 5.000000e-02 1.992000e+00 6.044005e-02 6.044005e-02 +-5.500000e-01 5.000000e-02 5.000000e-02 1.989000e+00 6.044005e-02 6.044005e-02 +-4.500000e-01 5.000000e-02 5.000000e-02 1.984000e+00 5.852350e-02 5.852350e-02 +-3.500000e-01 5.000000e-02 5.000000e-02 1.977000e+00 5.852350e-02 5.852350e-02 +-2.500000e-01 5.000000e-02 5.000000e-02 1.959000e+00 5.565968e-02 5.565968e-02 +-1.500000e-01 5.000000e-02 5.000000e-02 1.963000e+00 5.565968e-02 5.565968e-02 +-5.000000e-02 5.000000e-02 5.000000e-02 1.954000e+00 5.470832e-02 5.470832e-02 +5.000000e-02 5.000000e-02 5.000000e-02 1.964000e+00 5.565968e-02 5.565968e-02 +1.500000e-01 5.000000e-02 5.000000e-02 1.940000e+00 5.565968e-02 5.565968e-02 +2.500000e-01 5.000000e-02 5.000000e-02 1.938000e+00 5.565968e-02 5.565968e-02 +3.500000e-01 5.000000e-02 5.000000e-02 1.935000e+00 5.756735e-02 5.756735e-02 +4.500000e-01 5.000000e-02 5.000000e-02 1.931000e+00 5.756735e-02 5.756735e-02 +5.500000e-01 5.000000e-02 5.000000e-02 1.910000e+00 5.920304e-02 5.920304e-02 +6.500000e-01 5.000000e-02 5.000000e-02 1.916000e+00 5.920304e-02 5.920304e-02 +7.500000e-01 5.000000e-02 5.000000e-02 1.915000e+00 6.016644e-02 6.016644e-02 +8.500000e-01 5.000000e-02 5.000000e-02 1.905000e+00 6.306346e-02 6.306346e-02 +9.500000e-01 5.000000e-02 5.000000e-02 1.888000e+00 6.403124e-02 6.403124e-02 +1.050000e+00 5.000000e-02 5.000000e-02 1.893000e+00 6.500000e-02 6.500000e-02 +1.150000e+00 5.000000e-02 5.000000e-02 1.883000e+00 6.694027e-02 6.694027e-02 +1.250000e+00 5.000000e-02 5.000000e-02 1.860000e+00 6.768309e-02 6.768309e-02 +1.350000e+00 5.000000e-02 5.000000e-02 1.871000e+00 6.596969e-02 6.596969e-02 +1.450000e+00 5.000000e-02 5.000000e-02 1.865000e+00 6.694027e-02 6.694027e-02 +1.550000e+00 5.000000e-02 5.000000e-02 1.853000e+00 6.573431e-02 6.573431e-02 +1.650000e+00 5.000000e-02 5.000000e-02 1.842000e+00 6.573431e-02 6.573431e-02 +1.750000e+00 5.000000e-02 5.000000e-02 1.841000e+00 6.378871e-02 6.378871e-02 +1.850000e+00 5.000000e-02 5.000000e-02 1.832000e+00 6.184658e-02 6.184658e-02 +1.950000e+00 5.000000e-02 5.000000e-02 1.823000e+00 5.990826e-02 5.990826e-02 +2.050000e+00 5.000000e-02 5.000000e-02 1.816000e+00 6.161169e-02 6.161169e-02 +2.150000e+00 5.000000e-02 5.000000e-02 1.826000e+00 6.087693e-02 6.087693e-02 +2.250000e+00 5.000000e-02 5.000000e-02 1.799000e+00 6.865858e-02 6.865858e-02 +2.350000e+00 5.000000e-02 5.000000e-02 1.793000e+00 6.963476e-02 6.963476e-02 +2.450000e+00 5.000000e-02 5.000000e-02 1.801000e+00 7.550497e-02 7.550497e-02 +2.550000e+00 5.000000e-02 5.000000e-02 1.763000e+00 8.297590e-02 8.297590e-02 +2.650000e+00 5.000000e-02 5.000000e-02 1.750000e+00 9.656604e-02 9.656604e-02 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d04-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d04-x01-y02 +Title: doi:10.17182/hepdata.69240.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 2.874000e+00 1.142366e-01 1.142366e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 2.879000e+00 1.135650e-01 1.135650e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 2.865000e+00 1.038123e-01 1.038123e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 2.852000e+00 9.386160e-02 9.386160e-02 +-2.250000e+00 5.000000e-02 5.000000e-02 2.847000e+00 9.217917e-02 9.217917e-02 +-2.150000e+00 5.000000e-02 5.000000e-02 2.838000e+00 8.928606e-02 8.928606e-02 +-2.050000e+00 5.000000e-02 5.000000e-02 2.824000e+00 9.052072e-02 9.052072e-02 +-1.950000e+00 5.000000e-02 5.000000e-02 2.800000e+00 9.052072e-02 9.052072e-02 +-1.850000e+00 5.000000e-02 5.000000e-02 2.805000e+00 9.340771e-02 9.340771e-02 +-1.750000e+00 5.000000e-02 5.000000e-02 2.794000e+00 9.823441e-02 9.823441e-02 +-1.650000e+00 5.000000e-02 5.000000e-02 2.762000e+00 9.920181e-02 9.920181e-02 +-1.550000e+00 5.000000e-02 5.000000e-02 2.767000e+00 1.021078e-01 1.021078e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 2.767000e+00 9.533625e-02 9.533625e-02 +-1.350000e+00 5.000000e-02 5.000000e-02 2.760000e+00 9.823441e-02 9.823441e-02 +-1.250000e+00 5.000000e-02 5.000000e-02 2.757000e+00 9.726767e-02 9.726767e-02 +-1.150000e+00 5.000000e-02 5.000000e-02 2.737000e+00 9.726767e-02 9.726767e-02 +-1.050000e+00 5.000000e-02 5.000000e-02 2.719000e+00 9.244458e-02 9.244458e-02 +-9.500000e-01 5.000000e-02 5.000000e-02 2.723000e+00 8.860023e-02 8.860023e-02 +-8.500000e-01 5.000000e-02 5.000000e-02 2.704000e+00 8.764131e-02 8.764131e-02 +-7.500000e-01 5.000000e-02 5.000000e-02 2.706000e+00 8.764131e-02 8.764131e-02 +-6.500000e-01 5.000000e-02 5.000000e-02 2.678000e+00 8.381527e-02 8.381527e-02 +-5.500000e-01 5.000000e-02 5.000000e-02 2.675000e+00 8.286133e-02 8.286133e-02 +-4.500000e-01 5.000000e-02 5.000000e-02 2.663000e+00 8.095678e-02 8.095678e-02 +-3.500000e-01 5.000000e-02 5.000000e-02 2.663000e+00 8.095678e-02 8.095678e-02 +-2.500000e-01 5.000000e-02 5.000000e-02 2.624000e+00 7.621680e-02 7.621680e-02 +-1.500000e-01 5.000000e-02 5.000000e-02 2.619000e+00 7.621680e-02 7.621680e-02 +-5.000000e-02 5.000000e-02 5.000000e-02 2.617000e+00 7.527284e-02 7.527284e-02 +5.000000e-02 5.000000e-02 5.000000e-02 2.601000e+00 7.621680e-02 7.621680e-02 +1.500000e-01 5.000000e-02 5.000000e-02 2.601000e+00 7.621680e-02 7.621680e-02 +2.500000e-01 5.000000e-02 5.000000e-02 2.575000e+00 7.589466e-02 7.589466e-02 +3.500000e-01 5.000000e-02 5.000000e-02 2.566000e+00 7.779460e-02 7.779460e-02 +4.500000e-01 5.000000e-02 5.000000e-02 2.567000e+00 7.779460e-02 7.779460e-02 +5.500000e-01 5.000000e-02 5.000000e-02 2.536000e+00 8.065358e-02 8.065358e-02 +6.500000e-01 5.000000e-02 5.000000e-02 2.510000e+00 7.969944e-02 7.969944e-02 +7.500000e-01 5.000000e-02 5.000000e-02 2.527000e+00 8.160882e-02 8.160882e-02 +8.500000e-01 5.000000e-02 5.000000e-02 2.488000e+00 8.324062e-02 8.324062e-02 +9.500000e-01 5.000000e-02 5.000000e-02 2.479000e+00 8.612781e-02 8.612781e-02 +1.050000e+00 5.000000e-02 5.000000e-02 2.480000e+00 8.709191e-02 8.709191e-02 +1.150000e+00 5.000000e-02 5.000000e-02 2.460000e+00 8.902247e-02 8.902247e-02 +1.250000e+00 5.000000e-02 5.000000e-02 2.425000e+00 8.973851e-02 8.973851e-02 +1.350000e+00 5.000000e-02 5.000000e-02 2.431000e+00 8.780091e-02 8.780091e-02 +1.450000e+00 5.000000e-02 5.000000e-02 2.423000e+00 8.876936e-02 8.876936e-02 +1.550000e+00 5.000000e-02 5.000000e-02 2.405000e+00 8.876936e-02 8.876936e-02 +1.650000e+00 5.000000e-02 5.000000e-02 2.387000e+00 8.780091e-02 8.780091e-02 +1.750000e+00 5.000000e-02 5.000000e-02 2.361000e+00 8.489994e-02 8.489994e-02 +1.850000e+00 5.000000e-02 5.000000e-02 2.362000e+00 8.200610e-02 8.200610e-02 +1.950000e+00 5.000000e-02 5.000000e-02 2.339000e+00 7.912016e-02 7.912016e-02 +2.050000e+00 5.000000e-02 5.000000e-02 2.321000e+00 7.981228e-02 7.981228e-02 +2.150000e+00 5.000000e-02 5.000000e-02 2.327000e+00 7.788453e-02 7.788453e-02 +2.250000e+00 5.000000e-02 5.000000e-02 2.278000e+00 8.561542e-02 8.561542e-02 +2.350000e+00 5.000000e-02 5.000000e-02 2.259000e+00 8.658522e-02 8.658522e-02 +2.450000e+00 5.000000e-02 5.000000e-02 2.280000e+00 9.144397e-02 9.144397e-02 +2.550000e+00 5.000000e-02 5.000000e-02 2.242000e+00 1.004241e-01 1.004241e-01 +2.650000e+00 5.000000e-02 5.000000e-02 2.259000e+00 1.208056e-01 1.208056e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d04-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d04-x01-y03 +Title: doi:10.17182/hepdata.69240.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 3.511000e+00 1.570891e-01 1.570891e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 3.519000e+00 1.565248e-01 1.565248e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 3.502000e+00 1.425798e-01 1.425798e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 3.483000e+00 1.288604e-01 1.288604e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 3.460000e+00 1.261467e-01 1.261467e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 3.457000e+00 1.222497e-01 1.222497e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 3.432000e+00 1.234544e-01 1.234544e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 3.386000e+00 1.232234e-01 1.232234e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 3.391000e+00 1.263725e-01 1.263725e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 3.386000e+00 1.331953e-01 1.331953e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 3.355000e+00 1.349370e-01 1.349370e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 3.360000e+00 1.390575e-01 1.390575e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 3.337000e+00 1.292942e-01 1.292942e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 3.316000e+00 1.329812e-01 1.329812e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 3.308000e+00 1.312440e-01 1.312440e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 3.302000e+00 1.312440e-01 1.312440e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 3.262000e+00 1.241974e-01 1.241974e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 3.282000e+00 1.205404e-01 1.205404e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 3.249000e+00 1.186002e-01 1.186002e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 3.238000e+00 1.176308e-01 1.176308e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 3.216000e+00 1.127918e-01 1.127918e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 3.211000e+00 1.118258e-01 1.118258e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 3.197000e+00 1.079676e-01 1.079676e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 3.174000e+00 1.077033e-01 1.077033e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 3.143000e+00 1.019215e-01 1.019215e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 3.135000e+00 1.028834e-01 1.028834e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 3.125000e+00 1.000000e-01 1.000000e-01 +5.000000e-02 5.000000e-02 5.000000e-02 3.108000e+00 1.009604e-01 1.009604e-01 +1.500000e-01 5.000000e-02 5.000000e-02 3.090000e+00 1.019215e-01 1.019215e-01 +2.500000e-01 5.000000e-02 5.000000e-02 3.051000e+00 1.009604e-01 1.009604e-01 +3.500000e-01 5.000000e-02 5.000000e-02 3.047000e+00 1.028834e-01 1.028834e-01 +4.500000e-01 5.000000e-02 5.000000e-02 3.037000e+00 1.035809e-01 1.035809e-01 +5.500000e-01 5.000000e-02 5.000000e-02 2.999000e+00 1.064800e-01 1.064800e-01 +6.500000e-01 5.000000e-02 5.000000e-02 2.975000e+00 1.064800e-01 1.064800e-01 +7.500000e-01 5.000000e-02 5.000000e-02 2.981000e+00 1.074477e-01 1.074477e-01 +8.500000e-01 5.000000e-02 5.000000e-02 2.959000e+00 1.122943e-01 1.122943e-01 +9.500000e-01 5.000000e-02 5.000000e-02 2.913000e+00 1.130310e-01 1.130310e-01 +1.050000e+00 5.000000e-02 5.000000e-02 2.917000e+00 1.149783e-01 1.149783e-01 +1.150000e+00 5.000000e-02 5.000000e-02 2.902000e+00 1.179025e-01 1.179025e-01 +1.250000e+00 5.000000e-02 5.000000e-02 2.835000e+00 1.176860e-01 1.176860e-01 +1.350000e+00 5.000000e-02 5.000000e-02 2.848000e+00 1.157325e-01 1.157325e-01 +1.450000e+00 5.000000e-02 5.000000e-02 2.826000e+00 1.167090e-01 1.167090e-01 +1.550000e+00 5.000000e-02 5.000000e-02 2.791000e+00 1.157325e-01 1.157325e-01 +1.650000e+00 5.000000e-02 5.000000e-02 2.769000e+00 1.147563e-01 1.147563e-01 +1.750000e+00 5.000000e-02 5.000000e-02 2.741000e+00 1.106345e-01 1.106345e-01 +1.850000e+00 5.000000e-02 5.000000e-02 2.741000e+00 1.067333e-01 1.067333e-01 +1.950000e+00 5.000000e-02 5.000000e-02 2.696000e+00 1.018676e-01 1.018676e-01 +2.050000e+00 5.000000e-02 5.000000e-02 2.680000e+00 1.045610e-01 1.045610e-01 +2.150000e+00 5.000000e-02 5.000000e-02 2.675000e+00 1.006628e-01 1.006628e-01 +2.250000e+00 5.000000e-02 5.000000e-02 2.611000e+00 1.104219e-01 1.104219e-01 +2.350000e+00 5.000000e-02 5.000000e-02 2.598000e+00 1.114002e-01 1.114002e-01 +2.450000e+00 5.000000e-02 5.000000e-02 2.604000e+00 1.174777e-01 1.174777e-01 +2.550000e+00 5.000000e-02 5.000000e-02 2.572000e+00 1.302690e-01 1.302690e-01 +2.650000e+00 5.000000e-02 5.000000e-02 2.593000e+00 1.557691e-01 1.557691e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d04-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d04-x01-y04 +Title: doi:10.17182/hepdata.69240.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 4.375000e+00 2.104590e-01 2.104590e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 4.372000e+00 2.087870e-01 2.087870e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 4.344000e+00 1.908743e-01 1.908743e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 4.295000e+00 1.712104e-01 1.712104e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 4.291000e+00 1.684666e-01 1.684666e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 4.269000e+00 1.625946e-01 1.625946e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 4.263000e+00 1.649758e-01 1.649758e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 4.192000e+00 1.637834e-01 1.637834e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 4.189000e+00 1.686713e-01 1.686713e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 4.162000e+00 1.765050e-01 1.765050e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 4.120000e+00 1.784657e-01 1.784657e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 4.146000e+00 1.843529e-01 1.843529e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 4.113000e+00 1.716071e-01 1.716071e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 4.091000e+00 1.765050e-01 1.765050e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 4.074000e+00 1.735655e-01 1.735655e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 4.046000e+00 1.735655e-01 1.735655e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 4.026000e+00 1.657377e-01 1.657377e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 4.012000e+00 1.579272e-01 1.579272e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 3.971000e+00 1.559776e-01 1.559776e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 3.964000e+00 1.550032e-01 1.550032e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 3.929000e+00 1.481924e-01 1.481924e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 3.921000e+00 1.472209e-01 1.472209e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 3.897000e+00 1.423692e-01 1.423692e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 3.876000e+00 1.414001e-01 1.414001e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 3.813000e+00 1.334054e-01 1.334054e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 3.806000e+00 1.334054e-01 1.334054e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 3.771000e+00 1.305067e-01 1.305067e-01 +5.000000e-02 5.000000e-02 5.000000e-02 3.794000e+00 1.324387e-01 1.324387e-01 +1.500000e-01 5.000000e-02 5.000000e-02 3.736000e+00 1.324387e-01 1.324387e-01 +2.500000e-01 5.000000e-02 5.000000e-02 3.706000e+00 1.314724e-01 1.314724e-01 +3.500000e-01 5.000000e-02 5.000000e-02 3.674000e+00 1.341231e-01 1.341231e-01 +4.500000e-01 5.000000e-02 5.000000e-02 3.647000e+00 1.341231e-01 1.341231e-01 +5.500000e-01 5.000000e-02 5.000000e-02 3.596000e+00 1.377679e-01 1.377679e-01 +6.500000e-01 5.000000e-02 5.000000e-02 3.581000e+00 1.367955e-01 1.367955e-01 +7.500000e-01 5.000000e-02 5.000000e-02 3.563000e+00 1.387408e-01 1.387408e-01 +8.500000e-01 5.000000e-02 5.000000e-02 3.522000e+00 1.436106e-01 1.436106e-01 +9.500000e-01 5.000000e-02 5.000000e-02 3.488000e+00 1.463216e-01 1.463216e-01 +1.050000e+00 5.000000e-02 5.000000e-02 3.479000e+00 1.472990e-01 1.472990e-01 +1.150000e+00 5.000000e-02 5.000000e-02 3.443000e+00 1.502332e-01 1.502332e-01 +1.250000e+00 5.000000e-02 5.000000e-02 3.392000e+00 1.519901e-01 1.519901e-01 +1.350000e+00 5.000000e-02 5.000000e-02 3.381000e+00 1.480709e-01 1.480709e-01 +1.450000e+00 5.000000e-02 5.000000e-02 3.338000e+00 1.490503e-01 1.490503e-01 +1.550000e+00 5.000000e-02 5.000000e-02 3.315000e+00 1.480709e-01 1.480709e-01 +1.650000e+00 5.000000e-02 5.000000e-02 3.262000e+00 1.449310e-01 1.449310e-01 +1.750000e+00 5.000000e-02 5.000000e-02 3.241000e+00 1.410142e-01 1.410142e-01 +1.850000e+00 5.000000e-02 5.000000e-02 3.207000e+00 1.341715e-01 1.341715e-01 +1.950000e+00 5.000000e-02 5.000000e-02 3.178000e+00 1.292942e-01 1.292942e-01 +2.050000e+00 5.000000e-02 5.000000e-02 3.131000e+00 1.308167e-01 1.308167e-01 +2.150000e+00 5.000000e-02 5.000000e-02 3.122000e+00 1.259286e-01 1.259286e-01 +2.250000e+00 5.000000e-02 5.000000e-02 3.049000e+00 1.386542e-01 1.386542e-01 +2.350000e+00 5.000000e-02 5.000000e-02 3.042000e+00 1.408119e-01 1.408119e-01 +2.450000e+00 5.000000e-02 5.000000e-02 3.007000e+00 1.466970e-01 1.466970e-01 +2.550000e+00 5.000000e-02 5.000000e-02 2.969000e+00 1.616168e-01 1.616168e-01 +2.650000e+00 5.000000e-02 5.000000e-02 2.965000e+00 1.911256e-01 1.911256e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d04-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d04-x01-y05 +Title: doi:10.17182/hepdata.69240.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 5.351000e+00 2.859545e-01 2.859545e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 5.371000e+00 2.850702e-01 2.850702e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 5.324000e+00 2.602787e-01 2.602787e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 5.243000e+00 2.325941e-01 2.325941e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 5.210000e+00 2.271299e-01 2.271299e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 5.211000e+00 2.212691e-01 2.212691e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 5.181000e+00 2.226859e-01 2.226859e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 5.115000e+00 2.224635e-01 2.224635e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 5.104000e+00 2.285366e-01 2.285366e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 5.050000e+00 2.380966e-01 2.380966e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 5.033000e+00 2.429918e-01 2.429918e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 5.008000e+00 2.478911e-01 2.478911e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 4.979000e+00 2.312509e-01 2.312509e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 4.945000e+00 2.371181e-01 2.371181e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 4.948000e+00 2.341837e-01 2.341837e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 4.888000e+00 2.332059e-01 2.332059e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 4.840000e+00 2.214881e-01 2.214881e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 4.856000e+00 2.127205e-01 2.127205e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 4.800000e+00 2.098023e-01 2.098023e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 4.786000e+00 2.088301e-01 2.088301e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 4.732000e+00 1.981540e-01 1.981540e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 4.688000e+00 1.959694e-01 1.959694e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 4.688000e+00 1.901578e-01 1.901578e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 4.648000e+00 1.882233e-01 1.882233e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 4.576000e+00 1.785721e-01 1.785721e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 4.527000e+00 1.773415e-01 1.773415e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 4.496000e+00 1.734878e-01 1.734878e-01 +5.000000e-02 5.000000e-02 5.000000e-02 4.527000e+00 1.763774e-01 1.763774e-01 +1.500000e-01 5.000000e-02 5.000000e-02 4.447000e+00 1.754138e-01 1.754138e-01 +2.500000e-01 5.000000e-02 5.000000e-02 4.423000e+00 1.741838e-01 1.741838e-01 +3.500000e-01 5.000000e-02 5.000000e-02 4.382000e+00 1.780449e-01 1.780449e-01 +4.500000e-01 5.000000e-02 5.000000e-02 4.328000e+00 1.768219e-01 1.768219e-01 +5.500000e-01 5.000000e-02 5.000000e-02 4.265000e+00 1.816618e-01 1.816618e-01 +6.500000e-01 5.000000e-02 5.000000e-02 4.238000e+00 1.804467e-01 1.804467e-01 +7.500000e-01 5.000000e-02 5.000000e-02 4.194000e+00 1.814166e-01 1.814166e-01 +8.500000e-01 5.000000e-02 5.000000e-02 4.168000e+00 1.879840e-01 1.879840e-01 +9.500000e-01 5.000000e-02 5.000000e-02 4.090000e+00 1.909057e-01 1.909057e-01 +1.050000e+00 5.000000e-02 5.000000e-02 4.095000e+00 1.928549e-01 1.928549e-01 +1.150000e+00 5.000000e-02 5.000000e-02 4.037000e+00 1.955633e-01 1.955633e-01 +1.250000e+00 5.000000e-02 5.000000e-02 3.975000e+00 1.982851e-01 1.982851e-01 +1.350000e+00 5.000000e-02 5.000000e-02 3.954000e+00 1.924188e-01 1.924188e-01 +1.450000e+00 5.000000e-02 5.000000e-02 3.907000e+00 1.943734e-01 1.943734e-01 +1.550000e+00 5.000000e-02 5.000000e-02 3.839000e+00 1.902525e-01 1.902525e-01 +1.650000e+00 5.000000e-02 5.000000e-02 3.808000e+00 1.882976e-01 1.882976e-01 +1.750000e+00 5.000000e-02 5.000000e-02 3.755000e+00 1.822224e-01 1.822224e-01 +1.850000e+00 5.000000e-02 5.000000e-02 3.721000e+00 1.734416e-01 1.734416e-01 +1.950000e+00 5.000000e-02 5.000000e-02 3.685000e+00 1.666283e-01 1.666283e-01 +2.050000e+00 5.000000e-02 5.000000e-02 3.636000e+00 1.690976e-01 1.690976e-01 +2.150000e+00 5.000000e-02 5.000000e-02 3.616000e+00 1.622745e-01 1.622745e-01 +2.250000e+00 5.000000e-02 5.000000e-02 3.513000e+00 1.786645e-01 1.786645e-01 +2.350000e+00 5.000000e-02 5.000000e-02 3.429000e+00 1.767060e-01 1.767060e-01 +2.450000e+00 5.000000e-02 5.000000e-02 3.473000e+00 1.886637e-01 1.886637e-01 +2.550000e+00 5.000000e-02 5.000000e-02 3.407000e+00 2.069517e-01 2.069517e-01 +2.650000e+00 5.000000e-02 5.000000e-02 3.354000e+00 2.406657e-01 2.406657e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d04-x01-y06 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d04-x01-y06 +Title: doi:10.17182/hepdata.69240.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 6.510000e+00 3.497042e-01 3.497042e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 6.544000e+00 3.492921e-01 3.492921e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 6.473000e+00 3.179261e-01 3.179261e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 6.386000e+00 2.845242e-01 2.845242e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 6.360000e+00 2.801303e-01 2.801303e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 6.303000e+00 2.694624e-01 2.694624e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 6.273000e+00 2.709336e-01 2.709336e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 6.215000e+00 2.719007e-01 2.719007e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 6.194000e+00 2.786772e-01 2.786772e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 6.097000e+00 2.891107e-01 2.891107e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 6.094000e+00 2.959189e-01 2.959189e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 6.066000e+00 3.027359e-01 3.027359e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 5.992000e+00 2.803712e-01 2.803712e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 5.975000e+00 2.881389e-01 2.881389e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 5.928000e+00 2.832825e-01 2.832825e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 5.907000e+00 2.842534e-01 2.842534e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 5.826000e+00 2.684939e-01 2.684939e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 5.826000e+00 2.581182e-01 2.581182e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 5.763000e+00 2.539961e-01 2.539961e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 5.738000e+00 2.520675e-01 2.520675e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 5.702000e+00 2.414808e-01 2.414808e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 5.583000e+00 2.354400e-01 2.354400e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 5.601000e+00 2.299761e-01 2.299761e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 5.559000e+00 2.277718e-01 2.277718e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 5.460000e+00 2.153625e-01 2.153625e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 5.419000e+00 2.141051e-01 2.141051e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 5.380000e+00 2.093466e-01 2.093466e-01 +5.000000e-02 5.000000e-02 5.000000e-02 5.370000e+00 2.122004e-01 2.122004e-01 +1.500000e-01 5.000000e-02 5.000000e-02 5.269000e+00 2.099905e-01 2.099905e-01 +2.500000e-01 5.000000e-02 5.000000e-02 5.217000e+00 2.087343e-01 2.087343e-01 +3.500000e-01 5.000000e-02 5.000000e-02 5.192000e+00 2.125512e-01 2.125512e-01 +4.500000e-01 5.000000e-02 5.000000e-02 5.122000e+00 2.113007e-01 2.113007e-01 +5.500000e-01 5.000000e-02 5.000000e-02 5.020000e+00 2.164809e-01 2.164809e-01 +6.500000e-01 5.000000e-02 5.000000e-02 4.971000e+00 2.145600e-01 2.145600e-01 +7.500000e-01 5.000000e-02 5.000000e-02 4.951000e+00 2.164809e-01 2.164809e-01 +8.500000e-01 5.000000e-02 5.000000e-02 4.877000e+00 2.229484e-01 2.229484e-01 +9.500000e-01 5.000000e-02 5.000000e-02 4.809000e+00 2.255837e-01 2.255837e-01 +1.050000e+00 5.000000e-02 5.000000e-02 4.788000e+00 2.275170e-01 2.275170e-01 +1.150000e+00 5.000000e-02 5.000000e-02 4.738000e+00 2.321077e-01 2.321077e-01 +1.250000e+00 5.000000e-02 5.000000e-02 4.640000e+00 2.338055e-01 2.338055e-01 +1.350000e+00 5.000000e-02 5.000000e-02 4.631000e+00 2.279846e-01 2.279846e-01 +1.450000e+00 5.000000e-02 5.000000e-02 4.557000e+00 2.277411e-01 2.277411e-01 +1.550000e+00 5.000000e-02 5.000000e-02 4.481000e+00 2.236180e-01 2.236180e-01 +1.650000e+00 5.000000e-02 5.000000e-02 4.406000e+00 2.194949e-01 2.194949e-01 +1.750000e+00 5.000000e-02 5.000000e-02 4.375000e+00 2.136773e-01 2.136773e-01 +1.850000e+00 5.000000e-02 5.000000e-02 4.304000e+00 2.018143e-01 2.018143e-01 +1.950000e+00 5.000000e-02 5.000000e-02 4.245000e+00 1.938298e-01 1.938298e-01 +2.050000e+00 5.000000e-02 5.000000e-02 4.159000e+00 1.950000e-01 1.950000e-01 +2.150000e+00 5.000000e-02 5.000000e-02 4.130000e+00 1.872565e-01 1.872565e-01 +2.250000e+00 5.000000e-02 5.000000e-02 4.024000e+00 2.056794e-01 2.056794e-01 +2.350000e+00 5.000000e-02 5.000000e-02 3.952000e+00 2.059150e-01 2.059150e-01 +2.450000e+00 5.000000e-02 5.000000e-02 3.915000e+00 2.136937e-01 2.136937e-01 +2.550000e+00 5.000000e-02 5.000000e-02 3.819000e+00 2.335744e-01 2.335744e-01 +2.650000e+00 5.000000e-02 5.000000e-02 3.757000e+00 2.735416e-01 2.735416e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d04-x01-y07 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d04-x01-y07 +Title: doi:10.17182/hepdata.69240.v1/t4 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +-2.650000e+00 5.000000e-02 5.000000e-02 8.618000e+00 4.632688e-01 4.632688e-01 +-2.550000e+00 5.000000e-02 5.000000e-02 8.520000e+00 4.638157e-01 4.638157e-01 +-2.450000e+00 5.000000e-02 5.000000e-02 8.473000e+00 4.166173e-01 4.166173e-01 +-2.350000e+00 5.000000e-02 5.000000e-02 8.354000e+00 3.735144e-01 3.735144e-01 +-2.250000e+00 5.000000e-02 5.000000e-02 8.377000e+00 3.696322e-01 3.696322e-01 +-2.150000e+00 5.000000e-02 5.000000e-02 8.267000e+00 3.538997e-01 3.538997e-01 +-2.050000e+00 5.000000e-02 5.000000e-02 8.200000e+00 3.556473e-01 3.556473e-01 +-1.950000e+00 5.000000e-02 5.000000e-02 8.137000e+00 3.524897e-01 3.524897e-01 +-1.850000e+00 5.000000e-02 5.000000e-02 8.143000e+00 3.682010e-01 3.682010e-01 +-1.750000e+00 5.000000e-02 5.000000e-02 8.009000e+00 3.815088e-01 3.815088e-01 +-1.650000e+00 5.000000e-02 5.000000e-02 7.912000e+00 3.851493e-01 3.851493e-01 +-1.550000e+00 5.000000e-02 5.000000e-02 7.862000e+00 3.929224e-01 3.929224e-01 +-1.450000e+00 5.000000e-02 5.000000e-02 7.861000e+00 3.679470e-01 3.679470e-01 +-1.350000e+00 5.000000e-02 5.000000e-02 7.719000e+00 3.735077e-01 3.735077e-01 +-1.250000e+00 5.000000e-02 5.000000e-02 7.643000e+00 3.655092e-01 3.655092e-01 +-1.150000e+00 5.000000e-02 5.000000e-02 7.613000e+00 3.664778e-01 3.664778e-01 +-1.050000e+00 5.000000e-02 5.000000e-02 7.444000e+00 3.439826e-01 3.439826e-01 +-9.500000e-01 5.000000e-02 5.000000e-02 7.470000e+00 3.314529e-01 3.314529e-01 +-8.500000e-01 5.000000e-02 5.000000e-02 7.357000e+00 3.244457e-01 3.244457e-01 +-7.500000e-01 5.000000e-02 5.000000e-02 7.388000e+00 3.256824e-01 3.256824e-01 +-6.500000e-01 5.000000e-02 5.000000e-02 7.325000e+00 3.112941e-01 3.112941e-01 +-5.500000e-01 5.000000e-02 5.000000e-02 7.241000e+00 3.062189e-01 3.062189e-01 +-4.500000e-01 5.000000e-02 5.000000e-02 7.115000e+00 2.925491e-01 2.925491e-01 +-3.500000e-01 5.000000e-02 5.000000e-02 7.118000e+00 2.925491e-01 2.925491e-01 +-2.500000e-01 5.000000e-02 5.000000e-02 6.965000e+00 2.760670e-01 2.760670e-01 +-1.500000e-01 5.000000e-02 5.000000e-02 6.928000e+00 2.751182e-01 2.751182e-01 +-5.000000e-02 5.000000e-02 5.000000e-02 6.845000e+00 2.681641e-01 2.681641e-01 +5.000000e-02 5.000000e-02 5.000000e-02 6.766000e+00 2.678451e-01 2.678451e-01 +1.500000e-01 5.000000e-02 5.000000e-02 6.655000e+00 2.656313e-01 2.656313e-01 +2.500000e-01 5.000000e-02 5.000000e-02 6.601000e+00 2.643672e-01 2.643672e-01 +3.500000e-01 5.000000e-02 5.000000e-02 6.530000e+00 2.691189e-01 2.691189e-01 +4.500000e-01 5.000000e-02 5.000000e-02 6.494000e+00 2.688122e-01 2.688122e-01 +5.500000e-01 5.000000e-02 5.000000e-02 6.340000e+00 2.739416e-01 2.739416e-01 +6.500000e-01 5.000000e-02 5.000000e-02 6.241000e+00 2.695329e-01 2.695329e-01 +7.500000e-01 5.000000e-02 5.000000e-02 6.189000e+00 2.714480e-01 2.714480e-01 +8.500000e-01 5.000000e-02 5.000000e-02 6.103000e+00 2.798035e-01 2.798035e-01 +9.500000e-01 5.000000e-02 5.000000e-02 6.019000e+00 2.831148e-01 2.831148e-01 +1.050000e+00 5.000000e-02 5.000000e-02 5.937000e+00 2.828516e-01 2.828516e-01 +1.150000e+00 5.000000e-02 5.000000e-02 5.842000e+00 2.864577e-01 2.864577e-01 +1.250000e+00 5.000000e-02 5.000000e-02 5.764000e+00 2.910464e-01 2.910464e-01 +1.350000e+00 5.000000e-02 5.000000e-02 5.686000e+00 2.801464e-01 2.801464e-01 +1.450000e+00 5.000000e-02 5.000000e-02 5.620000e+00 2.818315e-01 2.818315e-01 +1.550000e+00 5.000000e-02 5.000000e-02 5.525000e+00 2.767400e-01 2.767400e-01 +1.650000e+00 5.000000e-02 5.000000e-02 5.438000e+00 2.716487e-01 2.716487e-01 +1.750000e+00 5.000000e-02 5.000000e-02 5.368000e+00 2.629449e-01 2.629449e-01 +1.850000e+00 5.000000e-02 5.000000e-02 5.278000e+00 2.491766e-01 2.491766e-01 +1.950000e+00 5.000000e-02 5.000000e-02 5.130000e+00 2.351616e-01 2.351616e-01 +2.050000e+00 5.000000e-02 5.000000e-02 5.020000e+00 2.360191e-01 2.360191e-01 +2.150000e+00 5.000000e-02 5.000000e-02 5.013000e+00 2.276071e-01 2.276071e-01 +2.250000e+00 5.000000e-02 5.000000e-02 4.847000e+00 2.483566e-01 2.483566e-01 +2.350000e+00 5.000000e-02 5.000000e-02 4.741000e+00 2.481310e-01 2.481310e-01 +2.450000e+00 5.000000e-02 5.000000e-02 4.726000e+00 2.587856e-01 2.587856e-01 +2.550000e+00 5.000000e-02 5.000000e-02 4.651000e+00 2.858479e-01 2.858479e-01 +2.650000e+00 5.000000e-02 5.000000e-02 4.517000e+00 3.341527e-01 3.341527e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d05-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d05-x01-y01 +Title: doi:10.17182/hepdata.69240.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 7.250000e+01 3.171041e+00 3.171041e+00 +3.000000e+00 2.000000e+00 2.000000e+00 5.503900e+01 2.053308e+00 2.053308e+00 +7.500000e+00 2.500000e+00 2.500000e+00 4.536200e+01 1.688221e+00 1.688221e+00 +1.500000e+01 5.000000e+00 5.000000e+00 3.718600e+01 1.419596e+00 1.419596e+00 +2.500000e+01 5.000000e+00 5.000000e+00 3.016800e+01 1.150966e+00 1.150966e+00 +3.500000e+01 5.000000e+00 5.000000e+00 2.479900e+01 1.037328e+00 1.037328e+00 +5.000000e+01 1.000000e+01 1.000000e+01 1.824800e+01 8.633209e-01 8.633209e-01 +7.500000e+01 1.500000e+01 1.500000e+01 8.824000e+00 6.162224e-01 6.162224e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d05-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d05-x01-y02 +Title: doi:10.17182/hepdata.69240.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 6.937700e+01 2.457927e+00 2.457927e+00 +3.000000e+00 2.000000e+00 2.000000e+00 5.344900e+01 1.681602e+00 1.681602e+00 +7.500000e+00 2.500000e+00 2.500000e+00 4.427400e+01 1.391679e+00 1.391679e+00 +1.500000e+01 5.000000e+00 5.000000e+00 3.657400e+01 1.184036e+00 1.184036e+00 +2.500000e+01 5.000000e+00 5.000000e+00 2.976700e+01 9.636114e-01 9.636114e-01 +3.500000e+01 5.000000e+00 5.000000e+00 2.468300e+01 8.867525e-01 8.867525e-01 +5.000000e+01 1.000000e+01 1.000000e+01 1.824300e+01 7.516814e-01 7.516814e-01 +7.500000e+01 1.500000e+01 1.500000e+01 8.995000e+00 5.611925e-01 5.611925e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d05-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d05-x01-y03 +Title: doi:10.17182/hepdata.69240.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 6.004100e+01 1.842903e+00 1.842903e+00 +3.000000e+00 2.000000e+00 2.000000e+00 4.687200e+01 1.316669e+00 1.316669e+00 +7.500000e+00 2.500000e+00 2.500000e+00 3.914700e+01 1.099393e+00 1.099393e+00 +1.500000e+01 5.000000e+00 5.000000e+00 3.263400e+01 9.467233e-01 9.467233e-01 +2.500000e+01 5.000000e+00 5.000000e+00 2.683100e+01 7.780559e-01 7.780559e-01 +3.500000e+01 5.000000e+00 5.000000e+00 2.240100e+01 7.282053e-01 7.282053e-01 +5.000000e+01 1.000000e+01 1.000000e+01 1.671500e+01 6.290223e-01 6.290223e-01 +7.500000e+01 1.500000e+01 1.500000e+01 8.442000e+00 4.890511e-01 4.890511e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d05-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d05-x01-y04 +Title: doi:10.17182/hepdata.69240.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 5.421300e+01 1.700943e+00 1.700943e+00 +3.000000e+00 2.000000e+00 2.000000e+00 4.309000e+01 1.237715e+00 1.237715e+00 +7.500000e+00 2.500000e+00 2.500000e+00 3.657300e+01 1.049346e+00 1.049346e+00 +1.500000e+01 5.000000e+00 5.000000e+00 3.087900e+01 9.144818e-01 9.144818e-01 +2.500000e+01 5.000000e+00 5.000000e+00 2.567700e+01 7.598276e-01 7.598276e-01 +3.500000e+01 5.000000e+00 5.000000e+00 2.169000e+01 7.173263e-01 7.173263e-01 +5.000000e+01 1.000000e+01 1.000000e+01 1.644000e+01 6.257955e-01 6.257955e-01 +7.500000e+01 1.500000e+01 1.500000e+01 8.550000e+00 4.986281e-01 4.986281e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d05-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d05-x01-y05 +Title: doi:10.17182/hepdata.69240.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 5.081900e+01 1.922882e+00 1.922882e+00 +3.000000e+00 2.000000e+00 2.000000e+00 4.137300e+01 1.391735e+00 1.391735e+00 +7.500000e+00 2.500000e+00 2.500000e+00 3.562100e+01 1.194654e+00 1.194654e+00 +1.500000e+01 5.000000e+00 5.000000e+00 3.057500e+01 1.052240e+00 1.052240e+00 +2.500000e+01 5.000000e+00 5.000000e+00 2.583200e+01 8.896527e-01 8.896527e-01 +3.500000e+01 5.000000e+00 5.000000e+00 2.223400e+01 8.398190e-01 8.398190e-01 +5.000000e+01 1.000000e+01 1.000000e+01 1.720500e+01 7.367537e-01 7.367537e-01 +7.500000e+01 1.500000e+01 1.500000e+01 9.273000e+00 5.883451e-01 5.883451e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d05-x01-y06 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d05-x01-y06 +Title: doi:10.17182/hepdata.69240.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 4.414900e+01 2.269160e+00 2.269160e+00 +3.000000e+00 2.000000e+00 2.000000e+00 3.673300e+01 1.619425e+00 1.619425e+00 +7.500000e+00 2.500000e+00 2.500000e+00 3.240600e+01 1.421820e+00 1.421820e+00 +1.500000e+01 5.000000e+00 5.000000e+00 2.818700e+01 1.259010e+00 1.259010e+00 +2.500000e+01 5.000000e+00 5.000000e+00 2.417900e+01 1.079234e+00 1.079234e+00 +3.500000e+01 5.000000e+00 5.000000e+00 2.128600e+01 1.016509e+00 1.016509e+00 +5.000000e+01 1.000000e+01 1.000000e+01 1.690600e+01 8.871313e-01 8.871313e-01 +7.500000e+01 1.500000e+01 1.500000e+01 9.416000e+00 6.899920e-01 6.899920e-01 +END YODA_SCATTER2D_V2 +BEGIN YODA_SCATTER2D_V2 /REF/ATLAS_2015_I1386475/d05-x01-y07 +IsRef: 1 +Path: /REF/ATLAS_2015_I1386475/d05-x01-y07 +Title: doi:10.17182/hepdata.69240.v1/t5 +Type: Scatter2D +--- +# xval xerr- xerr+ yval yerr- yerr+ +5.000000e-01 5.000000e-01 5.000000e-01 5.775800e+01 2.143961e+00 2.143961e+00 +3.000000e+00 2.000000e+00 2.000000e+00 4.573000e+01 1.501280e+00 1.501280e+00 +7.500000e+00 2.500000e+00 2.500000e+00 3.868000e+01 1.267739e+00 1.267739e+00 +1.500000e+01 5.000000e+00 5.000000e+00 3.255500e+01 1.097449e+00 1.097449e+00 +2.500000e+01 5.000000e+00 5.000000e+00 2.700000e+01 9.103801e-01 9.103801e-01 +3.500000e+01 5.000000e+00 5.000000e+00 2.279600e+01 8.469746e-01 8.469746e-01 +5.000000e+01 1.000000e+01 1.000000e+01 1.724200e+01 7.286247e-01 7.286247e-01 +7.500000e+01 1.500000e+01 1.500000e+01 8.869000e+00 5.594086e-01 5.594086e-01 +END YODA_SCATTER2D_V2 diff --git a/analyses/pluginATLAS/ATLAS_pPb_Calib.cc b/analyses/pluginATLAS/ATLAS_pPb_Calib.cc new file mode 100644 --- /dev/null +++ b/analyses/pluginATLAS/ATLAS_pPb_Calib.cc @@ -0,0 +1,81 @@ +// -*- C++ -*- +#include "Rivet/Tools/AtlasCommon.hh" +#include "Rivet/Projections/ImpactParameterProjection.hh" + +namespace Rivet { + + +/// Generic analysis looking at various distributions of final state particles +class ATLAS_pPb_Calib : public Analysis { + +public: + + DEFAULT_RIVET_ANALYSIS_CTOR(ATLAS_pPb_Calib); + + /// Book histograms and initialise projections before the run + void init() { + + // One projection for the actual observable, and one for the + // generated impact parameter. + declare(ATLAS::SumET_PB_Centrality(), "Centrality"); + declare(ImpactParameterProjection(), "IMP"); + declare(ATLAS::MinBiasTrigger(), "Trigger"); + + // The calibrationhistogram: + _calib = bookHisto1D("SumETPb", 100, 0.0, 200.0); + + // If histogram was pre-loaded, the calibration is done. + _done = ( _calib->numEntries() > 0 ); + + // The alternative histogram based on impact parameter. Note that + // it MUST be named the same as the histogram for the experimental + // observable with an added _IMP suffix for the Pecentile<> + // binning to work properly. + _impcalib = bookHisto1D("SumETPb_IMP", 400, 0.0, 20.0); + + + } + + /// Perform the per-event analysis + void analyze(const Event& event) { + + if ( _done ) return; + + const double weight = event.weight(); + + // The alternative centrality based on generated impact + // parameter, assumes that the generator does not describe the + // full final state, and should therefore be filled even if the + // event is not triggered. + _impcalib->fill(apply(event, "IMP")(), weight); + + if ( !apply(event, "Trigger")() ) vetoEvent; + + _calib->fill(apply(event, "Centrality")(), weight); + + } + + /// Finalize + void finalize() { + + _calib->normalize(); + _impcalib->normalize(); + + } + +private: + + /// The calibration histograms. + Histo1DPtr _calib; + Histo1DPtr _impcalib; + + /// Safeguard from adding to a pre-loaded histogram. + bool _done; + +}; + + +// The hook for the plugin system +DECLARE_RIVET_PLUGIN(ATLAS_pPb_Calib); + +} diff --git a/analyses/pluginATLAS/ATLAS_pPb_Calib.info b/analyses/pluginATLAS/ATLAS_pPb_Calib.info new file mode 100644 --- /dev/null +++ b/analyses/pluginATLAS/ATLAS_pPb_Calib.info @@ -0,0 +1,37 @@ +Name: ATLAS_pPb_Calib +Summary: ATLAS proton-lead centrality calibration analysis. +Status: UNVALIDATED +Authors: + - Leif Lönnblad + - Christian Bierlich +NumEvents: 50000 +References: + - arXiv:1508.00848 [hep-ex], Eur.Phys.J. C76 (2016) no.4, 199 +RunInfo: Any! +Description: + 'Calibration analysis for ATLAS pPb centrality. The centrality measure + is $\sum E_\perp$ in the lead direction. The reference YODA file + contains the experimental centrality calibration, but extracted + from the plot in the paper. Note that this has not been unfolded + for detector effects.' + +BibKey: Aad:2015zza +BibTeX: '@article{Aad:2015zza, + author = "Aad, Georges and others", + title = "{Measurement of the centrality dependence of the + charged-particle pseudorapidity distribution in + proton–lead collisions at $\sqrt{s_{_\text {NN}}} = + 5.02$ TeV with the ATLAS detector}", + collaboration = "ATLAS", + journal = "Eur. Phys. J.", + volume = "C76", + year = "2016", + number = "4", + pages = "199", + doi = "10.1140/epjc/s10052-016-4002-3", + eprint = "1508.00848", + archivePrefix = "arXiv", + primaryClass = "hep-ex", + reportNumber = "CERN-PH-EP-2015-160", + SLACcitation = "%%CITATION = ARXIV:1508.00848;%%" +}' diff --git a/analyses/pluginATLAS/ATLAS_pPb_Calib.plot b/analyses/pluginATLAS/ATLAS_pPb_Calib.plot new file mode 100644 --- /dev/null +++ b/analyses/pluginATLAS/ATLAS_pPb_Calib.plot @@ -0,0 +1,6 @@ +# BEGIN PLOT /MC_Centrality/SumETPb +Title=Sum $E_T^{Pb}$ distribution, p+Pb $\sqrt{s_{NN}}=5.02$ TeV +XLabel=$\sum E_T^{Pb}$ +YLabel=$(1/N_{evt}) \; \mathrm{d}N/\mathrm{d}\sum E_T^{Pb}$ +# END PLOT + diff --git a/analyses/pluginATLAS/ATLAS_pPb_Calib.yoda b/analyses/pluginATLAS/ATLAS_pPb_Calib.yoda new file mode 100644 --- /dev/null +++ b/analyses/pluginATLAS/ATLAS_pPb_Calib.yoda @@ -0,0 +1,105 @@ +# BEGIN YODA_SCATTER2D /REF/ATLAS_pPb_Calib/SumETPb +Path=/REF/ATLAS_pPb_Calib/SumETPb +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +1 1.0 1.0 0.026433905291155 6.0e-7 6.0e-7 +3 1.0 1.0 0.0356724593141198 6.0e-7 6.0e-7 +5 1.0 1.0 0.0329659708829365 6.0e-7 6.0e-7 +7 1.0 1.0 0.0292277573876039 6.0e-7 6.0e-7 +9 1.0 1.0 0.0266992277205129 6.0e-7 6.0e-7 +11 1.0 1.0 0.0247287959369707 6.0e-7 6.0e-7 +13 1.0 1.0 0.0231605480909041 6.0e-7 6.0e-7 +15 1.0 1.0 0.0215676779843033 6.0e-7 6.0e-7 +17 1.0 1.0 0.0202422148507814 6.0e-7 6.0e-7 +19 1.0 1.0 0.0191019905081114 6.0e-7 6.0e-7 +21 1.0 1.0 0.0179312930096975 6.0e-7 6.0e-7 +23 1.0 1.0 0.0169304004601292 6.0e-7 6.0e-7 +25 1.0 1.0 0.0158904991267403 6.0e-7 6.0e-7 +27 1.0 1.0 0.014999190244734 6.0e-7 6.0e-7 +29 1.0 1.0 0.0141849733133324 6.0e-7 6.0e-7 +31 1.0 1.0 0.0133146626796707 6.0e-7 6.0e-7 +33 1.0 1.0 0.0123949194577669 6.0e-7 6.0e-7 +35 1.0 1.0 0.0116996800120865 6.0e-7 6.0e-7 +37 1.0 1.0 0.0109320444338458 6.0e-7 6.0e-7 +39 1.0 1.0 0.0100626105356297 6.0e-7 6.0e-7 +41 1.0 1.0 0.00935197743407604 6.0e-7 6.0e-7 +43 1.0 1.0 0.00864243794000489 6.0e-7 6.0e-7 +45 1.0 1.0 0.00799855436037713 6.0e-7 6.0e-7 +47 1.0 1.0 0.00730026559389592 6.0e-7 6.0e-7 +49 1.0 1.0 0.00672015474402399 6.0e-7 6.0e-7 +51 1.0 1.0 0.00614188724849189 6.0e-7 6.0e-7 +53 1.0 1.0 0.00563387143007573 6.0e-7 6.0e-7 +55 1.0 1.0 0.00520079450100681 6.0e-7 6.0e-7 +57 1.0 1.0 0.00470515268017545 6.0e-7 6.0e-7 +59 1.0 1.0 0.0042735188361277 6.0e-7 6.0e-7 +61 1.0 1.0 0.00395028220117227 6.0e-7 6.0e-7 +63 1.0 1.0 0.0035243909516945 6.0e-7 6.0e-7 +65 1.0 1.0 0.00315259491593193 6.0e-7 6.0e-7 +67 1.0 1.0 0.00286390373331309 6.0e-7 6.0e-7 +69 1.0 1.0 0.00257903279345153 6.0e-7 6.0e-7 +71 1.0 1.0 0.00228856121374107 6.0e-7 6.0e-7 +73 1.0 1.0 0.00206315111747963 6.0e-7 6.0e-7 +75 1.0 1.0 0.00185050505624057 6.0e-7 6.0e-7 +77 1.0 1.0 0.00165242698106285 6.0e-7 6.0e-7 +79 1.0 1.0 0.00142552591969422 6.0e-7 6.0e-7 +81 1.0 1.0 0.00129643602017987 6.0e-7 6.0e-7 +83 1.0 1.0 0.00114326285625885 6.0e-7 6.0e-7 +85 1.0 1.0 0.0010073507668534 6.0e-7 6.0e-7 +87 1.0 1.0 0.00086984314473827 6.0e-7 6.0e-7 +89 1.0 1.0 0.000800375037434358 6.0e-7 6.0e-7 +91 1.0 1.0 0.000701419565466503 6.0e-7 6.0e-7 +93 1.0 1.0 0.0006034263019753 6.0e-7 6.0e-7 +95 1.0 1.0 0.000558046549456325 6.0e-7 6.0e-7 +97 1.0 1.0 0.00048017011878087 6.0e-7 6.0e-7 +99 1.0 1.0 0.000407903552816494 6.0e-7 6.0e-7 +101 1.0 1.0 0.000365333907109052 6.0e-7 6.0e-7 +103 1.0 1.0 0.00031832250942536 6.0e-7 6.0e-7 +105 1.0 1.0 0.000273416231149758 6.0e-7 6.0e-7 +107 1.0 1.0 0.000231781021653951 6.0e-7 6.0e-7 +109 1.0 1.0 0.000201140886726608 6.0e-7 6.0e-7 +111 1.0 1.0 0.000187814907942984 6.0e-7 6.0e-7 +113 1.0 1.0 0.000157404340006397 6.0e-7 6.0e-7 +115 1.0 1.0 0.000138696978093341 6.0e-7 6.0e-7 +117 1.0 1.0 0.000121386839011078 6.0e-7 6.0e-7 +119 1.0 1.0 9.94028911278862e-05 6.0e-7 6.0e-7 +121 1.0 1.0 8.11599192653393e-05 6.0e-7 6.0e-7 +123 1.0 1.0 7.48454921075343e-05 6.0e-7 6.0e-7 +125 1.0 1.0 6.36178083202589e-05 6.0e-7 6.0e-7 +127 1.0 1.0 4.93500481892389e-05 6.0e-7 6.0e-7 +129 1.0 1.0 4.30353487437446e-05 6.0e-7 6.0e-7 +131 1.0 1.0 3.46150893566469e-05 6.0e-7 6.0e-7 +133 1.0 1.0 3.53177359385025e-05 6.0e-7 6.0e-7 +135 1.0 1.0 3.34463685169656e-05 6.0e-7 6.0e-7 +137 1.0 1.0 2.17513144352331e-05 6.0e-7 6.0e-7 +139 1.0 1.0 2.2921143608273e-05 6.0e-7 6.0e-7 +141 1.0 1.0 1.63723538208324e-05 6.0e-7 6.0e-7 +143 1.0 1.0 1.70739371347754e-05 6.0e-7 6.0e-7 +145 1.0 1.0 1.33314862326709e-05 6.0e-7 6.0e-7 +147 1.0 1.0 9.35568960183511e-06 6.0e-7 6.0e-7 +149 1.0 1.0 8.65398238805364e-06 6.0e-7 6.0e-7 +151 1.0 1.0 6.78275450054245e-06 6.0e-7 6.0e-7 +153 1.0 1.0 4.21001034057646e-06 6.0e-7 6.0e-7 +155 1.0 1.0 6.0810323235536e-06 6.0e-7 6.0e-7 +157 1.0 1.0 4.21001034057646e-06 6.0e-7 6.0e-7 +159 1.0 1.0 4.91173578953359e-06 6.0e-7 6.0e-7 +161 1.0 1.0 3.97616258743694e-06 6.0e-7 6.0e-7 +163 1.0 1.0 2.57278761203589e-06 6.0e-7 6.0e-7 +165 1.0 1.0 1.63722947523766e-06 6.0e-7 6.0e-7 +167 1.0 1.0 1.40334349974549e-06 6.0e-7 6.0e-7 +169 1.0 1.0 9.35562209472569e-07 6.0e-7 6.0e-7 +171 1.0 1.0 1.63722947523766e-06 6.0e-7 6.0e-7 +173 1.0 1.0 0 6.0e-7 6.0e-7 +175 1.0 1.0 7.01672670918585e-07 6.0e-7 6.0e-7 +177 1.0 1.0 0 6.0e-7 6.0e-7 +179 1.0 1.0 0 6.0e-7 6.0e-7 +181 1.0 1.0 0 6.0e-7 6.0e-7 +183 1.0 1.0 0 6.0e-7 6.0e-7 +185 1.0 1.0 0 6.0e-7 6.0e-7 +187 1.0 1.0 0 6.0e-7 6.0e-7 +189 1.0 1.0 0 6.0e-7 6.0e-7 +191 1.0 1.0 0 6.0e-7 6.0e-7 +193 1.0 1.0 7.01672670918585e-07 6.0e-7 6.0e-7 +195 1.0 1.0 0 6.0e-7 6.0e-7 +197 1.0 1.0 0 6.0e-7 6.0e-7 +199 1.0 1.0 0 6.0e-7 6.0e-7 +# END YODA_SCATTER2D diff --git a/analyses/pluginMC/MC_Cent_pPb_Calib.cc b/analyses/pluginMC/MC_Cent_pPb_Calib.cc new file mode 100644 --- /dev/null +++ b/analyses/pluginMC/MC_Cent_pPb_Calib.cc @@ -0,0 +1,81 @@ +// -*- C++ -*- +#include "Rivet/Analyses/MC_Cent_pPb.hh" +#include "Rivet/Projections/ImpactParameterProjection.hh" + +namespace Rivet { + + +/// Generic analysis looking at various distributions of final state particles +class MC_Cent_pPb_Calib : public Analysis { + +public: + + DEFAULT_RIVET_ANALYSIS_CTOR(MC_Cent_pPb_Calib); + + /// Book histograms and initialise projections before the run + void init() { + + // One projection for the actual observable, and one for the + // generated impact parameter. + declare(MC_SumETFwdPbCentrality(), "Centrality"); + declare(ImpactParameterProjection(), "IMP"); + declare(MC_pPbMinBiasTrigger(), "Trigger"); + + // The calibrationhistogram: + _calib = bookHisto1D("SumETPb", 100, 0.0, 200.0); + + // If histogram was pre-loaded, the calibration is done. + _done = ( _calib->numEntries() > 0 ); + + // The alternative histogram based on impact parameter. Note that + // it MUST be named the same as the histogram for the experimental + // observable with an added _IMP suffix for the Pecentile<> + // binning to work properly. + _impcalib = bookHisto1D("SumETPb_IMP", 400, 0.0, 20.0); + + + } + + /// Perform the per-event analysis + void analyze(const Event& event) { + + if ( _done ) return; + + const double weight = event.weight(); + + // The alternative centrality based on generated impact + // parameter, assumes that the generator does not describe the + // full final state, and should therefore be filled even if the + // event is not triggered. + _impcalib->fill(apply(event, "IMP")(), weight); + + if ( !apply(event, "Trigger")() ) vetoEvent; + + _calib->fill(apply(event, "Centrality")(), weight); + + } + + /// Finalize + void finalize() { + + _calib->normalize(); + _impcalib->normalize(); + + } + +private: + + /// The calibration histograms. + Histo1DPtr _calib; + Histo1DPtr _impcalib; + + /// Safeguard from adding to a pre-loaded histogram. + bool _done; + +}; + + +// The hook for the plugin system +DECLARE_RIVET_PLUGIN(MC_Cent_pPb_Calib); + +} diff --git a/analyses/pluginMC/MC_Cent_pPb_Calib.info b/analyses/pluginMC/MC_Cent_pPb_Calib.info new file mode 100644 --- /dev/null +++ b/analyses/pluginMC/MC_Cent_pPb_Calib.info @@ -0,0 +1,39 @@ +Name: MC_Cent_pPb_Calib +Summary: Template analysis for generating calibration histograms + for centrality +Status: UNVALIDATED +Authors: + - Leif Lönnblad +NumEvents: 50000 +References: + - arXiv:1508.00848 [hep-ex], Eur.Phys.J. C76 (2016) no.4, 199 +RunInfo: Any! +Description: + Template analysis for generating calibration histograms to be used + together with the CentralityProjection and Percentile<> + classes. The example is pPb collisions at 5 TeV and is based on the + ATLAS analysis arXiv:1508.00848 [hep-ex]. The reference YODA file + contains the experimental centrality calibration, but extracted + from the plot in the paper. Note that this has not been unfolded + for detector effects. + +BibKey: Aad:2015zza +BibTeX: '@article{Aad:2015zza, + author = "Aad, Georges and others", + title = "{Measurement of the centrality dependence of the + charged-particle pseudorapidity distribution in + proton–lead collisions at $\sqrt{s_{_\text {NN}}} = + 5.02$ TeV with the ATLAS detector}", + collaboration = "ATLAS", + journal = "Eur. Phys. J.", + volume = "C76", + year = "2016", + number = "4", + pages = "199", + doi = "10.1140/epjc/s10052-016-4002-3", + eprint = "1508.00848", + archivePrefix = "arXiv", + primaryClass = "hep-ex", + reportNumber = "CERN-PH-EP-2015-160", + SLACcitation = "%%CITATION = ARXIV:1508.00848;%%" +}' diff --git a/analyses/pluginMC/MC_Cent_pPb_Calib.plot b/analyses/pluginMC/MC_Cent_pPb_Calib.plot new file mode 100644 --- /dev/null +++ b/analyses/pluginMC/MC_Cent_pPb_Calib.plot @@ -0,0 +1,6 @@ +# BEGIN PLOT /MC_Centrality/SumETPb +Title=Sum $E_T^{Pb}$ distribution, p+Pb $\sqrt{s_{NN}}=5.02$ TeV +XLabel=$\sum E_T^{Pb}$ +YLabel=$(1/N_{evt}) \; \mathrm{d}N/\mathrm{d}\sum E_T^{Pb}$ +# END PLOT + diff --git a/analyses/pluginMC/MC_Cent_pPb_Calib.yoda b/analyses/pluginMC/MC_Cent_pPb_Calib.yoda new file mode 100644 --- /dev/null +++ b/analyses/pluginMC/MC_Cent_pPb_Calib.yoda @@ -0,0 +1,105 @@ +# BEGIN YODA_SCATTER2D /REF/MC_Cent_pPb_Calib/SumETPb +Path=/REF/MC_Cent_pPb_Calib/SumETPb +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +1 1.0 1.0 0.026433905291155 6.0e-7 6.0e-7 +3 1.0 1.0 0.0356724593141198 6.0e-7 6.0e-7 +5 1.0 1.0 0.0329659708829365 6.0e-7 6.0e-7 +7 1.0 1.0 0.0292277573876039 6.0e-7 6.0e-7 +9 1.0 1.0 0.0266992277205129 6.0e-7 6.0e-7 +11 1.0 1.0 0.0247287959369707 6.0e-7 6.0e-7 +13 1.0 1.0 0.0231605480909041 6.0e-7 6.0e-7 +15 1.0 1.0 0.0215676779843033 6.0e-7 6.0e-7 +17 1.0 1.0 0.0202422148507814 6.0e-7 6.0e-7 +19 1.0 1.0 0.0191019905081114 6.0e-7 6.0e-7 +21 1.0 1.0 0.0179312930096975 6.0e-7 6.0e-7 +23 1.0 1.0 0.0169304004601292 6.0e-7 6.0e-7 +25 1.0 1.0 0.0158904991267403 6.0e-7 6.0e-7 +27 1.0 1.0 0.014999190244734 6.0e-7 6.0e-7 +29 1.0 1.0 0.0141849733133324 6.0e-7 6.0e-7 +31 1.0 1.0 0.0133146626796707 6.0e-7 6.0e-7 +33 1.0 1.0 0.0123949194577669 6.0e-7 6.0e-7 +35 1.0 1.0 0.0116996800120865 6.0e-7 6.0e-7 +37 1.0 1.0 0.0109320444338458 6.0e-7 6.0e-7 +39 1.0 1.0 0.0100626105356297 6.0e-7 6.0e-7 +41 1.0 1.0 0.00935197743407604 6.0e-7 6.0e-7 +43 1.0 1.0 0.00864243794000489 6.0e-7 6.0e-7 +45 1.0 1.0 0.00799855436037713 6.0e-7 6.0e-7 +47 1.0 1.0 0.00730026559389592 6.0e-7 6.0e-7 +49 1.0 1.0 0.00672015474402399 6.0e-7 6.0e-7 +51 1.0 1.0 0.00614188724849189 6.0e-7 6.0e-7 +53 1.0 1.0 0.00563387143007573 6.0e-7 6.0e-7 +55 1.0 1.0 0.00520079450100681 6.0e-7 6.0e-7 +57 1.0 1.0 0.00470515268017545 6.0e-7 6.0e-7 +59 1.0 1.0 0.0042735188361277 6.0e-7 6.0e-7 +61 1.0 1.0 0.00395028220117227 6.0e-7 6.0e-7 +63 1.0 1.0 0.0035243909516945 6.0e-7 6.0e-7 +65 1.0 1.0 0.00315259491593193 6.0e-7 6.0e-7 +67 1.0 1.0 0.00286390373331309 6.0e-7 6.0e-7 +69 1.0 1.0 0.00257903279345153 6.0e-7 6.0e-7 +71 1.0 1.0 0.00228856121374107 6.0e-7 6.0e-7 +73 1.0 1.0 0.00206315111747963 6.0e-7 6.0e-7 +75 1.0 1.0 0.00185050505624057 6.0e-7 6.0e-7 +77 1.0 1.0 0.00165242698106285 6.0e-7 6.0e-7 +79 1.0 1.0 0.00142552591969422 6.0e-7 6.0e-7 +81 1.0 1.0 0.00129643602017987 6.0e-7 6.0e-7 +83 1.0 1.0 0.00114326285625885 6.0e-7 6.0e-7 +85 1.0 1.0 0.0010073507668534 6.0e-7 6.0e-7 +87 1.0 1.0 0.00086984314473827 6.0e-7 6.0e-7 +89 1.0 1.0 0.000800375037434358 6.0e-7 6.0e-7 +91 1.0 1.0 0.000701419565466503 6.0e-7 6.0e-7 +93 1.0 1.0 0.0006034263019753 6.0e-7 6.0e-7 +95 1.0 1.0 0.000558046549456325 6.0e-7 6.0e-7 +97 1.0 1.0 0.00048017011878087 6.0e-7 6.0e-7 +99 1.0 1.0 0.000407903552816494 6.0e-7 6.0e-7 +101 1.0 1.0 0.000365333907109052 6.0e-7 6.0e-7 +103 1.0 1.0 0.00031832250942536 6.0e-7 6.0e-7 +105 1.0 1.0 0.000273416231149758 6.0e-7 6.0e-7 +107 1.0 1.0 0.000231781021653951 6.0e-7 6.0e-7 +109 1.0 1.0 0.000201140886726608 6.0e-7 6.0e-7 +111 1.0 1.0 0.000187814907942984 6.0e-7 6.0e-7 +113 1.0 1.0 0.000157404340006397 6.0e-7 6.0e-7 +115 1.0 1.0 0.000138696978093341 6.0e-7 6.0e-7 +117 1.0 1.0 0.000121386839011078 6.0e-7 6.0e-7 +119 1.0 1.0 9.94028911278862e-05 6.0e-7 6.0e-7 +121 1.0 1.0 8.11599192653393e-05 6.0e-7 6.0e-7 +123 1.0 1.0 7.48454921075343e-05 6.0e-7 6.0e-7 +125 1.0 1.0 6.36178083202589e-05 6.0e-7 6.0e-7 +127 1.0 1.0 4.93500481892389e-05 6.0e-7 6.0e-7 +129 1.0 1.0 4.30353487437446e-05 6.0e-7 6.0e-7 +131 1.0 1.0 3.46150893566469e-05 6.0e-7 6.0e-7 +133 1.0 1.0 3.53177359385025e-05 6.0e-7 6.0e-7 +135 1.0 1.0 3.34463685169656e-05 6.0e-7 6.0e-7 +137 1.0 1.0 2.17513144352331e-05 6.0e-7 6.0e-7 +139 1.0 1.0 2.2921143608273e-05 6.0e-7 6.0e-7 +141 1.0 1.0 1.63723538208324e-05 6.0e-7 6.0e-7 +143 1.0 1.0 1.70739371347754e-05 6.0e-7 6.0e-7 +145 1.0 1.0 1.33314862326709e-05 6.0e-7 6.0e-7 +147 1.0 1.0 9.35568960183511e-06 6.0e-7 6.0e-7 +149 1.0 1.0 8.65398238805364e-06 6.0e-7 6.0e-7 +151 1.0 1.0 6.78275450054245e-06 6.0e-7 6.0e-7 +153 1.0 1.0 4.21001034057646e-06 6.0e-7 6.0e-7 +155 1.0 1.0 6.0810323235536e-06 6.0e-7 6.0e-7 +157 1.0 1.0 4.21001034057646e-06 6.0e-7 6.0e-7 +159 1.0 1.0 4.91173578953359e-06 6.0e-7 6.0e-7 +161 1.0 1.0 3.97616258743694e-06 6.0e-7 6.0e-7 +163 1.0 1.0 2.57278761203589e-06 6.0e-7 6.0e-7 +165 1.0 1.0 1.63722947523766e-06 6.0e-7 6.0e-7 +167 1.0 1.0 1.40334349974549e-06 6.0e-7 6.0e-7 +169 1.0 1.0 9.35562209472569e-07 6.0e-7 6.0e-7 +171 1.0 1.0 1.63722947523766e-06 6.0e-7 6.0e-7 +173 1.0 1.0 0 6.0e-7 6.0e-7 +175 1.0 1.0 7.01672670918585e-07 6.0e-7 6.0e-7 +177 1.0 1.0 0 6.0e-7 6.0e-7 +179 1.0 1.0 0 6.0e-7 6.0e-7 +181 1.0 1.0 0 6.0e-7 6.0e-7 +183 1.0 1.0 0 6.0e-7 6.0e-7 +185 1.0 1.0 0 6.0e-7 6.0e-7 +187 1.0 1.0 0 6.0e-7 6.0e-7 +189 1.0 1.0 0 6.0e-7 6.0e-7 +191 1.0 1.0 0 6.0e-7 6.0e-7 +193 1.0 1.0 7.01672670918585e-07 6.0e-7 6.0e-7 +195 1.0 1.0 0 6.0e-7 6.0e-7 +197 1.0 1.0 0 6.0e-7 6.0e-7 +199 1.0 1.0 0 6.0e-7 6.0e-7 +# END YODA_SCATTER2D diff --git a/analyses/pluginMC/MC_Cent_pPb_Eta.cc b/analyses/pluginMC/MC_Cent_pPb_Eta.cc new file mode 100644 --- /dev/null +++ b/analyses/pluginMC/MC_Cent_pPb_Eta.cc @@ -0,0 +1,78 @@ +// -*- C++ -*- +#include "Rivet/Analyses/MC_Cent_pPb.hh" +#include "Rivet/Tools/Percentile.hh" + +namespace Rivet { + + +class MC_Cent_pPb_Eta : public Analysis { + +public: + + DEFAULT_RIVET_ANALYSIS_CTOR(MC_Cent_pPb_Eta); + + /// Book histograms and initialise projections before the run + void init() { + + MSG_INFO("CENT parameter set to " << getOption("cent","REF")); + + // The centrality projection. + declareCentrality(MC_SumETFwdPbCentrality(), + "MC_Cent_pPb_Calib", "SumETPb", "CENT"); + + // The trigger projection. + declare(MC_pPbMinBiasTrigger(), "Trigger"); + + // The particles to be analysed. + declare(ChargedFinalState(Cuts::eta > -2.7 && Cuts::eta < 2.7 && + Cuts::pT > 0.1*GeV), "CFS"); + + // The centrality bins and the corresponding histograms. + std::vector< std::pair > centralityBins = + { {0, 1}, {1, 5}, {5, 10}, {10, 20}, + {20, 30}, {30, 40}, {40, 60}, {60, 90} }; + // std::vector< std::tuple > refData = + // { {2, 1, 8}, {2, 1, 7}, {2, 1, 6}, {2, 1, 5}, + // {2, 1, 4}, {2, 1, 3}, {2, 1, 2}, {2, 1, 1} }; + std::vector< std::tuple > refData; + for ( int i = 8; i > 0; --i ) + refData.push_back(std::tuple(2, 1, i)); + + // The centrality-binned histograms. + _hEta = bookPercentile("CENT", centralityBins, refData); + + } + + /// Perform the per-event analysis + void analyze(const Event& event) { + const double weight = event.weight(); + + if ( !apply(event, "Trigger")() ) vetoEvent; + + _hEta->init(event); + for ( const auto &p : apply(event,"CFS").particles() ) + _hEta->fill(p.eta(), weight); + + } + + /// Finalize + void finalize() { + + // Scale by the inverse sum of event weights in each centrality + // bin. + _hEta->normalizePerEvent(); + + } + +private: + + /// The histograms binned in centrality. + Percentile _hEta; + +}; + + +// The hook for the plugin system +DECLARE_RIVET_PLUGIN(MC_Cent_pPb_Eta); + +} diff --git a/analyses/pluginMC/MC_Cent_pPb_Eta.info b/analyses/pluginMC/MC_Cent_pPb_Eta.info new file mode 100644 --- /dev/null +++ b/analyses/pluginMC/MC_Cent_pPb_Eta.info @@ -0,0 +1,43 @@ +Name: MC_Cent_pPb_Eta +Summary: Template analysis for ontaining eta distributions binned in centrality +Status: UNVALIDATED +Authors: + - Leif Lönnblad +Options: + - cent=REF,GEN,IMP +NumEvents: 50000 +Reentrant: True +References: + - arXiv:1508.00848 [hep-ex], Eur.Phys.J. C76 (2016) no.4, 199 +RunInfo: Any! +Description: + Template analysis for obtaining eta distributions binned in + centrality using the CentralityProjection and Percentile<> + classes. The example is pPb collisions at 5 TeV and is based on the + ATLAS analysis arXiv:1508.00848 [hep-ex]. The reference YODA file + contains the corresponding plots from HepData. The generator should + be run in minimum-bias mode with a cut on the transverse momentum + of charged particles of 0.1 GeV, and setting particles with tcau>10 + fm stable. Note that a calibration histogram for the generated + centrality may be preloaded with the output of a corresponding + MC_Cent_pPb_Calib analysis. +BibKey: Aad:2015zza +BibTeX: '@article{Aad:2015zza, + author = "Aad, Georges and others", + title = "{Measurement of the centrality dependence of the + charged-particle pseudorapidity distribution in + proton–lead collisions at $\sqrt{s_{_\text {NN}}} = + 5.02$ TeV with the ATLAS detector}", + collaboration = "ATLAS", + journal = "Eur. Phys. J.", + volume = "C76", + year = "2016", + number = "4", + pages = "199", + doi = "10.1140/epjc/s10052-016-4002-3", + eprint = "1508.00848", + archivePrefix = "arXiv", + primaryClass = "hep-ex", + reportNumber = "CERN-PH-EP-2015-160", + SLACcitation = "%%CITATION = ARXIV:1508.00848;%%" +}' diff --git a/analyses/pluginMC/MC_Cent_pPb_Eta.plot b/analyses/pluginMC/MC_Cent_pPb_Eta.plot new file mode 100644 --- /dev/null +++ b/analyses/pluginMC/MC_Cent_pPb_Eta.plot @@ -0,0 +1,55 @@ +# BEGIN PLOT /MC_Cent_pPb_Eta/d02-x01-y01 +Title=Charged particle density. Centrality 60-90\% +YLabel=$(1/N_{evt}) \; dN_{ch}/d\eta$ +LogY=0 +YMax=85 +# END PLOT +# BEGIN PLOT /MC_Cent_pPb_Eta/d02-x01-y02 +Title=Charged particle density. Centrality 40-60\% +YLabel=$(1/N_{evt}) \; dN_{ch}/d\eta$ +XLabel=$\eta$ +LogY=0 +YMax=85 +# END PLOT +# BEGIN PLOT /MC_Cent_pPb_Eta/d02-x01-y03 +Title=Charged particle density. Centrality 30-40\% +YLabel=$(1/N_{evt}) \; dN_{ch}/d\eta$ +XLabel=$\eta$ +LogY=0 +YMax=85 +# END PLOT +# BEGIN PLOT /MC_Cent_pPb_Eta/d02-x01-y04 +Title=Charged particle density. Centrality 20-30\% +YLabel=$(1/N_{evt}) \; dN_{ch}/d\eta$ +XLabel=$\eta$ +LogY=0 +YMax=85 +# END PLOT +# BEGIN PLOT /MC_Cent_pPb_Eta/d02-x01-y05 +Title=Charged particle density. Centrality 10-20\% +YLabel=$(1/N_{evt}) \; dN_{ch}/d\eta$ +XLabel=$\eta$ +LogY=0 +YMax=85 +# END PLOT +# BEGIN PLOT /MC_Cent_pPb_Eta/d02-x01-y06 +Title=Charged particle density. Centrality 5-10\% +YLabel=$(1/N_{evt}) \; dN_{ch}/d\eta$ +XLabel=$\eta$ +LogY=0 +YMax=85 +# END PLOT +# BEGIN PLOT /MC_Cent_pPb_Eta/d02-x01-y07 +Title=Charged particle density. Centrality 1-5\% +YLabel=$(1/N_{evt}) \; dN_{ch}/d\eta$ +XLabel=$\eta$ +LogY=0 +YMax=85 +# END PLOT +# BEGIN PLOT /MC_Cent_pPb_Eta/d02-x01-y08 +Title=Charged particle density. Centrality 0-1\% +XLabel=$\eta$ +YLabel=$(1/N_{evt}) \; dN_{ch}/d\eta$ +LogY=0 +YMax=85 +# END PLOT diff --git a/analyses/pluginMC/MC_Cent_pPb_Eta.yoda b/analyses/pluginMC/MC_Cent_pPb_Eta.yoda new file mode 100644 --- /dev/null +++ b/analyses/pluginMC/MC_Cent_pPb_Eta.yoda @@ -0,0 +1,486 @@ +# BEGIN YODA_SCATTER2D /REF/MC_Cent_pPb_Eta/d02-x01-y01 +Path=/REF/MC_Cent_pPb_Eta/d02-x01-y01 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +-2.6500000000000004 0.04999999999999982 0.050000000000000266 7.908 0.5645467208300833 0.5645467208300833 +-2.55 0.050000000000000266 0.04999999999999982 7.815 0.5531121043694488 0.5531121043694488 +-2.45 0.04999999999999982 0.050000000000000266 8.035 0.5512839558702938 0.5512839558702938 +-2.3499999999999996 0.050000000000000266 0.04999999999999982 8.135 0.549097441261567 0.549097441261567 +-2.25 0.04999999999999982 0.04999999999999982 8.206 0.5481103903412159 0.5481103903412159 +-2.1500000000000004 0.04999999999999982 0.050000000000000266 8.239 0.5476139150898195 0.5476139150898195 +-2.05 0.050000000000000266 0.04999999999999982 8.286 0.5418671423882426 0.5418671423882426 +-1.95 0.050000000000000044 0.050000000000000044 8.393 0.5418671423882426 0.5418671423882426 +-1.85 0.04999999999999982 0.050000000000000044 8.369 0.5339850185164374 0.5339850185164374 +-1.75 0.050000000000000044 0.050000000000000044 8.427 0.5321888762460185 0.5321888762460185 +-1.65 0.050000000000000044 0.04999999999999982 8.457 0.5312042921513342 0.5312042921513342 +-1.55 0.050000000000000044 0.050000000000000044 8.419 0.5233297239790609 0.5233297239790609 +-1.45 0.050000000000000044 0.050000000000000044 8.418 0.5152795357861595 0.5152795357861595 +-1.35 0.04999999999999982 0.050000000000000044 8.405 0.5113443067053743 0.5113443067053743 +-1.25 0.050000000000000044 0.050000000000000044 8.358 0.5054433697260258 0.5054433697260258 +-1.15 0.050000000000000044 0.04999999999999982 8.338 0.5024937810560445 0.5024937810560445 +-1.05 0.050000000000000044 0.050000000000000044 8.325 0.4975791394341206 0.4975791394341206 +-0.95 0.050000000000000044 0.04999999999999993 8.227 0.4875674312338756 0.4875674312338756 +-0.8500000000000001 0.04999999999999993 0.050000000000000044 8.222 0.4856027182790475 0.4856027182790475 +-0.75 0.050000000000000044 0.050000000000000044 8.149 0.4795216366338436 0.4795216366338436 +-0.6499999999999999 0.050000000000000044 0.04999999999999993 8.1 0.47264786046273394 0.47264786046273394 +-0.55 0.04999999999999993 0.050000000000000044 8.047 0.4687216658103186 0.4687216658103186 +-0.45 0.04999999999999999 0.04999999999999999 7.997 0.4642251608863957 0.4642251608863957 +-0.35 0.050000000000000044 0.04999999999999999 7.94 0.4622607489285674 0.4622607489285674 +-0.25 0.04999999999999999 0.04999999999999999 7.958 0.45931470692761406 0.45931470692761406 +-0.15000000000000002 0.04999999999999999 0.05000000000000002 7.923 0.45656105834816885 0.45656105834816885 +-0.05 0.05 0.05 7.888 0.4544062059435368 0.4544062059435368 +0.05 0.05 0.05 7.863 0.4514620692815732 0.4514620692815732 +0.15000000000000002 0.05000000000000002 0.04999999999999999 7.917 0.45656105834816885 0.45656105834816885 +0.25 0.04999999999999999 0.04999999999999999 7.985 0.4614683087710358 0.4614683087710358 +0.35 0.04999999999999999 0.050000000000000044 8.03 0.46754892792091823 0.46754892792091823 +0.45 0.04999999999999999 0.04999999999999999 8.083 0.4724584637827965 0.4724584637827965 +0.55 0.050000000000000044 0.04999999999999993 8.201 0.4803176032585106 0.4803176032585106 +0.6499999999999999 0.04999999999999993 0.050000000000000044 8.254 0.4842489029414522 0.4842489029414522 +0.75 0.050000000000000044 0.050000000000000044 8.289 0.4891645939763016 0.4891645939763016 +0.8500000000000001 0.050000000000000044 0.04999999999999993 8.38 0.498196748283246 0.498196748283246 +0.95 0.04999999999999993 0.050000000000000044 8.459 0.506067189215029 0.506067189215029 +1.05 0.050000000000000044 0.050000000000000044 8.492 0.510988258182123 0.510988258182123 +1.15 0.04999999999999982 0.050000000000000044 8.563 0.516895540704309 0.516895540704309 +1.25 0.050000000000000044 0.050000000000000044 8.656 0.5288875116695421 0.5288875116695421 +1.35 0.050000000000000044 0.04999999999999982 8.658 0.5306872902190141 0.5306872902190141 +1.45 0.050000000000000044 0.050000000000000044 8.668 0.5366013417799103 0.5366013417799103 +1.55 0.050000000000000044 0.050000000000000044 8.706 0.5428526503573506 0.5428526503573506 +1.65 0.04999999999999982 0.050000000000000044 8.747 0.5518921996187299 0.5518921996187299 +1.75 0.050000000000000044 0.050000000000000044 8.73 0.5558354072924827 0.5558354072924827 +1.85 0.050000000000000044 0.04999999999999982 8.717 0.563560112144215 0.563560112144215 +1.95 0.050000000000000044 0.050000000000000044 8.702 0.5716161299333671 0.5716161299333671 +2.05 0.04999999999999982 0.050000000000000266 8.702 0.585434027026103 0.585434027026103 +2.1500000000000004 0.050000000000000266 0.04999999999999982 8.604 0.585434027026103 0.585434027026103 +2.25 0.04999999999999982 0.04999999999999982 8.7 0.6205610364823109 0.6205610364823109 +2.3499999999999996 0.04999999999999982 0.050000000000000266 8.693 0.6204167953883905 0.6204167953883905 +2.45 0.050000000000000266 0.04999999999999982 8.544 0.621003220603565 0.621003220603565 +2.55 0.04999999999999982 0.050000000000000266 8.546 0.6260966379082386 0.6260966379082386 +2.6500000000000004 0.050000000000000266 0.04999999999999982 8.42 0.6543699259593155 0.6543699259593155 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/MC_Cent_pPb_Eta/d02-x01-y02 +Path=/REF/MC_Cent_pPb_Eta/d02-x01-y02 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +-2.6500000000000004 0.04999999999999982 0.050000000000000266 16.357 0.7618300335376651 0.7618300335376651 +-2.55 0.050000000000000266 0.04999999999999982 16.275 0.7586145266207338 0.7586145266207338 +-2.45 0.04999999999999982 0.050000000000000266 16.709 0.7371838305334701 0.7371838305334701 +-2.3499999999999996 0.050000000000000266 0.04999999999999982 16.888 0.7302629663347306 0.7302629663347306 +-2.25 0.04999999999999982 0.04999999999999982 16.985 0.7274737108652105 0.7274737108652105 +-2.1500000000000004 0.04999999999999982 0.050000000000000266 17.067 0.7340694790004554 0.7340694790004554 +-2.05 0.050000000000000266 0.04999999999999982 17.205 0.7234141275922111 0.7234141275922111 +-1.95 0.050000000000000044 0.050000000000000044 17.201 0.7106229661360516 0.7106229661360516 +-1.85 0.04999999999999982 0.050000000000000044 17.145 0.700788841235361 0.700788841235361 +-1.75 0.050000000000000044 0.050000000000000044 17.247 0.6970408883272201 0.6970408883272201 +-1.65 0.050000000000000044 0.04999999999999982 17.206 0.6940929332589405 0.6940929332589405 +-1.55 0.050000000000000044 0.050000000000000044 17.137 0.6832876407487553 0.6832876407487553 +-1.45 0.050000000000000044 0.050000000000000044 17.124 0.6664082832618454 0.6664082832618454 +-1.35 0.04999999999999982 0.050000000000000044 17.004 0.6605210064789764 0.6605210064789764 +-1.25 0.050000000000000044 0.050000000000000044 16.955 0.6554220014616537 0.6554220014616537 +-1.15 0.050000000000000044 0.04999999999999982 16.803 0.6495367580052726 0.6495367580052726 +-1.05 0.050000000000000044 0.050000000000000044 16.755 0.6405154174569102 0.6405154174569102 +-0.95 0.050000000000000044 0.04999999999999993 16.621 0.627774641093442 0.627774641093442 +-0.8500000000000001 0.04999999999999993 0.050000000000000044 16.442 0.6226756780218736 0.6226756780218736 +-0.75 0.050000000000000044 0.050000000000000044 16.225 0.6114981602588841 0.6114981602588841 +-0.6499999999999999 0.050000000000000044 0.04999999999999993 16.126 0.5987695717051761 0.5987695717051761 +-0.55 0.04999999999999993 0.050000000000000044 16.006 0.5966070733740927 0.5966070733740927 +-0.45 0.04999999999999999 0.04999999999999999 15.871 0.5907351352340573 0.5907351352340573 +-0.35 0.050000000000000044 0.04999999999999999 15.702 0.5885720006932031 0.5885720006932031 +-0.25 0.04999999999999999 0.04999999999999999 15.588 0.5748782479795179 0.5748782479795179 +-0.15000000000000002 0.04999999999999999 0.05000000000000002 15.57 0.5717350785110181 0.5717350785110181 +-0.05 0.05 0.05 15.453 0.567824796922431 0.567824796922431 +0.05 0.05 0.05 15.437 0.5629387178015028 0.5629387178015028 +0.15000000000000002 0.05000000000000002 0.04999999999999999 15.388 0.567824796922431 0.567824796922431 +0.25 0.04999999999999999 0.04999999999999999 15.476 0.5727128425310541 0.5727128425310541 +0.35 0.04999999999999999 0.050000000000000044 15.559 0.5846580197004057 0.5846580197004057 +0.45 0.04999999999999999 0.04999999999999999 15.616 0.58955067636294 0.58955067636294 +0.55 0.050000000000000044 0.04999999999999993 15.677 0.5917136131609615 0.5917136131609615 +0.6499999999999999 0.04999999999999993 0.050000000000000044 15.821 0.5987695717051761 0.5987695717051761 +0.75 0.050000000000000044 0.050000000000000044 15.864 0.6046428698000167 0.6046428698000167 +0.8500000000000001 0.050000000000000044 0.04999999999999993 15.982 0.6165971131946694 0.6165971131946694 +0.95 0.04999999999999993 0.050000000000000044 16.02 0.6212970304129901 0.6212970304129901 +1.05 0.050000000000000044 0.050000000000000044 16.071 0.6291406837901997 0.6291406837901997 +1.15 0.04999999999999982 0.050000000000000044 16.117 0.6301214168713836 0.6301214168713836 +1.25 0.050000000000000044 0.050000000000000044 16.147 0.6428763489194481 0.6428763489194481 +1.35 0.050000000000000044 0.04999999999999982 16.184 0.6418948512022822 0.6418948512022822 +1.45 0.050000000000000044 0.050000000000000044 16.151 0.6497484128491581 0.6497484128491581 +1.55 0.050000000000000044 0.050000000000000044 16.141 0.6530742683646324 0.6530742683646324 +1.65 0.04999999999999982 0.050000000000000044 16.135 0.6599462099292639 0.6599462099292639 +1.75 0.050000000000000044 0.050000000000000044 16.057 0.663874235077699 0.663874235077699 +1.85 0.050000000000000044 0.04999999999999982 15.93 0.6744961082170897 0.6744961082170897 +1.95 0.050000000000000044 0.050000000000000044 15.847 0.6853116079565559 0.6853116079565559 +2.05 0.04999999999999982 0.050000000000000266 15.749 0.7099133749972597 0.7099133749972597 +2.1500000000000004 0.050000000000000266 0.04999999999999982 15.684 0.715011188723645 0.715011188723645 +2.25 0.04999999999999982 0.04999999999999982 15.634 0.7783064948977363 0.7783064948977363 +2.3499999999999996 0.04999999999999982 0.050000000000000266 15.448 0.7579294162387419 0.7579294162387419 +2.45 0.050000000000000266 0.04999999999999982 15.356 0.7718633298712927 0.7718633298712927 +2.55 0.04999999999999982 0.050000000000000266 15.1 0.7608449250668627 0.7608449250668627 +2.6500000000000004 0.050000000000000266 0.04999999999999982 14.731 0.8106719435135276 0.8106719435135276 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/MC_Cent_pPb_Eta/d02-x01-y03 +Path=/REF/MC_Cent_pPb_Eta/d02-x01-y03 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +-2.6500000000000004 0.04999999999999982 0.050000000000000266 22.483 0.9143850392476902 0.9143850392476902 +-2.55 0.050000000000000266 0.04999999999999982 22.227 0.9090374029708569 0.9090374029708569 +-2.45 0.04999999999999982 0.050000000000000266 22.78 0.8682079244052083 0.8682079244052083 +-2.3499999999999996 0.050000000000000266 0.04999999999999982 22.974 0.8571137614109343 0.8571137614109343 +-2.25 0.04999999999999982 0.04999999999999982 23.131 0.8555816734830171 0.8555816734830171 +-2.1500000000000004 0.04999999999999982 0.050000000000000266 23.261 0.8688066528290399 0.8688066528290399 +-2.05 0.050000000000000266 0.04999999999999982 23.249 0.8473470363434334 0.8473470363434334 +-1.95 0.050000000000000044 0.050000000000000044 23.402 0.8356536363829214 0.8356536363829214 +-1.85 0.04999999999999982 0.050000000000000044 23.421 0.827348777723156 0.827348777723156 +-1.75 0.050000000000000044 0.050000000000000044 23.486 0.8207728065670792 0.8207728065670792 +-1.65 0.050000000000000044 0.04999999999999982 23.282 0.8147054682521776 0.8147054682521776 +-1.55 0.050000000000000044 0.050000000000000044 23.243 0.8020735627110521 0.8020735627110521 +-1.45 0.050000000000000044 0.050000000000000044 23.181 0.7775705755749763 0.7775705755749763 +-1.35 0.04999999999999982 0.050000000000000044 23.13 0.7756313557354422 0.7756313557354422 +-1.25 0.050000000000000044 0.050000000000000044 22.967 0.768600026021337 0.768600026021337 +-1.15 0.050000000000000044 0.04999999999999982 22.773 0.7637545417213569 0.7637545417213569 +-1.05 0.050000000000000044 0.050000000000000044 22.577 0.748010695110705 0.748010695110705 +-0.95 0.050000000000000044 0.04999999999999993 22.376 0.731312518694983 0.731312518694983 +-0.8500000000000001 0.04999999999999993 0.050000000000000044 22.163 0.7271897964080629 0.7271897964080629 +-0.75 0.050000000000000044 0.050000000000000044 22.028 0.7201673416644218 0.7201673416644218 +-0.6499999999999999 0.050000000000000044 0.04999999999999993 21.662 0.6955070093104742 0.6955070093104742 +-0.55 0.04999999999999993 0.050000000000000044 21.489 0.694279482629294 0.694279482629294 +-0.45 0.04999999999999999 0.04999999999999999 21.249 0.6853334954604219 0.6853334954604219 +-0.35 0.050000000000000044 0.04999999999999999 21.136 0.6889303302947258 0.6889303302947258 +-0.25 0.04999999999999999 0.04999999999999999 20.873 0.6655238538174271 0.6655238538174271 +-0.15000000000000002 0.04999999999999999 0.05000000000000002 20.736 0.6594763073833662 0.6594763073833662 +-0.05 0.05 0.05 20.639 0.6563177584067035 0.6563177584067035 +0.05 0.05 0.05 20.445 0.6435347698454218 0.6435347698454218 +0.15000000000000002 0.05000000000000002 0.04999999999999999 20.59 0.6575507584970152 0.6575507584970152 +0.25 0.04999999999999999 0.04999999999999999 20.531 0.659207099476333 0.659207099476333 +0.35 0.04999999999999999 0.050000000000000044 20.589 0.673931747286029 0.673931747286029 +0.45 0.04999999999999999 0.04999999999999999 20.696 0.6809478687829195 0.6809478687829195 +0.55 0.050000000000000044 0.04999999999999993 20.775 0.6834047117191979 0.6834047117191979 +0.6499999999999999 0.04999999999999993 0.050000000000000044 20.702 0.6821759303874625 0.6821759303874625 +0.75 0.050000000000000044 0.050000000000000044 20.895 0.6930526675513197 0.6930526675513197 +0.8500000000000001 0.050000000000000044 0.04999999999999993 20.839 0.7017442554093336 0.7017442554093336 +0.95 0.04999999999999993 0.050000000000000044 20.98 0.710443523441519 0.710443523441519 +1.05 0.050000000000000044 0.050000000000000044 21.037 0.7191501929360793 0.7191501929360793 +1.15 0.04999999999999982 0.050000000000000044 21.019 0.7162471640432512 0.7162471640432512 +1.25 0.050000000000000044 0.050000000000000044 20.968 0.7302773445753332 0.7302773445753332 +1.35 0.050000000000000044 0.04999999999999982 20.969 0.7237409757641196 0.7237409757641196 +1.45 0.050000000000000044 0.050000000000000044 20.938 0.736339595567154 0.736339595567154 +1.55 0.050000000000000044 0.050000000000000044 20.859 0.7361100461208229 0.7361100461208229 +1.65 0.04999999999999982 0.050000000000000044 20.806 0.7428923205956567 0.7428923205956567 +1.75 0.050000000000000044 0.050000000000000044 20.499 0.7392489431849056 0.7392489431849056 +1.85 0.050000000000000044 0.04999999999999982 20.437 0.7579294162387419 0.7579294162387419 +1.95 0.050000000000000044 0.050000000000000044 20.176 0.7664365596707923 0.7664365596707923 +2.05 0.04999999999999982 0.050000000000000266 20.015 0.8002755775356387 0.8002755775356387 +2.1500000000000004 0.050000000000000266 0.04999999999999982 19.817 0.8002755775356387 0.8002755775356387 +2.25 0.04999999999999982 0.04999999999999982 19.652 0.8837024386070234 0.8837024386070234 +2.3499999999999996 0.04999999999999982 0.050000000000000266 19.376 0.8533024082938007 0.8533024082938007 +2.45 0.050000000000000266 0.04999999999999982 19.261 0.8705659079012915 0.8705659079012915 +2.55 0.04999999999999982 0.050000000000000266 18.954 0.8578321514142495 0.8578321514142495 +2.6500000000000004 0.050000000000000266 0.04999999999999982 18.718 0.9458377239251985 0.9458377239251985 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/MC_Cent_pPb_Eta/d02-x01-y04 +Path=/REF/MC_Cent_pPb_Eta/d02-x01-y04 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +-2.6500000000000004 0.04999999999999982 0.050000000000000266 27.382 0.9996504389035199 0.9996504389035199 +-2.55 0.050000000000000266 0.04999999999999982 27.193 1.0033394241232625 1.0033394241232625 +-2.45 0.04999999999999982 0.050000000000000266 27.797 0.9431065687397157 0.9431065687397157 +-2.3499999999999996 0.050000000000000266 0.04999999999999982 27.975 0.9256052074183679 0.9256052074183679 +-2.25 0.04999999999999982 0.04999999999999982 28.062 0.9209695977609684 0.9209695977609684 +-2.1500000000000004 0.04999999999999982 0.050000000000000266 28.25 0.9425179043392227 0.9425179043392227 +-2.05 0.050000000000000266 0.04999999999999982 28.198 0.9143593385535033 0.9143593385535033 +-1.95 0.050000000000000044 0.050000000000000044 28.279 0.8959397301158153 0.8959397301158153 +-1.85 0.04999999999999982 0.050000000000000044 28.202 0.8833510061125192 0.8833510061125192 +-1.75 0.050000000000000044 0.050000000000000044 28.417 0.8821757194572972 0.8821757194572972 +-1.65 0.050000000000000044 0.04999999999999982 28.249 0.8802420121761969 0.8802420121761969 +-1.55 0.050000000000000044 0.050000000000000044 28.176 0.8647832098277579 0.8647832098277579 +-1.45 0.050000000000000044 0.050000000000000044 27.971 0.8292677492824619 0.8292677492824619 +-1.35 0.04999999999999982 0.050000000000000044 27.74 0.8251460476788337 0.8251460476788337 +-1.25 0.050000000000000044 0.050000000000000044 27.593 0.8193668287159299 0.8193668287159299 +-1.15 0.050000000000000044 0.04999999999999982 27.499 0.8203298117220903 0.8203298117220903 +-1.05 0.050000000000000044 0.050000000000000044 27.122 0.7986144251138969 0.7986144251138969 +-0.95 0.050000000000000044 0.04999999999999993 26.896 0.779400410572127 0.779400410572127 +-0.8500000000000001 0.04999999999999993 0.050000000000000044 26.63 0.7769202018225553 0.7769202018225553 +-0.75 0.050000000000000044 0.050000000000000044 26.331 0.7670410680009252 0.7670410680009252 +-0.6499999999999999 0.050000000000000044 0.04999999999999993 25.999 0.739635045140507 0.739635045140507 +-0.55 0.04999999999999993 0.050000000000000044 25.816 0.7409750333175875 0.7409750333175875 +-0.45 0.04999999999999999 0.04999999999999999 25.482 0.7319808740670756 0.7319808740670756 +-0.35 0.050000000000000044 0.04999999999999999 25.15 0.7320669368302327 0.7320669368302327 +-0.25 0.04999999999999999 0.04999999999999999 25.009 0.7088222626300617 0.7088222626300617 +-0.15000000000000002 0.04999999999999999 0.05000000000000002 24.842 0.7011854248342588 0.7011854248342588 +-0.05 0.05 0.05 24.636 0.6961156513109011 0.6961156513109011 +0.05 0.05 0.05 24.412 0.6802595093050886 0.6802595093050886 +0.15000000000000002 0.05000000000000002 0.04999999999999999 24.464 0.6945631720729224 0.6945631720729224 +0.25 0.04999999999999999 0.04999999999999999 24.3 0.6933108970728789 0.6933108970728789 +0.35 0.04999999999999999 0.050000000000000044 24.395 0.713679199640847 0.713679199640847 +0.45 0.04999999999999999 0.04999999999999999 24.482 0.7203811491148279 0.7203811491148279 +0.55 0.050000000000000044 0.04999999999999993 24.562 0.7215407126420518 0.7215407126420518 +0.6499999999999999 0.04999999999999993 0.050000000000000044 24.535 0.7224970588175429 0.7224970588175429 +0.75 0.050000000000000044 0.050000000000000044 24.643 0.7311094309335641 0.7311094309335641 +0.8500000000000001 0.050000000000000044 0.04999999999999993 24.734 0.7457673900084395 0.7457673900084395 +0.95 0.04999999999999993 0.050000000000000044 24.649 0.7483615436405053 0.7483615436405053 +1.05 0.050000000000000044 0.050000000000000044 24.714 0.7582400675247912 0.7582400675247912 +1.15 0.04999999999999982 0.050000000000000044 24.744 0.7550801281983257 0.7550801281983257 +1.25 0.050000000000000044 0.050000000000000044 24.51 0.7670234676983488 0.7670234676983488 +1.35 0.050000000000000044 0.04999999999999982 24.542 0.7583679845563102 0.7583679845563102 +1.45 0.050000000000000044 0.050000000000000044 24.419 0.7696395260120156 0.7696395260120156 +1.55 0.050000000000000044 0.050000000000000044 24.145 0.7640026177965623 0.7640026177965623 +1.65 0.04999999999999982 0.050000000000000044 24.082 0.7714175263759567 0.7714175263759567 +1.75 0.050000000000000044 0.050000000000000044 23.694 0.7667515894994936 0.7667515894994936 +1.85 0.050000000000000044 0.04999999999999982 23.6 0.7879492369435991 0.7879492369435991 +1.95 0.050000000000000044 0.050000000000000044 23.199 0.796113685349021 0.796113685349021 +2.05 0.04999999999999982 0.050000000000000266 22.971 0.836508218728304 0.836508218728304 +2.1500000000000004 0.050000000000000266 0.04999999999999982 22.66 0.833354666393607 0.833354666393607 +2.25 0.04999999999999982 0.04999999999999982 22.33 0.9304493538070732 0.9304493538070732 +2.3499999999999996 0.04999999999999982 0.050000000000000266 22.056 0.8949687145369943 0.8949687145369943 +2.45 0.050000000000000266 0.04999999999999982 21.842 0.9127349012719959 0.9127349012719959 +2.55 0.04999999999999982 0.050000000000000266 21.473 0.8949513953282602 0.8949513953282602 +2.6500000000000004 0.050000000000000266 0.04999999999999982 21.249 1.0062628881162219 1.0062628881162219 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/MC_Cent_pPb_Eta/d02-x01-y05 +Path=/REF/MC_Cent_pPb_Eta/d02-x01-y05 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +-2.6500000000000004 0.04999999999999982 0.050000000000000266 34.017 1.2401951459347034 1.2401951459347034 +-2.55 0.050000000000000266 0.04999999999999982 33.662 1.2396519672875932 1.2396519672875932 +-2.45 0.04999999999999982 0.050000000000000266 34.345 1.1628864948910536 1.1628864948910536 +-2.3499999999999996 0.050000000000000266 0.04999999999999982 34.467 1.1389139563636932 1.1389139563636932 +-2.25 0.04999999999999982 0.04999999999999982 34.719 1.138389212879321 1.138389212879321 +-2.1500000000000004 0.04999999999999982 0.050000000000000266 34.823 1.1601422326594268 1.1601422326594268 +-2.05 0.050000000000000266 0.04999999999999982 34.975 1.13241379362846 1.13241379362846 +-1.95 0.050000000000000044 0.050000000000000044 34.96 1.106932698947863 1.106932698947863 +-1.85 0.04999999999999982 0.050000000000000044 34.907 1.0926307702055622 1.0926307702055622 +-1.75 0.050000000000000044 0.050000000000000044 34.906 1.0815035829806574 1.0815035829806574 +-1.65 0.050000000000000044 0.04999999999999982 34.655 1.0776316624895539 1.0776316624895539 +-1.55 0.050000000000000044 0.050000000000000044 34.772 1.0662762306269422 1.0662762306269422 +-1.45 0.050000000000000044 0.050000000000000044 34.46 1.020106367002971 1.020106367002971 +-1.35 0.04999999999999982 0.050000000000000044 34.229 1.0169488679378134 1.0169488679378134 +-1.25 0.050000000000000044 0.050000000000000044 33.913 1.0063418902142551 1.0063418902142551 +-1.15 0.050000000000000044 0.04999999999999982 33.617 1.0019540907646418 1.0019540907646418 +-1.05 0.050000000000000044 0.050000000000000044 33.44 0.9829572727234892 0.9829572727234892 +-0.95 0.050000000000000044 0.04999999999999993 32.895 0.9523239994875694 0.9523239994875694 +-0.8500000000000001 0.04999999999999993 0.050000000000000044 32.577 0.9488877699707169 0.9488877699707169 +-0.75 0.050000000000000044 0.050000000000000044 32.178 0.9358424012620928 0.9358424012620928 +-0.6499999999999999 0.050000000000000044 0.04999999999999993 31.758 0.9016983974700188 0.9016983974700188 +-0.55 0.04999999999999993 0.050000000000000044 31.519 0.904004977862401 0.904004977862401 +-0.45 0.04999999999999999 0.04999999999999999 31.055 0.8914538686886719 0.8914538686886719 +-0.35 0.050000000000000044 0.04999999999999999 30.732 0.8937477272698375 0.8937477272698375 +-0.25 0.04999999999999999 0.04999999999999999 30.311 0.858438116581504 0.858438116581504 +-0.15000000000000002 0.04999999999999999 0.05000000000000002 30.104 0.8488910413003545 0.8488910413003545 +-0.05 0.05 0.05 29.696 0.8381527307120106 0.8381527307120106 +0.05 0.05 0.05 29.78 0.8289155566159921 0.8289155566159921 +0.15000000000000002 0.05000000000000002 0.04999999999999999 29.557 0.838809871186552 0.838809871186552 +0.25 0.04999999999999999 0.04999999999999999 29.506 0.8416751154691459 0.8416751154691459 +0.35 0.04999999999999999 0.050000000000000044 29.49 0.8627149007638618 0.8627149007638618 +0.45 0.04999999999999999 0.04999999999999999 29.426 0.8653005258290324 0.8653005258290324 +0.55 0.050000000000000044 0.04999999999999993 29.457 0.866083136886985 0.866083136886985 +0.6499999999999999 0.04999999999999993 0.050000000000000044 29.543 0.8699080411169907 0.8699080411169907 +0.75 0.050000000000000044 0.050000000000000044 29.466 0.8746913741429031 0.8746913741429031 +0.8500000000000001 0.050000000000000044 0.04999999999999993 29.451 0.8890556787963283 0.8890556787963283 +0.95 0.04999999999999993 0.050000000000000044 29.483 0.8957661525197299 0.8957661525197299 +1.05 0.050000000000000044 0.050000000000000044 29.489 0.9050801069518654 0.9050801069518654 +1.15 0.04999999999999982 0.050000000000000044 29.367 0.8964424130974615 0.8964424130974615 +1.25 0.050000000000000044 0.050000000000000044 29.288 0.9163323632831049 0.9163323632831049 +1.35 0.050000000000000044 0.04999999999999982 29.059 0.8982037630738362 0.8982037630738362 +1.45 0.050000000000000044 0.050000000000000044 28.817 0.9085042652624147 0.9085042652624147 +1.55 0.050000000000000044 0.050000000000000044 28.668 0.9075604663051383 0.9075604663051383 +1.65 0.04999999999999982 0.050000000000000044 28.339 0.9086434944465294 0.9086434944465294 +1.75 0.050000000000000044 0.050000000000000044 27.996 0.9071295387098801 0.9071295387098801 +1.85 0.050000000000000044 0.04999999999999982 27.572 0.9217119940632215 0.9217119940632215 +1.95 0.050000000000000044 0.050000000000000044 27.271 0.936873524014848 0.936873524014848 +2.05 0.04999999999999982 0.050000000000000266 26.86 0.9798658071389162 0.9798658071389162 +2.1500000000000004 0.050000000000000266 0.04999999999999982 26.451 0.9745255255764211 0.9745255255764211 +2.25 0.04999999999999982 0.04999999999999982 26.044 1.0856431273673683 1.0856431273673683 +2.3499999999999996 0.04999999999999982 0.050000000000000266 25.823 1.0489775974728917 1.0489775974728917 +2.45 0.050000000000000266 0.04999999999999982 25.181 1.0528784355280527 1.0528784355280527 +2.55 0.04999999999999982 0.050000000000000266 24.803 1.0355529923668803 1.0355529923668803 +2.6500000000000004 0.050000000000000266 0.04999999999999982 24.39 1.1567307378988423 1.1567307378988423 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/MC_Cent_pPb_Eta/d02-x01-y06 +Path=/REF/MC_Cent_pPb_Eta/d02-x01-y06 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +-2.6500000000000004 0.04999999999999982 0.050000000000000266 41.613 1.4765703505082308 1.4765703505082308 +-2.55 0.050000000000000266 0.04999999999999982 41.388 1.4852238888463922 1.4852238888463922 +-2.45 0.04999999999999982 0.050000000000000266 42.104 1.3832848585884254 1.3832848585884254 +-2.3499999999999996 0.050000000000000266 0.04999999999999982 42.089 1.3485076937118305 1.3485076937118305 +-2.25 0.04999999999999982 0.04999999999999982 42.206 1.3419720563409658 1.3419720563409658 +-2.1500000000000004 0.04999999999999982 0.050000000000000266 42.516 1.376962236228721 1.376962236228721 +-2.05 0.050000000000000266 0.04999999999999982 42.509 1.3363760698246583 1.3363760698246583 +-1.95 0.050000000000000044 0.050000000000000044 42.702 1.3115624270312107 1.3115624270312107 +-1.85 0.04999999999999982 0.050000000000000044 42.483 1.290645187493449 1.290645187493449 +-1.75 0.050000000000000044 0.050000000000000044 42.374 1.2745701236103097 1.2745701236103097 +-1.65 0.050000000000000044 0.04999999999999982 42.367 1.2808891443056265 1.2808891443056265 +-1.55 0.050000000000000044 0.050000000000000044 42.012 1.2520850610082368 1.2520850610082368 +-1.45 0.050000000000000044 0.050000000000000044 41.704 1.198547871384368 1.198547871384368 +-1.35 0.04999999999999982 0.050000000000000044 41.355 1.194137764246655 1.194137764246655 +-1.25 0.050000000000000044 0.050000000000000044 41.222 1.1896507890973722 1.1896507890973722 +-1.15 0.050000000000000044 0.04999999999999982 40.643 1.1792107530038896 1.1792107530038896 +-1.05 0.050000000000000044 0.050000000000000044 40.183 1.1493180586765355 1.1493180586765355 +-0.95 0.050000000000000044 0.04999999999999993 39.826 1.120130349557586 1.120130349557586 +-0.8500000000000001 0.04999999999999993 0.050000000000000044 39.377 1.1166615422767991 1.1166615422767991 +-0.75 0.050000000000000044 0.050000000000000044 38.857 1.1005135165003652 1.1005135165003652 +-0.6499999999999999 0.050000000000000044 0.04999999999999993 38.231 1.0568348972285122 1.0568348972285122 +-0.55 0.04999999999999993 0.050000000000000044 37.665 1.0524077156691698 1.0524077156691698 +-0.45 0.04999999999999999 0.04999999999999999 37.451 1.0467330127592231 1.0467330127592231 +-0.35 0.050000000000000044 0.04999999999999999 36.836 1.045771007439009 1.045771007439009 +-0.25 0.04999999999999999 0.04999999999999999 36.321 1.0019061832327416 1.0019061832327416 +-0.15000000000000002 0.04999999999999999 0.05000000000000002 35.825 0.9835954452924232 0.9835954452924232 +-0.05 0.05 0.05 35.432 0.974109850068256 0.974109850068256 +0.05 0.05 0.05 35.497 0.9612497074121791 0.9612497074121791 +0.15000000000000002 0.05000000000000002 0.04999999999999999 35.189 0.9725044987042477 0.9725044987042477 +0.25 0.04999999999999999 0.04999999999999999 35.197 0.9794432091754989 0.9794432091754989 +0.35 0.04999999999999999 0.050000000000000044 35.132 1.0030872344915969 1.0030872344915969 +0.45 0.04999999999999999 0.04999999999999999 34.876 1.0011803034418925 1.0011803034418925 +0.55 0.050000000000000044 0.04999999999999993 34.929 1.003466491717586 1.003466491717586 +0.6499999999999999 0.04999999999999993 0.050000000000000044 34.937 1.0053561557975361 1.0053561557975361 +0.75 0.050000000000000044 0.050000000000000044 34.655 1.0047034388315788 1.0047034388315788 +0.8500000000000001 0.050000000000000044 0.04999999999999993 34.811 1.0267974483801565 1.0267974483801565 +0.95 0.04999999999999993 0.050000000000000044 34.619 1.0271085629085175 1.0271085629085175 +1.05 0.050000000000000044 0.050000000000000044 34.651 1.0397586258358233 1.0397586258358233 +1.15 0.04999999999999982 0.050000000000000044 34.42 1.0264755233321445 1.0264755233321445 +1.25 0.050000000000000044 0.050000000000000044 34.256 1.0474015466858926 1.0474015466858926 +1.35 0.050000000000000044 0.04999999999999982 33.985 1.0261700638783027 1.0261700638783027 +1.45 0.050000000000000044 0.050000000000000044 33.673 1.0379152181175493 1.0379152181175493 +1.55 0.050000000000000044 0.050000000000000044 33.242 1.029005344981259 1.029005344981259 +1.65 0.04999999999999982 0.050000000000000044 33.024 1.0353327967373582 1.0353327967373582 +1.75 0.050000000000000044 0.050000000000000044 32.426 1.0271202461250581 1.0271202461250581 +1.85 0.050000000000000044 0.04999999999999982 31.986 1.0455783088798276 1.0455783088798276 +1.95 0.050000000000000044 0.050000000000000044 31.598 1.0624598815955357 1.0624598815955357 +2.05 0.04999999999999982 0.050000000000000266 31.154 1.1148403473143587 1.1148403473143587 +2.1500000000000004 0.050000000000000266 0.04999999999999982 30.609 1.1066006506414137 1.1066006506414137 +2.25 0.04999999999999982 0.04999999999999982 29.963 1.229424662189595 1.229424662189595 +2.3499999999999996 0.04999999999999982 0.050000000000000266 29.208 1.166355434676754 1.166355434676754 +2.45 0.050000000000000266 0.04999999999999982 29.015 1.1937922767382942 1.1937922767382942 +2.55 0.04999999999999982 0.050000000000000266 28.366 1.1652231545931448 1.1652231545931448 +2.6500000000000004 0.050000000000000266 0.04999999999999982 27.603 1.3079514516984183 1.3079514516984183 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/MC_Cent_pPb_Eta/d02-x01-y07 +Path=/REF/MC_Cent_pPb_Eta/d02-x01-y07 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +-2.6500000000000004 0.04999999999999982 0.050000000000000266 50.659 1.792847176978562 1.792847176978562 +-2.55 0.050000000000000266 0.04999999999999982 50.522 1.807139452283636 1.807139452283636 +-2.45 0.04999999999999982 0.050000000000000266 51.237 1.6783444223400632 1.6783444223400632 +-2.3499999999999996 0.050000000000000266 0.04999999999999982 51.247 1.6392269519502174 1.6392269519502174 +-2.25 0.04999999999999982 0.04999999999999982 51.567 1.6363520403629532 1.6363520403629532 +-2.1500000000000004 0.04999999999999982 0.050000000000000266 51.485 1.6664429183143359 1.6664429183143359 +-2.05 0.050000000000000266 0.04999999999999982 51.509 1.6195854407841532 1.6195854407841532 +-1.95 0.050000000000000044 0.050000000000000044 51.791 1.5916271548324374 1.5916271548324374 +-1.85 0.04999999999999982 0.050000000000000044 51.615 1.5691284204933642 1.5691284204933642 +-1.75 0.050000000000000044 0.050000000000000044 51.208 1.542565395696403 1.542565395696403 +-1.65 0.050000000000000044 0.04999999999999982 51.266 1.5523714117439809 1.5523714117439809 +-1.55 0.050000000000000044 0.050000000000000044 50.95 1.5220831120540035 1.5220831120540035 +-1.45 0.050000000000000044 0.050000000000000044 50.268 1.4477268388753453 1.4477268388753453 +-1.35 0.04999999999999982 0.050000000000000044 50.148 1.4528430748019554 1.4528430748019554 +-1.25 0.050000000000000044 0.050000000000000044 49.398 1.4295121545478373 1.4295121545478373 +-1.15 0.050000000000000044 0.04999999999999982 49.149 1.4307931366902764 1.4307931366902764 +-1.05 0.050000000000000044 0.050000000000000044 48.526 1.394085363239999 1.394085363239999 +-0.95 0.050000000000000044 0.04999999999999993 47.852 1.3537167355100548 1.3537167355100548 +-0.8500000000000001 0.04999999999999993 0.050000000000000044 47.28 1.3472672340705092 1.3472672340705092 +-0.75 0.050000000000000044 0.050000000000000044 46.669 1.3280850876355779 1.3280850876355779 +-0.6499999999999999 0.050000000000000044 0.04999999999999993 46.079 1.2803831457809807 1.2803831457809807 +-0.55 0.04999999999999993 0.050000000000000044 44.869 1.2618339827409943 1.2618339827409943 +-0.45 0.04999999999999999 0.04999999999999999 44.685 1.2599658725536975 1.2599658725536975 +-0.35 0.050000000000000044 0.04999999999999999 44.065 1.2605002975009565 1.2605002975009565 +-0.25 0.04999999999999999 0.04999999999999999 43.376 1.2080769843019112 1.2080769843019112 +-0.15000000000000002 0.04999999999999999 0.05000000000000002 42.865 1.1886193671651157 1.1886193671651157 +-0.05 0.05 0.05 42.451 1.1787726668022125 1.1787726668022125 +0.05 0.05 0.05 42.105 1.1522139558259135 1.1522139558259135 +0.15000000000000002 0.05000000000000002 0.04999999999999999 41.69 1.164077746544448 1.164077746544448 +0.25 0.04999999999999999 0.04999999999999999 41.58 1.167769240903356 1.167769240903356 +0.35 0.04999999999999999 0.050000000000000044 41.586 1.1979252898240358 1.1979252898240358 +0.45 0.04999999999999999 0.04999999999999999 41.319 1.1962508098220876 1.1962508098220876 +0.55 0.050000000000000044 0.04999999999999993 41.132 1.1937692406826372 1.1937692406826372 +0.6499999999999999 0.04999999999999993 0.050000000000000044 40.999 1.1928461761685787 1.1928461761685787 +0.75 0.050000000000000044 0.050000000000000044 40.882 1.1972405773277148 1.1972405773277148 +0.8500000000000001 0.050000000000000044 0.04999999999999993 40.719 1.214279210066614 1.214279210066614 +0.95 0.04999999999999993 0.050000000000000044 40.677 1.2194658666809826 1.2194658666809826 +1.05 0.050000000000000044 0.050000000000000044 40.524 1.2280052931482013 1.2280052931482013 +1.15 0.04999999999999982 0.050000000000000044 40.377 1.2168635913692216 1.2168635913692216 +1.25 0.050000000000000044 0.050000000000000044 39.985 1.2341815101515659 1.2341815101515659 +1.35 0.050000000000000044 0.04999999999999982 39.772 1.2124099966595459 1.2124099966595459 +1.45 0.050000000000000044 0.050000000000000044 39.213 1.2198905688626338 1.2198905688626338 +1.55 0.050000000000000044 0.050000000000000044 38.63 1.2083219769581284 1.2083219769581284 +1.65 0.04999999999999982 0.050000000000000044 38.231 1.2109207240773443 1.2109207240773443 +1.75 0.050000000000000044 0.050000000000000044 37.687 1.2057267517974377 1.2057267517974377 +1.85 0.050000000000000044 0.04999999999999982 37.029 1.223114058458981 1.223114058458981 +1.95 0.050000000000000044 0.050000000000000044 36.328 1.2325603433503773 1.2325603433503773 +2.05 0.04999999999999982 0.050000000000000266 35.452 1.2780316897479498 1.2780316897479498 +2.1500000000000004 0.050000000000000266 0.04999999999999982 34.818 1.2679341465549383 1.2679341465549383 +2.25 0.04999999999999982 0.04999999999999982 34.233 1.4121320759758982 1.4121320759758982 +2.3499999999999996 0.04999999999999982 0.050000000000000266 33.524 1.3445965937782232 1.3445965937782232 +2.45 0.050000000000000266 0.04999999999999982 32.598 1.351127677164523 1.351127677164523 +2.55 0.04999999999999982 0.050000000000000266 31.902 1.320021969514144 1.320021969514144 +2.6500000000000004 0.050000000000000266 0.04999999999999982 30.884 1.5050083056249224 1.5050083056249224 +# END YODA_SCATTER2D + + +# BEGIN YODA_SCATTER2D /REF/MC_Cent_pPb_Eta/d02-x01-y08 +Path=/REF/MC_Cent_pPb_Eta/d02-x01-y08 +Type=Scatter2D +# xval xerr- xerr+ yval yerr- yerr+ +-2.6500000000000004 0.04999999999999982 0.050000000000000266 67.419 2.798495488651 2.798495488651 +-2.55 0.050000000000000266 0.04999999999999982 67.2 2.8188029374186483 2.8188029374186483 +-2.45 0.04999999999999982 0.050000000000000266 67.497 2.572081064041334 2.572081064041334 +-2.3499999999999996 0.050000000000000266 0.04999999999999982 67.3 2.4863453098875867 2.4863453098875867 +-2.25 0.04999999999999982 0.04999999999999982 67.923 2.4778242471975287 2.4778242471975287 +-2.1500000000000004 0.04999999999999982 0.050000000000000266 67.859 2.509781066148998 2.509781066148998 +-2.05 0.050000000000000266 0.04999999999999982 67.553 2.4126676107578517 2.4126676107578517 +-1.95 0.050000000000000044 0.050000000000000044 67.468 2.3413596477260814 2.3413596477260814 +-1.85 0.04999999999999982 0.050000000000000044 68.18 2.3291135652861583 2.3291135652861583 +-1.75 0.050000000000000044 0.050000000000000044 67.46 2.2725591301438124 2.2725591301438124 +-1.65 0.050000000000000044 0.04999999999999982 66.687 2.248791897886507 2.248791897886507 +-1.55 0.050000000000000044 0.050000000000000044 66.25 2.1923361968457304 2.1923361968457304 +-1.45 0.050000000000000044 0.050000000000000044 65.985 2.0956473940050127 2.0956473940050127 +-1.35 0.04999999999999982 0.050000000000000044 64.829 2.061788058943014 2.061788058943014 +-1.25 0.050000000000000044 0.050000000000000044 63.821 2.020396000787964 2.020396000787964 +-1.15 0.050000000000000044 0.04999999999999982 63.543 2.0173390889981784 2.0173390889981784 +-1.05 0.050000000000000044 0.050000000000000044 61.893 1.930331059688985 1.930331059688985 +-0.95 0.050000000000000044 0.04999999999999993 61.441 1.8794001702670988 1.8794001702670988 +-0.8500000000000001 0.04999999999999993 0.050000000000000044 60.333 1.855080052181037 1.855080052181037 +-0.75 0.050000000000000044 0.050000000000000044 60.375 1.8497707966123804 1.8497707966123804 +-0.6499999999999999 0.050000000000000044 0.04999999999999993 59.273 1.7673112346160196 1.7673112346160196 +-0.55 0.04999999999999993 0.050000000000000044 58.196 1.7525438653568703 1.7525438653568703 +-0.45 0.04999999999999999 0.04999999999999999 56.825 1.7115846458764463 1.7115846458764463 +-0.35 0.050000000000000044 0.04999999999999999 56.576 1.72874578813659 1.72874578813659 +-0.25 0.04999999999999999 0.04999999999999999 55.315 1.639988414593225 1.639988414593225 +-0.15000000000000002 0.04999999999999999 0.05000000000000002 54.983 1.6216238774759084 1.6216238774759084 +-0.05 0.05 0.05 53.874 1.591258621343495 1.591258621343495 +0.05 0.05 0.05 53.162 1.547651769617442 1.547651769617442 +0.15000000000000002 0.05000000000000002 0.04999999999999999 52.759 1.568807508906048 1.568807508906048 +0.25 0.04999999999999999 0.04999999999999999 52.593 1.572941829820798 1.572941829820798 +0.35 0.04999999999999999 0.050000000000000044 52.464 1.61352099459536 1.61352099459536 +0.45 0.04999999999999999 0.04999999999999999 52.264 1.618029047946915 1.618029047946915 +0.55 0.050000000000000044 0.04999999999999993 51.772 1.6080251863699149 1.6080251863699149 +0.6499999999999999 0.04999999999999993 0.050000000000000044 51.557 1.6058256443337802 1.6058256443337802 +0.75 0.050000000000000044 0.050000000000000044 51.19 1.6109090601272313 1.6109090601272313 +0.8500000000000001 0.050000000000000044 0.04999999999999993 51.073 1.6391622860473578 1.6391622860473578 +0.95 0.04999999999999993 0.050000000000000044 50.812 1.6458845646034839 1.6458845646034839 +1.05 0.050000000000000044 0.050000000000000044 50.392 1.655488447558605 1.655488447558605 +1.15 0.04999999999999982 0.050000000000000044 49.859 1.6320416661347836 1.6320416661347836 +1.25 0.050000000000000044 0.050000000000000044 49.602 1.6725600138709522 1.6725600138709522 +1.35 0.050000000000000044 0.04999999999999982 48.872 1.63004815879777 1.63004815879777 +1.45 0.050000000000000044 0.050000000000000044 48.289 1.65091126351479 1.65091126351479 +1.55 0.050000000000000044 0.050000000000000044 47.612 1.6415267283842807 1.6415267283842807 +1.65 0.04999999999999982 0.050000000000000044 46.932 1.645484123290164 1.645484123290164 +1.75 0.050000000000000044 0.050000000000000044 46.074 1.6395319454039317 1.6395319454039317 +1.85 0.050000000000000044 0.04999999999999982 45.194 1.6698038806997666 1.6698038806997666 +1.95 0.050000000000000044 0.050000000000000044 43.937 1.6778596484807662 1.6778596484807662 +2.05 0.04999999999999982 0.050000000000000266 42.904 1.7532655246710351 1.7532655246710351 +2.1500000000000004 0.050000000000000266 0.04999999999999982 42.284 1.7532655246710351 1.7532655246710351 +2.25 0.04999999999999982 0.04999999999999982 41.173 1.9561722828012875 1.9561722828012875 +2.3499999999999996 0.04999999999999982 0.050000000000000266 40.237 1.8695574342608468 1.8695574342608468 +2.45 0.050000000000000266 0.04999999999999982 39.347 1.8942882568394916 1.8942882568394916 +2.55 0.04999999999999982 0.050000000000000266 37.992 1.8348005341180824 1.8348005341180824 +2.6500000000000004 0.050000000000000266 0.04999999999999982 36.991 2.0822723164850463 2.0822723164850463 +# END YODA_SCATTER2D diff --git a/bin/Makefile.am b/bin/Makefile.am --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -1,35 +1,35 @@ bin_SCRIPTS = rivet-config rivet-buildplugin dist_bin_SCRIPTS = make-plots make-pgfplots EXTRA_DIST = RIVETPROGS = \ rivet \ rivet-mkanalysis \ rivet-findid rivet-which \ rivet-diffhepdata \ - rivet-cmphistos rivet-mkhtml + rivet-cmphistos rivet-mkhtml rivet-merge if ENABLE_PYEXT dist_bin_SCRIPTS += $(RIVETPROGS) else EXTRA_DIST += $(RIVETPROGS) endif ## bash completion if ENABLE_PYEXT dist_pkgdata_DATA = rivet-completion bashcomp_dir = $(DESTDIR)$(prefix)/etc/bash_completion.d install-data-local: if [[ -d "$(bashcomp_dir)" && -w "$(bashcomp_dir)" ]]; then \ $(install_sh_DATA) rivet-completion $(bashcomp_dir)/; fi uninstall-local: rm -f $(bashcomp_dir)/rivet-completion else EXTRA_DIST += rivet-completion endif ## No-Python Rivet program noinst_PROGRAMS = rivet-nopy rivet_nopy_SOURCES = rivet-nopy.cc rivet_nopy_CPPFLAGS = -I$(top_srcdir)/include $(AM_CPPFLAGS) rivet_nopy_LDFLAGS = -L$(HEPMCLIBPATH) rivet_nopy_LDADD = $(top_builddir)/src/libRivet.la -lHepMC diff --git a/bin/rivet b/bin/rivet --- a/bin/rivet +++ b/bin/rivet @@ -1,672 +1,678 @@ #! /usr/bin/env python """\ Run Rivet analyses on HepMC events read from a file or Unix pipe Examples: %prog [options] [ ...] or mkfifo fifo.hepmc my_generator -o fifo.hepmc & %prog [options] fifo.hepmc ENVIRONMENT: * RIVET_ANALYSIS_PATH: list of paths to be searched for plugin analysis libraries at runtime * RIVET_DATA_PATH: list of paths to be searched for data files (defaults to use analysis path) * RIVET_WEIGHT_INDEX: the numerical weight-vector index to use in this run (default = 0; -1 = ignore weights) * See the documentation for more environment variables. """ from __future__ import print_function import os, sys ## Load the rivet module try: import rivet except: ## If rivet loading failed, try to bootstrap the Python path! try: # TODO: Is this a good idea? Maybe just notify the user that their PYTHONPATH is wrong? import commands modname = sys.modules[__name__].__file__ binpath = os.path.dirname(modname) rivetconfigpath = os.path.join(binpath, "rivet-config") rivetpypath = commands.getoutput(rivetconfigpath + " --pythonpath") sys.path.append(rivetpypath) import rivet except: sys.stderr.write("The rivet Python module could not be loaded: is your PYTHONPATH set correctly?\n") sys.exit(5) rivet.util.check_python_version() rivet.util.set_process_name("rivet") import time, datetime, logging, signal ## Parse command line options from optparse import OptionParser, OptionGroup parser = OptionParser(usage=__doc__, version="rivet v%s" % rivet.version()) anagroup = OptionGroup(parser, "Analysis handling") anagroup.add_option("-a", "--analysis", "--analyses", dest="ANALYSES", action="append", default=[], metavar="ANA", help="add an analysis (or comma-separated list of analyses) to the processing list.") anagroup.add_option("--list-analyses", "--list", dest="LIST_ANALYSES", action="store_true", default=False, help="show the list of available analyses' names. With -v, it shows the descriptions, too") anagroup.add_option("--list-keywords", "--keywords", dest="LIST_KEYWORDS", action="store_true", default=False, help="show the list of available keywords.") anagroup.add_option("--list-used-analyses", action="store_true", dest="LIST_USED_ANALYSES", default=False, help="list the analyses used by this command (after subtraction of inappropriate ones)") anagroup.add_option("--show-analysis", "--show-analyses", "--show", dest="SHOW_ANALYSES", action="append", default=[], help="show the details of an analysis") anagroup.add_option("--show-bibtex", dest="SHOW_BIBTEX", action="store_true", default=False, help="show BibTeX entries for all used analyses") anagroup.add_option("--analysis-path", dest="ANALYSIS_PATH", metavar="PATH", default=None, help="specify the analysis search path (cf. $RIVET_ANALYSIS_PATH).") # TODO: remove/deprecate the append? anagroup.add_option("--analysis-path-append", dest="ANALYSIS_PATH_APPEND", metavar="PATH", default=None, help="append to the analysis search path (cf. $RIVET_ANALYSIS_PATH).") anagroup.add_option("--pwd", dest="ANALYSIS_PATH_PWD", action="store_true", default=False, help="append the current directory (pwd) to the analysis/data search paths (cf. $RIVET_ANALYSIS_PATH).") # TODO: add control for more paths? parser.add_option_group(anagroup) extragroup = OptionGroup(parser, "Extra run settings") extragroup.add_option("-o", "-H", "--histo-file", dest="HISTOFILE", default="Rivet.yoda", help="specify the output histo file path (default = %default)") extragroup.add_option("-p", "--preload-file", dest="PRELOADFILE", default=None, help="specify and old yoda file to initialize (default = %default)") extragroup.add_option("--no-histo-file", dest="WRITE_DATA", action="store_false", default=True, help="don't write out any histogram file at the end of the run (default = write)") extragroup.add_option("-x", "--cross-section", dest="CROSS_SECTION", default=None, metavar="XS", help="specify the signal process cross-section in pb") extragroup.add_option("-n", "--nevts", dest="MAXEVTNUM", type="int", default=None, metavar="NUM", help="restrict the max number of events to process") extragroup.add_option("--nskip", dest="EVTSKIPNUM", type="int", default=0, metavar="NUM", help="skip NUM events read from input before beginning processing") extragroup.add_option("--runname", dest="RUN_NAME", default=None, metavar="NAME", help="give an optional run name, to be prepended as a 'top level directory' in histo paths") extragroup.add_option("--ignore-beams", dest="IGNORE_BEAMS", action="store_true", default=False, help="ignore input event beams when checking analysis compatibility. " "WARNING: analyses may not work correctly, or at all, with inappropriate beams") +extragroup.add_option("-d", "--dump", dest="DUMP_PERIOD", type="int", + default=None, metavar="NUM", + help="run finalize() and write out the resulting yoda-file at regular intervals") + parser.add_option_group(extragroup) timinggroup = OptionGroup(parser, "Timeouts and periodic operations") timinggroup.add_option("--event-timeout", dest="EVENT_TIMEOUT", type="int", default=21600, metavar="NSECS", help="max time in whole seconds to wait for an event to be generated from the specified source (default = %default)") timinggroup.add_option("--run-timeout", dest="RUN_TIMEOUT", type="int", default=None, metavar="NSECS", help="max time in whole seconds to wait for the run to finish. This can be useful on batch systems such " "as the LCG Grid where tokens expire on a fixed wall-clock and can render long Rivet runs unable to write " "out the final histogram file (default = unlimited)") timinggroup.add_option("--histo-interval", dest="HISTO_WRITE_INTERVAL", type=int, default=1000, help="specify the number of events between histogram file updates, default = %default. " "Set to 0 to only write out at the end of the run. Note that intermediate histograms will be those " "from the analyze step only: analysis finalizing is currently not executed until the end of the run.") parser.add_option_group(timinggroup) verbgroup = OptionGroup(parser, "Verbosity control") parser.add_option("-l", dest="NATIVE_LOG_STRS", action="append", default=[], help="set a log level in the Rivet library") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) opts, args = parser.parse_args() ## Override/modify analysis search path if opts.ANALYSIS_PATH: rivet.setAnalysisLibPaths(opts.ANALYSIS_PATH.split(":")) rivet.setAnalysisDataPaths(opts.ANALYSIS_PATH.split(":")) if opts.ANALYSIS_PATH_APPEND: for ap in opts.ANALYSIS_PATH_APPEND.split(":"): rivet.addAnalysisLibPath(ap) rivet.addAnalysisDataPath(ap) if opts.ANALYSIS_PATH_PWD: rivet.addAnalysisLibPath(os.path.abspath(".")) rivet.addAnalysisDataPath(os.path.abspath(".")) ## Configure logging logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") for l in opts.NATIVE_LOG_STRS: name, level = None, None try: name, level = l.split("=") except: name = "Rivet" level = l ## Fix name if name != "Rivet" and not name.startswith("Rivet."): name = "Rivet." + name try: ## Get right error type level = rivet.LEVELS.get(level.upper(), None) logging.debug("Setting log level: %s %d" % (name, level)) rivet.setLogLevel(name, level) except: logging.warning("Couldn't process logging string '%s'" % l) ############################ ## Listing available analyses/keywords def getAnalysesByKeyword(alist, kstring): add, veto, ret = [], [], [] bits = [i for i in kstring.replace("^@", "@^").split("@") if len(i) > 0] for b in bits: if b.startswith("^"): veto.append(b.strip("^")) else: add.append(b) add = set(add) veto = set(veto) for a in alist: kwds = set([i.lower() for i in rivet.AnalysisLoader.getAnalysis(a).keywords()]) if kwds.intersection(veto) and len(kwds.intersection(add)) == len(list(add)): ret.append(a) return ret ## List of analyses all_analyses = rivet.AnalysisLoader.analysisNames() if opts.LIST_ANALYSES: ## Treat args as case-insensitive regexes if present regexes = None if args: import re regexes = [re.compile(arg, re.I) for arg in args] # import tempfile, subprocess # tf, tfpath = tempfile.mkstemp(prefix="rivet-list.") names = [] msg = [] for aname in all_analyses: if not regexes: toshow = True else: toshow = False for regex in regexes: if regex.search(aname): toshow = True break if toshow: names.append(aname) msg.append('') if opts.LOGLEVEL <= logging.INFO: a = rivet.AnalysisLoader.getAnalysis(aname) st = "" if a.status() == "VALIDATED" else ("[%s] " % a.status()) # detex will very likely introduce some non-ASCII chars from # greek names in analysis titles. # The u"" prefix and explicit print encoding are necessary for # py2 to handle this properly msg[-1] = u"%s%s" % (st, a.summary()) if opts.LOGLEVEL < logging.INFO: if a.keywords(): msg[-1] += u" [%s]" % " ".join(a.keywords()) if a.luminosityfb(): msg[-1] += u" [ \int L = %s fb^{-1} ]" % a.luminosityfb() msg = rivet.util.detex(msg) retlist = '\n'.join([ u"%-25s %s" % (a,m) for a,m in zip(names,msg) ]) if type(u'') is not str: retlist = retlist.encode('utf-8') print(retlist) sys.exit(0) def getKeywords(alist): all_keywords = [] for a in alist: all_keywords.extend(rivet.AnalysisLoader.getAnalysis(a).keywords()) all_keywords = [i.lower() for i in all_keywords] return sorted(list(set(all_keywords))) ## List keywords if opts.LIST_KEYWORDS: # a = rivet.AnalysisLoader.getAnalysis(aname) for k in getKeywords(all_analyses): print(k) sys.exit(0) ## Show analyses' details if len(opts.SHOW_ANALYSES) > 0: toshow = [] for i, a in enumerate(opts.SHOW_ANALYSES): a_up = a.upper() if a_up in all_analyses and a_up not in toshow: toshow.append(a_up) else: ## Treat as a case-insensitive regex import re regex = re.compile(a, re.I) for ana in all_analyses: if regex.search(ana) and a_up not in toshow: toshow.append(ana) msgs = [] for i, name in enumerate(sorted(toshow)): import textwrap ana = rivet.AnalysisLoader.getAnalysis(name) msg = "" msg += name + "\n" msg += (len(name) * "=") + "\n\n" msg += rivet.util.detex(ana.summary()) + "\n\n" msg += "Status: " + ana.status() + "\n\n" # TODO: reduce to only show Inspire in v3 if ana.inspireId(): msg += "Inspire ID: " + ana.inspireId() + "\n" msg += "Inspire URL: http://inspire-hep.net/record/" + ana.inspireId() + "\n" msg += "HepData URL: http://hepdata.net/record/ins" + ana.inspireId() + "\n" elif ana.spiresId(): msg += "Spires ID: " + ana.spiresId() + "\n" msg += "Inspire URL: http://inspire-hep.net/search?p=find+key+" + ana.spiresId() + "\n" msg += "HepData URL: http://hepdata.cedar.ac.uk/view/irn" + ana.spiresId() + "\n" if ana.year(): msg += "Year of publication: " + ana.year() + "\n" if ana.bibKey(): msg += "BibTeX key: " + ana.bibKey() + "\n" msg += "Authors:\n" for a in ana.authors(): msg += " " + a + "\n" msg += "\n" msg += "Description:\n" twrap = textwrap.TextWrapper(width=75, initial_indent=2*" ", subsequent_indent=2*" ") msg += twrap.fill(rivet.util.detex(ana.description())) + "\n\n" if ana.experiment(): msg += "Experiment: " + ana.experiment() if ana.collider(): msg += "(%s)" % ana.collider() msg += "\n" # TODO: move this formatting into Analysis or a helper function? if ana.requiredBeams(): def pid_to_str(pid): if pid == 11: return "e-" elif pid == -11: return "e+" elif pid == 2212: return "p+" elif pid == -2212: return "p-" elif pid == 10000: return "*" else: return str(pid) beamstrs = [] for bp in ana.requiredBeams(): beamstrs.append(pid_to_str(bp[0]) + " " + pid_to_str(bp[1])) msg += "Beams:" + ", ".join(beamstrs) + "\n" if ana.requiredEnergies(): msg += "Beam energies:" + "; ".join(["(%0.1f, %0.1f) GeV\n" % (epair[0], epair[1]) for epair in ana.requiredEnergies()]) else: msg += "Beam energies: ANY\n" if ana.runInfo(): msg += "Run details:\n" twrap = textwrap.TextWrapper(width=75, initial_indent=2*" ", subsequent_indent=4*" ") for l in ana.runInfo().split("\n"): msg += twrap.fill(l) + "\n" if ana.luminosityfb(): msg+= "\nIntegrated data luminosity = %s inverse fb.\n"%ana.luminosityfb() if ana.keywords(): msg += "\nAnalysis keywords:" for k in ana.keywords(): msg += " %s"%k msg+= "\n\n" if ana.references(): msg += "\n" + "References:\n" for r in ana.references(): url = None if r.startswith("arXiv:"): code = r.split()[0].replace("arXiv:", "") url = "http://arxiv.org/abs/" + code elif r.startswith("doi:"): code = r.replace("doi:", "") url = "http://dx.doi.org/" + code if url is not None: r += " - " + url msg += " " + r + "\n" ## Add to the output msgs.append(msg) ## Write the combined messages to a temporary file and page it if msgs: try: import tempfile, subprocess tffd, tfpath = tempfile.mkstemp(prefix="rivet-show.") os.write(tffd, u"\n\n".join(msgs).encode('utf-8')) if sys.stdout.isatty(): pager = subprocess.Popen(["less", "-FX", tfpath]) #, stdin=subprocess.PIPE) pager.communicate() else: f = open(tfpath) print(f.read()) f.close() finally: os.unlink(tfpath) #< always clean up sys.exit(0) ############################ ## Actual analysis runs ## We allow comma-separated lists of analysis names -- normalise the list here newanas = [] for a in opts.ANALYSES: if "," in a: newanas += a.split(",") elif "@" in a: #< NB. this bans combination of ana lists and keywords in a single arg temp = getAnalysesByKeyword(all_analyses, a) for i in temp: newanas.append(i) else: newanas.append(a) opts.ANALYSES = newanas ## Parse supplied cross-section if opts.CROSS_SECTION is not None: xsstr = opts.CROSS_SECTION try: opts.CROSS_SECTION = float(xsstr) except: import re suffmatch = re.search(r"[^\d.]", xsstr) if not suffmatch: raise ValueError("Bad cross-section string: %s" % xsstr) factor = base = None suffstart = suffmatch.start() if suffstart != -1: base = xsstr[:suffstart] suffix = xsstr[suffstart:].lower() if suffix == "mb": factor = 1e+9 elif suffix == "mub": factor = 1e+6 elif suffix == "nb": factor = 1e+3 elif suffix == "pb": factor = 1 elif suffix == "fb": factor = 1e-3 elif suffix == "ab": factor = 1e-6 if factor is None or base is None: raise ValueError("Bad cross-section string: %s" % xsstr) xs = float(base) * factor opts.CROSS_SECTION = xs ## Print the available CLI options! #if opts.LIST_OPTIONS: # for o in parser.option_list: # print(o.get_opt_string()) # sys.exit(0) ## Set up signal handling RECVD_KILL_SIGNAL = None def handleKillSignal(signum, frame): "Declare us as having been signalled, and return to default handling behaviour" global RECVD_KILL_SIGNAL logging.critical("Signal handler called with signal " + str(signum)) RECVD_KILL_SIGNAL = signum signal.signal(signum, signal.SIG_DFL) ## Signals to handle signal.signal(signal.SIGTERM, handleKillSignal); signal.signal(signal.SIGHUP, handleKillSignal); signal.signal(signal.SIGINT, handleKillSignal); signal.signal(signal.SIGUSR1, handleKillSignal); signal.signal(signal.SIGUSR2, handleKillSignal); try: signal.signal(signal.SIGXCPU, handleKillSignal); except: pass ## Identify HepMC files/streams ## TODO: check readability, deal with stdin if len(args) > 0: HEPMCFILES = args else: HEPMCFILES = ["-"] ## Event number logging def logNEvt(n, starttime, maxevtnum): if n % 10000 == 0: nevtloglevel = logging.CRITICAL elif n % 1000 == 0: nevtloglevel = logging.WARNING elif n % 100 == 0: nevtloglevel = logging.INFO else: nevtloglevel = logging.DEBUG currenttime = datetime.datetime.now().replace(microsecond=0) elapsedtime = currenttime - starttime logging.log(nevtloglevel, "Event %d (%s elapsed)" % (n, str(elapsedtime))) # if maxevtnum is None: # logging.log(nevtloglevel, "Event %d (%s elapsed)" % (n, str(elapsedtime))) # else: # remainingtime = (maxevtnum-n) * elapsedtime.total_seconds() / float(n) # eta = time.strftime("%a %b %d %H:%M", datetime.localtime(currenttime + remainingtime)) # logging.log(nevtloglevel, "Event %d (%d s elapsed / %d s left) -> ETA: %s" % # (n, elapsedtime, remainingtime, eta)) ## Do some checks on output histo file, before we stat the event loop histo_parentdir = os.path.dirname(os.path.abspath(opts.HISTOFILE)) if not os.path.exists(histo_parentdir): logging.error('Parent path of output histogram file does not exist: %s\nExiting.' % histo_parentdir) sys.exit(4) if not os.access(histo_parentdir,os.W_OK): logging.error('Insufficient permissions to write output histogram file to directory %s\nExiting.' % histo_parentdir) sys.exit(4) ## Set up analysis handler RUNNAME = opts.RUN_NAME or "" ah = rivet.AnalysisHandler(RUNNAME) ah.setIgnoreBeams(opts.IGNORE_BEAMS) for a in opts.ANALYSES: ## Print warning message and exit if not a valid analysis name if not rivet.stripOptions(a) in all_analyses: logging.warning("'%s' is not a known Rivet analysis! Do you need to set RIVET_ANALYSIS_PATH or use the --pwd switch?\n" % a) # TODO: lay out more neatly, or even try for a "did you mean XXXX?" heuristic? logging.warning("There are %d currently available analyses:\n" % len(all_analyses) + ", ".join(all_analyses)) sys.exit(1) logging.debug("Adding analysis '%s'" % a) ah.addAnalysis(a) if opts.PRELOADFILE is not None: ah.readData(opts.PRELOADFILE) +if opts.DUMP_PERIOD: + ah.dump(opts.HISTOFILE, opts.DUMP_PERIOD) if opts.SHOW_BIBTEX: bibs = [] for aname in sorted(ah.analysisNames()): ana = rivet.AnalysisLoader.getAnalysis(aname) bibs.append("% " + aname + "\n" + ana.bibTeX()) if bibs: print("\nBibTeX for used Rivet analyses:\n") print("% --------------------------\n") print("\n\n".join(bibs) + "\n") print("% --------------------------\n") ## Read and process events run = rivet.Run(ah) if opts.CROSS_SECTION is not None: logging.info("User-supplied cross-section = %e pb" % opts.CROSS_SECTION) run.setCrossSection(opts.CROSS_SECTION) if opts.LIST_USED_ANALYSES is not None: run.setListAnalyses(opts.LIST_USED_ANALYSES) ## Print platform type import platform starttime = datetime.datetime.now().replace(microsecond=0) logging.info("Rivet %s running on machine %s (%s) at %s" % \ (rivet.version(), platform.node(), platform.machine(), str(starttime))) def min_nonnull(a, b): "A version of min which considers None to always be greater than a real number" if a is None: return b if b is None: return a return min(a, b) ## Set up an event timeout handler class TimeoutException(Exception): pass if opts.EVENT_TIMEOUT or opts.RUN_TIMEOUT: def evttimeouthandler(signum, frame): logging.warn("It has taken more than %d secs to get an event! Is the input event stream working?" % min_nonnull(opts.EVENT_TIMEOUT, opts.RUN_TIMEOUT)) raise TimeoutException("Event timeout") signal.signal(signal.SIGALRM, evttimeouthandler) ## Init run based on one event hepmcfile = HEPMCFILES[0] ## Apply a file-level weight derived from the filename hepmcfileweight = 1.0 if ":" in hepmcfile: hepmcfile, hepmcfileweight = hepmcfile.rsplit(":", 1) hepmcfileweight = float(hepmcfileweight) try: if opts.EVENT_TIMEOUT or opts.RUN_TIMEOUT: signal.alarm(min_nonnull(opts.EVENT_TIMEOUT, opts.RUN_TIMEOUT)) init_ok = run.init(hepmcfile, hepmcfileweight) signal.alarm(0) if not init_ok: logging.error("Failed to initialise using event file '%s'... exiting" % hepmcfile) sys.exit(2) except TimeoutException as te: logging.error("Timeout in initialisation from event file '%s'... exiting" % hepmcfile) sys.exit(3) except Exception as ex: logging.warning("Could not read from '%s' (error=%s)" % (hepmcfile, str(ex))) sys.exit(3) ## Event loop evtnum = 0 for fileidx, hepmcfile in enumerate(HEPMCFILES): ## Apply a file-level weight derived from the filename hepmcfileweight = 1.0 if ":" in hepmcfile: hepmcfile, hepmcfileweight = hepmcfile.rsplit(":", 1) hepmcfileweight = float(hepmcfileweight) ## Open next HepMC file (NB. this doesn't apply to the first file: it was already used for the run init) if fileidx > 0: try: run.openFile(hepmcfile, hepmcfileweight) except Exception as ex: logging.warning("Could not read from '%s' (error=%s)" % (hepmcfile, ex)) continue if not run.readEvent(): logging.warning("Could not read events from '%s'" % hepmcfile) continue ## Announce new file msg = "Reading events from '%s'" % hepmcfile if hepmcfileweight != 1.0: msg += " (file weight = %e)" % hepmcfileweight logging.info(msg) ## The event loop while opts.MAXEVTNUM is None or evtnum-opts.EVTSKIPNUM < opts.MAXEVTNUM: evtnum += 1 ## Optional event skipping if evtnum <= opts.EVTSKIPNUM: logging.debug("Skipping event #%i" % evtnum) run.skipEvent(); continue ## Only log the event number once we're actually processing logNEvt(evtnum, starttime, opts.MAXEVTNUM) ## Process this event processed_ok = run.processEvent() if not processed_ok: logging.warn("Event processing failed for evt #%i!" % evtnum) break ## Set flag to exit event loop if run timeout exceeded if opts.RUN_TIMEOUT and (time.time() - starttime) > opts.RUN_TIMEOUT: logging.warning("Run timeout of %d secs exceeded... exiting gracefully" % opts.RUN_TIMEOUT) RECVD_KILL_SIGNAL = True ## Exit the loop if signalled if RECVD_KILL_SIGNAL is not None: break ## Read next event (with timeout handling if requested) try: if opts.EVENT_TIMEOUT: signal.alarm(opts.EVENT_TIMEOUT) read_ok = run.readEvent() signal.alarm(0) if not read_ok: break except TimeoutException as te: logging.error("Timeout in reading event from '%s'... exiting" % hepmcfile) sys.exit(3) ## Write a histo file snapshot if appropriate if opts.HISTO_WRITE_INTERVAL is not None and opts.HISTO_WRITE_INTERVAL > 0: if evtnum % opts.HISTO_WRITE_INTERVAL == 0: ah.writeData(opts.HISTOFILE) ## Print end-of-loop messages loopendtime = datetime.datetime.now().replace(microsecond=0) logging.info("Finished event loop at %s" % str(loopendtime)) logging.info("Cross-section = %e pb" % ah.crossSection()) print() ## Finalize and write out data file run.finalize() if opts.WRITE_DATA: ah.writeData(opts.HISTOFILE) print() endtime = datetime.datetime.now().replace(microsecond=0) logging.info("Rivet run completed at %s, time elapsed = %s" % (str(endtime), str(endtime-starttime))) print() logging.info("Histograms written to %s" % os.path.abspath(opts.HISTOFILE)) diff --git a/bin/rivet-cmphistos b/bin/rivet-cmphistos --- a/bin/rivet-cmphistos +++ b/bin/rivet-cmphistos @@ -1,490 +1,490 @@ #! /usr/bin/env python """\ %prog - generate histogram comparison plots USAGE: %prog [options] yodafile1[:'PlotOption1=Value':'PlotOption2=Value':...] [path/to/yodafile2 ...] [PLOT:Key1=Val1:...] where the plot options are described in the make-plots manual in the HISTOGRAM section. ENVIRONMENT: * RIVET_ANALYSIS_PATH: list of paths to be searched for plugin analysis libraries at runtime * RIVET_DATA_PATH: list of paths to be searched for data files """ from __future__ import print_function import rivet, yoda, sys, os rivet.util.check_python_version() rivet.util.set_process_name(os.path.basename(__file__)) class Plot(dict): "A tiny Plot object to help writing out the head in the .dat file" def __repr__(self): return "# BEGIN PLOT\n" + "\n".join("%s=%s" % (k,v) for k,v in self.items()) + "\n# END PLOT\n\n" def sanitiseString(s): #s = s.replace('_','\\_') #s = s.replace('^','\\^{}') #s = s.replace('$','\\$') s = s.replace('#','\\#') s = s.replace('%','\\%') return s def getCommandLineOptions(): "Parse command line options" from optparse import OptionParser, OptionGroup parser = OptionParser(usage=__doc__) parser.add_option('-o', '--outdir', dest='OUTDIR', default='.', help='write data files into this directory') parser.add_option("--hier-out", action="store_true", dest="HIER_OUTPUT", default=False, help="write output dat files into a directory hierarchy which matches the analysis paths") parser.add_option('--plotinfodir', dest='PLOTINFODIRS', action='append', default=['.'], help='directory which may contain plot header information (in addition ' 'to standard Rivet search paths)') parser.add_option("--no-rivet-refs", dest="RIVETREFS", action="store_false", default=True, help="don't use Rivet reference data files") # parser.add_option("--refid", dest="REF_ID", # default="REF", help="ID of reference data set (file path for non-REF data)") parser.add_option("--reftitle", dest="REFTITLE", default='Data', help="Reference data legend entry") parser.add_option("--pwd", dest="PATH_PWD", action="store_true", default=False, help="append the current directory (pwd) to the analysis/data search paths (cf. $RIVET_ANALYSIS/DATA_PATH)") parser.add_option("-v", "--verbose", dest="VERBOSE", action="store_true", default=False, help="produce debug output to the terminal") stygroup = OptionGroup(parser, "Plot style") stygroup.add_option("--linear", action="store_true", dest="LINEAR", default=False, help="plot with linear scale") stygroup.add_option("--errs", "--mcerrs", "--mc-errs", action="store_true", dest="MC_ERRS", default=False, help="show vertical error bars on the MC lines") stygroup.add_option("--no-ratio", action="store_false", dest="RATIO", default=True, help="disable the ratio plot") stygroup.add_option("--rel-ratio", action="store_true", dest="RATIO_DEVIATION", default=False, help="show the ratio plots scaled to the ref error") stygroup.add_option("--no-plottitle", action="store_true", dest="NOPLOTTITLE", default=False, help="don't show the plot title on the plot " "(useful when the plot description should only be given in a caption)") stygroup.add_option("--style", dest="STYLE", default="default", help="change plotting style: default|bw|talk") stygroup.add_option("-c", "--config", dest="CONFIGFILES", action="append", default=["~/.make-plots"], help="additional plot config file(s). Settings will be included in the output configuration.") parser.add_option_group(stygroup) selgroup = OptionGroup(parser, "Selective plotting") # selgroup.add_option("--show-single", dest="SHOW_SINGLE", choices=("no", "ref", "mc", "all"), # default="mc", help="control if a plot file is made if there is only one dataset to be plotted " # "[default=%default]. If the value is 'no', single plots are always skipped, for 'ref' and 'mc', " # "the plot will be written only if the single plot is a reference plot or an MC " # "plot respectively, and 'all' will always create single plot files.\n The 'ref' and 'all' values " # "should be used with great care, as they will also write out plot files for all reference " # "histograms without MC traces: combined with the -R/--rivet-refs flag, this is a great way to " # "write out several thousand irrelevant reference data histograms!") # selgroup.add_option("--show-mc-only", "--all", action="store_true", dest="SHOW_IF_MC_ONLY", # default=False, help="make a plot file even if there is only one dataset to be plotted and " # "it is an MC one. Deprecated and will be removed: use --show-single instead, which overrides this.") # # selgroup.add_option("-l", "--histogram-list", dest="HISTOGRAMLIST", # # default=None, help="specify a file containing a list of histograms to plot, in the format " # # "/ANALYSIS_ID/histoname, one per line, e.g. '/DELPHI_1996_S3430090/d01-x01-y01'.") selgroup.add_option("-m", "--match", action="append", help="only write out histograms whose $path/$name string matches these regexes. The argument " "may also be a text file.", dest="PATHPATTERNS") selgroup.add_option("-M", "--unmatch", action="append", help="exclude histograms whose $path/$name string matches these regexes", dest="PATHUNPATTERNS") parser.add_option_group(selgroup) return parser def getHistos(filelist): """Loop over all input files. Only use the first occurrence of any REF-histogram and the first occurrence in each MC file for every MC-histogram.""" refhistos, mchistos = {}, {} for infile in filelist: mchistos.setdefault(infile, {}) analysisobjects = yoda.read(infile, patterns=opts.PATHPATTERNS, unpatterns=opts.PATHUNPATTERNS) #print(analysisobjects) for path, ao in analysisobjects.items(): ## We can't plot non-histograms yet # TODO: support counter plotting with a faked x (or y) position and forced plot width/height if ao.type not in ("Counter", "Histo1D", "Histo2D", "Profile1D", "Profile2D", "Scatter1D", "Scatter2D", "Scatter3D"): continue ## Make a path object and ensure the path is in standard form try: aop = rivet.AOPath(path) except Exception as e: #print(e) print("Found analysis object with non-standard path structure:", path, "... skipping") continue ## We don't plot data objects with path components hidden by an underscore prefix - if aop.istmp(): + if aop.istmp() or aop.israw(): continue ## Add it to the ref or mc paths, if this path isn't already known basepath = aop.basepath(keepref=False) if aop.isref() and basepath not in refhistos: ao.path = aop.varpath(keepref=False, defaultvarid=0) refhistos[basepath] = ao else: #if basepath not in mchistos[infile]: mchistos[infile].setdefault(basepath, {})[aop.varid(0)] = ao return refhistos, mchistos def getRivetRefData(anas=None): "Find all Rivet reference data files" refhistos = {} rivet_data_dirs = rivet.getAnalysisRefPaths() dirlist = [] for d in rivet_data_dirs: if anas is None: import glob dirlist.append(glob.glob(os.path.join(d, '*.yoda'))) else: dirlist.append([os.path.join(d, a+'.yoda') for a in anas]) for filelist in dirlist: # TODO: delegate to getHistos? for infile in filelist: analysisobjects = yoda.read(infile, patterns=opts.PATHPATTERNS, unpatterns=opts.PATHUNPATTERNS) for path, ao in analysisobjects.items(): aop = rivet.AOPath(ao.path) if aop.isref(): ao.path = aop.basepath(keepref=False) refhistos[ao.path] = ao return refhistos def parseArgs(args): """Look at the argument list and split it at colons, in order to separate the file names from the plotting options. Store the file names and file specific plotting options.""" filelist = [] plotoptions = {} for a in args: asplit = a.split(':') path = asplit[0] filelist.append(path) plotoptions[path] = [] has_title = False for i in range(1, len(asplit)): ## Add 'Title' if there is no = sign before math mode if '=' not in asplit[i] or ('$' in asplit[i] and asplit[i].index('$') < asplit[i].index('=')): asplit[i] = 'Title=%s' % asplit[i] if asplit[i].startswith('Title='): has_title = True plotoptions[path].append(asplit[i]) if path != "PLOT" and not has_title: plotoptions[path].append('Title=%s' % sanitiseString(os.path.basename( os.path.splitext(path)[0] )) ) return filelist, plotoptions def setStyle(ao, istyle, variation=False): """Set default plot styles (color and line width) colors borrowed from Google Ngrams""" # LINECOLORS = ['{[HTML]{EE3311}}', # red (Google uses 'DC3912') # '{[HTML]{3366FF}}', # blue # '{[HTML]{109618}}', # green # '{[HTML]{FF9900}}', # orange # '{[HTML]{990099}}'] # lilac LINECOLORS = ['red', 'blue', 'green', 'orange', 'lilac'] LINESTYLES = ['solid', 'dashed', 'dashdotted', 'dotted'] if opts.STYLE == 'talk': ao.setAnnotation('LineWidth', '1pt') if opts.STYLE == 'bw': LINECOLORS = ['black!90', 'black!50', 'black!30'] jc = istyle % len(LINECOLORS) c = LINECOLORS[jc] js = (istyle // len(LINECOLORS)) % len(LINESTYLES) s = LINESTYLES[js] ## If plotting a variation (i.e. band), fade the colour if variation: c += "!30" ao.setAnnotation('LineStyle', '%s' % s) ao.setAnnotation('LineColor', '%s' % c) def setOptions(ao, options): "Set arbitrary annotations" for opt in options: key, val = opt.split('=', 1) ao.setAnnotation(key, val) # TODO: move to rivet.utils def mkoutdir(outdir): "Function to make output directories" if not os.path.exists(outdir): try: os.makedirs(outdir) except: msg = "Can't make output directory '%s'" % outdir raise Exception(msg) if not os.access(outdir, os.W_OK): msg = "Can't write to output directory '%s'" % outdir raise Exception(msg) def mkOutput(hpath, aos, plot=None, special=None): """ Make the .dat file string. We can't use "yoda.writeFLAT(anaobjects, 'foobar.dat')" because the PLOT and SPECIAL blocks don't have a corresponding analysis object. """ output = '' if plot is not None: output += str(plot) if special is not None: output += "\n" output += "# BEGIN SPECIAL %s\n" % hpath output += special output += "# END SPECIAL\n\n" from io import StringIO sio = StringIO() yoda.writeFLAT(aos, sio) output += sio.getvalue() return output def writeOutput(output, h): "Choose output file name and dir" if opts.HIER_OUTPUT: hparts = h.strip("/").split("/", 1) ana = "_".join(hparts[:-1]) if len(hparts) > 1 else "ANALYSIS" outdir = os.path.join(opts.OUTDIR, ana) outfile = '%s.dat' % hparts[-1].replace("/", "_") else: hparts = h.strip("/").split("/") outdir = opts.OUTDIR outfile = '%s.dat' % "_".join(hparts) mkoutdir(outdir) outfilepath = os.path.join(outdir, outfile) f = open(outfilepath, 'w') f.write(output) f.close() #-------------------------------------------------------------------------------------------- if __name__ == '__main__': ## Command line parsing parser = getCommandLineOptions() opts, args = parser.parse_args() ## Add pwd to search paths if opts.PATH_PWD: rivet.addAnalysisLibPath(os.path.abspath(".")) rivet.addAnalysisDataPath(os.path.abspath(".")) ## Split the input file names and the associated plotting options ## given on the command line into two separate lists filelist, plotoptions = parseArgs(args) ## Remove the PLOT dummy file from the file list if "PLOT" in filelist: filelist.remove("PLOT") ## Check that the files exist for f in filelist: if not os.access(f, os.R_OK): print("Error: cannot read from %s" % f) sys.exit(1) ## Read the .plot files plotdirs = opts.PLOTINFODIRS + [os.path.abspath(os.path.dirname(f)) for f in filelist] plotparser = rivet.mkStdPlotParser(plotdirs, opts.CONFIGFILES) ## Create a list of all histograms to be plotted, and identify if they are 2D histos (which need special plotting) try: refhistos, mchistos = getHistos(filelist) except IOError as e: print("File reading error: ", e.strerror) exit(1) hpaths, h2ds = [], [] for aos in mchistos.values(): for p in aos.keys(): ps = rivet.stripOptions(p) if ps and ps not in hpaths: hpaths.append(ps) firstaop = aos[p][sorted(aos[p].keys())[0]] # TODO: Would be nicer to test via isHisto and dim or similar, or yoda.Scatter/Histo/Profile base classes if type(firstaop) in (yoda.Histo2D, yoda.Profile2D) and ps not in h2ds: h2ds.append(ps) ## Take reference data from the Rivet search paths, if there is not already if opts.RIVETREFS: try: refhistos2 = getRivetRefData() except IOError as e: print("File reading error: ", e.strerror) exit(1) refhistos2.update(refhistos) refhistos = refhistos2 ## Purge unmatched ref data entries to save memory keylist = list(refhistos.keys()) # can't modify for-loop target for refhpath in keylist: if refhpath not in hpaths: del refhistos[refhpath] ## Now loop over all MC histograms and plot them # TODO: factorize much of this into a rivet.utils mkplotfile(mchists, refhist, kwargs, is2d=False) function for hpath in hpaths: #print('Currently looking at', h) ## The analysis objects to be plotted anaobjects = [] ## List of histos to be drawn, to sync the legend and plotted lines mainlines = [] varlines = [] ## Is this a 2D histo? is2d = (hpath in h2ds) ## Will we be drawing a ratio plot? showratio = opts.RATIO and not is2d ## A Plot object to represent the PLOT section in the .dat file plot = Plot() if not is2d: plot['Legend'] = '1' plot['LogY'] = '1' headers = plotparser.getHeaders(hpath) if headers: plot.update(headers) # for key, val in headers.items(): # plot[key] = val if "PLOT" in plotoptions: for key_val in plotoptions["PLOT"]: key, val = [s.strip() for s in key_val.split("=",1)] plot[key] = val if opts.LINEAR: plot['LogY'] = '0' if opts.NOPLOTTITLE: plot['Title'] = '' if showratio and opts.RATIO_DEVIATION: plot['RatioPlotMode'] = 'deviation' if opts.STYLE == 'talk': plot['PlotSize'] = '8,6' elif opts.STYLE == 'bw' and showratio: plot['RatioPlotErrorBandColor'] = 'black!10' ## Get a special object, if there is one for this path special = plotparser.getSpecial(hpath) ## Handle reference data histogram, if there is one ratioreference, hasdataref = None, False if hpath in refhistos: hasdataref = True refdata = refhistos[hpath] refdata.setAnnotation('Title', opts.REFTITLE) if not is2d: refdata.setAnnotation('ErrorBars', '1') refdata.setAnnotation('PolyMarker', '*') refdata.setAnnotation('ConnectBins', '0') if showratio: ratioreference = hpath ## For 1D anaobjects.append(refdata) mainlines.append(hpath) ## For 2D if is2d: s = mkOutput(hpath, [refdata], plot, special) writeOutput(s, hpath) ## Loop over the MC files to plot all instances of the histogram styleidx = 0 for infile in filelist: if infile in mchistos: for xpath in sorted(mchistos[infile]): if rivet.stripOptions(xpath) != hpath: continue hmcs = mchistos[infile][xpath] ## For now, just plot all the different variation histograms (reversed, so [0] is on top) # TODO: calculate and plot an appropriate error band, somehow... for i in sorted(hmcs.keys(), reverse=True): iscanonical = (str(i) == "0") hmc = hmcs[i] ## Default linecolor, linestyle if not is2d: setStyle(hmc, styleidx, not iscanonical) if opts.MC_ERRS: hmc.setAnnotation('ErrorBars', '1') ## Plot defaults from .plot files histopts = plotparser.getHistogramOptions(hpath) if histopts: for key, val in histopts.items(): hmc.setAnnotation(key, val) ## Command line plot options setOptions(hmc, plotoptions[infile]) ## Set path attribute fullpath = "/"+infile+xpath if not iscanonical: fullpath += "["+str(i)+"]" hmc.setAnnotation('Path', fullpath) ## Add object / path to appropriate lists if hmc.hasAnnotation("Title"): hmc.setAnnotation("Title", hmc.annotation("Title") + rivet.extractOptionString(xpath)) anaobjects.append(hmc) if iscanonical: mainlines.append(fullpath) else: varlines.append(fullpath) if showratio and ratioreference is None and iscanonical: ratioreference = fullpath ## For 2D, plot each histo now (since overlay makes no sense) if is2d: s = mkOutput(hpath, [hmc], plot, special) writeOutput(s, fullpath) styleidx += 1 ## Finally render the combined plots; only show the first one if it's 2D # TODO: Only show the first *MC* one if 2D? if is2d: anaobjects = anaobjects[:1] ## Add final attrs to Plot plot['DrawOnly'] = ' '.join(varlines + mainlines).strip() plot['LegendOnly'] = ' '.join(mainlines).strip() if showratio and len(varlines + mainlines) > 1: plot['RatioPlot'] = '1' plot['RatioPlotReference'] = ratioreference if not hasdataref and "RatioPlotYLabel" not in plot: if plot.get('RatioPlotMode', '') == 'deviation': plot['RatioPlotYLabel'] = 'Deviation' #r'$\text{MC}-\text{MC}_\text{ref}$' else: plot['RatioPlotYLabel'] = 'Ratio' #r'$\text{MC}/\text{MC}_\text{ref}$' ## Make the output and write to file o = mkOutput(hpath, anaobjects, plot, special) writeOutput(o, hpath) diff --git a/bin/rivet-merge b/bin/rivet-merge new file mode 100755 --- /dev/null +++ b/bin/rivet-merge @@ -0,0 +1,66 @@ +#! /usr/bin/env python + +"""\ +Merge together yoda files produced by Rivet. + +Examples: + + %prog [options] [ ...] + +ENVIRONMENT: + * RIVET_ANALYSIS_PATH: list of paths to be searched for plugin + analysis libraries at runtime + * RIVET_DATA_PATH: list of paths to be searched for data files +""" + +import os, sys + +## Load the rivet module +try: + import rivet +except: + ## If rivet loading failed, try to bootstrap the Python path! + try: + # TODO: Is this a good idea? Maybe just notify the user that their PYTHONPATH is wrong? + import commands + modname = sys.modules[__name__].__file__ + binpath = os.path.dirname(modname) + rivetconfigpath = os.path.join(binpath, "rivet-config") + rivetpypath = commands.getoutput(rivetconfigpath + " --pythonpath") + sys.path.append(rivetpypath) + import rivet + except: + sys.stderr.write("The rivet Python module could not be loaded: is your PYTHONPATH set correctly?\n") + sys.exit(5) + +rivet.util.check_python_version() +rivet.util.set_process_name("rivet-merge") + +import time, datetime, logging, signal + +## Parse command line options +from optparse import OptionParser, OptionGroup +parser = OptionParser(usage=__doc__, version="rivet v%s" % rivet.version()) + +extragroup = OptionGroup(parser, "Run settings") +extragroup.add_option("-o", "--output-file", dest="OUTPUTFILE", + default="Rivet.yoda", help="specify the output histo file path (default = %default)") +extragroup.add_option("-e", "--equiv", dest="EQUIV", action="store_true", default=False, + help="assume that the yoda files are equivalent but statistically independent (default= assume that different files contains different processes)") +parser.add_option_group(extragroup) + + +opts, args = parser.parse_args() + + +############################ +## Actual analysis runs + + + +## Set up analysis handler +ah = rivet.AnalysisHandler("Merging") +ah.mergeYodas(args, opts.EQUIV) +ah.writeData(opts.OUTPUTFILE) + + diff --git a/bin/rivet-mkhtml b/bin/rivet-mkhtml --- a/bin/rivet-mkhtml +++ b/bin/rivet-mkhtml @@ -1,508 +1,508 @@ #! /usr/bin/env python """\ %prog [options] [ ...] [PLOT:Key1=Val1:...] Make web pages from histogram files written out by Rivet. You can specify multiple Monte Carlo YODA files to be compared in the same syntax as for rivet-cmphistos, i.e. including plotting options. Reference data, analysis metadata, and plot style information should be found automatically (if not, set the RIVET_ANALYSIS_PATH or similar variables appropriately). Any existing output directory will be overwritten. ENVIRONMENT: * RIVET_ANALYSIS_PATH: list of paths to be searched for plugin analysis libraries at runtime * RIVET_DATA_PATH: list of paths to be searched for data files """ from __future__ import print_function import rivet, sys, os rivet.util.check_python_version() rivet.util.set_process_name(os.path.basename(__file__)) import glob, shutil from subprocess import Popen,PIPE from optparse import OptionParser, OptionGroup parser = OptionParser(usage=__doc__) parser.add_option("-o", "--outputdir", dest="OUTPUTDIR", default="./rivet-plots", help="directory for Web page output") parser.add_option("-c", "--config", dest="CONFIGFILES", action="append", default=["~/.make-plots"], help="plot config file(s) to be used with rivet-cmphistos") parser.add_option("-n", "--num-threads", metavar="NUMTHREADS", dest="NUMTHREADS", type=int, default=None, help="request make-plots to use a specific number of threads") parser.add_option("--ignore-missing", dest="IGNORE_MISSING", action="store_true", default=False, help="ignore missing YODA files") parser.add_option("-i", "--ignore-unvalidated", dest="IGNORE_UNVALIDATED", action="store_true", default=False, help="ignore unvalidated analyses") # parser.add_option("--ref", "--refid", dest="REF_ID", # default=None, help="ID of reference data set (file path for non-REF data)") parser.add_option("--dry-run", help="don't actually do any plotting or HTML building", dest="DRY_RUN", action="store_true", default=False) parser.add_option("--no-cleanup", dest="NO_CLEANUP", action="store_true", default=False, help="keep plotting temporary directory") parser.add_option("--no-subproc", dest="NO_SUBPROC", action="store_true", default=False, help="don't use subprocesses to render the plots in parallel -- useful for debugging") parser.add_option("--pwd", dest="PATH_PWD", action="store_true", default=False, help="append the current directory (pwd) to the analysis/data search paths (cf. $RIVET_ANALYSIS_PATH)") stygroup = OptionGroup(parser, "Style options") stygroup.add_option("-t", "--title", dest="TITLE", default="Plots from Rivet analyses", help="title to be displayed on the main web page") stygroup.add_option("--reftitle", dest="REFTITLE", default="Data", help="legend entry for reference data") stygroup.add_option("--no-plottitle", dest="NOPLOTTITLE", action="store_true", default=False, help="don't show the plot title on the plot " "(useful when the plot description should only be given in a caption)") stygroup.add_option("-s", "--single", dest="SINGLE", action="store_true", default=False, help="display plots on single webpage.") stygroup.add_option("--no-ratio", dest="SHOW_RATIO", action="store_false", default=True, help="don't draw a ratio plot under each main plot.") stygroup.add_option("--errs", "--mcerrs", "--mc-errs", dest="MC_ERRS", action="store_true", default=False, help="plot error bars.") stygroup.add_option("--offline", dest="OFFLINE", action="store_true", default=False, help="generate HTML that does not use external URLs.") stygroup.add_option("--pdf", dest="VECTORFORMAT", action="store_const", const="PDF", default="PDF", help="use PDF as the vector plot format.") stygroup.add_option("--ps", dest="VECTORFORMAT", action="store_const", const="PS", default="PDF", help="use PostScript as the vector plot format. DEPRECATED") stygroup.add_option("--booklet", dest="BOOKLET", action="store_true", default=False, help="create booklet (currently only available for PDF with pdftk or pdfmerge).") stygroup.add_option("--font", dest="OUTPUT_FONT", choices="palatino,cm,times,helvetica,minion".split(","), default="palatino", help="choose the font to be used in the plots") stygroup.add_option("--palatino", dest="OUTPUT_FONT", action="store_const", const="palatino", default="palatino", help="use Palatino as font (default). DEPRECATED: Use --font") stygroup.add_option("--cm", dest="OUTPUT_FONT", action="store_const", const="cm", default="palatino", help="use Computer Modern as font. DEPRECATED: Use --font") stygroup.add_option("--times", dest="OUTPUT_FONT", action="store_const", const="times", default="palatino", help="use Times as font. DEPRECATED: Use --font") stygroup.add_option("--helvetica", dest="OUTPUT_FONT", action="store_const", const="helvetica", default="palatino", help="use Helvetica as font. DEPRECATED: Use --font") stygroup.add_option("--minion", dest="OUTPUT_FONT", action="store_const", const="minion", default="palatino", help="use Adobe Minion Pro as font. DEPRECATED: Use --font") parser.add_option_group(stygroup) selgroup = OptionGroup(parser, "Selective plotting") selgroup.add_option("-m", "--match", action="append", dest="PATHPATTERNS", default=[], help="only write out histograms whose $path/$name string matches any of these regexes") selgroup.add_option("-M", "--unmatch", action="append", dest="PATHUNPATTERNS", default=[], help="exclude histograms whose $path/$name string matches any of these regexes") selgroup.add_option(#"-a", #< these were confusing, and -m should be enough "--ana-match", action="append", dest="ANAPATTERNS", default=[], help="only write out histograms from analyses whose name matches any of these regexes") selgroup.add_option(#"-A", #< these were confusing, and -M should be enough "--ana-unmatch", action="append", dest="ANAUNPATTERNS", default=[], help="exclude histograms from analyses whose name matches any of these regexes") parser.add_option_group(selgroup) vrbgroup = OptionGroup(parser, "Verbosity control") vrbgroup.add_option("-v", "--verbose", help="add extra debug messages", dest="VERBOSE", action="store_true", default=False) parser.add_option_group(vrbgroup) opts, yodafiles = parser.parse_args() ## Add pwd to search paths if opts.PATH_PWD: rivet.addAnalysisLibPath(os.path.abspath(".")) rivet.addAnalysisDataPath(os.path.abspath(".")) ## Check that there are some arguments! if not yodafiles: print("Error: You need to specify some YODA files to be plotted!") sys.exit(1) ## Make output directory if not opts.DRY_RUN: if os.path.exists(opts.OUTPUTDIR) and not os.path.realpath(opts.OUTPUTDIR)==os.getcwd(): import shutil shutil.rmtree(opts.OUTPUTDIR) try: os.makedirs(opts.OUTPUTDIR) except: print("Error: failed to make new directory '%s'" % opts.OUTPUTDIR) sys.exit(1) ## Get set of analyses involved in the runs plotarg = None analyses = set() blocked_analyses = set() import yoda for yodafile in yodafiles: if yodafile.startswith("PLOT:"): plotarg = yodafile continue yodafilepath = os.path.abspath(yodafile.split(":")[0]) if not os.access(yodafilepath, os.R_OK): print("Error: cannot read from %s" % yodafilepath) if opts.IGNORE_MISSING: continue else: sys.exit(2) try: ## Note: we use -m/-M flags here as well as when calling rivet-cmphistos, to potentially speed this initial loading analysisobjects = yoda.read(yodafilepath, patterns=opts.PATHPATTERNS, unpatterns=opts.PATHUNPATTERNS) except IOError as e: print("File reading error: ", e.strerror) sys.exit(1) for path, ao in analysisobjects.items(): ## Make a path object and ensure the path is in standard form try: aop = rivet.AOPath(path) except Exception as e: #print(e) print("Found analysis object with non-standard path structure:", path, "... skipping") continue ## We don't plot data objects with path components hidden by an underscore prefix - if aop.istmp(): + if aop.istmp() or aop.israw(): continue ## Identify analysis/histo name parts analysis = "ANALYSIS" if aop.basepathparts(keepref=False): analysis = rivet.stripOptions(aop.basepathparts(keepref=False)[0]) #< TODO: for compatibility with rivet-cmphistos... generalise? #analysis = "_".join(aop.dirnameparts(keepref=False)[:-1]) #< TODO: would this be nicer? Currently incompatible with rivet-cmphistos ## Optionally veto on analysis name pattern matching if analysis in analyses.union(blocked_analyses): continue import re matched = True if opts.ANAPATTERNS: matched = False for patt in opts.ANAPATTERNS: if re.match(patt, analysis) is not None: matched = True break if matched and opts.ANAUNPATTERNS: for patt in opts.ANAUNPATTERNS: if re.match(patt, analysis) is not None: matched = False break if matched: analyses.add(analysis) else: blocked_analyses.add(analysis) ## Sort analyses: group ascending by analysis name (could specialise grouping by collider), then ## descending by year, and finally descending by bibliographic archive ID code (INSPIRE first). def anasort(name): rtn = (1, name) if name.startswith("MC"): rtn = (99999999, name) else: stdparts = name.split("_") try: year = int(stdparts[1]) rtn = (0, stdparts[0], -year, 0) idcode = (0 if stdparts[2][0] == "I" else 1e10) - int(stdparts[2][1:]) rtn = (0, stdparts[0], -year, idcode) if len(stdparts) > 3: rtn += stdparts[3:] except: pass return rtn analyses = sorted(analyses, key=anasort) ## Uncomment to test analysis ordering on index page # print(analyses) # sys.exit(0) ## Run rivet-cmphistos to get plain .dat files from .yoda ## We do this here since it also makes the necessary directories ch_cmd = ["rivet-cmphistos"] if opts.MC_ERRS: ch_cmd.append("--mc-errs") if not opts.SHOW_RATIO: ch_cmd.append("--no-ratio") if opts.NOPLOTTITLE: ch_cmd.append("--no-plottitle") # if opts.REF_ID is not None: # ch_cmd.append("--refid=%s" % os.path.abspath(opts.REF_ID)) if opts.REFTITLE: ch_cmd.append("--reftitle=%s" % opts.REFTITLE ) if opts.PATHPATTERNS: for patt in opts.PATHPATTERNS: ch_cmd += ["-m", patt] #"'"+patt+"'"] if opts.PATHUNPATTERNS: for patt in opts.PATHUNPATTERNS: ch_cmd += ["-M", patt] #"'"+patt+"'"] ch_cmd.append("--hier-out") # TODO: Need to be able to override this: provide a --plotinfodir cmd line option? ch_cmd.append("--plotinfodir=%s" % os.path.abspath("../")) for af in yodafiles: yodafilepath = os.path.abspath(af.split(":")[0]) if af.startswith("PLOT:"): yodafilepath = "PLOT" elif not os.access(yodafilepath, os.R_OK): continue newarg = yodafilepath if ":" in af: newarg += ":" + af.split(":", 1)[1] # print(newarg) ch_cmd.append(newarg) ## Pass rivet-mkhtml -c args to rivet-cmphistos for configfile in opts.CONFIGFILES: configfile = os.path.abspath(os.path.expanduser(configfile)) if os.access(configfile, os.R_OK): ch_cmd += ["-c", configfile] if opts.VERBOSE: ch_cmd.append("--verbose") print("Calling rivet-cmphistos with the following command:") print(" ".join(ch_cmd)) ## Run rivet-cmphistos in a subdir, after fixing any relative paths in Rivet env vars if not opts.DRY_RUN: for var in ("RIVET_ANALYSIS_PATH", "RIVET_DATA_PATH", "RIVET_REF_PATH", "RIVET_INFO_PATH", "RIVET_PLOT_PATH"): if var in os.environ: abspaths = [os.path.abspath(p) for p in os.environ[var].split(":")] os.environ[var] = ":".join(abspaths) subproc = Popen(ch_cmd, cwd=opts.OUTPUTDIR, stdout=PIPE, stderr=PIPE) out, err = subproc.communicate() retcode = subproc.returncode if opts.VERBOSE or retcode != 0: print('Output from rivet-cmphistos:\n', out) if err : print('Errors from rivet-cmphistos:\n', err) if retcode != 0: print('Crash in rivet-cmphistos code = ', retcode, ' exiting') exit(retcode) ## Write web page containing all (matched) plots ## Make web pages first so that we can load it locally in ## a browser to view the output before all plots are made if not opts.DRY_RUN: style = ''' ''' ## Include MathJax configuration script = '' if not opts.OFFLINE: script = '''\ ''' ## A helper function for metadata LaTeX -> HTML conversion from rivet.util import htmlify ## A timestamp HTML fragment to be used on each page: import datetime timestamp = '

Generated at %s

\n' % datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p") index = open(os.path.join(opts.OUTPUTDIR, "index.html"), "w") index.write('\n\n%s\n%s\n' % (opts.TITLE, style + script)) if opts.BOOKLET and opts.VECTORFORMAT == "PDF": index.write('

%s

\n\n' % opts.TITLE) else: index.write('

%s

\n\n' % opts.TITLE) if opts.SINGLE: ## Write table of contents index.write('
    \n') for analysis in analyses: summary = analysis ana = rivet.AnalysisLoader.getAnalysis(analysis) if ana: summary = "%s (%s)" % (ana.summary(), analysis) if opts.IGNORE_UNVALIDATED and ana.status() != "VALIDATED": continue index.write('
  • %s\n' % (analysis, htmlify(summary)) ) index.write('
\n') for analysis in analyses: references = [] summary = htmlify(analysis) description, inspireid, spiresid = None, None, None if analysis.find("_I") > 0: inspireid = analysis[analysis.rfind('_I')+2:len(analysis)] elif analysis.find("_S") > 0: spiresid = analysis[analysis.rfind('_S')+2:len(analysis)] ana = rivet.AnalysisLoader.getAnalysis(analysis) if ana: if ana.summary(): summary = htmlify("%s (%s)" % (ana.summary(), analysis)) references = ana.references() description = htmlify(ana.description()) spiresid = ana.spiresId() if opts.IGNORE_UNVALIDATED and ana.status().upper() != "VALIDATED": continue if opts.SINGLE: index.write('\n

%s

\n' % (analysis.encode("utf-8"), summary.encode("utf-8"))) else: index.write('\n

%s

\n' % (analysis.encode("utf-8"), summary.encode("utf-8"))) reflist = [] if inspireid: reflist.append('Inspire' % inspireid) reflist.append('HepData' % inspireid) elif spiresid: # elif ana.spiresId(): reflist.append('Inspire' % spiresid) reflist.append('HepData' % spiresid) reflist += references index.write('

%s

\n' % " | ".join(reflist)) if description: try: index.write('

%s

\n' % description) except UnicodeEncodeError as ue: print("Unicode error in analysis description for " + analysis + ": " + str(ue)) anapath = os.path.join(opts.OUTPUTDIR, analysis) if not opts.SINGLE: if not os.path.exists(anapath): os.makedirs(anapath) anaindex = open(os.path.join(anapath, "index.html"), 'w') anaindex.write('\n\n%s – %s\n%s\n\n' % (htmlify(opts.TITLE), analysis, style + script)) anaindex.write('

%s

\n' % htmlify(analysis)) anaindex.write('

Back to index

\n') if description: try: anaindex.write('

\n %s\n

\n' % description) except UnicodeEncodeError as ue: print("Unicode error in analysis description for " + analysis + ": " + str(ue)) else: anaindex = index datfiles = glob.glob("%s/*.dat" % anapath) #print(datfiles) anaindex.write('
\n') for datfile in sorted(datfiles): obsname = os.path.basename(datfile).replace(".dat", "") pngfile = obsname+".png" vecfile = obsname+"."+opts.VECTORFORMAT.lower() srcfile = obsname+".dat" if opts.SINGLE: pngfile = os.path.join(analysis, pngfile) vecfile = os.path.join(analysis, vecfile) srcfile = os.path.join(analysis, srcfile) anaindex.write('
\n') anaindex.write(' %s:
\n' % (analysis, obsname, srcfile, os.path.splitext(vecfile)[0]) ) anaindex.write(' \n' % (analysis, obsname, vecfile) ) anaindex.write(' \n' % pngfile ) anaindex.write(' \n') anaindex.write('
\n') anaindex.write('
\n') if not opts.SINGLE: anaindex.write('
%s\n
\n' % timestamp) anaindex.close() index.write('
%s\n' % timestamp) index.close() # http://stackoverflow.com/questions/377017/test-if-executable-exists-in-python def which(program): import os def is_exe(fpath): return os.path.isfile(fpath) and os.access(fpath, os.X_OK) fpath, fname = os.path.split(program) if fpath: if is_exe(program): return program else: for path in os.environ["PATH"].split(os.pathsep): path = path.strip('"') exe_file = os.path.join(path, program) if is_exe(exe_file): return exe_file return None ## Run make-plots on all generated .dat files # sys.exit(0) mp_cmd = ["make-plots"] if opts.NUMTHREADS: mp_cmd.append("--num-threads=%d" % opts.NUMTHREADS) if opts.NO_CLEANUP: mp_cmd.append("--no-cleanup") if opts.NO_SUBPROC: mp_cmd.append("--no-subproc") if opts.VECTORFORMAT == "PDF": mp_cmd.append("--pdfpng") elif opts.VECTORFORMAT == "PS": mp_cmd.append("--pspng") if opts.OUTPUT_FONT: mp_cmd.append("--font=%s" % opts.OUTPUT_FONT) # if opts.OUTPUT_FONT.upper() == "PALATINO": # mp_cmd.append("--palatino") # if opts.OUTPUT_FONT.upper() == "CM": # mp_cmd.append("--cm") # elif opts.OUTPUT_FONT.upper() == "TIMES": # mp_cmd.append("--times") # elif opts.OUTPUT_FONT.upper() == "HELVETICA": # mp_cmd.append("--helvetica") # elif opts.OUTPUT_FONT.upper() == "MINION": # mp_cmd.append("--minion") datfiles = [] for analysis in analyses: anapath = os.path.join(opts.OUTPUTDIR, analysis) #print(anapath) anadatfiles = glob.glob("%s/*.dat" % anapath) datfiles += sorted(anadatfiles) if datfiles: mp_cmd += datfiles if opts.VERBOSE: mp_cmd.append("--verbose") print("Calling make-plots with the following options:") print(" ".join(mp_cmd)) if not opts.DRY_RUN: Popen(mp_cmd).wait() if opts.BOOKLET and opts.VECTORFORMAT=="PDF": if which("pdftk") is not None: bookletcmd = ["pdftk"] for analysis in analyses: anapath = os.path.join(opts.OUTPUTDIR, analysis) bookletcmd += sorted(glob.glob("%s/*.pdf" % anapath)) bookletcmd += ["cat", "output", "%s/booklet.pdf" % opts.OUTPUTDIR] print(bookletcmd) Popen(bookletcmd).wait() elif which("pdfmerge") is not None: bookletcmd = ["pdfmerge"] for analysis in analyses: anapath = os.path.join(opts.OUTPUTDIR, analysis) bookletcmd += sorted(glob.glob("%s/*.pdf" % anapath)) bookletcmd += ["%s/booklet.pdf" % opts.OUTPUTDIR] print(bookletcmd) Popen(bookletcmd).wait() else: print("Neither pdftk nor pdfmerge available --- not booklet output possible") diff --git a/include/Rivet/Analyses/MC_Cent_pPb.hh b/include/Rivet/Analyses/MC_Cent_pPb.hh new file mode 100644 --- /dev/null +++ b/include/Rivet/Analyses/MC_Cent_pPb.hh @@ -0,0 +1,87 @@ +// -*- C++ -*- +#ifndef RIVET_MC_Cent_pPb_HH +#define RIVET_MC_Cent_pPb_HH + +#include "Rivet/Projections/FinalState.hh" +#include "Rivet/Projections/ChargedFinalState.hh" +#include "Rivet/Projections/SingleValueProjection.hh" +#include "Rivet/Projections/TriggerProjection.hh" + +namespace Rivet { + +/// Example of a centrality observable projection for pPb that uses +/// summed Et in the Pb direction. +class MC_SumETFwdPbCentrality: public SingleValueProjection { + +public: + + /// Constructor. + MC_SumETFwdPbCentrality() { + declare(FinalState(Cuts::eta < -3.2 && Cuts::eta > -4.9 && Cuts::pT > 0.1*GeV), + "FSSumETFwdCentrality"); + } + + /// Clone on the heap. + DEFAULT_RIVET_PROJ_CLONE(MC_SumETFwdPbCentrality); + +protected: + + /// Perform the projection on the Event + void project(const Event& e) { + clear(); + const FinalState & fsfwd = + apply(e, "FSSumETFwdCentrality"); + double estimate = 0.0; + for ( const Particle & p : fsfwd.particles() ) { + estimate += p.Et(); + } + set(estimate); + } + + /// Compare projections + int compare(const Projection& p) const { + return mkNamedPCmp(p, "FSSumETFwdCentrality"); + } + +}; + +/// Example of a trigger projection for minimum bias pPb requiring at +/// least one charged particle in both forward and backward direction. +class MC_pPbMinBiasTrigger: public TriggerProjection { + +public: + + /// Constructor. + MC_pPbMinBiasTrigger() { + declare(FinalState(Cuts::eta < -3.2 && Cuts::eta > -4.9 && Cuts::pT > 0.1*GeV), + "FSSumETFwdCentrality"); + declare(ChargedFinalState(Cuts::eta > 2.09 && Cuts::eta < 3.84 && + Cuts::pT > 0.1*GeV), "MBB"); + declare(ChargedFinalState(Cuts::eta < -2.09 && Cuts::eta > -3.84 && + Cuts::pT > 0.1*GeV), "MBF"); + } + + /// Clone on the heap. + DEFAULT_RIVET_PROJ_CLONE(MC_pPbMinBiasTrigger); + +protected: + + /// Perform the projection on the Event + void project(const Event& event) { + pass(); + if ( applyProjection(event,"MBF").particles().empty() || + applyProjection(event,"MBB").particles().empty() ) + fail(); + } + + /// Compare projections + int compare(const Projection& p) const { + return mkNamedPCmp(p, "MBF") || mkNamedPCmp(p, "MBB"); + } + +}; + + +} + +#endif diff --git a/include/Rivet/Analysis.hh b/include/Rivet/Analysis.hh --- a/include/Rivet/Analysis.hh +++ b/include/Rivet/Analysis.hh @@ -1,1150 +1,1226 @@ // -*- C++ -*- #ifndef RIVET_Analysis_HH #define RIVET_Analysis_HH #include "Rivet/Config/RivetCommon.hh" #include "Rivet/AnalysisInfo.hh" #include "Rivet/Event.hh" #include "Rivet/Projection.hh" #include "Rivet/ProjectionApplier.hh" #include "Rivet/ProjectionHandler.hh" #include "Rivet/AnalysisLoader.hh" #include "Rivet/Tools/Cuts.hh" #include "Rivet/Tools/Logging.hh" #include "Rivet/Tools/ParticleUtils.hh" #include "Rivet/Tools/BinnedHistogram.hh" #include "Rivet/Tools/RivetMT2.hh" #include "Rivet/Tools/RivetYODA.hh" +#include "Rivet/Tools/Percentile.hh" #include "Rivet/Projections/CentralityProjection.hh" /// @def vetoEvent /// Preprocessor define for vetoing events, including the log message and return. #define vetoEvent \ do { MSG_DEBUG("Vetoing event on line " << __LINE__ << " of " << __FILE__); return; } while(0) namespace Rivet { // Forward declaration class AnalysisHandler; /// @brief This is the base class of all analysis classes in Rivet. /// /// There are /// three virtual functions which should be implemented in base classes: /// /// void init() is called by Rivet before a run is started. Here the /// analysis class should book necessary histograms. The needed /// projections should probably rather be constructed in the /// constructor. /// /// void analyze(const Event&) is called once for each event. Here the /// analysis class should apply the necessary Projections and fill the /// histograms. /// /// void finalize() is called after a run is finished. Here the analysis /// class should do whatever manipulations are necessary on the /// histograms. Writing the histograms to a file is, however, done by /// the Rivet class. class Analysis : public ProjectionApplier { /// The AnalysisHandler is a friend. friend class AnalysisHandler; public: /// @name Standard constructors and destructors. //@{ // /// The default constructor. // Analysis(); /// Constructor Analysis(const std::string& name); /// The destructor. virtual ~Analysis() {} //@} public: /// @name Main analysis methods //@{ /// Initialize this analysis object. A concrete class should here /// book all necessary histograms. An overridden function must make /// sure it first calls the base class function. virtual void init() { } /// Analyze one event. A concrete class should here apply the /// necessary projections on the \a event and fill the relevant /// histograms. An overridden function must make sure it first calls /// the base class function. virtual void analyze(const Event& event) = 0; /// Finalize this analysis object. A concrete class should here make /// all necessary operations on the histograms. Writing the /// histograms to a file is, however, done by the Rivet class. An /// overridden function must make sure it first calls the base class /// function. virtual void finalize() { } //@} public: /// @name Metadata /// Metadata is used for querying from the command line and also for /// building web pages and the analysis pages in the Rivet manual. //@{ /// Get the actual AnalysisInfo object in which all this metadata is stored. const AnalysisInfo& info() const { assert(_info && "No AnalysisInfo object :O"); return *_info; } /// @brief Get the name of the analysis. /// /// By default this is computed by combining the results of the /// experiment, year and Spires ID metadata methods and you should /// only override it if there's a good reason why those won't /// work. If options has been set for this instance, a /// corresponding string is appended at the end. virtual std::string name() const { return ( (info().name().empty()) ? _defaultname : info().name() ) + _optstring; } // get name of reference data file, which could be different from plugin name virtual std::string getRefDataName() const { return (info().getRefDataName().empty()) ? _defaultname : info().getRefDataName(); } // set name of reference data file, which could be different from plugin name virtual void setRefDataName(const std::string& ref_data="") { info().setRefDataName(!ref_data.empty() ? ref_data : name()); } /// Get the Inspire ID code for this analysis. virtual std::string inspireId() const { return info().inspireId(); } /// Get the SPIRES ID code for this analysis (~deprecated). virtual std::string spiresId() const { return info().spiresId(); } /// @brief Names & emails of paper/analysis authors. /// /// Names and email of authors in 'NAME \' format. The first /// name in the list should be the primary contact person. virtual std::vector authors() const { return info().authors(); } /// @brief Get a short description of the analysis. /// /// Short (one sentence) description used as an index entry. /// Use @a description() to provide full descriptive paragraphs /// of analysis details. virtual std::string summary() const { return info().summary(); } /// @brief Get a full description of the analysis. /// /// Full textual description of this analysis, what it is useful for, /// what experimental techniques are applied, etc. Should be treated /// as a chunk of restructuredText (http://docutils.sourceforge.net/rst.html), /// with equations to be rendered as LaTeX with amsmath operators. virtual std::string description() const { return info().description(); } /// @brief Information about the events needed as input for this analysis. /// /// Event types, energies, kinematic cuts, particles to be considered /// stable, etc. etc. Should be treated as a restructuredText bullet list /// (http://docutils.sourceforge.net/rst.html) virtual std::string runInfo() const { return info().runInfo(); } /// Experiment which performed and published this analysis. virtual std::string experiment() const { return info().experiment(); } /// Collider on which the experiment ran. virtual std::string collider() const { return info().collider(); } /// When the original experimental analysis was published. virtual std::string year() const { return info().year(); } /// The luminosity in inverse femtobarn virtual std::string luminosityfb() const { return info().luminosityfb(); } /// Journal, and preprint references. virtual std::vector references() const { return info().references(); } /// BibTeX citation key for this article. virtual std::string bibKey() const { return info().bibKey(); } /// BibTeX citation entry for this article. virtual std::string bibTeX() const { return info().bibTeX(); } /// Whether this analysis is trusted (in any way!) virtual std::string status() const { return (info().status().empty()) ? "UNVALIDATED" : info().status(); } /// Any work to be done on this analysis. virtual std::vector todos() const { return info().todos(); } /// Return the allowed pairs of incoming beams required by this analysis. virtual const std::vector& requiredBeams() const { return info().beams(); } /// Declare the allowed pairs of incoming beams required by this analysis. virtual Analysis& setRequiredBeams(const std::vector& requiredBeams) { info().setBeams(requiredBeams); return *this; } /// Sets of valid beam energy pairs, in GeV virtual const std::vector >& requiredEnergies() const { return info().energies(); } /// Get vector of analysis keywords virtual const std::vector & keywords() const { return info().keywords(); } /// Declare the list of valid beam energy pairs, in GeV virtual Analysis& setRequiredEnergies(const std::vector >& requiredEnergies) { info().setEnergies(requiredEnergies); return *this; } /// Return true if this analysis needs to know the process cross-section. /// @todo Remove this and require HepMC >= 2.06 bool needsCrossSection() const { return info().needsCrossSection(); } /// Declare whether this analysis needs to know the process cross-section from the generator. /// @todo Remove this and require HepMC >= 2.06 Analysis& setNeedsCrossSection(bool needed=true) { info().setNeedsCrossSection(needed); return *this; } //@} /// @name Internal metadata modifying methods //@{ /// Get the actual AnalysisInfo object in which all this metadata is stored (non-const). AnalysisInfo& info() { assert(_info && "No AnalysisInfo object :O"); return *_info; } //@} /// @name Run conditions //@{ /// Incoming beams for this run const ParticlePair& beams() const; /// Incoming beam IDs for this run const PdgIdPair beamIds() const; /// Centre of mass energy for this run double sqrtS() const; //@} /// @name Analysis / beam compatibility testing //@{ /// Check if analysis is compatible with the provided beam particle IDs and energies bool isCompatible(const ParticlePair& beams) const; /// Check if analysis is compatible with the provided beam particle IDs and energies bool isCompatible(PdgId beam1, PdgId beam2, double e1, double e2) const; /// Check if analysis is compatible with the provided beam particle IDs and energies bool isCompatible(const PdgIdPair& beams, const std::pair& energies) const; //@} /// Set the cross section from the generator Analysis& setCrossSection(double xs); //, double xserr=0.0); /// Access the controlling AnalysisHandler object. AnalysisHandler& handler() const { return *_analysishandler; } protected: /// Get a Log object based on the name() property of the calling analysis object. Log& getLog() const; /// Get the process cross-section in pb. Throws if this hasn't been set. double crossSection() const; /// Get the process cross-section per generated event in pb. Throws if this /// hasn't been set. double crossSectionPerEvent() const; /// @brief Get the number of events seen (via the analysis handler). /// /// @note Use in the finalize phase only. size_t numEvents() const; /// @brief Get the sum of event weights seen (via the analysis handler). /// /// @note Use in the finalize phase only. double sumW() const; /// Alias double sumOfWeights() const { return sumW(); } /// @brief Get the sum of squared event weights seen (via the analysis handler). /// /// @note Use in the finalize phase only. double sumW2() const; protected: /// @name Histogram paths //@{ /// Get the canonical histogram "directory" path for this analysis. const std::string histoDir() const; /// Get the canonical histogram path for the named histogram in this analysis. const std::string histoPath(const std::string& hname) const; /// Get the canonical histogram path for the numbered histogram in this analysis. const std::string histoPath(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const; /// Get the internal histogram name for given d, x and y (cf. HepData) const std::string mkAxisCode(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const; /// Alias /// @deprecated Prefer the "mk" form, consistent with other "making function" names const std::string makeAxisCode(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const { return mkAxisCode(datasetId, xAxisId, yAxisId); } //@} /// @name Histogram reference data //@{ /// Get reference data for a named histo /// @todo SFINAE to ensure that the type inherits from YODA::AnalysisObject? template const T& refData(const string& hname) const { _cacheRefData(); MSG_TRACE("Using histo bin edges for " << name() << ":" << hname); if (!_refdata[hname]) { MSG_ERROR("Can't find reference histogram " << hname); throw Exception("Reference data " + hname + " not found."); } return dynamic_cast(*_refdata[hname]); } /// Get reference data for a numbered histo /// @todo SFINAE to ensure that the type inherits from YODA::AnalysisObject? template const T& refData(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const { const string hname = makeAxisCode(datasetId, xAxisId, yAxisId); return refData(hname); } //@} /// @name Counter booking //@{ /// Book a counter. CounterPtr bookCounter(const std::string& name, const std::string& title=""); // const std::string& valtitle="" /// Book a counter, using a path generated from the dataset and axis ID codes /// /// The paper, dataset and x/y-axis IDs will be used to build the histo name in the HepData standard way. CounterPtr bookCounter(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const std::string& title=""); // const std::string& valtitle="" //@} /// @name 1D histogram booking //@{ /// Book a 1D histogram with @a nbins uniformly distributed across the range @a lower - @a upper . Histo1DPtr bookHisto1D(const std::string& name, size_t nbins, double lower, double upper, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D histogram with non-uniform bins defined by the vector of bin edges @a binedges . Histo1DPtr bookHisto1D(const std::string& name, const std::vector& binedges, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D histogram with non-uniform bins defined by the vector of bin edges @a binedges . Histo1DPtr bookHisto1D(const std::string& name, const std::initializer_list& binedges, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D histogram with binning from a reference scatter. Histo1DPtr bookHisto1D(const std::string& name, const Scatter2D& refscatter, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D histogram, using the binnings in the reference data histogram. Histo1DPtr bookHisto1D(const std::string& name, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D histogram, using the binnings in the reference data histogram. /// /// The paper, dataset and x/y-axis IDs will be used to build the histo name in the HepData standard way. Histo1DPtr bookHisto1D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); //@} /// @name 2D histogram booking //@{ /// Book a 2D histogram with @a nxbins and @a nybins uniformly /// distributed across the ranges @a xlower - @a xupper and @a /// ylower - @a yupper respectively along the x- and y-axis. Histo2DPtr bookHisto2D(const std::string& name, size_t nxbins, double xlower, double xupper, size_t nybins, double ylower, double yupper, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D histogram with non-uniform bins defined by the /// vectors of bin edges @a xbinedges and @a ybinedges. Histo2DPtr bookHisto2D(const std::string& name, const std::vector& xbinedges, const std::vector& ybinedges, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D histogram with non-uniform bins defined by the /// vectors of bin edges @a xbinedges and @a ybinedges. Histo2DPtr bookHisto2D(const std::string& name, const std::initializer_list& xbinedges, const std::initializer_list& ybinedges, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D histogram with binning from a reference scatter. Histo2DPtr bookHisto2D(const std::string& name, const Scatter3D& refscatter, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D histogram, using the binnings in the reference data histogram. Histo2DPtr bookHisto2D(const std::string& name, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D histogram, using the binnings in the reference data histogram. /// /// The paper, dataset and x/y-axis IDs will be used to build the histo name in the HepData standard way. Histo2DPtr bookHisto2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); //@} /// @name 1D profile histogram booking //@{ /// Book a 1D profile histogram with @a nbins uniformly distributed across the range @a lower - @a upper . Profile1DPtr bookProfile1D(const std::string& name, size_t nbins, double lower, double upper, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D profile histogram with non-uniform bins defined by the vector of bin edges @a binedges . Profile1DPtr bookProfile1D(const std::string& name, const std::vector& binedges, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D profile histogram with non-uniform bins defined by the vector of bin edges @a binedges . Profile1DPtr bookProfile1D(const std::string& name, const std::initializer_list& binedges, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D profile histogram with binning from a reference scatter. Profile1DPtr bookProfile1D(const std::string& name, const Scatter2D& refscatter, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D profile histogram, using the binnings in the reference data histogram. Profile1DPtr bookProfile1D(const std::string& name, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// Book a 1D profile histogram, using the binnings in the reference data histogram. /// /// The paper, dataset and x/y-axis IDs will be used to build the histo name in the HepData standard way. Profile1DPtr bookProfile1D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); //@} /// @name 2D profile histogram booking //@{ /// Book a 2D profile histogram with @a nxbins and @a nybins uniformly /// distributed across the ranges @a xlower - @a xupper and @a ylower - @a /// yupper respectively along the x- and y-axis. Profile2DPtr bookProfile2D(const std::string& name, size_t nxbins, double xlower, double xupper, size_t nybins, double ylower, double yupper, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D profile histogram with non-uniform bins defined by the vectorx /// of bin edges @a xbinedges and @a ybinedges. Profile2DPtr bookProfile2D(const std::string& name, const std::vector& xbinedges, const std::vector& ybinedges, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D profile histogram with non-uniform bins defined by the vectorx /// of bin edges @a xbinedges and @a ybinedges. Profile2DPtr bookProfile2D(const std::string& name, const std::initializer_list& xbinedges, const std::initializer_list& ybinedges, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D profile histogram with binning from a reference scatter. Profile2DPtr bookProfile2D(const std::string& name, const Scatter3D& refscatter, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D profile histogram, using the binnings in the reference data histogram. Profile2DPtr bookProfile2D(const std::string& name, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); /// Book a 2D profile histogram, using the binnings in the reference data histogram. /// /// The paper, dataset and x/y-axis IDs will be used to build the histo name in the HepData standard way. Profile2DPtr bookProfile2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const std::string& title="", const std::string& xtitle="", const std::string& ytitle="", const std::string& ztitle=""); //@} /// @name 2D scatter booking //@{ /// @brief Book a 2-dimensional data point set with the given name. /// /// @note Unlike histogram booking, scatter booking by default makes no /// attempt to use reference data to pre-fill the data object. If you want /// this, which is sometimes useful e.g. when the x-position is not really /// meaningful and can't be extracted from the data, then set the @a /// copy_pts parameter to true. This creates points to match the reference /// data's x values and errors, but with the y values and errors zeroed... /// assuming that there is a reference histo with the same name: if there /// isn't, an exception will be thrown. Scatter2DPtr bookScatter2D(const std::string& name, bool copy_pts=false, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// @brief Book a 2-dimensional data point set, using the binnings in the reference data histogram. /// /// The paper, dataset and x/y-axis IDs will be used to build the histo name in the HepData standard way. /// /// @note Unlike histogram booking, scatter booking by default makes no /// attempt to use reference data to pre-fill the data object. If you want /// this, which is sometimes useful e.g. when the x-position is not really /// meaningful and can't be extracted from the data, then set the @a /// copy_pts parameter to true. This creates points to match the reference /// data's x values and errors, but with the y values and errors zeroed. Scatter2DPtr bookScatter2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, bool copy_pts=false, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// @brief Book a 2-dimensional data point set with equally spaced x-points in a range. /// /// The y values and errors will be set to 0. Scatter2DPtr bookScatter2D(const std::string& name, size_t npts, double lower, double upper, const std::string& title="", const std::string& xtitle="", const std::string& ytitle=""); /// @brief Book a 2-dimensional data point set based on provided contiguous "bin edges". /// /// The y values and errors will be set to 0. Scatter2DPtr bookScatter2D(const std::string& hname, const std::vector& binedges, const std::string& title, const std::string& xtitle, const std::string& ytitle); //@} public: /// @name accessing options for this Analysis instance. //@{ /// Get an option for this analysis instance as a string. std::string getOption(std::string optname) { if ( _options.find(optname) != _options.end() ) return _options.find(optname)->second; return ""; } /// Get an option for this analysis instance converted to a /// specific type (given by the specified @a def value). template T getOption(std::string optname, T def) { if (_options.find(optname) == _options.end()) return def; std::stringstream ss; ss << _options.find(optname)->second; T ret; ss >> ret; return ret; } //@} /// @brief Book a CentralityProjection /// /// Using a SingleValueProjection, @a proj, giving the value of an /// experimental observable to be used as a centrality estimator, /// book a CentralityProjection based on the experimentally /// measured pecentiles of this observable (as given by the /// reference data for the @a calHistName histogram in the @a /// calAnaName analysis. If a preloaded file with the output of a /// run using the @a calAnaName analysis contains a valid /// generated @a calHistName histogram, it will be used as an /// optional percentile binning. Also if this preloaded file /// contains a histogram with the name @a calHistName with an /// appended "_IMP" This histogram will be used to add an optional /// centrality percentile based on the generated impact /// parameter. If @increasing is true, a low (high) value of @proj /// is assumed to correspond to a more peripheral (central) event. const CentralityProjection& declareCentrality(const SingleValueProjection &proj, string calAnaName, string calHistName, const string projName, bool increasing = false); + /// @brief Book a Pecentile wrapper around AnalysisObjects. + /// + /// Based on a previously registered CentralityProjection named @a + /// projName book one AnalysisObject for each @a centralityBin and + /// name them according to the corresponding code in the @a ref + /// vector. + template + Percentile bookPercentile(string projName, + vector > centralityBins, + vector > ref) { + typedef typename ReferenceTraits::RefT RefT; + Percentile pctl(this, projName); + + const int nCent = centralityBins.size(); + for (int iCent = 0; iCent < nCent; ++iCent) { + const string axisCode = makeAxisCode(std::get<0>(ref[iCent]), + std::get<1>(ref[iCent]), + std::get<2>(ref[iCent])); + shared_ptr ao; + CounterPtr cnt; + try { + ao = getAnalysisObject(axisCode); + MSG_TRACE("Found old " << histoPath(axisCode)); + } + catch (Exception) { + const RefT & refscatter = refData(axisCode); + ao = make_shared(refscatter, histoPath(axisCode)); + addAnalysisObject(ao); + MSG_TRACE("Created new " << histoPath(axisCode)); + } + try { + cnt = getAnalysisObject("TMP/COUNTER/" + axisCode); + MSG_TRACE("Found old " << histoPath("TMP/COUNTER/" + axisCode)); + } + catch (Exception) { + cnt = make_shared(histoPath("TMP/COUNTER/" + axisCode)); + addAnalysisObject(cnt); + MSG_TRACE("Created new " << histoPath("TMP/COUNTER/" + axisCode)); + } + pctl.add(ao, cnt, centralityBins[iCent]); + } + return pctl; + } + + /// @brief Book Pecentile wrappers around AnalysisObjects. + /// + /// Based on a previously registered CentralityProjection named @a + /// projName book one (or several) AnalysisObject(s) named + /// according to @a ref where the x-axis will be filled according + /// to the percentile output(s) of the @projName. + template + PercentileXaxis bookPercentileXaxis(string projName, + tuple ref) { + typedef typename ReferenceTraits::RefT RefT; + PercentileXaxis pctl(this, projName); + + const string axisCode = makeAxisCode(std::get<0>(ref), + std::get<1>(ref), + std::get<2>(ref)); + shared_ptr ao; + CounterPtr cnt; + try { + ao = getAnalysisObject(histoPath(axisCode)); + } + catch (Exception) { + const RefT & refscatter = refData(axisCode); + ao = make_shared(refscatter, axisCode); + addAnalysisObject(ao); + } + pctl.add(proj, ao, make_shared()); + + return pctl; + } + + /// @name Analysis object manipulation /// @todo Should really be protected: only public to keep BinnedHistogram happy for now... //@{ /// Multiplicatively scale the given counter, @a cnt, by factor @s factor. void scale(CounterPtr cnt, double factor); /// Multiplicatively scale the given counters, @a cnts, by factor @s factor. /// @note Constness intentional, if weird, to allow passing rvalue refs of smart ptrs (argh) /// @todo Use SFINAE for a generic iterable of CounterPtrs void scale(const std::vector& cnts, double factor) { for (auto& c : cnts) scale(c, factor); } /// @todo YUCK! template void scale(const CounterPtr (&cnts)[array_size], double factor) { // for (size_t i = 0; i < std::extent::value; ++i) scale(cnts[i], factor); for (auto& c : cnts) scale(c, factor); } /// Normalize the given histogram, @a histo, to area = @a norm. void normalize(Histo1DPtr histo, double norm=1.0, bool includeoverflows=true); /// Normalize the given histograms, @a histos, to area = @a norm. /// @note Constness intentional, if weird, to allow passing rvalue refs of smart ptrs (argh) /// @todo Use SFINAE for a generic iterable of Histo1DPtrs void normalize(const std::vector& histos, double norm=1.0, bool includeoverflows=true) { for (auto& h : histos) normalize(h, norm, includeoverflows); } /// @todo YUCK! template void normalize(const Histo1DPtr (&histos)[array_size], double norm=1.0, bool includeoverflows=true) { for (auto& h : histos) normalize(h, norm, includeoverflows); } /// Multiplicatively scale the given histogram, @a histo, by factor @s factor. void scale(Histo1DPtr histo, double factor); /// Multiplicatively scale the given histograms, @a histos, by factor @s factor. /// @note Constness intentional, if weird, to allow passing rvalue refs of smart ptrs (argh) /// @todo Use SFINAE for a generic iterable of Histo1DPtrs void scale(const std::vector& histos, double factor) { for (auto& h : histos) scale(h, factor); } /// @todo YUCK! template void scale(const Histo1DPtr (&histos)[array_size], double factor) { for (auto& h : histos) scale(h, factor); } /// Normalize the given histogram, @a histo, to area = @a norm. void normalize(Histo2DPtr histo, double norm=1.0, bool includeoverflows=true); /// Normalize the given histograms, @a histos, to area = @a norm. /// @note Constness intentional, if weird, to allow passing rvalue refs of smart ptrs (argh) /// @todo Use SFINAE for a generic iterable of Histo2DPtrs void normalize(const std::vector& histos, double norm=1.0, bool includeoverflows=true) { for (auto& h : histos) normalize(h, norm, includeoverflows); } /// @todo YUCK! template void normalize(const Histo2DPtr (&histos)[array_size], double norm=1.0, bool includeoverflows=true) { for (auto& h : histos) normalize(h, norm, includeoverflows); } /// Multiplicatively scale the given histogram, @a histo, by factor @s factor. void scale(Histo2DPtr histo, double factor); /// Multiplicatively scale the given histograms, @a histos, by factor @s factor. /// @note Constness intentional, if weird, to allow passing rvalue refs of smart ptrs (argh) /// @todo Use SFINAE for a generic iterable of Histo2DPtrs void scale(const std::vector& histos, double factor) { for (auto& h : histos) scale(h, factor); } /// @todo YUCK! template void scale(const Histo2DPtr (&histos)[array_size], double factor) { for (auto& h : histos) scale(h, factor); } /// Helper for counter division. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(CounterPtr c1, CounterPtr c2, Scatter1DPtr s) const; /// Helper for histogram division with raw YODA objects. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(const YODA::Counter& c1, const YODA::Counter& c2, Scatter1DPtr s) const; /// Helper for histogram division. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(Histo1DPtr h1, Histo1DPtr h2, Scatter2DPtr s) const; /// Helper for histogram division with raw YODA objects. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(const YODA::Histo1D& h1, const YODA::Histo1D& h2, Scatter2DPtr s) const; /// Helper for profile histogram division. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(Profile1DPtr p1, Profile1DPtr p2, Scatter2DPtr s) const; /// Helper for profile histogram division with raw YODA objects. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(const YODA::Profile1D& p1, const YODA::Profile1D& p2, Scatter2DPtr s) const; /// Helper for 2D histogram division. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(Histo2DPtr h1, Histo2DPtr h2, Scatter3DPtr s) const; /// Helper for 2D histogram division with raw YODA objects. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(const YODA::Histo2D& h1, const YODA::Histo2D& h2, Scatter3DPtr s) const; /// Helper for 2D profile histogram division. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(Profile2DPtr p1, Profile2DPtr p2, Scatter3DPtr s) const; /// Helper for 2D profile histogram division with raw YODA objects /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void divide(const YODA::Profile2D& p1, const YODA::Profile2D& p2, Scatter3DPtr s) const; /// Helper for histogram efficiency calculation. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void efficiency(Histo1DPtr h1, Histo1DPtr h2, Scatter2DPtr s) const; /// Helper for histogram efficiency calculation. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void efficiency(const YODA::Histo1D& h1, const YODA::Histo1D& h2, Scatter2DPtr s) const; /// Helper for histogram asymmetry calculation. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void asymm(Histo1DPtr h1, Histo1DPtr h2, Scatter2DPtr s) const; /// Helper for histogram asymmetry calculation. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void asymm(const YODA::Histo1D& h1, const YODA::Histo1D& h2, Scatter2DPtr s) const; /// Helper for converting a differential histo to an integral one. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void integrate(Histo1DPtr h, Scatter2DPtr s) const; /// Helper for converting a differential histo to an integral one. /// /// @note Assigns to the (already registered) output scatter, @a s. Preserves the path information of the target. void integrate(const Histo1D& h, Scatter2DPtr s) const; //@} public: /// List of registered analysis data objects const vector& analysisObjects() const { return _analysisobjects; } protected: /// @name Data object registration, retrieval, and removal //@{ /// Register a data object in the histogram system void addAnalysisObject(AnalysisObjectPtr ao); /// Get a data object from the histogram system template const std::shared_ptr getAnalysisObject(const std::string& name) const { foreach (const AnalysisObjectPtr& ao, analysisObjects()) { if (ao->path() == histoPath(name)) return dynamic_pointer_cast(ao); } throw Exception("Data object " + histoPath(name) + " not found"); } /// Get a data object from the histogram system (non-const) template std::shared_ptr getAnalysisObject(const std::string& name) { foreach (const AnalysisObjectPtr& ao, analysisObjects()) { if (ao->path() == histoPath(name)) return dynamic_pointer_cast(ao); } throw Exception("Data object " + histoPath(name) + " not found"); } /// Unregister a data object from the histogram system (by name) void removeAnalysisObject(const std::string& path); /// Unregister a data object from the histogram system (by pointer) void removeAnalysisObject(AnalysisObjectPtr ao); /// Get all data object from the AnalysisHandler. vector getAllData(bool includeorphans) const; /// Get a data object from another analysis (e.g. preloaded /// calibration histogram). /// Get a data object from the histogram system (non-const) template std::shared_ptr getAnalysisObject(const std::string & ananame, const std::string& name) { std::string path = "/" + ananame + "/" + name; for ( AnalysisObjectPtr ao : getAllData(true) ) { if ( ao->path() == path ) return dynamic_pointer_cast(ao); } return std::shared_ptr(); } /// Get a named Histo1D object from the histogram system const Histo1DPtr getHisto1D(const std::string& name) const { return getAnalysisObject(name); } /// Get a named Histo1D object from the histogram system (non-const) Histo1DPtr getHisto1D(const std::string& name) { return getAnalysisObject(name); } /// Get a Histo1D object from the histogram system by axis ID codes (non-const) const Histo1DPtr getHisto1D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } /// Get a Histo1D object from the histogram system by axis ID codes (non-const) Histo1DPtr getHisto1D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } /// Get a named Histo2D object from the histogram system const Histo2DPtr getHisto2D(const std::string& name) const { return getAnalysisObject(name); } /// Get a named Histo2D object from the histogram system (non-const) Histo2DPtr getHisto2D(const std::string& name) { return getAnalysisObject(name); } /// Get a Histo2D object from the histogram system by axis ID codes (non-const) const Histo2DPtr getHisto2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } /// Get a Histo2D object from the histogram system by axis ID codes (non-const) Histo2DPtr getHisto2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } /// Get a named Profile1D object from the histogram system const Profile1DPtr getProfile1D(const std::string& name) const { return getAnalysisObject(name); } /// Get a named Profile1D object from the histogram system (non-const) Profile1DPtr getProfile1D(const std::string& name) { return getAnalysisObject(name); } /// Get a Profile1D object from the histogram system by axis ID codes (non-const) const Profile1DPtr getProfile1D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } /// Get a Profile1D object from the histogram system by axis ID codes (non-const) Profile1DPtr getProfile1D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } /// Get a named Profile2D object from the histogram system const Profile2DPtr getProfile2D(const std::string& name) const { return getAnalysisObject(name); } /// Get a named Profile2D object from the histogram system (non-const) Profile2DPtr getProfile2D(const std::string& name) { return getAnalysisObject(name); } /// Get a Profile2D object from the histogram system by axis ID codes (non-const) const Profile2DPtr getProfile2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } /// Get a Profile2D object from the histogram system by axis ID codes (non-const) Profile2DPtr getProfile2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } /// Get a named Scatter2D object from the histogram system const Scatter2DPtr getScatter2D(const std::string& name) const { return getAnalysisObject(name); } /// Get a named Scatter2D object from the histogram system (non-const) Scatter2DPtr getScatter2D(const std::string& name) { return getAnalysisObject(name); } /// Get a Scatter2D object from the histogram system by axis ID codes (non-const) const Scatter2DPtr getScatter2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } /// Get a Scatter2D object from the histogram system by axis ID codes (non-const) Scatter2DPtr getScatter2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) { return getAnalysisObject(makeAxisCode(datasetId, xAxisId, yAxisId)); } //@} private: /// Name passed to constructor (used to find .info analysis data file, and as a fallback) string _defaultname; /// Pointer to analysis metadata object unique_ptr _info; /// Storage of all plot objects /// @todo Make this a map for fast lookup by path? vector _analysisobjects; /// @name Cross-section variables //@{ double _crossSection; bool _gotCrossSection; //@} /// The controlling AnalysisHandler object. AnalysisHandler* _analysishandler; /// Collection of cached refdata to speed up many autobookings: the /// reference data file should only be read once. mutable std::map _refdata; /// Options the (this instance of) the analysis map _options; /// The string of options. string _optstring; private: /// @name Utility functions //@{ /// Get the reference data for this paper and cache it. void _cacheRefData() const; //@} /// The assignment operator is private and must never be called. /// In fact, it should not even be implemented. Analysis& operator=(const Analysis&); }; } // Include definition of analysis plugin system so that analyses automatically see it when including Analysis.hh #include "Rivet/AnalysisBuilder.hh" /// @def DECLARE_RIVET_PLUGIN /// Preprocessor define to prettify the global-object plugin hook mechanism. #define DECLARE_RIVET_PLUGIN(clsname) Rivet::AnalysisBuilder plugin_ ## clsname /// @def DECLARE_ALIASED_RIVET_PLUGIN /// Preprocessor define to prettify the global-object plugin hook mechanism, with an extra alias name for this analysis. // #define DECLARE_ALIASED_RIVET_PLUGIN(clsname, alias) Rivet::AnalysisBuilder plugin_ ## clsname ## ( ## #alias ## ) #define DECLARE_ALIASED_RIVET_PLUGIN(clsname, alias) DECLARE_RIVET_PLUGIN(clsname)( #alias ) /// @def DEFAULT_RIVET_ANALYSIS_CONSTRUCTOR /// Preprocessor define to prettify the manky constructor with name string argument #define DEFAULT_RIVET_ANALYSIS_CONSTRUCTOR(clsname) clsname() : Analysis(# clsname) {} /// @def DEFAULT_RIVET_ANALYSIS_CTOR /// Slight abbreviation for DEFAULT_RIVET_ANALYSIS_CONSTRUCTOR #define DEFAULT_RIVET_ANALYSIS_CTOR(clsname) DEFAULT_RIVET_ANALYSIS_CONSTRUCTOR(clsname) #endif diff --git a/include/Rivet/AnalysisHandler.hh b/include/Rivet/AnalysisHandler.hh --- a/include/Rivet/AnalysisHandler.hh +++ b/include/Rivet/AnalysisHandler.hh @@ -1,272 +1,308 @@ // -*- C++ -*- #ifndef RIVET_RivetHandler_HH #define RIVET_RivetHandler_HH #include "Rivet/Config/RivetCommon.hh" #include "Rivet/Particle.hh" #include "Rivet/AnalysisLoader.hh" #include "Rivet/Tools/RivetYODA.hh" namespace Rivet { // Forward declaration and smart pointer for Analysis class Analysis; typedef std::shared_ptr AnaHandle; // Needed to make smart pointers compare equivalent in the STL set struct CmpAnaHandle { bool operator() (const AnaHandle& a, const AnaHandle& b) const { return a.get() < b.get(); } }; /// A class which handles a number of analysis objects to be applied to /// generated events. An {@link Analysis}' AnalysisHandler is also responsible /// for handling the final writing-out of histograms. class AnalysisHandler { public: /// @name Constructors and destructors. */ //@{ /// Preferred constructor, with optional run name. AnalysisHandler(const string& runname=""); /// @brief Destructor /// The destructor is not virtual, as this class should not be inherited from. ~AnalysisHandler(); //@} private: /// Get a logger object. Log& getLog() const; public: /// @name Run properties //@{ /// Get the name of this run. string runName() const { return _runname; } /// Get the number of events seen. Should only really be used by external /// steering code or analyses in the finalize phase. size_t numEvents() const { return _eventcounter.numEntries(); } /// @brief Access the sum of the event weights seen /// /// This is the weighted equivalent of the number of events. It should only /// be used by external steering code or analyses in the finalize phase. double sumW() const { return _eventcounter.sumW(); } /// Access to the sum of squared-weights double sumW2() const { return _eventcounter.sumW2(); } /// @brief Compatibility alias for sumOfWeights /// /// @deprecated Prefer sumW double sumOfWeights() const { return sumW(); } /// @brief Set the sum of weights /// /// This is useful if Rivet is steered externally and /// the analyses are run for a sub-contribution of the events /// (but of course have to be normalised to the total sum of weights) /// /// @todo What about the sumW2 term? That needs to be set coherently. Need a /// new version, with all three N,sumW,sumW2 numbers (or a counter) /// supplied. /// /// @deprecated Weight sums are no longer tracked this way... void setSumOfWeights(const double& sum) { //_sumOfWeights = sum; throw Error("Can't set sum of weights independently, since it's now tracked by a Counter. " "Please contact the Rivet authors if you need this."); } /// Is cross-section information required by at least one child analysis? /// @deprecated Should no-longer be an issue: does any generator not write the cross-section? bool needCrossSection() const; /// Whether the handler knows about a cross-section. /// @deprecated Should no-longer be an issue: does any generator not write the cross-section? bool hasCrossSection() const; /// Get the cross-section known to the handler. double crossSection() const { return _xs; } /// Set the cross-section for the process being generated. /// @todo What about the xsec uncertainty? Add a second, optional argument? AnalysisHandler& setCrossSection(double xs); /// Set the beam particles for this run AnalysisHandler& setRunBeams(const ParticlePair& beams) { _beams = beams; MSG_DEBUG("Setting run beams = " << beams << " @ " << sqrtS()/GeV << " GeV"); return *this; } /// Get the beam particles for this run, usually determined from the first event. const ParticlePair& beams() const { return _beams; } /// Get beam IDs for this run, usually determined from the first event. /// @deprecated Use standalone beamIds(ah.beams()), to clean AH interface PdgIdPair beamIds() const; /// Get energy for this run, usually determined from the first event. /// @deprecated Use standalone sqrtS(ah.beams()), to clean AH interface double sqrtS() const; /// Setter for _ignoreBeams void setIgnoreBeams(bool ignore=true); //@} /// @name Handle analyses //@{ /// Get a list of the currently registered analyses' names. std::vector analysisNames() const; /// Get the collection of currently registered analyses. const std::set& analyses() const { return _analyses; } /// Get a registered analysis by name. const AnaHandle analysis(const std::string& analysisname) const; /// Add an analysis to the run list by object AnalysisHandler& addAnalysis(Analysis* analysis); /// @brief Add an analysis to the run list using its name. /// /// The actual Analysis to be used will be obtained via /// AnalysisLoader::getAnalysis(string). If no matching analysis is found, /// no analysis is added (i.e. the null pointer is checked and discarded. AnalysisHandler& addAnalysis(const std::string& analysisname); /// @brief Add an analysis with a map of analysis options. AnalysisHandler& addAnalysis(const std::string& analysisname, std::map pars); /// @brief Add analyses to the run list using their names. /// /// The actual {@link Analysis}' to be used will be obtained via /// AnalysisHandler::addAnalysis(string), which in turn uses /// AnalysisLoader::getAnalysis(string). If no matching analysis is found /// for a given name, no analysis is added, but also no error is thrown. AnalysisHandler& addAnalyses(const std::vector& analysisnames); /// Remove an analysis from the run list using its name. AnalysisHandler& removeAnalysis(const std::string& analysisname); /// Remove analyses from the run list using their names. AnalysisHandler& removeAnalyses(const std::vector& analysisnames); //@} /// @name Main init/execute/finalise //@{ /// Initialize a run, with the run beams taken from the example event. void init(const GenEvent& event); /// @brief Analyze the given \a event by reference. /// /// This function will call the AnalysisBase::analyze() function of all /// included analysis objects. void analyze(const GenEvent& event); /// @brief Analyze the given \a event by pointer. /// /// This function will call the AnalysisBase::analyze() function of all /// included analysis objects, after checking the event pointer validity. void analyze(const GenEvent* event); /// Finalize a run. This function calls the AnalysisBase::finalize() /// functions of all included analysis objects. void finalize(); //@} /// @name Histogram / data object access //@{ /// Add a vector of analysis objects to the current state. void addData(const std::vector& aos); /// Read analysis plots into the histo collection (via addData) from the named file. void readData(const std::string& filename); /// Get all analyses' plots as a vector of analysis objects. - std::vector getData(bool includeorphans = false) const; + std::vector getData(bool includeorphans = false, + bool includetmps = false) const; /// Write all analyses' plots (via getData) to the named file. void writeData(const std::string& filename) const; + /// Tell Rivet to dump intermediate result to a file named @a + /// dumpfile every @a period'th event. If @period is not positive, + /// no dumping will be done. + void dump(string dumpfile, int period) { + _dumpPeriod = period; + _dumpFile = dumpfile; + } + + /// Take the vector of yoda files and merge them together using + /// the cross section and weight information provided in each + /// file. Each file in @a aofiles is assumed to have been produced + /// by Rivet. By default the files are assumed to contain + /// different processes (or the same processs but mutually + /// exclusive cuts), but if @a equiv if ture, the files are + /// assumed to contain output of completely equivalent (but + /// statistically independent) Rivet runs. The corresponding + /// analyses will be loaded and their analysis objects will be + /// filled with the merged result. finalize() will be run on each + /// relevant anslysis. The resulting YODA file can then be rwitten + /// out by writeData(). + void mergeYodas(const vector & aofiles, bool equiv = false); + //@} - private: /// The collection of Analysis objects to be used. set _analyses; /// A vector of pre-loaded object which do not have a valid /// Analysis plugged in. vector _orphanedPreloads; + /// A vector containing copies of analysis objects after + /// finalize() has been run. + vector _finalizedAOs; /// @name Run properties //@{ /// Run name std::string _runname; /// Event counter Counter _eventcounter; /// Cross-section known to AH double _xs, _xserr; /// Beams used by this run. ParticlePair _beams; /// Flag to check if init has been called bool _initialised; /// Flag whether input event beams should be ignored in compatibility check bool _ignoreBeams; + /// Determines how often Rivet runs finalize() and writes the + /// result to a YODA file. + int _dumpPeriod; + + /// The name of a YODA file to which Rivet periodically dumps + /// results. + string _dumpFile; + + /// Flag to indicate periodic dumping is in progress + bool _dumping; + //@} private: /// The assignment operator is private and must never be called. /// In fact, it should not even be implemented. AnalysisHandler& operator=(const AnalysisHandler&); /// The copy constructor is private and must never be called. In /// fact, it should not even be implemented. AnalysisHandler(const AnalysisHandler&); }; } #endif diff --git a/include/Rivet/AnalysisInfo.hh b/include/Rivet/AnalysisInfo.hh --- a/include/Rivet/AnalysisInfo.hh +++ b/include/Rivet/AnalysisInfo.hh @@ -1,289 +1,298 @@ // -*- C++ -*- #ifndef RIVET_AnalysisInfo_HH #define RIVET_AnalysisInfo_HH #include "Rivet/Config/RivetCommon.hh" #include namespace Rivet { class AnalysisInfo { public: /// Static factory method: returns null pointer if no metadata found static unique_ptr make(const std::string& name); /// @name Standard constructors and destructors. //@{ /// The default constructor. AnalysisInfo() { clear(); } /// The destructor. ~AnalysisInfo() { } //@} public: /// @name Metadata /// Metadata is used for querying from the command line and also for /// building web pages and the analysis pages in the Rivet manual. //@{ /// Get the name of the analysis. By default this is computed using the /// experiment, year and Inspire/Spires ID metadata methods. std::string name() const { if (!_name.empty()) return _name; if (!experiment().empty() && !year().empty()) { if (!inspireId().empty()) { return experiment() + "_" + year() + "_I" + inspireId(); } else if (!spiresId().empty()) { return experiment() + "_" + year() + "_S" + spiresId(); } } return ""; } /// Set the name of the analysis. void setName(const std::string& name) { _name = name; } /// Get the reference data name of the analysis (if different from plugin name). std::string getRefDataName() const { if (!_refDataName.empty()) return _refDataName; return name(); } /// Set the reference data name of the analysis (if different from plugin name). void setRefDataName(const std::string& name) { _refDataName = name; } /// Get the Inspire (SPIRES replacement) ID code for this analysis. const std::string& inspireId() const { return _inspireId; } /// Set the Inspire (SPIRES replacement) ID code for this analysis. void setInspireId(const std::string& inspireId) { _inspireId = inspireId; } /// Get the SPIRES ID code for this analysis. const std::string& spiresId() const { return _spiresId; } /// Set the SPIRES ID code for this analysis. void setSpiresId(const std::string& spiresId) { _spiresId = spiresId; } /// @brief Names & emails of paper/analysis authors. /// Names and email of authors in 'NAME \' format. The first /// name in the list should be the primary contact person. const std::vector& authors() const { return _authors; } /// Set the author list. void setAuthors(const std::vector& authors) { _authors = authors; } /// @brief Get a short description of the analysis. /// Short (one sentence) description used as an index entry. /// Use @a description() to provide full descriptive paragraphs /// of analysis details. const std::string& summary() const { return _summary; } /// Set the short description for this analysis. void setSummary(const std::string& summary) { _summary = summary; } /// @brief Get a full description of the analysis. /// Full textual description of this analysis, what it is useful for, /// what experimental techniques are applied, etc. Should be treated /// as a chunk of restructuredText (http://docutils.sourceforge.net/rst.html), /// with equations to be rendered as LaTeX with amsmath operators. const std::string& description() const { return _description; } /// Set the full description for this analysis. void setDescription(const std::string& description) { _description = description; } /// @brief Information about the events needed as input for this analysis. /// Event types, energies, kinematic cuts, particles to be considered /// stable, etc. etc. Should be treated as a restructuredText bullet list /// (http://docutils.sourceforge.net/rst.html) const std::string& runInfo() const { return _runInfo; } /// Set the full description for this analysis. void setRunInfo(const std::string& runInfo) { _runInfo = runInfo; } /// Beam particle types const std::vector& beams() const { return _beams; } /// Set beam particle types void setBeams(const std::vector& beams) { _beams = beams; } /// Sets of valid beam energies const std::vector >& energies() const { return _energies; } /// Set the valid beam energies void setEnergies(const std::vector >& energies) { _energies = energies; } /// Experiment which performed and published this analysis. const std::string& experiment() const { return _experiment; } /// Set the experiment which performed and published this analysis. void setExperiment(const std::string& experiment) { _experiment = experiment; } /// Collider on which the experiment ran. const std::string& collider() const { return _collider; } /// Set the collider on which the experiment ran. void setCollider(const std::string& collider) { _collider = collider; } /// @brief When the original experimental analysis was published. /// When the refereed paper on which this is based was published, /// according to SPIRES. const std::string& year() const { return _year; } /// Set the year in which the original experimental analysis was published. void setYear(const std::string& year) { _year = year; } /// The integrated data luminosity of the data set const std::string& luminosityfb() const { return _luminosityfb; } /// Set the integrated data luminosity of the data set void setLuminosityfb(const std::string& luminosityfb) { _luminosityfb = luminosityfb; } /// Journal and preprint references. const std::vector& references() const { return _references; } /// Set the journal and preprint reference list. void setReferences(const std::vector& references) { _references = references; } /// Analysis Keywords for grouping etc const std::vector& keywords() const { return _keywords; } /// BibTeX citation key for this article. const std::string& bibKey() const { return _bibKey;} /// Set the BibTeX citation key for this article. void setBibKey(const std::string& bibKey) { _bibKey = bibKey; } /// BibTeX citation entry for this article. const std::string& bibTeX() const { return _bibTeX; } /// Set the BibTeX citation entry for this article. void setBibTeX(const std::string& bibTeX) { _bibTeX = bibTeX; } /// Whether this analysis is trusted (in any way!) const std::string& status() const { return _status; } /// Set the analysis code status. void setStatus(const std::string& status) { _status = status; } /// Any work to be done on this analysis. const std::vector& todos() const { return _todos; } /// Set the to-do list. void setTodos(const std::vector& todos) { _todos = todos; } /// Get the option list. const std::vector& options() const { return _options; } /// Check if the given option is valid. bool validOption(std::string key, std::string val) const; /// Set the option list. void setOptions(const std::vector& opts) { _options = opts; buildOptionMap(); } /// Build a map of options to facilitate checking. void buildOptionMap(); /// Return true if this analysis needs to know the process cross-section. bool needsCrossSection() const { return _needsCrossSection; } /// Return true if this analysis needs to know the process cross-section. void setNeedsCrossSection(bool needXsec) { _needsCrossSection = needXsec; } + /// Return true if finalize() can be run multiple times for this analysis. + bool reentrant() const { return _reentrant; } + + /// setReentrant + void setReentrant(bool ree = true) { _reentrant = ree; } + //@} private: std::string _name; std::string _refDataName; std::string _spiresId, _inspireId; std::vector _authors; std::string _summary; std::string _description; std::string _runInfo; std::string _experiment; std::string _collider; std::vector > _beams; std::vector > _energies; std::string _year; std::string _luminosityfb; std::vector _references; std::vector _keywords; std::string _bibKey; std::string _bibTeX; //std::string _bibTeXBody; ///< Was thinking of avoiding duplication of BibKey... std::string _status; std::vector _todos; bool _needsCrossSection; std::vector _options; std::map< std::string, std::set > _optionmap; + bool _reentrant; + void clear() { _name = ""; _refDataName = ""; _spiresId = ""; _inspireId = ""; _authors.clear(); _summary = ""; _description = ""; _runInfo = ""; _experiment = ""; _collider = ""; _beams.clear(); _energies.clear(); _year = ""; _luminosityfb = ""; _references.clear(); _keywords.clear(); _bibKey = ""; _bibTeX = ""; //_bibTeXBody = ""; _status = ""; _todos.clear(); _needsCrossSection = false; _options.clear(); _optionmap.clear(); + _reentrant = false; } }; /// String representation std::string toString(const AnalysisInfo& ai); /// Stream an AnalysisInfo as a text description inline std::ostream& operator<<(std::ostream& os, const AnalysisInfo& ai) { os << toString(ai); return os; } } #endif diff --git a/include/Rivet/Makefile.am b/include/Rivet/Makefile.am --- a/include/Rivet/Makefile.am +++ b/include/Rivet/Makefile.am @@ -1,181 +1,185 @@ ## Internal headers - not to be installed nobase_dist_noinst_HEADERS = ## Public headers - to be installed nobase_pkginclude_HEADERS = ## Rivet interface nobase_pkginclude_HEADERS += \ Rivet.hh \ Run.hh \ Event.hh \ ParticleBase.hh \ Particle.fhh Particle.hh \ Jet.fhh Jet.hh \ Projection.fhh Projection.hh \ ProjectionApplier.hh \ ProjectionHandler.hh \ Analysis.hh \ AnalysisHandler.hh \ AnalysisInfo.hh \ AnalysisBuilder.hh \ AnalysisLoader.hh ## Build config stuff nobase_pkginclude_HEADERS += \ Config/RivetCommon.hh \ Config/RivetConfig.hh \ Config/BuildOptions.hh ## Projections nobase_pkginclude_HEADERS += \ Projections/AliceCommon.hh \ Projections/AxesDefinition.hh \ Projections/Beam.hh \ Projections/BeamThrust.hh \ Projections/CentralEtHCM.hh \ Projections/CentralityProjection.hh \ Projections/ChargedFinalState.hh \ Projections/ChargedLeptons.hh \ Projections/ConstLossyFinalState.hh \ Projections/DirectFinalState.hh \ Projections/DISFinalState.hh \ Projections/DISKinematics.hh \ Projections/DISLepton.hh \ Projections/DressedLeptons.hh \ Projections/FastJets.hh \ Projections/FinalPartons.hh \ Projections/FinalState.hh \ Projections/FoxWolframMoments.hh \ Projections/FParameter.hh \ Projections/GeneratedPercentileProjection.hh \ Projections/HadronicFinalState.hh \ Projections/HeavyHadrons.hh \ Projections/Hemispheres.hh \ Projections/IdentifiedFinalState.hh \ Projections/ImpactParameterProjection.hh \ Projections/IndirectFinalState.hh \ Projections/InitialQuarks.hh \ Projections/InvMassFinalState.hh \ Projections/JetAlg.hh \ Projections/JetShape.hh \ Projections/LeadingParticlesFinalState.hh \ Projections/LossyFinalState.hh \ Projections/MergedFinalState.hh \ Projections/MissingMomentum.hh \ + Projections/MixedFinalState.hh \ Projections/NeutralFinalState.hh \ Projections/NonHadronicFinalState.hh \ Projections/NonPromptFinalState.hh \ Projections/ParisiTensor.hh \ Projections/ParticleFinder.hh \ Projections/PartonicTops.hh \ Projections/PercentileProjection.hh \ Projections/PrimaryHadrons.hh \ Projections/PrimaryParticles.hh \ Projections/PromptFinalState.hh \ Projections/SingleValueProjection.hh \ Projections/SmearedParticles.hh \ Projections/SmearedJets.hh \ Projections/SmearedMET.hh \ Projections/Sphericity.hh \ Projections/Spherocity.hh \ Projections/TauFinder.hh \ Projections/Thrust.hh \ Projections/TriggerCDFRun0Run1.hh \ Projections/TriggerCDFRun2.hh \ Projections/TriggerProjection.hh \ Projections/TriggerUA5.hh \ Projections/UnstableFinalState.hh \ Projections/UserCentEstimate.hh \ Projections/VetoedFinalState.hh \ Projections/VisibleFinalState.hh \ Projections/WFinder.hh \ Projections/ZFinder.hh ## Meta-projection convenience headers nobase_pkginclude_HEADERS += \ Projections/FinalStates.hh \ Projections/Smearing.hh ## Analysis base class headers # TODO: Move to Rivet/AnalysisTools header dir? nobase_pkginclude_HEADERS += \ + Analyses/MC_Cent_pPb.hh \ Analyses/MC_ParticleAnalysis.hh \ Analyses/MC_JetAnalysis.hh \ Analyses/MC_JetSplittings.hh ## Tools nobase_pkginclude_HEADERS += \ Tools/AliceCommon.hh \ + Tools/AtlasCommon.hh \ Tools/BeamConstraint.hh \ Tools/BinnedHistogram.hh \ Tools/CentralityBinner.hh \ Tools/Cmp.fhh \ Tools/Cmp.hh \ Tools/Cutflow.hh \ Tools/Cuts.fhh \ Tools/Cuts.hh \ Tools/Exceptions.hh \ Tools/JetUtils.hh \ Tools/Logging.hh \ Tools/Random.hh \ Tools/ParticleBaseUtils.hh \ Tools/ParticleIdUtils.hh \ Tools/ParticleUtils.hh \ Tools/ParticleName.hh \ + Tools/Percentile.hh \ Tools/PrettyPrint.hh \ Tools/RivetPaths.hh \ Tools/RivetSTL.hh \ Tools/RivetFastJet.hh \ Tools/RivetHepMC.hh \ Tools/RivetYODA.hh \ Tools/RivetMT2.hh \ Tools/SmearingFunctions.hh \ Tools/MomentumSmearingFunctions.hh \ Tools/ParticleSmearingFunctions.hh \ Tools/JetSmearingFunctions.hh \ Tools/TypeTraits.hh \ Tools/Utils.hh \ Tools/Nsubjettiness/AxesDefinition.hh \ Tools/Nsubjettiness/ExtraRecombiners.hh \ Tools/Nsubjettiness/MeasureDefinition.hh \ Tools/Nsubjettiness/Njettiness.hh \ Tools/Nsubjettiness/NjettinessPlugin.hh \ Tools/Nsubjettiness/Nsubjettiness.hh \ Tools/Nsubjettiness/TauComponents.hh \ Tools/Nsubjettiness/XConePlugin.hh nobase_dist_noinst_HEADERS += \ Tools/osdir.hh ## Maths nobase_pkginclude_HEADERS += \ Math/Matrices.hh \ Math/Vector3.hh \ Math/VectorN.hh \ Math/MatrixN.hh \ Math/MatrixDiag.hh \ Math/MathHeader.hh \ Math/Vectors.hh \ Math/LorentzTrans.hh \ Math/Matrix3.hh \ Math/MathUtils.hh \ Math/Vector4.hh \ Math/Math.hh \ Math/Units.hh \ Math/Constants.hh \ Math/eigen/util.h \ Math/eigen/regressioninternal.h \ Math/eigen/regression.h \ Math/eigen/vector.h \ Math/eigen/ludecompositionbase.h \ Math/eigen/ludecomposition.h \ Math/eigen/linearsolver.h \ Math/eigen/linearsolverbase.h \ Math/eigen/matrix.h \ Math/eigen/vectorbase.h \ Math/eigen/projective.h \ Math/eigen/matrixbase.h diff --git a/include/Rivet/Projections/MixedFinalState.hh b/include/Rivet/Projections/MixedFinalState.hh new file mode 100644 --- /dev/null +++ b/include/Rivet/Projections/MixedFinalState.hh @@ -0,0 +1,97 @@ +// -*- C++ -*- +#ifndef RIVET_MixedFinalState_HH +#define RIVET_MixedFinalState_HH + +#include "Rivet/Projection.hh" +#include "Rivet/Projections/ParticleFinder.hh" +#include +#include + + +namespace Rivet { + + // @brief Projects out an event mixed of several events, given + // a mixing observable (eg. number of final state particles), + // defining what should qualify as a mixable event. + // Binning in the mixing observable is defined in the constructor, + // as is the number of events one wants to mix with. + // The protected method calculateMixingObs() can be overloaded + // in derived classes, to define other mixing observables, eg. + // centrality or something even more elaborate. + // + // !!!DISCLAIMER!!! The projection makes no attempt at correct handling + // of event weights - ie. what one should use as event weight for several + // mixed events. Proceed with caution if you do not use an MC with + // unit weights. + // + // @author Christian Bierlich + + typedef map > MixMap; + class MixedFinalState : public Projection { + public: + // Constructor + MixedFinalState(const ParticleFinder& fsp, const ParticleFinder& mix, size_t nMixIn, + double oMin, double oMax, double deltao ) : nMix(nMixIn){ + setName("MixedFinalState"); + addProjection(fsp,"FS"); + addProjection(mix,"MIX"); + + // Set up the map for mixing events + for(double o = oMin; o < oMax; o+=deltao ) + mixEvents[o] = deque(); + + } + // Clone on the heap + DEFAULT_RIVET_PROJ_CLONE(MixedFinalState); + + + // Return a vector of mixing events. + vector getMixingEvents() const { + MixMap::const_iterator mixItr = mixEvents.lower_bound(mObs); + if(mixItr == mixEvents.end() || mixItr->second.size() < nMix + 1) + return vector(); + return vector(mixItr->second.begin(), mixItr->second.end() - 1); + } + + protected: + + // Calulate mixing observable. + // Can be overloaded to define more elaborate observables. + virtual void calculateMixingObs(const Particles& parts){ + mObs = parts.size(); + } + + /// Perform the projection on the Event + void project(const Event& e){ + const Particles parts = applyProjection(e, "FS").particles(); + + calculateMixingObs(parts); + + MixMap::iterator mixItr = mixEvents.lower_bound(mObs); + if(mixItr == mixEvents.end()){ + // We are out of bounds. + MSG_DEBUG("Mixing observable out of bounds."); + return; + } + const Particles mix = applyProjection(e, "MIX").particles(); + + mixItr->second.push_back(mix); + if(mixItr->second.size() > nMix + 1) + mixItr->second.pop_front(); + } + + /// Compare with other projections + int compare(const Projection& p) const { + return mkNamedPCmp(p,"FS"); + } + + private: + // The number of event to mix with + size_t nMix; + // The mixing observable of the current event + double mObs; + // The event map; + MixMap mixEvents; + }; +} +#endif diff --git a/include/Rivet/Tools/AtlasCommon.hh b/include/Rivet/Tools/AtlasCommon.hh new file mode 100644 --- /dev/null +++ b/include/Rivet/Tools/AtlasCommon.hh @@ -0,0 +1,85 @@ +// -*- C++ -*- +#ifndef RIVET_ATLAS_COMMON_HH +#define RIVET_ATLAS_COMMON_HH + +#include "Rivet/Projections/FinalState.hh" +#include "Rivet/Projections/ChargedFinalState.hh" +#include "Rivet/Projections/SingleValueProjection.hh" +#include "Rivet/Projections/TriggerProjection.hh" + +namespace Rivet { +/// Common projections for ATLAS trigger conditions and centrality. + + namespace ATLAS { +/// Centrality projection for pPb collisions (one sided) +class SumET_PB_Centrality: public SingleValueProjection { + +public: + + /// Constructor. + SumET_PB_Centrality() { + declare(FinalState(Cuts::eta < -3.2 && Cuts::eta > -4.9 && Cuts::pT > 0.1*GeV), + "SumET_PB_Centrality"); + } + + /// Clone on the heap. + DEFAULT_RIVET_PROJ_CLONE(SumET_PB_Centrality); + +protected: + + /// Perform the projection on the Event + void project(const Event& e) { + clear(); + const FinalState & fsfwd = + apply(e, "SumET_PB_Centrality"); + double estimate = 0.0; + for ( const Particle & p : fsfwd.particles() ) { + estimate += p.Et(); + } + set(estimate); + } + + /// Compare projections + int compare(const Projection& p) const { + return mkNamedPCmp(p, "SumET_PB_Centrality"); + } + +}; + +/// ATLAS min bias trigger conditions. +class MinBiasTrigger: public TriggerProjection { + +public: + + /// Constructor. + MinBiasTrigger() { + declare(ChargedFinalState(Cuts::eta > 2.09 && Cuts::eta < 3.84 && + Cuts::pT > 0.1*GeV), "MBB"); + declare(ChargedFinalState(Cuts::eta < -2.09 && Cuts::eta > -3.84 && + Cuts::pT > 0.1*GeV), "MBF"); + } + + /// Clone on the heap. + DEFAULT_RIVET_PROJ_CLONE(MinBiasTrigger); + +protected: + + /// Perform the projection on the Event + void project(const Event& event) { + pass(); + if ( applyProjection(event,"MBF").particles().empty() || + applyProjection(event,"MBB").particles().empty() ) + fail(); + } + + /// Compare projections + int compare(const Projection& p) const { + return mkNamedPCmp(p, "MBF") || mkNamedPCmp(p, "MBB"); + } + +}; + +} +} + +#endif diff --git a/include/Rivet/Tools/Percentile.hh b/include/Rivet/Tools/Percentile.hh new file mode 100644 --- /dev/null +++ b/include/Rivet/Tools/Percentile.hh @@ -0,0 +1,687 @@ +#ifndef PERCENTILE_HH +#define PERCENTILE_HH + +#include "Rivet/Event.hh" +#include "Rivet/Projections/CentralityProjection.hh" +#include "Rivet/ProjectionApplier.hh" + +namespace Rivet { + + +/// Forward declaration. +class Analysis; + +/// @brief PercentileBase is the base class of all Percentile classes. +/// +/// This base class contains all non-templated variables and +/// infrastructure needed. +class PercentileBase { + +public: + + /// @brief the main constructor + /// + /// requiring a pointer, @a ana, to the Analysis to which this + /// object belongs and the name of the CentralityProjection, @a + /// projname, to be used. + PercentileBase(Analysis * ana, string projName) + : _ana(ana), _projName(projName) {} + + /// @brief Default constructor. + PercentileBase() {} + + /// @initialize the PercentileBase for a new event. + /// + /// This will perform the assigned CentralityProjection and select + /// out the (indices) of the internal AnalysisObjects that are to be + /// active in this event. + void selectBins(const Event &); + + /// @brief Helper function to check if @a x is within @a range. + static bool inRange(double x, pair range) { + return x >= range.first && ( x < range.second || ( x == 100.0 && x == range.second ) ); + } + /// @brief Copy information from @a other PercentileBase + void copyFrom(const PercentileBase & other) { + _ana = other._ana; + _projName = other._projName; + _cent = other._cent; + } + + /// @brief check if @a other PercentileBase is compatible with this. + bool compatible(const PercentileBase & other) const { + return ( _ana == other._ana && + _projName == other._projName && + _cent == other._cent ); + } + + /// @breif return the list of centrality bins. + /// + /// The size of this vector is the same as number of internal + /// analysis objects in the sub class PercentileTBase. + const vector< pair > & centralities() const { + return _cent; + } + +protected: + + /// The Analysis object to which This object is assigned. + Analysis * _ana; + + /// The name of the CentralityProjection. + string _projName; + + /// The list of indices of the analysis objects that are to be + /// filled in the current event. + vector _activeBins; + + /// The list of centrality intervals, one for each included analysis + /// object. + vector > _cent; + +}; + +/// @brief PercentileTBase is the base class of all Percentile classes. +/// +/// This base class contains all template-dependent variables and +/// infrastructure needed for Percentile and PercentileXaxis. +template +class PercentileTBase : public PercentileBase { + +public: + + /// Convenient typedef. + typedef typename T::Ptr TPtr; + + /// @brief the main constructor + /// + /// requiring a pointer, @a ana, to the Analysis to which this + /// object belongs and the name of the CentralityProjection, @a + /// projname, to be used. + PercentileTBase(Analysis * ana, string projName) + : PercentileBase(ana, projName), _histos() {} + + /// @brief Default constructor. + PercentileTBase() {} + + /// @brief Empty destructor. + ~PercentileTBase() {} + + /// @brief add a new percentile bin. + /// + /// Add an analysis objects which are clones of @a temp that should + /// be active for events in the given centrality bin @a + /// cent. Several analysis objects may be added depending on the + /// number of alternative centrality definitions in the + /// CentralityProjection @a proj. This function is common for + /// Percentile and PecentileXaxis, but for the latter the @a cent + /// argument should be left to its default. + void add(shared_ptr ao, CounterPtr cnt, + pair cent = {0.0, 100.0} ) { + _cent.push_back(cent); + _histos.push_back( { ao, cnt } ); + } + + /// @brief Copy the information from an @a other Percentile object. + /// + /// This function differs from a simple assignement as the @a other + /// analysis objects are not copied, but supplied separately through + /// @a tv. + bool add(const PercentileBase & other, const vector & tv) { + copyFrom(other); + if ( tv.size() != _cent.size() ) return false; + for ( auto t : tv ) + _histos.push_back( { t, make_shared() } ); + return true; + } + + /// @brief initialize for a new event. Select which AnalysisObjects + /// should be filled for this event. Keeps track of the number of + /// events seen for each centrality bin and AnalysisAbject. + void init(const Event & event) { + selectBins(event); + for (const auto bin : _activeBins) + _histos[bin].second->fill(event.weight()); + } + + /// @brief Normalize each AnalysisObject + /// + /// by dividing by the sum of the events seen for each centrality + /// bin. + void normalizePerEvent() { + for (const auto &hist : _histos) + if ( hist.second->numEntries() > 0 && hist.first->numEntries() > 0) + hist.first->scaleW(1./hist.second->val()); + } + + /// Simple scaling of each AnalysisObject. + void scale(float scale) { + for (const auto hist : _histos) + hist.first->scaleW(scale); + } + + /// Execute a function for each AnalysisObject. + void exec(function f) { for ( auto hist : _histos) f(hist); } + + /// @brief Access the underlyng AnalysisObjects + /// + /// The returned vector contains a pair, where the first member is + /// the AnalysisObject and the second is a counter keeping track of + /// the sum of event weights for which the AnalysisObject has been + /// active. + const vector, shared_ptr > > & + analysisObjects() const{ + return _histos; + } + +protected: + + /// The returned vector contains a pair, where the first member is + /// the AnalysisObject and the second is a counter keeping track of + /// the sum of event weights for which the AnalysisObject has been + /// active. + vector, shared_ptr > > _histos; + +}; + +/// @brief The Percentile class for centrality binning. +/// +/// The Percentile class automatically handles the selection of which +/// AnalysisObject(s) should be filled depending on the centrality of +/// an event. It cointains a list of AnalysisObjects, one for each +/// centrality bin requested (note that these bins may be overlapping) +/// and each centrality definition is available in the assigned +/// CentralityProjection. +template +class Percentile : public PercentileTBase { + +public: + + /// @brief the main constructor + /// + /// requiring a pointer, @a ana, to the Analysis to which this + /// object belongs and the name of the CentralityProjection, @a + /// projname, to be used. + Percentile(Analysis * ana, string projName) + : PercentileTBase(ana, projName) {} + + /// @brief Default constructor. + Percentile() {} + + /// @brief Empty destructor. + ~Percentile() {} + + /// Needed to access members of the templated base class. + using PercentileTBase::_histos; + + /// Needed to access members of the templated base class. + using PercentileTBase::_activeBins; + + /// Fill each AnalysisObject selected in the last call to + /// PercentileTBaseinit + template + void fill(Args... args) { + for (const auto bin : _activeBins) { + _histos[bin].first->fill(args...); + } + } + + /// Subtract the contents fro another Pecentile. + Percentile &operator-=(const Percentile &rhs) { + const int nCent = _histos.size(); + for (int iCent = 0; iCent < nCent; ++iCent) { + *_histos[iCent].first -= *rhs._histos[iCent].first; + } + } + + /// Add the contents fro another Pecentile. + Percentile &operator+=(const Percentile &rhs) { + const int nCent = _histos.size(); + for (int iCent = 0; iCent < nCent; ++iCent) { + *_histos[iCent].first += *rhs._histos[iCent].first; + /// @todo should this also add the Counter? + } + } + + /// Make this object look like a pointer. + Percentile *operator->() { return this; } + + /// Pointer to member operator. + Percentile &operator->*(function f) { exec(f); return *this; } + +}; + +/// @brief The PercentileXaxis class for centrality binning. +/// +/// The PercentileXaxis class automatically handles the x-axis of an +/// AnalysisObject when the x-axis is to be the centrality of an +/// event. This could also be done by eg. filling directly a Histo1D +/// with the result of a CentralityProjection. However, since the +/// CentralityProjection may handle several centrality definitions at +/// the same time it is reasonable to instead use +/// PercentileXaxis which will fill one histogram for each +/// centrality definition. +/// +/// Operationally this class works like the Percentile class, but only +/// one centrality bin (0-100) is included. When fill()ed the first +/// argument is always given by the assigned CentralityProjection. +template +class PercentileXaxis : public PercentileTBase { + +public: + + /// @brief the main constructor + /// + /// requiring a pointer, @a ana, to the Analysis to which this + /// object belongs and the name of the CentralityProjection, @a + /// projname, to be used. + PercentileXaxis(Analysis * ana, string projName) + : PercentileTBase(ana, projName) {} + + /// @brief Default constructor. + PercentileXaxis() {} + + /// @brief Empty destructor. + ~PercentileXaxis() {} + + /// Needed to access members of the templated base class. + using PercentileTBase::_histos; + + /// Needed to access members of the templated base class. + using PercentileTBase::_activeBins; + + /// Fill each AnalysisObject selected in the last call to + /// PercentileTBaseinit + template + void fill(Args... args) { + for (const auto bin : _activeBins) { + _histos[bin].first->fill(bin, args...); + } + } + + /// Subtract the contents fro another PecentileXaxis. + PercentileXaxis &operator-=(const PercentileXaxis &rhs) { + const int nCent = _histos.size(); + for (int iCent = 0; iCent < nCent; ++iCent) { + *_histos[iCent].first -= *rhs._histos[iCent].first; + } + } + + /// Add the contents fro another PecentileXaxis. + PercentileXaxis &operator+=(const PercentileXaxis &rhs) { + const int nCent = this->_histos.size(); + for (int iCent = 0; iCent < nCent; ++iCent) { + *_histos[iCent].first += *rhs._histos[iCent].first; + } + } + + /// Make this object look like a pointer. + PercentileXaxis *operator->() { return this; } + + /// Pointer to member operator. + PercentileXaxis &operator->*(function f) { exec(f); return *this; } + +}; + +/// @name Combining Percentiles following the naming of functions for +// the underlying AnalysisObjects: global operators +// @{ + +template +Percentile::RefT> +divide(const Percentile numer, const Percentile denom) { + typedef typename ReferenceTraits::RefT ScatT; + Percentile ret; + vector scatters; + assert( numer.compatible(denom) ); + for ( int i = 0, N = numer.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(divide(*numer.analysisObjects()[i].first, + *denom.analysisObjects()[i].first))); + ret.add(numer, scatters); + return ret; +} + +template +Percentile::RefT> +divide(const Percentile numer, + const Percentile::RefT> denom) { + typedef typename ReferenceTraits::RefT ScatT; + Percentile ret; + vector scatters; + assert( numer.compatible(denom) ); + for ( int i = 0, N = numer.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(divide(*numer.analysisObjects()[i].first, + *denom.analysisObjects()[i].first))); + ret.add(numer, scatters); + return ret; +} + +template +Percentile::RefT> +divide(const Percentile::RefT> numer, + const Percentile denom) { + typedef typename ReferenceTraits::RefT ScatT; + Percentile::RefT> ret; + vector scatters; + assert( numer.compatible(denom) ); + for ( int i = 0, N = numer.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(divide(*numer.analysisObjects()[i].first, + *denom.analysisObjects()[i].first))); + ret.add(numer, scatters); + return ret; +} + +template +Percentile add(const Percentile pctla, const Percentile pctlb) { + Percentile ret; + vector aos; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + aos.push_back(make_shared(add(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, aos); + return ret; +} + +template +Percentile::RefT> +add(const Percentile pctla, + const Percentile::RefT> pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + Percentile ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(add(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +Percentile::RefT> +add(const Percentile::RefT> pctla, + const Percentile pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + Percentile ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(add(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +Percentile subtract(const Percentile pctla, const Percentile pctlb) { + Percentile ret; + vector aos; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + aos.push_back(make_shared(subtract(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, aos); + return ret; +} + +template +Percentile::RefT> +subtract(const Percentile pctla, + const Percentile::RefT> pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + Percentile ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(subtract(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +Percentile::RefT> +subtract(const Percentile::RefT> pctla, + const Percentile pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + Percentile ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(subtract(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +Percentile::RefT> +multiply(const Percentile pctla, + const Percentile::RefT> pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + Percentile ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(multiply(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +Percentile::RefT> +multiply(const Percentile::RefT> pctla, + const Percentile pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + Percentile ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(multiply(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + + + + +template +PercentileXaxis::RefT> +divide(const PercentileXaxis numer, const PercentileXaxis denom) { + typedef typename ReferenceTraits::RefT ScatT; + PercentileXaxis ret; + vector scatters; + assert( numer.compatible(denom) ); + for ( int i = 0, N = numer.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(divide(*numer.analysisObjects()[i].first, + *denom.analysisObjects()[i].first))); + ret.add(numer, scatters); + return ret; +} + +template +PercentileXaxis::RefT> +divide(const PercentileXaxis numer, + const PercentileXaxis::RefT> denom) { + typedef typename ReferenceTraits::RefT ScatT; + PercentileXaxis ret; + vector scatters; + assert( numer.compatible(denom) ); + for ( int i = 0, N = numer.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(divide(*numer.analysisObjects()[i].first, + *denom.analysisObjects()[i].first))); + ret.add(numer, scatters); + return ret; +} + +template +PercentileXaxis::RefT> +divide(const PercentileXaxis::RefT> numer, + const PercentileXaxis denom) { + typedef typename ReferenceTraits::RefT ScatT; + PercentileXaxis::RefT> ret; + vector scatters; + assert( numer.compatible(denom) ); + for ( int i = 0, N = numer.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(divide(*numer.analysisObjects()[i].first, + *denom.analysisObjects()[i].first))); + ret.add(numer, scatters); + return ret; +} + +template +PercentileXaxis add(const PercentileXaxis pctla, const PercentileXaxis pctlb) { + PercentileXaxis ret; + vector aos; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + aos.push_back(make_shared(add(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, aos); + return ret; +} + +template +PercentileXaxis::RefT> +add(const PercentileXaxis pctla, + const PercentileXaxis::RefT> pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + PercentileXaxis ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(add(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +PercentileXaxis::RefT> +add(const PercentileXaxis::RefT> pctla, + const PercentileXaxis pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + PercentileXaxis ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(add(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +PercentileXaxis subtract(const PercentileXaxis pctla, const PercentileXaxis pctlb) { + PercentileXaxis ret; + vector aos; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + aos.push_back(make_shared(subtract(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, aos); + return ret; +} + +template +PercentileXaxis::RefT> +subtract(const PercentileXaxis pctla, + const PercentileXaxis::RefT> pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + PercentileXaxis ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(subtract(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +PercentileXaxis::RefT> +subtract(const PercentileXaxis::RefT> pctla, + const PercentileXaxis pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + PercentileXaxis ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(subtract(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +PercentileXaxis::RefT> +multiply(const PercentileXaxis pctla, + const PercentileXaxis::RefT> pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + PercentileXaxis ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(multiply(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +PercentileXaxis::RefT> +multiply(const PercentileXaxis::RefT> pctla, + const PercentileXaxis pctlb) { + typedef typename ReferenceTraits::RefT ScatT; + PercentileXaxis ret; + vector scatters; + assert( pctla.compatible(pctlb) ); + for ( int i = 0, N = pctla.analysisObjects().size(); i < N; ++i ) + scatters.push_back(make_shared(multiply(*pctla.analysisObjects()[i].first, + *pctlb.analysisObjects()[i].first))); + ret.add(pctla, scatters); + return ret; +} + +template +Percentile +operator+(const Percentile pctla, const Percentile pctlb) { + return add(pctla, pctlb); +} + +template +Percentile +operator-(const Percentile pctla, const Percentile pctlb) { + return subtract(pctla, pctlb); +} + +template +Percentile::RefT> +operator/(const Percentile numer, const Percentile denom) { + return divide(numer, denom); +} + +template +PercentileXaxis +operator+(const PercentileXaxis pctla, const PercentileXaxis pctlb) { + return add(pctla, pctlb); +} + +template +PercentileXaxis +operator-(const PercentileXaxis pctla, const PercentileXaxis pctlb) { + return subtract(pctla, pctlb); +} + +template +PercentileXaxis::RefT> +operator/(const PercentileXaxis numer, const PercentileXaxis denom) { + return divide(numer, denom); +} + +} + +#endif diff --git a/include/Rivet/Tools/RivetYODA.hh b/include/Rivet/Tools/RivetYODA.hh --- a/include/Rivet/Tools/RivetYODA.hh +++ b/include/Rivet/Tools/RivetYODA.hh @@ -1,54 +1,103 @@ #ifndef RIVET_RIVETYODA_HH #define RIVET_RIVETYODA_HH #include "Rivet/Config/RivetCommon.hh" #include "YODA/AnalysisObject.h" #include "YODA/Counter.h" #include "YODA/Histo1D.h" #include "YODA/Histo2D.h" #include "YODA/Profile1D.h" #include "YODA/Profile2D.h" #include "YODA/Scatter1D.h" #include "YODA/Scatter2D.h" #include "YODA/Scatter3D.h" namespace Rivet { typedef std::shared_ptr AnalysisObjectPtr; typedef std::shared_ptr CounterPtr; typedef std::shared_ptr Histo1DPtr; typedef std::shared_ptr Histo2DPtr; typedef std::shared_ptr Profile1DPtr; typedef std::shared_ptr Profile2DPtr; typedef std::shared_ptr Scatter1DPtr; typedef std::shared_ptr Scatter2DPtr; typedef std::shared_ptr Scatter3DPtr; using YODA::AnalysisObject; using YODA::Counter; using YODA::Histo1D; using YODA::HistoBin1D; using YODA::Histo2D; using YODA::HistoBin2D; using YODA::Profile1D; using YODA::ProfileBin1D; using YODA::Profile2D; using YODA::ProfileBin2D; using YODA::Scatter1D; using YODA::Point1D; using YODA::Scatter2D; using YODA::Point2D; using YODA::Scatter3D; using YODA::Point3D; /// Function to get a map of all the refdata in a paper with the given @a papername. map getRefData(const string& papername); /// Get the file system path to the reference file for this paper. string getDatafilePath(const string& papername); + /// Traits class to access the type of the AnalysisObject in the + /// reference files. + template struct ReferenceTraits {}; + template<> struct ReferenceTraits { typedef Counter RefT; }; + template<> struct ReferenceTraits { typedef Scatter1D RefT; }; + template<> struct ReferenceTraits { typedef Scatter2D RefT; }; + template<> struct ReferenceTraits { typedef Scatter2D RefT; }; + template<> struct ReferenceTraits { typedef Scatter2D RefT; }; + template<> struct ReferenceTraits { typedef Scatter3D RefT; }; + template<> struct ReferenceTraits { typedef Scatter3D RefT; }; + template<> struct ReferenceTraits { typedef Scatter3D RefT; }; + + + // If @a dst and @a src both are of same subclass T, copy the + // contents of @a src into @a dst and return true. Otherwise return + // false. + template + bool aocopy(AnalysisObjectPtr src, AnalysisObjectPtr dst) { + shared_ptr tsrc = dynamic_pointer_cast(src); + if ( !tsrc ) return false; + shared_ptr tdst = dynamic_pointer_cast(dst); + if ( !tdst ) return false; + *tdst = *tsrc; + return true; + } + + // If @a dst and @a src both are of same subclass T, add the + // contents of @a src into @a dst and return true. Otherwise return + // false. + template + bool aoadd(AnalysisObjectPtr dst, AnalysisObjectPtr src, double scale) { + shared_ptr tsrc = dynamic_pointer_cast(src); + if ( !tsrc ) return false; + shared_ptr tdst = dynamic_pointer_cast(dst); + if ( !tdst ) return false; + tsrc->scaleW(scale); + *tdst += *tsrc; + return true; + } + + // If @a dst is the same subclass as @a src, copy the contents of @a + // src into @a dst and return true. Otherwise return false. + bool copyao(AnalysisObjectPtr src, AnalysisObjectPtr dst); + + // If @a dst is the same subclass as @a src, scale the contents of + // @a src with @a scale and add it to @a dst and return true. Otherwise + // return false. + bool addaos(AnalysisObjectPtr dst, AnalysisObjectPtr src, double scale); + } #endif diff --git a/pyext/rivet/aopaths.py b/pyext/rivet/aopaths.py --- a/pyext/rivet/aopaths.py +++ b/pyext/rivet/aopaths.py @@ -1,102 +1,112 @@ def isRefPath(path): return path.startswith("/REF") +def isRawPath(path): + return path.startswith("/RAW") + +def isRawAO(ao): + return isRawPath(ao.path) + def stripOptions(path): import re return re.sub(r':\w+=[^:/]+', "", path) def extractOptionString(path): import re re_opts = re.compile(r"^.*(:\w+=[^:/]+)+") m = re_opts.match(path) if not m: return "" opts = list(m.groups()) for i in range(len(opts)): opts[i] = opts[i].strip(':') return " [" + ",".join(opts) + "]" def isRefAO(ao): return int(ao.annotation("IsRef")) == 1 or isRefPath(ao.path) def isTmpPath(path): return "/_" in path #< match *any* underscore-prefixed path component def isTmpAO(ao): return isTmpPath(ao.path) class AOPath(object): """ Object representation of analysis object path structures. TODO: move to YODA? """ import re re_aopath = re.compile(r"^(/[^\[\]\@\#]+)(\[[A-Za-z\d\._]+\])?(#\d+|@[\d\.]+)?$") def __init__(self, path): import os self.origpath = path m = self.re_aopath.match(path) if not m: raise Exception("Supplied path '%s' does not meet required structure" % path) self._basepath = m.group(1) self._varid = m.group(2).lstrip("[").rstrip("]") if m.group(2) else None self._binid = int(m.group(3).lstrip("#")) if m.group(3) else None self._isref = isRefPath(self._basepath) def basepath(self, keepref=False): "Main 'Unix-like' part of the AO path, optionally including a /REF prefix" p = self._basepath.rstrip("/") if not keepref and p.startswith("/REF"): p = p[4:] return p def varpath(self, keepref=False, defaultvarid=None): "The basepath, plus any bracketed variation identifier" p = self.basepath(keepref) if self.varid(defaultvarid) is not None: p += "[%s]" % str(self.varid(defaultvarid)) return p def binpath(self, keepref=False, defaultbinid=None, defaultvarid=None): "The varpath, plus any #-prefixed bin number identifier" p = self.varpath(keepref, defaultvarid) if self.binid(defaultbinid) is not None: p += "#%d" % self.binid(defaultbinid) return p def basepathparts(self, keepref=False): "List of basepath components, split by forward slashes" return self.basepath(keepref).strip("/").split("/") # TODO: basepathhead, basepathtail def dirname(self, keepref=False): "The non-final (i.e. dir-like) part of the basepath" return os.path.dirname(self.basepath(keepref)) def dirnameparts(self, keepref=False): "List of dirname components, split by forward slashes" return self.dirname(keepref).strip("/").split("/") def basename(self): "The final (i.e. file-like) part of the basepath" return os.path.basename(self._basepath) def varid(self, default=None): "The variation identifier (without brackets) if there is one, otherwise None" return self._varid if self._varid is not None else default def binid(self, default=None): "The bin identifier (without #) if there is one, otherwise None" return self._binid if self._binid is not None else default def isref(self): "Is there a /REF prefix in the original path?" return self._isref def istmp(self): "Do any basepath components start with an underscore, used to hide them from plotting?" return isTmpPath(self.basepath()) + + def israw(self): + "Do any basepath components start with /RAW, used to hide them from plotting?" + return isRawPath(self.basepath()) diff --git a/pyext/rivet/core.pyx b/pyext/rivet/core.pyx --- a/pyext/rivet/core.pyx +++ b/pyext/rivet/core.pyx @@ -1,232 +1,238 @@ # distutils: language = c++ cimport rivet as c from cython.operator cimport dereference as deref # Need to be careful with memory management -- perhaps use the base object that # we used in YODA? cdef extern from "" namespace "std" nogil: cdef c.unique_ptr[c.Analysis] move(c.unique_ptr[c.Analysis]) cdef class AnalysisHandler: cdef c.AnalysisHandler *_ptr def __cinit__(self): self._ptr = new c.AnalysisHandler() def __del__(self): del self._ptr def setIgnoreBeams(self, ignore=True): self._ptr.setIgnoreBeams(ignore) def addAnalysis(self, name): self._ptr.addAnalysis(name.encode('utf-8')) return self def analysisNames(self): anames = self._ptr.analysisNames() return [ a.decode('utf-8') for a in anames ] # def analysis(self, aname): # cdef c.Analysis* ptr = self._ptr.analysis(aname) # cdef Analysis pyobj = Analysis.__new__(Analysis) # if not ptr: # return None # pyobj._ptr = ptr # return pyobj def readData(self, name): self._ptr.readData(name.encode('utf-8')) def writeData(self, name): self._ptr.writeData(name.encode('utf-8')) def crossSection(self): return self._ptr.crossSection() def finalize(self): self._ptr.finalize() + def dump(self, file, period): + self._ptr.dump(file, period) + + def mergeYodas(self, filelist, equiv): + self._ptr.mergeYodas(filelist, equiv) + cdef class Run: cdef c.Run *_ptr def __cinit__(self, AnalysisHandler h): self._ptr = new c.Run(h._ptr[0]) def __del__(self): del self._ptr def setCrossSection(self, double x): self._ptr.setCrossSection(x) return self def setListAnalyses(self, choice): self._ptr.setListAnalyses(choice) return self def init(self, name, weight=1.0): return self._ptr.init(name.encode('utf-8'), weight) def openFile(self, name, weight=1.0): return self._ptr.openFile(name.encode('utf-8'), weight) def readEvent(self): return self._ptr.readEvent() def skipEvent(self): return self._ptr.skipEvent() def processEvent(self): return self._ptr.processEvent() def finalize(self): return self._ptr.finalize() cdef class Analysis: cdef c.unique_ptr[c.Analysis] _ptr def __init__(self): raise RuntimeError('This class cannot be instantiated') def requiredBeams(self): return deref(self._ptr).requiredBeams() def requiredEnergies(self): return deref(self._ptr).requiredEnergies() def keywords(self): kws = deref(self._ptr).keywords() return [ k.decode('utf-8') for k in kws ] def authors(self): auths = deref(self._ptr).authors() return [ a.decode('utf-8') for a in auths ] def bibKey(self): return deref(self._ptr).bibKey().decode('utf-8') def name(self): return deref(self._ptr).name().decode('utf-8') def bibTeX(self): return deref(self._ptr).bibTeX().decode('utf-8') def references(self): refs = deref(self._ptr).references() return [ r.decode('utf-8') for r in refs ] def collider(self): return deref(self._ptr).collider().decode('utf-8') def description(self): return deref(self._ptr).description().decode('utf-8') def experiment(self): return deref(self._ptr).experiment().decode('utf-8') def inspireId(self): return deref(self._ptr).inspireId().decode('utf-8') def spiresId(self): return deref(self._ptr).spiresId().decode('utf-8') def runInfo(self): return deref(self._ptr).runInfo().decode('utf-8') def status(self): return deref(self._ptr).status().decode('utf-8') def summary(self): return deref(self._ptr).summary().decode('utf-8') def year(self): return deref(self._ptr).year().decode('utf-8') def luminosityfb(self): return deref(self._ptr).luminosityfb().decode('utf-8') #cdef object LEVELS = dict(TRACE = 0, DEBUG = 10, INFO = 20, WARN = 30, WARNING = 30, ERROR = 40, CRITICAL = 50, ALWAYS = 50) cdef class AnalysisLoader: @staticmethod def analysisNames(): names = c.AnalysisLoader_analysisNames() return [ n.decode('utf-8') for n in names ] @staticmethod def getAnalysis(name): name = name.encode('utf-8') cdef c.unique_ptr[c.Analysis] ptr = c.AnalysisLoader_getAnalysis(name) cdef Analysis pyobj = Analysis.__new__(Analysis) if not ptr: return None pyobj._ptr = move(ptr) # Create python object return pyobj def getAnalysisLibPaths(): ps = c.getAnalysisLibPaths() return [ p.decode('utf-8') for p in ps ] def setAnalysisLibPaths(xs): bs = [ x.encode('utf-8') for x in xs ] c.setAnalysisLibPaths(bs) def addAnalysisLibPath(path): c.addAnalysisLibPath(path.encode('utf-8')) def setAnalysisDataPaths(xs): bs = [ x.encode('utf-8') for x in xs ] c.setAnalysisDataPaths(bs) def addAnalysisDataPath(path): c.addAnalysisDataPath(path.encode('utf-8')) def getAnalysisDataPaths(): ps = c.getAnalysisDataPaths() return [ p.decode('utf-8') for p in ps ] def findAnalysisDataFile(q): f = c.findAnalysisDataFile(q.encode('utf-8')) return f.decode('utf-8') def getAnalysisRefPaths(): ps = c.getAnalysisRefPaths() return [ p.decode('utf-8') for p in ps ] def findAnalysisRefFile(q): f = c.findAnalysisRefFile(q.encode('utf-8')) return f.decode('utf-8') def getAnalysisInfoPaths(): ps = c.getAnalysisInfoPaths() return [ p.decode('utf-8') for p in ps ] def findAnalysisInfoFile(q): f = c.findAnalysisInfoFile(q.encode('utf-8')) return f.decode('utf-8') def getAnalysisPlotPaths(): ps = c.getAnalysisPlotPaths() return [ p.decode('utf-8') for p in ps ] def findAnalysisPlotFile(q): f = c.findAnalysisPlotFile(q.encode('utf-8')) return f.decode('utf-8') def version(): return c.version().decode('utf-8') def setLogLevel(name, level): c.setLogLevel(name.encode('utf-8'), level) diff --git a/pyext/rivet/rivet.pxd b/pyext/rivet/rivet.pxd --- a/pyext/rivet/rivet.pxd +++ b/pyext/rivet/rivet.pxd @@ -1,92 +1,94 @@ from libcpp.map cimport map from libcpp.pair cimport pair from libcpp.vector cimport vector from libcpp cimport bool from libcpp.string cimport string from libcpp.memory cimport unique_ptr ctypedef int PdgId ctypedef pair[PdgId,PdgId] PdgIdPair cdef extern from "Rivet/AnalysisHandler.hh" namespace "Rivet": cdef cppclass AnalysisHandler: void setIgnoreBeams(bool) AnalysisHandler& addAnalysis(string) vector[string] analysisNames() const # Analysis* analysis(string) void writeData(string&) void readData(string&) double crossSection() void finalize() + void dump(string, int) + void mergeYodas(vector[string], bool) cdef extern from "Rivet/Run.hh" namespace "Rivet": cdef cppclass Run: Run(AnalysisHandler) Run& setCrossSection(double) # For chaining? Run& setListAnalyses(bool) bool init(string, double) except + # $2=1.0 bool openFile(string, double) except + # $2=1.0 bool readEvent() except + bool skipEvent() except + bool processEvent() except + bool finalize() except + cdef extern from "Rivet/Analysis.hh" namespace "Rivet": cdef cppclass Analysis: vector[PdgIdPair]& requiredBeams() vector[pair[double, double]] requiredEnergies() vector[string] authors() vector[string] references() vector[string] keywords() string name() string bibTeX() string bibKey() string collider() string description() string experiment() string inspireId() string spiresId() string runInfo() string status() string summary() string year() string luminosityfb() # Might need to translate the following errors, although I believe 'what' is now # preserved. But often, we need the exception class name. #Error #RangeError #LogicError #PidError #InfoError #WeightError #UserError cdef extern from "Rivet/AnalysisLoader.hh": vector[string] AnalysisLoader_analysisNames "Rivet::AnalysisLoader::analysisNames" () unique_ptr[Analysis] AnalysisLoader_getAnalysis "Rivet::AnalysisLoader::getAnalysis" (string) cdef extern from "Rivet/Tools/RivetPaths.hh" namespace "Rivet": vector[string] getAnalysisLibPaths() void setAnalysisLibPaths(vector[string]) void addAnalysisLibPath(string) vector[string] getAnalysisDataPaths() void setAnalysisDataPaths(vector[string]) void addAnalysisDataPath(string) string findAnalysisDataFile(string) vector[string] getAnalysisRefPaths() string findAnalysisRefFile(string) vector[string] getAnalysisInfoPaths() string findAnalysisInfoFile(string) vector[string] getAnalysisPlotPaths() string findAnalysisPlotFile(string) cdef extern from "Rivet/Rivet.hh" namespace "Rivet": string version() cdef extern from "Rivet/Tools/Logging.hh": void setLogLevel "Rivet::Log::setLevel" (string, int) diff --git a/src/Core/Analysis.cc b/src/Core/Analysis.cc --- a/src/Core/Analysis.cc +++ b/src/Core/Analysis.cc @@ -1,1008 +1,1004 @@ // -*- C++ -*- #include "Rivet/Config/RivetCommon.hh" #include "Rivet/Analysis.hh" #include "Rivet/AnalysisHandler.hh" #include "Rivet/AnalysisInfo.hh" #include "Rivet/Tools/BeamConstraint.hh" #include "Rivet/Projections/ImpactParameterProjection.hh" #include "Rivet/Projections/GeneratedPercentileProjection.hh" #include "Rivet/Projections/UserCentEstimate.hh" #include "Rivet/Projections/CentralityProjection.hh" namespace Rivet { Analysis::Analysis(const string& name) : _crossSection(-1.0), _gotCrossSection(false), _analysishandler(NULL) { ProjectionApplier::_allowProjReg = false; _defaultname = name; unique_ptr ai = AnalysisInfo::make(name); assert(ai); _info = move(ai); assert(_info); } double Analysis::sqrtS() const { return handler().sqrtS(); } const ParticlePair& Analysis::beams() const { return handler().beams(); } const PdgIdPair Analysis::beamIds() const { return handler().beamIds(); } const string Analysis::histoDir() const { /// @todo Cache in a member variable string _histoDir; if (_histoDir.empty()) { _histoDir = "/" + name(); if (handler().runName().length() > 0) { _histoDir = "/" + handler().runName() + _histoDir; } replace_all(_histoDir, "//", "/"); //< iterates until none } return _histoDir; } const string Analysis::histoPath(const string& hname) const { const string path = histoDir() + "/" + hname; return path; } const string Analysis::histoPath(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const { return histoDir() + "/" + mkAxisCode(datasetId, xAxisId, yAxisId); } const string Analysis::mkAxisCode(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId) const { stringstream axisCode; axisCode << "d"; if (datasetId < 10) axisCode << 0; axisCode << datasetId; axisCode << "-x"; if (xAxisId < 10) axisCode << 0; axisCode << xAxisId; axisCode << "-y"; if (yAxisId < 10) axisCode << 0; axisCode << yAxisId; return axisCode.str(); } Log& Analysis::getLog() const { string logname = "Rivet.Analysis." + name(); return Log::getLog(logname); } /////////////////////////////////////////// size_t Analysis::numEvents() const { return handler().numEvents(); } double Analysis::sumW() const { return handler().sumW(); } double Analysis::sumW2() const { return handler().sumW2(); } /////////////////////////////////////////// bool Analysis::isCompatible(const ParticlePair& beams) const { return isCompatible(beams.first.pid(), beams.second.pid(), beams.first.energy(), beams.second.energy()); } bool Analysis::isCompatible(PdgId beam1, PdgId beam2, double e1, double e2) const { PdgIdPair beams(beam1, beam2); pair energies(e1, e2); return isCompatible(beams, energies); } bool Analysis::isCompatible(const PdgIdPair& beams, const pair& energies) const { // First check the beam IDs bool beamIdsOk = false; for (const PdgIdPair& bp : requiredBeams()) { if (compatible(beams, bp)) { beamIdsOk = true; break; } } if (!beamIdsOk) return false; - // Next check that the energies are compatible (within 1% or 1 GeV, whichever is larger, for a bit of UI forgiveness) - + /// @todo Use some sort of standard ordering to improve comparisons, esp. when the two beams are different particles bool beamEnergiesOk = requiredEnergies().size() > 0 ? false : true; typedef pair DoublePair; for (const DoublePair& ep : requiredEnergies()) { if ((fuzzyEquals(ep.first, energies.first, 0.01) && fuzzyEquals(ep.second, energies.second, 0.01)) || (fuzzyEquals(ep.first, energies.second, 0.01) && fuzzyEquals(ep.second, energies.first, 0.01)) || (abs(ep.first - energies.first) < 1*GeV && abs(ep.second - energies.second) < 1*GeV) || (abs(ep.first - energies.second) < 1*GeV && abs(ep.second - energies.first) < 1*GeV)) { beamEnergiesOk = true; break; } } return beamEnergiesOk; /// @todo Need to also check internal consistency of the analysis' /// beam requirements with those of the projections it uses. } /////////////////////////////////////////// Analysis& Analysis::setCrossSection(double xs) { _crossSection = xs; _gotCrossSection = true; return *this; } double Analysis::crossSection() const { if (!_gotCrossSection || std::isnan(_crossSection)) { string errMsg = "You did not set the cross section for the analysis " + name(); throw Error(errMsg); } return _crossSection; } double Analysis::crossSectionPerEvent() const { const double sumW = sumOfWeights(); assert(sumW != 0.0); return _crossSection / sumW; } //////////////////////////////////////////////////////////// // Histogramming void Analysis::_cacheRefData() const { if (_refdata.empty()) { MSG_TRACE("Getting refdata cache for paper " << name()); _refdata = getRefData(getRefDataName()); } } vector Analysis::getAllData(bool includeorphans) const{ return handler().getData(includeorphans); } CounterPtr Analysis::bookCounter(const string& cname, const string& title) { // const string& xtitle, // const string& ytitle) { const string path = histoPath(cname); CounterPtr ctr = make_shared(path, title); addAnalysisObject(ctr); MSG_TRACE("Made counter " << cname << " for " << name()); // hist->setAnnotation("XLabel", xtitle); // hist->setAnnotation("YLabel", ytitle); return ctr; } CounterPtr Analysis::bookCounter(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const string& title) { // const string& xtitle, // const string& ytitle) { const string axisCode = mkAxisCode(datasetId, xAxisId, yAxisId); return bookCounter(axisCode, title); } Histo1DPtr Analysis::bookHisto1D(const string& hname, size_t nbins, double lower, double upper, const string& title, const string& xtitle, const string& ytitle) { Histo1DPtr hist; try { // try to bind to pre-existing // AnalysisObjectPtr ao = getAnalysisObject(path); // hist = dynamic_pointer_cast(ao); hist = getHisto1D(hname); /// @todo Test that cast worked /// @todo Also test that binning is as expected? MSG_TRACE("Bound pre-existing histogram " << hname << " for " << name()); } catch (...) { // binding failed; make it from scratch hist = make_shared(nbins, lower, upper, histoPath(hname), title); addAnalysisObject(hist); MSG_TRACE("Made histogram " << hname << " for " << name()); } hist->setTitle(title); hist->setAnnotation("XLabel", xtitle); hist->setAnnotation("YLabel", ytitle); return hist; } Histo1DPtr Analysis::bookHisto1D(const string& hname, const vector& binedges, const string& title, const string& xtitle, const string& ytitle) { Histo1DPtr hist; try { // try to bind to pre-existing // AnalysisObjectPtr ao = getAnalysisObject(path); // hist = dynamic_pointer_cast(ao); hist = getHisto1D(hname); /// @todo Test that cast worked /// @todo Also test that binning is as expected? MSG_TRACE("Bound pre-existing histogram " << hname << " for " << name()); } catch (...) { // binding failed; make it from scratch hist = make_shared(binedges, histoPath(hname), title); addAnalysisObject(hist); MSG_TRACE("Made histogram " << hname << " for " << name()); } hist->setTitle(title); hist->setAnnotation("XLabel", xtitle); hist->setAnnotation("YLabel", ytitle); return hist; } Histo1DPtr Analysis::bookHisto1D(const string& hname, const initializer_list& binedges, const string& title, const string& xtitle, const string& ytitle) { return bookHisto1D(hname, vector{binedges}, title, xtitle, ytitle); } Histo1DPtr Analysis::bookHisto1D(const string& hname, const Scatter2D& refscatter, const string& title, const string& xtitle, const string& ytitle) { Histo1DPtr hist; try { // try to bind to pre-existing // AnalysisObjectPtr ao = getAnalysisObject(path); // hist = dynamic_pointer_cast(ao); hist = getHisto1D(hname); /// @todo Test that cast worked /// @todo Also test that binning is as expected? MSG_TRACE("Bound pre-existing histogram " << hname << " for " << name()); } catch (...) { // binding failed; make it from scratch hist = make_shared(refscatter, histoPath(hname)); if (hist->hasAnnotation("IsRef")) hist->rmAnnotation("IsRef"); addAnalysisObject(hist); MSG_TRACE("Made histogram " << hname << " for " << name()); } hist->setTitle(title); hist->setAnnotation("XLabel", xtitle); hist->setAnnotation("YLabel", ytitle); return hist; } Histo1DPtr Analysis::bookHisto1D(const string& hname, const string& title, const string& xtitle, const string& ytitle) { const Scatter2D& refdata = refData(hname); return bookHisto1D(hname, refdata, title, xtitle, ytitle); } Histo1DPtr Analysis::bookHisto1D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const string& title, const string& xtitle, const string& ytitle) { const string axisCode = mkAxisCode(datasetId, xAxisId, yAxisId); return bookHisto1D(axisCode, title, xtitle, ytitle); } /// @todo Add booking methods which take a path, titles and *a reference Scatter from which to book* ///////////////// Histo2DPtr Analysis::bookHisto2D(const string& hname, size_t nxbins, double xlower, double xupper, size_t nybins, double ylower, double yupper, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const string path = histoPath(hname); Histo2DPtr hist = make_shared(nxbins, xlower, xupper, nybins, ylower, yupper, path, title); addAnalysisObject(hist); MSG_TRACE("Made 2D histogram " << hname << " for " << name()); hist->setAnnotation("XLabel", xtitle); hist->setAnnotation("YLabel", ytitle); hist->setAnnotation("ZLabel", ztitle); return hist; } Histo2DPtr Analysis::bookHisto2D(const string& hname, const vector& xbinedges, const vector& ybinedges, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const string path = histoPath(hname); Histo2DPtr hist = make_shared(xbinedges, ybinedges, path, title); addAnalysisObject(hist); MSG_TRACE("Made 2D histogram " << hname << " for " << name()); hist->setAnnotation("XLabel", xtitle); hist->setAnnotation("YLabel", ytitle); hist->setAnnotation("ZLabel", ztitle); return hist; } Histo2DPtr Analysis::bookHisto2D(const string& hname, const initializer_list& xbinedges, const initializer_list& ybinedges, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { return bookHisto2D(hname, vector{xbinedges}, vector{ybinedges}, title, xtitle, ytitle, ztitle); } Histo2DPtr Analysis::bookHisto2D(const string& hname, const Scatter3D& refscatter, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const string path = histoPath(hname); Histo2DPtr hist( new Histo2D(refscatter, path) ); addAnalysisObject(hist); MSG_TRACE("Made 2D histogram " << hname << " for " << name()); if (hist->hasAnnotation("IsRef")) hist->rmAnnotation("IsRef"); hist->setTitle(title); hist->setAnnotation("XLabel", xtitle); hist->setAnnotation("YLabel", ytitle); hist->setAnnotation("ZLabel", ztitle); return hist; } Histo2DPtr Analysis::bookHisto2D(const string& hname, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const Scatter3D& refdata = refData(hname); return bookHisto2D(hname, refdata, title, xtitle, ytitle, ztitle); } Histo2DPtr Analysis::bookHisto2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const string axisCode = mkAxisCode(datasetId, xAxisId, yAxisId); return bookHisto2D(axisCode, title, xtitle, ytitle, ztitle); } ///////////////// Profile1DPtr Analysis::bookProfile1D(const string& hname, size_t nbins, double lower, double upper, const string& title, const string& xtitle, const string& ytitle) { const string path = histoPath(hname); Profile1DPtr prof = make_shared(nbins, lower, upper, path, title); addAnalysisObject(prof); MSG_TRACE("Made profile histogram " << hname << " for " << name()); prof->setAnnotation("XLabel", xtitle); prof->setAnnotation("YLabel", ytitle); return prof; } Profile1DPtr Analysis::bookProfile1D(const string& hname, const vector& binedges, const string& title, const string& xtitle, const string& ytitle) { const string path = histoPath(hname); Profile1DPtr prof = make_shared(binedges, path, title); addAnalysisObject(prof); MSG_TRACE("Made profile histogram " << hname << " for " << name()); prof->setAnnotation("XLabel", xtitle); prof->setAnnotation("YLabel", ytitle); return prof; } Profile1DPtr Analysis::bookProfile1D(const string& hname, const initializer_list& binedges, const string& title, const string& xtitle, const string& ytitle) { return bookProfile1D(hname, vector{binedges}, title, xtitle, ytitle); } Profile1DPtr Analysis::bookProfile1D(const string& hname, const Scatter2D& refscatter, const string& title, const string& xtitle, const string& ytitle) { const string path = histoPath(hname); Profile1DPtr prof = make_shared(refscatter, path); addAnalysisObject(prof); MSG_TRACE("Made profile histogram " << hname << " for " << name()); if (prof->hasAnnotation("IsRef")) prof->rmAnnotation("IsRef"); prof->setTitle(title); prof->setAnnotation("XLabel", xtitle); prof->setAnnotation("YLabel", ytitle); return prof; } Profile1DPtr Analysis::bookProfile1D(const string& hname, const string& title, const string& xtitle, const string& ytitle) { const Scatter2D& refdata = refData(hname); return bookProfile1D(hname, refdata, title, xtitle, ytitle); } Profile1DPtr Analysis::bookProfile1D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const string& title, const string& xtitle, const string& ytitle) { const string axisCode = mkAxisCode(datasetId, xAxisId, yAxisId); return bookProfile1D(axisCode, title, xtitle, ytitle); } /////////////////// Profile2DPtr Analysis::bookProfile2D(const string& hname, size_t nxbins, double xlower, double xupper, size_t nybins, double ylower, double yupper, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const string path = histoPath(hname); Profile2DPtr prof = make_shared(nxbins, xlower, xupper, nybins, ylower, yupper, path, title); addAnalysisObject(prof); MSG_TRACE("Made 2D profile histogram " << hname << " for " << name()); prof->setAnnotation("XLabel", xtitle); prof->setAnnotation("YLabel", ytitle); prof->setAnnotation("ZLabel", ztitle); return prof; } Profile2DPtr Analysis::bookProfile2D(const string& hname, const vector& xbinedges, const vector& ybinedges, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const string path = histoPath(hname); Profile2DPtr prof = make_shared(xbinedges, ybinedges, path, title); addAnalysisObject(prof); MSG_TRACE("Made 2D profile histogram " << hname << " for " << name()); prof->setAnnotation("XLabel", xtitle); prof->setAnnotation("YLabel", ytitle); prof->setAnnotation("ZLabel", ztitle); return prof; } Profile2DPtr Analysis::bookProfile2D(const string& hname, const initializer_list& xbinedges, const initializer_list& ybinedges, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { return bookProfile2D(hname, vector{xbinedges}, vector{ybinedges}, title, xtitle, ytitle, ztitle); } Profile2DPtr Analysis::bookProfile2D(const string& hname, const Scatter3D& refscatter, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const string path = histoPath(hname); Profile2DPtr prof( new Profile2D(refscatter, path) ); addAnalysisObject(prof); MSG_TRACE("Made 2D profile histogram " << hname << " for " << name()); if (prof->hasAnnotation("IsRef")) prof->rmAnnotation("IsRef"); prof->setTitle(title); prof->setAnnotation("XLabel", xtitle); prof->setAnnotation("YLabel", ytitle); prof->setAnnotation("ZLabel", ztitle); return prof; } Profile2DPtr Analysis::bookProfile2D(const string& hname, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const Scatter3D& refdata = refData(hname); return bookProfile2D(hname, refdata, title, xtitle, ytitle, ztitle); } Profile2DPtr Analysis::bookProfile2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, const string& title, const string& xtitle, const string& ytitle, const string& ztitle) { const string axisCode = mkAxisCode(datasetId, xAxisId, yAxisId); return bookProfile2D(axisCode, title, xtitle, ytitle, ztitle); } ///////////////// Scatter2DPtr Analysis::bookScatter2D(unsigned int datasetId, unsigned int xAxisId, unsigned int yAxisId, bool copy_pts, const string& title, const string& xtitle, const string& ytitle) { const string axisCode = mkAxisCode(datasetId, xAxisId, yAxisId); return bookScatter2D(axisCode, copy_pts, title, xtitle, ytitle); } Scatter2DPtr Analysis::bookScatter2D(const string& hname, bool copy_pts, const string& title, const string& xtitle, const string& ytitle) { Scatter2DPtr s; const string path = histoPath(hname); if (copy_pts) { const Scatter2D& refdata = refData(hname); s = make_shared(refdata, path); for (Point2D& p : s->points()) p.setY(0, 0); } else { s = make_shared(path); } addAnalysisObject(s); MSG_TRACE("Made scatter " << hname << " for " << name()); if (s->hasAnnotation("IsRef")) s->rmAnnotation("IsRef"); s->setTitle(title); s->setAnnotation("XLabel", xtitle); s->setAnnotation("YLabel", ytitle); return s; } Scatter2DPtr Analysis::bookScatter2D(const string& hname, size_t npts, double lower, double upper, const string& title, const string& xtitle, const string& ytitle) { Scatter2DPtr s; const string path = histoPath(hname); try { // try to bind to pre-existing s = getAnalysisObject(hname); /// @todo Also test that binning is as expected? MSG_TRACE("Bound pre-existing scatter " << path << " for " << name()); } catch (...) { // binding failed; make it from scratch s = make_shared(path); const double binwidth = (upper-lower)/npts; for (size_t pt = 0; pt < npts; ++pt) { const double bincentre = lower + (pt + 0.5) * binwidth; s->addPoint(bincentre, 0, binwidth/2.0, 0); } addAnalysisObject(s); MSG_TRACE("Made scatter " << hname << " for " << name()); } s->setTitle(title); s->setAnnotation("XLabel", xtitle); s->setAnnotation("YLabel", ytitle); return s; } Scatter2DPtr Analysis::bookScatter2D(const string& hname, const vector& binedges, const string& title, const string& xtitle, const string& ytitle) { const string path = histoPath(hname); Scatter2DPtr s = make_shared(path); for (size_t pt = 0; pt < binedges.size()-1; ++pt) { const double bincentre = (binedges[pt] + binedges[pt+1]) / 2.0; const double binwidth = binedges[pt+1] - binedges[pt]; s->addPoint(bincentre, 0, binwidth/2.0, 0); } addAnalysisObject(s); MSG_TRACE("Made scatter " << hname << " for " << name()); s->setTitle(title); s->setAnnotation("XLabel", xtitle); s->setAnnotation("YLabel", ytitle); return s; } ///////////////////// void Analysis::divide(CounterPtr c1, CounterPtr c2, Scatter1DPtr s) const { const string path = s->path(); *s = *c1 / *c2; s->setPath(path); } void Analysis::divide(const Counter& c1, const Counter& c2, Scatter1DPtr s) const { const string path = s->path(); *s = c1 / c2; s->setPath(path); } void Analysis::divide(Histo1DPtr h1, Histo1DPtr h2, Scatter2DPtr s) const { const string path = s->path(); *s = *h1 / *h2; s->setPath(path); } void Analysis::divide(const Histo1D& h1, const Histo1D& h2, Scatter2DPtr s) const { const string path = s->path(); *s = h1 / h2; s->setPath(path); } void Analysis::divide(Profile1DPtr p1, Profile1DPtr p2, Scatter2DPtr s) const { const string path = s->path(); *s = *p1 / *p2; s->setPath(path); } void Analysis::divide(const Profile1D& p1, const Profile1D& p2, Scatter2DPtr s) const { const string path = s->path(); *s = p1 / p2; s->setPath(path); } void Analysis::divide(Histo2DPtr h1, Histo2DPtr h2, Scatter3DPtr s) const { const string path = s->path(); *s = *h1 / *h2; s->setPath(path); } void Analysis::divide(const Histo2D& h1, const Histo2D& h2, Scatter3DPtr s) const { const string path = s->path(); *s = h1 / h2; s->setPath(path); } void Analysis::divide(Profile2DPtr p1, Profile2DPtr p2, Scatter3DPtr s) const { const string path = s->path(); *s = *p1 / *p2; s->setPath(path); } void Analysis::divide(const Profile2D& p1, const Profile2D& p2, Scatter3DPtr s) const { const string path = s->path(); *s = p1 / p2; s->setPath(path); } /// @todo Counter and Histo2D efficiencies and asymms void Analysis::efficiency(Histo1DPtr h1, Histo1DPtr h2, Scatter2DPtr s) const { const string path = s->path(); *s = YODA::efficiency(*h1, *h2); s->setPath(path); } void Analysis::efficiency(const Histo1D& h1, const Histo1D& h2, Scatter2DPtr s) const { const string path = s->path(); *s = YODA::efficiency(h1, h2); s->setPath(path); } void Analysis::asymm(Histo1DPtr h1, Histo1DPtr h2, Scatter2DPtr s) const { const string path = s->path(); *s = YODA::asymm(*h1, *h2); s->setPath(path); } void Analysis::asymm(const Histo1D& h1, const Histo1D& h2, Scatter2DPtr s) const { const string path = s->path(); *s = YODA::asymm(h1, h2); s->setPath(path); } void Analysis::scale(CounterPtr cnt, double factor) { if (!cnt) { MSG_WARNING("Failed to scale counter=NULL in analysis " << name() << " (scale=" << factor << ")"); return; } if (std::isnan(factor) || std::isinf(factor)) { MSG_WARNING("Failed to scale counter=" << cnt->path() << " in analysis: " << name() << " (invalid scale factor = " << factor << ")"); factor = 0; } MSG_TRACE("Scaling counter " << cnt->path() << " by factor " << factor); try { cnt->scaleW(factor); } catch (YODA::Exception& we) { MSG_WARNING("Could not scale counter " << cnt->path()); return; } } void Analysis::normalize(Histo1DPtr histo, double norm, bool includeoverflows) { if (!histo) { MSG_WARNING("Failed to normalize histo=NULL in analysis " << name() << " (norm=" << norm << ")"); return; } MSG_TRACE("Normalizing histo " << histo->path() << " to " << norm); try { const double hint = histo->integral(includeoverflows); if (hint == 0) MSG_WARNING("Skipping histo with null area " << histo->path()); else histo->normalize(norm, includeoverflows); } catch (YODA::Exception& we) { MSG_WARNING("Could not normalize histo " << histo->path()); return; } } void Analysis::scale(Histo1DPtr histo, double factor) { if (!histo) { MSG_WARNING("Failed to scale histo=NULL in analysis " << name() << " (scale=" << factor << ")"); return; } if (std::isnan(factor) || std::isinf(factor)) { MSG_WARNING("Failed to scale histo=" << histo->path() << " in analysis: " << name() << " (invalid scale factor = " << factor << ")"); factor = 0; } MSG_TRACE("Scaling histo " << histo->path() << " by factor " << factor); try { histo->scaleW(factor); } catch (YODA::Exception& we) { MSG_WARNING("Could not scale histo " << histo->path()); return; } } void Analysis::normalize(Histo2DPtr histo, double norm, bool includeoverflows) { if (!histo) { MSG_ERROR("Failed to normalize histo=NULL in analysis " << name() << " (norm=" << norm << ")"); return; } MSG_TRACE("Normalizing histo " << histo->path() << " to " << norm); try { const double hint = histo->integral(includeoverflows); if (hint == 0) MSG_WARNING("Skipping histo with null area " << histo->path()); else histo->normalize(norm, includeoverflows); } catch (YODA::Exception& we) { MSG_WARNING("Could not normalize histo " << histo->path()); return; } } void Analysis::scale(Histo2DPtr histo, double factor) { if (!histo) { MSG_ERROR("Failed to scale histo=NULL in analysis " << name() << " (scale=" << factor << ")"); return; } if (std::isnan(factor) || std::isinf(factor)) { MSG_ERROR("Failed to scale histo=" << histo->path() << " in analysis: " << name() << " (invalid scale factor = " << factor << ")"); factor = 0; } MSG_TRACE("Scaling histo " << histo->path() << " by factor " << factor); try { histo->scaleW(factor); } catch (YODA::Exception& we) { MSG_WARNING("Could not scale histo " << histo->path()); return; } } void Analysis::integrate(Histo1DPtr h, Scatter2DPtr s) const { // preserve the path info const string path = s->path(); *s = toIntegralHisto(*h); s->setPath(path); } void Analysis::integrate(const Histo1D& h, Scatter2DPtr s) const { // preserve the path info const string path = s->path(); *s = toIntegralHisto(h); s->setPath(path); } /// @todo 2D versions of integrate... defined how, exactly?!? ////////////////////////////////// void Analysis::addAnalysisObject(AnalysisObjectPtr ao) { _analysisobjects.push_back(ao); } void Analysis::removeAnalysisObject(const string& path) { for (vector::iterator it = _analysisobjects.begin(); it != _analysisobjects.end(); ++it) { if ((*it)->path() == path) { _analysisobjects.erase(it); break; } } } void Analysis::removeAnalysisObject(AnalysisObjectPtr ao) { for (vector::iterator it = _analysisobjects.begin(); it != _analysisobjects.end(); ++it) { if (*it == ao) { _analysisobjects.erase(it); break; } } } const CentralityProjection & Analysis::declareCentrality(const SingleValueProjection &proj, string calAnaName, string calHistName, const string projName, bool increasing) { CentralityProjection cproj; // Select the centrality variable from option. Use REF as default. // Other selections are "GEN", "IMP" and "USR" (USR only in HEPMC 3). string sel = getOption("cent","REF"); - cout << "OPTION: " << sel << endl; set done; if ( sel == "REF" ) { Scatter2DPtr refscat; auto refmap = getRefData(calAnaName); if ( refmap.find(calHistName) != refmap.end() ) refscat = dynamic_pointer_cast(refmap.find(calHistName)->second); if ( !refscat ) { MSG_WARNING("No reference calibration histogram for " << "CentralityProjection " << projName << " found " << "(requested histogram " << calHistName << " in " << calAnaName << ")"); } else { MSG_INFO("Found calibration histogram " << sel << " " << refscat->path()); cproj.add(PercentileProjection(proj, refscat, increasing), sel); } } else if ( sel == "GEN" ) { Histo1DPtr genhist; string histpath = "/" + calAnaName + "/" + calHistName; for ( AnalysisObjectPtr ao : handler().getData(true) ) { - cout << "PATH " << ao->path() << " " << histpath << endl; if ( ao->path() == histpath ) genhist = dynamic_pointer_cast(ao); } - cout << "GG " << genhist << endl; if ( !genhist || genhist->numEntries() <= 1 ) { MSG_WARNING("No generated calibration histogram for " << "CentralityProjection " << projName << " found " << "(requested histogram " << calHistName << " in " << calAnaName << ")"); } else { MSG_INFO("Found calibration histogram " << sel << " " << genhist->path()); cproj.add(PercentileProjection(proj, genhist, increasing), sel); } } else if ( sel == "IMP" ) { Histo1DPtr imphist = getAnalysisObject(calAnaName, calHistName + "_IMP"); if ( !imphist || imphist->numEntries() <= 1 ) { MSG_WARNING("No impact parameter calibration histogram for " << "CentralityProjection " << projName << " found " << "(requested histogram " << calHistName << "_IMP in " << calAnaName << ")"); } else { MSG_INFO("Found calibration histogram " << sel << " " << imphist->path()); cproj.add(PercentileProjection(ImpactParameterProjection(), imphist, true), sel); } } else if ( sel == "USR" ) { #if HEPMC_VERSION_CODE >= 3000000 Histo1DPtr usrhist = getAnalysisObject(calAnaName, calHistName + "_USR"); if ( !usrhist || usrhist->numEntries() <= 1 ) { MSG_WARNING("No user-defined calibration histogram for " << "CentralityProjection " << projName << " found " << "(requested histogram " << calHistName << "_USR in " << calAnaName << ")"); continue; } else { MSG_INFO("Found calibration histogram " << sel << " " << usrhist->path()); cproj.add((UserCentEstimate(), usrhist, true), sel); } #else MSG_WARNING("UserCentEstimate is only available with HepMC3."); #endif } else if ( sel == "RAW" ) { #if HEPMC_VERSION_CODE >= 3000000 cproj.add(GeneratedCentrality(), sel); #else MSG_WARNING("GeneratedCentrality is only available with HepMC3."); #endif } else MSG_WARNING("'" << sel << "' is not a valid PercentileProjection tag."); if ( cproj.empty() ) MSG_WARNING("CentralityProjection " << projName << " did not contain any valid PercentileProjections."); return declare(cproj, projName); } } diff --git a/src/Core/AnalysisHandler.cc b/src/Core/AnalysisHandler.cc --- a/src/Core/AnalysisHandler.cc +++ b/src/Core/AnalysisHandler.cc @@ -1,409 +1,556 @@ // -*- C++ -*- #include "Rivet/Config/RivetCommon.hh" #include "Rivet/AnalysisHandler.hh" #include "Rivet/Analysis.hh" #include "Rivet/Tools/ParticleName.hh" #include "Rivet/Tools/BeamConstraint.hh" #include "Rivet/Tools/Logging.hh" #include "Rivet/Projections/Beam.hh" #include "YODA/IO.h" namespace Rivet { AnalysisHandler::AnalysisHandler(const string& runname) : _runname(runname), _eventcounter("/_EVTCOUNT"), _xs(NAN), _xserr(NAN), - _initialised(false), _ignoreBeams(false) + _initialised(false), _ignoreBeams(false), _dumpPeriod(0), _dumping(false) { } AnalysisHandler::~AnalysisHandler() { } Log& AnalysisHandler::getLog() const { return Log::getLog("Rivet.Analysis.Handler"); } void AnalysisHandler::init(const GenEvent& ge) { if (_initialised) throw UserError("AnalysisHandler::init has already been called: cannot re-initialize!"); setRunBeams(Rivet::beams(ge)); MSG_DEBUG("Initialising the analysis handler"); _eventcounter.reset(); // Check that analyses are beam-compatible, and remove those that aren't const size_t num_anas_requested = analysisNames().size(); vector anamestodelete; for (const AnaHandle a : _analyses) { if (!_ignoreBeams && !a->isCompatible(beams())) { //MSG_DEBUG(a->name() << " requires beams " << a->requiredBeams() << " @ " << a->requiredEnergies() << " GeV"); anamestodelete.push_back(a->name()); } } for (const string& aname : anamestodelete) { MSG_WARNING("Analysis '" << aname << "' is incompatible with the provided beams: removing"); removeAnalysis(aname); } if (num_anas_requested > 0 && analysisNames().empty()) { cerr << "All analyses were incompatible with the first event's beams\n" << "Exiting, since this probably wasn't intentional!" << endl; exit(1); } // Warn if any analysis' status is not unblemished for (const AnaHandle a : analyses()) { if (toUpper(a->status()) == "PRELIMINARY") { MSG_WARNING("Analysis '" << a->name() << "' is preliminary: be careful, it may change and/or be renamed!"); } else if (toUpper(a->status()) == "OBSOLETE") { MSG_WARNING("Analysis '" << a->name() << "' is obsolete: please update!"); } else if (toUpper(a->status()).find("UNVALIDATED") != string::npos) { MSG_WARNING("Analysis '" << a->name() << "' is unvalidated: be careful, it may be broken!"); } } // Initialize the remaining analyses for (AnaHandle a : _analyses) { MSG_DEBUG("Initialising analysis: " << a->name()); try { // Allow projection registration in the init phase onwards a->_allowProjReg = true; a->init(); //MSG_DEBUG("Checking consistency of analysis: " << a->name()); //a->checkConsistency(); } catch (const Error& err) { cerr << "Error in " << a->name() << "::init method: " << err.what() << endl; exit(1); } MSG_DEBUG("Done initialising analysis: " << a->name()); } _initialised = true; MSG_DEBUG("Analysis handler initialised"); } void AnalysisHandler::analyze(const GenEvent& ge) { // Call init with event as template if not already initialised if (!_initialised) init(ge); assert(_initialised); // Ensure that beam details match those from the first event (if we're checking beams) if ( !_ignoreBeams ) { const PdgIdPair beams = Rivet::beamIds(ge); const double sqrts = Rivet::sqrtS(ge); if (!compatible(beams, _beams) || !fuzzyEquals(sqrts, sqrtS())) { cerr << "Event beams mismatch: " << PID::toBeamsString(beams) << " @ " << sqrts/GeV << " GeV" << " vs. first beams " << this->beams() << " @ " << this->sqrtS()/GeV << " GeV" << endl; exit(1); } } // Create the Rivet event wrapper /// @todo Filter/normalize the event here Event event(ge); // Weights /// @todo Drop this / just report first weight when we support multiweight events _eventcounter.fill(event.weight()); MSG_DEBUG("Event #" << _eventcounter.numEntries() << " weight = " << event.weight()); // Cross-section #ifdef HEPMC_HAS_CROSS_SECTION if (ge.cross_section()) { _xs = ge.cross_section()->cross_section(); _xserr = ge.cross_section()->cross_section_error(); } #endif // Run the analyses for (AnaHandle a : _analyses) { MSG_TRACE("About to run analysis " << a->name()); try { a->analyze(event); } catch (const Error& err) { cerr << "Error in " << a->name() << "::analyze method: " << err.what() << endl; exit(1); } MSG_TRACE("Finished running analysis " << a->name()); } + + if ( _dumpPeriod > 0 && numEvents()%_dumpPeriod == 0 ) { + MSG_INFO("Dumping intermediate results to " << _dumpFile << "."); + _dumping = true; + finalize(); + _dumping = false; + writeData(_dumpFile); + } + } void AnalysisHandler::analyze(const GenEvent* ge) { if (ge == nullptr) { MSG_ERROR("AnalysisHandler received null pointer to GenEvent"); //throw Error("AnalysisHandler received null pointer to GenEvent"); } analyze(*ge); } void AnalysisHandler::finalize() { if (!_initialised) return; + + // First we make copies of all analysis objects. + map backupAOs; + for (auto ao : getData(false, true) ) + backupAOs[ao->path()] = AnalysisObjectPtr(ao->newclone()); + + // Now we run the (re-entrant) finalize() functions for all analyses. MSG_INFO("Finalising analyses"); for (AnaHandle a : _analyses) { a->setCrossSection(_xs); try { - a->finalize(); + if ( !_dumping || a->info().reentrant() ) a->finalize(); + else if ( _dumping ) + MSG_INFO("Skipping periodic dump of " << a->name() + << " as it is not declared reentrant."); } catch (const Error& err) { cerr << "Error in " << a->name() << "::finalize method: " << err.what() << endl; exit(1); } } + // Now we copy all analysis objects to the list of finalized + // ones, and restore the value to their original ones. + _finalizedAOs.clear(); + for ( auto ao : getData() ) + _finalizedAOs.push_back(AnalysisObjectPtr(ao->newclone())); + for ( auto ao : getData(false, true) ) { + auto aoit = backupAOs.find(ao->path()); + if ( aoit == backupAOs.end() ) { + AnaHandle ana = analysis(split(ao->path(), "/")[0]); + if ( ana ) ana->removeAnalysisObject(ao->path()); + } else + copyao(aoit->second, ao); + } + // Print out number of events processed const int nevts = _eventcounter.numEntries(); MSG_INFO("Processed " << nevts << " event" << (nevts != 1 ? "s" : "")); // // Delete analyses // MSG_DEBUG("Deleting analyses"); // _analyses.clear(); // Print out MCnet boilerplate cout << endl; cout << "The MCnet usage guidelines apply to Rivet: see http://www.montecarlonet.org/GUIDELINES" << endl; cout << "Please acknowledge plots made with Rivet analyses, and cite arXiv:1003.0694 (http://arxiv.org/abs/1003.0694)" << endl; } AnalysisHandler& AnalysisHandler::addAnalysis(const string& analysisname, std::map pars) { // Make an option handle. std::string parHandle = ""; for (map::iterator par = pars.begin(); par != pars.end(); ++par) { parHandle +=":"; parHandle += par->first + "=" + par->second; } return addAnalysis(analysisname + parHandle); } AnalysisHandler& AnalysisHandler::addAnalysis(const string& analysisname) { // Check for a duplicate analysis /// @todo Might we want to be able to run an analysis twice, with different params? /// Requires avoiding histo tree clashes, i.e. storing the histos on the analysis objects. string ananame = analysisname; vector anaopt = split(analysisname, ":"); if ( anaopt.size() > 1 ) ananame = anaopt[0]; AnaHandle analysis( AnalysisLoader::getAnalysis(ananame) ); if (analysis.get() != 0) { // < Check for null analysis. MSG_DEBUG("Adding analysis '" << analysisname << "'"); map opts; for ( int i = 1, N = anaopt.size(); i < N; ++i ) { vector opt = split(anaopt[i], "="); if ( opt.size() != 2 ) { MSG_WARNING("Error in option specification. Skipping analysis " << analysisname); return *this; } if ( !analysis->info().validOption(opt[0], opt[1]) ) { MSG_WARNING("Cannot set option '" << opt[0] << "' to '" << opt[1] << "'. Skipping analysis " << analysisname); return *this; } opts[opt[0]] = opt[1]; } for ( auto opt: opts) { analysis->_options[opt.first] = opt.second; analysis->_optstring += ":" + opt.first + "=" + opt.second; } for (const AnaHandle& a : _analyses) { - cout << a->name() << " " << analysis->name() << endl; if (a->name() == analysis->name() ) { MSG_WARNING("Analysis '" << analysisname << "' already registered: skipping duplicate"); return *this; } } analysis->_analysishandler = this; _analyses.insert(analysis); } else { MSG_WARNING("Analysis '" << analysisname << "' not found."); } // MSG_WARNING(_analyses.size()); // for (const AnaHandle& a : _analyses) MSG_WARNING(a->name()); return *this; } AnalysisHandler& AnalysisHandler::removeAnalysis(const string& analysisname) { std::shared_ptr toremove; for (const AnaHandle a : _analyses) { if (a->name() == analysisname) { toremove = a; break; } } if (toremove.get() != 0) { MSG_DEBUG("Removing analysis '" << analysisname << "'"); _analyses.erase(toremove); } return *this; } ///////////////////////////// -/* Old addData which did not add orphaned preloads. + void AnalysisHandler::addData(const std::vector& aos) { for (const AnalysisObjectPtr ao : aos) { - const string path = ao->path(); + string path = ao->path(); + if ( path.substr(0, 5) != "/RAW/" ) { + _orphanedPreloads.push_back(ao); + continue; + } + + path = path.substr(4); + ao->setPath(path); if (path.size() > 1) { // path > "/" try { const string ananame = split(path, "/")[0]; AnaHandle a = analysis(ananame); a->addAnalysisObject(ao); /// @todo Need to statistically merge... } catch (const Error& e) { - MSG_WARNING(e.what()); + MSG_TRACE("Adding analysis object " << path << + " to the list of orphans."); + _orphanedPreloads.push_back(ao); } } } } -*/ - void AnalysisHandler::addData(const std::vector& aos) { - for (const AnalysisObjectPtr ao : aos) { - const string path = ao->path(); - if (path.size() > 1) { // path > "/" - try { - const string ananame = split(path, "/")[0]; - MSG_TRACE("Preloading analysis object " << path); - AnaHandle a = analysis(ananame); - a->addAnalysisObject(ao); /// @todo Need to statistically merge... - } catch (const Error& e) { - MSG_TRACE("Adding analysis object " << path << - " to the list of orphans."); - _orphanedPreloads.push_back(ao); + + void AnalysisHandler:: + mergeYodas(const vector & aofiles, bool equiv) { + vector< vector > aosv; + vector xsecs; + vector xsecerrs; + vector sows; + set ananames; + + // First scan all files and extract analysis objects and add the + // corresponding anayses.. + for ( auto file : aofiles ) { + Scatter1DPtr xsec; + CounterPtr sow; + + // For each file make sure that cross section and sum-of-weights + // objects are present and stor all RAW ones in a vector; + vector aos; + _eventcounter.reset(); + try { + /// @todo Use new YODA SFINAE to fill the smart ptr vector directly + vector aos_raw; + YODA::read(file, aos_raw); + for (AnalysisObject* aor : aos_raw) { + AnalysisObjectPtr ao = AnalysisObjectPtr(aor); + if ( ao->path().substr(0, 5) != "/RAW/" ) continue; + ao->setPath(ao->path().substr(4)); + if ( ao->path() == "/_XSEC" ) + xsec = dynamic_pointer_cast(ao); + else if ( ao->path() == "/_EVTCOUNT" ) + sow = dynamic_pointer_cast(ao); + else { + string ananame = split(ao->path(), "/")[0]; + if ( ananames.insert(ananame).second ) addAnalysis(ananame); + aos.push_back(ao); + } } + if ( !xsec || !sow ) { + MSG_ERROR( "Error in AnalysisHandler::mergeYodas: The file " << file + << " did not contain weights and cross section info."); + exit(1); + } + xsecs.push_back(xsec->point(0).x()); + xsecerrs.push_back(sqr(xsec->point(0).xErrAvg())); + _eventcounter += *sow; + aosv.push_back(aos); + } catch (...) { //< YODA::ReadError& + throw UserError("Unexpected error in reading file: " + file); } } + + // Now calculate the scale to be applied for all bins in a file + // and get the common cross section and sum of weights. + _xs = _xserr = 0.0; + for ( int i = 0, N = sows.size(); i < N; ++i ) { + double effnent = sows[i]->effNumEntries(); + _xs += (equiv? effnent: 1.0)*xsecs[i]; + _xserr += (equiv? sqr(effnent): 1.0)*xsecerrs[i]; + } + + vector scales(sows.size(), 1.0); + if ( equiv ) { + _xs /= _eventcounter.effNumEntries(); + _xserr = sqrt(_xserr)/_eventcounter.effNumEntries(); + } else { + _xserr = sqrt(_xserr); + for ( int i = 0, N = sows.size(); i < N; ++i ) + scales[i] = (_eventcounter.sumW()/sows[i]->sumW())*(xsecs[i]/_xs); + } + + // Initialize the analyses allowing them to book analysis objects. + for (AnaHandle a : _analyses) { + MSG_DEBUG("Initialising analysis: " << a->name()); + if ( !a->info().reentrant() ) + MSG_WARNING("Analysis " << a->name() << " has not been validated to have " + << "a reentrant finalize method. The result is unpredictable."); + try { + // Allow projection registration in the init phase onwards + a->_allowProjReg = true; + a->init(); + //MSG_DEBUG("Checking consistency of analysis: " << a->name()); + //a->checkConsistency(); + } catch (const Error& err) { + cerr << "Error in " << a->name() << "::init method: " << err.what() << endl; + exit(1); + } + MSG_DEBUG("Done initialising analysis: " << a->name()); + } + _initialised = true; + + // Get a list of all anaysis objects to handle. + map current; + for ( auto ao : getData(false, true) ) current[ao->path()] = ao; + + // Go through all objects to be merged and add them to current + // after appropriate scaling. + for ( int i = 0, N = aosv.size(); i < N; ++i) + for ( auto ao : aosv[i] ) { + if ( ao->path() == "/_XSEC" || ao->path() == "_EVTCOUNT" ) continue; + auto aoit = current.find(ao->path()); + if ( aoit == current.end() ) { + MSG_WARNING("" << ao->path() << " was not properly booked."); + continue; + } + if ( !addaos(aoit->second, ao, scales[i]) ) + MSG_WARNING("Cannot merge objects with path " << ao->path() + <<" of type " << ao->annotation("Type") ); + } + + // Now we can simply finalize() the analysis, leaving the + // controlling program to write it out some yoda-file. + finalize(); + } + void AnalysisHandler::readData(const string& filename) { vector aos; try { /// @todo Use new YODA SFINAE to fill the smart ptr vector directly vector aos_raw; YODA::read(filename, aos_raw); for (AnalysisObject* aor : aos_raw) aos.push_back(AnalysisObjectPtr(aor)); } catch (...) { //< YODA::ReadError& throw UserError("Unexpected error in reading file: " + filename); } if (!aos.empty()) addData(aos); } - vector AnalysisHandler::getData(bool includeorphans) const { + vector AnalysisHandler:: + getData(bool includeorphans, bool includetmps) const { vector rtn; // Event counter rtn.push_back( make_shared(_eventcounter) ); // Cross-section + err as scatter YODA::Scatter1D::Points pts; pts.insert(YODA::Point1D(_xs, _xserr)); rtn.push_back( make_shared(pts, "/_XSEC") ); // Analysis histograms for (const AnaHandle a : analyses()) { vector aos = a->analysisObjects(); // MSG_WARNING(a->name() << " " << aos.size()); for (const AnalysisObjectPtr ao : aos) { // Exclude paths from final write-out if they contain a "TMP" layer (i.e. matching "/TMP/") /// @todo This needs to be much more nuanced for re-entrant histogramming - if (ao->path().find("/TMP/") != string::npos) continue; + if ( !includetmps && ao->path().find("/TMP/" ) != string::npos) continue; rtn.push_back(ao); } } // Sort histograms alphanumerically by path before write-out sort(rtn.begin(), rtn.end(), [](AnalysisObjectPtr a, AnalysisObjectPtr b) {return a->path() < b->path();}); if ( includeorphans ) rtn.insert(rtn.end(), _orphanedPreloads.begin(), _orphanedPreloads.end()); return rtn; } void AnalysisHandler::writeData(const string& filename) const { - const vector aos = getData(); + vector out = _finalizedAOs; + out.reserve(2*out.size()); + vector aos = getData(false, true); + for ( auto ao : aos ) { + ao = AnalysisObjectPtr(ao->newclone()); + ao->setPath("/RAW" + ao->path()); + out.push_back(ao); + } + try { - YODA::write(filename, aos.begin(), aos.end()); + YODA::write(filename, out.begin(), out.end()); } catch (...) { //< YODA::WriteError& throw UserError("Unexpected error in writing file: " + filename); } } std::vector AnalysisHandler::analysisNames() const { std::vector rtn; for (AnaHandle a : _analyses) { rtn.push_back(a->name()); } return rtn; } const AnaHandle AnalysisHandler::analysis(const std::string& analysisname) const { for (const AnaHandle a : analyses()) if (a->name() == analysisname) return a; throw Error("No analysis named '" + analysisname + "' registered in AnalysisHandler"); } AnalysisHandler& AnalysisHandler::addAnalyses(const std::vector& analysisnames) { for (const string& aname : analysisnames) { //MSG_DEBUG("Adding analysis '" << aname << "'"); addAnalysis(aname); } return *this; } AnalysisHandler& AnalysisHandler::removeAnalyses(const std::vector& analysisnames) { for (const string& aname : analysisnames) { removeAnalysis(aname); } return *this; } bool AnalysisHandler::needCrossSection() const { bool rtn = false; for (const AnaHandle a : _analyses) { if (!rtn) rtn = a->needsCrossSection(); if (rtn) break; } return rtn; } AnalysisHandler& AnalysisHandler::setCrossSection(double xs) { _xs = xs; return *this; } bool AnalysisHandler::hasCrossSection() const { return (!std::isnan(crossSection())); } AnalysisHandler& AnalysisHandler::addAnalysis(Analysis* analysis) { analysis->_analysishandler = this; _analyses.insert(AnaHandle(analysis)); return *this; } PdgIdPair AnalysisHandler::beamIds() const { return Rivet::beamIds(beams()); } double AnalysisHandler::sqrtS() const { return Rivet::sqrtS(beams()); } void AnalysisHandler::setIgnoreBeams(bool ignore) { _ignoreBeams=ignore; } } diff --git a/src/Core/AnalysisInfo.cc b/src/Core/AnalysisInfo.cc --- a/src/Core/AnalysisInfo.cc +++ b/src/Core/AnalysisInfo.cc @@ -1,182 +1,183 @@ #include "Rivet/Config/RivetCommon.hh" #include "Rivet/AnalysisInfo.hh" #include "Rivet/Tools/RivetPaths.hh" #include "Rivet/Tools/Utils.hh" #include "Rivet/Tools/Logging.hh" #include "yaml-cpp/yaml.h" #include #include #include #ifdef YAML_NAMESPACE #define YAML YAML_NAMESPACE #endif namespace Rivet { namespace { Log& getLog() { return Log::getLog("Rivet.AnalysisInfo"); } } /// Static factory method unique_ptr AnalysisInfo::make(const std::string& ananame) { // Returned AI, in semi-null state unique_ptr ai( new AnalysisInfo ); ai->_beams += make_pair(PID::ANY, PID::ANY); ai->_name = ananame; /// If no ana data file found, return null AI const string datapath = findAnalysisInfoFile(ananame + ".info"); if (datapath.empty()) { MSG_DEBUG("No datafile " << ananame + ".info found"); return ai; } // Read data from YAML document MSG_DEBUG("Reading analysis data from " << datapath); YAML::Node doc; try { doc = YAML::LoadFile(datapath); } catch (const YAML::ParserException& ex) { MSG_ERROR("Parse error when reading analysis data from " << datapath << " (" << ex.what() << ")"); return ai; } #define THROW_INFOERR(KEY) throw InfoError("Problem in info parsing while accessing key " + string(KEY) + " in file " + datapath) // Simple scalars (test for nullness before casting) #define TRY_GETINFO(KEY, VAR) try { if (doc[KEY] && !doc[KEY].IsNull()) ai->_ ## VAR = doc[KEY].as(); } catch (...) { THROW_INFOERR(KEY); } TRY_GETINFO("Name", name); TRY_GETINFO("Summary", summary); TRY_GETINFO("Status", status); TRY_GETINFO("RunInfo", runInfo); TRY_GETINFO("Description", description); TRY_GETINFO("Experiment", experiment); TRY_GETINFO("Collider", collider); TRY_GETINFO("Year", year); TRY_GETINFO("Luminosity_fb", luminosityfb); TRY_GETINFO("SpiresID", spiresId); TRY_GETINFO("InspireID", inspireId); TRY_GETINFO("BibKey", bibKey); TRY_GETINFO("BibTeX", bibTeX); #undef TRY_GETINFO // Sequences (test the seq *and* each entry for nullness before casting) #define TRY_GETINFO_SEQ(KEY, VAR) try { \ if (doc[KEY] && !doc[KEY].IsNull()) { \ const YAML::Node& VAR = doc[KEY]; \ for (size_t i = 0; i < VAR.size(); ++i) \ if (!VAR[i].IsNull()) ai->_ ## VAR += VAR[i].as(); \ } } catch (...) { THROW_INFOERR(KEY); } TRY_GETINFO_SEQ("Authors", authors); TRY_GETINFO_SEQ("References", references); TRY_GETINFO_SEQ("ToDo", todos); TRY_GETINFO_SEQ("Keywords", keywords); TRY_GETINFO_SEQ("Options", options); #undef TRY_GETINFO_SEQ // Build the option map ai->buildOptionMap(); // A boolean with some name flexibility try { if (doc["NeedsCrossSection"]) ai->_needsCrossSection = doc["NeedsCrossSection"].as(); else if (doc["NeedCrossSection"]) ai->_needsCrossSection = doc["NeedCrossSection"].as(); + if (doc["Reentrant"]) ai->_reentrant = doc["Reentrant"].as(); } catch (...) { - THROW_INFOERR("NeedsCrossSection|NeedCrossSection"); + THROW_INFOERR("NeedsCrossSection|NeedCrossSection|Reentrant"); } // Beam particle identities try { if (doc["Beams"]) { const YAML::Node& beams = doc["Beams"]; vector beam_pairs; if (beams.size() == 2 && beams[0].IsScalar() && beams[0].IsScalar()) { beam_pairs += PID::make_pdgid_pair(beams[0].as(), beams[1].as()); } else { for (size_t i = 0; i < beams.size(); ++i) { const YAML::Node& bp = beams[i]; if (bp.size() != 2 || !bp[0].IsScalar() || !bp[0].IsScalar()) throw InfoError("Beam ID pairs have to be either a 2-tuple or a list of 2-tuples of particle names"); beam_pairs += PID::make_pdgid_pair(bp[0].as(), bp[1].as()); } } ai->_beams = beam_pairs; } } catch (...) { THROW_INFOERR("Beams"); } // Beam energies try { if (doc["Energies"]) { vector< pair > beam_energy_pairs; for (size_t i = 0; i < doc["Energies"].size(); ++i) { const YAML::Node& be = doc["Energies"][i]; if (be.IsScalar()) { // If beam energy is a scalar, then assume symmetric beams each with half that energy beam_energy_pairs += make_pair(be.as()/2.0, be.as()/2.0); } else if (be.IsSequence()) { if (be.size() != 2) throw InfoError("Beam energies have to be a list of either numbers or pairs of numbers"); beam_energy_pairs += make_pair(be[0].as(), be[1].as()); } else { throw InfoError("Beam energies have to be a list of either numbers or pairs of numbers"); } } ai->_energies = beam_energy_pairs; } } catch (...) { THROW_INFOERR("Energies"); } #undef THROW_INFOERR MSG_TRACE("AnalysisInfo pointer = " << ai.get()); return ai; } string toString(const AnalysisInfo& ai) { std::stringstream ss; ss << ai.name(); ss << " - " << ai.summary(); // ss << " - " << ai.beams(); // ss << " - " << ai.energies(); ss << " (" << ai.status() << ")"; return ss.str(); } void AnalysisInfo::buildOptionMap() { _optionmap.clear(); for ( auto opttag : _options ) { std::vector optv = split(opttag, "="); std::string optname = optv[0]; for ( auto opt : split(optv[1], ",") ) _optionmap[optname].insert(opt); } } bool AnalysisInfo::validOption(std::string key, std::string val) const { auto opt = _optionmap.find(key); // The option is required to be defined in the .info file. if ( opt == _optionmap.end() ) return false; // If the selection option is among the range of given options, // we are fine. if ( opt->second.find(val) != opt->second.end() ) return true; // Wild card selection option for value types is #. if ( opt->second.size() == 1 && *opt->second.begin() == "#" ) { std::istringstream ss(val); double test; if ( ss >> test ) return true; } // Wild card selection option for any type is *. if ( opt->second.size() == 1 && *opt->second.begin() == "*" ) return true; return false; } } diff --git a/src/Tools/Makefile.am b/src/Tools/Makefile.am --- a/src/Tools/Makefile.am +++ b/src/Tools/Makefile.am @@ -1,21 +1,22 @@ SUBDIRS = Nsubjettiness noinst_LTLIBRARIES = libRivetTools.la libRivetTools_la_SOURCES = \ BinnedHistogram.cc \ Cuts.cc \ JetUtils.cc \ Random.cc \ Logging.cc \ ParticleUtils.cc \ ParticleName.cc \ + Percentile.cc \ RivetYODA.cc \ RivetMT2.cc \ RivetPaths.cc \ Utils.cc \ binreloc.c dist_noinst_HEADERS = binreloc.h lester_mt2_bisect.hh libRivetTools_la_CPPFLAGS = $(AM_CPPFLAGS) -DENABLE_BINRELOC -DDEFAULTDATADIR=\"$(datadir)\" -DDEFAULTLIBDIR=\"$(libdir)\" diff --git a/src/Tools/Percentile.cc b/src/Tools/Percentile.cc new file mode 100644 --- /dev/null +++ b/src/Tools/Percentile.cc @@ -0,0 +1,20 @@ +#include "Rivet/Tools/RivetYODA.hh" +#include "Rivet/Tools/Percentile.hh" +#include "Rivet/Analysis.hh" + +using namespace std; + +namespace Rivet { + +void PercentileBase::selectBins(const Event & ev) { + const CentralityProjection & proj = + _ana->apply(ev, _projName); + _activeBins.clear(); + const int nCent = _cent.size(); + for (int iCent = 0; iCent < nCent; ++iCent) { + if ( inRange(proj(), _cent[iCent]) ) + _activeBins.push_back(iCent); + } +} + +} diff --git a/src/Tools/RivetYODA.cc b/src/Tools/RivetYODA.cc --- a/src/Tools/RivetYODA.cc +++ b/src/Tools/RivetYODA.cc @@ -1,48 +1,71 @@ #include "Rivet/Config/RivetCommon.hh" #include "Rivet/Tools/RivetYODA.hh" #include "Rivet/Tools/RivetPaths.hh" #include "YODA/ReaderYODA.h" #include "YODA/ReaderAIDA.h" using namespace std; namespace Rivet { string getDatafilePath(const string& papername) { /// Try to find YODA otherwise fall back to try AIDA const string path1 = findAnalysisRefFile(papername + ".yoda"); if (!path1.empty()) return path1; const string path2 = findAnalysisRefFile(papername + ".aida"); if (!path2.empty()) return path2; throw Rivet::Error("Couldn't find ref data file '" + papername + ".yoda" + " in data path, '" + getRivetDataPath() + "', or '.'"); } map getRefData(const string& papername) { const string datafile = getDatafilePath(papername); // Make an appropriate data file reader and read the data objects /// @todo Remove AIDA support some day... YODA::Reader& reader = (datafile.find(".yoda") != string::npos) ? \ YODA::ReaderYODA::create() : YODA::ReaderAIDA::create(); vector aovec; reader.read(datafile, aovec); // Return value, to be populated map rtn; foreach ( YODA::AnalysisObject* ao, aovec ) { AnalysisObjectPtr refdata(ao); if (!refdata) continue; const string plotpath = refdata->path(); // Split path at "/" and only return the last field, i.e. the histogram ID const size_t slashpos = plotpath.rfind("/"); const string plotname = (slashpos+1 < plotpath.size()) ? plotpath.substr(slashpos+1) : ""; rtn[plotname] = refdata; } return rtn; } + bool copyao(AnalysisObjectPtr src, AnalysisObjectPtr dst) { + for (const std::string& a : src->annotations()) + dst->setAnnotation(a, src->annotation(a)); + if ( aocopy(src,dst) ) return true; + if ( aocopy(src,dst) ) return true; + if ( aocopy(src,dst) ) return true; + if ( aocopy(src,dst) ) return true; + if ( aocopy(src,dst) ) return true; + if ( aocopy(src,dst) ) return true; + if ( aocopy(src,dst) ) return true; + if ( aocopy(src,dst) ) return true; + return false; + } + + bool addaos(AnalysisObjectPtr dst, AnalysisObjectPtr src, double scale) { + if ( aoadd(dst,src,scale) ) return true; + if ( aoadd(dst,src,scale) ) return true; + if ( aoadd(dst,src,scale) ) return true; + if ( aoadd(dst,src,scale) ) return true; + if ( aoadd(dst,src,scale) ) return true; + return false; + } + }