From 4998bf42c8ec319653455e7d54dea195afc0782b Mon Sep 17 00:00:00 2001 From: cnattras Date: Thu, 2 Sep 2010 11:49:46 +0000 Subject: [PATCH] Macros for running Et analysis --- .../macros/CreateAlienHandlerCaloEtSim.C | 76 ++++++++++++++++ .../totEt/macros/CreateAlienHandlerHadEtSim.C | 76 ++++++++++++++++ PWG4/totEt/macros/runCaloEt.C | 91 +++++++++++++++++++ PWG4/totEt/macros/runHadEt.C | 73 +++++++++++++++ 4 files changed, 316 insertions(+) create mode 100644 PWG4/totEt/macros/CreateAlienHandlerCaloEtSim.C create mode 100644 PWG4/totEt/macros/CreateAlienHandlerHadEtSim.C create mode 100644 PWG4/totEt/macros/runCaloEt.C create mode 100644 PWG4/totEt/macros/runHadEt.C diff --git a/PWG4/totEt/macros/CreateAlienHandlerCaloEtSim.C b/PWG4/totEt/macros/CreateAlienHandlerCaloEtSim.C new file mode 100644 index 00000000000..23b18d3a1c6 --- /dev/null +++ b/PWG4/totEt/macros/CreateAlienHandlerCaloEtSim.C @@ -0,0 +1,76 @@ + AliAnalysisGrid* CreateAlienHandlerCaloEtSim() +{ +// Check if user has a valid token, otherwise make one. This has limitations. +// One can always follow the standard procedure of calling alien-token-init then +// source /tmp/gclient_env_$UID in the current shell. + if (!AliAnalysisGrid::CreateToken()) return NULL; + AliAnalysisAlien *plugin = new AliAnalysisAlien(); + +// Overwrite all generated files, datasets and output results from a previous session + plugin->SetOverwriteMode(); +// Set the run mode (can be "full", "test", "offline", "submit" or "terminate") + //plugin->SetRunMode("full"); // VERY IMPORTANT - DECRIBED BELOW + plugin->SetRunMode("full"); // VERY IMPORTANT - DECRIBED BELOW +// Set versions of used packages + plugin->SetAPIVersion("V1.1x"); + plugin->SetROOTVersion("v5-26-00b-6"); + plugin->SetAliROOTVersion("v4-20-04-AN"); +// Declare input data to be processed. + +// Method 1: Create automatically XML collections using alien 'find' command. +// Define production directory LFN +// plugin->SetGridDataDir("/alice/sim/LHC10a18"); +// Set data search pattern +// plugin->SetDataPattern("*ESDs.root"); // simulated, tags not used +// plugin->SetDataPattern("*ESDs/pass4/*ESDs.root"); // real data check reco pass and data base directory +// plugin->SetRunPrefix("000"); // real data +// plugin->SetDataPattern("*tag.root"); // Use ESD tags (same applies for AOD's) +// ...then add run numbers to be considered +// plugin->AddRunNumber(125020); // simulated +// plugin->AddRunNumber(104065); // real data + +// Method 2: Declare existing data files (raw collections, xml collections, root file) +// If no path mentioned data is supposed to be in the work directory (see SetGridWorkingDir()) +// XML collections added via this method can be combined with the first method if +// the content is compatible (using or not tags) + plugin->AddDataFile("tag.xml"); +// plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root"); + +// Define alien work directory where all files will be copied. Relative to alien $HOME. + plugin->SetGridWorkingDir("etOystein"); +// Declare alien output directory. Relative to working directory. + plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output +// Declare the analysis source files names separated by blancs. To be compiled runtime IN THE SAME ORDER THEY ARE LISTED +// using ACLiC on the worker nodes. + //plugin->SetAnalysisSource("AliAnalysisTaskHadEt.cxx"); + //plugin->SetAnalysisSource("AliAnalysisEt.cxx AliAnalysisEtMonteCarlo.cxx AliAnalysisEtMonteCarloPhos.cxx AliAnalysisEtReconstructed.cxx AliAnalysisEtReconstructedPhos.cxx AliAnalysisHadEt.cxx AliAnalysisHadEtMonteCarlo.cxx AliAnalysisHadEtReconstructed.cxx AliAnalysisTaskHadEt.cxx AliAnalysisTaskTotEt.cxx"); + plugin->SetAnalysisSource("AliAnalysisEt.cxx AliAnalysisEtMonteCarlo.cxx AliAnalysisEtMonteCarloPhos.cxx AliAnalysisEtMonteCarloEmcal.cxx AliAnalysisEtReconstructed.cxx AliAnalysisEtReconstructedPhos.cxx AliAnalysisEtReconstructedEmcal.cxx AliAnalysisTaskTotEt.cxx"); +// Declare all libraries (other than the default ones for the framework. These will be +// loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here. + plugin->SetAdditionalLibs("AliAnalysisEtCuts.h AliAnalysisEt.h AliAnalysisEtMonteCarlo.h AliAnalysisEtMonteCarloPhos.h AliAnalysisEtMonteCarloEmcal.h AliAnalysisEtReconstructed.h AliAnalysisEtReconstructedPhos.h AliAnalysisEtReconstructedEmcal.h AliAnalysisTaskTotEt.h AliAnalysisEt.cxx AliAnalysisEtMonteCarlo.cxx AliAnalysisEtMonteCarloPhos.cxx AliAnalysisEtMonteCarloEmcal.cxx AliAnalysisEtReconstructed.cxx AliAnalysisEtReconstructedPhos.cxx AliAnalysisEtReconstructedEmcal.cxx AliAnalysisTaskTotEt.cxx"); +// No need for output file names. Procedure is automatic. <-- not true + plugin->SetDefaultOutputs(kFALSE); + plugin->SetOutputFiles("Et.ESD.sim.root"); +// No need define the files to be archived. Note that this is handled automatically by the plugin. +// plugin->SetOutputArchive("log_archive.zip:stdout,stderr"); +// Set a name for the generated analysis macro (default MyAnalysis.C) Make this unique ! + plugin->SetAnalysisMacro("OysteinsEtAnalysis.C"); +// Optionally set maximum number of input files/subjob (default 100, put 0 to ignore). The optimum for an analysis +// is correlated with the run time - count few hours TTL per job, not minutes ! + plugin->SetSplitMaxInputFileNumber(100); +// Optionally set number of failed jobs that will trigger killing waiting sub-jobs. + plugin->SetMaxInitFailed(5); +// Optionally resubmit threshold. + plugin->SetMasterResubmitThreshold(90); +// Optionally set time to live (default 30000 sec) + plugin->SetTTL(20000); +// Optionally set input format (default xml-single) + plugin->SetInputFormat("xml-single"); +// Optionally modify the name of the generated JDL (default analysis.jdl) + plugin->SetJDLName("TaskEt.jdl"); +// Optionally modify job price (default 1) + plugin->SetPrice(1); +// Optionally modify split mode (default 'se') + plugin->SetSplitMode("se"); + return plugin; +} diff --git a/PWG4/totEt/macros/CreateAlienHandlerHadEtSim.C b/PWG4/totEt/macros/CreateAlienHandlerHadEtSim.C new file mode 100644 index 00000000000..9a749ca2dee --- /dev/null +++ b/PWG4/totEt/macros/CreateAlienHandlerHadEtSim.C @@ -0,0 +1,76 @@ + AliAnalysisGrid* CreateAlienHandlerHadEtSim() +{ +// Check if user has a valid token, otherwise make one. This has limitations. +// One can always follow the standard procedure of calling alien-token-init then +// source /tmp/gclient_env_$UID in the current shell. + if (!AliAnalysisGrid::CreateToken()) return NULL; + AliAnalysisAlien *plugin = new AliAnalysisAlien(); + +// Overwrite all generated files, datasets and output results from a previous session + plugin->SetOverwriteMode(); +// Set the run mode (can be "full", "test", "offline", "submit" or "terminate") + //plugin->SetRunMode("full"); // VERY IMPORTANT - DECRIBED BELOW + plugin->SetRunMode("full"); // VERY IMPORTANT - DECRIBED BELOW +// Set versions of used packages + plugin->SetAPIVersion("V1.1x"); + plugin->SetROOTVersion("v5-26-00b-6"); + plugin->SetAliROOTVersion("v4-20-04-AN"); +// Declare input data to be processed. + +// Method 1: Create automatically XML collections using alien 'find' command. +// Define production directory LFN +// plugin->SetGridDataDir("/alice/sim/LHC10a18"); +// Set data search pattern +// plugin->SetDataPattern("*ESDs.root"); // simulated, tags not used +// plugin->SetDataPattern("*ESDs/pass4/*ESDs.root"); // real data check reco pass and data base directory +// plugin->SetRunPrefix("000"); // real data +// plugin->SetDataPattern("*tag.root"); // Use ESD tags (same applies for AOD's) +// ...then add run numbers to be considered +// plugin->AddRunNumber(125020); // simulated +// plugin->AddRunNumber(104065); // real data + +// Method 2: Declare existing data files (raw collections, xml collections, root file) +// If no path mentioned data is supposed to be in the work directory (see SetGridWorkingDir()) +// XML collections added via this method can be combined with the first method if +// the content is compatible (using or not tags) + plugin->AddDataFile("tag.xml"); +// plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root"); + +// Define alien work directory where all files will be copied. Relative to alien $HOME. + plugin->SetGridWorkingDir("et"); +// Declare alien output directory. Relative to working directory. + plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output +// Declare the analysis source files names separated by blancs. To be compiled runtime IN THE SAME ORDER THEY ARE LISTED +// using ACLiC on the worker nodes. + //plugin->SetAnalysisSource("AliAnalysisTaskHadEt.cxx"); + //plugin->SetAnalysisSource("AliAnalysisEt.cxx AliAnalysisEtMonteCarlo.cxx AliAnalysisEtMonteCarloPhos.cxx AliAnalysisEtReconstructed.cxx AliAnalysisEtReconstructedPhos.cxx AliAnalysisHadEt.cxx AliAnalysisHadEtMonteCarlo.cxx AliAnalysisHadEtReconstructed.cxx AliAnalysisTaskHadEt.cxx AliAnalysisTaskTotEt.cxx"); + plugin->SetAnalysisSource("AliAnalysisHadEt.cxx AliAnalysisHadEtMonteCarlo.cxx AliAnalysisHadEtReconstructed.cxx AliAnalysisTaskHadEt.cxx"); +// Declare all libraries (other than the default ones for the framework. These will be +// loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here. + plugin->SetAdditionalLibs("AliAnalysisEtCuts.h AliAnalysisHadEt.cxx AliAnalysisHadEtMonteCarlo.cxx AliAnalysisHadEtReconstructed.cxx AliAnalysisTaskHadEt.cxx AliAnalysisHadEt.h AliAnalysisHadEtMonteCarlo.h AliAnalysisHadEtReconstructed.h AliAnalysisTaskHadEt.h"); +// No need for output file names. Procedure is automatic. <-- not true + plugin->SetDefaultOutputs(kFALSE); + plugin->SetOutputFiles("Et.ESD.new.sim.root"); +// No need define the files to be archived. Note that this is handled automatically by the plugin. +// plugin->SetOutputArchive("log_archive.zip:stdout,stderr"); +// Set a name for the generated analysis macro (default MyAnalysis.C) Make this unique ! + plugin->SetAnalysisMacro("ChristinesEtAnalysis.C"); +// Optionally set maximum number of input files/subjob (default 100, put 0 to ignore). The optimum for an analysis +// is correlated with the run time - count few hours TTL per job, not minutes ! + plugin->SetSplitMaxInputFileNumber(100); +// Optionally set number of failed jobs that will trigger killing waiting sub-jobs. + plugin->SetMaxInitFailed(5); +// Optionally resubmit threshold. + plugin->SetMasterResubmitThreshold(90); +// Optionally set time to live (default 30000 sec) + plugin->SetTTL(20000); +// Optionally set input format (default xml-single) + plugin->SetInputFormat("xml-single"); +// Optionally modify the name of the generated JDL (default analysis.jdl) + plugin->SetJDLName("TaskEt.jdl"); +// Optionally modify job price (default 1) + plugin->SetPrice(1); +// Optionally modify split mode (default 'se') + plugin->SetSplitMode("se"); + return plugin; +} diff --git a/PWG4/totEt/macros/runCaloEt.C b/PWG4/totEt/macros/runCaloEt.C new file mode 100644 index 00000000000..dedba1e2610 --- /dev/null +++ b/PWG4/totEt/macros/runCaloEt.C @@ -0,0 +1,91 @@ +//Create by Christine Nattrass, Rebecca Scott, Irakli Martashvili +//University of Tennessee at Knoxville + +//by default this runs locally +//With the argument true this submits jobs to the grid +//As written this requires an xml script tag.xml in the ~/et directory on the grid to submit jobs +void runCaloEt(bool submit = false) { + TStopwatch timer; + timer.Start(); + gSystem->Load("libTree.so"); + gSystem->Load("libGeom.so"); + gSystem->Load("libVMC.so"); + gSystem->Load("libXMLIO.so"); + + gSystem->Load("libSTEERBase.so"); + gSystem->Load("libESD.so"); + gSystem->Load("libAOD.so"); + + gSystem->Load("libANALYSIS"); + gSystem->Load("libANALYSISalice"); + + gSystem->AddIncludePath("-I$ALICE_ROOT/include"); + gROOT->ProcessLine(".L AliAnalysisEt.cxx+g"); + gROOT->ProcessLine(".L AliAnalysisEtMonteCarlo.cxx+g"); + gROOT->ProcessLine(".L AliAnalysisEtMonteCarloPhos.cxx+g"); + gROOT->ProcessLine(".L AliAnalysisEtMonteCarloEmcal.cxx+g"); + gROOT->ProcessLine(".L AliAnalysisEtReconstructed.cxx+g"); + gROOT->ProcessLine(".L AliAnalysisEtReconstructedPhos.cxx+g"); + gROOT->ProcessLine(".L AliAnalysisEtReconstructedEmcal.cxx+g"); + + gROOT->ProcessLine(".L AliAnalysisTaskTotEt.cxx+g"); + + + char *kTreeName = "esdTree" ; + TChain * chain = new TChain(kTreeName,"myESDTree") ; + + + if(submit){ + gSystem->Load("libNetx.so") ; + gSystem->Load("libgapiUI.so"); + gSystem->Load("libRAliEn.so"); + TGrid::Connect("alien://") ; + } + chain->Add("/data/LHC10d15/1821/AliESDs.root");//CN changed + + + + // Make the analysis manager + AliAnalysisManager *mgr = new AliAnalysisManager("TotEtManager"); + + if(submit){ + gROOT->LoadMacro("CreateAlienHandlerPhosEtSim.C"); + AliAnalysisGrid *alienHandler = CreateAlienHandlerPhosEtSim(); + if (!alienHandler) return; + mgr->SetGridHandler(alienHandler); + } + + AliVEventHandler* esdH = new AliESDInputHandler; + mgr->SetInputEventHandler(esdH); + AliMCEventHandler* handler = new AliMCEventHandler; + handler->SetReadTR(kFALSE); + mgr->SetMCtruthEventHandler(handler); + + AliAnalysisTaskTotEt *task1 = new AliAnalysisTaskTotEt("TaskTotEt"); + mgr->AddTask(task1); + + // Create containers for input/output + //AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1", TChain::Class(),AliAnalysisManager::kInputContainer); + AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer(); + + //AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("out1", TList::Class(), AliAnalysisManager::kOutputContainer,"Et.ESD.sim.root"); + AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("out1", TList::Class(), AliAnalysisManager::kOutputContainer,"Et.ESD.sim.root"); + + //____________________________________________// + mgr->ConnectInput(task1,0,cinput1); + mgr->ConnectOutput(task1,1,coutput1); + + mgr->SetDebugLevel(0); + + if (!mgr->InitAnalysis()) return; + mgr->PrintStatus(); + if(submit){ + mgr->StartAnalysis("grid"); + } + else{ + mgr->StartAnalysis("local",chain); + } + + timer.Stop(); + timer.Print(); +} diff --git a/PWG4/totEt/macros/runHadEt.C b/PWG4/totEt/macros/runHadEt.C new file mode 100644 index 00000000000..f41adebead2 --- /dev/null +++ b/PWG4/totEt/macros/runHadEt.C @@ -0,0 +1,73 @@ +//Create by Christine Nattrass, Rebecca Scott, Irakli Martashvili +//University of Tennessee at Knoxville + +//by default this runs locally +//With the argument true this submits jobs to the grid +//As written this requires an xml script tag.xml in the ~/et directory on the grid to submit jobs +void runHadEt(bool submit = false) { + TStopwatch timer; + timer.Start(); + gSystem->Load("libTree.so"); + gSystem->Load("libGeom.so"); + gSystem->Load("libVMC.so"); + gSystem->Load("libXMLIO.so"); + + gSystem->Load("libSTEERBase.so"); + gSystem->Load("libESD.so"); + gSystem->Load("libAOD.so"); + + gSystem->Load("libANALYSIS"); + gSystem->Load("libANALYSISalice"); + + gSystem->AddIncludePath("-I$ALICE_ROOT/include"); + gROOT->ProcessLine(".L AliAnalysisHadEt.cxx+g"); + gROOT->ProcessLine(".L AliAnalysisHadEtMonteCarlo.cxx+g"); + gROOT->ProcessLine(".L AliAnalysisHadEtReconstructed.cxx+g"); + gROOT->ProcessLine(".L AliAnalysisTaskHadEt.cxx+g"); + + + char *kTreeName = "esdTree" ; + TChain * chain = new TChain(kTreeName,"myESDTree") ; + if(submit){ + gSystem->Load("libNetx.so") ; + gSystem->Load("libgapiUI.so"); + gSystem->Load("libRAliEn.so"); + TGrid::Connect("alien://") ; + } + chain->Add("/data/LHC10d15/1821/AliESDs.root"); + + // Make the analysis manager + AliAnalysisManager *mgr = new AliAnalysisManager("TotEtManager"); + if(submit){ + gROOT->LoadMacro("CreateAlienHandlerHadEtSim.C"); + AliAnalysisGrid *alienHandler = CreateAlienHandlerHadEtSim(); + if (!alienHandler) return; + mgr->SetGridHandler(alienHandler); + } + + AliVEventHandler* esdH = new AliESDInputHandler; + mgr->SetInputEventHandler(esdH); + AliMCEventHandler* handler = new AliMCEventHandler; + handler->SetReadTR(kFALSE); + mgr->SetMCtruthEventHandler(handler); + AliAnalysisTaskHadEt *task2 = new AliAnalysisTaskHadEt("TaskHadEt"); + mgr->AddTask(task2); + AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer(); + AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("out2", TList::Class(), AliAnalysisManager::kOutputContainer,"Et.ESD.new.sim.root"); + mgr->ConnectInput(task2,0,cinput1); + mgr->ConnectOutput(task2,1,coutput2); + + mgr->SetDebugLevel(0); + + if (!mgr->InitAnalysis()) return; + mgr->PrintStatus(); + if(submit){ + mgr->StartAnalysis("grid"); + } + else{ + mgr->StartAnalysis("local",chain); + } + + timer.Stop(); + timer.Print(); +} -- 2.43.0