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