1 AliAnalysisTask *AddTask_jbook_JPsi(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_jbook_JPsi", "No analysis manager found.");
12 //Do we have an MC handler?
13 TString list = gSystem->Getenv("LIST");
15 if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE;
16 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/ConfigJpsi_jb_PbPb.C"; // gsi config
34 else if(!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_jb_PbPb.C .")) {
35 gSystem->Exec(Form("ls -l %s",gSystem->pwd()));
36 configFile=Form("%s/ConfigJpsi_jb_PbPb.C",gSystem->pwd()); // alien config
39 printf("ERROR: couldn't copy file %s from grid \n",
40 "alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_jb_PbPb.C");
44 // using aliroot config
45 if(!gridconf && trainRoot.IsNull())
46 configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_jb_PbPb.C"; // aliroot config
50 AliAnalysisTaskMultiDielectron *task;
53 ULong64_t triggerSets[]={AliVEvent::kCentral , AliVEvent::kSemiCentral , AliVEvent::kMB,
54 AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB};
55 const char* triggerNames[]={"Central","SemiCentral","MB","ALL"};
56 const char* onlineRejection[]={"","CCENT","",""};
58 // find out the configured triggers
61 if(triggers!=triggerSets[j]) continue;
65 // print overall configuration
66 printf("production: %s MC: %d \n", list.Data(),hasMC);
67 printf("triggers: %s \n", triggerNames[j] );
68 printf("config: %s Grid: %d \n",configFile.Data(),gridconf);
70 //load dielectron configuration file
71 TString checkconfig="ConfigJpsi_jb_PbPb";
72 if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
73 gROOT->LoadMacro(configFile.Data());
75 //define default output container
76 TString containerName = "JPSI.root";
78 //add dielectron analysis with different cuts to the task
79 for (Int_t i=0; i<nDie; ++i) { //nDie defined in config file
82 AliDielectron *jpsi=ConfigJpsi_jb_PbPb(i,hasMC,triggers);
85 // create unique title
86 TString unitit = Form("%s_%s",triggerNames[j],jpsi->GetName());
88 // create single tasks instead of a multi task
89 task = new AliAnalysisTaskMultiDielectron(Form("MultiDieJB_%s",unitit.Data()));
90 task->SetBeamEnergy(1380.);
91 task->SetTriggerMask(triggers);
92 if(strlen(onlineRejection[j])) task->SetFiredTriggerName(onlineRejection[j],kTRUE);
93 if(!hasMC) task->UsePhysicsSelection();
95 // add dielectron to the task and manager
96 task->AddDielectron(jpsi);
99 //create output sub containers
100 AliAnalysisDataContainer *cOutputHist1 =
101 mgr->CreateContainer(Form("jbook_QA_%s",unitit.Data()),
103 AliAnalysisManager::kOutputContainer,
104 containerName.Data());
106 AliAnalysisDataContainer *cOutputHist2 =
107 mgr->CreateContainer(Form("jbook_CF_%s",unitit.Data()),
109 AliAnalysisManager::kOutputContainer,
110 containerName.Data());
112 AliAnalysisDataContainer *cOutputHist3 =
113 mgr->CreateContainer(Form("jbook_EventStat_%s",unitit.Data()),
115 AliAnalysisManager::kOutputContainer,
116 containerName.Data());
118 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
119 // mgr->ConnectOutput(task, 0, coutput1 );
120 mgr->ConnectOutput(task, 1, cOutputHist1);
121 mgr->ConnectOutput(task, 2, cOutputHist2);
122 mgr->ConnectOutput(task, 3, cOutputHist3);
124 printf(" %s added\n",jpsi->GetName());