1 AliAnalysisTask *AddTask_jbook_JPsiQA(TString prod=""){
2 //get the current analysis manager
3 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
5 Error("AddTask_jbook_JPsiQA", "No analysis manager found.");
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);
17 //Do we have an AOD handler?
18 Bool_t isAOD=(mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class() ? kTRUE : kFALSE);
20 // set AOD debug levels
22 mgr->AddClassDebug("AliAODTrack", AliLog::kFatal);
23 mgr->AddClassDebug("AliAODpidUtil", AliLog::kInfo);
26 //set config file name
27 TString configFile("$TRAIN_ROOT/jbook_jpsi/ConfigJpsiQA_jb_PbPb.C");
28 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
29 if (trainRoot.IsNull()) configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jb_PbPb.C";
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();
38 //load dielectron configuration file
39 TString checkconfig="ConfigJpsiQA_jb_PbPb";
40 if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
41 gROOT->LoadMacro(configFile.Data());
43 //add dielectron analysis with different cuts to the task
44 for (Int_t i=0; i<nDie; ++i){ //nDie defined in config file
45 AliDielectron *jpsi=ConfigJpsiQA_jb_PbPb(i,list);
46 if (jpsi ) task->AddDielectron(jpsi);
47 if (jpsi ) printf("add: %s\n",jpsi->GetName());
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);
60 //create output container
61 AliAnalysisDataContainer *coutput1 =
62 mgr->CreateContainer("jbookQA_tree",
64 AliAnalysisManager::kExchangeContainer,
67 AliAnalysisDataContainer *cOutputHist1 =
68 mgr->CreateContainer("jbookQA",
70 AliAnalysisManager::kOutputContainer,
74 AliAnalysisDataContainer *cOutputHist2 =
75 mgr->CreateContainer("jbookQA_CF",
77 AliAnalysisManager::kOutputContainer,
80 AliAnalysisDataContainer *cOutputHist3 =
81 mgr->CreateContainer("jbookQA_EventStat",
83 AliAnalysisManager::kOutputContainer,
86 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
87 mgr->ConnectOutput(task, 0, coutput1 );
88 mgr->ConnectOutput(task, 1, cOutputHist1);
89 mgr->ConnectOutput(task, 2, cOutputHist2);
90 mgr->ConnectOutput(task, 3, cOutputHist3);