]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosJPSI/AddTask_ffionda_BJPsi.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / AddTask_ffionda_BJPsi.C
1 AliAnalysisTask *AddTask_ffionda_BJPsi(Bool_t isMC=kFALSE){
2   //get the current analysis manager
3   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
4   if (!mgr) {
5     Error("AddTask_ffionda_BJPsi", "No analysis manager found.");
6     return 0;
7   }
8
9   //Do we have an MC handler?
10   Bool_t hasMC=isMC;
11     //(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
12   //Do we have an AOD handler?
13   Bool_t isAOD=(mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class() ? kTRUE : kFALSE);
14   
15   //set config file name
16   TString configFile("$TRAIN_ROOT/jbook_jpsi/ConfigJpsi_jb_PbPb.C");
17   TString trainRoot=gSystem->Getenv("TRAIN_ROOT");                                                                                   
18   if (trainRoot.IsNull()) configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigBJpsi_ff_PbPb.C";
19
20   
21   //create task and add it to the manager
22   AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDieData");
23   task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral);
24   if (!hasMC) task->UsePhysicsSelection();
25   mgr->AddTask(task);
26   
27
28   //load dielectron configuration file
29   TString checkconfig="ConfigJpsi_ff_PbPb";
30   if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
31     gROOT->LoadMacro(configFile.Data());
32
33   //add dielectron analysis with different cuts to the task
34   for (Int_t i=0; i<2; ++i){ //nDie defined in config file
35     AliDielectron *jpsi=ConfigBJpsi_ff_PbPb(i,hasMC);
36     if (jpsi ) task->AddDielectron(jpsi);
37     if (jpsi ) printf("add: %s\n",jpsi->GetName());
38   }
39   
40   //Add event filter
41   AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
42   if(!hasMC) eventCuts->SetRequireVertex();
43   if (isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
44   eventCuts->SetMinVtxContributors(1);
45   eventCuts->SetVertexZ(-10.,10.);
46   eventCuts->SetCentralityRange(0.0,80.0);
47   task->SetEventFilter(eventCuts);
48
49   
50   //create output container
51   TString containerName = "JPSI.root";
52   AliAnalysisDataContainer *coutput1 =
53     mgr->CreateContainer("ffionda_tree",
54                          TTree::Class(),
55                          AliAnalysisManager::kExchangeContainer,
56                          containerName.Data());
57   
58   AliAnalysisDataContainer *cOutputHist1 =
59     mgr->CreateContainer("ffionda_QA",
60                          TList::Class(),
61                          AliAnalysisManager::kOutputContainer,
62                          containerName.Data());
63
64   AliAnalysisDataContainer *cOutputHist2 =
65     mgr->CreateContainer("ffionda_CF",
66                          TList::Class(),
67                          AliAnalysisManager::kOutputContainer,
68                          containerName.Data());
69   
70   AliAnalysisDataContainer *cOutputHist3 =
71     mgr->CreateContainer("ffionda_EventStat",
72                          TH1D::Class(),
73                          AliAnalysisManager::kOutputContainer,
74                          containerName.Data());
75
76   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
77   mgr->ConnectOutput(task, 0, coutput1 );
78   mgr->ConnectOutput(task, 1, cOutputHist1);
79   mgr->ConnectOutput(task, 2, cOutputHist2);
80   mgr->ConnectOutput(task, 3, cOutputHist3);
81   return task;
82 }