]>
Commit | Line | Data |
---|---|---|
01e6cabe | 1 | AliAnalysisTask *AddTaskJPSIFilter(TString period="", Bool_t storeLS = kFALSE, Bool_t hasMC_aod = kFALSE){ |
15f4cb18 | 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 | ||
fbc09d5d | 21 | //Allow merging of the filtered aods on grid trains |
22 | if(mgr->GetGridHandler()) { | |
23 | printf(" SET MERGE FILTERED AODs \n"); | |
e0d98c30 | 24 | //mgr->GetGridHandler()->SetMergeAOD(kTRUE); |
fbc09d5d | 25 | } |
26 | ||
27 | ||
28 | ||
15f4cb18 | 29 | //gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macros/ConfigBJpsi_ff_PbPbFilter.C"); |
f1be3e2e | 30 | // gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigBJpsi_ff_PbPbFilter.C"); |
31 | gROOT->LoadMacro("$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_nano_PbPb.C"); | |
01e6cabe | 32 | AliDielectron *jpsi=ConfigJpsi_nano_PbPb(0,hasMC,period); |
15f4cb18 | 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(); | |
01e6cabe | 39 | if(!period.Contains("LHC10h")) aodHandler->SetNeedsTOFHeaderReplication(); |
15f4cb18 | 40 | aodHandler->SetNeedsVZEROReplication(); |
41 | /*aodHandler->SetNeedsTracksBranchReplication(); | |
42 | aodHandler->SetNeedsCaloClustersBranchReplication(); | |
43 | aodHandler->SetNeedsVerticesBranchReplication(); | |
15f4cb18 | 44 | aodHandler->SetNeedsCascadesBranchReplication(); |
45 | aodHandler->SetNeedsTrackletsBranchReplication(); | |
46 | aodHandler->SetNeedsPMDClustersBranchReplication(); | |
47 | aodHandler->SetNeedsJetsBranchReplication(); | |
48 | aodHandler->SetNeedsFMDClustersBranchReplication(); | |
49 | //aodHandler->SetNeedsMCParticlesBranchReplication(); | |
50 | aodHandler->SetNeedsDimuonsBranchReplication();*/ | |
2d00c7d3 | 51 | // if(hasMC) aodHandler->SetNeedsV0sBranchReplication(); |
15f4cb18 | 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"); | |
e0d98c30 | 58 | task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral+AliVEvent::kEMCEGA+AliVEvent::kEMCEJE); |
59 | // task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral); | |
15f4cb18 | 60 | if (!hasMC) task->UsePhysicsSelection(); |
61 | ||
f1be3e2e | 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); | |
15f4cb18 | 70 | |
71 | task->SetDielectron(jpsi); | |
72 | if(storeLS) task->SetStoreLikeSignCandidates(storeLS); | |
53e69dc3 | 73 | task->SetCreateNanoAODs(kTRUE); |
74 | task->SetStoreEventsWithSingleTracks(kTRUE); | |
75 | //task->SetStoreHeader(kTRUE); | |
15f4cb18 | 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()); | |
fbc09d5d | 102 | mgr->ConnectOutput(task, 0, mgr->GetCommonOutputContainer()); |
15f4cb18 | 103 | mgr->ConnectOutput(task, 1, cOutputHist1); |
104 | mgr->ConnectOutput(task, 2, cOutputHist2); | |
105 | ||
106 | return task; | |
107 | } |