enum AlgoType {kKT, kANTIKT}; enum JetType {kFULLJETS, kCHARGEDJETS, kNEUTRALJETS}; AliAnalysisTaskEmcalJetTriggerQA* AddTaskEmcalJetTriggerQA(TString kTracksName = "PicoTracks", TString kClusName = "caloClustersCorr", Double_t R = 0.4, Double_t ptminTrack = 0.15, Double_t etminClus = 0.3, Int_t rhoType = 0, TString trigClass = "", TString kEmcalCellsName = "", const char *CentEst = "V0A", Int_t pSel = AliVEvent::kINT7, Float_t nefCut = 10., TString kEmcalTriggers = "", TString kPeriod = "LHC13b" ) { AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); if (!mgr) { Error("AddTaskEmcalJetTriggerQA","No analysis manager found."); return 0; } Bool_t ismc=kFALSE; ismc = (mgr->GetMCtruthEventHandler())?kTRUE:kFALSE; // Check the analysis type using the event handlers connected to the analysis manager. //============================================================================== if (!mgr->GetInputEventHandler()) { ::Error("AddTaskEmcalJetTriggerQA", "This task requires an input event handler"); return NULL; } // #### Add necessary jet finder tasks gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C"); AliEmcalJetTask* jetFinderTask1; AliEmcalJetTask* jetFinderTask2; if(kClusName.IsNull()) { //particle level jets jetFinderTask1 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kFULLJETS, ptminTrack, etminClus); jetFinderTask2 = AddTaskEmcalJet(kTracksName, "", kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); } else if(kTracksName.IsNull()) { //neutral/calo jets jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kNEUTRALJETS, ptminTrack, etminClus); jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus); } else { //full jets jetFinderTask1 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kFULLJETS, ptminTrack, etminClus); jetFinderTask2 = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); } // jetFinderTask1->SetRecombSheme(0); // jetFinderTask2->SetRecombSheme(0); TString strJets1 = jetFinderTask1->GetName(); TString strJets2 = jetFinderTask2->GetName(); AliAnalysisTaskRhoBase *rhoTask; if(rhoType==1) { rhoTask = AttachRhoTask(kPeriod,kTracksName,kClusName,R,ptminTrack,etminClus); rhoTask->SetCentralityEstimator(CentEst); rhoTask->SelectCollisionCandidates(AliVEvent::kAny); } TString wagonName = Form("TriggerQA_%s_%s_TC%s",strJets1.Data(),strJets2.Data(),trigClass.Data()); //Configure TriggerQA task AliAnalysisTaskEmcalJetTriggerQA *task = new AliAnalysisTaskEmcalJetTriggerQA(wagonName); AliParticleContainer *trackCont = task->AddParticleContainer(kTracksName.Data()); AliClusterContainer *clusterCont = task->AddClusterContainer(kClusName.Data()); task->SetContainerFull(0); task->SetContainerCharged(1); AliJetContainer *jetCont0 = task->AddJetContainer(strJets1.Data(),"EMCAL",R); if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoScaledName(),0); AliJetContainer *jetCont1 = NULL; if(strJets2.Contains("Charged")) { jetCont1 = task->AddJetContainer(strJets2.Data(),"TPC",R); if(rhoType==1) task->SetRhoName(rhoTask->GetOutRhoName(),1); } else { jetCont1 = task->AddJetContainer(strJets2.Data(),"EMCAL",R); task->SetZLeadingCut(0.98,0.98,1); task->SetNEFCut(0.,nefCut,1); } task->SetZLeadingCut(0.98,0.98,0); task->SetNEFCut(0.,nefCut,0); for(Int_t i=0; i<2; i++) { task->SetPercAreaCut(0.6, i); } task->SetTriggerClass(trigClass.Data()); task->SetCaloCellsName(kEmcalCellsName.Data()); task->SetCaloTriggerPatchInfoName(kEmcalTriggers.Data()); task->SetCentralityEstimator(CentEst); task->SelectCollisionCandidates(pSel); task->SetUseAliAnaUtils(kTRUE); if(kPeriod.Contains("LHC13b4")) task-SetIsPythia(kTRUE); mgr->AddTask(task); //Connnect input mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer() ); //Connect output AliAnalysisDataContainer *coutput1 = 0x0; TString containerName1 = Form("%s",wagonName.Data()); TString outputfile = Form("%s:%s",AliAnalysisManager::GetCommonFileName(),wagonName.Data()); coutput1 = mgr->CreateContainer(containerName1, TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); mgr->ConnectOutput(task,1,coutput1); return task; } AliAnalysisTaskRhoBase *AttachRhoTask(TString kPeriod = "LHC13b", TString kTracksName = "PicoTracks", TString kClusName = "caloClustersCorr", Double_t R = 0.4, Double_t ptminTrack = 0.15, Double_t etminClus = 0.3 ) { AliAnalysisTaskRhoBase *rhoTaskBase; kPeriod.ToLower(); // Add kt jet finder and rho task in case we want background subtraction AliEmcalJetTask *jetFinderKt; AliEmcalJetTask *jetFinderAKt; jetFinderKt = AddTaskEmcalJet(kTracksName, kClusName, kKT, R, kCHARGEDJETS, ptminTrack, etminClus); jetFinderAKt = AddTaskEmcalJet(kTracksName, kClusName, kANTIKT, R, kCHARGEDJETS, ptminTrack, etminClus); if(kPeriod.EqualTo("lhc13b") || kPeriod.EqualTo("lhc13c") || kPeriod.EqualTo("lhc13d") || kPeriod.EqualTo("lhc13e") || kPeriod.EqualTo("lhc13f")) { jetFinderKt->SetMinJetPt(0.); gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRhoSparse.C"); TF1 *fScale = new TF1("fScale","1.42",0.,100.); //scale factor for pPb AliAnalysisTaskRhoSparse *rhoTaskSparse = AddTaskRhoSparse( jetFinderKt->GetName(), jetFinderAKt->GetName(), kTracksName, kClusName, Form("RhoSparseR%03d",(int)(100*R)), R, "TPC", 0.01, 0.15, 0, fScale, 0, kTRUE, Form("RhoSparseR%03d",(int)(100*R)), kTRUE ); rhoTaskSparse->SetUseAliAnaUtils(kTRUE); rhoTaskBase = dynamic_castrhoTaskSparse; } else if(kPeriod.EqualTo("lhc10h") || kPeriod.EqualTo("lhc11h") ) { gROOT->LoadMacro("$ALICE_ROOT/PWGJE/EMCALJetTasks/macros/AddTaskRho.C"); TF1* sfunc = new TF1("sfunc","[0]*x*x+[1]*x+[2]",-1,100); sfunc->SetParameter(2,1.76458); sfunc->SetParameter(1,-0.0111656); sfunc->SetParameter(0,0.000107296); AliAnalysisTaskRho *rhoTask = AddTaskRho( jetFinderKt->GetName(), kTracksName, kClusName, Form("RhoR%03d",(int)(100*R)), R, "TPC", 0.01, 0, sfunc, 2, kTRUE); rhoTask->SetHistoBins(100,0,250); rhoTaskBase = dynamic_castrhoTask; } return rhoTaskBase; }