Skip to content
Snippets Groups Projects
Commit f358bd25 authored by Fons Rademakers's avatar Fons Rademakers
Browse files

copy back fixed v532 release notes to trunk.

git-svn-id: http://root.cern.ch/svn/root/trunk@43159 27541ba8-7e3a-0410-8455-c3a389f83636
parent 3549e695
No related branches found
No related tags found
No related merge requests found
<br/> <br/>
<hr/> <hr/>
<h3>Build System</h3>
<h4>MacOS X</h4>
<ul>
<li>
On MacOS X move to a more secure way of building. We will now always use
the --enable-explicitlink ./configure option which will cause a shared lib
or executable to be linked with all its dependent libraries. The OSX linker
is quite good and processing this extended set of libraries for each link
does cost only 3s extra time for all 100+ shared libs (13s instead of 10s).
Not much for the extra security. In addition we went back to the default
linker option "-undefined error", so you will get an error if symbols
are unresolved. Shared libs are also linked with the option
"-Wl,-dead_strip_dylibs" which tells the linker to remove any shared lib
which is not used to resolve any symbols (this should
solve the long standing issue of ACliC linking all previously created
shared libs even when not needed).
</li>
</ul>
<h4>Linux</h4>
<ul>
<li>
Make --enable-explictlink the default on linux too (was already the case for:
macosx, freebsd, openbsd, aix and win32). This adds some extra time to
the link stage, which can be recuperated by using the newer, much faster,
gold linker. In addition we added the linker option "-Wl,--no-undefined",
so you will get an error if symbols are unresolved.
Explicit linking is required by newer distributions, like Ubuntu 11.10,
that require all dependent shared libs to be specified when linking. They
also have default options set to dead strip shared libs that don't resolve
any symbols (equivalent to the MacOS X build changes described above).
</li>
</ul>
<a name="core"></a> <a name="core"></a>
<h3>Core Libraries</h3> <h3>Core Libraries</h3>
...@@ -13,7 +48,8 @@ first time, it calls the default constructor otherwise it returns the object as ...@@ -13,7 +48,8 @@ first time, it calls the default constructor otherwise it returns the object as
is (unless a string is passed as the 2nd argument to the function in which case, is (unless a string is passed as the 2nd argument to the function in which case,
it also calls Clear(second_argument) on the object). it also calls Clear(second_argument) on the object).
This allows to replace code like: This allows to replace code like:
<pre style="border:gray 1px solid;padding:0.5em 2em;background:#ffe"> for (int i = 0; i < ev->Ntracks; i++) { <pre style="border:gray 1px solid;padding:0.5em 2em;background:#ffe">
for (int i = 0; i &lt; ev-&gt;Ntracks; i++) {
new(a[i]) TTrack(x,y,z,...); new(a[i]) TTrack(x,y,z,...);
... ...
... ...
...@@ -22,7 +58,8 @@ This allows to replace code like: ...@@ -22,7 +58,8 @@ This allows to replace code like:
a.Delete(); // or a.Clear("C") a.Delete(); // or a.Clear("C")
</pre> </pre>
with the simpler and more efficient: with the simpler and more efficient:
<pre style="border:gray 1px solid;padding:0.5em 2em;background:#ffe"> for (int i = 0; i < ev->Ntracks; i++) { <pre style="border:gray 1px solid;padding:0.5em 2em;background:#ffe">
for (int i = 0; i &lt; ev-&gt;Ntracks; i++) {
TTrack *track = (TTrack*)a.ConstructedAt(i); TTrack *track = (TTrack*)a.ConstructedAt(i);
track->Set(x,y,z,....); track->Set(x,y,z,....);
... ...
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<!-- --> <!-- -->
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>ROOT Version 5.31/00 Release Notes</title> <title>ROOT Version 5.32/00 Release Notes</title>
<meta name="rating" content="General" /> <meta name="rating" content="General" />
<meta name="objecttype" content="Manual" /> <meta name="objecttype" content="Manual" />
<meta name="keywords" content="software development, oo, object oriented, unix, x11, windows, c++, html, rene brun, fons rademakers, cern" /> <meta name="keywords" content="software development, oo, object oriented, unix, x11, windows, c++, html, rene brun, fons rademakers, cern" />
...@@ -47,14 +47,14 @@ return false;} ...@@ -47,14 +47,14 @@ return false;}
&#187; <a class="locationlevel" href="#TopOfPage">Release Notes</a> &#187; <a class="locationlevel" href="#TopOfPage">Release Notes</a>
</div> </div>
<div class="dropshadow"><div class="withshadow"> <div class="dropshadow"><div class="withshadow">
<h1>ROOT Version 5.31/00 Release Notes</h1> <h1>ROOT Version 5.32/00 Release Notes</h1>
<div class="classdescr"> <div class="classdescr">
<p>ROOT version 5.30/00 has been released on June 28, 2011. <p>ROOT version 5.32/00 has been released on Nov 29, 2011.
In case you are upgrading from an old version, please read the releases notes In case you are upgrading from an old version, please read the releases notes
of version 5.24, 5,26 and version 5.28 in addition to these notes.</p> of version 5.26, 5,28 and version 5.30 in addition to these notes.</p>
<p> <p>
The release of version 5.32 is scheduled for November 29, 2011. The release of version 5.34 is scheduled for May 29, 2012.
</p> </p>
</div></div></div> </div></div></div>
<ul> <ul>
...@@ -80,16 +80,12 @@ The release of version 5.32 is scheduled for November 29, 2011. ...@@ -80,16 +80,12 @@ The release of version 5.32 is scheduled for November 29, 2011.
<li><a href="#tree"> <b>Trees</b></a> - ROOT's unique container class and related utilities</li> <li><a href="#tree"> <b>Trees</b></a> - ROOT's unique container class and related utilities</li>
<li><a href="#tutorials"> <b>Tutorials</b></a> - ROOT's Tutorials</li> <li><a href="#tutorials"> <b>Tutorials</b></a> - ROOT's Tutorials</li>
</ul> </ul>
<p>Binaries for all supported platforms are available at:
</p>
<pre> <a href="http://root.cern.ch/drupal/content/production-version-528 ">http://root.cern.ch/drupal/content/production-version-528 </a><br/></pre>
<p> <p>
For more information, see: For more information, see:
</p> </p>
<pre> <a href="http://root.cern.ch">http://root.cern.ch</a><br/></pre> <pre> <a href="http://root.cern.ch">http://root.cern.ch</a><br/></pre>
<p>The following people have contributed to this new version:</p> <p>The following people have contributed to this new version:</p>
Bertrand Bellenot, CERN/SFT,<br/> Bertrand Bellenot, CERN/SFT,<br/>
Dario Berzano, INFN and University of Torino, ALICE, Proof,<br/>
Rene Brun, CERN/SFT,<br/> Rene Brun, CERN/SFT,<br/>
Philippe Canal, FNAL,<br/> Philippe Canal, FNAL,<br/>
Olivier Couet, CERN/SFT,<br/> Olivier Couet, CERN/SFT,<br/>
...@@ -97,8 +93,8 @@ Kyle Cranmer, NYU/ATLAS, RooStats,<br/> ...@@ -97,8 +93,8 @@ Kyle Cranmer, NYU/ATLAS, RooStats,<br/>
Sven Kreiss, NYU/ATLAS, RooStats,<br/> Sven Kreiss, NYU/ATLAS, RooStats,<br/>
Gena Kukartsev, CERN and FNAL/CMS, <br/> Gena Kukartsev, CERN and FNAL/CMS, <br/>
Gerri Ganis, CERN/SFT,<br/> Gerri Ganis, CERN/SFT,<br/>
Andrei Gheata, CERN/Alice,<br/> Andrei Gheata, CERN/Alice,<br/>
Christian Gumpert, CERN and University Dresden/ATLAS, Math,<br/> Christian Gumpert, CERN and University Dresden/ATLAS, Math,<br/>
Wim Lavrijsen, LBNL, PyRoot,<br/> Wim Lavrijsen, LBNL, PyRoot,<br/>
Sergei Linev, GSI,<br/> Sergei Linev, GSI,<br/>
Lorenzo Moneta, CERN/SFT,<br/> Lorenzo Moneta, CERN/SFT,<br/>
......
...@@ -58,35 +58,37 @@ column in a <tt>TLegend</tt>. ...@@ -58,35 +58,37 @@ column in a <tt>TLegend</tt>.
<pre> <pre>
{ {
int x[10], y[10]; int i; int x[10], y[10]; int i;
for(i = 0; i < 10; i++) {x[i] = 10*i;y[i] = i;} for(i = 0; i &lt; 10; i++) {x[i] = 10*i;y[i] = i;}
TGraph *gr = new TGraph(10,x,y); TGraph *gr = new TGraph(10,x,y);
gr->Draw("AL"); gr->Draw("AL");
TPaveLabel *hello = new TPaveLabel(0.2,0.4,0.8,0.6,"Hello World"); TPaveLabel *hello = new TPaveLabel(0.2,0.4,0.8,0.6,"Hello World");
hello->Draw(); hello->Draw();
} }
</pre> </pre>
<li> </li>
</ul> </ul>
<h4>iOS module</h4> <h4>iOS module</h4>
<ul> <ul>
<li>New module 'ios' was added into graf2d to make it possible to use ROOT's graphics on iOS devices (iPad, iPhone, iPod touch).<br> <li>New module 'ios' was added into graf2d to make it possible to use ROOT's
Among other things, it has the ROOT::iOS::Pad class, which is a version of TPad for iOS (pad with TF2 example below).<br> graphics on iOS devices (iPad, iPhone, iPod touch).
Among other things, it has the ROOT::iOS::Pad class, which is a version
of TPad for iOS (pad with TF2 example below).<br/>
<center> <center>
<img alt="TF2 object in a ROOT::iOS::Pad" title="TF2 object in a ROOT::iOS::Pad (painted with a transparency)" src="iospad.gif"/> <img alt="TF2 object in a ROOT::iOS::Pad" title="TF2 object in a ROOT::iOS::Pad (painted with a transparency)" src="iospad.gif"/>
</center><br> </center><br/>
Two applications, based on this module, were developed for iOS (currently, for iPad only): "Tutorials" and "RootBrowser". Two applications, based on this module, were developed for iOS (currently,
They can be found in $ROOTSYS/test/ios. for iPad only): "Tutorials" and "RootBrowser".
</li><br><br> They can be found in $ROOTSYS/test/ios.
</li>
<li> <li>
<b>"Tutorials" app</b><br><br> <b>"Tutorials" app</b><br/>
Small application with several demos, "iOS version" of the $ROOTSYS/tutorlas/demos.C.<br> Small application with several demos, "iOS version" of the $ROOTSYS/tutorlas/demos.C.<br/>
<center> <center>
<img alt="Tutorials app" title="Tutorials app" src="tutorials.gif"/> <img alt="Tutorials app" title="Tutorials app" src="tutorials.gif"/>
</center> </center><br/>
<br><b>"Tutorials" application:</b><br> <b>"Tutorials" application:</b><br/>
<pre>
<ul> <ul>
<li>supports portrait and landscape orientation</li> <li>supports portrait and landscape orientation</li>
<li>has several demos (can be selected by tapping on table's cells)</li> <li>has several demos (can be selected by tapping on table's cells)</li>
...@@ -95,36 +97,47 @@ column in a <tt>TLegend</tt>. ...@@ -95,36 +97,47 @@ column in a <tt>TLegend</tt>.
<li>has "selection" mode - with single tap user can select different objects inside pad - axes, histograms, pavestats etc.; 3D objects can be rotated.</li> <li>has "selection" mode - with single tap user can select different objects inside pad - axes, histograms, pavestats etc.; 3D objects can be rotated.</li>
<li>has a simple editor to modify pad's parameters : fill color, logarithmic scale, grid, ticks, etc.</li> <li>has a simple editor to modify pad's parameters : fill color, logarithmic scale, grid, ticks, etc.</li>
</ul> </ul>
</pre>
<center> <center>
<img alt="Editor" title="Pad's editor" src="tut_editor.gif"/> <img alt="Editor" title="Pad's editor" src="tut_editor.gif"/>
</center> </center>
</li><br><br> </li>
<li> <li>
<b>"RootBrowser" app</b><br><br> <b>"RootBrowser" app</b><br/>
This application is a simplified version of TBrowser and TCanvas for iOS. User can open ROOT's file (application uses TWebFile) and browse file's contents.<br> <p>This application is a simplified version of TBrowser and TCanvas
RootBrower registeres *.root file extension in a system, so for example, attached root files from a mail client can be opened by RootBrowser.<br><br> for iOS. User can open ROOT's file (application uses TWebFile) and
Application has several views. In a top level view, user can see opened files, open new files, close files (long press gesture on a file icon):<br><br> browse file's contents.</p>
<center> <p>RootBrower registers *.root file extension in a system, so for
<img alt="Top level view" title="Top level view" src="top_level.gif"/> example, attached root files from a mail client can be opened by
</center> RootBrowser.</p>
<br><br> <p>Application has several views. In a top level view, user can see
Tap gesture on a file's icon will open "File contents" view. This view shows objects and nested directories. For objects small previews are<br> opened files, open new files, close files (long press gesture on
generated. Tapping on a directory's icon will open new view with directory's contents. Simple search is supported (in the current TDirectoryFile).<br><br> a file icon):</p>
<center> <img alt="Top level view" width="750" height="461" title="Top level view" src="top_level.gif"/>
<img alt="File contents view" title="File's contents view" src="file_contents.gif"/> <br/>
</center> <p>Tap gesture on a file's icon will open "File contents" view. This
<br><br> view shows objects and nested directories. For objects small
Tap on a object's preview will open detailed view for this object. Using pinch gesture or double tap, you can zoom in/zoom out pad's contents.<br> previews are generated. Tapping on a directory's icon will open
If you have several objects in a file or directory, you can navigate through directory contents by using swipe gesture, scrolling your objects.<br><br> new view with directory's contents. Simple search is supported
<center> (in the current TDirectoryFile).</p>
<img alt="Detail view" title="Detail view" src="detail_view.gif"/> <img alt="File contents view" width="750" height="461" title="File's contents view" src="file_contents.gif"/>
</center> <br/>
<br><br> <p>Tap on a object's preview will open detailed view for this object.
It's possible to modify properties of objects the same way you can do it in TCanvas - RootBrowser has an editor. After you press "Edit" button, you can Using pinch gesture or double tap, you can zoom in/zoom out pad's
pick histogram, axis, frame, pavestats, etc. in a pad and modify its properties in the editor (selected object is highlihgted in a pad). <br>At the moment, there are editors for: contents.</p>
<pre> <p>If you have several objects in a file or directory, you can
navigate through directory contents by using swipe gesture,
scrolling your objects.</p>
<img alt="Detail view" width="750" height="315" title="Detail view" src="detail_view.gif"/>
<br/>
<p>It's possible to modify properties of objects the same way you
can do it in TCanvas - RootBrowser has an editor. After you
press "Edit" button, you can pick histogram, axis, frame,
pavestats, etc. in a pad and modify its properties in the
editor (selected object is highlihgted in a pad).</p>
<p>At the moment, there are editors for:</p>
<ul> <ul>
<li>TH1 objects</li> <li>TH1 objects</li>
<li>TGraph objects</li> <li>TGraph objects</li>
...@@ -133,13 +146,12 @@ column in a <tt>TLegend</tt>. ...@@ -133,13 +146,12 @@ column in a <tt>TLegend</tt>.
<li>Pad object (fill properties, log scales, ticks, grid)</li> <li>Pad object (fill properties, log scales, ticks, grid)</li>
<li>Markers</li> <li>Markers</li>
</ul> </ul>
</pre><br><br> <img alt="Editors" width="750" height="264" title="Editors" src="editors.gif"/>
<center> <br/>
<img alt="Editors" title="Editors" src="editors.gif"/> <p>Using pan gesture along the selected axis, you can change the
</center> axis range - "zoom".</p>
<br><br> <p>Modified object can be saved locally (in application's directory)
Using pan gesture along the selected axis, you can change the axis range - "zoom".<br> and sent as an e-mail attachment ("Save" functionality will be
Modified object can be saved locally (in application's directory) and sent as an e-mail attachment <br> improved soon).</p>
("Save" functionality will be improved soon).
</li> </li>
</ul> </ul>
...@@ -59,7 +59,7 @@ the axis. (fix from beischer@physik.rwth-aachen.de). ...@@ -59,7 +59,7 @@ the axis. (fix from beischer@physik.rwth-aachen.de).
{ {
TMultiGraph* mg = new TMultiGraph; TMultiGraph* mg = new TMultiGraph;
TGraph* g = new TGraph; TGraph* g = new TGraph;
for (int i = 0; i < 100; i++) g->SetPoint(i, 1289420808+i, i+2); for (int i = 0; i &lt; 100; i++) g->SetPoint(i, 1289420808+i, i+2);
mg->Add(g, "P"); mg->Add(g, "P");
mg->Draw("AP"); mg->Draw("AP");
mg->GetXaxis()->SetTimeDisplay(1); mg->GetXaxis()->SetTimeDisplay(1);
...@@ -112,14 +112,6 @@ jags go away. ...@@ -112,14 +112,6 @@ jags go away.
</li> </li>
</ul> </ul>
<h4>TGraph2DPainter</h4>
<ul>
<li>
Make sure the line width and line style used to draw the contours with the
option CONT5 are the TGraph2D ones.
</li>
</ul>
<h4>TPainter3dAlgorithms</h4> <h4>TPainter3dAlgorithms</h4>
<ul> <ul>
<li>Protection against possible NaN added. The following macro produced wrong <li>Protection against possible NaN added. The following macro produced wrong
...@@ -143,7 +135,7 @@ X and Y vectors. The following macro generated a wrong output (tmp.C). ...@@ -143,7 +135,7 @@ X and Y vectors. The following macro generated a wrong output (tmp.C).
double offset=55.0; double offset=55.0;
TCanvas* myC = new TCanvas("myC","myC",600,400); TCanvas* myC = new TCanvas("myC","myC",600,400);
TGraph* gr=new TGraph(); TGraph* gr=new TGraph();
for(int i=0;i<1000;i++){ for (int i=0; i &lt; 1000; i++) {
double point_x = 3.0+((double) i)*1e-7; double point_x = 3.0+((double) i)*1e-7;
double point_y = offset+((double) i)*1e-8; double point_y = offset+((double) i)*1e-8;
gr->SetPoint(i,point_x,point_y); gr->SetPoint(i,point_x,point_y);
...@@ -173,4 +165,4 @@ The constructor from a file is now able to handle delimiters. Like in the .csv f ...@@ -173,4 +165,4 @@ The constructor from a file is now able to handle delimiters. Like in the .csv f
The constructor from a file is now able to handle delimiters. Like in the .csv files. The constructor from a file is now able to handle delimiters. Like in the .csv files.
(Implementation done by Mathieu Trocme) (Implementation done by Mathieu Trocme)
</li> </li>
</ul> </ul>
\ No newline at end of file
...@@ -87,9 +87,9 @@ The value of gDirectory and gFile are now all accessed via a static function of ...@@ -87,9 +87,9 @@ The value of gDirectory and gFile are now all accessed via a static function of
<h4>TMemFile</h4> <h4>TMemFile</h4>
Introduce <tt>TMemFile</tt> and update <tt>TFileMerger</tt> to support incremental merges. Introduce <tt>TMemFile</tt> and update <tt>TFileMerger</tt> to support incremental merges.
<p/> <p/>
Add new tutorials ( <tt>net/treeClient.C</tt> + <tt>net/fastMergeServer.C</tt> ) Add new tutorials (<tt>net/treeClient.C</tt> + <tt>net/fastMergeServer.C</tt>)
demonstrating how a <tt>TMemFile</tt> can be used to do parallel merge demonstrating how a <tt>TMemFile</tt> can be used to do parallel merge
from many client. ( <tt>TMemFile</tt> still needs to be better integrated from many clients. (<tt>TMemFile</tt> still needs to be better integrated
with <tt>TMessage</tt> and <tt>TSocket</tt>). with <tt>TMessage</tt> and <tt>TSocket</tt>).
<p/> <p/>
The new <tt>TMemFile</tt> class support the <tt>TFile</tt> interface but only store The new <tt>TMemFile</tt> class support the <tt>TFile</tt> interface but only store
...@@ -220,7 +220,7 @@ the signature/type <tt>ROOT::ResetAfterMergeFunc_t</tt>: ...@@ -220,7 +220,7 @@ the signature/type <tt>ROOT::ResetAfterMergeFunc_t</tt>:
void (*)(void *thisobj, TFileMergeInfo*); void (*)(void *thisobj, TFileMergeInfo*);
</pre> </pre>
<tt>ResetAfterMerge</tt> functions were added to the following classes: <tt>ResetAfterMerge</tt> functions were added to the following classes:
<tt>TDirectoryFile</tt>, <tt>TMemFile</tt>, <tt>TTree</tt>, <tt>TChain</tt>, <tt>TBranch</tt>, <tt>TBranhcElement</tt>, <tt>TDirectoryFile</tt>, <tt>TMemFile</tt>, <tt>TTree</tt>, <tt>TChain</tt>, <tt>TBranch</tt>, <tt>TBranchElement</tt>,
<tt>TBranchClones</tt>, <tt>TBranchObject</tt> and <tt>TBranchRef</tt>. <tt>TBranchClones</tt>, <tt>TBranchObject</tt> and <tt>TBranchRef</tt>.
</li> </li>
<li>Avoid leaking the inner object in a container like <tt>vector&lt;vector&lt;MyClass*&gt; &gt; </tt> <li>Avoid leaking the inner object in a container like <tt>vector&lt;vector&lt;MyClass*&gt; &gt; </tt>
......
...@@ -34,11 +34,3 @@ ...@@ -34,11 +34,3 @@
paper (N.I.M. 221 (1984) 437) are now used. The obtained negative likelihood ratio value from the fit and multiplied paper (N.I.M. 221 (1984) 437) are now used. The obtained negative likelihood ratio value from the fit and multiplied
by a factor 2 is now asymptotically distributed as a chi square.</li> by a factor 2 is now asymptotically distributed as a chi square.</li>
</ul> </ul>
</ul>
...@@ -4,8 +4,12 @@ ...@@ -4,8 +4,12 @@
<h3>Networking Libraries</h3> <h3>Networking Libraries</h3>
<h4>New TSSLSocket class</h4> <h4>New TSSLSocket class</h4>
<p>The new TSSLSocket class wraps a TSocket with SSL encryption. This class The new TSSLSocket class wraps a TSocket with SSL encryption. This class
is used to provide support for reading TWebFiles over https.</p> is used to provide support for reading TWebFiles over https.
<h4>New TUDPSocket class</h4> <h4>New TUDPSocket class</h4>
<p>The new TUDPSocket uses UDP as protocol where TSocket uses TCP. This class The new TUDPSocket uses UDP as protocol where TSocket uses TCP. This class
can be used to talk to UDP servers.</p> can be used to talk to UDP servers.
<h4>XROOTD</h4>
Starting with this version (5.32/00) Xrootd is no longer distributed with ROOT. The package is still needed to build the modules 'netx', 'proofx' and 'proofd' and must be provided as external. Xrootd can be downloaded from the main web site and its installation is straightforward. A script to automatize the installation process is provided at build/unix/installxrootd.sh ; scripts to set-up the environment at bin/setxrd.sh and bin/setxrd.csh . <span style="font-weight: bold;">Note that the Xrootd team has dropped support for Windows</span>, so the Xrootd-related components of ROOT will only be built on Unices (Linux, Solaris, MacOsX). See also <a href="http://root.cern.ch/drupal/content/installing-xrootd">this page</a>.
...@@ -2,3 +2,90 @@ ...@@ -2,3 +2,90 @@
<hr/> <hr/>
<a name="proof"></a> <a name="proof"></a>
<h3>PROOF System</h3> <h3>PROOF System</h3>
<span style="font-style: italic;">NB: Starting with version 5.32/00, Xrootd
is not distributed any longer with ROOT but has become an external package.
If not avaibable the PROOF modules 'proofx' and 'proofd' will not be built.
The PROOF core modules, however, are built. Namely, PROOF-Lite will be
available even when Xrootd is not.</span>
<h4>New functionality</h4>
<ul>
<li>Creating PAR packages from ROOT data files: it is now possible to
use TFile::MakeProject to create a PAR file to read the file. Details in
<a href="http://root.cern.ch/drupal/content/creating-par-package-read-given-root-file">here</a>.</li>
<li>Add support for backend-dependent record formatting of PROOF monitoring.
This is achieved by introducing a new layer, described by the abstract
interface TProofMonSender, with the record format defined in the backend
implemenation (currently TProofMonSenderML, for MonaLisa, and
TProofMonSenderSQL, for SQL backends). Currently three types of records
are sent: 'summary' (derived from what was currently posted), 'dataset',
with entries per dataset processed in the query, and 'files', with
entries per file processed in the query. In SQL terms, each of this
records corresponds to a different table. Sending of any of the three
records can be toggled independently. See also the
<a href="http://root.cern.ch/drupal/content/enabling-query-monitoring">web
pages dedicated to monitoring</a>.</li>
<li>In TProofMgr, add 'ping' functionality to test in non-blocking way if
a PROOF service is listening at a given port of a given host.</li></ul>
<h4>Improvements</h4>
<ul>
<li>In PROOF-Bench, file generation, add the possibility to change
only the generating function, passed as TMacro. Add also check on the
free space on the device and skip file generation if less than 10% or
less than 1 GB.</li>
<li>Record in TStatus also the max memory usage on the master and printed
via TStatus::Print; this allow a quick visualisation of the overall
memory usage at the end of the query.</li>
<li>Import version 0.9.6 of afdsmgrd</li>
<li>Make sure that the name(s) of the processed dataset(s) are registered
in the TFileInfo objects being processed, so that it can be used for
monitoring.</li>
<li>In XrdProofd, add possibility to skip the checks for the data
directories during session startup, as they may significantly slowdown
the startup process is the medium is busy. In such a case, admins
are responsible to create the directories in advance; the session
releated part fo the path is created by the session once up.</li>
<li>In XrdProofd, move the check for the username after authentication.
This is because authentication may run some credentials-to-user mapping
which can modify the requested username. This way we really check the
final username and not the one requested by the client, which may even
not exist on the machines. Side modification: when the mapping function
returns more usernames, the username specified by the client is used to
help choosing the effective username among the available choices; if not
match is found the handshake does any longer fail, the first mapped
username is chosen instead.</li>
<li>In XrdProofd, allow 'xpd.allowedgroups' to control also PROOF
groups, not only UNIX ones.</li><li>In XrdProofd, simplify error
messages in case of login failure because of non-authorization.</li>
<li>Remove hardcoded additions of dirname(COMPILER) and of
'/bin:/usr/bin:/usr/local/bin' in front of PATH. These uncontrolled
additions could hide specific settings in PATH and be the source of
weird problems appearing in PROOF only.</li>
<li>Add more flexibility to the definition of the library path seen by
proofserv. So far to avoid ambiguites in some cases, $ROOTSYS/lib was
removed and the one of the ROOT version chosen was added later on in
front, which proved to be to aggressive in some cases.</li>
<li>All changes (and fixes) needed to build against the version of Xrootd,
now always installed as external.</li></ul>
<h4>Fixes</h4>
<ul>
<li>Fix GetSessionLogs in PROOF-Lite</li>
<li>Restore correct parsing of "workers=N" in PROOF-Lite</li>
<li>In Proof-Bench, make sure that it can be run from any directory
and no matter how ROOT was installed</li>
<li>Fix issue in TProofPlayer::HandleHistogram preventing proper
histogram cleaning right after merging when using TH1::Add; histogram
were still destroyed at the end of the query, but there was no
memory advantage in TH1::Add wrt TH1::Merge.</li>
<li>Make sure that the performance tree is removed from the output
list when saved to the output file. Solves a segv at quit.</li>
<li>Decouple from registered TChains in already TProof::Close(); allows
to avoid possible crash at exit ('.q') occuring after the recent
revision of the socket cleanup policy.</li>
<li>In XrdProofd, fix a few issues with option 'xpd.multiuser'.</li>
<li>In TXSocket::ProcessUnsolicitedMsg, fix an issue preventig server
messages to be displayed during setup, i.e. when the XrdClientConn
instance is not yet defined.</li>
<li>In XrdProofd, fix the behavior of the 'xpd.allowedusers' and
'xpd.allowedgroups' directives
(see the <a href="http://root.cern.ch/drupal/content/controlling-access">dedicated web entry</a>).</li>
</ul>
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
transparent to end-use cases transparent to end-use cases
<ul> <ul>
<li> New implementation of RooFit data types. The implentation of data stored in RooDataSet and RooDataHist <li><p> New implementation of RooFit data types. The implentation of data stored in RooDataSet and RooDataHist
was historically handled by ROOT TTrees (though class RooTreeDataStore). The default storage type was historically handled by ROOT TTrees (though class RooTreeDataStore). The default storage type
has now been changed to class RooVectorDataStore which stores the information in STL arrays. Existing has now been changed to class RooVectorDataStore which stores the information in STL arrays. Existing
datasets based on trees can be read in transparently, and are converted to vector form in the datasets based on trees can be read in transparently, and are converted to vector form in the
persistent-to-transient conversion (the datafile is not modified in this operation) persistent-to-transient conversion (the datafile is not modified in this operation)
</p><p>
The vector store has two important advantages: 1) faster data access (raw data access times are 70 times The vector store has two important advantages: 1) faster data access (raw data access times are 70 times
faster than for TTrees), 2) ability to rewrite columns on the fly. The first advantage is important faster than for TTrees), 2) ability to rewrite columns on the fly. The first advantage is important
for the existing constant-term precalculation optimization in roofit likelihoods as these are now for the existing constant-term precalculation optimization in roofit likelihoods as these are now
...@@ -23,14 +23,14 @@ ...@@ -23,14 +23,14 @@
term optimization inside likelihoods results in a larger speed increase. This is particulatly noticable in pdfs with term optimization inside likelihoods results in a larger speed increase. This is particulatly noticable in pdfs with
many constant expressions from pdfs that were moderately fast to begin with (e.g. RooHistPdf). many constant expressions from pdfs that were moderately fast to begin with (e.g. RooHistPdf).
The second advantages allows new types of algorithmic likelihood optimization in RooFit detailed below. The second advantages allows new types of algorithmic likelihood optimization in RooFit detailed below.
</p></li>
<li>New algorithmic optimization in the caching of pdfs. So far - in the likelihood - two classes of <li><p>New algorithmic optimization in the caching of pdfs. So far - in the likelihood - two classes of
objects are identified: those that change with every event (i.e. the pdf) and those that change objects are identified: those that change with every event (i.e. the pdf) and those that change
only with the paramaters (typically pdf normalization integrals). Pdfs are always recalculated only with the paramaters (typically pdf normalization integrals). Pdfs are always recalculated
for every event, whereas integrals are only evaluated when needed. The exception to the first type are pdfs for every event, whereas integrals are only evaluated when needed. The exception to the first type are pdfs
that only depend on constant parameters (or no parameters) - these are identified at the beginning, and precalculated once that only depend on constant parameters (or no parameters) - these are identified at the beginning, and precalculated once
to avoid recalculating an expression with the same outcome for every iteration of the likelihood calculation to avoid recalculating an expression with the same outcome for every iteration of the likelihood calculation
</p><p>
For composite pdfs a further optimization has been included: for a M(x,a,b) = f*F(x,a)+(1-f)G(x,b) For composite pdfs a further optimization has been included: for a M(x,a,b) = f*F(x,a)+(1-f)G(x,b)
it is e.g. not needed to recalculate G(x,b) if only parameter a has changed w.r.t to the previous likelihood it is e.g. not needed to recalculate G(x,b) if only parameter a has changed w.r.t to the previous likelihood
calculation. This optimization is now implemented by extending the value caching orignally designed calculation. This optimization is now implemented by extending the value caching orignally designed
...@@ -40,23 +40,23 @@ ...@@ -40,23 +40,23 @@
likelihood evaluations are executed when MINUIT calculates numerical likelihood derivatives which vary likelihood evaluations are executed when MINUIT calculates numerical likelihood derivatives which vary
one paramater at a time and the speedup is potentially larger. In models with few free parameters the one paramater at a time and the speedup is potentially larger. In models with few free parameters the
effect will be smaller. effect will be smaller.
</p><p>
The new per-component caching strategy is enabled by default for all pdfs that are a component of The new per-component caching strategy is enabled by default for all pdfs that are a component of
a RooAddPdf or a RooRealSumPdf, unless that component is a RooProdPdf or a RooProduct, in that a RooAddPdf or a RooRealSumPdf, unless that component is a RooProdPdf or a RooProduct, in that
case the components of the product are cached instead of the product itself. You can disable this case the components of the product are cached instead of the product itself. You can disable this
new optimization by adding Optimize(1) to the RooAbsPdf::fitTo() command line (0 = no caching, new optimization by adding Optimize(1) to the RooAbsPdf::fitTo() command line (0 = no caching,
1 = cache constant terms only, 2 = cache also variable terms according to above mentioned strategy (DEFAULT)) 1 = cache constant terms only, 2 = cache also variable terms according to above mentioned strategy (DEFAULT))
</p><p>
It is also possible to tune this 'cache-and-track' optimization to perform a more fine-grained caching It is also possible to tune this 'cache-and-track' optimization to perform a more fine-grained caching
of components than Optimize(2) implements: to do so, call arg->setAttribute("CacheAndTrack") on each of components than Optimize(2) implements: to do so, call arg->setAttribute("CacheAndTrack") on each
pdf component that you'd like to be cache-and-tracked individually. pdf component that you'd like to be cache-and-tracked individually.
</p></li>
<li>New pdf/data attach mechanism in likelihood objects (RooAbsOptTestStatistic). The new mechanism only <li>New pdf/data attach mechanism in likelihood objects (RooAbsOptTestStatistic). The new mechanism only
reattaches the dataset branch buffers and not the RooRealVars representing the data. This new designs reattaches the dataset branch buffers and not the RooRealVars representing the data. This new designs
allows for a much faster RooAbsTestStatistic::setData() implementation, which changes the dataset in allows for a much faster RooAbsTestStatistic::setData() implementation, which changes the dataset in
an existing likelihood object. This will speed up RooStats tools based on 'simple' likelihood models an existing likelihood object. This will speed up RooStats tools based on 'simple' likelihood models
substantially. substantially.
</li>
<li>Automatic detections of 'binned' pdfs and automatic generation of binned data in generate(). RooFit will <li>Automatic detections of 'binned' pdfs and automatic generation of binned data in generate(). RooFit will
now automatically generate binned pdf shapes. Binned pdfs shapes are fundamentally RooHistPdf and RooHistFuncs now automatically generate binned pdf shapes. Binned pdfs shapes are fundamentally RooHistPdf and RooHistFuncs
(with interpolation order set to zero). Products and sums of exclusively binned shapes are also recognized (with interpolation order set to zero). Products and sums of exclusively binned shapes are also recognized
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
calculations (for nbin smaller than nevent). The optimization is also exact: the likelihood of a binned calculations (for nbin smaller than nevent). The optimization is also exact: the likelihood of a binned
data using a binned pdf is identical to that of an unbinned dataset with a binned pdf. Nevertheless you can data using a binned pdf is identical to that of an unbinned dataset with a binned pdf. Nevertheless you can
switch off this feature by passing AutoBinned(kFALSE) to RooAbsPdf::generate(). switch off this feature by passing AutoBinned(kFALSE) to RooAbsPdf::generate().
</li>
<li>Mixed binned/unbinned generation from simultaneous pdf. For a RooSimultaneous consisting of exclusively <li>Mixed binned/unbinned generation from simultaneous pdf. For a RooSimultaneous consisting of exclusively
extended terms it is now possible to generate a mixed binned/unbinned datasets. Components defined extended terms it is now possible to generate a mixed binned/unbinned datasets. Components defined
by a binned pdf at the top level are automatically generated binned (unless AutoBinned(kFALSE) is set) by a binned pdf at the top level are automatically generated binned (unless AutoBinned(kFALSE) is set)
...@@ -76,17 +76,18 @@ ...@@ -76,17 +76,18 @@
datasets made by generate are repesented as weighted unbinned datasets (of type RooDataSet) rather datasets made by generate are repesented as weighted unbinned datasets (of type RooDataSet) rather
than binned datasets of type RooDataHist so that mixed binned/unbinned data is always represented than binned datasets of type RooDataHist so that mixed binned/unbinned data is always represented
through a uniform interface. through a uniform interface.
</li>
<li>Fix in the optimization strategy of likelihoods constructed from simultaneous pdf. In the parameter <li>Fix in the optimization strategy of likelihoods constructed from simultaneous pdf. In the parameter
dependency analysis of the components of a simultaneous pdfs parameters originating from 'irrelevant' dependency analysis of the components of a simultaneous pdfs parameters originating from 'irrelevant'
constraint terms (i.e. those that don't relate to any of the parameters of that likelihood component) were constraint terms (i.e. those that don't relate to any of the parameters of that likelihood component) were
not ignored, which could result in a substantial loss of computational efficiency as likelihood not ignored, which could result in a substantial loss of computational efficiency as likelihood
terms were erroneously recalculated even if no relevant parameters was changed. terms were erroneously recalculated even if no relevant parameters was changed.
</li>
<li>General performance tuning of RooFit to reduce computational overhead. Extensive profiling of <li>General performance tuning of RooFit to reduce computational overhead. Extensive profiling of
CPU times in call graphas and and analysis heap memory use have been performed and many small CPU times in call graphas and and analysis heap memory use have been performed and many small
changes have been made to make the code more efficient and use less memory. changes have been made to make the code more efficient and use less memory.
<ul> </li>
</ul>
<a name="roostats"></a> <a name="roostats"></a>
<h3>RooStats Package</h3> <h3>RooStats Package</h3>
...@@ -97,7 +98,7 @@ ...@@ -97,7 +98,7 @@
G. Cowan, K. Cranmer, E. Gross and O. Vitells, <i>Asymptotic formulae for likelihood- based tests of new physics</i>, G. Cowan, K. Cranmer, E. Gross and O. Vitells, <i>Asymptotic formulae for likelihood- based tests of new physics</i>,
Eur. Phys. J., C71 (1), 2011.</li> Eur. Phys. J., C71 (1), 2011.</li>
<li> The class computes the p-value for the null and also for the alternate using the Asimov data set. In this <li> The class computes the p-value for the null and also for the alternate using the Asimov data set. In this
differs form the ProfileLikelihoodCalculator which computes only the p-values for the null hypothesis. differs form the ProfileLikelihoodCalculator which computes only the p-values for the null hypothesis.</li>
<li>The Asimov data set is generated with the utility function <tt>AsymptoticCalculator::MakeAsimovData</tt> and then <li>The Asimov data set is generated with the utility function <tt>AsymptoticCalculator::MakeAsimovData</tt> and then
it is used to evaluate the likelihood. it is used to evaluate the likelihood.
</li> </li>
...@@ -137,11 +138,7 @@ calculator type. </li> ...@@ -137,11 +138,7 @@ calculator type. </li>
different minimizer, via <tt>ProfileLikelihoodTestStat::SetMinimizer</tt>. The print level of minimization can also be different minimizer, via <tt>ProfileLikelihoodTestStat::SetMinimizer</tt>. The print level of minimization can also be
controlled via <tt>ProfileLikelihoodTestStat::SetPrintLevel</tt>. Activate also the RooFit cache optimizations when controlled via <tt>ProfileLikelihoodTestStat::SetPrintLevel</tt>. Activate also the RooFit cache optimizations when
evaluating the NLL </li> evaluating the NLL </li>
<li>The same optimizations are applied also to the <tt>RatioOfProfilesLikelihood</tt> test statistic</li>
<li>Fix a bug in reusing the NLL object in the SimpleLikelihoodCalculator. This makes now the evaluation of this test <li>Fix a bug in reusing the NLL object in the SimpleLikelihoodCalculator. This makes now the evaluation of this test
statistics much faster. </li> statistics much faster. </li>
</ul> </ul>
...@@ -15,12 +15,14 @@ End_Html ...@@ -15,12 +15,14 @@ End_Html
<pre> <pre>
tree->Draw(">> elist", "x > 0", "entrylistarray"); tree->Draw(">> elist", "x > 0", "entrylistarray");
</pre> </pre>
</li>
<li> <b>To use a list to select entries and subentries:</b> <li> <b>To use a list to select entries and subentries:</b>
<pre> <pre>
tree->SetEntryList(elist); tree->SetEntryList(elist);
tree->Draw("y"); tree->Draw("y");
tree->Draw("z"); tree->Draw("z");
</pre> </pre>
</li>
</ol> </ol>
Its main purpose is to improve the performance of a code that needs to apply complex cuts on TTree::Draw multiple times. After the first call above to TTree::Draw, a TEntryListArray is created and filled with the entries and the indices of the arrays that satisfied the selection cut (x > 0). In the subsequent calls to TTree::Draw, only these entries / subentries are used to fill histograms. Its main purpose is to improve the performance of a code that needs to apply complex cuts on TTree::Draw multiple times. After the first call above to TTree::Draw, a TEntryListArray is created and filled with the entries and the indices of the arrays that satisfied the selection cut (x > 0). In the subsequent calls to TTree::Draw, only these entries / subentries are used to fill histograms.
...@@ -31,27 +33,27 @@ The class derives from TEntryList and can be used basically in the same way. Thi ...@@ -31,27 +33,27 @@ The class derives from TEntryList and can be used basically in the same way. Thi
<ol> <ol>
<li> The ones that only hold subentries <li> The ones that only hold subentries
<ul><li> fEntry is set to the entry# for which the subentries correspond <ul><li>fEntry is set to the entry# for which the subentries correspond</li>
<li> fSubLists must be 0</ul> <li> fSubLists must be 0</li></ul></li>
<li> The ones that hold entries and eventually lists with subentries in fSubLists. <li> The ones that hold entries and eventually lists with subentries in fSubLists.
<ul><li> fEntry = -1 for those <ul><li> fEntry = -1 for those</li>
<li> If there are no sublists for a given entry, all the subentries will be used in the selection </ul> <li>If there are no sublists for a given entry, all the subentries will be used in the selection</li></ul></li>
</ol> </ol>
<h5> Additions with respect to TEntryList </h5> <h5> Additions with respect to TEntryList </h5>
<ol><li> Data members: <ol><li> Data members:
<ul><li> fSubLists: a container to hold the sublists <ul><li> fSubLists: a container to hold the sublists</li>
<li> fEntry: the entry number if the list is used to hold subentries <li> fEntry: the entry number if the list is used to hold subentries</li>
<li> fLastSubListQueried and fSubListIter: a pointer to the last sublist queried and an iterator to resume the loop from the last sublist queried (to speed up selection and insertion in TTree::Draw) </ul> <li> fLastSubListQueried and fSubListIter: a pointer to the last sublist queried and an iterator to resume the loop from the last sublist queried (to speed up selection and insertion in TTree::Draw)</li></ul></li>
<li> Public methods: <li> Public methods:
<ul><li> Contains, Enter and Remove with subentry as argument <ul><li> Contains, Enter and Remove with subentry as argument</li>
<li> GetSubListForEntry: to return the sublist corresponding to the given entry </ul> <li>GetSubListForEntry: to return the sublist corresponding to the given entry</li></ul></li>
<li> Protected methods: <li> Protected methods:
<ul><li> AddEntriesAndSubLists: called by Add when adding two TEntryList arrays with sublists <ul><li>AddEntriesAndSubLists: called by Add when adding two TEntryList arrays with sublists</li>
<li> ConvertToTEntryListArray: convert TEntryList to TEntryListArray <li>ConvertToTEntryListArray: convert TEntryList to TEntryListArray</li>
<li> RemoveSubList: to remove the given sublist <li>RemoveSubList: to remove the given sublist</li>
<li> RemoveSubListForEntry: to remove the sublist corresponding to the given entry <li>RemoveSubListForEntry: to remove the sublist corresponding to the given entry</li>
<li> SetEntry: to get / set a sublist for the given entry </ul> <li>SetEntry: to get / set a sublist for the given entry</li></ul></li>
</ol> </ol>
...@@ -98,4 +100,3 @@ to contains an embedded object (and this data member has been removed). ...@@ -98,4 +100,3 @@ to contains an embedded object (and this data member has been removed).
</li> </li>
</ul> </ul>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment