Ejemplo n.º 1
0
void Pyx::Graphics::Gui::ImGuiImpl::Initialize()
{
    
    if (m_isInitialized)
        Shutdown();

    auto& io = ImGui::GetIO();
    io.IniFilename = nullptr;
    io.LogFilename = nullptr;

	SetupStyle();

    auto* pRenderer = GraphicsContext::GetInstance().GetMainRenderer();
    if (pRenderer)
    {
        switch (pRenderer->GetRendererType())
        {
        case RendererType::D3D9:
        {
            auto* pD3D9Renderer = reinterpret_cast<Renderer::D3D9Renderer*>(pRenderer);
            auto* pDevice9 = pD3D9Renderer->GetDevice();
            if (pDevice9)
            {
                ImGui_ImplDX9_Init(pD3D9Renderer->GetAttachedWindow(), pDevice9);
                if (!m_isResourcesCreated) CreateResources();
                m_isInitialized = true;
            }
            break;
        }
        case RendererType::D3D11:
        {
            auto* pD3D11Renderer = reinterpret_cast<Renderer::D3D11Renderer*>(pRenderer);
            auto* pDevice11 = pD3D11Renderer->GetDevice();
            ID3D11DeviceContext* pDevice11Context = nullptr;
            if (pDevice11)
            {
                pDevice11->GetImmediateContext(&pDevice11Context);
                ImGui_ImplDX11_Init(pD3D11Renderer->GetAttachedWindow(), pDevice11, pDevice11Context);
                pDevice11Context->Release();
                if (!m_isResourcesCreated) CreateResources();
                m_isInitialized = true;
            }
            break;
        }
        default:
            return;
        }
    }
    
}
Ejemplo n.º 2
0
    void SetupStyleFromHue()
    {
#if 1
        // FIXME: those should become parameters to the function
        static int hue = 140;
        static float col_main_sat = 180.f/255.f;
        static float col_main_val = 161.f/255.f;
        static float col_area_sat = 124.f/255.f;
        static float col_area_val = 100.f/255.f;
        static float col_back_sat = 59.f/255.f;
        static float col_back_val = 40.f/255.f;
        
        ImGui::Begin("Hue Style");
        ImGui::SliderInt("master hue", &hue, 0, 255);
        
        float dummy;
        ImVec4 rgb;
        //ImGui::ColorEditMode(ImGuiColorEditMode_HSV);
        
        ImGui::ColorConvertHSVtoRGB(hue/255.f, col_main_sat, col_main_val, rgb.x, rgb.y, rgb.z);
        ImGui::ColorEdit3("main", &rgb.x);
        ImGui::ColorConvertRGBtoHSV(rgb.x, rgb.y, rgb.z, dummy, col_main_sat, col_main_val);
        
        ImGui::ColorConvertHSVtoRGB(hue/255.f, col_area_sat, col_area_val, rgb.x, rgb.y, rgb.z);
        ImGui::ColorEdit3("area", &rgb.x);
        ImGui::ColorConvertRGBtoHSV(rgb.x, rgb.y, rgb.z, dummy, col_area_sat, col_area_val);
        
        ImGui::ColorConvertHSVtoRGB(hue/255.f, col_back_sat, col_back_val, rgb.x, rgb.y, rgb.z);
        ImGui::ColorEdit3("back", &rgb.x);
        ImGui::ColorConvertRGBtoHSV(rgb.x, rgb.y, rgb.z, dummy, col_back_sat, col_back_val);
        
        ImGui::End();
#endif
        
        ImGuiStyle& style = ImGui::GetStyle();
        
        ImVec4 col_text = ImColor::HSV(hue/255.f,  20.f/255.f, 235.f/255.f);
        ImVec4 col_main = ImColor::HSV(hue/255.f, col_main_sat, col_main_val);
        ImVec4 col_back = ImColor::HSV(hue/255.f, col_back_sat, col_back_val);
        ImVec4 col_area = ImColor::HSV(hue/255.f, col_area_sat, col_area_val);
        
        SetupStyle(col_text, col_main, col_back, col_area);
    }
