]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/Correlations/DPhi/FourierDecomposition/AddTaskDhc.C
remove h corr for iana 4
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / FourierDecomposition / AddTaskDhc.C
index 752831a771b1a5063a8cf0ed2f4f30c809dbd2b2..df800316b4b13ca7803d472e56708975c70fac9d 100644 (file)
@@ -1,33 +1,49 @@
-AliDhcTask *AddTaskDhc(Int_t iAna = 1, TString chTaskFile = "alien:///alice/cern.ch/user/t/tschuste/LEGO_DhcTask.root")
+// $Id$
+
+// File config location
+// alien:///alice/cern.ch/user/t/tschuste/correction_hybrid_nulled.root
+
+AliDhcTask *AddTaskDhc(
+  Int_t iAna          = 2, /*1=h-h, 2=mu-h, 4=mu-mu*/ 
+  TString chUName     = "", 
+  TString chHEffFile  = "", 
+  TString chMuEffFile = "", 
+  TString chTaskFile  = "", 
+  TString chTaskName  = "", 
+  TString chNTracks   = "PicoTracks",
+  TString centSel     = "V0M",
+  TString className   = "",
+  Bool_t  doMassCut   = kFALSE,
+  Bool_t  doFillSame  = kFALSE,
+  UInt_t  trigsel     = AliVEvent::kINT7
+)
 {
-  const char *nTracks     = "PicoTracks";
-  const char *inputTracks = "HybridTracks";
+  Char_t chExtraName[256];
   
+  // Get the analysis manager
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
     Error("AddTaskDhc", "No analysis manager found.");
     return;
   }
-  
-  // Track Cuts
-  gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalEsdTpcTrack.C");
-  AliEmcalEsdTpcTrackTask *hybTask = AddTaskEmcalEsdTpcTrack(inputTracks,"Hybrid_LHC11h");
-  
-  // Pico Tracks
-  gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalPicoTrackMaker.C");
-  AliEmcalPicoTrackMaker *pTrackTask = AddTaskEmcalPicoTrackMaker(nTracks, inputTracks, "LHC11h");
-  
+
+  // ESD or AOD? write into the task name etc.
+  sprintf(chExtraName,"_%s",mgr->GetInputEventHandler()->GetDataType());
+
   AliDhcTask *dhcTask = 0x0;
