-void run(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, Bool_t mc = kTRUE, const char* option = "")
+void Load(const char* taskName, Bool_t debug)
{
+ TString compileTaskName;
+ compileTaskName.Form("%s.cxx+", taskName);
+ if (debug)
+ compileTaskName += "g";
+
+ if (gProof) {
+ gProof->Load(compileTaskName);
+ } else
+ gROOT->Macro(compileTaskName);
+
+ // Enable debug printouts
+ if (debug)
+ {
+ AliLog::SetClassDebugLevel(taskName, AliLog::kDebug+2);
+ }
+ else
+ AliLog::SetClassDebugLevel(taskName, AliLog::kWarning);
+}
+
+void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Int_t aProof = kFALSE, Int_t requiredData = 1, const char* option = "")
+{
+ // runWhat options: 0 = AlidNdEtaTask
+ // 1 = AlidNdEtaCorrectionTask
+ // 2 = both
+ //
+ // aProof option: 0 no proof
+ // 1 proof with chain
+ // 2 proof with dataset
+ //
+ // requiredData option: 0 = only ESD
+ // 1 = ESD+MC
+ // 2 = RAW (ESD+check on event type)
+ //
+ // option is passed to the task(s)
+ // option SAVE is removed and results in moving the output files to maps/<ds name>/<trigger>/<det>
+ //
+
+ TString taskName;
+ if (runWhat == 0 || runWhat == 2)
+ {
+ Printf("Running AlidNdEtaTask");
+ }
+ if (runWhat == 1 || runWhat == 2)
+ {
+ Printf("Running AlidNdEtaCorrectionTask");
+ if (requiredData != 1)
+ {
+ Printf("AlidNdEtaCorrectionTask needs MC. Exiting...");
+ return;
+ }
+ }
+
+ if (nRuns < 0)
+ nRuns = 1234567890;
+
if (aProof)
{
- TProof::Open("lxb6046");
+ TProof::Open("alicecaf");
+ Bool_t fullAliroot = kFALSE;
// Enable the needed package
- gProof->UploadPackage("STEERBase");
- gProof->EnablePackage("STEERBase");
- gProof->UploadPackage("ESD");
- gProof->EnablePackage("ESD");
- gProof->UploadPackage("AOD");
- gProof->EnablePackage("AOD");
- gProof->UploadPackage("ANALYSIS");
- gProof->EnablePackage("ANALYSIS");
- gProof->UploadPackage("PWG0base");
- gProof->EnablePackage("PWG0base");
+ if (1)
+ {
+ gProof->UploadPackage("$ALICE_ROOT/STEERBase");
+ gProof->EnablePackage("$ALICE_ROOT/STEERBase");
+ gProof->UploadPackage("$ALICE_ROOT/ESD");
+ gProof->EnablePackage("$ALICE_ROOT/ESD");
+ gProof->UploadPackage("$ALICE_ROOT/AOD");
+ gProof->EnablePackage("$ALICE_ROOT/AOD");
+ gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
+ gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
+ gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
+ gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
+ }
+ else if (!fullAliroot)
+ {
+ gProof->UploadPackage("$ALICE_ROOT/AF-v4-18-12-AN.par");
+ gProof->EnablePackage("AF-v4-18-12-AN");
+ }
+ else
+ {
+ // needed if ITS recpoints are accessed, see AlidNdEtaTask, FULLALIROOT define statement
+ gProof->UploadPackage("$ALICE_ROOT/v4-18-15-AN-all.par");
+ gProof->EnablePackage("v4-18-15-AN-all");
+
+ gProof->Exec("TGrid::Connect(\"alien://\")", kTRUE);
+
+ // TODO add this to loadlibs.C
+ gProof->Exec("gSystem->Load(\"libXMLParser\")", kTRUE);
+ }
+
+ gProof->UploadPackage("$ALICE_ROOT/PWG0base");
+ gProof->EnablePackage("$ALICE_ROOT/PWG0base");
}
else
{
+ gSystem->AddIncludePath("-I${ALICE_ROOT}/include/ -I${ALICE_ROOT}/PWG0/ -I${ALICE_ROOT}/PWG0/dNdEta/");
gSystem->Load("libVMC");
gSystem->Load("libTree");
+ gSystem->Load("libProof");
gSystem->Load("libSTEERBase");
gSystem->Load("libESD");
+ gSystem->Load("libAOD");
gSystem->Load("libANALYSIS");
+ gSystem->Load("libANALYSISalice");
gSystem->Load("libPWG0base");
}
- // Create chain of input files
- gROOT->LoadMacro("../CreateESDChain.C");
- chain = CreateESDChain(data, nRuns, offset);
-
// Create the analysis manager
mgr = new AliAnalysisManager;
- TString taskName("AlidNdEtaTask.cxx+");
- if (aDebug)
- taskName += "+g";
-
- // Create, add task
- if (aProof) {
- gProof->Load(taskName);
- } else
- gROOT->Macro(taskName);
-
- task = new AlidNdEtaTask(option);
-
- AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kTPC;
- task->SetAnalysisMode(analysisMode);
+ // Add ESD handler
+
+ if (fullAliroot)
+ AliESDInputHandler* esdH = new AliESDInputHandlerRP; // for RecPoints
+ else
+ AliESDInputHandler* esdH = new AliESDInputHandler;
+
+ esdH->SetInactiveBranches("FMD AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks MuonTracks TrdTracks");
+ mgr->SetInputEventHandler(esdH);
- if (analysisMode != AliPWG0Helper::kSPD)
+ AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD | AliPWG0Helper::kFieldOn;
+ //AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD | AliPWG0Helper::kFieldOn | AliPWG0Helper::kSPDOnlyL0;
+ //AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kTPCITS | AliPWG0Helper::kFieldOn;
+
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kAcceptAll | AliTriggerAnalysis::kOfflineFlag;
+ AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kAcceptAll | AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kOneParticle;
+
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kSPDGFOBits | AliTriggerAnalysis::kOfflineFlag;
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kSPDGFOBits | AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kOneParticle;
+
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kV0AND | AliTriggerAnalysis::kOfflineFlag;
+
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kV0OR | AliTriggerAnalysis::kOfflineFlag;
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kV0OR | AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kOneParticle;
+
+ AliPWG0Helper::DiffTreatment diffTreatment = AliPWG0Helper::kMCFlags;
+ //AliPWG0Helper::DiffTreatment diffTreatment = AliPWG0Helper::kE710Cuts;
+
+ AliPWG0Helper::PrintConf(analysisMode, trigger, diffTreatment);
+
+ AliESDtrackCuts* esdTrackCuts = 0;
+ if (!(analysisMode & AliPWG0Helper::kSPD))
{
// selection of esd tracks
gROOT->ProcessLine(".L ../CreateStandardCuts.C");
- AliESDtrackCuts* esdTrackCuts = CreateTrackCuts(analysisMode);
+ esdTrackCuts = CreateTrackCuts(analysisMode);
if (!esdTrackCuts)
{
printf("ERROR: esdTrackCuts could not be created\n");
return;
}
+ esdTrackCuts->SetHistogramsOn(kTRUE);
+ }
+
+ cInput = mgr->GetCommonInputContainer();
+
+ // remove SAVE option if set
+ Bool_t save = kFALSE;
+ TString optStr(option);
+ if (optStr.Contains("SAVE"))
+ {
+ optStr = optStr(0,optStr.Index("SAVE")) + optStr(optStr.Index("SAVE")+4, optStr.Length());
+ save = kTRUE;
+ }
+
+ // physics selection
+ gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
+ physicsSelectionTask = AddTaskPhysicsSelection((requiredData == 2) ? kFALSE : kTRUE);
+
+ // 900 GeV
+ if (0 && requiredData == 2)
+ {
+ physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL #769 #3119");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1A-ABCE-NOPF-ALL #446 #2554");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1C-ABCE-NOPF-ALL #1334 #2228");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1-E-NOPF-ALL #790");
+ }
+
+ // 7 TeV, run 114783
+ if (0 && requiredData == 2)
+ {
+ physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL #345");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1A-ABCE-NOPF-ALL #2130");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1C-ABCE-NOPF-ALL #3018");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1-E-NOPF-ALL #1238");
+ }
+
+ // 7 TeV, run 114786,98
+ if (0 && requiredData == 2)
+ {
+ physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL #346");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1A-ABCE-NOPF-ALL #2131");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1C-ABCE-NOPF-ALL #3019");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1-E-NOPF-ALL #1238");
+ //physicsSelectionTask->GetPhysicsSelection()->Initialize(114786);
+ }
+ // FO efficiency (for MC)
+ if (1 && requiredData != 2)
+ {
+ //const char* fastORFile = "spdFOEff_run104824_52.root";
+ //const char* fastORFile = "spdFOEff_run104867_92.root";
+ //const char* fastORFile = "spdFOEff_run105054_7.root";
+ const char* fastORFile = "spdFOEff_run114931.root";
+
+ Printf("NOTE: Simulating FAST-OR efficiency on the analysis level using file %s", fastORFile);
+ TFile::Open(fastORFile);
+ spdFOEff = (TH1F*) gFile->Get("spdFOEff");
+ physicsSelectionTask->GetPhysicsSelection()->Initialize(114931);
+ physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis()->SetSPDGFOEfficiency(spdFOEff);
+ }
+
+ // V0 syst. study
+ if (0)
+ {
+ Printf("NOTE: Systematic study for VZERO enabled!");
+ physicsSelectionTask->GetPhysicsSelection()->Initialize(104867);
+ for (Int_t i=0; i<1; i++)
+ {
+ // for MC and data
+ //physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0HwPars(15, 61.5, 86.5);
+ physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0AdcThr(6);
+ // only for MC
+ //physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0HwPars(0, 0, 125);
+ //physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0AdcThr(0);
+ }
+ }
+
+ // BG study
+ //physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1A-ABCE-NOPF-ALL");
+ //physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1C-ABCE-NOPF-ALL");
+
+ // Create, add task
+ if (runWhat == 0 || runWhat == 2)
+ {
+ Load("AlidNdEtaTask", aDebug);
+ task = new AlidNdEtaTask(optStr);
+
+ if (requiredData == 1)
+ task->SetReadMC();
+
+ //physicsSelectionTask->GetPhysicsSelection()->SetBin0Callback("AlidNdEtaTask");
+
+ // syst. error flags
+ //task->SetUseMCVertex();
+ //task->SetUseMCKine();
+ //task->SetOnlyPrimaries();
+ //task->SetFillPhi();
+ //task->SetSymmetrize();
+
+ // INEL>0 definition
+ if (trigger & AliTriggerAnalysis::kOneParticle)
+ task->SetMultAxisEta1();
+
+ task->SetTrigger(trigger);
+ task->SetAnalysisMode(analysisMode);
task->SetTrackCuts(esdTrackCuts);
+ //task->SetDeltaPhiCut(0.064);
+ task->SetDiffTreatment(diffTreatment);
+
+ mgr->AddTask(task);
+
+ // Attach input
+ mgr->ConnectInput(task, 0, cInput);
+
+ // Attach output
+ cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
+ mgr->ConnectOutput(task, 1, cOutput);
}
- if (mc)
- task->SetReadMC();
+ if (runWhat == 1 || runWhat == 2)
+ {
+ Load("AlidNdEtaCorrectionTask", aDebug);
+ task2 = new AlidNdEtaCorrectionTask(optStr);
+
+ // syst. error flags
+ //task2->SetFillPhi();
+ //task2->SetOnlyPrimaries();
+ //task2->SetSymmetrize();
- mgr->AddTask(task);
+ // to account for gaps in real life SPD geometry
+ task2->SetSkipParticles();
- if (mc) {
+ // INEL>0 definition
+ if (trigger & AliTriggerAnalysis::kOneParticle)
+ task2->SetMultAxisEta1();
+
+ task2->SetTrigger(trigger);
+ task2->SetAnalysisMode(analysisMode);
+ task2->SetTrackCuts(esdTrackCuts);
+ //task2->SetDeltaPhiCut(0.064);
+ task2->SetDiffTreatment(diffTreatment);
+
+ mgr->AddTask(task2);
+
+ // Attach input
+ mgr->ConnectInput(task2, 0, cInput);
+
+ // Attach output
+ cOutput = mgr->CreateContainer("cOutput2", TList::Class(), AliAnalysisManager::kOutputContainer);
+ mgr->ConnectOutput(task2, 0, cOutput);
+ }
+
+ if (requiredData == 1)
+ {
// Enable MC event handler
AliMCEventHandler* handler = new AliMCEventHandler;
handler->SetReadTR(kFALSE);
mgr->SetMCtruthEventHandler(handler);
}
- // Add ESD handler
- AliESDInputHandler* esdH = new AliESDInputHandler;
- mgr->SetInputEventHandler(esdH);
-
- // Attach input
- cInput = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer);
- mgr->ConnectInput(task, 0, cInput);
-
- // Attach output
- cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
- mgr->ConnectOutput(task, 0, cOutput);
-
// Enable debug printouts
if (aDebug)
mgr->SetDebugLevel(2);
mgr->InitAnalysis();
mgr->PrintStatus();
- mgr->StartAnalysis((aProof) ? "proof" : "local", chain);
-}
-
-void loadlibs()
-{
- gSystem->Load("libTree");
- gSystem->Load("libVMC");
-
- gSystem->Load("libSTEERBase");
- gSystem->Load("libANALYSIS");
- gSystem->Load("libPWG0base");
-}
-
-void FinishAnalysisAll(const char* dataInput = "analysis_esd_raw.root", const char* dataOutput = "analysis_esd.root", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction")
-{
- loadlibs();
-
- AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
- TFile::Open(correctionMapFile);
- dNdEtaCorrection->LoadHistograms();
-
- TFile* file = TFile::Open(dataInput);
-
- if (!file)
- {
- cout << "Error. File not found" << endl;
- return;
- }
-
- dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
- fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
- fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL, 1);
- //fdNdEtaAnalysis->DrawHistograms(kTRUE);
- TFile* file2 = TFile::Open(dataOutput, "RECREATE");
- fdNdEtaAnalysis->SaveHistograms();
-
- file->cd();
- fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr");
- fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
- fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kVertexReco, 1);
- //fdNdEtaAnalysis->DrawHistograms(kTRUE);
- file2->cd();
- fdNdEtaAnalysis->SaveHistograms();
-
- file->cd();
- fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx");
- fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
- fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kTrack2Particle, 1);
- //fdNdEtaAnalysis->DrawHistograms(kTRUE);
- file2->cd();
- fdNdEtaAnalysis->SaveHistograms();
-
- file->cd();
- fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracks", "dndetaTracks");
- fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
- fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone, 1);
- //fdNdEtaAnalysis->DrawHistograms(kTRUE);
- file2->cd();
- fdNdEtaAnalysis->SaveHistograms();
-
- file2->Write();
- file2->Close();
-}
-
-void* FinishAnalysis(const char* analysisFile = "analysis_esd_raw.root", const char* analysisDir = "fdNdEtaAnalysisESD", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction", Bool_t useUncorrected = kFALSE, Bool_t simple = kFALSE)
-{
- loadlibs();
-
- TFile* file = TFile::Open(analysisFile);
-
- dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(analysisDir, analysisDir);
- fdNdEtaAnalysis->LoadHistograms();
-
- if (correctionMapFile)
+ if (aProof == 2)
{
- AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
- TFile::Open(correctionMapFile);
- dNdEtaCorrection->LoadHistograms();
+ // process dataset
- fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL);
- //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kINEL);
- //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kTrack2Particle);
+ mgr->StartAnalysis("proof", data, nRuns, offset);
+
+ if (save)
+ {
+ TString path("maps/");
+ path += TString(data).Tokenize("/")->Last()->GetName();
+
+ UInt_t triggerNoFlags = (UInt_t) trigger % (UInt_t) AliTriggerAnalysis::kStartOfFlags;
+ switch (triggerNoFlags)
+ {
+ case AliTriggerAnalysis::kMB1: path += "/mb1"; break;
+ case AliTriggerAnalysis::kMB2: path += "/mb2"; break;
+ case AliTriggerAnalysis::kMB3: path += "/mb3"; break;
+ case AliTriggerAnalysis::kSPDGFO: path += "/spdgfo"; break;
+ case AliTriggerAnalysis::kSPDGFOBits: path += "/spdgfobits"; break;
+ case AliTriggerAnalysis::kAcceptAll: path += "/all"; break;
+ case AliTriggerAnalysis::kV0AND: path += "/v0and"; break;
+ case AliTriggerAnalysis::kV0OR: path += "/v0or"; break;
+ case AliTriggerAnalysis::kNSD1: path += "/nsd1"; break;
+ case AliTriggerAnalysis::kMB1Prime: path += "/mb1prime"; break;
+ default: Printf("ERROR: Trigger undefined for path to files"); return;
+ }
+
+ if (trigger & AliTriggerAnalysis::kOneParticle)
+ path += "-onepart";
+
+ if (strlen(requireClass) > 0 && strlen(rejectClass) == 0)
+ {
+ path += Form("/%s", requireClass);
+ }
+ else if (strlen(rejectClass) > 0)
+ path += Form("/%s--%s", requireClass, rejectClass);
+
+ if (analysisMode & AliPWG0Helper::kSPD)
+ path += "/spd";
+
+ if (analysisMode & AliPWG0Helper::kSPDOnlyL0)
+ path += "onlyL0";
+
+ if (analysisMode & AliPWG0Helper::kTPC)
+ path += "/tpc";
+
+ if (analysisMode & AliPWG0Helper::kTPCITS)
+ path += "/tpcits";
+
+ gSystem->mkdir(path, kTRUE);
+ if (runWhat == 0 || runWhat == 2)
+ {
+ gSystem->Rename("analysis_esd_raw.root", path + "/analysis_esd_raw.root");
+ if (requiredData == 1)
+ gSystem->Rename("analysis_mc.root", path + "/analysis_mc.root");
+ }
+ if (runWhat == 1 || runWhat == 2)
+ {
+ if (optStr.Contains("process-types"))
+ gSystem->Rename("correction_mapprocess-types.root", path + "/correction_mapprocess-types.root");
+ else
+ gSystem->Rename("correction_map.root", path + "/correction_map.root");
+ }
+ gSystem->Rename("event_stat.root", path + "/event_stat.root");
+
+ Printf(">>>>> Moved files to %s", path.Data());
+ }
+ }
+ else if (aProof == 3)
+ {
+ gROOT->ProcessLine(".L CreateChainFromDataSet.C");
+ ds = gProof->GetDataSet(data)->GetStagedSubset();
+ chain = CreateChainFromDataSet(ds, "esdTree", nRuns);
+ mgr->StartAnalysis("local", chain, 1234567890, offset);
}
else
- fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone);
-
- fdNdEtaAnalysis->DrawHistograms(simple);
-
- TH1* hist = fdNdEtaAnalysis->GetdNdEtaHistogram(1);
- Int_t binLeft = hist->GetXaxis()->FindBin(-0.5);
- Int_t binRight = hist->GetXaxis()->FindBin(0.5);
- Float_t value1 = hist->Integral(binLeft, binRight);
-
- hist = fdNdEtaAnalysis->GetdNdEtaHistogram(2);
- Float_t value2 = hist->Integral(binLeft, binRight);
+ {
+ // Create chain of input files
+ gROOT->LoadMacro("../CreateESDChain.C");
- if (value2 > 0)
- printf("Ratio is %f, values are %f %f\n", value1 / value2, value1, value2);
+ chain = CreateESDChain(data, nRuns, offset);
+ //chain = CreateChain("TE", data, nRuns, offset);
- return fdNdEtaAnalysis;
+ mgr->StartAnalysis((aProof > 0) ? "proof" : "local", chain);
+ }
}
+