//////////////////////////////////////////////////////////////////////////
//                                                                      //
// GFDstarPythiaIncl                                                    //
//
//   Author:      Gero Flucke
//   Date:        December 20th, 2004
//   last update: $Date: 2005/11/07 18:47:03 $ (UTC)
//   by:          $Author: flucke $
//                                                                      //
//   For PYTHIA from hztool in inclusive mode                           //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "GFDstarPythiaIncl.h"
#include "GFAnalysis/GFAxisVariables.h"
#include "GFUtils/GFHistArray.h"
#include "GFUtils/GFHistManip.h"
#include "GFUtils/GFHistManager.h"

#include <TH1.h>
#include <TLegend.h>
#include <TFile.h>
#include <TObjArray.h>
#include <TObjString.h>

ClassImp(GFDstarPythiaIncl)

//_________________________________________________________
 GFDstarPythiaIncl::GFDstarPythiaIncl(const char *file, const char *rootDir,
				     const char *filePath) 
  : GFDstarVirtualHztool(rootDir, filePath), fFileIncl(file)
{
}

//_________________________________________________________
 GFDstarPythiaIncl::~GFDstarPythiaIncl()
{
}

// //_________________________________________________________
// void GFDstarPythiaIncl::DrawHists(const char *var, Int_t flag, Bool_t rel)
// {
//   // flag 0: final
//   //      1: mass variation only
//   //      2: scale variation only
//   TObjArray *vars = this->CreateVarArray(var);

//   fHistManager->SetBatch();
//   fHistManager->Delete();
//   for(Int_t i = 0; i < vars->GetEntriesFast(); ++i){
//     GFHistArray *hists = NULL;
//     TString vari;
//     switch(flag){
//     case 0:
//       hists = this->CreateHistsFinal(vars->At(i)->GetName(), 0);
//       vari = "final";
//       break;
//     case 1:
//       hists = this->CreateHistsMass(vars->At(i)->GetName(), 0);
//       vari = "m_{c}";
//       break;
//     case 2:
//       hists = this->CreateHistsScale(vars->At(i)->GetName(), 0);
//       vari = "#mu_{r}";
//       break;
//     }
//     if(hists){
//       hists->First()->SetTitle(Form("%s, %s variation", hists->At(0)->GetTitle(), vari.Data()));
//       const Bool_t log = !rel && this->IsLog(vars->At(i)->GetName());
//       const Int_t nHist = this->DrawTheHists(hists, NULL, log, kTRUE);
//       const Int_t layer = fHistManager->GetNumLayers()-1;
//       TLegend *leg = fHistManager->AddLegend(layer, nHist, this->GetName(), kFALSE);
//       leg->SetTextAlign(22);
//       leg->AddEntry(hists->At(1), "mean", "l");
//       leg->AddEntry(hists->At(0), Form("%s up", vari.Data()), "l");
//       leg->AddEntry(hists->At(2), Form("%s down", vari.Data()), "l");
//       if(rel){
// 	hists->At(0)->Divide(hists->At(1));
// 	hists->At(2)->Divide(hists->At(1));
// 	hists->At(1)->Divide(hists->At(1));
// 	hists->At(0)->SetYTitle("#sigma/#sigma(mean)");
// 	hists->At(0)->GetYaxis()->CenterTitle();
//       }
//     }
//     delete hists;
//   }
//   fHistManager->SetBatch(kFALSE);
//   fHistManager->Draw();
//   fHistManager->Update();// for the TExec added for log scale
//   delete vars;
// }

//_________________________________________________________
 GFHistArray* GFDstarPythiaIncl::CreateHistsFinal(const char *var, Int_t dirResFlag)
{
//   return this->CreateHistsUpDown(var, "", "", dirResFlag); // we have no error bars...
  GFHistArray *result = new GFHistArray(3);
  TH1 *h = NULL;
  if(dirResFlag == 0){
    h = this->CreateHist(var, "");
  } else if(dirResFlag < 0){
    h = this->CreateHistRes(var, "");
  } else if(dirResFlag > 0){
    h = this->CreateHistDir(var, "");
  }
  result->AddAt(NULL, 0);
  result->AddAt(h, 1);
  result->AddAt(NULL, 2);
  return result;
}


//_________________________________________________________
 TH1* GFDstarPythiaIncl::CreateHist(const char *var, const char *note)
{
  // note maybe "" (currently)
  TString hName = this->GetHistName(var);

  TH1 *h = this->GetHist(hName.Data(), Form("%s%s.root", fFileIncl.Data(), note));

  if(h){
    //    h->SetName(Form("%sDir", hName.Data()));
    h->SetTitle(GFAxisVariables::GetAxisLabel(var));
    h->SetXTitle(GFAxisVariables::GetAxisLabel(var));

    h->SetYTitle(Form("%s#sigma [nb]", h->GetYaxis()->GetTitle()));
  }
  
  return h;
}

//_________________________________________________________
 TH1* GFDstarPythiaIncl::CreateHistDir(const char *var, const char *note)
{
  this->Info("CreateHistDir", "%s cannot provide direct only", this->GetName());
  return NULL;
}


//_________________________________________________________
 TH1* GFDstarPythiaIncl::CreateHistRes(const char *var, const char *note)
{
  this->Info("CreateHistRes", "%s cannot provide resolved only", this->GetName());
  return NULL;
}

//_________________________________________________________
 GFHistArray* GFDstarPythiaIncl::CreateHistsFinalNorm(const char *var, Int_t dirResFlag)
{
  // < 0 res, > 0 dir 
  TObjArray upDowns;
  upDowns.SetOwner();
  upDowns.Add(new TObjString(""));
  // no variations!

  return this->CreateHistsFinalNormInt(var, upDowns, dirResFlag);
}

//_________________________________________________________
 TArrayD GFDstarPythiaIncl::TotalCrossSec(ECrossSecType dstarJet, Int_t dirResFlag)
{
  // returning array of length 3: total cross section, upper and lower bound
  // FIXME: currently no variations for PYTHIA
  // 
  // dirResFlag < 0: resolved only
  //            > 0: direct only
  //            = 0: sum
  TObjArray upDowns;
  upDowns.SetOwner();
  upDowns.Add(new TObjString(""));
//   upDowns.Add(new TObjString("-"));
//   upDowns.Add(new TObjString("+"));
//   upDowns.Add(new TObjString("m13"));
//   upDowns.Add(new TObjString("m17"));

  return this->TotalCrossSecInt(dstarJet, dirResFlag, upDowns);
}

//_________________________________________________________
 const char* GFDstarPythiaIncl::GetName() const
{
  return "Pythia 6.2 (incl.)";
}

//_________________________________________________________
 Bool_t GFDstarPythiaIncl::ShouldApplyHadCor() const
{
  // no hadronisation corrections should be applied for Pythia
  return kFALSE;
}



ROOT page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.