// ______________________________________________________________________________________
void plotVsDeltaEta_nice(const Char_t* name = "ratioVsDeltaEta") {

  gROOT->LoadMacro("include/toolsEtaNice.C++");

  SetupStyle();

  SetGlobals();

  // -----------------------------------------------------

  TFile *inFiles[nEtaSets][nDataSets][nMoments];

  TGraphErrors *graphs[nEtaSets][nDataSets][nMoments];

  for (int idxEta = 0 ; idxEta < nEtaSets; ++idxEta) 
    for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) 
      for (int idxMoment = 0 ; idxMoment < nMoments; ++idxMoment) { 
	inFiles[idxEta][idxDataSet][idxMoment] = TFile::Open(Form("output/%s/%s/Moments_%s.root", 
								  aEtaSets[idxEta], aDataSets[idxDataSet], aMoments[idxMoment]));
	graphs[idxEta][idxDataSet][idxMoment] = static_cast<TGraphErrors*>((inFiles[idxEta][idxDataSet][idxMoment]->Get(aMoments[idxMoment]))->Clone());
	if (inFiles[idxEta][idxDataSet][idxMoment])
	  (inFiles[idxEta][idxDataSet][idxMoment])->Close();
      }
  
  // -----------------------------------------------------
  
  TLegend *legRat[nDataSets];
  
  for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
    legRat[idxDataSet] = new TLegend(0.12, 0.12, 0.70, 0.495);
    legRat[idxDataSet]->SetTextAlign(12);
    legRat[idxDataSet]->SetTextSize(0.06);
    legRat[idxDataSet]->SetFillColor(1182);
    legRat[idxDataSet]->SetLineColor(0);
    legRat[idxDataSet]->SetBorderSize(0);
  }

  // -----------------------------------------------------

  TGraphErrors *etaGraphs[9][nDataSets][nMoments];

  for (int idxCent = 0; idxCent < nCent; idxCent++) {
    for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
      for (int idxMoment = 4 ; idxMoment < nMoments; ++idxMoment) {
	float y[nEtaSets];
	float ey[nEtaSets];
	for (int idxEta = 0 ; idxEta < nEtaSets; ++idxEta) {	
	  y[idxEta]  = graphs[idxEta][idxDataSet][idxMoment]->GetY()[idxCent];
	  ey[idxEta] = graphs[idxEta][idxDataSet][idxMoment]->GetEY()[idxCent];
	} 
	
	etaGraphs[idxCent][idxDataSet][idxMoment] = new TGraphErrors(nEtaSets, aEtaSetBinWidth, y, 0, ey);
	PrepareGraph(etaGraphs[idxCent][idxDataSet][idxMoment]);
	
      } // for (int idxMoment = 0 ; idxMoment < nMoments; ++idxMoment) {
    } // for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
  } // for (int idxCent = 0; idxCent < 9; idxCent++) {

  // -----------------------------------------------------

  for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
    TPad *pad = SetupCanvas(Form("canDeltaEta_Ratio_%s", aDataSets[idxDataSet]), aDataSetsTitle[idxDataSet], "#Delta#eta", 0.48);
    
    for (int idxMoment = 4 ; idxMoment < nMoments; ++idxMoment) {
      pad->cd(idxMoment-3);
      
      for (int idxCent = 0; idxCent < 9; idxCent++) {
	if (idxCent != 0 && idxCent != 1 && idxCent != 8 && idxCent != 4 )
	  continue;
	
	TGraphErrors *g = etaGraphs[idxCent][idxDataSet][idxMoment];
	
	if (idxCent == 0) 
	  ShiftGraphX(g, -0.015);
	else if (idxCent == 1) 
	  ShiftGraphX(g, -0.005);
	else if (idxCent == 4) 
	  ShiftGraphX(g, 0.005);
	else if (idxCent == 8) 
	  ShiftGraphX(g, 0.015);
	
	ConfigGraph(g, idxMoment, idxCent);
	
	if (idxCent == 0) {
	  g->Draw("AP");
	  
	  if (idxMoment == 5) {
	    // TLine *line0 = new TLine(aMinX, 0, aMaxX, 0);
	    // line0->SetLineColor(kGray+1);
	    // line0->SetLineStyle(2);
	    // line0->SetLineWidth(2);
	    // line0->Draw();
	  }
	  else if (idxMoment == 6) {
	    TLine *line1 = new TLine(aMinX, 1, aMaxX, 1);
	    line1->SetLineColor(kGray+1);
	    line1->SetLineStyle(2);
	    line1->SetLineWidth(2);
	    line1->Draw();
	    legRat[idxDataSet]->AddEntry(line1, "Poisson", "l");
	  }
	}
	
	g->Draw("PSAME");
	
	if (idxMoment == 4) 
	  legRat[idxDataSet]->AddEntry(etaGraphs[idxCent][idxDataSet][4], Form("%s", cent1[idxCent]), "pl");
	
      } // for (int idxCent = 0; idxCent < 9; idxCent++) { 
    } // for (int idxMoment = 0 ; idxMoment < nMoments; ++idxMoment) {
    
    pad->cd(2);
    TLatex *texb_3 = new TLatex(0.05, 0.55, "Au+Au collisions #sqrt{#it{s}_{NN}} = 14.5 GeV");
    texb_3->SetTextSize(0.07);
    texb_3->Draw("same");
    
    TLatex *texb_3a = new TLatex(0.05, 0.49, "Net-Charge, 0.2 < #it{p}_{T} (GeV/#it{c}) < 2.0, 0-5%");
    texb_3a->SetTextSize(0.07);
    texb_3a->Draw("same");
    
    TLatex *texb_3b = new TLatex(0.05,0.44, "statistical errors only");
    texb_3b->SetTextSize(0.06);
    texb_3b->Draw("same");
    
    pad->cd(1);
    TLatex *texb_4 = new TLatex(0.7, 19, "STAR Preliminary");
    texb_4->SetTextSize(0.07);
    texb_4->Draw("same");
    
    pad->cd(3);
    legRat[idxDataSet]->Draw();
    
    pad->Modified();
  } // for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
  
  // -----------------------------------------------------

  SaveCanvas(name);

  // -----------------------------------------------------
  
  TFile *fOut = TFile::Open("STAR_QM2015_Preliminary.root", "UPDATE");
  fOut->cd();
  
  TList* list = new TList;

  for (int idxMoment = 4; idxMoment < nMoments; ++idxMoment) {
    for (int idxCent = 0; idxCent < nCent; ++idxCent) {
      if (idxCent > 1) 
	continue;

      if (idxCent == 0) 
	ShiftGraphX(etaGraphs[idxCent][0][idxMoment], 0.015);
      else if (idxCent == 1) 
	ShiftGraphX(etaGraphs[idxCent][0][idxMoment], 0.005);
      else if (idxCent == 4) 
	ShiftGraphX(etaGraphs[idxCent][0][idxMoment], -0.005);
      else if (idxCent == 8) 
	ShiftGraphX(etaGraphs[idxCent][0][idxMoment], -0.015);
      
      etaGraphs[idxCent][0][idxMoment]->SetName(Form("Net-Charge_%s_DeltaEta_14.5GeV_%s_stat", aMoments[idxMoment], cent[idxCent]));
      list->Add(etaGraphs[idxCent][0][idxMoment]);
    }
  }

  list->Write("Net-Charge_VsDeltaEta", TObject::kSingleKey);
  fOut->Close();
}
Ejemplo n.º 4
0
// ______________________________________________________________________________________
void plotEnergyKaon(const Char_t* name = "ratioNetKaonVsEnergy") {

  Int_t idxNames = kNetK;

  gROOT->LoadMacro("include/toolsEnergyNice.C++");
  gROOT->LoadMacro("include/getPublished.C++");

  SetupStyle();

  SetGlobals();

  getPublished();

  // -----------------------------------------------------

  TFile *inFiles[nEnergies][nMoments];
  TFile *inFilesUrqmd[nEnergies];

  TGraphErrors *inGraphsStat[nEnergies][nMoments+1];
  TGraphErrors *inGraphsPoisson[nEnergies][nMoments];
  TGraphErrors *inGraphsUrqmd[nEnergies][nMoments];

  for (int idxEnergy = 0; idxEnergy < nEnergies; ++idxEnergy) { 

    if (idxEnergy != 2)
      inFilesUrqmd[idxEnergy]= TFile::Open(Form("URQMD/urqmd_kaon/AuAu%sGeV_Vz30_kpi1.root", exactEnergies[idxEnergy]));

    for (int idxMoment = 0; idxMoment < nMoments; ++idxMoment) { 
      // -- value and stat errors
      inFiles[idxEnergy][idxMoment] = TFile::Open(Form("%s/%sGeV/moments_ana/Moments_%s.root", 
						       aNames[idxNames], exactEnergies[idxEnergy], aMoments[idxMoment]));

      inGraphsStat[idxEnergy][idxMoment] = (idxMoment != 5) ? static_cast<TGraphErrors*>((inFiles[idxEnergy][idxMoment]->Get(aMoments[idxMoment]))->Clone()) :
      	static_cast<TGraphErrors*>((inFiles[idxEnergy][idxMoment]->Get(Form("%s_Poisson_ratio", aMoments[idxMoment])))->Clone());

      if (idxMoment == 5) // get SK also
	inGraphsStat[idxEnergy][nMoments] = static_cast<TGraphErrors*>((inFiles[idxEnergy][idxMoment]->Get(aMoments[idxMoment]))->Clone());

      // -- poisson
      inGraphsPoisson[idxEnergy][idxMoment] = static_cast<TGraphErrors*>((inFiles[idxEnergy][idxMoment]->Get(Form("%s_Poisson_base", aMoments[idxMoment])))->Clone());
      
      if (inFiles[idxEnergy][idxMoment])
       	inFiles[idxEnergy][idxMoment]->Close();
      
      // -- urqmd
      if (idxEnergy != 2) {
       	if (idxMoment == 4) 
       	  inGraphsUrqmd[idxEnergy][idxMoment] = static_cast<TGraphErrors*>((inFilesUrqmd[idxEnergy]->Get(Form("R21")))->Clone());
	else if (idxMoment == 5) 
       	  inGraphsUrqmd[idxEnergy][idxMoment] = static_cast<TGraphErrors*>((inFilesUrqmd[idxEnergy]->Get(Form("%s_Pos_ratio", aMoments[idxMoment])))->Clone());
       	else if (idxMoment == 6) 
       	  inGraphsUrqmd[idxEnergy][idxMoment] = static_cast<TGraphErrors*>((inFilesUrqmd[idxEnergy]->Get(aMoments[idxMoment]))->Clone());
      }
    }
  }

  // -----------------------------------------------------
  // -- Make graphs
  
  for (int idxEnergy = 0; idxEnergy < nEnergies; ++idxEnergy) { 
    for (int idxMoment = 4; idxMoment < nMoments+1; ++idxMoment) {   
      for (int idxCent = 0; idxCent < nCent; ++idxCent) {
	if (idxCent != 0 && idxCent != 8)
	  continue;

	Double_t xIn, yIn;
	inGraphsStat[idxEnergy][idxMoment]->GetPoint(idxCent, xIn, yIn);
	Double_t yErrorStatIn = inGraphsStat[idxEnergy][idxMoment]->GetErrorY(idxCent);

	Int_t accessCent = (idxCent == 0) ? 0 : 1;
	Int_t accessMoment = idxMoment - 4;
	Double_t yErrorSysIn  = sysErrors[accessMoment][accessCent][idxEnergy];

	for (Int_t idx = 0; idx < 2; ++idx) {
	  Double_t xBin = (idx == 0) ? snn[idxEnergy] : mub[idxEnergy];
	  graphStat[idx][idxMoment][idxCent]->SetPoint(idxEnergy, xBin, yIn);
	  graphStat[idx][idxMoment][idxCent]->SetPointError(idxEnergy, 0, yErrorStatIn);
	  graphSys[idx][idxMoment][idxCent]->SetPoint(idxEnergy, xBin, yIn);
	  graphSys[idx][idxMoment][idxCent]->SetPointError(idxEnergy, 0, yErrorSysIn);
	}
	
	if (idxMoment == nMoments)
	  continue;

	inGraphsPoisson[idxEnergy][idxMoment]->GetPoint(idxCent, xIn, yIn);    
	for (Int_t idx = 0; idx < 2; ++idx) {
	  Double_t xBin = (idx == 0) ? snn[idxEnergy] : mub[idxEnergy];
	  graphPoisson[idx][idxMoment][idxCent]->SetPoint(idxEnergy, xBin, yIn);
	}

	if (idxCent == 0 && idxEnergy != 2) {
	  Double_t yErrorUrqmdIn = inGraphsUrqmd[idxEnergy][idxMoment]->GetErrorY(idxCent);	

	  inGraphsUrqmd[idxEnergy][idxMoment]->GetPoint(idxCent, xIn, yIn);    
	  for (Int_t idx = 0; idx < 2; ++idx) {
	    Double_t xBin = (idx == 0) ? snn[idxEnergy] : mub[idxEnergy];
	    Int_t energyArrayAccess = (idxEnergy >= 2) ? idxEnergy-1 : idxEnergy;
	    graphUrqmd[idx][idxMoment][idxCent]->SetPoint(energyArrayAccess, xBin, yIn);
	    graphUrqmd[idx][idxMoment][idxCent]->SetPointError(energyArrayAccess, 0, yErrorUrqmdIn);
	  }
	}
      } // for (int idxCent = 0; idxCent < nCent; ++idxCent) {
    } // for (int idxMoment = 0 ; idxMoment < nMoments; ++idxMoment) {   
  } // for (int idxEnergy = 0 ; idxEnergy < nEnergies; ++idxEnergy) { 

  // -----------------------------------------------------

  SetupCanvas(name, Form("%s Ratio energy dependence", aNames[idxNames]));
  CreateLegends(2, 3, 0.4, 0.09);

  // -----------------------------------------------------

  for (int idxMoment = 4; idxMoment < nMoments; ++idxMoment) {
    pad->cd(idxMoment-3);
    gPad->SetLogx();

    for (int idxCent = 0; idxCent < nCent; ++idxCent) {
      if (idxCent != 0 && idxCent != 8)
	continue;

      DrawSet(graphStat[0][idxMoment][idxCent],  graphSys[0][idxMoment][idxCent],
	      graphUrqmd[0][idxMoment][idxCent], graphPoisson[0][idxMoment][idxCent],
	      idxMoment, idxCent);
    } // for (int idxCent = 0; idxCent < nCent; ++idxCent) {

    graphStat[0][idxMoment][0]->Draw("ZP,SAME");
    graphSys[0][idxMoment][0]->Draw("[],SAME");
  } // for (int idxMoment = 4; idxMoment < nMoments; ++idxMoment) {

  legTheo->AddEntry(graphUrqmd[0][4][0], Form("%s UrQMD", cent1[0]), "f");
      
  // -----------------------------------------------------

  LabelCanvas(aNames[idxNames], aNamesPt[idxNames]);
  SaveCanvas(name);

  // -----------------------------------------------------

  TFile *fOut = TFile::Open("STAR_QM2015_Preliminary.root", "UPDATE");
  fOut->cd();
  
  TList* list = new TList;
  
  for (int idxMoment = 4; idxMoment < nMoments+1; ++idxMoment) {
    for (int idxCent = 0; idxCent < nCent; ++idxCent) {
      if (idxCent != 0) 
	continue;
      
      graphStat[0][idxMoment][idxCent]->SetName(Form("%s_%s_sNN_%s_stat", aNames[idxNames], aMoments2[idxMoment], cent[idxCent]));
      graphSys[0][idxMoment][idxCent]->SetName(Form("%s_%s_sNN_%s_sys",  aNames[idxNames], aMoments2[idxMoment], cent[idxCent]));
      
      list->Add(graphStat[0][idxMoment][idxCent]);
      list->Add(graphSys[0][idxMoment][idxCent]);
    }
  }
  list->Write(aNames[idxNames], TObject::kSingleKey);
  fOut->Close();

  // -----------------------------------------------------

  TFile *fOutAll = TFile::Open("STAR_Preliminary.root", "UPDATE");
  fOutAll->cd();
  
  TList* listAll = new TList;

  for (int idxMoment = 4; idxMoment < nMoments+1; ++idxMoment) {
    for (int idxCent = 0; idxCent < nCent; ++idxCent) {
      if (graphStat[0][idxMoment][idxCent] && graphStat[0][idxMoment][idxCent]->GetN() > 0) {
	graphStat[0][idxMoment][idxCent]->SetName(Form("%s_%s_sNN_%s_stat", aNames[idxNames], aMoments2[idxMoment], cent[idxCent]));
	listAll->Add(graphStat[0][idxMoment][idxCent]);
      }
      if (graphSys[0][idxMoment][idxCent] && graphSys[0][idxMoment][idxCent]->GetN() > 0) {
	graphSys[0][idxMoment][idxCent]->SetName(Form("%s_%s_sNN_%s_sys", aNames[idxNames], aMoments2[idxMoment], cent[idxCent]));
	listAll->Add(graphSys[0][idxMoment][idxCent]);
      }

      if (idxMoment == nMoments)
	continue;

      if (graphUrqmd[0][idxMoment][idxCent] && graphUrqmd[0][idxMoment][idxCent]->GetN() > 0) {
	graphUrqmd[0][idxMoment][idxCent]->SetName(Form("%s_%s_sNN_%s_urqmd", aNames[idxNames], aMoments2[idxMoment], cent[idxCent]));
	listAll->Add(graphUrqmd[0][idxMoment][idxCent]);
      }
      if (graphPoisson[0][idxMoment][idxCent] && graphPoisson[0][idxMoment][idxCent]->GetN() > 0) {
	graphPoisson[0][idxMoment][idxCent]->SetName(Form("%s_%s_sNN_%s_poisson", aNames[idxNames], aMoments2[idxMoment], cent[idxCent]));
	listAll->Add(graphPoisson[0][idxMoment][idxCent]);
      }
    }
  }
  listAll->Write(aNames[idxNames], TObject::kSingleKey);
  fOutAll->Close();
}
Ejemplo n.º 5
0
void MakePIDqaReport(const char* inputFile, const char* outputFile="PIDqaReport.pdf", TString dirInFile = "")
{
  //
  // Make a pdf file with the efficiency report
  //

  LoadLibs();
  SetupStyle();

  TFile f(inputFile);
  if (!f.IsOpen()){
    printf("Could not open file '%s'\n",f.GetName());
    return;
  }
  
  TString listName = "PIDqa";
  if (dirInFile != "")
    listName = listName.Prepend(Form("%s/", dirInFile.Data()));
  
  printf("%s", listName.Data());
  TList *qaList = (TList*) f.Get(listName.Data());
  if (!qaList){
    printf("Could not find list '%s' in file '%s'\n",listName.Data(), f.GetName());
    return;
  }

  fCanvas=new TCanvas;

  TPDF p(outputFile);

  //
  // Invariant mass plots
  //


  //
  // Make QA info
  //

  // ITS PID
  PublishCanvas(qaList,"ITS","hNsigmaP_ITS_%s");

  // TPC PID
  TList *qaListTPC = (TList*)qaList->FindObject("TPC");
  if (qaListTPC){
    PublishCanvas(qaListTPC,"TPCBasic","hNsigmaP_TPC_Basic_%s");
    PublishCanvas(qaListTPC,"TPCV0","hNsigmaP_TPC_V0_%s");
    //   if (man->GetCurrentPeriod()=="11h"){
      //     PublishCanvas(qaListTPC,"TPC","hNsigmaP_TPC_Basic_%s_Hybrid","Hybrid");
    //     PublishCanvas(qaListTPC,"TPC","hNsigmaP_TPC_Basic_%s_OROChigh","OROChigh");
    //   }
  }
  else {
    printf("Could not find list '%s/TPC' in file '%s'\n", listName.Data(), f.GetName());
  }

  // TPC PID after 3 sigma TOF cut
  PublishCanvas(qaList,"TPC_TOF","hNsigmaP_TPC_TOF_%s");

  // TOF PID
  PublishCanvas(qaList,"TOF","hNsigmaP_TOF_%s");

  // TRD PID
  fCanvas->Divide(2,3);
  TH2 *hLikeP_TRD_3tls_electron=Get2DHistogramfromList(qaList,"TRD","hLikeP_TRD_3tls_electron");
  TH2 *hLikeP_TRD_3tls_pion=Get2DHistogramfromList(qaList,"TRD","hLikeP_TRD_3tls_pion");
  TH2 *hLikeP_TRD_4tls_electron=Get2DHistogramfromList(qaList,"TRD","hLikeP_TRD_4tls_electron");
  TH2 *hLikeP_TRD_4tls_pion=Get2DHistogramfromList(qaList,"TRD","hLikeP_TRD_4tls_pion");
  TH2 *hLikeP_TRD_5tls_electron=Get2DHistogramfromList(qaList,"TRD","hLikeP_TRD_5tls_electron");
  TH2 *hLikeP_TRD_5tls_pion=Get2DHistogramfromList(qaList,"TRD","hLikeP_TRD_5tls_pion");

  /*
   *  cTRDnsigma[countcanvas]->cd(1);
   *  TPaveText pt3TRD(.02,.02,.49,.52);
   *  pt3TRD.SetTextAlign(11);
   *  pt3TRD.SetTextSizePixels(16);
   *  pt3TRD.AddText(Form(" TRD PID QA %s.%s.%d", first.Data(), man->GetCurrentPeriod().Data(), pass));
   *  pt3TRD.Draw();
   */
  fCanvas->cd(1);
  SetupPadStyle();
  hLikeP_TRD_3tls_electron->Draw("colz");
  fCanvas->cd(2);
  SetupPadStyle();
  hLikeP_TRD_3tls_pion->Draw("colz");
  fCanvas->cd(3);
  SetupPadStyle();
  hLikeP_TRD_4tls_electron->Draw("colz");
  fCanvas->cd(4);
  SetupPadStyle();
  hLikeP_TRD_4tls_pion->Draw("colz");
  fCanvas->cd(5);
  SetupPadStyle();
  hLikeP_TRD_5tls_electron->Draw("colz");
  fCanvas->cd(6);
  SetupPadStyle();
  hLikeP_TRD_5tls_pion->Draw("colz");

  fCanvas->Update();
  fCanvas->Clear();

  // TPC Response info
  TObjArray *qaInfo=(TObjArray*)qaList->FindObject("QAinfo");
  TObjArray *tpcInfo=0x0;
  if (qaInfo && (tpcInfo=(TObjArray*)qaInfo->FindObject("TPC_info"))){
    TObjArray *tpcSplineInfo=(TObjArray*)tpcInfo->FindObject("TPC_spline_names");
    TObjArray *tpcConfigInfo=(TObjArray*)tpcInfo->FindObject("TPC_config_info");
    fCanvas->Divide(1,2);
  
    TPaveText pt(.1,.1,.9,.9,"NDC");
    pt.SetBorderSize(1);
    pt.SetFillColor(0);
    pt.SetTextSizePixels(16);

    if (tpcSplineInfo){
      for (Int_t i=0; i<tpcSplineInfo->GetEntriesFast();++i) pt.AddText(tpcSplineInfo->At(i)->GetName());
    }
    
    TPaveText pt2(.1,.1,.9,.9,"NDC");
    pt2.SetBorderSize(1);
    pt2.SetFillColor(0);
    pt2.SetTextSizePixels(16);
    if (tpcConfigInfo){
      for (Int_t i=0; i<tpcConfigInfo->GetEntriesFast();++i) pt2.AddText(tpcConfigInfo->At(i)->GetName());
    }

    fCanvas->cd(1);
    pt.Draw();
    fCanvas->cd(2);
    pt2.Draw();
    
    fCanvas->Update();
    fCanvas->Clear();
  }
  
  delete qaList;

  p.Close();
  delete fCanvas;
}
// ______________________________________________________________________________________
void plotEnergyProtonOverview(const Char_t* name = "ratioNetProtonVsEnergyOverview") {

  Int_t idxNames = kNetP;

  gROOT->LoadMacro("include/toolsEnergyNice.C++");
  gROOT->LoadMacro("include/getPublished.C++");

  SetupStyle();

  SetGlobals();

  getPublished();

  // -----------------------------------------------------

  TFile *inFiles[nEnergies];
  TFile *inFilesUrqmd[nEnergies];

  TGraphErrors *inGraphsStat[nEnergies][nMoments];
  TGraphErrors *inGraphsSys[nEnergies][nMoments];
  TGraphErrors *inGraphsPoisson[nEnergies][nMoments];
  TGraphErrors *inGraphsUrqmd[nEnergies][nMoments];

  for (int idxEnergy  = 0 ; idxEnergy < nEnergies; ++idxEnergy) { 
    inFiles[idxEnergy] = TFile::Open(Form("Net-Proton/moments_%sGeV_preli.root", energies[idxEnergy]));

    if (idxEnergy != 2)
      inFilesUrqmd[idxEnergy]= TFile::Open(Form("URQMD/urqmd_proton/AuAu%sGeV_netp_refmult3_y0.5.root", exactEnergies[idxEnergy]));
    
    for (int idxMoment = 4 ; idxMoment < nMoments; ++idxMoment) { 

      // -- value and stat errors
      inGraphsStat[idxEnergy][idxMoment] = (idxMoment != 5) ? 
       	static_cast<TGraphErrors*>((inFiles[idxEnergy]->Get(Form("%s_stat", aMoments[idxMoment])))->Clone()) :
       	static_cast<TGraphErrors*>((inFiles[idxEnergy]->Get(Form("%s_pos_ratio_stat", aMoments[idxMoment])))->Clone());
      
      // -- sysErrors     
      inGraphsSys[idxEnergy][idxMoment] = (idxMoment != 5) ? 
       	static_cast<TGraphErrors*>((inFiles[idxEnergy]->Get(Form("%s_sys", aMoments[idxMoment])))->Clone()) :
       	static_cast<TGraphErrors*>((inFiles[idxEnergy]->Get(Form("%s_pos_ratio_sys", aMoments[idxMoment])))->Clone());
      
      // -- poisson
      if (idxMoment == 4)
	inGraphsPoisson[idxEnergy][idxMoment] = static_cast<TGraphErrors*>((inFiles[idxEnergy]->Get(Form("%s_base_pos_stat", aMoments[idxMoment])))->Clone());
      
      // -- urqmd
      if (idxEnergy !=2) {
	if (idxMoment == 4) 
          inGraphsUrqmd[idxEnergy][idxMoment] = static_cast<TGraphErrors*>((inFilesUrqmd[idxEnergy]->Get(Form("R21")))->Clone());
	else if (idxMoment == 5) 
          inGraphsUrqmd[idxEnergy][idxMoment] = static_cast<TGraphErrors*>((inFilesUrqmd[idxEnergy]->Get(Form("%s_Pos_ratio", aMoments[idxMoment])))->Clone());
	else if (idxMoment == 6) 
	  inGraphsUrqmd[idxEnergy][idxMoment] = static_cast<TGraphErrors*>((inFilesUrqmd[idxEnergy]->Get(aMoments[idxMoment]))->Clone());
      }
    }
    
    if (inFiles[idxEnergy])
      inFiles[idxEnergy]->Close();
  }
  
  // -----------------------------------------------------
  // -- Make graphs
  
  for (int idxEnergy  = 0; idxEnergy < nEnergies; ++idxEnergy) { 
    for (int idxMoment = 4; idxMoment < nMoments; ++idxMoment) {   
      for (int idxCent = 0; idxCent < nCent; ++idxCent) {
	if (idxCent != 0 && idxCent != 1 && idxCent != 8)
	  continue;

	Double_t xIn, yIn;
	inGraphsStat[idxEnergy][idxMoment]->GetPoint(idxCent, xIn, yIn);
	Double_t yErrorStatIn = inGraphsStat[idxEnergy][idxMoment]->GetErrorY(idxCent);
	Double_t yErrorSysIn  = inGraphsSys[idxEnergy][idxMoment]->GetErrorY(idxCent);

	for (Int_t idx = 0; idx < 2; ++idx) {
	  Double_t xBin = (idx == 0) ? snn[idxEnergy] : mub[idxEnergy];  
	  graphStat[idx][idxMoment][idxCent]->SetPoint(idxEnergy, xBin, yIn);
	  graphStat[idx][idxMoment][idxCent]->SetPointError(idxEnergy, 0, yErrorStatIn);
	  graphSys[idx][idxMoment][idxCent]->SetPoint(idxEnergy, xBin, yIn);
	  graphSys[idx][idxMoment][idxCent]->SetPointError(idxEnergy, 0, yErrorSysIn);
	}
	
	if (idxMoment == 4) {
	  inGraphsPoisson[idxEnergy][idxMoment]->GetPoint(idxCent, xIn, yIn);    
	  for (Int_t idx = 0; idx < 2; ++idx) {
	    Double_t xBin = (idx == 0) ? snn[idxEnergy] : mub[idxEnergy];  
	    graphPoisson[idx][idxMoment][idxCent]->SetPoint(idxEnergy, xBin, yIn);
	  }
	}

	if (idxCent == 0 && idxEnergy != 2) {
	  Double_t yErrorUrqmdIn = inGraphsUrqmd[idxEnergy][idxMoment]->GetErrorY(idxCent);	

	  inGraphsUrqmd[idxEnergy][idxMoment]->GetPoint(idxCent, xIn, yIn);    
	  for (Int_t idx = 0; idx < 2; ++idx) {
	    Double_t xBin = (idx == 0) ? snn[idxEnergy] : mub[idxEnergy];
	    Int_t energyArrayAccess = (idxEnergy >= 2) ? idxEnergy-1 : idxEnergy;
	    graphUrqmd[idx][idxMoment][idxCent]->SetPoint(energyArrayAccess, xBin, yIn);
	    graphUrqmd[idx][idxMoment][idxCent]->SetPointError(energyArrayAccess, 0, yErrorUrqmdIn);
	  }
	}

      } // for (int idxCent = 0; idxCent < nCent; ++idxCent) {
    } // for (int idxMoment = 0 ; idxMoment < nMoments; ++idxMoment) {   
  } // for (int idxEnergy = 0 ; idxEnergy < nEnergies; ++idxEnergy) { 

  // -----------------------------------------------------

  SetupCanvas(name, Form("%s Ratio energy dependence", aNames[idxNames]));
  CreateLegends(2, 3, 0.4, 0.28);

  // -----------------------------------------------------

  for (int idxMoment = 4; idxMoment < nMoments; ++idxMoment) {
    pad->cd(idxMoment-3);
    gPad->SetLogx();

    for (int idxCent = 0; idxCent < nCent; ++idxCent) {
      if (idxCent != 0 && idxCent != 8)
	continue;

      DrawSet(graphStat[0][idxMoment][idxCent],  graphSys[0][idxMoment][idxCent],
	      graphUrqmd[0][idxMoment][idxCent], graphPoisson[0][idxMoment][idxCent],
	      idxMoment, idxCent);
    } // for (int idxCent = 0; idxCent < nCent; ++idxCent) {

    graphStat[0][idxMoment][0]->Draw("ZP,SAME");
    graphSys[0][idxMoment][0]->Draw("[],SAME");
  } // for (int idxMoment = 4; idxMoment < nMoments; ++idxMoment) {

  legTheo->AddEntry(graphUrqmd[0][4][0], Form("%s UrQMD", cent1[0]), "f");
      
  // -----------------------------------------------------

  LabelCanvas(aNames[idxNames], aNamesPt[idxNames]);
  SaveCanvas(name);
}
Ejemplo n.º 7
0
// ______________________________________________________________________________________
void plotVsEta_nice(const Char_t* name = "ratioVsEta") {

    gROOT->LoadMacro("include/toolsEtaNice.C++");

    SetupStyle();

    SetGlobals();

    // -----------------------------------------------------

    TFile *inFiles[nEtaSets][nDataSets][nMoments];

    TGraphErrors *graphs[nEtaSets][nDataSets][nMoments];

    for (int idxEta = 0 ; idxEta < nEtaSets; ++idxEta)
        for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet)
            for (int idxMoment = 0 ; idxMoment < nMoments; ++idxMoment) {
                inFiles[idxEta][idxDataSet][idxMoment] = TFile::Open(Form("output/%s/%s/Moments_%s.root",
                        aEtaSets[idxEta], aDataSets[idxDataSet], aMoments[idxMoment]));
                graphs[idxEta][idxDataSet][idxMoment] = static_cast<TGraphErrors*>((inFiles[idxEta][idxDataSet][idxMoment]->Get(aMoments[idxMoment]))->Clone());
                if (inFiles[idxEta][idxDataSet][idxMoment])
                    (inFiles[idxEta][idxDataSet][idxMoment])->Close();
            }

    // -----------------------------------------------------

    TLegend *legRat[nDataSets];

    for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
        legRat[idxDataSet] = new TLegend(0.14, 0.12, 0.78, 0.27);
        legRat[idxDataSet]->SetTextAlign(12);
        legRat[idxDataSet]->SetTextSize(0.06);
        legRat[idxDataSet]->SetFillColor(1182);
        legRat[idxDataSet]->SetLineColor(0);
        legRat[idxDataSet]->SetBorderSize(0);
        legRat[idxDataSet]->SetNColumns(3);
    }

    // -----------------------------------------------------

    TGraphErrors *etaGraphs[9][nEtaSuperSets][nDataSets][nMoments];

    for (int idxCent = 0; idxCent < nCent; idxCent++) {
        for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
            for (int idxMoment = 4 ; idxMoment < nMoments; ++idxMoment) {

                int idxEta = -1;
                for (int idxEtaSuper = 0 ; idxEtaSuper < nEtaSuperSets; ++idxEtaSuper) {
                    float x[aEtaSuperSets[idxEtaSuper]];
                    float y[aEtaSuperSets[idxEtaSuper]];
                    float ex[aEtaSuperSets[idxEtaSuper]];
                    float ey[aEtaSuperSets[idxEtaSuper]];

                    for (int idxEtaSub = 0 ; idxEtaSub < aEtaSuperSets[idxEtaSuper]; ++idxEtaSub) {
                        ++idxEta;

                        x[idxEtaSub]  = aEtaSetBinCenter[idxEta];
                        ex[idxEtaSub] = aEtaSetBinWidth[idxEta]/2.;
                        y[idxEtaSub]  = graphs[idxEta][idxDataSet][idxMoment]->GetY()[idxCent];
                        ey[idxEtaSub] = graphs[idxEta][idxDataSet][idxMoment]->GetEY()[idxCent];
                    } // for (int idxEtaSub = 0 ; idxEtaSub < aEtaSuperSets[idxEtaSuper]; ++idxEtaSub) {

                    etaGraphs[idxCent][idxEtaSuper][idxDataSet][idxMoment] = new TGraphErrors(aEtaSuperSets[idxEtaSuper], x, y, ex, ey);
                    PrepareGraph(etaGraphs[idxCent][idxEtaSuper][idxDataSet][idxMoment]);
                } // for (int idxEtaSuper = 0 ; idxEtaSuper < nEtaSuperSets; ++idxEtaSuper) {

            } // for (int idxMoment = 0 ; idxMoment < nMoments; ++idxMoment) {
        } // for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
    } // for (int idxCent = 0; idxCent < 9; idxCent++) {

    // -----------------------------------------------------

    for (int idxCent = 0; idxCent < 1; idxCent++) {
        for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
            TPad *pad = SetupCanvas(Form("canEta_Ratio_%s_%s", aDataSets[idxDataSet], cent[idxCent]), aDataSetsTitle[idxDataSet], "#eta", 0.45);

            for (int idxEtaSuper = 0 ; idxEtaSuper < nEtaSuperSets; ++idxEtaSuper) {

                if (idxEtaSuper == 1 || idxEtaSuper == 3 || idxEtaSuper == 5 || idxEtaSuper == 7 || idxEtaSuper == 8 )
                    continue;

                for (int idxMoment = 4 ; idxMoment < nMoments; ++idxMoment) {
                    pad->cd(idxMoment-3);

                    TGraphErrors *g = etaGraphs[idxCent][idxEtaSuper][idxDataSet][idxMoment];

                    // if (idxCent == 0)
                    //   ShiftGraphX(g, -0.015);
                    // else if (idxCent == 1)
                    //   ShiftGraphX(g, -0.005);
                    // else if (idxCent == 4)
                    //   ShiftGraphX(g, 0.005);
                    // else if (idxCent == 8)
                    //   ShiftGraphX(g, 0.015);

                    ConfigGraph(g, idxMoment, idxEtaSuper);

                    if (idxEtaSuper == 0) {
                        g->Draw("AP");

                        TLine *line05 = new TLine( 0.5, aMinY[idxMoment],  0.5, aMaxY[idxMoment]);
                        line05->SetLineColor(kGray+1);
                        line05->SetLineStyle(3);
                        line05->Draw();

                        TLine *line50 = new TLine(-0.5, aMinY[idxMoment], -0.5, aMaxY[idxMoment]);
                        line50->SetLineColor(kGray+1);
                        line50->SetLineStyle(3);
                        line50->Draw();

                        TLine *line00 = new TLine(0., aMinY[idxMoment],0, aMaxY[idxMoment]);
                        line00->SetLineColor(kGray+1);
                        line00->SetLineStyle(3);
                        line00->Draw();

                        if (idxMoment == 5) {
                            // TLine *line0 = new TLine(aMinX, 0, aMaxX, 0);
                            // line0->SetLineColor(kGray+1);
                            // line0->SetLineStyle(2);
                            // line0->SetLineWidth(2);
                            // line0->Draw();
                        }
                        else if (idxMoment == 6) {
                            TLine *line1 = new TLine(aMinX, 1, aMaxX, 1);
                            line1->SetLineColor(kGray+1);
                            line1->SetLineStyle(2);
                            line1->SetLineWidth(2);
                            line1->Draw();
                        }
                    }
                    g->Draw("PSAME");

                } // for (int idxMoment = 0 ; idxMoment < nMoments; ++idxMoment) {

                if (idxCent == 0)  {
                    legRat[idxDataSet]->AddEntry(etaGraphs[0][idxEtaSuper][idxDataSet][4],
                                                 Form("#Delta#eta = %.1f", aEtaSuperSetsBinWidth[idxEtaSuper]), "pl");
                }
            } // for (int idxEta = 0 ; idxEta < nEta; ++idxEta) {

            TLine *linex = new TLine(-0.55, 1, 0.55, 1);
            linex->SetLineColor(kGray+1);
            linex->SetLineStyle(2);
            linex->SetLineWidth(2);
            legRat[idxDataSet]->AddEntry(linex, "Poisson", "l");

            pad->cd(1);
            TLatex *texb_3 = new TLatex(-0.49, 9.3, "Au+Au collisions #sqrt{#it{s}_{NN}} = 14.5 GeV");
            texb_3->SetTextSize(0.07);
            texb_3->Draw("same");

            TLatex *texb_3a = new TLatex(-0.49,8.9, "Net-Charge, 0.2 < #it{p}_{T} (GeV/#it{c}) < 2.0, 0-5%");
            texb_3a->SetTextSize(0.07);
            texb_3a->Draw("same");

            pad->cd(2);
            TLatex *texb_3b = new TLatex(0.49,0.42, "statistical errors only");
            texb_3b->SetTextSize(0.06);
            texb_3b->SetTextAlign(31);
            texb_3b->Draw("same");

            TLatex *texb_3c = new TLatex(0.49,0.38, "horizontal error: #Delta#eta width");
            texb_3c->SetTextSize(0.06);
            texb_3c->SetTextAlign(31);
            texb_3c->Draw("same");

            TLatex *texb_4 = new TLatex(-0.49, 0.42, "STAR Preliminary");
            texb_4->SetTextSize(0.07);
            texb_4->Draw("same");

            pad->cd(3);
            legRat[idxDataSet]->Draw("lt");

            pad->Modified();
        } // for (int idxDataSet = 0 ; idxDataSet < nDataSets; ++idxDataSet) {
    } // for (int idxCent = 0; idxCent < 9; idxCent++) {

    // -----------------------------------------------------

    SaveCanvas(name);
}