-  
-  if (iAna==99) { // load task from file
+
+  // if string chTaskFile is given, load a pre-configured task from file
+  if (!chTaskFile.EqualTo("")) {
+    iAna=999;
     TFile *fiDhcTask = 0x0;
     fiDhcTask = TFile::Open(chTaskFile,"OLD");
     if (!fiDhcTask){
-      cout << "Requested file:" << fiDhcTask << " was not opened. ABORT." << endl;
+      Error("AddTaskDhc",Form("Requested file: %s was not opened. ABORT.",chTaskFile));
       return;
     }
-    dhcTask = (AliDhcTask*) fiDhcTask->Get("Task_tschuste_Dhc");
-  } else { // create a new task
+    dhcTask = (AliDhcTask*) fiDhcTask->Get(chTaskName);
+  }
+  else { // create a new task
     // Binning
     Double_t arPt[5] = {0.5, 1.0, 2.0, 4.0};
     TAxis *axPt = new TAxis(3,arPt);
@@ -41,22 +57,26 @@ AliDhcTask *AddTaskDhc(Int_t iAna = 1, TString chTaskFile = "alien:///alice/cern
     // Efficiency correction files
     TFile *fiHEff  = 0x0;
     TFile *fiMuEff = 0x0;
-    fiHEff = TFile::Open("alien:///alice/cern.ch/user/t/tschuste/correction_hybrid_nulled.root","OLD");
-    if (!fiHEff){
-      cout << "Requested file:" << fiHEff << " was not opened. ABORT." << endl;
-      return;
+    THnF* hHEff    = 0x0;
+    THnF* hMuEff   = 0x0;
+    if (!chHEffFile.EqualTo("")) {
+      fiHEff = TFile::Open(chHEffFile,"OLD");
+      if (!fiHEff){
+        Error("AddTaskDhc",Form("Requested file: %s was not opened. ABORT.",chHEffFile));
+        return;
+      }
+      hHEff = (THnF*) fiHEff->Get("correction");
     }
-    THnF* hHEff = (THnF*) fiHEff->Get("correction");
-    
-    fiMuEff = TFile::Open("alien:///alice/cern.ch/user/t/tschuste/correction_muon.root","OLD");
-    if (!fiMuEff){
-      cout << "Requested file:" << fiMuEff << " was not opened. ABORT." << endl;
-      return;
+    if (!chMuEffFile.EqualTo("")) {
+      fiMuEff = TFile::Open(chMuEffFile,"OLD");
+      if (!fiMuEff){
+        Error("AddTaskDhc",Form("Requested file: %s was not opened. ABORT.",chMuEffFile));
+        return;
+      }
+      hMuEff = (THnF*) fiMuEff->Get("correction");
     }
-    THnF* hMuEff = (THnF*) fiMuEff->Get("correction");
-    
     
-    dhcTask = new AliDhcTask("Task_tschuste_Dhc");
+    dhcTask = new AliDhcTask("Task_Dhc_Temp_Name");
     if (iAna==1) { // h-h
       Int_t nDetaBins = 40;
       Int_t nDPhiBins = 72;
@@ -64,6 +84,11 @@ AliDhcTask *AddTaskDhc(Int_t iAna = 1, TString chTaskFile = "alien:///alice/cern
       dhcTask->SetHEffT(hHEff);
       dhcTask->SetHEffA(hHEff);
       dhcTask->SetEtaMax(1.2);
+      dhcTask->SetPtTACrit(kTRUE);
+      sprintf(chExtraName,"%s_HH",chExtraName);
+      if (hHEff) {
+        sprintf(chExtraName,"%s_corrH",chExtraName);
+      }
     } else if (iAna==2) { // mu-h
       Int_t nDetaBins = 100;
       Int_t nDPhiBins = 36;
@@ -71,10 +96,35 @@ AliDhcTask *AddTaskDhc(Int_t iAna = 1, TString chTaskFile = "alien:///alice/cern
       dhcTask->SetHEffT(hMuEff);
       dhcTask->SetHEffA(hHEff);
       dhcTask->SetEtaMax(5.0);
+      dhcTask->SetPtTACrit(kFALSE);
+      sprintf(chExtraName,"%s_MuH",chExtraName);
+      if (hMuEff) {
+        sprintf(chExtraName,"%s_corrMu",chExtraName);
+      }
+      if (hHEff) {
+        sprintf(chExtraName,"%s_corrH",chExtraName);
+      }
+    } else if (iAna==4) { // mu-mu
+      Int_t nDetaBins = 60;
+      Int_t nDPhiBins = 36;
+      dhcTask->SetAnaMode(AliDhcTask::kMuMu);
+      dhcTask->SetHEffT(hMuEff);
+      dhcTask->SetHEffA(hHEff);
+      dhcTask->SetEtaMax(5.0);
+      dhcTask->SetPtTACrit(kFALSE);
+      sprintf(chExtraName,"%s_MuMu",chExtraName);
+      if (hMuEff) {
+        sprintf(chExtraName,"%s_corrMu",chExtraName);
+      }
+    } else {
+      Error("AddTaskDhc", Form("iAna %d not known", iAna));
     }
-    dhcTask->SetTracksName(nTracks);
+    dhcTask->SetTracksName(chNTracks);
     dhcTask->SetDoWeights(kFALSE);
-    dhcTask->SetCentMethod("V0M");
+    dhcTask->SetDoFillSame(doFillSame);
+    dhcTask->SetDoMassCut(doMassCut);
+    dhcTask->SetClassName(className);
+    dhcTask->SetCentMethod(centSel);
     dhcTask->SetDEtaDPhiBins(nDetaBins,nDPhiBins);
     dhcTask->SetPtTBins(axPt);
     dhcTask->SetPtABins(axPt);
@@ -82,18 +132,35 @@ AliDhcTask *AddTaskDhc(Int_t iAna = 1, TString chTaskFile = "alien:///alice/cern
     dhcTask->SetZVtxBins(axZvtx);
     dhcTask->SetCentMixBins(axCentMix);
     dhcTask->SetZVtxMixBins(axZvtxMix);
-    dhcTask->SelectCollisionCandidates(AliVEvent::kINT7);
-    dhcTask->SetVerbosity(10);
-    mgr->AddTask(dhcTask);
-    
-    AliAnalysisDataContainer *co_Dhc = mgr->CreateContainer("Cont_tschuste_DhcAna",
-                                                               TList::Class(),
-                                                               AliAnalysisManager::kOutputContainer,
-                                                               Form("%s:PWGCF.outDhc_%d.root", AliAnalysisManager::GetCommonFileName(), iAna));
-    mgr->ConnectInput(dhcTask,0,mgr->GetCommonInputContainer());
-    mgr->ConnectOutput(dhcTask,1,co_Dhc);
+    dhcTask->SelectCollisionCandidates(trigsel);
+    dhcTask->SetVerbosity(0);
   }
+  if (!dhcTask) {
+    Error("AddTaskDhc","no dhcTask");
+    return 0x0;
+  }
+
+  // make a unique task name
+  Char_t chNewTaskName[256];
+  if (chTaskName.EqualTo("")) {
+    sprintf(chNewTaskName,"Task_Dhc%s%s%s",chExtraName,centSel.Data(),chUName.Data());
+  } else {
+    sprintf(chNewTaskName,"%s",chTaskName.Data());
+  }
+
+  AliDhcTask *mgrTask = mgr->GetTask(chNewTaskName);
+  if (mgrTask)
+    sprintf(chNewTaskName,"%s_bis%04.0f",chNewTaskName,10000*gRandom->Rndm());
   
-  return dhcTask;
+  dhcTask->SetName(chNewTaskName);
+  Info("AddTaskDhc",Form("DHC Analysis, adding task %s",dhcTask->GetName()));
+  mgr->AddTask(dhcTask);
+  AliAnalysisDataContainer *co_Dhc = mgr->CreateContainer(Form("Cont_%s",chNewTaskName),
+                                                          TList::Class(),
+                                                          AliAnalysisManager::kOutputContainer,
+                                                          Form("%s:PWGCF_out_%s", AliAnalysisManager::GetCommonFileName(), chNewTaskName));
+  mgr->ConnectInput(dhcTask,0,mgr->GetCommonInputContainer());
+  mgr->ConnectOutput(dhcTask,1,co_Dhc);
   
+  return dhcTask;
 }