]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macros/AddTaskJPSIFilter.C
-coverity fixes by Ionut
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macros / AddTaskJPSIFilter.C
1 AliAnalysisTask *AddTaskJPSIFilter(Bool_t storeLS = kTRUE, Bool_t hasMC_aod = kFALSE, Bool_t storeTR = kTRUE){
2   //get the current analysis manager
3   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
4   if (!mgr) {
5     Error("AddTaskJPSIFilter", "No analysis manager found.");
6     return 0;
7   }
8   
9   //check for output aod handler
10   if (!mgr->GetOutputEventHandler()||mgr->GetOutputEventHandler()->IsA()!=AliAODHandler::Class()) {
11     Warning("AddTaskJPSIFilter","No AOD output handler available. Not adding the task!");
12     return 0;
13   }
14
15   //Do we have an MC handler?
16   Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)||hasMC_aod;
17   
18   //Do we run on AOD?
19   Bool_t isAOD=mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
20
21   gROOT->LoadMacro("$ALICE_ROOT/PWG3/dielectron/macros/ConfigJpsi2eeFilter.C");
22   AliDielectron *jpsi=ConfigJpsi2eeFilter(isAOD);
23   
24   if(isAOD) {
25     //add options to AliAODHandler to duplicate input event
26     AliAODHandler *aodHandler = (AliAODHandler*)mgr->GetOutputEventHandler();
27     aodHandler->SetCreateNonStandardAOD();
28     aodHandler->SetNeedsHeaderReplication();
29     aodHandler->SetNeedsTracksBranchReplication();
30     aodHandler->SetNeedsVerticesBranchReplication();
31     aodHandler->SetNeedsV0sBranchReplication();
32     aodHandler->SetNeedsCascadesBranchReplication();
33     aodHandler->SetNeedsTrackletsBranchReplication();
34     aodHandler->SetNeedsPMDClustersBranchReplication();
35     aodHandler->SetNeedsJetsBranchReplication();
36     aodHandler->SetNeedsFMDClustersBranchReplication();
37     aodHandler->SetNeedsCaloClustersBranchReplication();
38     //aodHandler->SetNeedsMCParticlesBranchReplication();
39     aodHandler->SetNeedsDimuonsBranchReplication();
40     if(hasMC) aodHandler->SetNeedsMCParticlesBranchReplication();
41     jpsi->SetHasMC(hasMC);
42   }
43   
44   //Create task and add it to the analysis manager
45   AliAnalysisTaskDielectronFilter *task=new AliAnalysisTaskDielectronFilter("jpsi_DielectronFilter");
46   
47   if (!hasMC) task->UsePhysicsSelection();
48   task->SetDielectron(jpsi);
49   if(storeLS) task->SetStoreLikeSignCandidates(storeLS);
50   task->SetStoreRotatedPairs(storeTR);  
51   mgr->AddTask(task);
52
53   //----------------------
54   //create data containers
55   //----------------------
56   
57   
58   TString containerName = mgr->GetCommonFileName();
59   containerName += ":PWGDQ_dielectronFilter";
60   
61   //create output container
62   
63   AliAnalysisDataContainer *cOutputHist1 =
64     mgr->CreateContainer("jpsi_FilterQA",
65                          THashList::Class(),
66                          AliAnalysisManager::kOutputContainer,
67                          containerName.Data());
68   
69   AliAnalysisDataContainer *cOutputHist2 =
70     mgr->CreateContainer("jpsi_FilterEventStat",
71                          TH1D::Class(),
72                          AliAnalysisManager::kOutputContainer,
73                          containerName.Data());
74   
75   
76   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
77   mgr->ConnectOutput(task, 1, cOutputHist1);
78   mgr->ConnectOutput(task, 2, cOutputHist2);
79   
80   return task;
81 }