]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/FORWARD/analysis2/OtherData.C
Fixes
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / OtherData.C
index fee20fb8a9d4bb8ab7c9c00e0e92a418628bb75b..6bffe59d061cde9628bee75cfa59cab65fcc0a1a 100644 (file)
@@ -1,3 +1,14 @@
+//____________________________________________________________________
+/**
+ * @defgroup pwg2_forward_otherdata  External data 
+ *
+ * @ingroup pwg2_forward_scripts
+ */
+/**
+ * @file 
+ * 
+ * @ingroup pwg2_forward_script_otherdata
+ */
 #include <TGraphAsymmErrors.h>
 #include <TMultiGraph.h>
 #include <TStyle.h>
 #include <TCanvas.h>
 #include <TLegend.h>
 
-//____________________________________________________________________
-/**
- * @defgroup pwg2_forward_analysis_otherdata  External data 
- *
- * @ingroup pwg2_forward_analysis_scripts
- */
 //____________________________________________________________________
 /**
  * Values used 
  * 
- * @ingroup pwg2_forward_analysis_otherdata 
+ * @ingroup pwg2_forward_otherdata 
  */
 enum { 
+  UA5, 
+  CMS, 
+  ALICE, 
+  PYTHIA,
+  INEL, 
+  INELGt0, 
+  NSD
+};
+enum { 
+  /** Style used for UA5 data */
+  UA5Style   = 21, 
+  /** Style used for CMS data */
+  CMSStyle   = 29, 
+  /** Style used for ALICE published data */
+  ALICEStyle = 27,
+  /** Style used for Pythia data */
+  PYTHIAStyle = 28,
   /** Color used for UA5 data */
   UA5Color   = kBlue+1,
+  /** Color used for Pytia data */
+  PYTHIAColor = kGray+2,
   /** Color used for CMS data */
   CMSColor   = kGreen+1,
   /** Color used for ALICE data */
-  ALICEColor = kMagenta+1,
+  ALICEColor = kMagenta+1
+}; 
+enum { 
   /** Marker style INEL data */
-  INELStyle  = 20,
+  INELStyle   = 22,
   /** Marker style INEL>0 data */
-  INELGtStyle= 22,
+  INELGt0Style= 29,
   /** Marker style NSD data */
-  NSDStyle   = 21,
-  /** Colour offset for mirror data */
+  NSDStyle    = 23,
+  /** Color used for UA5 data */
+  INELColor   = kBlue+1,
+  /** Color used for CMS data */
+  INELGt0Color = kGreen+1,
+  /** Color used for ALICE data */
+  NSDColor     = kMagenta+1
+};
+enum {
+  /** Style offset for mirror data */
   MirrorOff  = 4
 };
 
 //____________________________________________________________________
 /** 
- * Set graph attributes 
+ * Set graph attributes based on trigger type and experiment. 
  * 
  * @param g        Graph
- * @param marker   Marker style 
- * @param color    Marker and line color
+ * @param trig     Trigger (INEL, INEL>0, NSD)
+ * @param exp      Experiment 
+ * @param mirror   True if mirrored data 
  * @param name     Name of graph 
  * @param title    Title of graph 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 void
-SetGraphAttributes(TGraph* g, Int_t marker, Int_t color,
+SetGraphAttributes(TGraph* g, Int_t trig, Int_t exp, bool mirror,
                   const Char_t* name, const Char_t* title)
 {
+  Int_t color = 0;
+  switch (exp) { 
+  case UA5:    color = UA5Color;    break;
+  case CMS:    color = CMSColor;    break;
+  case ALICE:  color = ALICEColor;  break;
+  case PYTHIA: color = PYTHIAColor; break;
+  }
+  Int_t style = 0;
+  switch (exp) { 
+  case UA5:    style = UA5Style;    break;
+  case CMS:    style = CMSStyle;    break;
+  case ALICE:  style = ALICEStyle;  break;
+  case PYTHIA: style = PYTHIAStyle; break;
+  }
+  Float_t size = g->GetMarkerSize();
+  switch (style) {
+  case 21: 
+  case 25: size *= 0.8; break;
+  case 27: size *= 1.4; break;
+  }
+    
+  if (mirror) style += MirrorOff;
+
   g->SetName(name);
   g->SetTitle(title);
-  g->SetMarkerStyle(marker);
+  g->SetMarkerStyle(style);
+  g->SetMarkerSize(size);
   g->SetMarkerColor(color);
   g->SetLineColor(color);
   g->SetFillColor(0);
@@ -62,6 +121,431 @@ SetGraphAttributes(TGraph* g, Int_t marker, Int_t color,
   g->GetHistogram()->SetYTitle("#frac{1}{N} #frac{dN_{ch}}{#eta}");
 }
 
+//____________________________________________________________________
+TGraphAsymmErrors*
+Pythia900INEL()
+{
+   
+  TGraphAsymmErrors *gre = new TGraphAsymmErrors(100);
+  SetGraphAttributes(gre, INEL, PYTHIA, false, "pythia900Inel",
+                    "Pythia INEL");
+  gre->SetPoint(0,-3.95,1.78199);
+  gre->SetPointError(0, 0, 0, 0.0145305, 0.0145305);
+  gre->SetPoint(1,-3.85,1.85486);
+  gre->SetPointError(1,0,0,0.0148246,0.0148246);
+  gre->SetPoint(2,-3.75,1.93886);
+  gre->SetPointError(2,0,0,0.0151566,0.0151566);
+  gre->SetPoint(3,-3.65,1.96055);
+  gre->SetPointError(3,0,0,0.0152411,0.0152411);
+  gre->SetPoint(4,-3.55,1.98756);
+  gre->SetPointError(4,0,0,0.0153458,0.0153458);
+  gre->SetPoint(5,-3.45,2.02844);
+  gre->SetPointError(5,0,0,0.0155028,0.0155028);
+  gre->SetPoint(6,-3.35,2.09585);
+  gre->SetPointError(6,0,0,0.0157583,0.0157583);
+  gre->SetPoint(7,-3.25,2.13732);
+  gre->SetPointError(7,0,0,0.0159134,0.0159134);
+  gre->SetPoint(8,-3.15,2.1686);
+  gre->SetPointError(8,0,0,0.0160295,0.0160295);
+  gre->SetPoint(9,-3.05,2.25296);
+  gre->SetPointError(9,0,0,0.0163383,0.0163383);
+  gre->SetPoint(10,-2.95,2.29265);
+  gre->SetPointError(10,0,0,0.0164815,0.0164815);
+  gre->SetPoint(11,-2.85,2.34799);
+  gre->SetPointError(11,0,0,0.0166792,0.0166792);
+  gre->SetPoint(12,-2.75,2.35652);
+  gre->SetPointError(12,0,0,0.0167095,0.0167095);
+  gre->SetPoint(13,-2.65,2.40545);
+  gre->SetPointError(13,0,0,0.0168821,0.0168821);
+  gre->SetPoint(14,-2.55,2.43934);
+  gre->SetPointError(14,0,0,0.0170006,0.0170006);
+  gre->SetPoint(15,-2.45,2.45735);
+  gre->SetPointError(15,0,0,0.0170633,0.0170633);
+  gre->SetPoint(16,-2.35,2.48945);
+  gre->SetPointError(16,0,0,0.0171744,0.0171744);
+  gre->SetPoint(17,-2.25,2.51635);
+  gre->SetPointError(17,0,0,0.0172669,0.0172669);
+  gre->SetPoint(18,-2.15,2.55047);
+  gre->SetPointError(18,0,0,0.0173836,0.0173836);
+  gre->SetPoint(19,-2.05,2.58021);
+  gre->SetPointError(19,0,0,0.0174846,0.0174846);
+  gre->SetPoint(20,-1.95,2.58732);
+  gre->SetPointError(20,0,0,0.0175087,0.0175087);
+  gre->SetPoint(21,-1.85,2.60095);
+  gre->SetPointError(21,0,0,0.0175547,0.0175547);
+  gre->SetPoint(22,-1.75,2.59941);
+  gre->SetPointError(22,0,0,0.0175495,0.0175495);
+  gre->SetPoint(23,-1.65,2.63021);
+  gre->SetPointError(23,0,0,0.0176532,0.0176532);
+  gre->SetPoint(24,-1.55,2.61043);
+  gre->SetPointError(24,0,0,0.0175867,0.0175867);
+  gre->SetPoint(25,-1.45,2.61363);
+  gre->SetPointError(25,0,0,0.0175975,0.0175975);
+  gre->SetPoint(26,-1.35,2.60829);
+  gre->SetPointError(26,0,0,0.0175795,0.0175795);
+  gre->SetPoint(27,-1.25,2.61434);
+  gre->SetPointError(27,0,0,0.0175999,0.0175999);
+  gre->SetPoint(28,-1.15,2.61327);
+  gre->SetPointError(28,0,0,0.0175963,0.0175963);
+  gre->SetPoint(29,-1.05,2.57145);
+  gre->SetPointError(29,0,0,0.0174549,0.0174549);
+  gre->SetPoint(30,-0.95,2.55723);
+  gre->SetPointError(30,0,0,0.0174066,0.0174066);
+  gre->SetPoint(31,-0.85,2.57879);
+  gre->SetPointError(31,0,0,0.0174798,0.0174798);
+  gre->SetPoint(32,-0.75,2.516);
+  gre->SetPointError(32,0,0,0.0172657,0.0172657);
+  gre->SetPoint(33,-0.65,2.53709);
+  gre->SetPointError(33,0,0,0.0173379,0.0173379);
+  gre->SetPoint(34,-0.55,2.51197);
+  gre->SetPointError(34,0,0,0.0172519,0.0172519);
+  gre->SetPoint(35,-0.45,2.44052);
+  gre->SetPointError(35,0,0,0.0170047,0.0170047);
+  gre->SetPoint(36,-0.35,2.44882);
+  gre->SetPointError(36,0,0,0.0170336,0.0170336);
+  gre->SetPoint(37,-0.25,2.45308);
+  gre->SetPointError(37,0,0,0.0170484,0.0170484);
+  gre->SetPoint(38,-0.15,2.4622);
+  gre->SetPointError(38,0,0,0.0170801,0.0170801);
+  gre->SetPoint(39,-0.05,2.45735);
+  gre->SetPointError(39,0,0,0.0170633,0.0170633);
+  gre->SetPoint(40,0.05,2.49254);
+  gre->SetPointError(40,0,0,0.017185,0.017185);
+  gre->SetPoint(41,0.15,2.49479);
+  gre->SetPointError(41,0,0,0.0171928,0.0171928);
+  gre->SetPoint(42,0.25,2.49289);
+  gre->SetPointError(42,0,0,0.0171862,0.0171862);
+  gre->SetPoint(43,0.35,2.4628);
+  gre->SetPointError(43,0,0,0.0170822,0.0170822);
+  gre->SetPoint(44,0.45,2.51422);
+  gre->SetPointError(44,0,0,0.0172596,0.0172596);
+  gre->SetPoint(45,0.55,2.51268);
+  gre->SetPointError(45,0,0,0.0172543,0.0172543);
+  gre->SetPoint(46,0.65,2.51066);
+  gre->SetPointError(46,0,0,0.0172474,0.0172474);
+  gre->SetPoint(47,0.75,2.53661);
+  gre->SetPointError(47,0,0,0.0173363,0.0173363);
+  gre->SetPoint(48,0.85,2.54479);
+  gre->SetPointError(48,0,0,0.0173642,0.0173642);
+  gre->SetPoint(49,0.95,2.55391);
+  gre->SetPointError(49,0,0,0.0173953,0.0173953);
+  gre->SetPoint(50,1.05,2.5872);
+  gre->SetPointError(50,0,0,0.0175083,0.0175083);
+  gre->SetPoint(51,1.15,2.60344);
+  gre->SetPointError(51,0,0,0.0175631,0.0175631);
+  gre->SetPoint(52,1.25,2.60616);
+  gre->SetPointError(52,0,0,0.0175723,0.0175723);
+  gre->SetPoint(53,1.35,2.62156);
+  gre->SetPointError(53,0,0,0.0176242,0.0176242);
+  gre->SetPoint(54,1.45,2.61173);
+  gre->SetPointError(54,0,0,0.0175911,0.0175911);
+  gre->SetPoint(55,1.55,2.60415);
+  gre->SetPointError(55,0,0,0.0175655,0.0175655);
+  gre->SetPoint(56,1.65,2.60723);
+  gre->SetPointError(56,0,0,0.0175759,0.0175759);
+  gre->SetPoint(57,1.75,2.60427);
+  gre->SetPointError(57,0,0,0.0175659,0.0175659);
+  gre->SetPoint(58,1.85,2.56765);
+  gre->SetPointError(58,0,0,0.017442,0.017442);
+  gre->SetPoint(59,1.95,2.58602);
+  gre->SetPointError(59,0,0,0.0175043,0.0175043);
+  gre->SetPoint(60,2.05,2.55936);
+  gre->SetPointError(60,0,0,0.0174138,0.0174138);
+  gre->SetPoint(61,2.15,2.54858);
+  gre->SetPointError(61,0,0,0.0173771,0.0173771);
+  gre->SetPoint(62,2.25,2.5205);
+  gre->SetPointError(62,0,0,0.0172811,0.0172811);
+  gre->SetPoint(63,2.35,2.49491);
+  gre->SetPointError(63,0,0,0.0171932,0.0171932);
+  gre->SetPoint(64,2.45,2.42773);
+  gre->SetPointError(64,0,0,0.0169601,0.0169601);
+  gre->SetPoint(65,2.55,2.42879);
+  gre->SetPointError(65,0,0,0.0169638,0.0169638);
+  gre->SetPoint(66,2.65,2.39372);
+  gre->SetPointError(66,0,0,0.0168409,0.0168409);
+  gre->SetPoint(67,2.75,2.38412);
+  gre->SetPointError(67,0,0,0.0168071,0.0168071);
+  gre->SetPoint(68,2.85,2.31896);
+  gre->SetPointError(68,0,0,0.0165758,0.0165758);
+  gre->SetPoint(69,2.95,2.26209);
+  gre->SetPointError(69,0,0,0.0163713,0.0163713);
+  gre->SetPoint(70,3.05,2.24313);
+  gre->SetPointError(70,0,0,0.0163026,0.0163026);
+  gre->SetPoint(71,3.15,2.20403);
+  gre->SetPointError(71,0,0,0.0161599,0.0161599);
+  gre->SetPoint(72,3.25,2.12855);
+  gre->SetPointError(72,0,0,0.0158808,0.0158808);
+  gre->SetPoint(73,3.35,2.13104);
+  gre->SetPointError(73,0,0,0.01589,0.01589);
+  gre->SetPoint(74,3.45,2.06339);
+  gre->SetPointError(74,0,0,0.0156358,0.0156358);
+  gre->SetPoint(75,3.55,1.9846);
+  gre->SetPointError(75,0,0,0.0153343,0.0153343);
+  gre->SetPoint(76,3.65,1.95391);
+  gre->SetPointError(76,0,0,0.0152153,0.0152153);
+  gre->SetPoint(77,3.75,1.87998);
+  gre->SetPointError(77,0,0,0.0149247,0.0149247);
+  gre->SetPoint(78,3.85,1.86256);
+  gre->SetPointError(78,0,0,0.0148554,0.0148554);
+  gre->SetPoint(79,3.95,1.77239);
+  gre->SetPointError(79,0,0,0.0144913,0.0144913);
+  gre->SetPoint(80,4.05,1.72855);
+  gre->SetPointError(80,0,0,0.014311,0.014311);
+  gre->SetPoint(81,4.15,1.69479);
+  gre->SetPointError(81,0,0,0.0141705,0.0141705);
+  gre->SetPoint(82,4.25,1.64147);
+  gre->SetPointError(82,0,0,0.0139459,0.0139459);
+  gre->SetPoint(83,4.35,1.58116);
+  gre->SetPointError(83,0,0,0.0136873,0.0136873);
+  gre->SetPoint(84,4.45,1.55735);
+  gre->SetPointError(84,0,0,0.0135838,0.0135838);
+  gre->SetPoint(85,4.55,1.48815);
+  gre->SetPointError(85,0,0,0.0132786,0.0132786);
+  gre->SetPoint(86,4.65,1.40853);
+  gre->SetPointError(86,0,0,0.0129185,0.0129185);
+  gre->SetPoint(87,4.75,1.36979);
+  gre->SetPointError(87,0,0,0.0127396,0.0127396);
+  gre->SetPoint(88,4.85,1.32666);
+  gre->SetPointError(88,0,0,0.0125374,0.0125374);
+  gre->SetPoint(89,4.95,1.29763);
+  gre->SetPointError(89,0,0,0.0123995,0.0123995);
+  gre->SetPoint(90,5.05,1.25533);
+  gre->SetPointError(90,0,0,0.0121957,0.0121957);
+  gre->SetPoint(91,5.15,1.20912);
+  gre->SetPointError(91,0,0,0.0119692,0.0119692);
+  gre->SetPoint(92,5.25,1.18839);
+  gre->SetPointError(92,0,0,0.0118661,0.0118661);
+  gre->SetPoint(93,5.35,1.15948);
+  gre->SetPointError(93,0,0,0.0117209,0.0117209);
+  gre->SetPoint(94,5.45,1.1141);
+  gre->SetPointError(94,0,0,0.0114892,0.0114892);
+  gre->SetPoint(95,5.55,1.06315);
+  gre->SetPointError(95,0,0,0.0112235,0.0112235);
+  gre->SetPoint(96,5.65,1.05213);
+  gre->SetPointError(96,0,0,0.0111651,0.0111651);
+  gre->SetPoint(97,5.75,1.02476);
+  gre->SetPointError(97,0,0,0.011019,0.011019);
+  gre->SetPoint(98,5.85,0.984834);
+  gre->SetPointError(98,0,0,0.0108022,0.0108022);
+  gre->SetPoint(99,5.95,0.952844);
+  gre->SetPointError(99,0,0,0.0106253,0.0106253);
+
+  return gre;
+}
+
+//____________________________________________________________________
+TGraphAsymmErrors*
+Pythia900NSD()
+{
+   
+  TGraphAsymmErrors *gre = new TGraphAsymmErrors(100);
+  SetGraphAttributes(gre, NSD, PYTHIA, false, "pythia900NSD",
+                    "Pythia NSD");
+
+  gre->SetPoint(0,-3.95,2.11766);
+  gre->SetPointError(0,0,0,0.0179417,0.0179417);
+  gre->SetPoint(1,-3.85,2.20415);
+  gre->SetPointError(1,0,0,0.0183045,0.0183045);
+  gre->SetPoint(2,-3.75,2.30949);
+  gre->SetPointError(2,0,0,0.0187368,0.0187368);
+  gre->SetPoint(3,-3.65,2.34582);
+  gre->SetPointError(3,0,0,0.0188836,0.0188836);
+  gre->SetPoint(4,-3.55,2.38322);
+  gre->SetPointError(4,0,0,0.0190335,0.0190335);
+  gre->SetPoint(5,-3.45,2.43353);
+  gre->SetPointError(5,0,0,0.0192334,0.0192334);
+  gre->SetPoint(6,-3.35,2.51106);
+  gre->SetPointError(6,0,0,0.0195373,0.0195373);
+  gre->SetPoint(7,-3.25,2.56578);
+  gre->SetPointError(7,0,0,0.0197491,0.0197491);
+  gre->SetPoint(8,-3.15,2.60515);
+  gre->SetPointError(8,0,0,0.0199,0.0199);
+  gre->SetPoint(9,-3.05,2.7105);
+  gre->SetPointError(9,0,0,0.0202984,0.0202984);
+  gre->SetPoint(10,-2.95,2.77008);
+  gre->SetPointError(10,0,0,0.0205203,0.0205203);
+  gre->SetPoint(11,-2.85,2.83332);
+  gre->SetPointError(11,0,0,0.0207532,0.0207532);
+  gre->SetPoint(12,-2.75,2.84715);
+  gre->SetPointError(12,0,0,0.0208038,0.0208038);
+  gre->SetPoint(13,-2.65,2.91693);
+  gre->SetPointError(13,0,0,0.0210571,0.0210571);
+  gre->SetPoint(14,-2.55,2.95797);
+  gre->SetPointError(14,0,0,0.0212048,0.0212048);
+  gre->SetPoint(15,-2.45,2.97499);
+  gre->SetPointError(15,0,0,0.0212657,0.0212657);
+  gre->SetPoint(16,-2.35,3.01345);
+  gre->SetPointError(16,0,0,0.0214027,0.0214027);
+  gre->SetPoint(17,-2.25,3.04659);
+  gre->SetPointError(17,0,0,0.0215201,0.0215201);
+  gre->SetPoint(18,-2.15,3.09341);
+  gre->SetPointError(18,0,0,0.0216848,0.0216848);
+  gre->SetPoint(19,-2.05,3.13187);
+  gre->SetPointError(19,0,0,0.0218192,0.0218192);
+  gre->SetPoint(20,-1.95,3.13917);
+  gre->SetPointError(20,0,0,0.0218446,0.0218446);
+  gre->SetPoint(21,-1.85,3.16911);
+  gre->SetPointError(21,0,0,0.0219485,0.0219485);
+  gre->SetPoint(22,-1.75,3.15665);
+  gre->SetPointError(22,0,0,0.0219053,0.0219053);
+  gre->SetPoint(23,-1.65,3.19693);
+  gre->SetPointError(23,0,0,0.0220446,0.0220446);
+  gre->SetPoint(24,-1.55,3.17002);
+  gre->SetPointError(24,0,0,0.0219517,0.0219517);
+  gre->SetPoint(25,-1.45,3.18538);
+  gre->SetPointError(25,0,0,0.0220048,0.0220048);
+  gre->SetPoint(26,-1.35,3.18066);
+  gre->SetPointError(26,0,0,0.0219885,0.0219885);
+  gre->SetPoint(27,-1.25,3.19754);
+  gre->SetPointError(27,0,0,0.0220467,0.0220467);
+  gre->SetPoint(28,-1.15,3.18021);
+  gre->SetPointError(28,0,0,0.0219869,0.0219869);
+  gre->SetPoint(29,-1.05,3.13111);
+  gre->SetPointError(29,0,0,0.0218165,0.0218165);
+  gre->SetPoint(30,-0.95,3.12153);
+  gre->SetPointError(30,0,0,0.0217831,0.0217831);
+  gre->SetPoint(31,-0.85,3.14798);
+  gre->SetPointError(31,0,0,0.0218752,0.0218752);
+  gre->SetPoint(32,-0.75,3.07912);
+  gre->SetPointError(32,0,0,0.0216347,0.0216347);
+  gre->SetPoint(33,-0.65,3.10207);
+  gre->SetPointError(33,0,0,0.0217151,0.0217151);
+  gre->SetPoint(34,-0.55,3.06346);
+  gre->SetPointError(34,0,0,0.0215796,0.0215796);
+  gre->SetPoint(35,-0.45,2.97651);
+  gre->SetPointError(35,0,0,0.0212711,0.0212711);
+  gre->SetPoint(36,-0.35,2.98715);
+  gre->SetPointError(36,0,0,0.0213091,0.0213091);
+  gre->SetPoint(37,-0.25,2.98548);
+  gre->SetPointError(37,0,0,0.0213032,0.0213032);
+  gre->SetPoint(38,-0.15,3.00555);
+  gre->SetPointError(38,0,0,0.0213746,0.0213746);
+  gre->SetPoint(39,-0.05,3.01193);
+  gre->SetPointError(39,0,0,0.0213973,0.0213973);
+  gre->SetPoint(40,0.05,3.04385);
+  gre->SetPointError(40,0,0,0.0215104,0.0215104);
+  gre->SetPoint(41,0.15,3.04933);
+  gre->SetPointError(41,0,0,0.0215297,0.0215297);
+  gre->SetPoint(42,0.25,3.04659);
+  gre->SetPointError(42,0,0,0.0215201,0.0215201);
+  gre->SetPoint(43,0.35,3.00813);
+  gre->SetPointError(43,0,0,0.0213838,0.0213838);
+  gre->SetPoint(44,0.45,3.06666);
+  gre->SetPointError(44,0,0,0.0215908,0.0215908);
+  gre->SetPoint(45,0.55,3.07167);
+  gre->SetPointError(45,0,0,0.0216085,0.0216085);
+  gre->SetPoint(46,0.65,3.0659);
+  gre->SetPointError(46,0,0,0.0215881,0.0215881);
+  gre->SetPoint(47,0.75,3.09159);
+  gre->SetPointError(47,0,0,0.0216784,0.0216784);
+  gre->SetPoint(48,0.85,3.10846);
+  gre->SetPointError(48,0,0,0.0217375,0.0217375);
+  gre->SetPoint(49,0.95,3.11925);
+  gre->SetPointError(49,0,0,0.0217752,0.0217752);
+  gre->SetPoint(50,1.05,3.15558);
+  gre->SetPointError(50,0,0,0.0219016,0.0219016);
+  gre->SetPoint(51,1.15,3.16911);
+  gre->SetPointError(51,0,0,0.0219485,0.0219485);
+  gre->SetPoint(52,1.25,3.17246);
+  gre->SetPointError(52,0,0,0.0219601,0.0219601);
+  gre->SetPoint(53,1.35,3.19146);
+  gre->SetPointError(53,0,0,0.0220258,0.0220258);
+  gre->SetPoint(54,1.45,3.17458);
+  gre->SetPointError(54,0,0,0.0219675,0.0219675);
+  gre->SetPoint(55,1.55,3.16866);
+  gre->SetPointError(55,0,0,0.0219469,0.0219469);
+  gre->SetPoint(56,1.65,3.16592);
+  gre->SetPointError(56,0,0,0.0219375,0.0219375);
+  gre->SetPoint(57,1.75,3.16394);
+  gre->SetPointError(57,0,0,0.0219306,0.0219306);
+  gre->SetPoint(58,1.85,3.11956);
+  gre->SetPointError(58,0,0,0.0217762,0.0217762);
+  gre->SetPoint(59,1.95,3.14646);
+  gre->SetPointError(59,0,0,0.02187,0.02187);
+  gre->SetPoint(60,2.05,3.10147);
+  gre->SetPointError(60,0,0,0.021713,0.021713);
+  gre->SetPoint(61,2.15,3.09356);
+  gre->SetPointError(61,0,0,0.0216853,0.0216853);
+  gre->SetPoint(62,2.25,3.05328);
+  gre->SetPointError(62,0,0,0.0215437,0.0215437);
+  gre->SetPoint(63,2.35,3.01953);
+  gre->SetPointError(63,0,0,0.0214243,0.0214243);
+  gre->SetPoint(64,2.45,2.9373);
+  gre->SetPointError(64,0,0,0.0211305,0.0211305);
+  gre->SetPoint(65,2.55,2.92772);
+  gre->SetPointError(65,0,0,0.0210961,0.0210961);
+  gre->SetPoint(66,2.65,2.89154);
+  gre->SetPointError(66,0,0,0.0209653,0.0209653);
+  gre->SetPoint(67,2.75,2.87619);
+  gre->SetPointError(67,0,0,0.0209096,0.0209096);
+  gre->SetPoint(68,2.85,2.78924);
+  gre->SetPointError(68,0,0,0.0205911,0.0205911);
+  gre->SetPoint(69,2.95,2.72159);
+  gre->SetPointError(69,0,0,0.0203399,0.0203399);
+  gre->SetPoint(70,3.05,2.69089);
+  gre->SetPointError(70,0,0,0.0202248,0.0202248);
+  gre->SetPoint(71,3.15,2.64939);
+  gre->SetPointError(71,0,0,0.0200682,0.0200682);
+  gre->SetPoint(72,3.25,2.55545);
+  gre->SetPointError(72,0,0,0.0197092,0.0197092);
+  gre->SetPoint(73,3.35,2.56745);
+  gre->SetPointError(73,0,0,0.0197555,0.0197555);
+  gre->SetPoint(74,3.45,2.47503);
+  gre->SetPointError(74,0,0,0.0193967,0.0193967);
+  gre->SetPoint(75,3.55,2.36741);
+  gre->SetPointError(75,0,0,0.0189703,0.0189703);
+  gre->SetPoint(76,3.65,2.33412);
+  gre->SetPointError(76,0,0,0.0188364,0.0188364);
+  gre->SetPoint(77,3.75,2.2385);
+  gre->SetPointError(77,0,0,0.0184466,0.0184466);
+  gre->SetPoint(78,3.85,2.21768);
+  gre->SetPointError(78,0,0,0.0183606,0.0183606);
+  gre->SetPoint(79,3.95,2.1055);
+  gre->SetPointError(79,0,0,0.0178901,0.0178901);
+  gre->SetPoint(80,4.05,2.05047);
+  gre->SetPointError(80,0,0,0.0176548,0.0176548);
+  gre->SetPoint(81,4.15,2.00486);
+  gre->SetPointError(81,0,0,0.0174574,0.0174574);
+  gre->SetPoint(82,4.25,1.94573);
+  gre->SetPointError(82,0,0,0.017198,0.017198);
+  gre->SetPoint(83,4.35,1.87064);
+  gre->SetPointError(83,0,0,0.0168629,0.0168629);
+  gre->SetPoint(84,4.45,1.83735);
+  gre->SetPointError(84,0,0,0.0167122,0.0167122);
+  gre->SetPoint(85,4.55,1.75314);
+  gre->SetPointError(85,0,0,0.0163247,0.0163247);
+  gre->SetPoint(86,4.65,1.65828);
+  gre->SetPointError(86,0,0,0.0158769,0.0158769);
+  gre->SetPoint(87,4.75,1.60751);
+  gre->SetPointError(87,0,0,0.015632,0.015632);
+  gre->SetPoint(88,4.85,1.56312);
+  gre->SetPointError(88,0,0,0.0154146,0.0154146);
+  gre->SetPoint(89,4.95,1.52117);
+  gre->SetPointError(89,0,0,0.0152064,0.0152064);
+  gre->SetPoint(90,5.05,1.46553);
+  gre->SetPointError(90,0,0,0.0149257,0.0149257);
+  gre->SetPoint(91,5.15,1.42038);
+  gre->SetPointError(91,0,0,0.014694,0.014694);
+  gre->SetPoint(92,5.25,1.38816);
+  gre->SetPointError(92,0,0,0.0145263,0.0145263);
+  gre->SetPoint(93,5.35,1.35046);
+  gre->SetPointError(93,0,0,0.0143277,0.0143277);
+  gre->SetPoint(94,5.45,1.30075);
+  gre->SetPointError(94,0,0,0.0140616,0.0140616);
+  gre->SetPoint(95,5.55,1.24025);
+  gre->SetPointError(95,0,0,0.0137307,0.0137307);
+  gre->SetPoint(96,5.65,1.21806);
+  gre->SetPointError(96,0,0,0.0136073,0.0136073);
+  gre->SetPoint(97,5.75,1.19435);
+  gre->SetPointError(97,0,0,0.0134742,0.0134742);
+  gre->SetPoint(98,5.85,1.14175);
+  gre->SetPointError(98,0,0,0.0131741,0.0131741);
+  gre->SetPoint(99,5.95,1.09235);
+  gre->SetPointError(99,0,0,0.012886,0.012886);
+
+  return gre;
+}   
+  
 //____________________________________________________________________
 /** 
  * Get the UA5 NSD data for pp at @f$ \sqrt{s} = 900GeV@f$
@@ -71,7 +555,7 @@ SetGraphAttributes(TGraph* g, Int_t marker, Int_t color,
  * 
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* UA5Nsd(Bool_t mirrored=false) 
 {
@@ -89,14 +573,27 @@ TGraphAsymmErrors* UA5Nsd(Bool_t mirrored=false)
                   0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
   double eyp[] = { 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 
                   0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
-  const int np = 20;
+  const int np = 19;
   double xm[np]; 
-  for (int i = 0; i < np; i++) xm[i] = -x[i];
+  double exmm[np];
+  double expm[np];
+  double ym[np];
+  double eymm[np];
+  double eypm[np];
+  for (int i = 0; i < np; i++) {
+    int j = np-1-i;
+    xm[i]   = -x[j];
+    exmm[i] = exm[j];
+    expm[i] = exp[j];
+    ym[i]   = y[j];
+    eymm[i] = eym[j];
+    eypm[i] = eyp[j];
+  }
 
-  TGraphAsymmErrors* g  = new TGraphAsymmErrors(19,x, y,exm,exp,eym,eyp);
-  TGraphAsymmErrors* gm = new TGraphAsymmErrors(19,xm,y,exm,exp,eym,eyp);
-  SetGraphAttributes(g,  NSDStyle, UA5Color,"ua5_nsd",         "UA5 NSD");
-  SetGraphAttributes(gm, NSDStyle+MirrorOff, UA5Color,"ua5_nsd_mirrored",
+  TGraphAsymmErrors* g  = new TGraphAsymmErrors(19,x, y, exm, exp, eym, eyp);
+  TGraphAsymmErrors* gm = new TGraphAsymmErrors(19,xm,ym,exmm,expm,eymm,eypm);
+  SetGraphAttributes(g,  NSD, UA5, false,"ua5_nsd",         "UA5 NSD");
+  SetGraphAttributes(gm, NSD, UA5, true,"ua5_nsd_mirrored",
                     "UA5 NSD (mirrored)");
 
   return (mirrored ? gm : g);
@@ -111,7 +608,7 @@ TGraphAsymmErrors* UA5Nsd(Bool_t mirrored=false)
  * 
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* UA5Inel(Bool_t mirrored=false) 
 {
@@ -131,12 +628,25 @@ TGraphAsymmErrors* UA5Inel(Bool_t mirrored=false)
                   0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.09, 0.09, 0.1, 0.13 };
   const int np = 19;
   double xm[np]; 
-  for (int i = 0; i < np; i++) xm[i] = -x[i];
-  TGraphAsymmErrors* g  = new TGraphAsymmErrors(np,x, y,exm,exp,eym,eyp);
-  TGraphAsymmErrors* gm = new TGraphAsymmErrors(np,xm,y,exm,exp,eym,eyp);
+  double exmm[np];
+  double expm[np];
+  double ym[np];
+  double eymm[np];
+  double eypm[np];
+  for (int i = 0; i < np; i++) {
+    int j = np-1-i;
+    xm[i]   = -x[j];
+    exmm[i] = exm[j];
+    expm[i] = exp[j];
+    ym[i]   = y[j];
+    eymm[i] = eym[j];
+    eypm[i] = eyp[j];
+  }
+  TGraphAsymmErrors* g  = new TGraphAsymmErrors(np,x, y, exm, exp, eym, eyp);
+  TGraphAsymmErrors* gm = new TGraphAsymmErrors(np,xm,ym,exmm,expm,eymm,eypm);
 
-  SetGraphAttributes(g,  INELStyle, UA5Color, "ua5_inel", "UA5 INEL");
-  SetGraphAttributes(gm, INELStyle+MirrorOff, UA5Color, "ua5_inel_mirrored", 
+  SetGraphAttributes(g,  INEL, UA5, false, "ua5_inel", "UA5 INEL");
+  SetGraphAttributes(gm, INEL, UA5, true, "ua5_inel_mirrored", 
                     "UA5 INEL (mirrored)");
   
   return (mirrored ? gm : g);
@@ -150,7 +660,7 @@ TGraphAsymmErrors* UA5Inel(Bool_t mirrored=false)
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* AliceCentralInel900()
 {  
@@ -184,7 +694,7 @@ TGraphAsymmErrors* AliceCentralInel900()
     eyp[i] += 0.02;
   }
   g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, INELStyle, ALICEColor, "alice_inel", 
+  SetGraphAttributes(g, INEL, ALICE, false, "alice_inel", 
                     "ALICE INEL (publ.)");
 
   return g;
@@ -199,7 +709,7 @@ TGraphAsymmErrors* AliceCentralInel900()
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* AliceCentralInelGt900()
 {  
@@ -230,7 +740,7 @@ TGraphAsymmErrors* AliceCentralInelGt900()
   }
 
   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, INELGtStyle, ALICEColor, "alice_inelgt900", 
+  SetGraphAttributes(g, INELGt0, ALICE, false, "alice_inelgt900", 
                     "ALICE INEL>0 (publ.)");
   return g;
 
@@ -245,7 +755,7 @@ TGraphAsymmErrors* AliceCentralInelGt900()
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* AliceCentralInelGt2360()
 {  
@@ -272,7 +782,7 @@ TGraphAsymmErrors* AliceCentralInelGt2360()
   }
 
   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, INELGtStyle, ALICEColor, "alice_inelgt2360", 
+  SetGraphAttributes(g, INELGt0, ALICE, false, "alice_inelgt2360", 
                     "ALICE INEL>0 (publ.)");
   return g;
 }
@@ -286,7 +796,7 @@ TGraphAsymmErrors* AliceCentralInelGt2360()
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* AliceCentralInelGt7000()
 {  
@@ -314,7 +824,7 @@ TGraphAsymmErrors* AliceCentralInelGt7000()
   }
 
   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, INELGtStyle, ALICEColor, "alice_inelgt7000", 
+  SetGraphAttributes(g, INELGt0, ALICE, false, "alice_inelgt7000", 
                     "ALICE INEL>0 (publ.)");
   return g;
 }
@@ -328,7 +838,7 @@ TGraphAsymmErrors* AliceCentralInelGt7000()
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* AliceCentralNsd900()
 {
@@ -363,7 +873,7 @@ TGraphAsymmErrors* AliceCentralNsd900()
   }
 
   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, NSDStyle, ALICEColor, "alice_nsd", "ALICE NSD (publ.)");
+  SetGraphAttributes(g, NSD, ALICE, false, "alice_nsd", "ALICE NSD (publ.)");
 
   return g;
 }
@@ -377,7 +887,7 @@ TGraphAsymmErrors* AliceCentralNsd900()
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* AliceCentralInel2360()
 {  
@@ -412,7 +922,7 @@ TGraphAsymmErrors* AliceCentralInel2360()
   }
 
   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, NSDStyle, ALICEColor, "alice_inel2360", 
+  SetGraphAttributes(g, NSD, ALICE, false, "alice_inel2360", 
                     "ALICE INEL (publ.)");
   return g;
 }
@@ -426,7 +936,7 @@ TGraphAsymmErrors* AliceCentralInel2360()
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* AliceCentralNsd2360()
 {  
@@ -462,7 +972,7 @@ TGraphAsymmErrors* AliceCentralNsd2360()
   }
 
   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, NSDStyle, ALICEColor, "alice_nsd2360", 
+  SetGraphAttributes(g, NSD, ALICE, false, "alice_nsd2360", 
                     "ALICE NSD (publ.)");
   return g;
 }
@@ -477,7 +987,7 @@ TGraphAsymmErrors* AliceCentralNsd2360()
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* CMSNsd900()
 {
@@ -491,7 +1001,7 @@ TGraphAsymmErrors* CMSNsd900()
   double eyp[] = { 0.13, 0.14, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.14, 0.13 };
   const int np = 10;
   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, NSDStyle, CMSColor, "cms_nsd900", "CMS NSD");
+  SetGraphAttributes(g, NSD, CMS, false, "cms_nsd900", "CMS NSD");
 
   return g;
 }
@@ -506,7 +1016,7 @@ TGraphAsymmErrors* CMSNsd900()
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* CMSNsd2360()
 {
@@ -519,7 +1029,7 @@ TGraphAsymmErrors* CMSNsd2360()
   double eyp[] = { 0.17, 0.18, 0.17, 0.17, 0.16, 0.16, 0.17, 0.17, 0.18, 0.17 };
   const int np = 10;
   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, NSDStyle, CMSColor, "cms_nsd2360", "CMS NSD");
+  SetGraphAttributes(g, NSD, CMS, false, "cms_nsd2360", "CMS NSD");
   return g;
 }
 
@@ -533,7 +1043,7 @@ TGraphAsymmErrors* CMSNsd2360()
  *
  * @return graph of data 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TGraphAsymmErrors* CMSNsd7000()
 {
@@ -546,7 +1056,7 @@ TGraphAsymmErrors* CMSNsd7000()
   double eyp[] = { 0.25, 0.25, 0.24, 0.24, 0.23, 0.23, 0.24, 0.24, 0.25, 0.25 };
   const int np = 10;
   TGraphAsymmErrors* g = new TGraphAsymmErrors(np, x, y, exm, exp, eym, eyp);
-  SetGraphAttributes(g, NSDStyle, CMSColor, "cms_nsd7000", "CMS NSD");
+  SetGraphAttributes(g, NSD, CMS, false, "cms_nsd7000", "CMS NSD");
   return g;
 }
 
@@ -554,75 +1064,115 @@ TGraphAsymmErrors* CMSNsd7000()
 /** 
  * Get a multi graph of data for a given energy and trigger type 
  * 
+ * @param sys    Collision system (1: pp, 2: PbPb)
  * @param energy Energy in GeV (900, 2360, 7000)
  * @param type   Bit pattern of trigger type 
  *   - 0x1 INEL 
  *   - 0x2 INEL>0
  *   - 0x4 NSD 
+ * @param centLow   Low centrality cut (only for PbPB)
+ * @param centHigh  High centrality cut (only for PbPB)
+ * @param aliceOnly Only return other ALICE data
  * 
  * @return A multi graph with the selected data. 
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 TMultiGraph* 
-GetData(Int_t energy, Int_t type)
+GetData(UShort_t sys, 
+       UShort_t energy,
+       UShort_t type=0x1, 
+       UShort_t centLow=0, 
+       UShort_t centHigh=0, 
+       bool     aliceOnly=false)
 {
-  TMultiGraph* mp = new TMultiGraph(Form("dndeta_%dGeV_%d", energy, type),"");
+  TMultiGraph* mp = new TMultiGraph(Form("dndeta_%dGeV_%d_%03d_%03d", 
+                                        energy, type, centLow, centHigh),"");
   TString tn;
   TString en;
-  if (TMath::Abs(energy-900) < 10) {
-    en.Append(" #sqrt{s}=900GeV");
-    if (type & 0x1) { 
-      tn.Append(" INEL");
-      mp->Add(UA5Inel(false));
-      mp->Add(UA5Inel(true));
-      mp->Add(AliceCentralInel900());
-    }      
-    if (type & 0x4) { 
-      tn.Append(" NSD");
-      mp->Add(UA5Nsd(false));
-      mp->Add(UA5Nsd(true));
-      mp->Add(AliceCentralNsd900());
-      mp->Add(CMSNsd900());
-    }
-    if (type & 0x2) { 
-      tn.Append(" INEL>0");
-      mp->Add(AliceCentralInelGt900());
-    }
-  }
-  if (TMath::Abs(energy-2360) < 10) {
-    en.Append(" #sqrt{s}=2.36TeV");
-    if (type & 0x1) { 
-      tn.Append(" INEL");
-      mp->Add(AliceCentralInel2360());
+  TString sn;
+  TString cn;
+  if (sys == 1) { 
+    sn = ", pp(p#bar{p})";
+    if (energy < 1000) 
+      en = Form(", #sqrt{s}=%dGeV", energy);
+    else 
+      en = Form(", #sqrt{s}=%f4.2TeV", float(energy)/1000);
+    if (!(type & 0x7)) 
+      Warning("GetData", "Unknown trigger mask 0x%x", type);
+
+    if (TMath::Abs(energy-900) < 10) {
+      if (type & 0x1) { 
+       tn.Append(" INEL");
+       if (!aliceOnly) mp->Add(Pythia900INEL());
+       if (!aliceOnly) mp->Add(UA5Inel(false));
+       if (!aliceOnly) mp->Add(UA5Inel(true));
+       mp->Add(AliceCentralInel900());
+      }      
+      if (type & 0x4) { 
+       tn.Append(" NSD");
+       if (!aliceOnly) mp->Add(Pythia900NSD());
+       if (!aliceOnly) mp->Add(UA5Nsd(false));
+       if (!aliceOnly) mp->Add(UA5Nsd(true));
+       mp->Add(AliceCentralNsd900());
+       if (!aliceOnly) mp->Add(CMSNsd900());
+      }
+      if (type & 0x2) { 
+       tn.Append(" INEL>0");
+       mp->Add(AliceCentralInelGt900());
+      }
     }
-    if (type & 0x4) { 
-      tn.Append(" NSD");
-      mp->Add(AliceCentralNsd2360());
-      mp->Add(CMSNsd2360());
+    else if (TMath::Abs(energy-2360) < 10) {
+      if (type & 0x1) { 
+       tn.Append(" INEL");
+       mp->Add(AliceCentralInel2360());
+      }
+      if (type & 0x4) { 
+       tn.Append(" NSD");
+       mp->Add(AliceCentralNsd2360());
+       if (!aliceOnly) mp->Add(CMSNsd2360());
+      }
+      if (type & 0x2) { 
+       tn.Append(" INEL>0");
+       mp->Add(AliceCentralInelGt2360());
+      }
     }
-    if (type & 0x1) { 
-      tn.Append(" INEL>0");
-      mp->Add(AliceCentralInelGt2360());
+    else if (TMath::Abs(energy-7000) < 10) {
+      if (type & 0x1) { 
+       tn.Append(" INEL");
+      }
+      if (type & 0x4) { 
+       tn.Append(" NSD");
+       if (!aliceOnly) mp->Add(CMSNsd7000());
+      }
+      if (type & 0x2) { 
+       tn.Append(" INEL>0");
+       mp->Add(AliceCentralInelGt7000());
+      }
     }
+    else 
+      Warning("GetData", "No other results for sys=%d, energy=%d",
+             sys, energy);
   }
-  if (TMath::Abs(energy-7000) < 10) {
-    en.Append(" #sqrt{s}=7TeV");
-    if (type & 0x1) { 
-      tn.Append(" INEL");
-    }
-    if (type & 0x4) { 
-      tn.Append(" NSD");
-      mp->Add(CMSNsd7000());
-    }
-    if (type & 0x1) { 
-      tn.Append(" INEL>0");
-      mp->Add(AliceCentralInelGt7000());
-    }
+  else if (sys == 2) { 
+    // Nothing for PbPb so far 
+    cn = Form(", %d%%-%d%% central", centLow, centHigh);
+    sn = ", PbPb";
+    if (energy < 1000) 
+      en = Form(", #sqrt{s_{NN}}=%dGeV", energy);
+    else 
+      en = Form(", #sqrt{s_{NN}}=%f4.2TeV", float(energy)/1000);
+    Warning("GetData", "No other data for PbP b yet");
+  }
+  else 
+    Warning("GetData", "Unknown system %d", sys);
+  TString tit(Form("1/N dN_{ch}/d#eta%s%s%s%s", 
+                  sn.Data(), en.Data(), tn.Data(), cn.Data()));
+  mp->SetTitle(tit.Data());
+  if (!mp->GetListOfGraphs() || mp->GetListOfGraphs()->GetEntries() <= 0) {
+    delete mp;
+    mp = 0;
   }
-  mp->SetTitle(Form("1/N dN_{ch}/d#eta, pp(p#bar{p}), %s, %s", 
-                   en.Data(), tn.Data()));
-  
   return mp;
 }
 
@@ -631,14 +1181,29 @@ GetData(Int_t energy, Int_t type)
  * Plot external data for a given selection of energy and trigger type
  * (see GetData)
  * 
- * @param energy  Energy in GeV
- * @param type    Trigger type bit mask 
+ * @param sys    Collision system (1: pp, 2: PbPb)
+ * @param energy Energy in GeV (900, 2360, 7000)
+ * @param type   Bit pattern of trigger type 
+ *   - 0x1 INEL 
+ *   - 0x2 INEL>0
+ *   - 0x4 NSD 
+ * @param centLow   Low centrality cut (only for PbPB)
+ * @param centHigh  High centrality cut (only for PbPB)
+ * @param aliceOnly Only return other ALICE data
  * 
- * @ingroup pwg2_forward_analysis_otherdata
+ * @ingroup pwg2_forward_otherdata
  */
 void
-OtherData(Int_t energy=900, Int_t type=0x1)
+OtherData(UShort_t sys=1, 
+             UShort_t energy=900, 
+             UShort_t type=0x1, 
+             UShort_t centLow=0, 
+             UShort_t centHigh=5, 
+             bool     aliceOnly=false)
 {
+  TMultiGraph* mp = GetData(sys, energy, type, centLow, centHigh, aliceOnly);
+  if (!mp) return;
+
   gStyle->SetTitleX(0.1);
   gStyle->SetTitleY(1.0);
   gStyle->SetTitleW(0.85);
@@ -658,7 +1223,7 @@ OtherData(Int_t energy=900, Int_t type=0x1)
   c->SetRightMargin(0.05);
   c->SetTopMargin(0.05);
   
-  TMultiGraph* mp = GetData(energy, type);
+
   mp->SetMinimum(0);
   mp->Draw("ap");
   if (mp->GetXaxis())