]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosJPSI/AddTaskJPSIFilter.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / AddTaskJPSIFilter.C
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();
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   //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);
25   }
26
27
28
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);
33   
34   if(isAOD) {
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);
54   }
55   
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();
61
62   //   //Add event filter
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);
70
71   task->SetDielectron(jpsi);
72   if(storeLS) task->SetStoreLikeSignCandidates(storeLS);
73   task->SetCreateNanoAODs(kTRUE);
74   task->SetStoreEventsWithSingleTracks(kTRUE);
75   //task->SetStoreHeader(kTRUE);
76   mgr->AddTask(task);
77
78   //----------------------
79   //create data containers
80   //----------------------
81   
82   
83   TString containerName = mgr->GetCommonFileName();
84   containerName += ":PWGDQ_dielectronFilter";
85  
86   //create output container
87   
88   AliAnalysisDataContainer *cOutputHist1 =
89     mgr->CreateContainer("jpsi_FilterQA",
90                          THashList::Class(),
91                          AliAnalysisManager::kOutputContainer,
92                          containerName.Data());
93   
94   AliAnalysisDataContainer *cOutputHist2 =
95     mgr->CreateContainer("jpsi_FilterEventStat",
96                          TH1D::Class(),
97                          AliAnalysisManager::kOutputContainer,
98                          containerName.Data());
99   
100   
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);
105   
106   return task;
107 }