]>
Commit | Line | Data |
---|---|---|
cca4796f | 1 | AliAnalysisTask *AddTask_mk_CCbarPbPb(TString prod="",ULong64_t triggers=AliVEvent::kEMCEGA | AliVEvent::kEMCEJE){ |
2 | ||
3 | //get the current analysis manager | |
4 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
5 | if (!mgr) { | |
6 | ::Error("AddTask_mk_CCbarPbPb", "No analysis manager found."); | |
7 | return NULL; | |
8 | } | |
9 | if (!mgr->GetInputEventHandler()) { | |
10 | ::Error("AddTask_mk_CCbarPbPb", "This task requires an input event handler"); | |
11 | return NULL; | |
12 | } | |
13 | ||
14 | ||
15 | //Do we have an MC handler? | |
16 | Bool_t hasMC = kFALSE; | |
17 | TString list = gSystem->Getenv("LIST"); | |
18 | if( list.IsNull()) list=prod; | |
19 | if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE; | |
20 | if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE; | |
21 | ||
22 | ||
fd3d56a1 | 23 | TString configFile("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/Config_mk_CCbarPbPb.C"); |
24 | //TString configFile("Config_mk_CCbarPbPb.C"); | |
cca4796f | 25 | |
26 | Bool_t isAOD=mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class(); | |
27 | ||
28 | //create task and add it to the manager | |
29 | AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDie"); | |
30 | ||
31 | //load dielectron configuration file | |
fd3d56a1 | 32 | TString checkconfig="$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/Config_mk_CCbarPbPb"; |
cca4796f | 33 | // TString checkconfig="ConfigCCbar_mk_pp"; |
34 | if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data())) | |
35 | gROOT->LoadMacro(configFile.Data()); | |
36 | ||
37 | //add dielectron analysis with different cuts to the task | |
38 | for (Int_t i=0; i<nDie; ++i){ //nDie defined in config file | |
39 | AliDielectron *jpsi; | |
40 | jpsi=Config_mk_CCbarPbPb(i,isAOD); | |
41 | if (jpsi) task->AddDielectron(jpsi); | |
42 | } | |
43 | ||
44 | //Add event filter | |
45 | AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0"); | |
46 | if(isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny); | |
47 | eventCuts->SetRequireVertex(); | |
48 | eventCuts->SetMinVtxContributors(1); | |
49 | eventCuts->SetVertexZ(-10.,10.); | |
50 | eventCuts->SetCentralityRange(0.0,90.0); | |
51 | // add event filter | |
52 | task->SetEventFilter(eventCuts); | |
53 | ||
54 | // pileup rejection | |
fd3d56a1 | 55 | task->SetTriggerMask(AliVEvent::kEMCEGA); |
cca4796f | 56 | task->UsePhysicsSelection(); |
57 | ||
58 | mgr->AddTask(task); | |
59 | ||
60 | //---------------------- | |
61 | //create data containers | |
62 | //---------------------- | |
63 | ||
64 | //create output container | |
65 | TString containerName = "LMEEoutput.root"; | |
66 | AliAnalysisDataContainer *cOutputHist1 = | |
67 | mgr->CreateContainer("mkoehler_QA_EMC", | |
68 | TList::Class(), | |
69 | AliAnalysisManager::kOutputContainer, | |
70 | containerName.Data()); | |
71 | ||
72 | AliAnalysisDataContainer *cOutputHist2 = | |
73 | mgr->CreateContainer("mkoehler_CF_EMC", | |
74 | TList::Class(), | |
75 | AliAnalysisManager::kOutputContainer, | |
76 | containerName.Data()); | |
77 | ||
78 | AliAnalysisDataContainer *cOutputHist3 = | |
79 | mgr->CreateContainer("mkoehler_EventStat_EMC", | |
80 | TH1D::Class(), | |
81 | AliAnalysisManager::kOutputContainer, | |
82 | containerName.Data()); | |
83 | ||
84 | ||
85 | mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer()); | |
86 | mgr->ConnectOutput(task, 1, cOutputHist1); | |
87 | mgr->ConnectOutput(task, 2, cOutputHist2); | |
88 | mgr->ConnectOutput(task, 3, cOutputHist3); | |
89 | ||
90 | return task; | |
91 | } |