AliAnalysisTask *AddTask_jpsi_JPsiQA(TString prod="",
Bool_t gridconf=kFALSE,
ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB) {
//get the current analysis manager
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
Error("AddTask_jpsi_JPsiQA", "No analysis manager found.");
return 0;
}
//Do we have an MC handler?
Bool_t hasMC = kFALSE;
TString list = gSystem->Getenv("LIST");
if( list.IsNull()) list=prod;
if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE;
if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
//Do we have an AOD handler?
Bool_t isAOD=(mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class() ? kTRUE : kFALSE);
// set AOD debug levels
if(isAOD) {
mgr->AddClassDebug("AliAODTrack", AliLog::kFatal);
mgr->AddClassDebug("AliAODpidUtil", AliLog::kInfo);
}
//set config file name
TString configFile("");
printf("%s \n",gSystem->pwd());
TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
if (!trainRoot.IsNull())
configFile="$TRAIN_ROOT/jbook_jpsi/ConfigJpsiQA_jpsi_PbPb.C"; // gsi config
else if(!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jpsi_PbPb.C .")) {
gSystem->Exec(Form("ls -l %s",gSystem->pwd()));
configFile=Form("%s/ConfigJpsiQA_jpsi_PbPb.C",gSystem->pwd()); // alien config
}
else {
printf("ERROR: couldn't copy file %s from grid \n",
"alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jpsi_PbPb.C");
return;
}
// using aliroot config
if(!gridconf)
configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jpsi_PbPb.C"; // forced aliroot config
//create task and add it to the manager
AliAnalysisTaskMultiDielectron *task;
// trigger selection
ULong64_t triggerSets[]={AliVEvent::kCentral , AliVEvent::kSemiCentral , AliVEvent::kMB,
AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB};
const char* triggerNames[]={"Central","SemiCentral","MB","MB+Cent+SemiCent"};
// find out the configured triggers
Int_t j=0;
for(j=0; j<4; j++) {
if(triggers!=triggerSets[j]) continue;
else break;
}
// print task configuration
printf("production: %s MC: %d \n", list.Data(),hasMC);
printf("triggers: %s \n", triggerNames[j] );
printf("config: %s Grid: %d \n",configFile.Data(),gridconf);
task = new AliAnalysisTaskMultiDielectron((Form("MultiDieJpsiQA_%s",triggerNames[j])));
task->SetBeamEnergy(1380.);
task->SetTriggerMask(triggers);
//task->SetTriggerMask(AliVEvent::kMB);
if (!hasMC) task->UsePhysicsSelection();
mgr->AddTask(task);
//load dielectron configuration file
TString checkconfig="ConfigJpsiQA_jpsi_PbPb";
if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
gROOT->LoadMacro(configFile.Data());
//add dielectron analysis with different cuts to the task
for (Int_t i=0; i<nDie; ++i) { //nDie defined in config file
AliDielectron *jpsi=ConfigJpsiQA_jpsi_PbPb(i,list,triggers);
if (jpsi ) task->AddDielectron(jpsi);
if (jpsi ) printf(" %s added\n",jpsi->GetName());
}
//create output container
TString containerName = "JPSI.root";
AliAnalysisDataContainer *cOutputHist1 =
mgr->CreateContainer(Form("jpsiQA_QA_%s",triggerNames[j]),
TList::Class(),
AliAnalysisManager::kOutputContainer,
containerName.Data());
AliAnalysisDataContainer *cOutputHist2 =
mgr->CreateContainer(Form("jpsiQA_CF_%s",triggerNames[j]),
TList::Class(),
AliAnalysisManager::kOutputContainer,
containerName.Data());// Form("jpsi_%s.root",triggerNames[j]));
AliAnalysisDataContainer *cOutputHist3 =
mgr->CreateContainer(Form("jpsiQA_EventStat_%s",triggerNames[j]),
TH1D::Class(),
AliAnalysisManager::kOutputContainer,
containerName.Data());// Form("jpsi_%s.root",triggerNames[j]));
mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
// mgr->ConnectOutput(task, 0, coutput1 );
mgr->ConnectOutput(task, 1, cOutputHist1);
mgr->ConnectOutput(task, 2, cOutputHist2);
mgr->ConnectOutput(task, 3, cOutputHist3);
return task;
}
AddTask_jpsi_JPsiQA.C:100 AddTask_jpsi_JPsiQA.C:101 AddTask_jpsi_JPsiQA.C:102 AddTask_jpsi_JPsiQA.C:103 AddTask_jpsi_JPsiQA.C:104 AddTask_jpsi_JPsiQA.C:105 AddTask_jpsi_JPsiQA.C:106 AddTask_jpsi_JPsiQA.C:107 AddTask_jpsi_JPsiQA.C:108 AddTask_jpsi_JPsiQA.C:109 AddTask_jpsi_JPsiQA.C:110 AddTask_jpsi_JPsiQA.C:111 AddTask_jpsi_JPsiQA.C:112 AddTask_jpsi_JPsiQA.C:113 AddTask_jpsi_JPsiQA.C:114 AddTask_jpsi_JPsiQA.C:115