AliPhysics  857879d (857879d)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SysErrorAdder.C
Go to the documentation of this file.
1 #ifndef __CINT__
2 # include <TString.h>
3 # include <TH1.h>
4 # include "GraphSysErr.C"
5 # include <TLegend.h>
6 # include <TLegendEntry.h>
7 # include <TObjString.h>
8 # include <TColor.h>
9 #else
10 class GraphSysErr;
11 class TH1;
12 class TLegend;
13 #endif
14 
16 {
20  enum {
21  kTriggerFill = 1001, // 0, // 3144
22  kMergingFill = 3001, // 0, // 3001,
23  kDensityFill = 3002, // 0, // 3002,
24  kEmpiricalFill = 3144, // 0, // 3244
25  kHadronFill = 3244, // 0,
26  kEMFill = 3344,
27  kDiffRatFill = 3001,
28  kDiffMassFill = 3002,
30  };
44  SysErrorAdder(const TString& sys,
45  UShort_t sNN,
46  const TString& trig)
47  : fSys(sys), fSNN(sNN), fTrig(trig)
48  {}
52  virtual ~SysErrorAdder() {}
58  virtual const char* GetTriggerName() const { return "Trigger"; }
59  virtual const char* GetTriggerString() const { return fTrig; }
60  Int_t ModColor(Color_t n, UShort_t off) const
61  {
62  ULong_t max = 0xff;
63  ULong_t pixel = TColor::Number2Pixel(n);
64  ULong_t r = TMath::Min((((pixel >> 16) & max) + off), max);
65  ULong_t g = TMath::Min((((pixel >> 8) & max) + off), max);
66  ULong_t b = TMath::Min((((pixel >> 0) & max) + off), max);
67  ULong_t next = (r << 16) | (g << 8) | (b << 0);
68  // Printf("0x%08x -> 0x%08x", pixel, next);
69  return TColor::GetColor(next);
70  }
71 
81  void ModError(GraphSysErr* gse, Int_t id, Style_t fill,
82  TLegend* l, UShort_t off=64) const
83  {
84  // UShort_t off = 64; // (id-1) * 32;
85  // switch (fill) {
86  // case kMergingFill: off = 16; break;
87  // case kDensityFill: off = 32; break;
88  // case kEmpiricalFill: off = 48; break;
89  // case kHadronFill: off = 64; break;
90  // }
91  Color_t c = gse->GetMarkerColor(); // ModColor(gse->GetMarkerColor(), off);
92 
93  gse->SetSysFillColor(id, c);
94  gse->SetSysLineColor(id, c);
95  gse->SetSysLineWidth(id, 1);
96  gse->SetSysLineStyle(id, id);
97  gse->SetSysFillStyle(id, fill);
98  // gse->SetSysOption(id, GraphSysErr::kBox);
100 
101  AddLegend(l, id, gse->GetSysTitle(id), fill);
102  }
111  void AddLegend(TLegend* l, Int_t id, const char* title, Style_t fill) const
112  {
113  if (!l) return;
114  TLegendEntry* e = l->AddEntry(Form("sys%02d", id), title, "f");
115  e->SetFillStyle(fill);
116  e->SetFillColor(kBlack);
117  e->SetLineColor(kBlack);
118  e->SetLineStyle(id);
119  e->SetLineWidth(1);
120  }
129  virtual Int_t MakeTrigger(GraphSysErr* gse, TLegend* l) const
130  {
131  Double_t low = 0,high = 0;
132  GetTrigger(low,high);
133  if (low == 0 && high == 0) return -1;
134 
135  Int_t id = gse->DefineCommon(GetTriggerName(), true, low, high);
136  ModError(gse, id, kTriggerFill, l, 0);
137  return id;
138  }
147  Int_t MakeMerging(GraphSysErr* gse, TLegend* l) const
148  {
149  if (GetMerging(-1) <= 0 && GetMerging(+1) <= 0) return -1;
150  Int_t id = gse->DeclarePoint2Point("Merging", true);
151  ModError(gse, id, kMergingFill, l);
152  return id;
153  }
162  Int_t MakeDensity(GraphSysErr* gse, TLegend* l) const
163  {
164  if (GetDensity(-1) <= 0 && GetDensity(+1) <= 0) return -1;
165  Int_t id = gse->DeclarePoint2Point("Density", true);
166  ModError(gse, id, kDensityFill, l);
167  return id;
168  }
177  virtual Int_t MakeEmpirical(GraphSysErr* gse, TLegend* l) const
178  {
179  if (GetEmpirical() <= 0) return -1;
180  Int_t id = gse->DeclarePoint2Point("Empirical", true);
181  ModError(gse, id, kEmpiricalFill, l);
182  return id;
183  }
192  virtual Int_t MakeHadron(GraphSysErr* gse, TLegend* l) const
193  {
194  if (GetHadron(4) <= 0) return -1;
195  Int_t id = gse->DeclarePoint2Point("Hadron chemistry", true);
196  ModError(gse, id, kHadronFill, l);
197  return id;
198  }
199  virtual const char* MakeName(Double_t eff) const
200  {
201  return GetTriggerString();
202  }
206  virtual Double_t GetMerging(Short_t ) const { return 0.01; }
210  virtual Double_t GetDensity(Short_t w) const { return (w<0?0.02:0.01); }
214  virtual Double_t GetEmpirical() const { return 0.061; }
218  virtual Double_t GetHadron(Double_t eta) const
219  {
220  Double_t ret = (eta >= 3.6 ? 0.02 : 0);
222  return ret;
223  }
230  virtual void GetTrigger(Double_t& low, Double_t& high) const = 0;
241  virtual GraphSysErr* Make(TH1* h, TLegend* l, Double_t eff=1,
242  Bool_t verb=false)
243  {
244  // --- Reaction key ------------------------------------------------
245  if (verb) Info("", "Making graph from %s %p eff=%f", h->GetName(), l, eff);
246  TString reac = fSys;
247  reac.ToUpper();
248  reac.Insert(reac.Index("P", 1, 1, TString::kIgnoreCase), " ");
249  reac.Append(" --> CHARGED X");
250 
251  GraphSysErr* gse = new GraphSysErr(10);
252  gse->SetName(MakeName(eff));
253  gse->SetSumLineColor(kRed+2);
254  gse->SetSumLineWidth(2);
255  gse->SetSumTitle("All errors");
257  gse->SetLineColor(h->GetLineColor());
258  gse->SetMarkerColor(h->GetMarkerColor());
259  gse->SetFillColor(h->GetFillColor());
260  gse->SetMarkerStyle(h->GetMarkerStyle());
261  gse->SetFillStyle(h->GetFillStyle());
262  gse->SetXTitle("\\mathit{\\eta}");
263  gse->SetYTitle("\\mathrm{d}N_{ch}/\\mathrm{d}\\eta");
264  gse->SetKey("laboratory", "CERN");
265  gse->SetKey("accelerator", "LHC");
266  gse->SetKey("detector", "FORWARD");
267  gse->SetKey("reackey", reac);
268  gse->SetKey("obskey", "DN/DETARAP");
269  gse->SetKey("title", "Systematic study of dNch/deta over widest "
270  "possible eta region at the LHC");
271  gse->SetKey("author", "CHRISTENSEN");
272  gse->SetKey("abstract", "We present dNch/deta over widest "
273  "possible eta region at the LHC");
274  gse->SetKey("dscomment", "The pseudo-rapidity density of charged particle");
275  gse->AddQualifier(Form("SQRT(S)%s IN GEV",
276  fSys.EqualTo("pp",TString::kIgnoreCase) ?
277  "" : "/NUCLEON"), Form("%d", fSNN));
278 
279  MakeTrigger(gse, l);
280  Int_t idMerge = MakeMerging(gse, l);
281  Int_t idDens = MakeDensity(gse, l);
282  Int_t idEmp = MakeEmpirical(gse, l);
283  Int_t idHad = MakeHadron(gse, l);
284 
285  Int_t cnt = 0;
286  if (verb)
287  Info("", "Looping over histogram w/%d bins", h->GetNbinsX());
288  for (Int_t i = 1; i <= h->GetNbinsX(); i++) {
289  Double_t y = h->GetBinContent(i);
290  if (y < 1e-6) continue;
291  Double_t ey = h->GetBinError(i);
292  Double_t ex = h->GetXaxis()->GetBinWidth(i)/2;
293  Double_t x = h->GetXaxis()->GetBinCenter(i);
294 
295  gse->SetPoint(cnt, x, eff*y);
296  gse->SetPointError(cnt, ex);
297  gse->SetStatError(cnt, eff*ey);
298 
299  if (idMerge>=0)
300  gse->SetSysError(idMerge, cnt, ex, ex, GetMerging(-1), GetMerging(1));
301  if (idDens >=0)
302  gse->SetSysError(idDens, cnt, ex, ex, GetDensity(-1), GetDensity(1));
303  if (idEmp >=0)
304  gse->SetSysError(idEmp, cnt, ex, GetEmpirical());
305  if (idHad >=0)
306  gse->SetSysError(idHad, cnt, ex, GetHadron(x));
307  cnt++;
308  }
309  return gse;
310  }
321  static SysErrorAdder* Create(const TString& t,
322  const TString& s,
323  UShort_t e,
324  const TString& c);
325 };
331 {
338  OfflineAdder(const TString& sys, UShort_t sNN)
339  : SysErrorAdder(sys, sNN, "OFFLINE")
340  {
341  }
348  virtual void GetTrigger(Double_t& low, Double_t& high) const
349  {
350  low = 0;
351  high = 0;
352  }
353  Int_t MakeTrigger(GraphSysErr* gse, TLegend* l) const
354  {
355  return -1;
356  }
357 };
358 
359 struct BareAdder : public SysErrorAdder
360 {
361  BareAdder(const TString& sys, UShort_t sNN, TString& trig)
362  : SysErrorAdder(sys,sNN,trig)
363  {}
370  virtual void GetTrigger(Double_t& low, Double_t& high) const
371  {
372  low = high = 0;
373  }
374  Int_t MakeTrigger(GraphSysErr* gse, TLegend* l) const
375  {
376  gse->AddQualifier("TRIGGER", fTrig);
377  return SysErrorAdder::MakeTrigger(gse, l);
378  }
379 };
380 
385 struct INELAdder : public SysErrorAdder
386 {
397  INELAdder(const TString& sys, UShort_t sNN, Double_t low=-1, Double_t high=-1)
398  : SysErrorAdder(sys, sNN, "INEL"), fLow(low), fHigh(high)
399  {
400  if (low > 0 && high > 0) return;
401  if (fSys.EqualTo("pp", TString::kIgnoreCase)) {
402  switch (fSNN) {
403  case 900: fLow = 0.001; fHigh = 0.003; break;
404  case 2760: fLow = 0.0035; fHigh = 0.006; break;
405  case 5023: fLow = fHigh = 0.028; break;
406  case 7000:
407  case 8000: fLow = 0.003; fHigh = 0.006; break;
408  case 13000: fLow = fHigh = 0.028; break;
409  default: break;
410  }
411  }
412  }
419  virtual void GetTrigger(Double_t& low, Double_t& high) const
420  {
421  low = fLow;
422  high = fHigh;
423  }
424  Int_t MakeTrigger(GraphSysErr* gse, TLegend* l) const
425  {
426  gse->AddQualifier("TRIGGER", "INEL");
427  Int_t id = SysErrorAdder::MakeTrigger(gse, l);
428 
429  if (fSNN == 5023) {
430  Int_t rId = gse->DefineCommon("Diff. ratio",true,
431  0.023,0.034,GraphSysErr::kBox);
432  Int_t mId = gse->DefineCommon("Diff. mass",true,
433  0,0.065,GraphSysErr::kBox);
434  ModError(gse, rId, kDiffRatFill, l);
435  ModError(gse, mId, kDiffMassFill, l);
436  }
437  return id;
438  }
439 };
445 {
452  INELGt0Adder(const TString& sys, UShort_t sNN)
453  : SysErrorAdder(sys, sNN, "INEL>0"), fLow(0), fHigh(0)
454  {
455  switch (sNN) {
456  case 5023: fLow = fHigh = 0.023; break;
457  case 13000: fLow = fHigh = 0.023; break;
458  }
459  }
460  const char* MakeName(Double_t) const { return "INELGt0"; }
467  virtual void GetTrigger(Double_t& low, Double_t& high) const
468  {
469  low = fLow; high = fHigh;
470  }
471  Int_t MakeTrigger(GraphSysErr* gse, TLegend* l) const
472  {
473  gse->AddQualifier("TRIGGER", "INEL>0");
474  gse->AddQualifier("N", ">0");
475  Int_t id = SysErrorAdder::MakeTrigger(gse, l);
476  if (fSNN == 5023) {
477  Int_t rId = gse->DefineCommon("Diff. ratio",true,
478  0.005,0.005,GraphSysErr::kBox);
479  Int_t mId = gse->DefineCommon("Diff. mass",true,
480  0.005,0,GraphSysErr::kBox);
481  ModError(gse, rId, kDiffRatFill, l);
482  ModError(gse, mId, kDiffMassFill, l);
483  }
484  return id;
485  }
488 };
493 struct NSDAdder : public SysErrorAdder
494 {
503  NSDAdder(const TString& sys, UShort_t sNN, Double_t value=-1)
504  : SysErrorAdder(sys, sNN, "NSD"), fValue(value)
505  {
506  if (value > 0) return;
507  if (fSys.EqualTo("pp", TString::kIgnoreCase)) {
508  switch (fSNN) {
509  case 900: fValue = 0.02; break;
510  case 2760: fValue = 0.03; break;
511  case 5023: fValue = 0.044; break;
512  case 7000:
513  case 8000:
514  case 13000: fValue = 0.02; break;
515  default: break;
516  }
517  }
518  }
519  const char* MakeName(Double_t e) const
520  {
521  // if (e < 1e-3 || TMath::Abs(e - 1) < 1e-3) return "V0AND";
522  return "NSD";
523  }
530  virtual void GetTrigger(Double_t& low, Double_t& high) const
531  {
532  low = high = fValue;
533  }
534  Int_t MakeTrigger(GraphSysErr* gse, TLegend* l) const
535  {
536  if (TString(gse->GetName()).EqualTo("V0AND")) {
537  gse->AddQualifier("TRIGGER", "V0AND");
538  return -1;
539  }
540  gse->AddQualifier("TRIGGER", "NSD");
541  Int_t id = SysErrorAdder::MakeTrigger(gse, l);
542  if (fSNN == 5023) {
543  Int_t rId = gse->DefineCommon("Diff. ratio",true,
544  0.008,0.014,GraphSysErr::kBox);
545  Int_t mId = gse->DefineCommon("Diff. mass",true,
546  0,0.043,GraphSysErr::kBox);
547  ModError(gse, rId, kDiffRatFill, l);
548  ModError(gse, mId, kDiffMassFill, l);
549  }
550  return id;
551  }
552 
553 };
558 struct CENTAdder : public SysErrorAdder
559 {
562  // Double_t fMin;
563  // Double_t fMax;
575  CENTAdder(const TString& sys, UShort_t sNN, const TString& method)
576  : SysErrorAdder(sys, sNN, method),
577  fCent(0),
578  fValue(0),
579  fCMin(0),
580  fCMax(0),
581  fEM(0),
582  fLookup(0)
583  {
584  Double_t off = .1;
585  if (fSys.EqualTo("pPb", TString::kIgnoreCase) ||
586  fSys.EqualTo("Pbp", TString::kIgnoreCase)) {
587  TString m;
588  if (!method.BeginsWith("CENT")) m = "CENT";
589  m.Append(method);
590  Double_t cent[] = { 0, 5, 10, 20, 40, 60, 80, 100+off };
591  Double_t zna[] = { 1.5, 1.5, 1.5, 1.5, 2., 2., 3. };
592  Double_t v0a[] = { 1.5, 1.5, 1.5, 1.5, 2., 2., 2. };
593  Double_t v0m[] = { 1.5, 1.5, 1.5, 1.5, 2., 2., 4. };
594  Double_t cl1[] = { 2.5, 2.5, 2.5, 4.0, 6., 10., 11. };
595  Double_t* est = 0;
596  if (m.Contains("CENTZNA") || m.Contains("CENTZNC")) est = zna;
597  else if (m.Contains("CENTV0A") || m.Contains("CENTV0C")) est = v0a;
598  else if (m.Contains("CENTV0M")) est = v0m;
599  else if (m.Contains("CENTCL1")) est = cl1;
600  if (!est) {
601  Warning("","Couldn't find estimator from %s", method.Data());
602  return;
603  }
604  fTrig = m;
605  fLookup = new TH1D("lookup", "Centrality error lookup", 7, cent);
606  for (Int_t i = 1; i <= 7; i++) fLookup->SetBinContent(i,est[i-1]/100);
607  }
608  else {
609  fTrig = "CENT";
610  fLookup = new TH1D("lookup", "Centrality error lookup", 100, 0, 100);
611  Double_t min = 0.004, max = 0.062, top = 100; // 0.02
612  if (sNN == 5023) {
613  min = 0.005;
614  max = 0.095;
615  top = 90;
616  fEM = 0.04;
617  // max = (7.5-min)/TMath::Power(80,2) * TMath::Power(100,2) + min;
618  }
619  for (Int_t i = 1; i <= 100; i++) {
620  Double_t c = fLookup->GetXaxis()->GetBinCenter(i);
621  Double_t e = max * TMath::Power(c/top,2)+min;
622  fLookup->SetBinContent(i, e);
623  }
624  }
625  if (fLookup) fLookup->SetDirectory(0);
626 
627  }
628  const char* GetTriggerName() const
629  {
630  // static TString n;
631  // n = fTrig;
632  // n.ReplaceAll("CENT", "Centrality (");
633  // n.Append(")");
634  return "Centrality";
635  }
636  virtual const char* GetTriggerString() const
637  {
638  return Form("%s_%03dd%02d_%03dd%02d",
639  fTrig.Data(),
640  Int_t(fCMin), Int_t(fCMin*100)%100,
641  Int_t(fCMax), Int_t(fCMax*100)%100);
642  }
649  virtual void GetTrigger(Double_t& low, Double_t& high) const
650  {
651  if (!fLookup) { low = high = 0; return; }
652  Int_t bin = fLookup->FindBin(fCent);
653  low = high = fLookup->GetBinContent(bin);
654  }
655  Int_t MakeTrigger(GraphSysErr* gse, TLegend* l) const
656  {
657  gse->AddQualifier("TRIGGER", fTrig);
658  gse->AddQualifier("CENTRALITY IN PCT", Form("%6.2f TO %6.2f",fCMin,fCMax));
659 
660  Int_t ret = SysErrorAdder::MakeTrigger(gse, l);
661 
662  Double_t em = fCMax >= 80 ? fEM : 0;
663  Int_t ei = gse->DefineCommon("EM contamination", true, em, em);
664  ModError(gse, ei, kEMFill, l, 0);
665 
666  return ret;
667  }
676  Double_t GetCentrality(TH1* h, Bool_t verb=false)
677  {
678  TString name(h->GetName());
679  if (verb)
680  Info("", "Extracting centrality from %s", name.Data());
681  Int_t idx = name.Index("_cent");
682  if (idx == kNPOS) {
683  Warning("GetCentrality", "Don't know how to parse %s",
684  name.Data());
685  return -1;
686  }
687  name.Remove(0,idx+5);
688  name.ReplaceAll("d", ".");
689  name.ReplaceAll("_", " ");
690  TObjArray* tokens = name.Tokenize(" ");
691  TObjString* first = static_cast<TObjString*>(tokens->At(0));
692  TObjString* second = static_cast<TObjString*>(tokens->At(1));
693  fCMin = first->String().Atof();
694  fCMax = second->String().Atof();
695  fCent = (fCMin+fCMax)/2;
696  return fCent;
697  }
706  virtual Int_t MakeEmpirical(GraphSysErr* gse, TLegend* l) const
707  {
708  if (GetEmpirical() <= 0) return -1;
709  if (fCent >= 0)
710  return SysErrorAdder::MakeEmpirical(gse, l);
711 
712  AddLegend(l, 0, "Empirical", kEmpiricalFill);
713  return -1;
714  }
715 
726  virtual GraphSysErr* Make(TH1* h,
727  TLegend* l,
728  Double_t eff=1,
729  Bool_t verb=false)
730  {
731  fCent = GetCentrality(h, verb);
732  if (fCent < 0) return 0;
733  return SysErrorAdder::Make(h, l, eff, verb);
734  }
735 };
736 
737 
740  const TString& s,
741  UShort_t e,
742  const TString& c)
743 {
744  TString tt(t);
745  tt.ToUpper();
746 
747  SysErrorAdder* a = 0;
748  if (tt.EqualTo("OFFLINE")) a=new OfflineAdder(s,e);
749  else if (tt.EqualTo("UNKNOWN")) a=new OfflineAdder(s,e);
750  else if (tt.EqualTo("INEL")) a=new INELAdder(s,e);
751  else if (tt.EqualTo("INEL>0")) a=new INELGt0Adder(s,e);
752  else if (tt.EqualTo("INELGT0")) a=new INELGt0Adder(s,e);
753  else if (tt.EqualTo("NSD")) a=new NSDAdder(s,e);
754  else if (tt.EqualTo("MBOR")) a=new BareAdder(s,e,tt);
755  else if (tt.EqualTo("V0AND")) a=new BareAdder(s,e,tt);
756  else if (tt.EqualTo("VISX")) a=new BareAdder(s,e,tt);
757  else a=new CENTAdder(s,e,c);
758  Info("Create", "Created %s adder for %s/%s/%hu/%s: %p",
759  a->GetTriggerString(), t.Data(), s.Data(), e, c.Data(), a);
760  return a;
761 }
762 
763 
764 //
765 // EOF
766 //
const char * GetTriggerName() const
virtual Int_t MakeTrigger(GraphSysErr *gse, TLegend *l) const
void SetSysLineColor(Int_t id, Color_t color)
Definition: GraphSysErr.C:4359
void SetYTitle(const char *title)
Definition: GraphSysErr.C:3598
virtual Double_t GetDensity(Short_t w) const
static SysErrorAdder * Create(const TString &t, const TString &s, UShort_t e, const TString &c)
double Double_t
Definition: External.C:58
void SetSysLineStyle(Int_t id, Style_t style)
Definition: GraphSysErr.C:4371
virtual GraphSysErr * Make(TH1 *h, TLegend *l, Double_t eff=1, Bool_t verb=false)
OfflineAdder(const TString &sys, UShort_t sNN)
virtual Double_t GetMerging(Short_t) const
const char * title
Definition: MakeQAPdf.C:26
Double_t fEM
Double_t fValue
virtual const char * GetTriggerName() const
Definition: SysErrorAdder.C:58
NSDAdder(const TString &sys, UShort_t sNN, Double_t value=-1)
virtual void GetTrigger(Double_t &low, Double_t &high) const =0
virtual Double_t GetHadron(Double_t eta) const
void SetSysOption(Int_t id, EDrawOption_t opt)
Definition: GraphSysErr.C:4431
Int_t MakeTrigger(GraphSysErr *gse, TLegend *l) const
void SetKey(const char *key, const char *value, Bool_t replace=false)
Definition: GraphSysErr.C:4587
Double_t fCMax
void SetPointError(Int_t i, Double_t ex)
Definition: GraphSysErr.C:3468
virtual void GetTrigger(Double_t &low, Double_t &high) const
void SetSysFillStyle(Int_t id, Style_t style)
Definition: GraphSysErr.C:4407
void SetSysLineWidth(Int_t id, Width_t width)
Definition: GraphSysErr.C:4383
void SetSysError(Int_t id, Double_t eyl, Double_t eyh)
Definition: GraphSysErr.C:3528
virtual void GetTrigger(Double_t &low, Double_t &high) const
TCanvas * c
Definition: TestFitELoss.C:172
void AddQualifier(const TString &key, const TString &value, Bool_t replace=false)
Definition: GraphSysErr.C:4759
const char * GetSysTitle(Int_t id) const
Definition: GraphSysErr.C:3761
void AddLegend(TLegend *l, Int_t id, const char *title, Style_t fill) const
Double_t fCMin
Int_t MakeTrigger(GraphSysErr *gse, TLegend *l) const
void SetStatError(Int_t i, Double_t ey)
Definition: GraphSysErr.C:3505
virtual void GetTrigger(Double_t &low, Double_t &high) const
virtual GraphSysErr * Make(TH1 *h, TLegend *l, Double_t eff=1, Bool_t verb=false)
void SetPoint(Int_t i, Double_t x, Double_t y)
Definition: GraphSysErr.C:3457
virtual void GetTrigger(Double_t &low, Double_t &high) const
UInt_t DefineCommon(const char *title, Bool_t relative, Double_t ey, EDrawOption_t option=kFill)
Definition: GraphSysErr.C:3350
virtual void GetTrigger(Double_t &low, Double_t &high) const
int Int_t
Definition: External.C:63
UInt_t DeclarePoint2Point(const char *title, Bool_t relative, EDrawOption_t option=kBar)
Definition: GraphSysErr.C:3393
const char * MakeName(Double_t) const
Double_t fLow
Int_t method
virtual ~SysErrorAdder()
Definition: SysErrorAdder.C:52
Int_t MakeTrigger(GraphSysErr *gse, TLegend *l) const
Definition: External.C:212
Double_t fHigh
void SetSysFillColor(Int_t id, Color_t color)
Definition: GraphSysErr.C:4395
An (X,Y) graph with configurable errors.
Int_t ModColor(Color_t n, UShort_t off) const
Definition: SysErrorAdder.C:60
unsigned long ULong_t
Definition: External.C:38
const char * MakeName(Double_t e) const
virtual Int_t MakeEmpirical(GraphSysErr *gse, TLegend *l) const
virtual void GetTrigger(Double_t &low, Double_t &high) const
void SetSumOption(EDrawOption_t opt)
Definition: GraphSysErr.C:4449
void SetSumLineWidth(Width_t width)
Definition: GraphSysErr.C:4473
short Short_t
Definition: External.C:23
INELAdder(const TString &sys, UShort_t sNN, Double_t low=-1, Double_t high=-1)
Double_t GetCentrality(TH1 *h, Bool_t verb=false)
void ModError(GraphSysErr *gse, Int_t id, Style_t fill, TLegend *l, UShort_t off=64) const
Definition: SysErrorAdder.C:81
SysErrorAdder(const TString &sys, UShort_t sNN, const TString &trig)
Definition: SysErrorAdder.C:44
virtual Double_t GetEmpirical() const
Int_t MakeMerging(GraphSysErr *gse, TLegend *l) const
void SetSumTitle(const char *title)
Definition: GraphSysErr.C:4455
Int_t MakeTrigger(GraphSysErr *gse, TLegend *l) const
virtual const char * GetTriggerString() const
TH1 * fLookup
INELGt0Adder(const TString &sys, UShort_t sNN)
virtual Int_t MakeEmpirical(GraphSysErr *gse, TLegend *l) const
Double_t fCent
Int_t MakeTrigger(GraphSysErr *gse, TLegend *l) const
virtual Int_t MakeHadron(GraphSysErr *gse, TLegend *l) const
virtual const char * MakeName(Double_t eff) const
Int_t MakeTrigger(GraphSysErr *gse, TLegend *l) const
unsigned short UShort_t
Definition: External.C:28
virtual const char * GetTriggerString() const
Definition: SysErrorAdder.C:59
BareAdder(const TString &sys, UShort_t sNN, TString &trig)
bool Bool_t
Definition: External.C:53
Double_t fHigh
UShort_t fSNN
Definition: SysErrorAdder.C:34
Int_t MakeDensity(GraphSysErr *gse, TLegend *l) const
void SetSumLineColor(Color_t color)
Definition: GraphSysErr.C:4461
void SetXTitle(const char *title)
Definition: GraphSysErr.C:3592
Double_t fLow
Double_t fValue
Definition: External.C:196
CENTAdder(const TString &sys, UShort_t sNN, const TString &method)