### Proof

- New functionality
  - In TProof::Load, add the possibility to define a list of files to be sent because needed by the main macro file. The list is comma-separated and the first file is considered as the main one. For example
    proof->Load("<macropath>/mymacro.C+,<thispath>/thisheader.h,<thatpath>/thatheader.h")
    will make sure that the files 'thisheader.h' and 'thatheader.h', needed by 'mymacro.C' are available in the sandbox on the worker machines. Note that 'thisheader.h' and 'thatheader.h' will be available remotely in the sandbox, as 'mymacro.C'; so they should be included directly by 'mymacro.C', e.g. '#include "thisheader.h"' .
  - Import the dataset stager daemon 'afdsmgrd' into ROOT; this is used to manage data staging based on the dataset information (see http://code.google.com/p/afdsmgrd/ for more info). The daemon is located under $ROOTSYS/proof/afdsmgrd .
  - New PROOF bench suite, a framework to run CPU and IO benchmarks with default selectors/data or with user-provided ones. The code is located under proof/proofbench. See http://root.cern.ch/drupal/content/new-benchmark-framework-tproofbench .
  - Add the possibility to access the files on the workers via the same port used by PROOF. This is useful for cases when it is not possible to start a file server daemon on a different port (because, for eample, of a firewall or just inconvenience) and workers do not share a file system. Internally this works by forking a 'rootd' after identifying a file request and trasferring the connection to it. The client side is a TNetFile and it is triggered by the protocol "rootd://" (the just implemented etc/plugins/TFile/P120_TNetFile.C includes this protocol).
    See also http://root.cern.ch/drupal/content/configuration-reference-guide#rootd .
  - Add support for log file truncation. Truncation is disabled by default. Enabling is controlled by the rootrc variable
    ProofServ.LogFileMaxSize {<bytes>|<kilobytes>K|<megabytes>M|<gigabytes>G}
    indicating the max number of bytes. The number can be followed by a {K,M,G} to indicate KBytes, MBytes or GBytes, respectively.
  - Add new derivation of TList (TProofOutputList) to be used on the PROOF client to filter out PROOF internal objects when displaying or printing the list. By default objects was names start with 'PROOF_' are not shown. The presence of a non empty missing file list is notified.
  - In the PROOF monitoring to: send additional information about memory usage during the query, the name and size (# of files) of the dataset processed (if any); add possibility to send the information to multiple monitoring collectors. See documentation updated at http://root.cern.ch/drupal/content/enabling-query-monitoring .
  - Add support for block activation/deactivation of workers.
  - Add possibility to start the proofserv with 'system()' instead of 'fork()' as done in PROOF-Lite. A new switch 'usefrk' has been added to 'xpd.proofservmgr' to control that. Default is still fork().
- Improvements
  - In TProof::ClearPackages, use the manager to execute the command on all known worker machines. Improves the consistency when re-istalling packages.
  - In TProof::GetDataSets, add support for option ':lite:'; this allows to fill the map with only the summary information about the datasets (the header of TFileCollections), significantly increasing the speed and the memory footprint when the number of datasets is very large.
  - Accept '.' in user names.
  - Add switch to control caching of the files read on MacOsX. A call to fcntl(fd, F_NOCACHE, 1) is done after opening the file.
  - Add export of the envs ROOTPROOFCLIENT and ROOTPROOFLITE when appropriate. These allow to steer building and/or enabling of PAR files in PROOF-INF/BUILD.sh and/or PROOF-INF/SETUP.C, improving transparency between normal ROOT and PROOF. The example PAR 'tutorials/proof/event.par' has been modified to check the two variables.
  - Fix a few issues in SQL PROOF monitoring: in TSQLMonitoringWriter::SendParameters, drop ''' around field names in the INSERT string; also use TString::Format(...) instead of Form(...) where relevant. In TPerfStats: call 'proofgroup' instead of 'group' the field with the PROOF group (interference with the 'group' keyword in SQL); add new field 'querytag' VARCHAR(64) with the unique query tag; in WriteQueryLog fill also the field 'totevents'; in PacketEvent, add switch to control whether to send te information to the monitoring system on per packet level (may be too much for SQL). The switch is called fMonitorPerPacket and it is globally controlled by the rootrc variable 'Proof.MonitorPerPacket' and at session level with the parameter PROOF_MonitorPerPacket .
  - Improve treatment of the case when temporary files are asked to be created on a shared file system not containing the sandboxes. This case, which seems to be a rather common one, should be now fully supported.
  - Correctly honour selector abort status settings TSelector::kAbortProcess and TSelector::kAbortFile.
  - Improve reporting of the non-processed {files, events} in the final 'MissingFiles' list.
  - Improved algorithm for TPacketizerUnit to fix issue with non homogeneous machines.
  - Improve the way the information about log files is saved in case of failures. The log paths for these failing now should be now correctly saved and accessible via TProofLog.
  - Improve merging of histograms. Just use TH1::Add whne the axis are equal; much faster than TH1::Merge.
- Fixes
  - In TDataSetManagerFile::NotifyUpdate fix handling of the case when the global list file does not exist yet (new dataset directory). Fixes error messages during editing dataset operations.
  - Fix issue with machine names consistency when working on a local machine ('localhost' or 'localhost.localdomain' are mapped to gSystem->HostName()); solves possible matching problems in the packetizer.
  - In TProofServ, fill the "grand total" message with more blanks, so that no remnants of the previous message are visible on the screen.
  - In the autoconf/bonjour interface, fix issue preventing the correct port (the protocol one, which may be different from the application default) being used when registering the service.
  - In TProofPlayer::AddQueryResult, fix a bug affecting the order in whihc query results are registered when the start time is within 1 second.
  - Fix worker name in TSlaveLite.
  - Fix problem with enabling packages with option 'notOnClient' in PROOF-Lite .
  - Make sure the log file is flushed at the end of startup to avoid spurious log messages on next commands .
  - In CreateSession(), fix an issue with the validity check for existing sessions .
  - In TProofLite: fix problem with passing the 'varexp' and 'selection' strings for processing, preventing correct usage of the operators '|' and '||' in TTreeFormula.
  - In the TProofOutputFile constructor, remove the 'localroot' prefix only if present in the path. Fixes possible truncation problems occuring when the paths are not under the localroot scope.
  - In TXSocket and TXSlave: fix problem with the way collection over a socket just marked as 'bad' was interrupted; the interrupt was de facto ineffective, so that collection stayed always until the timeout expired (default: 5 minutes). Should solve some of the cases were slow response was experienced.
  - Fix a problem with log path transmission when the node dies early or not even starts. The log path was empty and wrong was filled in when retrieving the log buffers, disorienting debugging.
  - Fix a bug checking the first event which rendered ineffective the request for processing a subset of events in a given dataset or chain.
  - In pq2-ana-dist, fix problem with the labels of the distribution histo occuring when machines are represented by IPs instead of names.
  - Add missing calls to closedir() and TSystem::FreeDirectory, cuasing a large number of filedescriptors remaining opened after xproofd initialization.
  - Fix a problem with the final update of the progress information affecting occasionally cases with skipped events.
  - Fix merging of TproofOutputFile when using submergers (the intermediate files were not correctly handled).
  - Fix the way TChain weights are transmitted to TProofDraw in DrawSelect operations.
- AoB
  - The class TFileMerger has been moved to 'io/io'