]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/dielectron/macros/AddTaskJPSIFilterPbPb.C
Moving some macros
[u/mrichter/AliRoot.git] / PWG3 / dielectron / macros / AddTaskJPSIFilterPbPb.C
1 AliAnalysisTask *AddTaskJPSIFilter(){
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);
17   
18   //Do we run on AOD?
19   Bool_t isAOD=mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
20
21   if(isAOD) {
22     //add options to AliAODHandler to duplicate input event
23     AliAODHandler *aodHandler = (AliAODHandler*)mgr->GetOutputEventHandler();
24     aodHandler->SetCreateNonStandardAOD();
25     aodHandler->SetNeedsHeaderReplication();
26     aodHandler->SetNeedsTracksBranchReplication();
27     aodHandler->SetNeedsVerticesBranchReplication();
28     aodHandler->SetNeedsV0sBranchReplication();
29     aodHandler->SetNeedsCascadesBranchReplication();
30     aodHandler->SetNeedsTrackletsBranchReplication();
31     aodHandler->SetNeedsPMDClustersBranchReplication();
32     aodHandler->SetNeedsJetsBranchReplication();
33     aodHandler->SetNeedsFMDClustersBranchReplication();
34     aodHandler->SetNeedsCaloClustersBranchReplication();
35     //aodHandler->SetNeedsMCParticlesBranchReplication();
36     aodHandler->SetNeedsDimuonsBranchReplication();
37     if(hasMC) aodHandler->SetNeedsMCParticlesBranchReplication();
38   }
39   
40   //Create task and add it to the analysis manager
41   AliAnalysisTaskDielectronFilter *task=new AliAnalysisTaskDielectronFilter("jpsi_DielectronFilter");
42   
43   gROOT->LoadMacro("$ALICE_ROOT/PWG3/dielectron/macros/ConfigJpsi2eeFilterPbPb.C");
44   AliDielectron *jpsi=ConfigJpsi2eeFilter(isAOD);
45   if (!hasMC) task->UsePhysicsSelection();
46   task->SetDielectron(jpsi);
47   mgr->AddTask(task);
48
49   //----------------------
50   //create data containers
51   //----------------------
52   
53   
54   TString containerName = mgr->GetCommonFileName();
55   containerName += ":PWG3_dielectronFilter";
56   
57   //create output container
58   
59   AliAnalysisDataContainer *cOutputHist1 =
60     mgr->CreateContainer("jpsi_FilterQA",
61                          THashList::Class(),
62                          AliAnalysisManager::kOutputContainer,
63                          containerName.Data());
64   
65   AliAnalysisDataContainer *cOutputHist2 =
66     mgr->CreateContainer("jpsi_FilterEventStat",
67                          TH1D::Class(),
68                          AliAnalysisManager::kOutputContainer,
69                          containerName.Data());
70   
71   
72   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
73   mgr->ConnectOutput(task, 1, cOutputHist1);
74   mgr->ConnectOutput(task, 2, cOutputHist2);
75   
76   return task;
77 }