IlcCentralitySelectionTask *AddTaskCentrality(Bool_t fillHistos=kTRUE) { // Macro to connect a centrality selection task to an existing analysis manager. IlcAnalysisManager *mgr = IlcAnalysisManager::GetAnalysisManager(); if (!mgr) { ::Error("AddTaskCentrality", "No analysis manager to connect to."); return NULL; } // Check the analysis type using the event handlers connected to the analysis manager. //============================================================================== if (!mgr->GetInputEventHandler()) { ::Error("AddTaskCentrality", "This task requires an input event handler"); return NULL; } TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD" if (inputDataType != "ESD") { ::Error("AddTaskCentrality", "This task works only on ESD analysis"); return NULL; } IlcCentralitySelectionTask *centralityTask = new IlcCentralitySelectionTask("CentralitySelection"); centralityTask->SelectCollisionCandidates(IlcVEvent::kAny); mgr->AddTask(centralityTask); mgr->ConnectInput(centralityTask, 0, mgr->GetCommonInputContainer()); if (fillHistos) { centralityTask->SetFillHistos(); IlcAnalysisDataContainer *coutput1 = mgr->CreateContainer("CentralityStat", TList::Class(), IlcAnalysisManager::kOutputContainer, "EventStat_temp.root"); mgr->ConnectOutput(centralityTask,1,coutput1); } return centralityTask; }
Bool_t InputHandlerSetup(TString format = "esd", Bool_t useKine = kTRUE) { format.ToLower(); IlcAnalysisManager *mgr = IlcAnalysisManager::GetAnalysisManager(); IlcAnalysisDataContainer *cin = mgr->GetCommonInputContainer(); if (cin) return; if (!format.CompareTo("esd")) { IlcESDInputHandler *esdInputHandler = dynamic_cast<IlcESDInputHandler*>(IlcAnalysisManager::GetAnalysisManager()-> GetInputEventHandler()); if (!esdInputHandler) { Info("CustomAnalysisTaskInputSetup", "Creating esdInputHandler ..."); esdInputHandler = new IlcESDInputHandler(); mgr->SetInputEventHandler(esdInputHandler); } if (useKine) { IlcMCEventHandler* mcInputHandler = dynamic_cast<IlcMCEventHandler*>(IlcAnalysisManager::GetAnalysisManager()-> GetMCtruthEventHandler()); if (!mcInputHandler) { Info("CustomAnalysisTaskInputSetup", "Creating mcInputHandler ..."); IlcMCEventHandler* mcInputHandler = new IlcMCEventHandler(); mgr->SetMCtruthEventHandler(mcInputHandler); } } } else if (!format.CompareTo("aod")) { IlcAODInputHandler *aodInputHandler = dynamic_cast<IlcAODInputHandler*>(IlcAnalysisManager::GetAnalysisManager()-> GetInputEventHandler()); if (!aodInputHandler) { Info("CustomAnalysisTaskInputSetup", "Creating aodInputHandler ..."); aodInputHandler = new IlcAODInputHandler(); mgr->SetInputEventHandler(aodInputHandler); } } else { IlcWarning("Wrong input format!!! Only ESD and AOD are supported. Skipping Task ..."); return kFALSE; } return kTRUE; }
void DphiAnalysis() { gSystem->Load("libTree.so"); gSystem->Load("libPhysics.so"); gSystem->Load("libGeom.so"); gSystem->Load("libVMC.so"); gSystem->Load("libANALYSIS.so"); gSystem->Load("libSTEERBase.so"); gSystem->Load("libAOD.so"); gSystem->Load("libESD.so"); gSystem->Load("libANALYSISilc.so"); // if (gApplication) gApplication->InitializeGraphics(); // Create the chain // //TString path("/afs/cern.ch/user/m/morsch/public/"); TString path("./"); TChain* chain = new TChain("aodTree"); chain->Add(Form("%s/%s",path.Data(),"IlcAOD.root")); /////////////////////////////////////////////////////////////////////////////////// // Create the analysis manager // // Input IlcMultiEventInputHandler* inpHandler = new IlcMultiEventInputHandler(2, 1); // Pool IlcEventPoolOTF* pool = new IlcEventPoolOTF("event pool", "AOD"); pool->SetTagDirectory(path.Data()); pool->SetMultiplicityBin(0, 100, 100); pool->Init(); IlcAnalysisManager *mgr = new IlcAnalysisManager("Jet Manager", "Jet Manager"); mgr->SetInputEventHandler (inpHandler); mgr->SetEventPool(pool); inpHandler->SetEventPool(pool); mgr->SetDebugLevel(10); /////////////////////////////////////////////////////////////////////////////////// gROOT->LoadMacro("IlcAnalysisTaskPhiCorr.cxx++g"); IlcAnalysisTaskPhiCorr *dphiana = new IlcAnalysisTaskPhiCorr("Phi Correlation Analysis"); dphiana->SetDebugLevel(10); mgr->AddTask(dphiana); // // Create containers for input/output IlcAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain",TChain::Class(), IlcAnalysisManager::kInputContainer); IlcAnalysisDataContainer *coutput1 = mgr->CreateContainer("tree", TTree::Class(), IlcAnalysisManager::kExchangeContainer, "default"); IlcAnalysisDataContainer *coutput2 = mgr->CreateContainer("histos", TList::Class(), IlcAnalysisManager::kOutputContainer, "histos.root"); mgr->ConnectInput (dphiana, 0, mgr->GetCommonInputContainer()); mgr->ConnectOutput (dphiana, 0, coutput1 ); mgr->ConnectOutput (dphiana, 1, coutput2 ); // // Run the analysis // mgr->InitAnalysis(); mgr->PrintStatus(); mgr->StartAnalysis("mix",chain, 1000); }
void runCentralitySelection(const char *mode="local") { // Load common libraries gSystem->Load("libCore.so"); gSystem->Load("libTree.so"); gSystem->Load("libGeom.so"); gSystem->Load("libVMC.so"); gSystem->Load("libPhysics.so"); gSystem->Load("libSTEERBase"); gSystem->Load("libESD"); gSystem->Load("libAOD"); gSystem->Load("libANALYSIS"); gSystem->Load("libANALYSISilc"); gSystem->Load("libCORRFW"); gSystem->Load("libPWGHFbase"); gSystem->Load("libPWGmuon"); // Use IlcRoot includes to compile our task gROOT->ProcessLine(".include $ILC_ROOT/include"); // filename TChain* chain = new TChain("esdTree"); chain->AddFile("/home/alberica/analysis/centrality/data/ilc/sim/LHC10a12/104157/998/root_archive.zip#IlcESDs.root"); // Create the analysis manager IlcAnalysisManager *mgr = new IlcAnalysisManager("AnalysisManager"); mgr->SetDebugLevel(10); // My task gROOT->LoadMacro("IlcCentralitySelectionTask.cxx++g"); IlcCentralitySelectionTask *task = new IlcCentralitySelectionTask("CentralitySelection"); task->SetPercentileFile("test_IlcCentralityBy1D.root"); task->SetCentralityMethod("V0"); mgr->AddTask(task); // My dummy task gROOT->LoadMacro("IlcDummy.cxx++g"); IlcDummy *dummytask = new IlcDummy("Dummy"); mgr->AddTask(dummytask); IlcMCEventHandler* mcHandler = new IlcMCEventHandler(); mgr->SetMCtruthEventHandler(mcHandler); IlcESDInputHandler* esdH = new IlcESDInputHandler(); mgr->SetInputEventHandler(esdH); // Create containers for input/output mgr->ConnectInput (task,0, mgr->GetCommonInputContainer()); mgr->ConnectInput (dummytask,0, mgr->GetCommonInputContainer()); // mgr->ConnectOutput(task,0, mgr->GetCommonOutputContainer()); // Enable debug printouts mgr->SetDebugLevel(2); if(!mgr->InitAnalysis()) return; mgr->PrintStatus(); // Start analysis in grid. mgr->StartAnalysis(mode, chain); };