1 AliAnalysisTask *AddTask_ffionda_BJPsi(Bool_t isMC=kFALSE){
2 //get the current analysis manager
3 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
5 Error("AddTask_ffionda_BJPsi", "No analysis manager found.");
9 //Do we have an MC handler?
11 //(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
12 //Do we have an AOD handler?
13 Bool_t isAOD=(mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class() ? kTRUE : kFALSE);
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";
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();
28 //load dielectron configuration file
29 TString checkconfig="ConfigJpsi_ff_PbPb";
30 if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
31 gROOT->LoadMacro(configFile.Data());
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());
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);
50 //create output container
51 TString containerName = "JPSI.root";
52 AliAnalysisDataContainer *coutput1 =
53 mgr->CreateContainer("ffionda_tree",
55 AliAnalysisManager::kExchangeContainer,
56 containerName.Data());
58 AliAnalysisDataContainer *cOutputHist1 =
59 mgr->CreateContainer("ffionda_QA",
61 AliAnalysisManager::kOutputContainer,
62 containerName.Data());
64 AliAnalysisDataContainer *cOutputHist2 =
65 mgr->CreateContainer("ffionda_CF",
67 AliAnalysisManager::kOutputContainer,
68 containerName.Data());
70 AliAnalysisDataContainer *cOutputHist3 =
71 mgr->CreateContainer("ffionda_EventStat",
73 AliAnalysisManager::kOutputContainer,
74 containerName.Data());
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);