]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/macros/AddTaskPIDResponse.C
e54dea7ef4d5c738183b89aa6c4fb66e6c5dca5b
[u/mrichter/AliRoot.git] / ANALYSIS / macros / AddTaskPIDResponse.C
1 AliAnalysisTask *AddTaskPIDResponse(Bool_t isMC=kFALSE, Bool_t autoMCesd=kTRUE,
2                                     Bool_t tuneOnData=kFALSE, Int_t recoPass=2,
3                                     Bool_t cachePID=kTRUE, TString detResponse="")
4 {
5 // Macro to connect a centrality selection task to an existing analysis manager.
6   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
7   if (!mgr) {
8     ::Error("AddTaskPIDResponse", "No analysis manager to connect to.");
9     return 0x0;
10   }
11
12   AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
13
14   //case of multi input event handler (needed for mixing)
15   if (inputHandler->IsA() == AliMultiInputEventHandler::Class()) {
16     printf("========================================================================================\n");
17     printf("PIDResponse: AliMultiInputEventHandler detected, initialising AliPIDResponseInputHandler\n");
18     printf("========================================================================================\n");
19     AliMultiInputEventHandler *multiInputHandler=(AliMultiInputEventHandler*)inputHandler;
20     
21     AliPIDResponseInputHandler *pidResponseIH = new AliPIDResponseInputHandler();
22     multiInputHandler->AddInputEventHandler(pidResponseIH);
23
24     if (autoMCesd &&
25         multiInputHandler->GetFirstInputEventHandler()->IsA()==AliESDInputHandler::Class() &&
26         multiInputHandler->GetFirstMCEventHandler()
27        ) isMC=kTRUE;
28     pidResponseIH->SetIsMC(isMC);
29
30     return 0x0;
31   }
32
33   // standard with task
34   printf("========================================================================================\n");
35   printf("PIDResponse: Initialising AliAnalysisTaskPIDResponse\n");
36   printf("========================================================================================\n");
37   
38   if ( autoMCesd && (inputHandler->IsA() == AliESDInputHandler::Class()) ) {
39     isMC=mgr->GetMCtruthEventHandler()!=0x0;
40   }
41
42   AliAnalysisTaskPIDResponse *pidTask = new AliAnalysisTaskPIDResponse("PIDResponseTask");
43 //   pidTask->SelectCollisionCandidates(AliVEvent::kMB);
44   pidTask->SetIsMC(isMC);
45   if(isMC&&tuneOnData) pidTask->SetTuneOnData(kTRUE,recoPass);
46   pidTask->SetCachePID(cachePID);
47   pidTask->SetSpecialDetectorResponse(detResponse);
48   mgr->AddTask(pidTask);
49   
50 //   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("PIDResponseQA",
51 //     TList::Class(), AliAnalysisManager::kOutputContainer,
52 //     "PIDResponseQA.root");
53   
54   mgr->ConnectInput(pidTask, 0, mgr->GetCommonInputContainer());
55 //   mgr->ConnectOutput(pidTask,1,coutput1);
56   
57   return pidTask;
58 }