]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosJPSI/AddTask_jbook_JPsiQA.C
-updates by fiorella
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / AddTask_jbook_JPsiQA.C
1 AliAnalysisTask *AddTask_jbook_JPsiQA(Bool_t isMC=kFALSE){
2   //get the current analysis manager
3   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
4   if (!mgr) {
5     Error("AddTask_jbook_JPsiQA", "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/ConfigJpsiQA_jb_PbPb.C");
17   TString trainRoot=gSystem->Getenv("TRAIN_ROOT");                                                                                   
18   if (trainRoot.IsNull()) configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jb_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   //load dielectron configuration file
28   TString checkconfig="ConfigJpsiQA_jb_PbPb";
29   if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
30     gROOT->LoadMacro(configFile.Data());
31
32   //add dielectron analysis with different cuts to the task
33   for (Int_t i=0; i<nDie; ++i){ //nDie defined in config file
34     AliDielectron *jpsi=ConfigJpsiQA_jb_PbPb(i,hasMC);
35     if (jpsi ) task->AddDielectron(jpsi);
36     if (jpsi ) printf("add: %s\n",jpsi->GetName());
37   }
38   
39   //Add event filter
40   AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
41   if (isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
42   eventCuts->SetRequireVertex();
43   eventCuts->SetMinVtxContributors(1);
44   eventCuts->SetVertexZ(-10.,10.);
45   eventCuts->SetCentralityRange(0.0,80.0);
46   task->SetEventFilter(eventCuts);
47
48   
49   //create output container
50   AliAnalysisDataContainer *coutput1 =
51     mgr->CreateContainer("jbookQA_tree",
52                          TTree::Class(),
53                          AliAnalysisManager::kExchangeContainer,
54                          "jbook_default");
55   
56   AliAnalysisDataContainer *cOutputHist1 =
57     mgr->CreateContainer("jbookQA",
58                          TList::Class(),
59                          AliAnalysisManager::kOutputContainer,
60                          "jbookQA.root");
61
62   /*
63     AliAnalysisDataContainer *cOutputHist2 =
64     mgr->CreateContainer("jbookQA_CF",
65                          TList::Class(),
66                          AliAnalysisManager::kOutputContainer,
67                          "jbookQA.root");
68   */
69   AliAnalysisDataContainer *cOutputHist3 =
70     mgr->CreateContainer("jbookQA_EventStat",
71                          TH1D::Class(),
72                          AliAnalysisManager::kOutputContainer,
73                          "jbookQA.root");
74   
75   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
76   mgr->ConnectOutput(task, 0, coutput1 );
77   mgr->ConnectOutput(task, 1, cOutputHist1);
78   //  mgr->ConnectOutput(task, 2, cOutputHist2);
79   mgr->ConnectOutput(task, 3, cOutputHist3);
80   
81   return task;
82 }