1 AliAnalysisTask *AddTask_jpsi_JPsiQA(TString prod="",
2 Bool_t gridconf=kFALSE,
3 ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB) {
5 //get the current analysis manager
6 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
8 Error("AddTask_jpsi_JPsiQA", "No analysis manager found.");
12 //Do we have an MC handler?
13 Bool_t hasMC = kFALSE;
14 TString list = gSystem->Getenv("LIST");
15 if( list.IsNull()) list=prod;
16 if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE;
17 if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
19 //Do we have an AOD handler?
20 Bool_t isAOD=(mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class() ? kTRUE : kFALSE);
22 // set AOD debug levels
24 mgr->AddClassDebug("AliAODTrack", AliLog::kFatal);
25 mgr->AddClassDebug("AliAODpidUtil", AliLog::kInfo);
28 //set config file name
29 TString configFile("");
30 printf("%s \n",gSystem->pwd());
31 TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
32 if (!trainRoot.IsNull())
33 configFile="$TRAIN_ROOT/jbook_jpsi/ConfigJpsiQA_jpsi_PbPb.C"; // gsi config
34 else if(!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jpsi_PbPb.C ."))
35 configFile=Form("%s/ConfigJpsiQA_jpsi_PbPb.C",gSystem->pwd()); // alien config
37 configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jpsi_PbPb.C"; // aliroot config
40 configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jpsi_PbPb.C"; // forced aliroot config
42 //create task and add it to the manager
43 AliAnalysisTaskMultiDielectron *task;
46 ULong64_t triggerSets[]={AliVEvent::kCentral , AliVEvent::kSemiCentral , AliVEvent::kMB,
47 AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB};
48 const char* triggerNames[]={"Central","SemiCentral","MB","MB+Cent+SemiCent"};
50 // find out the configured triggers
53 if(triggers!=triggerSets[j]) continue;
57 // print task configuration
58 printf("production: %s MC: %d \n", list.Data(),hasMC);
59 printf("triggers: %s \n", triggerNames[j] );
60 printf("config: %s Grid: %d \n",configFile.Data(),gridconf);
62 task = new AliAnalysisTaskMultiDielectron((Form("MultiDieData_%s",triggerNames[j])));
63 task->SetTriggerMask(triggers);
64 //task->SetTriggerMask(AliVEvent::kMB);
66 if (!hasMC) task->UsePhysicsSelection();
69 //load dielectron configuration file
70 TString checkconfig="ConfigJpsiQA_jpsi_PbPb";
71 if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
72 gROOT->LoadMacro(configFile.Data());
74 //add dielectron analysis with different cuts to the task
75 for (Int_t i=0; i<nDie; ++i) { //nDie defined in config file
76 AliDielectron *jpsi=ConfigJpsiQA_jpsi_PbPb(i,list);
77 if (jpsi ) task->AddDielectron(jpsi);
78 if (jpsi ) printf(" %s added\n",jpsi->GetName());
82 AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","|vtxZ|<10 && ncontrib>0 && centrality<80%");
83 if (isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
84 eventCuts->SetRequireVertex();
85 eventCuts->SetMinVtxContributors(1);
86 eventCuts->SetVertexZ(-10.,+10.);
87 eventCuts->SetCentralityRange(0.0,80.0);
88 task->SetEventFilter(eventCuts);
90 //create output container
91 AliAnalysisDataContainer *cOutputHist1 =
92 mgr->CreateContainer(Form("jpsi_QA_%s",triggerNames[j]),
94 AliAnalysisManager::kOutputContainer,
95 Form("jpsi_%s.root",triggerNames[j]));
97 AliAnalysisDataContainer *cOutputHist2 =
98 mgr->CreateContainer(Form("jpsi_CF_%s",triggerNames[j]),
100 AliAnalysisManager::kOutputContainer,
101 Form("jpsi_%s.root",triggerNames[j]));
103 AliAnalysisDataContainer *cOutputHist3 =
104 mgr->CreateContainer(Form("jpsi_EventStat_%s",triggerNames[j]),
106 AliAnalysisManager::kOutputContainer,
107 Form("jpsi_%s.root",triggerNames[j]));
109 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
110 // mgr->ConnectOutput(task, 0, coutput1 );
111 mgr->ConnectOutput(task, 1, cOutputHist1);
112 mgr->ConnectOutput(task, 2, cOutputHist2);
113 mgr->ConnectOutput(task, 3, cOutputHist3);