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();
5 Error("AddTaskJPSIFilter", "No analysis manager found.");
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!");
15 //Do we have an MC handler?
16 Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)||hasMC_aod;
19 Bool_t isAOD=mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
21 gROOT->LoadMacro("$ALICE_ROOT/PWG3/dielectron/macros/ConfigJpsi2eeFilter.C");
22 AliDielectron *jpsi=ConfigJpsi2eeFilter(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);
44 //Create task and add it to the analysis manager
45 AliAnalysisTaskDielectronFilter *task=new AliAnalysisTaskDielectronFilter("jpsi_DielectronFilter");
47 if (!hasMC) task->UsePhysicsSelection();
48 task->SetDielectron(jpsi);
49 if(storeLS) task->SetStoreLikeSignCandidates(storeLS);
50 task->SetStoreRotatedPairs(storeTR);
53 //----------------------
54 //create data containers
55 //----------------------
58 TString containerName = mgr->GetCommonFileName();
59 containerName += ":PWGDQ_dielectronFilter";
61 //create output container
63 AliAnalysisDataContainer *cOutputHist1 =
64 mgr->CreateContainer("jpsi_FilterQA",
66 AliAnalysisManager::kOutputContainer,
67 containerName.Data());
69 AliAnalysisDataContainer *cOutputHist2 =
70 mgr->CreateContainer("jpsi_FilterEventStat",
72 AliAnalysisManager::kOutputContainer,
73 containerName.Data());
76 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
77 mgr->ConnectOutput(task, 1, cOutputHist1);
78 mgr->ConnectOutput(task, 2, cOutputHist2);