]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
run both tasks at the same time
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 14 Aug 2008 16:43:05 +0000 (16:43 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 14 Aug 2008 16:43:05 +0000 (16:43 +0000)
PWG0/dNdEta/correct.C
PWG0/dNdEta/run.C

index 459f4c20ac50f3c453ef9423bb55a9356e4b4597..6be5adae8327a7882c56f135e6775e0fb1c98dfb 100644 (file)
@@ -1,6 +1,121 @@
+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;
+  }
+
+  // Note: the last parameter does not define which analysis is going to happen, the histograms will be overwritten when loading from the f
+  dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaNSD", "dndetaNSD");
+  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
+  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kNSD, "ESD -> NSD");
+  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
+  TFile* file2 = TFile::Open(dataOutput, "RECREATE");
+  fdNdEtaAnalysis->SaveHistograms();
+
+  file->cd();
+  dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
+  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
+  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL, "ESD -> full inelastic");
+  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
+  file2->cd();
+  fdNdEtaAnalysis->SaveHistograms();
+
+  file->cd();
+  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr");
+  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
+  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kVertexReco, "ESD -> minimum bias");
+  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
+  file2->cd();
+  fdNdEtaAnalysis->SaveHistograms();
+
+  file->cd();
+  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx");
+  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
+  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kTrack2Particle, "ESD -> MB with vertex");
+  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
+  file2->cd();
+  fdNdEtaAnalysis->SaveHistograms();
+
+  file->cd();
+  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracks", "dndetaTracks");
+  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
+  fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone, "ESD raw with pt cut");
+  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
+  file2->cd();
+  fdNdEtaAnalysis->SaveHistograms();
+
+  file->cd();
+  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracksAll", "dndetaTracksAll");
+  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
+  fdNdEtaAnalysis->Finish(0, -1, AlidNdEtaCorrection::kNone, "ESD raw");
+  //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)
+  {
+    AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
+    TFile::Open(correctionMapFile);
+    dNdEtaCorrection->LoadHistograms();
+
+    fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL);
+    //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kINEL);
+    //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kTrack2Particle);
+  }
+  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);
+
+  if (value2 > 0)
+    printf("Ratio is %f, values are %f %f\n", value1 / value2, value1, value2);
+
+  return fdNdEtaAnalysis;
+}
+
 void correct()
 {
-  gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/dNdEta/run.C");
   FinishAnalysisAll();
   gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/dNdEta/drawPlots.C");
   dNdEta();
index 5e5ca331da620f37bb270ed310b3ecb8dbd2904f..f96e56162025e9c276d6e0f15907080d79eee473 100644 (file)
@@ -1,33 +1,48 @@
+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, Bool_t mc = kTRUE, const char* option = "")
 {
   // runWhat options: 0 = AlidNdEtaTask
   //                  1 = AlidNdEtaCorrectionTask
+  //                  2 = both
   //
   // aProof option: 0 no proof
   //                1 proof with chain
   //                2 proof with dataset
 
   TString taskName;
-  if (runWhat == 0)
+  if (runWhat == 0 || runWhat == 2)
   {
-    taskName = "AlidNdEtaTask";
+    Printf("Running AlidNdEtaTask");
   }
-  else if (runWhat == 1)
+  if (runWhat == 1 || runWhat == 2)
   {
-    taskName = "AlidNdEtaCorrectionTask";
+    Printf("Running AlidNdEtaCorrectionTask");
     if (!mc)
     {
-      Printf("%s needs MC. Exiting...", taskName.Data());
+      Printf("AlidNdEtaCorrectionTask needs MC. Exiting...");
       return;
     }
   }
-  else
-  {
-    Printf("Do not know what to run. Exiting...");
-    return;
-  }
-
-  Printf("Processing task: %s", taskName.Data());
 
   if (nRuns < 0)
     nRuns = 1234567890;
@@ -75,17 +90,6 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool
   // Create the analysis manager
   mgr = new AliAnalysisManager;
 
-  TString compileTaskName;
-  compileTaskName.Form("%s.cxx+", taskName.Data());
-  if (aDebug)
-    compileTaskName += "+g";
-
-  // Create, add task
-  if (aProof) {
-    gProof->Load(compileTaskName);
-  } else
-    gROOT->Macro(compileTaskName);
-
   AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD;
   AliPWG0Helper::Trigger      trigger      = AliPWG0Helper::kMB1;
 
@@ -105,8 +109,12 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool
     esdTrackCuts->SetHistogramsOn(kTRUE);
   }
 
