]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/dNdEta/testAnalysis2.C
adapting pt cut off correction to new correction schema
[u/mrichter/AliRoot.git] / PWG0 / dNdEta / testAnalysis2.C
index 835f8dc961c5554158b6bf848272283065ab19a9..5eb13c7d9db891cb31f4ae443ab5f8b0b1a6f19a 100644 (file)
 //
 
 #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", const char* option = "", const char* proofServer = "jgrosseo@lxb6046")
 {
-  gSystem->Load("libEG");
-  gSystem->Load("libGeom");
-  gSystem->Load("libESD");
-  gSystem->Load("libPWG0base");
-  if (aMC != kFALSE)
-    gSystem->Load("libPWG0dep");
+  if (aProof)
+  {
+    connectProof(proofServer);
+    gProof->AddInput(new TParameter<long>("PROOF_MaxSlavesPerNode", (long)2));
+    gProof->AddInput(new TNamed("PROOF_Packetizer", "TAdaptivePacketizer"));
+  }
+
+  TString libraries("libEG;libGeom;libESD;libPWG0base");
+  TString packages("adaptivepacketizer;PWG0base");
+
+  if (!prepareQuery(libraries, packages, kTRUE))
+    return;
 
-  gROOT->ProcessLine(".L CreatedNdEta.C");
+  //TODO somehow prevent loading several times
   gROOT->ProcessLine(".L CreateCuts.C");
+  gROOT->ProcessLine(".L drawPlots.C");
 
-  TChain* chain = 0;
-  TVirtualProof* proof = 0;
-  if (aProof == kFALSE)
-    chain = CreateESDChainFromDir(data, nRuns, offset);
-  else
-  {
-    chain = CreateESDChainFromList(data, nRuns, offset);
-    proof = gROOT->Proof("alicecaf@lxb6041");
+  TChain* chain = CreateESDChain(data, nRuns, offset);
 
-    if (!proof)
-    {
-      printf("ERROR: PROOF connection not established.\n");
-      return;
-    }
+  TList inputList;
 
-    if (proof->EnablePackage("ESD"))
+  if (aMC == kFALSE)
+  {
+    // selection of esd tracks
+    AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
+    if (!esdTrackCuts)
     {
-      printf("ERROR: ESD package could not be enabled.\n");
+      printf("ERROR: esdTrackCuts could not be created\n");
       return;
     }
 
-    if (proof->EnablePackage("PWG0base"))
-    {
-      printf("ERROR: PWG0base package could not be enabled.\n");
-      return;
-    }
+    inputList.Add(esdTrackCuts);
+  }
+
+  TString selectorName = ((aMC == kFALSE) ? "AlidNdEtaAnalysisESDSelector" : "AlidNdEtaAnalysisMCSelector");
+  AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
+
+  selectorName += ".cxx+";
+
+  if (aDebug != kFALSE)
+    selectorName += "+g";
+
+  Int_t result = executeQuery(chain, &inputList, selectorName, option);
 
-    if (aMC != kFALSE)
+  if (result >= 0)
+  {
+    if (aMC)
     {
-      if (proof->EnablePackage("PWG0dep"))
+      dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
+
+      TFile* file = TFile::Open("analysis_mc.root");
+
+      if (!file)
       {
-        printf("ERROR: PWG0dep package could not be enabled.\n");
+        cout << "Error. File not found" << endl;
         return;
       }
+      fdNdEtaAnalysis->LoadHistograms();
+      fdNdEtaAnalysis->DrawHistograms(kTRUE);
     }
-
-    chain->SetProof(proof);
+    else
+      FinishAnalysisAll("analysis_esd_raw.root", "analysis_esd.root", correctionMapFile, correctionMapFolder);
   }
+}
 
-  // ########################################################
-  // selection of esd tracks
-  AliESDtrackCuts* esdTrackCuts = CreateTrackCuts();
-  if (!esdTrackCuts)
+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")
+{
+  gSystem->Load("libPWG0base");
+
+  AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
+  TFile::Open(correctionMapFile);
+  dNdEtaCorrection->LoadHistograms();
+
+  TFile* file = TFile::Open(dataInput);
+
+  if (!file)
   {
-    printf("ERROR: esdTrackCuts could not be created\n");
+    cout << "Error. File not found" << endl;
     return;
   }
 
-  chain->GetUserInfo()->Add(esdTrackCuts);
-  if (proof)
-    proof->AddInput(esdTrackCuts);
-
-  TString selectorName = ((aMC == kFALSE) ? "AlidNdEtaAnalysisESDSelector" : "AlidNdEtaAnalysisMCSelector");
-  AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
+  dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis("dndeta", "dndeta");
+  fdNdEtaAnalysis->LoadHistograms("dndeta");
+  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kINEL);
+  fdNdEtaAnalysis->DrawHistograms(kTRUE);
+  TFile* file2 = TFile::Open(dataOutput, "RECREATE");
+  fdNdEtaAnalysis->SaveHistograms();
+
+  file->cd();
+  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTr", "dndetaTr");
+  fdNdEtaAnalysis->LoadHistograms("dndeta");
+  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kVertexReco);
+  fdNdEtaAnalysis->DrawHistograms(kTRUE);
+  file2->cd();
+  fdNdEtaAnalysis->SaveHistograms();
+
+  file->cd();
+  fdNdEtaAnalysis = new dNdEtaAnalysis("dndetaTrVtx", "dndetaTrVtx");
+  fdNdEtaAnalysis->LoadHistograms("dndeta");
+  fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3, AlidNdEtaCorrection::kTrack2Particle);
+  fdNdEtaAnalysis->DrawHistograms(kTRUE);
+  file2->cd();
+  fdNdEtaAnalysis->SaveHistograms();
+}
 
-  // workaround for a bug in PROOF that only allows header files for .C files
-  // please create symlink from <selector>.cxx to <selector>.C
-  if (proof != kFALSE)
-    selectorName += ".C+";
-  else
-    selectorName += ".cxx+";
+void FinishAnalysis(const char* analysisFile = "analysis_esd.root", const char* analysisDir = "dndeta", const char* correctionMapFile = "correction_map.root", const char* correctionMapFolder = "dndeta_correction", Bool_t useUncorrected = kFALSE, Bool_t simple = kFALSE)
+{
+  gSystem->Load("libPWG0base");
 
-  if (aDebug != kFALSE)
-    selectorName += "g";
+  TFile* file = TFile::Open(analysisFile);
 
-  TStopwatch timer;
-  timer.Start();
+  dNdEtaAnalysis* fdNdEtaAnalysis = new dNdEtaAnalysis(analysisDir, analysisDir);
+  fdNdEtaAnalysis->LoadHistograms();
 
-  Long64_t result = chain->Process(selectorName);
-  if (result != 0)
+  if (correctionMapFile)
   {
-    printf("ERROR: Executing process failed with %d.\n", result);
-    return;
+    AlidNdEtaCorrection* dNdEtaCorrection = new AlidNdEtaCorrection(correctionMapFolder, correctionMapFolder);
+    TFile::Open(correctionMapFile);
+    dNdEtaCorrection->LoadHistograms();
+
+    fdNdEtaAnalysis->Finish(dNdEtaCorrection, 0.3);
   }
 
-  timer.Stop();
-  timer.Print();
+  fdNdEtaAnalysis->DrawHistograms(simple);
 
-  CreatedNdEta(aMC ? kFALSE : kTRUE);
-}
+  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);
+
+  printf("Ratio is %f, values are %f %f\n", value1 / value2, value1, value2);
+}