Index: web/tags/web-00-00-21/duff.css =================================================================== --- web/tags/web-00-00-21/duff.css (revision 0) +++ web/tags/web-00-00-21/duff.css (revision 1932) @@ -0,0 +1,81 @@ +body { font-family:sans-serif; color:#333; background:white; padding-bottom:1em; } + +.news { border:1px dashed #dda; background:#ffe; padding:0.4em; margin:1em 0; } +.news > h4 { margin:0; } +.news > p.whenposted { font-size:small; margin-top:0; padding:0; } +.news > p { margin-bottom:0; } + +img { border:0; } + +a { text-decoration:none; color:#933; } +a:hover { color:#639; } + +li { padding:0.2em 0; } +ol.nowrap li, ul.nowrap li { white-space:nowrap; } +.hspacer { width:100%; } +p, li { max-width:50em; } + +body hr { border:0; background:#cca; } + +#hepforge-content { padding:1em; padding-top:0; } +table.tickets td.owner { white-space:nowrap; } + +/* Downloads manager */ +.hf-download .download-list table { border-collapse:collapse; width:100%; border:1px grey solid; margin-bottom:2em; } +.hf-download .download-list table:last-child { margin-bottom:1em; } +.hf-download .download-list table tr:first-child { background:grey; } +.hf-download .download-list table tr.highestversion { background:lightpink; } +.hf-download .download-list table .oddeven0 { background:white; } +.hf-download .download-list table .oddeven1 { background:#cce; } +.hf-download .download-list table th { padding:0.3em; } +.hf-download .download-list table td { padding:0.3em; } +.hf-download .download-list table td:first-child { font-weight:bolder; } +.hf-download li.withfiles { font-weight:bold; } +.hf-download li.nofiles { font-weight:normal; } + +/* Forms */ +#cedarcontent form .formfielddesc { color:saddlebrown } +#cedarcontent form table { border-collapse:collapse } +#cedarcontent form table td { padding:0.2em 0.5em; } +#cedarcontent form table td { vertical-align:top } +#cedarcontent form input { padding:0.3em } +#cedarcontent form input, #cedarcontent form textarea { border:1px solid grey; border-left:1px solid lightgrey; border-top:1px solid lightgrey; -moz-border-radius:0.1em; border-radius:0.1em } +#cedarcontent form input[type=text] { background:white } +#cedarcontent form input[type=checkbox] { background:white } +#cedarcontent form textarea { background:white } +#cedarcontent form input[type=text]:focus, #cedarcontent form textarea:focus { background:linen } +#cedarcontent form input[type=submit] { background:#cc9; color:saddlebrown } +#cedarcontent form input[type=submit] { font-weight:bolder; font-size:90%; cursor:pointer } +#cedarcontent form input[type=submit]:hover { color:white } + +/* Source highlighting */ +div.highlight { + background:#eef; + border:#aab 1px solid; + padding:0.75em; + margin-right:1em; + -moz-border-radius:0.2em; + border-radius:0.2em; +} + +/* Generally useful things */ +code, kbd, tt { font-family:monospace,courier,fixed; font-size:smaller; } +code.display, kbd.display { display:block; white-space:nowrap; padding:0.2em; background:#f9f9dd; border:1px dashed #ddb; margin:1.0em; -moz-border-radius:0.2em; } +code.pre, kbd.pre { display:block; white-space:pre; padding:0.2em; background:#f9f9dd; border:1px dashed #ddb; margin:1.0em; -moz-border-radius:0.2em; } +.generic { font-style:oblique; } +.generic:before { content:"<"; } +.generic:after { content:">"; } +code.key, kbd.key { background:#eec; border:1px solid #cca; color:#442; margin:0em 0.1em; padding:0.1em 0.3em; -moz-border-radius:0.2em; } +code { color:#663; } + +.todo, .important, .warning, .note { padding:1em; border:dashed grey 1px; margin-left:0.2em; margin-right:0.5em; } +.todo, .todo:before { content:"TODO: "; background:#fc9; } +.important, .important:before { content:"IMPORTANT: "; background:#fcc; } +.warning, .warning:before { content:"WARNING: "; background:#f97; } +.note, .note:before { content:"NB: "; background:#ffc; } + +.subdued { color:#977; font-size:90%; } + +@media print { + .noprint {display:none} +} Index: web/tags/web-00-00-21/makefile =================================================================== --- web/tags/web-00-00-21/makefile (revision 0) +++ web/tags/web-00-00-21/makefile (revision 1932) @@ -0,0 +1,78 @@ + + + +VPATH += $(SRCDIR) +VPATH += $(OBJDIR) + +.SUFFIXES: .ihtml .html + +SRCDIR = . +OBJDIR = ../public_html + + +SITE = $(OBJDIR)/index.htm $(OBJDIR)/documentation.htm $(OBJDIR)/downloads.htm \ + $(OBJDIR)/links.htm $(OBJDIR)/developerguide.htm $(OBJDIR)/news.htm \ + $(OBJDIR)/nightlies.htm $(OBJDIR)/filelist.php + + +HEADERS = $(SRCDIR)/applcolours.ihtml $(SRCDIR)/applpre.ihtml $(SRCDIR)/applpost.ihtml \ + $(SRCDIR)/applsidebar.ihtml $(SRCDIR)/applbar.ihtml $(SRCDIR)/appllogo.ihtml \ + $(SRCDIR)/grids.ihtml + + +all: date $(SITE) $(OBJDIR)/.d figs style appltest nightlies + + +%/.d: + mkdir -p $(@D) + touch $@ + + +$(SRCDIR)/grids.ihtml : $(SRCDIR)/gprint + $(SRCDIR)/gprint > $@ + +$(SRCDIR)/news.ihtml : $(SRCDIR)/gnews $(SRCDIR)/news.dat + $(SRCDIR)/gnews > $@ + + +$(OBJDIR)/%.htm : $(SRCDIR)/%.ihtml $(HEADERS) $(OBJDIR)/.d + cpp -I. $< > /tmp/_%.html + cat /tmp/_%.html | grep -v "\# " | grep -v "\#define" | sed 's|[[:space:]].tgz|.tgz|g' > $@ + +$(OBJDIR)/%.php : $(SRCDIR)/%.php + cp $< $@ + +figs: $(OBJDIR)/.d $(OBJDIR)/figs/.d $(SRCDIR)/figs/*.jpg $(SRCDIR)/figs/*.png $(SRCDIR)/figs/*.ico + cp $(SRCDIR)/figs/* $(OBJDIR)/figs + +appltest: $(SRCDIR)/appltest/* + cp -r $(SRCDIR)/appltest $(OBJDIR)/ + +nightlies: $(SRCDIR)/nightlies/* + cp -r $(SRCDIR)/nightlies $(OBJDIR)/ + +style : $(SRCDIR)/style.css + cp $(SRCDIR)/style.css $(OBJDIR)/style.css + +archive: + tar -czf appldoc.tgz makefile *.ihtml figs style.css + +clean: + rm -rf $(OBJDIR)/*.html $(OBJDIR)/*.{htm,css} ./*~ + +date: + date > $(SRCDIR)/date.txt + + + + +$(SRCDIR)/gprint : $(SRCDIR)/gprint.cxx $(SRCDIR)/grids.h + g++ $(SRCDIR)/gprint.cxx -o $@ + +$(SRCDIR)/gnews : $(SRCDIR)/gnews.cxx + g++ $(SRCDIR)/gnews.cxx -o $@ + + +install: all + scp -P 222 -r ../public_html/*.{htm,php} date.txt appltest nightlies login.hepforge.org:applgrid/public_html + scp -P 222 ../public_html/figs/applicon.{png,ico} login.hepforge.org:applgrid/public_html/figs Index: web/tags/web-00-00-21/applpost.ihtml =================================================================== --- web/tags/web-00-00-21/applpost.ihtml (revision 0) +++ web/tags/web-00-00-21/applpost.ihtml (revision 1932) @@ -0,0 +1,22 @@ + + + + + + + +
+ +Mark Sutton, Pavel Starovoitov, Tancredi Carli, Claire Gwenlan and Gavin Salam + - send mail to the authors: +applgrid @ projects.hepforge.org: +Last updated +#include "date.txt" + + + + + + + Index: web/tags/web-00-00-21/applcolours.ihtml =================================================================== --- web/tags/web-00-00-21/applcolours.ihtml (revision 0) +++ web/tags/web-00-00-21/applcolours.ihtml (revision 1932) @@ -0,0 +1,19 @@ + +#define BGCOLOUR "#eeeecc" +#define BGCOLOUR1 "#ffffee" +#define BGCOLOUR2 "#ffffdd" + +#define BARCOLOUR "#666644" +#define BARFONTCOLOUR "#ffffff" + + +#define FONTCOLOUR1 "#553322" +#define FONTCOLOUR2 "#332211" +#define FONTCOLOUR3 "#110000" + +#define FONTLINKCOLOUR "#cc4444" + +#define TABCOLOUR0 "#cccc99" +#define TABCOLOUR1 "#eeeedd" +#define TABCOLOUR2 "#ffffff" + Index: web/tags/web-00-00-21/applpre.ihtml =================================================================== --- web/tags/web-00-00-21/applpre.ihtml (revision 0) +++ web/tags/web-00-00-21/applpre.ihtml (revision 1932) @@ -0,0 +1,41 @@ + +#include "applcolours.ihtml" + + + + + + + + + + + + + + + + + + + + +#include "appllogo.ihtml" +#include "applbar.ihtml" +#include "applsidebar.ihtml" + + + + + + + + + +" << std::endl; + stream << "" << std::endl; + stream << "" + << "\n" << std::endl; + stream << "" << std::endl; + + } + + bool operator<( const row& r) const { return m_datei=( const row& r) const { return m_datei>=r.m_datei; } + bool operator>( const row& r) const { return m_datei>r.m_datei; } + +private: + + + /// some basic table entry printout routines for an easier life + + /// add a table column + std::string tabcol(const std::string& s) { + // std::cout << " \n"; + return _stream; + } + + +private: + + + int m_datei; + + std::string m_date; + std::string m_text; + +}; + + + + + + + + +int print( std::vector& rows, std::ostream& stream=std::cout ) { + + /// read all the rows from the data base + + stream << "\n\n"; + stream << "#include \"applpre.ihtml\"\n\n"; + stream << "New developments and releases\n"; + stream << "

\n\n"; + + stream << "\n\n"; + + // stream << "Here any new developments or releases are briefly summarised

\n"; + + stream << "

+ Index: web/tags/web-00-00-21/developerguide.ihtml =================================================================== --- web/tags/web-00-00-21/developerguide.ihtml (revision 0) +++ web/tags/web-00-00-21/developerguide.ihtml (revision 1932) @@ -0,0 +1,59 @@ + + +#include "applpre.ihtml" + + + +Developer guide + + + + + +

Support for generic PDF combinations from file

+ + +There is a new appl_pdf derived class: generic_pdf, that can be created by specifying +a filename in the grid constructor. +

+ +To specify that such a generic pdf should be used, the pdf combination name passed to the +appl::grid( )constructor must end in ".dat" + +

+ +The pdf does not have to be set up in advance, it can be specifed simply by giving +the name eg "Wjet.dat" to the grid constructor as with the other pdf names at the +moment. The grid works out if it is a generic pdf to be created from a file, so the user +needn't call the constructor themselves, and in fact, they probably shouldn't, since +the appl_pdf book keeping will throw an exception if a constructor is called for a pdf +combination that already exists. In the grid code, this is all taken care of. + +

+As with the pre-existing pdf code whereby different pdf comnbination were possible +at each order using a ":" separated string such as "wLO:wNLO:wNNLO" etc, different +combinations can be specified at each order using eg "wLO.dat:wNLO.dat:wNNLO.dat" +etc + +

+Reading and writing grids with this should work ok, although I get crashes during the +filling of the grid when I try to test it, which I assume to be due to me using it with the +mcfm implementation, where the subprocess combination is not the same. + +

+If I have time, I may try to sort this out, but it should be ok to use with any new +developments with consistent filling code etc, but as with all things, there are probably +many bugs that will need to be ironed out. + +

+Most of the internals of the class are simply cut-and-pasted from Tancredis code, +with some minor changes - eg the parton flavours are now, + + tbar, bbar, cbar, sbar, ubar, dbar, g, d, u, s, c, b, t g + +but any of this can be changed as and when required. + + +#include "applpost.ihtml" + + Index: web/tags/web-00-00-21/news.dat =================================================================== --- web/tags/web-00-00-21/news.dat (revision 0) +++ web/tags/web-00-00-21/news.dat (revision 1932) @@ -0,0 +1,98 @@ +date: 2021-03-21: +New release versions of applgrid and appl-conv standalone convolution code ... +applgrid-1.6.13 +appl-conv-0.1.2 +Adds a new applgrid native indexed file format to replace the root storage +- allows applgrid to be compiled and used completely free from root +- adds a new applgrid-convert utility to convert bewteen the root and new native appl + formats +- builds with root by default if root is installed, in which case can read + and write root or native appl formats interchangeably, compiles without root if + root is not found + +date: 2019-05-16: +New release versions of applgrid and apl-conv standalone convolution code ... +applgrid-1.5.34 +New version of applgrid capable of running NNLO grids with full NNLO factorisation and +renormalisation scale variation + +date: 2015-02-17: +New release versions of applgrid and the mcfm interface ... +mcfm-bridge 0.0.28 +mcfm-patch 0.0.8 +applgrid-1.4.70 +Adds minor new internal features and fixes for some newer processes + +date: 2014-05-12: +Fix fresh compilation failure in mcfm-bridge, new tag ... +mcfm-bridge 0.0.28 + +date: 2014-05-11: +New versions of mcfm bridge code, and applgrid code with enhanced features for combining bins, and reducing the number of +sub processes. +applgrid-1.4.56 +mcfm-bridge 0.0.27 +New atlas inclusive dijet (2011) grids released including nonperturbativer and Electroweak corrections. NB: require applgrid-1.4.56 +or higher. + +date: 2014-04-16: +New version of mcfm bridge code for use with default mcfm version 6.7 (support for custom applgrid version of mcfm will be dropped) +mcfm-bridge 0.0.25 +New package, mcfm-patch version 0.0.0, required to patch mcfm version 6.7 - just untar in the mcfm base directory and run "make" + +date: 2014-04-16: +New applgrid intermediate version of applgrid released 1.4.50 released +Enhanced interface for combination of bins + +date: 2013-10-29: +New version of the mcfm bridge code for mcfm 6.6. +mcfm-bridge 0.0.15 +mcfm-6.6 0.0.8 +The new default supported mcfm version is updated to mcfm 6.6 (mcfm 6.0 code is now frozen and will no longer be developed) + +date: 2013-10-28: +New version applgrid 1.4.36, adds additional runtime access to applgrid version, extends fortran interface, and fixes +bug in the application of corrections for older grids for backwards compatability + +date: 2013-10-26: +New version applgrid 1.4.33, allows easier setting and getting of the ckm matrix, and caching of +pdf calls for faster convolution + New version mcfm-bridge 0.0.13 - uses new ckm setting routines + +date: 2013-09-08: +Bugfix version applgrid 1.4.28, adds missing config file for "basic" pdf. +New version mcfm-bridge 0.0.12 +New version mcfm-6.6 0.0.8 + +date: 2013-09-01: +Automatically encode ckm matrix in grids for mcfm-bridge for the mcfm-6.6 development version + mcfm-bridge 0.0.9 + +date: 2013-09-01: +Automatically encode ckm matrix in grids for mcfm-bridge for the mcfm-6.6 development version + mcfm-bridge 0.0.9 + +date: 2013-09-01: +Add tarballs for development version of mcfm 6.6 and new mcfm bridge to download archive - not yet linked by default +packages to use need to download + mcfm-6.6 0.0.5 + mcfm-bridge 0.0.8 + +date: 2013-08-05: +Automatically store ckm matrix from mcfm in the grids, update applgrid and mcfm versions: + applgrid 1.4.27 + mcfm-6.0 0.0.8 + +date: 2013-08-01: +New applgrid 1.4.25 released, allows different parton distribution for each target hadron + + + + + + + + + + + Index: web/tags/web-00-00-21/index.ihtml =================================================================== --- web/tags/web-00-00-21/index.ihtml (revision 0) +++ web/tags/web-00-00-21/index.ihtml (revision 1932) @@ -0,0 +1,62 @@ + + +#include "applpre.ihtml" + + + +Welcome + +

+ + + + + + + +
+ +The APPLgrid project provides a fast and flexible way to reproduce the results of full NLO calculations with any input +parton distribution set in only a few milliseconds rather than the weeks normally required to gain adequate statistics. +
+
+Written in C++ (although a fortran interface is included) it can be used for the calculation of any process where the +hard subprocess weights from the convolution with the PDF are available from the calculation. +
+
+The user can use existing grids simply to obtain the fast cross sections, as with fastNLO, but the complete project is +pubically available should the user wish to generate the grids themselves for new cross sections. In this case, the +user interfaces the grid code with NLO calculation, and after running the NLO calculation to achieve the required +statistical precision once, the results of the calculation with any different parton distribution set can be +calculated, typically in around 1 to 100ms, depending on the size of the grid. +
+
+At present, examples exist for MCFM and nlojet++. Since the user code that needs to run to extract the weights and +create the grid may require changes to the NLO calculation code or may be dependent on specific versions of the code, +the specific versions of both MCFM and nlojet++ are included here +
+
+An interface to fastNLO (version 1) grids is included. +
+
+ +The code is under continuous development so please come back soon for more information. +
+
+ + + + +#include "applpost.ihtml" Index: web/tags/web-00-00-21/gnews.cxx =================================================================== --- web/tags/web-00-00-21/gnews.cxx (revision 0) +++ web/tags/web-00-00-21/gnews.cxx (revision 1932) @@ -0,0 +1,280 @@ +// +// @file news.cxx +// +// builds the news table for the news.htm file +// +// +// @author M.Sutton +// +// Copyright (C) 2013 M.Sutton (sutt@cern.ch) +// +// $Id: gprint.cxx, v0.0 Wed 26 Jun 2013 23:05:02 CEST sutt $ + + +#include + +#include +#include +#include +#include + +#include + +#include "applcolours.ihtml" + +#include "grids.h" + +#include + + +/// the real row class - has a "row" (not a tr) for each grid/data +/// set combination + + + +bool contains( const std::string& s, const std::string& regex ) { + return s.find(regex)!=std::string::npos; +} + + +std::string chop( const std::string& s, const std::string& regex ) { + std::string _s = s; + if ( contains(_s,regex) ) _s.erase( 0, _s.find(regex)+regex.size() ); + return _s; +} + + + + + +int intdate(const std::string& d) { + + std::string year = d; + year.erase(year.find("-"),year.size()); + + std::string _month = chop(d,"-"); + _month.erase(_month.find("-"),_month.size()); + + std::string _day = chop(d,"-"); + _day = chop(_day,"-"); + _day.erase(_day.find(":"), _day.size() ); + + return std::atoi( (year+_month+_day).c_str() ); + +} + + + + +std::string dateparse(const std::string& d) { + std::string year = d; + year.erase(year.find("-"),year.size()); + + std::string _month = chop(d,"-"); + _month.erase(_month.find("-"),_month.size()); + + std::string _day = chop(d,"-"); + _day = chop(_day,"-"); + _day.erase(_day.find(":"), _day.size() ); + + static std::string smonth[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + + int month = std::atoi(_month.c_str()); + int day = std::atoi(_day.c_str()); + + + std::stringstream s; + if ( day<10 ) s << " "; + s << day; + + if ( day==1 || day==21 || day==31 ) s << "st "; + else if ( day==2 || day==22 ) s << "nd "; + else if ( day==3 || day==23 ) s << "rd "; + else s << "th "; + + s << smonth[month-1] << " " << year; + + return s.str(); +} + + + + + + + + +class row { + +public: + + /// fill the fields of the row + row( const std::string& d, const std::string& s ) : + m_datei(intdate(d)), + m_date(d), m_text(s) + { } + + /// fill the fields of the row + row( std::ostream& stream, const std::string& d, const std::string& s ) : + m_datei(intdate(d)), + m_date(d), m_text(s) { + print(stream); + } + + + /// actually print out the row + void print( std::ostream& stream=std::cout ) { + + // stream = s; + + static std::string tc[2] = { BGCOLOUR1, BGCOLOUR }; + // static std::string tc[2] = { TABCOLOUR1, TABCOLOUR2 }; + static int icol = 1; + + std::string colour = tc[icol%2]; icol++; + + // stream << "

" << dateparse(m_date) << " " << m_text << "
\n"; + std::string _stream = " \n " + s + "\n
\n"; + + for ( int i=0 ; i\n"; + + stream << "\n\n"; + stream << "#include \"applpost.ihtml\"\n" << std::endl; + + return 0; + +} + + + + + + + +std::vector parsefile( const std::string& filename ) { + + std::fstream datfile; + datfile.open(filename.c_str(), std::ios_base::in); + + + char text[2056]; + + std::string date; + std::string body; + + std::vector rows; + + while ( datfile.getline( text, 2056 ) ) { + + std::string line( text ); + + if ( contains( line, "date:" ) ) { + + if ( body.size()>0 ) { + rows.push_back( row( date, body ) ); + } + + date = chop( line,"date: "); + + body = ""; + } + else { + if ( body.size() ) body += "
"; + body += line; + } + + // std::cout << text << std::endl; + } + + if ( body.size()>0 ) rows.push_back( row( date, body ) ); + + datfile.close(); + + return rows; +} + + + + + +int main() { + + /// read in the dat file + + std::vector rows = parsefile( "news.dat" ); + + /// sort into reverse date order + std::stable_sort( rows.begin(), rows.end() ); + std::reverse( rows.begin(), rows.end() ); + + + /// print to file + + // std::fstream file; + // file.open("news.ihtml", std::ios_base::out); + + // std::ostream& mystream = file; + + print( rows, std::cout ); + + // file.close(); + + return 0; +} Index: web/tags/web-00-00-21/documentation.ihtml =================================================================== --- web/tags/web-00-00-21/documentation.ihtml (revision 0) +++ web/tags/web-00-00-21/documentation.ihtml (revision 1932) @@ -0,0 +1,323 @@ + + +#include "applpre.ihtml" + + + +Instructions + + + + +

+Using the code + +

+ + In APPLgrid, each cross section has it's own grid, stored in it's own + grid file. For the convolution, you create a grid, specifying which file + to use. For instance, a set of jet measurement with 5 different differential + cross sections each corresponding to a different rapidity interval, + will have 5 separate grids - one for each rapidity interval. + +

+ + After installing the APPLgrid code itself, everything needed for reproducing + a particular cross section is encapsulated in the grid itself - there is no need + to download any additional code specific to that cross section. + +

+ As a result, unlike the fastNLO package, which requires both a grid file and a + separate fortran routine for each cross section, since all information is encoded + within the APPLgrid grids themselves it is simply enough to link against the + APPLgrid code and call the convolute method for the appropriate grid, + + +
+      // read the grid
+      appl::grid grid_eta1("atlas-incljets06-eta1.root");
+      
+      // perform the convolution
+      std::vector< double > xsec_eta1 = grid_eta1.vconvolute( evolvepdf_, alphasqcd_ );
+    
+
+
+ + The convolution will use whichever PDF and alphas routines are passed into it. + If you have multiple PDFs set up, no additional code modification is required. + + For multiple grids, simply create new instances, specifying the appropriate grid + file in the constructor. For example + +
+      /// load the grids
+      appl::grid grid_eta1("atlas-incljets06-eta1.root");
+      appl::grid grid_eta2("atlas-incljets06-eta2.root");
+      
+      /// perform the convolutions
+      std::vector< double > xsec_eta1 = grid_eta1.vconvolute( evolvepdf_, alphasqcd_ );
+      std::vector< double > xsec_eta2 = grid_eta2.vconvolute( evolvepdf_, alphasqcd_ );
+    
+
+
+
+ +These latest downloadable grids require no additional scaling and in addition, +include the non-perturbative (or additional) bin-by-bin corrections discussed +in the relevant papers. + +

+ +By default, the convolution will return just the NLO cross section without +application of the additional bin-by-bin. In order to obtain the complete +cross section including the bin-by-bin corrections the class method, eg. +for grid grid_eta1 then + +

+  grid_eta1.setApplyCorrections(true);
+
+ + +should be called before performing the convolution. All subsequent +convolutions will also apply the corrections. To disable this for +grid grid_eta1 call + +
+  grid_eta1.setApplyCorrections(false);
+
+
+ +and subsequent convolutions will not apply the corrections. + +

+ + fastNLO interface + +

+ + + There is also an interface for fastNLO grids, however, since these contain multiple + different cross sections, the interface returns a vector of grids, that the user + is free to call the convolution + + +
+      /// read the fastnlo "scenario"
+      fastnlo f( gridname );
+      
+      /// get the individual grids
+      std::vector< appl::grid* > g = f.grids(); 
+      
+      /// vectopr for the different cross sections
+      std::vector< std::vector < double > > xsec(g.size());
+      for ( int i=0 ; i < g.size() ; i++ ) xsec[i] = g[i]-> vconvolute(  evolvepdf_, alphasqcd_ );
+    
+
+
+ + + Besides the usual setting up of LHAPDF if it is being used etc, no additional coding + is required. + + In addition to the methods which return the cross section values as simple vectors, + routines also exist to return the cropss section directly as a root TH1D, with the + appropriate binning + + +
+      TH1D* hxsec_eta1 = grid_eta1.convolute( evolvepdf_, alphasqcd_ );
+    
+
+ +
+ + As with all root usage, the user should remember to delete the histogram when + they have finished with it, should it be required. + + + + + + + + +

+Fortran interface + +

+ + + There is a fortran interface, however, since the functionality provided by the + APPLgrid code is far more than can be expressed using simple fortran code. For instance, + in fortran it is not possible to have multiple instances of complex data types. + To get round this obvious limitation, specifying a grid by passing some integer + identifer is the solution used in the APPLgrid fortran instance. + In fastNLO, this limitation gives rise to the need for different functions for + each cross section using fastNLO. +

+ If the user must use fortran, we recommend making their basic data structures used + in fortran available to code written in C++ and then writing the APPLgrid access + code in C++ rather than use the fortran interface. + We recommend this approach, since it is usually preferable for the user to write + a wrapper for their own fortran code which will use only basic data types and so + they will be free to develop this as they wish, and maintain access to the full, + rich APPLgrid functionality, rather than have to request access to existing + APPLgrid features that are not implemented in the fortran interface due to + limitations or the fortran language. +

+ Examples of how to this might be achieved are available in the full source tree. + For addition advice, the user can of course contact us. + +
+ + + + + + + +


+Getting Started - compiling the example + +
+ + +
    +
  • First, ensure that hoppet, root and LHAPDF are installed. Details can be found on the + + Downloads page. +
  • +
  • Create a new directory (for example "applgrid") into which you copy the applgrid code +
  • +
  • + From the link in the left menu bar of this page, download the latest version of the + applgrid convolution code, and install it using the standard unix autoconf proceedure, + ie after downloading and untaring the code + +
    +	  ./configure --prefix=< path_to_install_directory >
    +	  make
    +	  make install
    +	
    +
    + + This installs the headers, library and executables in the include, lib and + bin directories of <path_to_install_directory> above. Often this path + is set to /usr/local but to install there, you will require superuser priviledge. +
  • +
  • + + Get the applgrid example code from + + here or the menu on the left. + +
  • +
  • + + After untaring this you should just be able to go to the new examples directory and build the examples + +
    +	    make
    +	  
    +
    + + Further details are contained in the README file in the directory. + +
    +
  • +
+ +
+ Remarks + +
+
+ + There is the useful + +
+      applgrid-config
+    
+
+
+ + utility which provides locations of the installation directory, useful include + and linking flags etc, eg + +
+      % applgrid-config --help
+      applgrid-config: configuration tool for the APPLgrid
+      fast cross section convolution code
+      http://projects.hepforge.org/applgrid/
+      
+      Usage: applgrid-config [[--help|-h] | [--prefix] | [...]]
+      Options:
+      --help | -h    : this help
+      
+      --prefix       : installation prefix (cf. autoconf)
+      --incdir       : path to the APPLgrid header directory
+      --libdir       : path to the APPLgrid library directory
+      --cxxflags     : compiler flags for the C preprocessor
+      --ldflags      : compiler flags for the linker just for c code
+      --ldfflags     : compiler flags for the linker including the fortan interface
+      --share        : path to APPLgrid pdf conbination config files
+
+      --version      : release version number
+      
+    
+
+
+ + For general compilation and linkage with the users own code, the header and library paths can be + specifed to the compiler and linker using the applgrid-config utility as follows + +
+      % applgrid-config --ldflags
+      -L/usr/local/lib -lAPPLgrid -lfAPPLgrid
+      
+      % applgrid-config --cxxflags
+      -I/usr/local/include
+    
+
+
+
+ + + +

+Renormalization and Factorization Scales + +

+ + For grids cross sections up to NLO, all cross sections can be computed with and + different scale factors for the + renormalisation scales, ie muR, 2muR, 4muR etc. Any, arbitrary numerical scaling + factor can be specified by the user, although changes to use a different scale, + ie pT, rather than \hat{s} etc are not currently possible. + + For changes to the factorisation scale, again any arbitrary numerical factor can be + specified by the user, although in this case, APPLgrid uses the hoppet package, + so this needs to be installed before APPLgrid. + + +


+Interfacing your own PDF/alphas code + +

+ + If you wish to interface your own PDF or alphas code, you simply need to define + a function with the same specification at the evolvePDF and alphaQCD routines from the + LHAPDF package. Remember that since the LHAPDF routines are in fortran, then + your PDF and alphas functions should have extern "C" linkage. + + + + + +


+ +If you have any further questions, please contact the authors at: + applgrid @ projects.hepforge.org + + +#include "applpost.ihtml" Index: web/tags/web-00-00-21/nightlies/results.db =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/nightlies/results.db =================================================================== --- web/tags/web-00-00-21/nightlies/results.db (revision 1931) +++ web/tags/web-00-00-21/nightlies/results.db (revision 1932) Property changes on: web/tags/web-00-00-21/nightlies/results.db ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/style.css =================================================================== --- web/tags/web-00-00-21/style.css (revision 0) +++ web/tags/web-00-00-21/style.css (revision 1932) @@ -0,0 +1,269 @@ + +/* +Design by Free CSS Templates +http://www.freecsstemplates.org +Released for free under a Creative Commons Attribution 2.5 License +*/ + +#hepforge-content { padding:0; border:0; margin:0; } +#cedarcontent form table td { padding:0; } +hepforge-content { padding:0; border:0; margin:0; } + +//html { +// overflow: -moz-scrollbars-vertical; +// overflow: -moz-scrollbars-hidden !important; +// overflow-y: -moz-scrollbars-none !important; // this does work +// overflow-y: none !important; // doesn't work +// overflow-x: none !important; // doesn't work +// } + + +// ::-webkit-scrollbar { +// display: none; +// } + +hepforge-content { + overflow: none; +} + +#hepforge-content { + overflow: none; +} + +body { + border: 0; + margin: 0; + padding: 0; + padding-top: 0; + padding-left: 0; + padding-right: 0; + background: #eeeecc; + font-family: Arial, Geneva; /// Helvetica, sans-serif; + // font-face: "Arial, Geneva"; + font-size: 10px; + // color: #787878; + color: #553322; +} + +code { + margin: 0; + padding: 0; + padding-bottom: 0; + font-family: Courier; /// Helvetica, sans-serif; + font-size: 12px; +} + +.bodytext { + font-size: 14px +} + + +.tabletext { + font-size: 14px +} + +#codetable tr.t0 td { + font-size: 14px + background-color: #999999; + color: #000000; +} + +#codetable tr.d0 td { + font-size: 14px + background-color: #CC9999; + color: #000000; +} + +#codetable tr.d1 td { + font-size: 14px + background-color: #9999CC; + color: #000000; +} + + + +table { + background: #eeeecc; + font-size: 12px +} + +#content { + background: #ffffdd; +} + + +#sidebar { + background: #d4d6aa; +} + + +// .trtext { +// font-size: 14px +// } + +#mylabel { + color: #332211; +} + +h1, h2, h3 { + // margin: 0; + // padding: 0; + font-weight: bold; + color: #332211; +} + +h1 { + font-size: 1.6em; +} + +h2 { + margin: 0px; + font-size: 1.4em; +} + +h3 { +// line-height: 90%; +// margin-top: 10px; +// margin: 0px; + font-size: 1.2em; +} + +h4 { + margin: 0px; + font-size: 1.4em; + font-weight: normal; +// line-height: 180%; + color: #553322; +} + +h5 { +// font-size: 0.8em; +// font-weight: normal; +// color: #553322; +} + +p, ul, ol { +// margin-top: 0; +// line-height: 180%; +} + +ul, ol { +} + + +a { + text-decoration: underline; + color: #cc4444; +} + +a:hover { color: #ff0000; } + + +#hepforge-content { padding:0em; padding-top:0; } + + +#barlink { +// text-decoration: none; + text-decoration: underline; + margin: 0px; + font-size: 1.0em; + color: #ffffff; + background: #666644; + font-weight: bold; +} + +#bar { +// text-decoration: none; + text-decoration: underline; + margin: 0px; + font-size: 1.2em; + color: #ffffff; + background: #666644; + font-weight: bold; +} + +#bar td { + background: #666644; + text-decoration: none; +} + +#bar a { + color: #ffffff; +} + +#bar a:hover { + color: #ffff88; +// text-decoration: underline; +} + + +#wrapper { +// width: 960px; +// margin: 0 auto; +// padding: 0; +} + +/* Header */ + + + +#header { +// width: 940px; +// height: 102px; +// margin: 0 auto; +} + +/* Menu */ + +#menu { +// width: 940px; +// height: 36px; +// margin: 0 auto; +// padding: 0; +// background: #000000; +} + +#menu ul { +// margin: 0; +// padding: 0; +// list-style: none; +// line-height: normal; +} + +#menu li { +// float: left; +} + +#menu a { +// display: block; +// width: 134px; +// height: 28px; +// background: #000000; +// padding-top: 8px; +// border-right: 1px solid #FFFFFF; +// text-decoration: none; +// text-align: center; +// font-family: Arial, Helvetica, sans-serif; +// font-size: 13px; +// font-weight: bold; +// color: #FFFFFF; +// border: none; +} + +#menu a:hover, #menu .current_page_item a { +// background: #BC1B32; +// text-decoration: none; +} + +#menu .current_page_item a { +// background: #BC1B32; +// padding-left: 0; +} + + +.links { +// padding-top: 20px; +// font-size: 12px; +// font-weight: bold; +} + Index: web/tags/web-00-00-21/figs/APPLgrid-white-plain.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/APPLgrid-white-plain.jpg =================================================================== --- web/tags/web-00-00-21/figs/APPLgrid-white-plain.jpg (revision 1931) +++ web/tags/web-00-00-21/figs/APPLgrid-white-plain.jpg (revision 1932) Property changes on: web/tags/web-00-00-21/figs/APPLgrid-white-plain.jpg ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/APPLgrid-red-on-green.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/APPLgrid-red-on-green.jpg =================================================================== --- web/tags/web-00-00-21/figs/APPLgrid-red-on-green.jpg (revision 1931) +++ web/tags/web-00-00-21/figs/APPLgrid-red-on-green.jpg (revision 1932) Property changes on: web/tags/web-00-00-21/figs/APPLgrid-red-on-green.jpg ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/APPLgrid.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/APPLgrid.jpg =================================================================== --- web/tags/web-00-00-21/figs/APPLgrid.jpg (revision 1931) +++ web/tags/web-00-00-21/figs/APPLgrid.jpg (revision 1932) Property changes on: web/tags/web-00-00-21/figs/APPLgrid.jpg ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/APPLgrid-red-on-green2.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/APPLgrid-red-on-green2.jpg =================================================================== --- web/tags/web-00-00-21/figs/APPLgrid-red-on-green2.jpg (revision 1931) +++ web/tags/web-00-00-21/figs/APPLgrid-red-on-green2.jpg (revision 1932) Property changes on: web/tags/web-00-00-21/figs/APPLgrid-red-on-green2.jpg ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/applicon.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/applicon.jpg =================================================================== --- web/tags/web-00-00-21/figs/applicon.jpg (revision 1931) +++ web/tags/web-00-00-21/figs/applicon.jpg (revision 1932) Property changes on: web/tags/web-00-00-21/figs/applicon.jpg ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/APPLgrid.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/APPLgrid.png =================================================================== --- web/tags/web-00-00-21/figs/APPLgrid.png (revision 1931) +++ web/tags/web-00-00-21/figs/APPLgrid.png (revision 1932) Property changes on: web/tags/web-00-00-21/figs/APPLgrid.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/APPLgrid-blue.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/APPLgrid-blue.jpg =================================================================== --- web/tags/web-00-00-21/figs/APPLgrid-blue.jpg (revision 1931) +++ web/tags/web-00-00-21/figs/APPLgrid-blue.jpg (revision 1932) Property changes on: web/tags/web-00-00-21/figs/APPLgrid-blue.jpg ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/applicon.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/applicon.png =================================================================== --- web/tags/web-00-00-21/figs/applicon.png (revision 1931) +++ web/tags/web-00-00-21/figs/applicon.png (revision 1932) Property changes on: web/tags/web-00-00-21/figs/applicon.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/APPLgrid-red.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/APPLgrid-red.jpg =================================================================== --- web/tags/web-00-00-21/figs/APPLgrid-red.jpg (revision 1931) +++ web/tags/web-00-00-21/figs/APPLgrid-red.jpg (revision 1932) Property changes on: web/tags/web-00-00-21/figs/APPLgrid-red.jpg ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/applicon.ico =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/applicon.ico =================================================================== --- web/tags/web-00-00-21/figs/applicon.ico (revision 1931) +++ web/tags/web-00-00-21/figs/applicon.ico (revision 1932) Property changes on: web/tags/web-00-00-21/figs/applicon.ico ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/figs/APPLgrid-white.jpg =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: web/tags/web-00-00-21/figs/APPLgrid-white.jpg =================================================================== --- web/tags/web-00-00-21/figs/APPLgrid-white.jpg (revision 1931) +++ web/tags/web-00-00-21/figs/APPLgrid-white.jpg (revision 1932) Property changes on: web/tags/web-00-00-21/figs/APPLgrid-white.jpg ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: web/tags/web-00-00-21/appllogo.ihtml =================================================================== --- web/tags/web-00-00-21/appllogo.ihtml (revision 0) +++ web/tags/web-00-00-21/appllogo.ihtml (revision 1932) @@ -0,0 +1,4 @@ + +
Index: web/tags/web-00-00-21/date.txt =================================================================== --- web/tags/web-00-00-21/date.txt (revision 0) +++ web/tags/web-00-00-21/date.txt (revision 1932) @@ -0,0 +1 @@ +Sun 21 Mar 2021 17:42:31 GMT Index: web/tags/web-00-00-21/appltest/app.js =================================================================== --- web/tags/web-00-00-21/appltest/app.js (revision 0) +++ web/tags/web-00-00-21/appltest/app.js (revision 1932) @@ -0,0 +1,98 @@ +(function ($) { + var timestamps; + var timestampsPerPage = 10; + var loadedTimestamps = 0; + + var $container; + var $loadOlderResults = $('

Load older results

'); + + function loadResults(start, end, callback) { + var lastDate = 0; + var rowNumber = 0; + + var $row, $card, $date, $goodCount, $badCount, $table; + + $.get('appltest/results.php', {start: start, end: end}, function (runs) { + var i, run, date, dateString, $run; + + for (i=0; i
').appendTo($container); + $date = $('' + dateString + '').appendTo($('.card-header', $card)); + $badCount = $('0').hide().appendTo($('.card-header', $card)); + $goodCount = $('0').hide().appendTo($('.card-header', $card)); + + $('.card-header', $card).append(' using applgrid ' + run.applgrid_version + ', mcfm_bridge ' + run.mcfmbridge_version + ''); + + // Runs table + $table = $('
+
+
","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/\s*$/g;function Ca(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&za.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m&&(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(la(e,"script"),Da),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;d0&&ma(g,!i&&la(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(la(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!ya.test(a)&&!ka[(ia.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Xa.propHooks[this.prop];return a&&a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za&&(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=aa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K); +if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\t\r\n\f]/g;function mb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=mb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(c)+" ").replace(lb," ").indexOf(b)>-1)return!0;return!1}});var nb=/\r/g,ob=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(nb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:r.trim(r.text(a)).replace(ob," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type,g=f?null:[],h=f?e+1:d.length,i=e<0?h:f?e:0;i-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,""),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + + + + Index: web/tags/web-00-00-21/applversions.ihtml =================================================================== --- web/tags/web-00-00-21/applversions.ihtml (revision 0) +++ web/tags/web-00-00-21/applversions.ihtml (revision 1932) @@ -0,0 +1,20 @@ +// #define APPLVER 1.4.70 +#define APPLVER 1.6.13 +#define HOPPETVER 1.2.0 + +# +#define MCFMVERSIXZERO 0.0.8 + +#define MCFMVER 0.0.8 +#define MCFMBRIDGEVER 0.0.35 + +#define AMCBRIDGEVER 0.0.8 + + +#define NLOVER 0.0.2 +#define NLHVER 0.0.2 +#define JMODVER 0.0.2 + +#define EXAMVER 0.0.1 +#define CONVVER 0.1.2 + Index: web/tags/web-00-00-21/applsidebar.ihtml =================================================================== --- web/tags/web-00-00-21/applsidebar.ihtml (revision 0) +++ web/tags/web-00-00-21/applsidebar.ihtml (revision 1932) @@ -0,0 +1,177 @@ + +#include "applcolours.ihtml" +#include "applversions.ihtml" + + + + + + + +
+ + +Convolution Code Download +
+ +Current version +applgrid-APPLVER + + +
+ + +Basic example code + +here
+Standalone convolution utility + +here
+The + + hoppet + code version HOPPETVER for +QCD evolution +from Gavin Salam and Juan Rojo. +
+
+
+ + + + +Calculation Code +
+ + +MCFM: (use standard mcfm 6.8 code)
+ + mcfm-patch (mcfm applgrid patch MCFMVER)
+ + mcfm-bridge (version MCFMBRIDGEVER - for mcfm-6.8)
+NLOjet++:
+ + nlojet++ 4.0.1 (applgrid version NLOVER)
+ + nlojet++ lhapdf wrapper 1.0.0 (applgrid version NLHVER)
+ + nlojet++ user module (applgrid version JMODVER)
+
+
+ + + Grid Download +
+ +Grids should now be downloaded using the + ploughshare project. +
+
+ +Some grids are available on the + + Downloads page: + +
+#include "gridsbar.ihtml" + + +
+ + + + + + + + + + Quick Start Guide +
+ + how to run the APPLgrid code + +
+
+ + Citation +
+ +Please cite the APPLgrid as
+ +Eur Phys J C 66 (2010) 503 +
+
+
+ + + + + Index: web/tags/web-00-00-21/nightlies.ihtml =================================================================== --- web/tags/web-00-00-21/nightlies.ihtml (revision 0) +++ web/tags/web-00-00-21/nightlies.ihtml (revision 1932) @@ -0,0 +1,14 @@ + + +#include "applpre.ihtml" + +Nightly builds +

+ +
+ + + + + +#include "applpost.ihtml" Index: web/tags/web-00-00-21/gprint.cxx =================================================================== --- web/tags/web-00-00-21/gprint.cxx (revision 0) +++ web/tags/web-00-00-21/gprint.cxx (revision 1932) @@ -0,0 +1,238 @@ +// +// @file gprint.cxx +// +// builds the grid table for the downloads.htm file +// +// +// @author M.Sutton +// +// Copyright (C) 2013 M.Sutton (sutt@cern.ch) +// +// $Id: gprint.cxx, v0.0 Wed 26 Jun 2013 23:05:02 CEST sutt $ + + +#include +// #include +#include +#include +#include + +#include "applcolours.ihtml" + +#include "grids.h" + + + +/// the real row class - has a "row" (not a tr) for each grid/data +/// set combination + +class row { + +public: + + /// fill the fields of the row + row( std::string* s) { + m_header = s[0]; + m_beam = s[1]; + m_arxiv = s[2]; + m_info = s[3]; + m_hepdata = s[4]; + m_applgrid = s[5]; + m_appldoc = s[6]; + m_extradoc = s[7]; + } + + /// get the beam energy (so we can have different tables + std::string beam() const { return m_beam; } + + /// actually print out the row + void print( std::ostream& stream=std::cout ) { + + // stream = s; + + static std::string tc[2] = { TABCOLOUR1, TABCOLOUR2 }; + static int icol = 1; + + std::string colour = tc[icol%2]; icol++; + + stream << "\n\n\n\n"; + + + stream << tabrow( m_header+" "+m_extradoc, colour ); + + stream << "" << std::endl; + stream << tabcol( anchor( std::string("http://arxiv.org/abs/")+m_arxiv, "arXiv:"+m_arxiv ) ); + stream << tabcol( m_info ); + stream << "" << std::endl; + + stream << "" << std::endl; + stream << tabcol( anchor( m_hepdata, "hepdata" ) ); + stream << tabcol( "" ); + stream << "" << std::endl; + + + stream << "" << std::endl; + stream << tabcol( anchor( m_applgrid, "grid tarball" ) + " contains" ); + stream << tabcol( m_appldoc ); + stream << "\n" << std::endl; + + } + + void printsummary( std::ostream& stream=std::cout ) { + + std::string label = m_header; + + size_t pos = label.find("data"); + + /// replace the (second more than one) instance of "data" in the data set header + if ( pos!=std::string::npos ) { + size_t second = label.find( "data", pos+1 ); + if ( second!=std::string::npos ) pos = second; + label.replace( pos, 4, "-" ); + } + + stream << "" << label << "\n" + << " grids \n" + << "\n
\n"; + } + + +private: + + + /// some basic table entry printout routines for an easier life + + /// add a table column + std::string tabcol(const std::string& s) { + // std::cout << " \n"; + std::string _stream = " \n " + s + "\n \n"; + return _stream; + } + + + /// add a row header + std::string tabrow(const std::string& s, const std::string& colour="ffffff") { + std::string _stream = "" + s + "\n"; + return _stream; + } + + + /// get the text for an anchor + std::string anchor( const std::string& link, const std::string& s) { + std::string ss = "" + s + ""; + return ss; + } + + +private: + + + std::string m_header; + + std::string m_beam; + + std::string m_info; + + std::string m_arxiv; + std::string m_hepdata; + + std::string m_applgrid; + std::string m_appldoc; + + std::string m_extradoc; + +}; + + +int main() { + + /// read all the rows from the data base + + std::vector rows; + + for ( int i=0 ; i\n"; + + + + + + + /// + /// create the main downloads table + /// + + std::fstream file; + file.open("grids.ihtml", std::ios_base::out); + + std::ostream& mystream = file; + + mystream << "\n"; + mystream << "\n\n"; + + + mystream << "\n" + << "\n" + << "\n" + << "\n" + << "\n"; + + /// 2.76 TeV entries + + mystream << "\n\n\n"; + + mystream << "\n" + << "\n" + << "" << std::endl; + + for ( int i=0 ; i\n\n"; + + mystream << "\n" + << "\n" + << "" << std::endl; + + for ( int i=0 ; i\n
LHC: pp @ sqrt(s) = 2.76TeV
LHC: pp @ sqrt(s) = 7TeV
" << std::endl; + + // mystream << "\n"; + + mystream << std::endl; + + file.close(); + + + + + /// + /// create the short grid part of the side bar + /// + + std::fstream fside; + fside.open( "gridsbar.ihtml", std::ios_base::out ); + + fside << "\n"; + fside << "\n\n"; + + // fside << "\n"; + fside << "
\n"; + fside << " Grids for sqrt(s)=2.76 TeV:\n
\n"; + for ( int i=0 ; i\n"; + fside << "
\n"; + fside << " Grids for sqrt(s)=7 TeV:\n
\n"; + for ( int i=0 ; i + +#include "applpre.ihtml" +#include "applversions.ihtml" + + + + + + + + + +
+ + +Grid Downloads +
+ +Here you can download grids for APPLgrid version APPLVER for fast cross section evaluation. + +These grids are fully differential and should require no additional scaling. Each +should include the non-perturbative (and any additional) bin-by-bin corrections or K-factors, +the application of which is discussed in the relevant papers - see the + Documentation page for more information. +
+
+ Please note that these grids should be based on the grids that were used for the +relevant papers, and were not necessarily created by the the applgrid authors. +
+
+These grids are here for historical purposes, now grids are distributed from the + ploughshare project. +
+
+ +#include "grids.ihtml" +
+ + +Code Download +
+ +Various code for download is available: +
    +
  • You can download the latest version (APPLVER) of the standard APPLgrid convolution code + + +here + +. +
  • + +
  • If you wish to use arbitrary factorisation scale variation, +you will need to have hoppet installed first, which you can +download from + + +here + +. +
  • + + +
  • There are some simple examples which you can download from + +here . + +These examples requires that you have LHAPDF installed +which you can find + + +here + +. +
  • + + +
  • In addition, APPLgrid uses root files for storage, although not internally, so you should also install root +which you can find + + +here + +. +
  • +
+
+ + + +Calculation Code +
+ +If you wish to generate your own grids, we currently have NLOjet++ available for jet production at NLO and MCFM for most other processes. +
+
+
    +
  • For NLOjet++ we have our own custom version 4.0.1 which can be downloaded from + here . +
    +This requires the nlojet pdf module that you can download from + here . +
    +The user module +can be downloaded from + here +
    +
    +
  • +
  • For MCFM, you should download the standard version of MCFM (6.7 or later). +To link with applgrid, before installing MCFM, you should download and install the + +mcfm-bridge + +code, which you install with the usual ./configure ; make ; make install etc. +
    +
    +After running this you will need to patch the standard installation using the + patch file which you should untar in +the MCFM base directory and then remove the file +
    +   src/User/gridwrap.f 
    +
    +then just build using make. To link with applgrid, before running make, you should set the LDFLAGS +enviroment variable to the output from +
    +   mcfm-bridge --ldflags
    +
    +NB: you should not use the standard install script that comes with MCFM. +
  • +
+Other interfaces are being developed and will be released when available. +
+
+
+ +

+ +Downloads Archive +
+The old downloads directory can be found + +here + (Warning, not for the faint of heart) + + +

+ +#include "applpost.ihtml"