-  if (runWhat == 0)
+  cInput  = mgr->CreateContainer("cInput", TChain::Class(), AliAnalysisManager::kInputContainer);
+
+  // Create, add task
+  if (runWhat == 0 || runWhat == 2)
   {
+    Load("AlidNdEtaTask", aDebug);
     task = new AlidNdEtaTask(option);
 
     if (mc)
@@ -114,20 +122,41 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool
 
     //task->SetUseMCVertex();
     //task->SetUseMCKine();
+    //task->SetOnlyPrimaries();
+  
+    task->SetTrigger(trigger);
+    task->SetAnalysisMode(analysisMode);
+    task->SetTrackCuts(esdTrackCuts);
+
+    mgr->AddTask(task);
+    // Attach input
+    mgr->ConnectInput(task, 0, cInput);
+
+    // Attach output
+    cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
+    mgr->ConnectOutput(task, 0, cOutput);
   }
-  else if (runWhat == 1)
+  if (runWhat == 1 || runWhat == 2)
   {
-    task = new AlidNdEtaCorrectionTask(option);
-
-    //task->SetOnlyPrimaries();
+    Load("AlidNdEtaCorrectionTask", aDebug);
+    task2 = new AlidNdEtaCorrectionTask(option);
+    //task2->SetOnlyPrimaries();
+
+    task2->SetTrigger(trigger);
+    task2->SetAnalysisMode(analysisMode);
+    task2->SetTrackCuts(esdTrackCuts);
+
+    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);
   }
 
-  task->SetTrigger(trigger);
-  task->SetAnalysisMode(analysisMode);
-  task->SetTrackCuts(esdTrackCuts);
-
-  mgr->AddTask(task);
-
   if (mc) {
     // Enable MC event handler
     AliMCEventHandler* handler = new AliMCEventHandler;
@@ -140,22 +169,9 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool
   esdH->SetInactiveBranches("*");
   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);
-    AliLog::SetClassDebugLevel(taskName, AliLog::kDebug+2);
-  }
-  else
-    AliLog::SetClassDebugLevel(taskName, AliLog::kWarning);
 
   // Run analysis
   mgr->InitAnalysis();
@@ -178,118 +194,3 @@ void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool
   }
 }
 
-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;
-  }
-
-    // Note: the last parameter does not define which analysis is going to happen, the histograms will be overwritten when loading from the f
-  dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaNSD", "dndetaNSD");
-  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
-  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kNSD, "ESD -> NSD");
-  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
-  TFile* file2 = TFile::Open(dataOutput, "RECREATE");
-  fdNdEtaAnalysis->SaveHistograms();
-
-  file->cd();
-  dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
-  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
-  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL, "ESD -> full inelastic");
-  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
-  file2->cd();
-  fdNdEtaAnalysis->SaveHistograms();
-
-  file->cd();
-  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr");
-  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
-  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kVertexReco, "ESD -> minimum bias");
-  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
-  file2->cd();
-  fdNdEtaAnalysis->SaveHistograms();
-
-  file->cd();
-  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx");
-  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
-  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kTrack2Particle, "ESD -> MB with vertex");
-  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
-  file2->cd();
-  fdNdEtaAnalysis->SaveHistograms();
-
-  file->cd();
-  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracks", "dndetaTracks");
-  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
-  fdNdEtaAnalysis->Finish(0, 0.3, AlidNdEtaCorrection::kNone, "ESD raw with pt cut");
-  //fdNdEtaAnalysis->DrawHistograms(kTRUE);
-  file2->cd();
-  fdNdEtaAnalysis->SaveHistograms();
-
-  file->cd();
-  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTracksAll", "dndetaTracksAll");
-  fdNdEtaAnalysis->LoadHistograms("fdNdEtaAnalysisESD");
-  fdNdEtaAnalysis->Finish(0, -1, AlidNdEtaCorrection::kNone, "ESD raw");
-  //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)
-  {
-    AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
-    TFile::Open(correctionMapFile);
-    dNdEtaCorrection->LoadHistograms();
-
-    fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL);
-    //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kINEL);
-    //fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0, AlidNdEtaCorrection::kTrack2Particle);
-  }
-  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);
-
-  if (value2 > 0)
-    printf("Ratio is %f, values are %f %f\n", value1 / value2, value1, value2);
-
-  return fdNdEtaAnalysis;
-}