Difference between revisions of "DSelector"

From GlueXWiki
Jump to: navigation, search
(Overview)
(Instructions)
Line 73: Line 73:
 
=== Instructions ===
 
=== Instructions ===
  
1) After each time the DSelector library is built, (re-)build the PROOF DSelector package:
+
1) It is highly recommended that you add the below line to your ~/.rootrc file (create it if it doesn't exist). This is the maximum number of previous sessions (thread files) that PROOF-Lite will keep on your disk.  Once the max is reached, it will delete the oldest ones.  At the moment the default is 10, so if you execute 2 simultaneous instances of PROOF-Lite with 8 threads each, it will break the first one, unless you increase this value. 
 +
<pre>
 +
Proof.MaxOldSessions 100
 +
</pre>
 +
 
 +
2) After each time the DSelector library is built, (re-)build the PROOF DSelector package:
 
<syntaxhighlight>
 
<syntaxhighlight>
 
cd $ROOT_ANALYSIS_HOME/MakePROOFPackage/
 
cd $ROOT_ANALYSIS_HOME/MakePROOFPackage/
Line 79: Line 84:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
2) Launch ROOT, and load the DSelector library:
+
3) Launch ROOT, and load the DSelector library:
 
* Note: PROOF-Lite will launch a GUI, so run ROOT with -b if you don't want it. It's useful for viewing log files though.  
 
* Note: PROOF-Lite will launch a GUI, so run ROOT with -b if you don't want it. It's useful for viewing log files though.  
 
<syntaxhighlight>
 
<syntaxhighlight>
Line 86: Line 91:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
3) Run PROOF-Lite:
+
4) Run PROOF-Lite:
 
+
 
<syntaxhighlight>
 
<syntaxhighlight>
 
DPROOFLiteManager::Process_Tree("my_tree_file.root", "my_tree_name", "my_selector.C+", "my_outfile.root", my_num_threads); //my_num_threads = unsigned int
 
DPROOFLiteManager::Process_Tree("my_tree_file.root", "my_tree_name", "my_selector.C+", "my_outfile.root", my_num_threads); //my_num_threads = unsigned int
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 14:00, 7 April 2016

Overview

  • Inherits from TSelector: Can be used with TTree::Process(), PROOF.

Improvements over TSelectors

Setting up the software & environment

1) Go to the directory where you want the source code to go. Checkout the software here:

svn co https://halldsvn.jlab.org/repos/trunk/home/pmatt/RootAnalysis/

2) Set the path to the checked-out RootAnalysis directory to be the variable:

$ROOT_ANALYSIS_HOME

3) After sourcing your standard GlueX environment file, set the following environment variables:

setenv OS_NAME $BMS_OSNAME
setenv LD_LIBRARY_PATH ${ROOT_ANALYSIS_HOME}/${OS_NAME}/lib/:$LD_LIBRARY_PATH
setenv PATH ${ROOT_ANALYSIS_HOME}/${OS_NAME}/bin/:$PATH

4) Build and install the DSelector library

cd $ROOT_ANALYSIS_HOME/DSelector
make all

5) Build and install the MakeDSelector binary

cd $ROOT_ANALYSIS_HOME/MakeDSelector
make all

Creating a DSelector

1) Run the MakeDSelector program to make a DSelector for your TTree. Run it with no arguments for usage instructions.

MakeDSelector

2) Note that unlike typical TSelectors, DSelectors don't have hard-coded array sizes. This means that they don't need to be regenerated each time you get more data.

3) When customizing your DSelector be very careful to read ALL of the pre-generated comments. They are there for a reason.

4) Write code similar to the pre-generated code, and everything will work fine.

Using a DSelector

  • Example:
root -l -b my_tree_file.root
.x $ROOT_ANALYSIS_HOME/Load_DSelector.C
my_tree_name->Process("my_selector.C+");
.q

Using DSelector's with PROOF-Lite

Overview

  • PROOF is ROOT's solution for running over a TChain multi-threaded.
  • PROOF is for distributed computed, whereas PROOF-Lite is for running multi-threaded on your local machine.
    • Note that each thread has it's own copy of ROOT histograms, and then they are merged together at the end. So, watch your memory usage, because it multiplies.
  • The DSelector is automatically setup to work either with or without PROOF (or PROOF-Lite).
  • Note: "cout" statements are written to log files, not to screen. If you want to print to screen, call:
gProofServ->SendAsynMessage("My message");

Instructions

1) It is highly recommended that you add the below line to your ~/.rootrc file (create it if it doesn't exist). This is the maximum number of previous sessions (thread files) that PROOF-Lite will keep on your disk. Once the max is reached, it will delete the oldest ones. At the moment the default is 10, so if you execute 2 simultaneous instances of PROOF-Lite with 8 threads each, it will break the first one, unless you increase this value.

Proof.MaxOldSessions 100

2) After each time the DSelector library is built, (re-)build the PROOF DSelector package:

cd $ROOT_ANALYSIS_HOME/MakePROOFPackage/
./build.sh

3) Launch ROOT, and load the DSelector library:

  • Note: PROOF-Lite will launch a GUI, so run ROOT with -b if you don't want it. It's useful for viewing log files though.
root -l
.x $ROOT_ANALYSIS_HOME/Load_DSelector.C

4) Run PROOF-Lite:

DPROOFLiteManager::Process_Tree("my_tree_file.root", "my_tree_name", "my_selector.C+", "my_outfile.root", my_num_threads); //my_num_threads = unsigned int