ROOT logo
#ifndef ALIANALYSISMUMUGRAPHUTIL_H
#define ALIANALYSISMUMUGRAPHUTIL_H

#ifndef ROOT_TObject
#  include "TObject.h"
#endif

#include <vector>
#include <string>
#include <set>

class TGraph;
class TGraphErrors;
class TCanvas;
class TObjArray;

#include "TAttFill.h"
#include "TAttMarker.h"
#include "TAttLine.h"
#include "TAttAxis.h"
#include "TString.h"

class AliAnalysisMuMuGraphUtil : public TObject
{
public:
  
  AliAnalysisMuMuGraphUtil(const char* ocdbpath="raw://");
  virtual ~AliAnalysisMuMuGraphUtil() {}

  static TGraphErrors* Combine(TObjArray& graph, Bool_t compact);
  
  static void Compact(TGraph& g);
  
  void DefaultStyle();

  TCanvas* DrawWith2Scales(TGraph& g1, TGraph& g2, const char* canvasName="c1");

  static Int_t GetRunNumber(const TGraph& g, Int_t i);

  void GetRuns(std::set<int>& runs, TGraph& graph) const;

  static Bool_t IsCompact(TGraph& g);
  
  void PlotSameWithLegend(TObjArray& a, Double_t ymin, Double_t ymax) const;

  void ShouldDrawPeriods(Bool_t value) { fShouldDrawPeriods = value; }

  void StyleGraph(TGraph& graph, UInt_t index) const;
  
  static void UnCompact(TGraph& g);
  
  static void GetYMinAndMax(TGraph& g, Double_t& ymin, Double_t& ymax);
  
  static TGraph* RelDif(TGraph& ga, TGraph& gb);

  
private:
  AliAnalysisMuMuGraphUtil(const AliAnalysisMuMuGraphUtil& rhs); // not implemented
  AliAnalysisMuMuGraphUtil& operator=(const AliAnalysisMuMuGraphUtil& rhs); // not implemented

  TString fOCDBPath; // OCDB path

  std::vector<TAttLine> fAttLine; // line attributes
  std::vector<TAttMarker> fAttMarker; // marker attributes
  std::vector<TAttFill> fAttFill; // fill attributes
  std::vector<TAttAxis> fAttXaxis; // x-axis attributes
  std::vector<TAttAxis> fAttYaxis; // y-axis attributes
  std::vector<std::string> fDrawOptions; // draw options
  
  Bool_t fShouldDrawPeriods; // draw period names on top of graphs
  
  ClassDef(AliAnalysisMuMuGraphUtil,0) // utility class to modify/plot graphs
};

#endif
 AliAnalysisMuMuGraphUtil.h:1
 AliAnalysisMuMuGraphUtil.h:2
 AliAnalysisMuMuGraphUtil.h:3
 AliAnalysisMuMuGraphUtil.h:4
 AliAnalysisMuMuGraphUtil.h:5
 AliAnalysisMuMuGraphUtil.h:6
 AliAnalysisMuMuGraphUtil.h:7
 AliAnalysisMuMuGraphUtil.h:8
 AliAnalysisMuMuGraphUtil.h:9
 AliAnalysisMuMuGraphUtil.h:10
 AliAnalysisMuMuGraphUtil.h:11
 AliAnalysisMuMuGraphUtil.h:12
 AliAnalysisMuMuGraphUtil.h:13
 AliAnalysisMuMuGraphUtil.h:14
 AliAnalysisMuMuGraphUtil.h:15
 AliAnalysisMuMuGraphUtil.h:16
 AliAnalysisMuMuGraphUtil.h:17
 AliAnalysisMuMuGraphUtil.h:18
 AliAnalysisMuMuGraphUtil.h:19
 AliAnalysisMuMuGraphUtil.h:20
 AliAnalysisMuMuGraphUtil.h:21
 AliAnalysisMuMuGraphUtil.h:22
 AliAnalysisMuMuGraphUtil.h:23
 AliAnalysisMuMuGraphUtil.h:24
 AliAnalysisMuMuGraphUtil.h:25
 AliAnalysisMuMuGraphUtil.h:26
 AliAnalysisMuMuGraphUtil.h:27
 AliAnalysisMuMuGraphUtil.h:28
 AliAnalysisMuMuGraphUtil.h:29
 AliAnalysisMuMuGraphUtil.h:30
 AliAnalysisMuMuGraphUtil.h:31
 AliAnalysisMuMuGraphUtil.h:32
 AliAnalysisMuMuGraphUtil.h:33
 AliAnalysisMuMuGraphUtil.h:34
 AliAnalysisMuMuGraphUtil.h:35
 AliAnalysisMuMuGraphUtil.h:36
 AliAnalysisMuMuGraphUtil.h:37
 AliAnalysisMuMuGraphUtil.h:38
 AliAnalysisMuMuGraphUtil.h:39
 AliAnalysisMuMuGraphUtil.h:40
 AliAnalysisMuMuGraphUtil.h:41
 AliAnalysisMuMuGraphUtil.h:42
 AliAnalysisMuMuGraphUtil.h:43
 AliAnalysisMuMuGraphUtil.h:44
 AliAnalysisMuMuGraphUtil.h:45
 AliAnalysisMuMuGraphUtil.h:46
 AliAnalysisMuMuGraphUtil.h:47
 AliAnalysisMuMuGraphUtil.h:48
 AliAnalysisMuMuGraphUtil.h:49
 AliAnalysisMuMuGraphUtil.h:50
 AliAnalysisMuMuGraphUtil.h:51
 AliAnalysisMuMuGraphUtil.h:52
 AliAnalysisMuMuGraphUtil.h:53
 AliAnalysisMuMuGraphUtil.h:54
 AliAnalysisMuMuGraphUtil.h:55
 AliAnalysisMuMuGraphUtil.h:56
 AliAnalysisMuMuGraphUtil.h:57
 AliAnalysisMuMuGraphUtil.h:58
 AliAnalysisMuMuGraphUtil.h:59
 AliAnalysisMuMuGraphUtil.h:60
 AliAnalysisMuMuGraphUtil.h:61
 AliAnalysisMuMuGraphUtil.h:62
 AliAnalysisMuMuGraphUtil.h:63
 AliAnalysisMuMuGraphUtil.h:64
 AliAnalysisMuMuGraphUtil.h:65
 AliAnalysisMuMuGraphUtil.h:66
 AliAnalysisMuMuGraphUtil.h:67
 AliAnalysisMuMuGraphUtil.h:68
 AliAnalysisMuMuGraphUtil.h:69
 AliAnalysisMuMuGraphUtil.h:70
 AliAnalysisMuMuGraphUtil.h:71
 AliAnalysisMuMuGraphUtil.h:72
 AliAnalysisMuMuGraphUtil.h:73
 AliAnalysisMuMuGraphUtil.h:74
 AliAnalysisMuMuGraphUtil.h:75