reco pass user selectable
[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=kFALSE, TString detResponse="",
4                                     Bool_t useTPCEtaCorrection = kTRUE,
5                                     Bool_t useTPCMultiplicityCorrection = kFALSE,
6                                     Int_t  recoDataPass = -1)
7 {
8 // Macro to connect a centrality selection task to an existing analysis manager.
9   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
10   if (!mgr) {
11     ::Error("AddTaskPIDResponse", "No analysis manager to connect to.");
12     return 0x0;
13   }
14
15   AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
16
17   //case of multi input event handler (needed for mixing)
18   if (inputHandler->IsA() == AliMultiInputEventHandler::Class()) {
19     printf("========================================================================================\n");
20     printf("PIDResponse: AliMultiInputEventHandler detected, initialising AliPIDResponseInputHandler\n");
21     printf("========================================================================================\n");
22     AliMultiInputEventHandler *multiInputHandler=(AliMultiInputEventHandler*)inputHandler;
23     
24     AliPIDResponseInputHandler *pidResponseIH = new AliPIDResponseInputHandler();
25     multiInputHandler->AddInputEventHandler(pidResponseIH);
26
27     pidResponseIH->SetIsMC(isMC);
28
29     return 0x0;
30   }
31
32   // standard with task
33   printf("========================================================================================\n");
34   printf("PIDResponse: Initialising AliAnalysisTaskPIDResponse\n");
35   printf("========================================================================================\n");
36   
37   AliAnalysisTaskPIDResponse *pidTask = new AliAnalysisTaskPIDResponse("PIDResponseTask");
38 //   pidTask->SelectCollisionCandidates(AliVEvent::kMB);
39   pidTask->SetIsMC(isMC);
40   if(isMC&&tuneOnData) {
41     pidTask->SetTuneOnData(kTRUE,recoPass);
42     // tuning on MC is by default active on TPC and TOF, to enable it only on one of them use:
43     // pidTask->SetTuneOnDataMask(AliPIDResponse::kDetTPC);   
44     // pidTask->SetTuneOnDataMask(AliPIDResponse::kDetTOF);   
45   }
46   pidTask->SetCachePID(cachePID);
47   pidTask->SetSpecialDetectorResponse(detResponse);
48   pidTask->SetUseTPCEtaCorrection(useTPCEtaCorrection);
49   pidTask->SetUseTPCMultiplicityCorrection(useTPCMultiplicityCorrection);
50   pidTask->SetUserDataRecoPass(recoDataPass);
51   mgr->AddTask(pidTask);
52   
53 //   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("PIDResponseQA",
54 //     TList::Class(), AliAnalysisManager::kOutputContainer,
55 //     "PIDResponseQA.root");
56   
57   mgr->ConnectInput(pidTask, 0, mgr->GetCommonInputContainer());
58 //   mgr->ConnectOutput(pidTask,1,coutput1);
59   
60   return pidTask;
61 }