//////////////////////////////////////////////////////////////////////////
// //
// 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.