]>
Commit | Line | Data |
---|---|---|
d5bd5a6c | 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 | |
1c96a71e | 51 | TString containerName = "JPSI.root"; |
d5bd5a6c | 52 | AliAnalysisDataContainer *coutput1 = |
1c96a71e | 53 | mgr->CreateContainer("ffionda_tree", |
d5bd5a6c | 54 | TTree::Class(), |
55 | AliAnalysisManager::kExchangeContainer, | |
1c96a71e | 56 | containerName.Data()); |
d5bd5a6c | 57 | |
58 | AliAnalysisDataContainer *cOutputHist1 = | |
1c96a71e | 59 | mgr->CreateContainer("ffionda_QA", |
d5bd5a6c | 60 | TList::Class(), |
61 | AliAnalysisManager::kOutputContainer, | |
1c96a71e | 62 | containerName.Data()); |
d5bd5a6c | 63 | |
64 | AliAnalysisDataContainer *cOutputHist2 = | |
1c96a71e | 65 | mgr->CreateContainer("ffionda_CF", |
d5bd5a6c | 66 | TList::Class(), |
67 | AliAnalysisManager::kOutputContainer, | |
1c96a71e | 68 | containerName.Data()); |
d5bd5a6c | 69 | |
70 | AliAnalysisDataContainer *cOutputHist3 = | |
1c96a71e | 71 | mgr->CreateContainer("ffionda_EventStat", |
d5bd5a6c | 72 | TH1D::Class(), |
73 | AliAnalysisManager::kOutputContainer, | |
1c96a71e | 74 | containerName.Data()); |
d5bd5a6c | 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 | } |