1 AliAnalysisTask *AddTaskJPSIFilter(TString period="", Bool_t storeLS = kFALSE, Bool_t hasMC_aod = kFALSE){
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 //Allow merging of the filtered aods on grid trains
22 if(mgr->GetGridHandler()) {
23 printf(" SET MERGE FILTERED AODs \n");
24 //mgr->GetGridHandler()->SetMergeAOD(kTRUE);
29 //gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macros/ConfigBJpsi_ff_PbPbFilter.C");
30 // gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigBJpsi_ff_PbPbFilter.C");
31 gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_nano_PbPb.C");
32 AliDielectron *jpsi=ConfigJpsi_nano_PbPb(0,hasMC,period);
35 //add options to AliAODHandler to duplicate input event
36 AliAODHandler *aodHandler = (AliAODHandler*)mgr->GetOutputEventHandler();
37 aodHandler->SetCreateNonStandardAOD();
38 aodHandler->SetNeedsHeaderReplication();
39 if(!period.Contains("LHC10h")) aodHandler->SetNeedsTOFHeaderReplication();
40 aodHandler->SetNeedsVZEROReplication();
41 /*aodHandler->SetNeedsTracksBranchReplication();
42 aodHandler->SetNeedsCaloClustersBranchReplication();
43 aodHandler->SetNeedsVerticesBranchReplication();
44 aodHandler->SetNeedsCascadesBranchReplication();
45 aodHandler->SetNeedsTrackletsBranchReplication();
46 aodHandler->SetNeedsPMDClustersBranchReplication();
47 aodHandler->SetNeedsJetsBranchReplication();
48 aodHandler->SetNeedsFMDClustersBranchReplication();
49 //aodHandler->SetNeedsMCParticlesBranchReplication();
50 aodHandler->SetNeedsDimuonsBranchReplication();*/
51 // if(hasMC) aodHandler->SetNeedsV0sBranchReplication();
52 if(hasMC) aodHandler->SetNeedsMCParticlesBranchReplication();
53 jpsi->SetHasMC(hasMC);
56 //Create task and add it to the analysis manager
57 AliAnalysisTaskDielectronFilter *task=new AliAnalysisTaskDielectronFilter("jpsi_DielectronFilter");
58 task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral+AliVEvent::kEMCEGA+AliVEvent::kEMCEJE);
59 // task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
60 if (!hasMC) task->UsePhysicsSelection();
63 // AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
64 // if(!hasMC) eventCuts->SetRequireVertex();
65 // if (isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
66 // eventCuts->SetMinVtxContributors(1);
67 // eventCuts->SetVertexZ(-10.,10.);
68 // eventCuts->SetCentralityRange(0.0,90.0);
69 // task->SetEventFilter(eventCuts);
71 task->SetDielectron(jpsi);
72 if(storeLS) task->SetStoreLikeSignCandidates(storeLS);
73 task->SetCreateNanoAODs(kTRUE);
74 task->SetStoreEventsWithSingleTracks(kTRUE);
75 //task->SetStoreHeader(kTRUE);
78 //----------------------
79 //create data containers
80 //----------------------
83 TString containerName = mgr->GetCommonFileName();
84 containerName += ":PWGDQ_dielectronFilter";
86 //create output container
88 AliAnalysisDataContainer *cOutputHist1 =
89 mgr->CreateContainer("jpsi_FilterQA",
91 AliAnalysisManager::kOutputContainer,
92 containerName.Data());
94 AliAnalysisDataContainer *cOutputHist2 =
95 mgr->CreateContainer("jpsi_FilterEventStat",
97 AliAnalysisManager::kOutputContainer,
98 containerName.Data());
101 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
102 mgr->ConnectOutput(task, 0, mgr->GetCommonOutputContainer());
103 mgr->ConnectOutput(task, 1, cOutputHist1);
104 mgr->ConnectOutput(task, 2, cOutputHist2);