// saves the histograms
//
- fhMeas ->Write();
- fhGene ->Write();
+ if (fhMeas)
+ fhMeas ->Write();
+
+ if (fhGene)
+ fhGene ->Write();
if (fhCorr)
fhCorr->Write();
TString option = GetOption();
- if (option.Contains("debug"))
+ if (option.Contains("moredebug"))
{
- printf("Enabling debug more for %s\n", ClassName());
+ printf("Enabling verbose debug mode for %s\n", ClassName());
+ AliLog::SetClassDebugLevel(ClassName(), AliLog::kDebug+1);
+ AliInfo(Form("Called with option %s.", option.Data()));
+ }
+ else if (option.Contains("debug"))
+ {
+ printf("Enabling debug mode for %s\n", ClassName());
AliLog::SetClassDebugLevel(ClassName(), AliLog::kDebug);
AliInfo(Form("Called with option %s.", option.Data()));
}
TString fileName(fTree->GetCurrentFile()->GetName());
fileName.ReplaceAll("AliESDs", "Kinematics");
+ // temporary workaround for PROOF bug #18505
+ fileName.ReplaceAll("#Kinematics.root#Kinematics.root", "#Kinematics.root");
+
AliDebug(AliLog::kInfo, Form("Opening %s", fileName.Data()));
fKineFile = TFile::Open(fileName);
return kFALSE;
if (fRunLoader)
- fRunLoader->GetEvent(entry);
+ {
+ if (fRunLoader->GetEvent(entry) != 0)
+ return kFALSE;
+ }
return kTRUE;
}
if (!fRunLoader)
return 0;
- if (fRunLoader->LoadgAlice() != 0)
- {
- delete fRunLoader;
- fRunLoader = 0;
- return 0;
- }
fRunLoader->GetEvent(fTree->GetTree()->GetReadEntry());
}
void SETUP()
{
// Load some ROOT libraries
- gSystem->Load("libEG");
- gSystem->Load("libGeom");
+ CheckLoadLibrary("libEG");
+ CheckLoadLibrary("libGeom");
// Load the ESD library
- gSystem->Load("libESD");
+ CheckLoadLibrary("libESD");
- gSystem->Load("libPWG0base");
+ CheckLoadLibrary("libPWG0base");
// Set the include paths
gROOT->ProcessLine(".include PWG0base");
// Set our location, so that other packages can find us
gSystem->Setenv("PWG0base_INCLUDE", "PWG0base");
}
+
+Int_t CheckLoadLibrary(const char* library)
+{
+ // checks if a library is already loaded, if not loads the library
+
+ if (strlen(gSystem->GetLibraries(Form("%s.so", library), "", kFALSE)) > 0)
+ return 1;
+
+ return gSystem->Load(library);
+}
void SETUP()
{
// we assume PWG0base (and thus ESD) already loaded
+ CheckLoadLibrary("libMinuit");
// this package depends on STEER
- gSystem->Load("libVMC");
- gSystem->Load("libMinuit");
- gSystem->Load("libSTEER");
+ CheckLoadLibrary("libVMC");
+ CheckLoadLibrary("libMinuit");
+ CheckLoadLibrary("libSTEER");
- gSystem->Load("libPWG0dep");
+ CheckLoadLibrary("libPWG0dep");
+
+ // more packages to access the alice event header
+ CheckLoadLibrary("libEVGEN");
+ CheckLoadLibrary("libFASTSIM");
+ CheckLoadLibrary("libmicrocern");
+ CheckLoadLibrary("libpdf");
+ CheckLoadLibrary("libpythia6");
+ CheckLoadLibrary("libEGPythia6");
+ CheckLoadLibrary("libAliPythia6");
// Set the Include paths
gROOT->ProcessLine(".include PWG0dep");
}
+
+Int_t CheckLoadLibrary(const char* library)
+{
+ // checks if a library is already loaded, if not loads the library
+
+ if (strlen(gSystem->GetLibraries(Form("%s.so", library), "", kFALSE)) > 0)
+ return 1;
+
+ return gSystem->Load(library);
+}
--- /dev/null
+/* $Id$ */
+
+// Helper macros can be found in this file
+// A set of them can be used to connect to proof and execute selectors.
+
+TVirtualProof* connectProof(const char* proofServer)
+{
+ TVirtualProof* proof = TProof::Open(proofServer);
+
+ if (!proof)
+ {
+ printf("ERROR: PROOF connection not established.\n");
+ return 0;
+ }
+
+ proof->SetParallel(20);
+
+ // enable the new packetizer
+ //proof->AddInput(new TNamed("PROOF_Packetizer", "TPacketizerProgressive"));
+
+ proof->ClearInput();
+
+ return proof;
+}
+
+Bool_t prepareQuery(TString libraries, TString packages, Bool_t useAliRoot)
+{
+ // if not proof load libraries
+ if (!gProof)
+ {
+ TObjArray* librariesList = libraries.Tokenize(";");
+ for (Int_t i=0; i<librariesList->GetEntries(); ++i)
+ {
+ TObjString* str = dynamic_cast<TObjString*> (librariesList->At(i));
+ if (!str)
+ continue;
+
+ printf("Loading %s...", str->String().Data());
+ Int_t result = CheckLoadLibrary(str->String());
+ if (result < 0)
+ {
+ printf("failed\n");
+ //return kFALSE;
+ }
+ else
+ printf("succeeded\n");
+ }
+ }
+ else
+ {
+ if (useAliRoot)
+ ProofEnableAliRoot();
+
+ TObjArray* packagesList = packages.Tokenize(";");
+ for (Int_t i=0; i<packagesList->GetEntries(); ++i)
+ {
+ TObjString* str = dynamic_cast<TObjString*> (packagesList->At(i));
+ if (!str)
+ continue;
+
+ if (!EnablePackageLocal(str->String()))
+ {
+ printf("Loading of package %s locally failed\n", str->String().Data());
+ return kFALSE;
+ }
+
+ if (gProof->EnablePackage(str->String()))
+ {
+ printf("Loading of package %s failed\n", str->String().Data());
+ return kFALSE;
+ }
+ }
+ }
+
+ return kTRUE;
+}
+
+Int_t executeQuery(TChain* chain, TList* inputList, TString selectorName, const char* option = "")
+{
+ if (!gProof)
+ chain->GetUserInfo()->AddAll(inputList);
+ else
+ {
+ for (Int_t i=0; i<inputList->GetEntries(); ++i)
+ gProof->AddInput(inputList->At(i));
+ }
+
+ TStopwatch timer;
+ timer.Start();
+
+ Long64_t result = -1;
+
+ if (gProof)
+ result = chain->MakeTDSet()->Process(selectorName, option);
+ else
+ result = chain->Process(selectorName, option);
+
+ if (result < 0)
+ printf("ERROR: Executing process failed with %d.\n", result);
+
+ timer.Stop();
+ timer.Print();
+
+ return result;
+}
+
+void ProofEnableAliRoot()
+{
+ // enables a locally deployed AliRoot in a PROOF cluster
+
+ /* executes the following commands on each node:
+ gSystem->Setenv("ALICE_ROOT", "/home/alicecaf/ALICE/aliroot-head")
+ gSystem->AddIncludePath("/home/alicecaf/ALICE/aliroot-head/include");
+ gSystem->SetDynamicPath(Form("%s:%s", gSystem->GetDynamicPath(), "/home/alicecaf/ALICE/aliroot-head/lib/tgt_linux"))
+ gSystem->Load("libMinuit");
+ gROOT->Macro("$ALICE_ROOT/macros/loadlibs.C");
+ */
+
+ const char* location = "/home/alicecaf/ALICE/aliroot-head";
+
+ gProof->Exec(Form("gSystem->Setenv(\"ALICE_ROOT\", \"%s\")", location), kTRUE);
+ gProof->AddIncludePath(Form("%s/include", location));
+ gProof->AddDynamicPath(Form("%s/lib/tgt_linux", location));
+
+ // load all libraries
+ gProof->Exec("gSystem->Load(\"libMinuit\")");
+ gProof->Exec("gROOT->Macro(\"$ALICE_ROOT/macros/loadlibs.C\")");
+}
+
+Bool_t EnablePackageLocal(const char* package)
+{
+ printf("Enabling package %s locally...\n", package);
+
+ if (!gSystem->cd(package))
+ return kFALSE;
+
+ gROOT->ProcessLine(".x PROOF-INF/SETUP.C");
+ gSystem->cd("..");
+
+ return kTRUE;
+}
+
+Int_t CheckLoadLibrary(const char* library)
+{
+ // checks if a library is already loaded, if not loads the library
+
+ if (strlen(gSystem->GetLibraries(Form("%s.so", library), "", kFALSE)) > 0)
+ return 1;
+
+ return gSystem->Load(library);
+}
+
+void redeployPackages(const char* proofServer, Bool_t localAliRoot = kTRUE)
+{
+ // deploys PWG0base and PWG0dep (the latter only when localAliRoot is true) that are expected in $ALICE_ROOT
+ // when localAliRoot is false ESD.par is also deployed
+
+ TProof::Reset(proofServer);
+ TVirtualProof* proof = TProof::Open(proofServer);
+ proof->ClearPackages();
+
+ if (localAliRoot)
+ ProofEnableAliRoot();
+ else
+ {
+ proof->UploadPackage("$ALICE_ROOT/ESD.par");
+ proof->EnablePackage("ESD");
+ }
+
+ proof->UploadPackage("$ALICE_ROOT/PWG0base.par");
+ proof->EnablePackage("PWG0base");
+
+ proof->UploadPackage("$ALICE_ROOT/PWG0dep.par");
+ proof->EnablePackage("PWG0dep");
+}
if (fEsdTrackCuts)
fEsdTrackCuts->SaveHistograms("esd_tracks_cuts");
+ if (fdNdEtaCorrection)
+ fdNdEtaCorrection->SaveHistograms();
+
fout->Write();
fout->Close();
}
#include <AliLog.h>
#include <AliGenEventHeader.h>
#include <AliHeader.h>
+#include <AliStack.h>
#include "dNdEta/dNdEtaAnalysis.h"
#include "AliPWG0Helper.h"
AliSelectorRL::SlaveBegin(tree);
fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
+ fVertex = new TH3F("vertex_check", "vertex_check", 50, -50, 50, 50, -50, 50, 50, -50, 50);
+ fPartEta = new TH1F("dndeta_check", "dndeta_check", 120, -6, 6);
+ fPartEta->Sumw2();
}
void AlidNdEtaAnalysisMCSelector::Init(TTree *tree)
AliSelectorRL::Init(tree);
tree->SetBranchStatus("ESD", 0);
-
- fVertex = new TH3F("vertex_check", "vertex_check", 50, -50, 50, 50, -50, 50, 50, -50, 50);
- fPartEta = new TH1F("dndeta_check", "dndeta_check", 120, -6, 6);
- fPartEta->Sumw2();
}
Bool_t AlidNdEtaAnalysisMCSelector::Process(Long64_t entry)
if (AliSelectorRL::Process(entry) == kFALSE)
return kFALSE;
- TTree* particleTree = GetKinematics();
- if (!particleTree)
+ AliStack* stack = GetStack();
+ if (!stack)
{
- AliDebug(AliLog::kError, "Kinematics not available");
+ AliDebug(AliLog::kError, "Stack not available");
return kFALSE;
}
TArrayF vtxMC(3);
genHeader->PrimaryVertex(vtxMC);
- particleTree->SetBranchStatus("*", 0);
- particleTree->SetBranchStatus("fDaughter[2]", 1);
- particleTree->SetBranchStatus("fPdgCode", 1);
- particleTree->SetBranchStatus("fPx", 1);
- particleTree->SetBranchStatus("fPy", 1);
- particleTree->SetBranchStatus("fPz", 1);
- particleTree->SetBranchStatus("fVx", 1);
- particleTree->SetBranchStatus("fVy", 1);
- particleTree->SetBranchStatus("fVz", 1);
-
- TParticle* particle = 0;
- particleTree->SetBranchAddress("Particles", &particle);
-
- Int_t nPrim = header->GetNprimary();
- Int_t nTotal = header->GetNtrack();
+ // loop over mc particles
+ Int_t nPrim = stack->GetNprimary();
- for (Int_t i_mc = nTotal - nPrim; i_mc < nTotal; ++i_mc)
+ for (Int_t iMc = 0; iMc < nPrim; ++iMc)
{
- particleTree->GetEntry(i_mc);
+ TParticle* particle = stack->Particle(iMc);
if (!particle)
continue;
if (AliPWG0Helper::IsPrimaryCharged(particle, nPrim) == kFALSE)
continue;
- AliDebug(AliLog::kDebug+1, Form("Accepted primary %d, unique ID: %d", i_mc, particle->GetUniqueID()));
+ AliDebug(AliLog::kDebug+1, Form("Accepted primary %d, unique ID: %d", iMc, particle->GetUniqueID()));
fdNdEtaAnalysis->FillTrack(vtxMC[2], particle->Eta(), particle->Pt(), 1);
fVertex->Fill(particle->Vx(), particle->Vy(), particle->Vz());
fout->Write();
fout->Close();
- fPartEta->Scale(1.0/fEvents);
- fPartEta->Scale(1.0/fPartEta->GetBinWidth(1));
+ if (fPartEta)
+ {
+ fPartEta->Scale(1.0/fEvents);
+ fPartEta->Scale(1.0/fPartEta->GetBinWidth(1));
- TCanvas* canvas = new TCanvas("control", "control", 900, 450);
- canvas->Divide(2, 1);
+ TCanvas* canvas = new TCanvas("control", "control", 900, 450);
+ canvas->Divide(2, 1);
- canvas->cd(1);
- fVertex->Draw();
+ canvas->cd(1);
+ fVertex->Draw();
- canvas->cd(2);
- fPartEta->Draw();
+ canvas->cd(2);
+ fPartEta->Draw();
+ }
}
return kTRUE;
}
+void AlidNdEtaCorrectionSelector::ReadUserObjects(TTree* tree)
+{
+ // read the user objects, called from slavebegin and begin
+
+ if (!fEsdTrackCuts && fInput)
+ fEsdTrackCuts = dynamic_cast<AliESDtrackCuts*> (fInput->FindObject("AliESDtrackCuts"));
+
+ if (!fEsdTrackCuts && tree)
+ fEsdTrackCuts = dynamic_cast<AliESDtrackCuts*> (tree->GetUserInfo()->FindObject("AliESDtrackCuts"));
+
+ if (!fEsdTrackCuts)
+ AliDebug(AliLog::kError, "ERROR: Could not read EsdTrackCuts from input list.");
+}
+
void AlidNdEtaCorrectionSelector::Begin(TTree * tree)
{
// The Begin() function is called at the start of the query.
AliSelectorRL::Begin(tree);
+ ReadUserObjects(tree);
+
TString option = GetOption();
AliInfo(Form("Called with option %s.", option.Data()));
AliSelectorRL::SlaveBegin(tree);
- fdNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
-
- if (fTree)
- fEsdTrackCuts = dynamic_cast<AliESDtrackCuts*> (fTree->GetUserInfo()->FindObject("AliESDtrackCuts"));
+ ReadUserObjects(tree);
- if (!fEsdTrackCuts)
- AliDebug(AliLog::kError, "ERROR: Could not read EsdTrackCuts from user info");
+ fdNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
fPIDParticles = new TH1F("pid_particles", "PID of generated primary particles", 10001, -5000.5, 5000.5);
fPIDTracks = new TH1F("pid_tracks", "MC PID of reconstructed tracks", 10001, -5000.5, 5000.5);
return kFALSE;
}
+ gDebug = 2;
+
AliHeader* header = GetHeader();
if (!header)
{
TFile* fout = new TFile(Form("correction_map%s.root", GetOption()), "RECREATE");
- fEsdTrackCuts->SaveHistograms("esd_track_cuts");
+ if (fEsdTrackCuts)
+ fEsdTrackCuts->SaveHistograms("esd_track_cuts");
fdNdEtaCorrection->SaveHistograms();
fout->Write();
fdNdEtaCorrection->DrawHistograms();
- new TCanvas("pidcanvas", "pidcanvas", 500, 500);
-
- fPIDParticles->Draw();
- fPIDTracks->SetLineColor(2);
- fPIDTracks->Draw("SAME");
-
- TDatabasePDG* pdgDB = new TDatabasePDG;
+ if (fPIDParticles && fPIDTracks)
+ {
+ new TCanvas("pidcanvas", "pidcanvas", 500, 500);
- for (Int_t i=0; i <= fPIDParticles->GetNbinsX()+1; ++i)
- if (fPIDParticles->GetBinContent(i) > 0)
- printf("PDG = %d (%s): generated: %d, reconstructed: %d, ratio: %f\n", (Int_t) fPIDParticles->GetBinCenter(i), pdgDB->GetParticle((Int_t) fPIDParticles->GetBinCenter(i))->GetName(), (Int_t) fPIDParticles->GetBinContent(i), (Int_t) fPIDTracks->GetBinContent(i), ((fPIDTracks->GetBinContent(i) > 0) ? fPIDParticles->GetBinContent(i) / fPIDTracks->GetBinContent(i) : -1));
+ fPIDParticles->Draw();
+ fPIDTracks->SetLineColor(2);
+ fPIDTracks->Draw("SAME");
- delete pdgDB;
- pdgDB = 0;
+ TDatabasePDG* pdgDB = new TDatabasePDG;
- TCanvas* canvas = new TCanvas("clusters", "clusters", 1000, 500);
- canvas->Divide(2, 1);
+ for (Int_t i=0; i <= fPIDParticles->GetNbinsX()+1; ++i)
+ if (fPIDParticles->GetBinContent(i) > 0)
+ printf("PDG = %d (%s): generated: %d, reconstructed: %d, ratio: %f\n", (Int_t) fPIDParticles->GetBinCenter(i), pdgDB->GetParticle((Int_t) fPIDParticles->GetBinCenter(i))->GetName(), (Int_t) fPIDParticles->GetBinContent(i), (Int_t) fPIDTracks->GetBinContent(i), ((fPIDTracks->GetBinContent(i) > 0) ? fPIDParticles->GetBinContent(i) / fPIDTracks->GetBinContent(i) : -1));
- canvas->cd(1);
- fClustersITSPos->Draw();
- fClustersITSNeg->SetLineColor(kRed);
- fClustersITSNeg->Draw("SAME");
+ delete pdgDB;
+ pdgDB = 0;
+ }
- canvas->cd(2);
- fClustersTPCPos->Draw();
- fClustersTPCNeg->SetLineColor(kRed);
- fClustersTPCNeg->Draw("SAME");
+ if (fClustersITSPos && fClustersITSNeg && fClustersTPCPos && fClustersTPCNeg)
+ {
+ TCanvas* canvas = new TCanvas("clusters", "clusters", 1000, 500);
+ canvas->Divide(2, 1);
+
+ canvas->cd(1);
+ fClustersITSPos->Draw();
+ fClustersITSNeg->SetLineColor(kRed);
+ fClustersITSNeg->Draw("SAME");
+
+ canvas->cd(2);
+ fClustersTPCPos->Draw();
+ fClustersTPCNeg->SetLineColor(kRed);
+ fClustersTPCNeg->Draw("SAME");
+ }
}
AlidNdEtaCorrectionSelector();
virtual ~AlidNdEtaCorrectionSelector();
+ void ReadUserObjects(TTree* tree);
virtual void Begin(TTree *tree);
virtual void SlaveBegin(TTree *tree);
virtual Bool_t Process(Long64_t entry);
#include "esdTrackCuts/AliESDtrackCuts.h"
#include "AliPWG0Helper.h"
-#include "AlidNdEtaCorrection.h"
+#include "dNdEta/AlidNdEtaCorrection.h"
ClassImp(AlidNdEtaSystematicsSelector)
fdNdEtaCorrection[i] = dynamic_cast<AlidNdEtaCorrection*> (fOutput->FindObject(Form("correction_%d", i)));
fSigmaVertex = dynamic_cast<TH1F*> (fOutput->FindObject("fSigmaVertex"));
- TDatabasePDG* pdgDB = new TDatabasePDG;
+ if (fPIDParticles)
+ {
+ TDatabasePDG* pdgDB = new TDatabasePDG;
- for (Int_t i=0; i <= fPIDParticles->GetNbinsX()+1; ++i)
- if (fPIDParticles->GetBinContent(i) > 0)
- printf("PDG = %d (%s): generated: %d, reconstructed: %d, ratio: %f\n", (Int_t) fPIDParticles->GetBinCenter(i), pdgDB->GetParticle((Int_t) fPIDParticles->GetBinCenter(i))->GetName(), (Int_t) fPIDParticles->GetBinContent(i), (Int_t) fPIDTracks->GetBinContent(i), ((fPIDTracks->GetBinContent(i) > 0) ? fPIDParticles->GetBinContent(i) / fPIDTracks->GetBinContent(i) : -1));
+ for (Int_t i=0; i <= fPIDParticles->GetNbinsX()+1; ++i)
+ if (fPIDParticles->GetBinContent(i) > 0)
+ printf("PDG = %d (%s): generated: %d, reconstructed: %d, ratio: %f\n", (Int_t) fPIDParticles->GetBinCenter(i), pdgDB->GetParticle((Int_t) fPIDParticles->GetBinCenter(i))->GetName(), (Int_t) fPIDParticles->GetBinContent(i), (Int_t) fPIDTracks->GetBinContent(i), ((fPIDTracks->GetBinContent(i) > 0) ? fPIDParticles->GetBinContent(i) / fPIDTracks->GetBinContent(i) : -1));
- delete pdgDB;
- pdgDB = 0;
+ delete pdgDB;
+ pdgDB = 0;
+ }
TFile* fout = TFile::Open("systematics.root", "RECREATE");
+++ /dev/null
-// this macro combines the correction and the analysis and draws them
-
-void CreatedNdEta(Bool_t correct = kTRUE, const Char_t* filename = "analysis_esd.root", const char* object = "dndeta")
-{
- gSystem->Load("libPWG0base");
-
- AlidNdEtaCorrection* dNdEtaCorrection = 0;
- if (correct)
- {
- dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
- dNdEtaCorrection->LoadHistograms("correction_map.root","dndeta_correction");
- //dNdEtaCorrection->RemoveEdges(2, 0, 2);
- }
-
- fdNdEtaAnalysis = new dNdEtaAnalysis(object, object);
-
- TFile* file = TFile::Open(filename);
- if (!file)
- {
- cout << "Error. File out.root not found" << endl;
- return;
- }
- fdNdEtaAnalysis->LoadHistograms();
-
- fdNdEtaAnalysis->Finish(dNdEtaCorrection, (correct) ? 0.3 : -1);
-
- fdNdEtaAnalysis->DrawHistograms();
-}
-
-
canvas->SaveAs("ptCutoff.eps");
}
-void TriggerBiasVtxRecon(const char* fileName = "correction_map.root")
+void TriggerBiasVtxRecon(const char* fileName = "correction_map.root", const char* folder = "dndeta_correction")
{
TFile* file = TFile::Open(fileName);
- TH2* corrTrigger = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_trigger"));
- TH2* corrVtx = dynamic_cast<TH2*> (file->Get("dndeta_correction/corr_vtxReco"));
+ TH2* corrTrigger = dynamic_cast<TH2*> (file->Get(Form("%s/corr_%s_trigger", folder, folder)));
+ TH2* corrVtx = dynamic_cast<TH2*> (file->Get(Form("%s/corr_%s_vtxReco", folder, folder)));
Prepare2DPlot(corrTrigger);
corrTrigger->SetTitle("a) Trigger bias correction");
meas->GetXaxis()->SetRange(0, 0);
}
-void Track2Particle2D(const char* fileName = "correction_map.root")
+void Track2Particle2D(const char* fileName = "correction_map.root", const char* folder = "dndeta_correction")
{
gSystem->Load("libPWG0base");
Track2Particle2DCreatePlots(fileName);
- TH2* corrYX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx"));
- TH2* corrZX = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zx_div_meas_nTrackToNPart_zx"));
- TH2* corrZY = dynamic_cast<TH2*> (gROOT->FindObject("gene_nTrackToNPart_zy_div_meas_nTrackToNPart_zy"));
+ TH2* corrYX = dynamic_cast<TH2*> (gROOT->FindObject(Form("gene_%s_nTrackToNPart_yx_div_meas_%s_nTrackToNPart_yx", folder, folder)));
+ TH2* corrZX = dynamic_cast<TH2*> (gROOT->FindObject(Form("gene_%s_nTrackToNPart_zx_div_meas_%s_nTrackToNPart_zx", folder, folder)));
+ TH2* corrZY = dynamic_cast<TH2*> (gROOT->FindObject(Form("gene_%s_nTrackToNPart_zy_div_meas_%s_nTrackToNPart_zy", folder, folder)));
/* this reads them from the file
TH2* corrYX = dynamic_cast<TH2*> (file->Get("dndeta_correction/gene_nTrackToNPart_yx_div_meas_nTrackToNPart_yx"));
return;
}
- TH1F* ratio = new TH1F("sigmavertexsimulation_ratio", "sigmavertexsimulation_ratio;Nsigma;% included 3 sigma / % included n sigma", sigmavertex->GetNbinsX(), sigmavertex->GetXaxis()->GetXmin(), sigmavertex->GetXaxis()->GetXmax());
+ TH1F* ratio = new TH1F("sigmavertexsimulation_ratio", "sigmavertexsimulation_ratio;N#sigma;% included #sigma / % included n #sigma", sigmavertex->GetNbinsX(), sigmavertex->GetXaxis()->GetXmin(), sigmavertex->GetXaxis()->GetXmax());
for (Int_t i=1; i<=sigmavertex->GetNbinsX(); ++i)
ratio->SetBinContent(i, sigmavertex->GetBinContent(sigmavertex->GetXaxis()->FindBin(3)) / sigmavertex->GetBinContent(i));
ratio1->SetMarkerStyle(0);
ratio2->SetMarkerStyle(0);
- TLegend* legend = new TLegend(0.647177,0.775424,0.961694,0.966102);
+ ratio1->SetLineWidth(2);
+ ratio2->SetLineWidth(2);
+
+ TLegend* legend = new TLegend(0.7, 0.8, 0.95, 0.95);
+ legend->SetFillColor(0);
legend->AddEntry(ratio1, "Gaussian");
legend->AddEntry(ratio2, "Simulation");
- ratio1->GetXaxis()->SetTitleOffset(1.5);
+ ratio2->SetTitle("");
+ ratio2->GetYaxis()->SetTitleOffset(1.5);
+ ratio2->GetXaxis()->SetRangeUser(2, 4);
TCanvas* canvas = new TCanvas("Sigma2VertexCompare", "Sigma2VertexCompare", 500, 500);
InitPad();
- ratio1->Draw();
ratio2->SetLineColor(kRed);
- ratio2->Draw("SAME");
+ ratio2->Draw();
+ ratio1->Draw("SAME");
legend->Draw();
+
+ canvas->SaveAs("Sigma2VertexCompare.eps");
}
void drawSystematics()
//
#include "../CreateESDChain.C"
+#include "../PWG0Helper.C"
-void makeCorrection2(Char_t* dataDir, Int_t nRuns=20, Int_t offset = 0, Bool_t debug = kFALSE, const Char_t* option = "")
+void makeCorrection2(Char_t* dataDir, Int_t nRuns=20, Int_t offset = 0, Bool_t debug = kFALSE, Bool_t aProof = kFALSE, const Char_t* option = "")
{
- gSystem->Load("libPWG0base");
- gSystem->Load("libPWG0dep");
+ if (aProof)
+ connectProof("proof01@lxb6046");
+
+ TString libraries("libEG;libGeom;libESD;libPWG0base;libVMC;libMinuit;libSTEER;libPWG0dep;libEVGEN;libFASTSIM;libmicrocern;libpdf;libpythia6;libEGPythia6;libAliPythia6");
+ TString packages("PWG0base;PWG0dep");
+
+ if (!prepareQuery(libraries, packages, kTRUE))
+ return;
gROOT->ProcessLine(".L CreateCuts.C");
return;
}
+ TList inputList;
+ inputList.Add(esdTrackCuts);
+
TChain* chain = CreateESDChain(dataDir, nRuns, offset);
- chain->GetUserInfo()->Add(esdTrackCuts);
TString selector("AlidNdEtaCorrectionSelector.cxx++");
if (debug != kFALSE)
selector += "g";
- chain->Process(selector, option);
+ Int_t result = executeQuery(chain, &inputList, selector, option);
}
//
#include "../CreateESDChain.C"
+#include "../PWG0Helper.C"
-void makeSystematics(Char_t* dataDir, Int_t nRuns=20, Int_t offset = 0, Bool_t debug = kFALSE, const Char_t* option = "")
+void makeSystematics(Char_t* dataDir, Int_t nRuns=20, Int_t offset = 0, Bool_t debug = kFALSE, Bool_t aProof = kFALSE, const Char_t* option = "")
{
- gSystem->Load("libPWG0base");
- gSystem->Load("libPWG0dep");
+ if (aProof)
+ connectProof("proof01@lxb6046");
+
+ TString libraries("libEG;libGeom;libESD;libPWG0base;libVMC;libMinuit;libSTEER;libPWG0dep;libEVGEN;libFASTSIM;libmicrocern;libpdf;libpythia6;libEGPythia6;libAliPythia6");
+ TString packages("PWG0base;PWG0dep");
+
+ if (!prepareQuery(libraries, packages, kTRUE))
+ return;
gROOT->ProcessLine(".L CreateCuts.C");
return;
}
+ TList inputList;
+ inputList.Add(esdTrackCuts);
+
TChain* chain = CreateESDChain(dataDir, nRuns, offset);
- chain->GetUserInfo()->Add(esdTrackCuts);
- TString selector("AlidNdEtaSystematicsSelector.cxx+");
+ TString selector("AlidNdEtaSystematicsSelector.cxx++");
if (debug != kFALSE)
selector += "g";
- chain->Process(selector, option);
+ Int_t result = executeQuery(chain, &inputList, selector, option);
}
void runAnalysisWithDifferentMaps(Char_t* dataDir, Int_t nRuns=20, Int_t offset = 0, Bool_t debug = kFALSE, Bool_t proof = kFALSE)
//
#include "../CreateESDChain.C"
+#include "../PWG0Helper.C"
-void runMultiplicitySelector(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFALSE, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE)
+TChain* runMultiplicitySelector(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFALSE, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE)
{
- TStopwatch timer;
- timer.Start();
+ if (aProof)
+ connectProof("proof01@lxb6046");
+
+ TString libraries("libEG;libGeom;libESD;libPWG0base");
+ TString packages("PWG0base");
- gSystem->Load("libEG");
- gSystem->Load("libGeom");
- gSystem->Load("libESD");
- gSystem->Load("libPWG0base");
if (aMC != kFALSE)
- gSystem->Load("libPWG0dep");
+ {
+ libraries += ";libVMC;libMinuit;libSTEER;libPWG0dep;libEVGEN;libFASTSIM;libmicrocern;libpdf;libpythia6;libEGPythia6;libAliPythia6";
+ packages += ";PWG0dep";
+ }
+
+ if (!prepareQuery(libraries, packages, kTRUE))
+ return;
- gROOT->ProcessLine(".L CreatedNdEta.C");
gROOT->ProcessLine(".L CreateCuts.C");
gROOT->ProcessLine(".L drawPlots.C");
- TChain* chain = CreateESDChain(data, nRuns, offset);
- TVirtualProof* proof = 0;
-
- if (aProof != kFALSE)
- {
- proof = TProof::Open("jgrosseo@lxb6046");
-
- if (!proof)
- {
- printf("ERROR: PROOF connection not established.\n");
- return;
- }
-
- if (proof->EnablePackage("ESD"))
- {
- printf("ERROR: ESD package could not be enabled.\n");
- return;
- }
-
- if (proof->EnablePackage("PWG0base"))
- {
- printf("ERROR: PWG0base package could not be enabled.\n");
- return;
- }
-
- if (aMC != kFALSE)
- {
- if (proof->EnablePackage("PWG0dep"))
- {
- printf("ERROR: PWG0dep package could not be enabled.\n");
- return;
- }
- }
-
- //chain->SetProof(proof);
- }
-
- // ########################################################
// selection of esd tracks
AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
if (!esdTrackCuts)
return;
}
- chain->GetUserInfo()->Add(esdTrackCuts);
- if (proof)
- proof->AddInput(esdTrackCuts);
+ TList inputList;
+ inputList.Add(esdTrackCuts);
+
+ TChain* chain = CreateESDChain(data, nRuns, offset);
TString selectorName = ((aMC == kFALSE) ? "AliMultiplicityESDSelector" : "AliMultiplicityMCSelector");
AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
- selectorName += ".cxx++";
+ selectorName += ".cxx+";
if (aDebug != kFALSE)
selectorName += "g";
- Long64_t result = -1;
-
- if (proof != kFALSE)
- result = chain->MakeTDSet()->Process(selectorName);
- else
- result = chain->Process(selectorName);
+ Int_t result = executeQuery(chain, &inputList, selectorName);
if (result != 0)
{
return;
}
- timer.Stop();
- timer.Print();
+ // and draw it
+ if (aMC != kFALSE)
+ MultiplicityMC();
+ else
+ MultiplicityESD();
}
//
#include "../CreateESDChain.C"
+#include "../PWG0Helper.C"
-void testAnalysis2(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFALSE, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE)
+void testAnalysis2(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aMC = kFALSE, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction")
{
- gSystem->Load("libEG");
- gSystem->Load("libGeom");
- gSystem->Load("libESD");
- gSystem->Load("libPWG0base");
- if (aMC != kFALSE)
- gSystem->Load("libPWG0dep");
-
- gROOT->ProcessLine(".L CreatedNdEta.C");
- gROOT->ProcessLine(".L CreateCuts.C");
- gROOT->ProcessLine(".L drawPlots.C");
-
- TChain* chain = CreateESDChain(data, nRuns, offset);;
- TVirtualProof* proof = 0;
+ if (aProof)
+ connectProof("proof01@lxb6046");
- if (aProof != kFALSE)
+ TString libraries("libEG;libGeom;libESD;libPWG0base");
+ TString packages("PWG0base");
+ if (aMC != kFALSE)
{
- proof = TProof::Open("jgrosseo@lxb6046");
-
- if (!proof)
- {
- printf("ERROR: PROOF connection not established.\n");
- return;
- }
-
- if (proof->EnablePackage("ESD"))
- {
- printf("ERROR: ESD package could not be enabled.\n");
- return;
- }
+ libraries += ";libVMC;libMinuit;libSTEER;libPWG0dep;libEVGEN;libFASTSIM;libmicrocern;libpdf;libpythia6;libEGPythia6;libAliPythia6";
+ packages += ";PWG0dep";
+ }
- if (proof->EnablePackage("PWG0base"))
- {
- printf("ERROR: PWG0base package could not be enabled.\n");
- return;
- }
+ if (!prepareQuery(libraries, packages, kTRUE))
+ return;
- if (aMC != kFALSE)
- {
- if (proof->EnablePackage("PWG0dep"))
- {
- printf("ERROR: PWG0dep package could not be enabled.\n");
- return;
- }
- }
+ //TODO somehow prevent loading several times
+ gROOT->ProcessLine(".L CreateCuts.C");
+ gROOT->ProcessLine(".L drawPlots.C");
- //chain->SetProof(proof);
- }
+ TChain* chain = CreateESDChain(data, nRuns, offset);
- // ########################################################
// selection of esd tracks
AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
if (!esdTrackCuts)
return;
}
- chain->GetUserInfo()->Add(esdTrackCuts);
- if (proof)
- proof->AddInput(esdTrackCuts);
+ TList inputList;
+ inputList.Add(esdTrackCuts);
if (aMC == kFALSE)
{
- AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection("dndeta_correction", "dndeta_correction");
- dNdEtaCorrection->LoadHistograms("correction_map.root","dndeta_correction");
+ AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
+ dNdEtaCorrection->LoadHistograms(correctionMapFile, correctionMapFolder);
dNdEtaCorrection->ReduceInformation();
- //dNdEtaCorrection->RemoveEdges(2, 0, 2);
+ dNdEtaCorrection->SetName("dndeta_correction");
+ dNdEtaCorrection->SetTitle("dndeta_correction");
- chain->GetUserInfo()->Add(dNdEtaCorrection);
- if (proof)
- proof->AddInput(dNdEtaCorrection);
+ inputList.Add(dNdEtaCorrection);
}
TString selectorName = ((aMC == kFALSE) ? "AlidNdEtaAnalysisESDSelector" : "AlidNdEtaAnalysisMCSelector");
if (aDebug != kFALSE)
selectorName += "g";
- TStopwatch timer;
- timer.Start();
-
- Long64_t result = -1;
+ Int_t result = executeQuery(chain, &inputList, selectorName);
- if (proof != kFALSE)
- result = chain->MakeTDSet()->Process(selectorName);
- else
- result = chain->Process(selectorName);
-
- if (result != 0)
+ if (result >= 0)
{
- printf("ERROR: Executing process failed with %d.\n", result);
- return;
- }
-
- timer.Stop();
- timer.Print();
+ dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
- dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
+ TFile* file = TFile::Open(aMC ? "analysis_mc.root" : "analysis_esd.root");
+ if (!file)
+ {
+ cout << "Error. File not found" << endl;
+ return;
+ }
+ fdNdEtaAnalysis->LoadHistograms();
+ fdNdEtaAnalysis->DrawHistograms();
- TFile* file = TFile::Open(aMC ? "analysis_mc.root" : "analysis_esd.root");
- if (!file)
- {
- cout << "Error. File not found" << endl;
- return;
+ dNdEta(kTRUE);
}
- fdNdEtaAnalysis->LoadHistograms();
- fdNdEtaAnalysis->DrawHistograms();
-
- dNdEta(kTRUE);
}
-