]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/macros/AddTaskPIDResponse.C
New Analysis Tools for the MFT
[u/mrichter/AliRoot.git] / ANALYSIS / macros / AddTaskPIDResponse.C
index 1ae1526f64c692f78debcc65ff5aa16bd3726045..be2ae89988ee3a632729760d21c39be702f6c55b 100644 (file)
@@ -1,4 +1,9 @@
-AliAnalysisTask *AddTaskPIDResponse()
+AliAnalysisTask *AddTaskPIDResponse(Bool_t isMC=kFALSE, Bool_t autoMCesd=kTRUE,
+                                    Bool_t tuneOnData=kFALSE, Int_t recoPass=2,
+                                    Bool_t cachePID=kFALSE, TString detResponse="",
+                                    Bool_t useTPCEtaCorrection = kTRUE,/*Please use default value! Otherwise splines can be off*/
+                                    Bool_t useTPCMultiplicityCorrection = kTRUE,/*Please use default value! Otherwise splines can be off*/
+                                    Int_t  recoDataPass = -1)
 {
 // Macro to connect a centrality selection task to an existing analysis manager.
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
@@ -7,22 +12,50 @@ AliAnalysisTask *AddTaskPIDResponse()
     return 0x0;
   }
 
-  Bool_t isMC=kFALSE;
-  if (mgr->GetInputEventHandler()->IsA() == AliESDInputHandler::Class()) {
-    isMC=mgr->GetMCtruthEventHandler()!=0x0;
+  AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
+
+  //case of multi input event handler (needed for mixing)
+  if (inputHandler->IsA() == AliMultiInputEventHandler::Class()) {
+    printf("========================================================================================\n");
+    printf("PIDResponse: AliMultiInputEventHandler detected, initialising AliPIDResponseInputHandler\n");
+    printf("========================================================================================\n");
+    AliMultiInputEventHandler *multiInputHandler=(AliMultiInputEventHandler*)inputHandler;
+    
+    AliPIDResponseInputHandler *pidResponseIH = new AliPIDResponseInputHandler();
+    multiInputHandler->AddInputEventHandler(pidResponseIH);
+
+    pidResponseIH->SetIsMC(isMC);
+
+    return 0x0;
   }
+
+  // standard with task
+  printf("========================================================================================\n");
+  printf("PIDResponse: Initialising AliAnalysisTaskPIDResponse\n");
+  printf("========================================================================================\n");
   
   AliAnalysisTaskPIDResponse *pidTask = new AliAnalysisTaskPIDResponse("PIDResponseTask");
 //   pidTask->SelectCollisionCandidates(AliVEvent::kMB);
   pidTask->SetIsMC(isMC);
+  if(isMC&&tuneOnData) {
+    pidTask->SetTuneOnData(kTRUE,recoPass);
+    // tuning on MC is by default active on TPC and TOF, to enable it only on one of them use:
+    // pidTask->SetTuneOnDataMask(AliPIDResponse::kDetTPC);   
+    // pidTask->SetTuneOnDataMask(AliPIDResponse::kDetTOF);   
+  }
+  pidTask->SetCachePID(cachePID);
+  pidTask->SetSpecialDetectorResponse(detResponse);
+  pidTask->SetUseTPCEtaCorrection(useTPCEtaCorrection);
+  pidTask->SetUseTPCMultiplicityCorrection(useTPCMultiplicityCorrection);
+  pidTask->SetUserDataRecoPass(recoDataPass);
   mgr->AddTask(pidTask);
   
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("PIDResponseQA",
-    TList::Class(), AliAnalysisManager::kOutputContainer,
-    "PIDResponseQA.root");
+//   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("PIDResponseQA",
+//     TList::Class(), AliAnalysisManager::kOutputContainer,
+//     "PIDResponseQA.root");
   
   mgr->ConnectInput(pidTask, 0, mgr->GetCommonInputContainer());
-  mgr->ConnectOutput(pidTask,1,coutput1);
+//   mgr->ConnectOutput(pidTask,1,coutput1);
   
   return pidTask;
 }