update Markus task for EmCal triggered Data
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / AddTask_mk_CCbarPbPb.C
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   
23   TString configFile("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/Config_mk_CCbarPbPb.C");
24 //  TString configFile("Config_mk_CCbarPbPb.C");
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
32     TString checkconfig="$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/Config_mk_CCbarPbPb";//for train
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
55   task->SetTriggerMask(AliVEvent::kEMCEGA+AliVEvent::kEMCEJE);
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 }