Novaart » History » Version 332

Version 331 (Nitish Nayak, 02/21/2020 03:23 PM) → Version 332/341 (Christopher Backhouse, 05/18/2020 02:45 PM)


h1. NOvA on ART Wiki

This is the wiki page for NOvA Computing.

The NOvASoft software is written in C++ and built on the "ROOT": data analysis software.
We use the Fermilab 'Art' framework.

*+To obtain permission to use this site and the repository:+*

*1) Log onto redmine with your Services Account*
*2) You will be added as a developer*

"*Search all NOvA subprojects*":

h1. [[Collaboration Bulletin Board]]

h1. A Newcomer's Guide to Getting Started

*Welcome to the NOvA Collaboration!* If you're new here, it can be hard to know where to start. Follow the steps below to get up and running quickly.

# Get set up with [[Fermilab Computing Access]]
# Confirm you can access resources by [[Using NOvASoft on the GPVM nodes]]
# [[Get Started with Slack]]
# Subscribe to relevant [[Mailing Lists]]
# If you're a grad student or postdoc, join [[Young NOvA]]
# Familiarize yourself with NOvA's [[Policies]] (These include details regarding shifting, authorship, and the proper use of data)

h1. NOvA Computing Resources

* [[Fermilab Computing Access]]
** "FIFE":
* [[Fermilab VPN access]]
* [[Authentication]]
* [[Disks]]
* [[Maintenance|Computing Maintenance]] _Usually the Third Thursday of each month_
* [[Using NOvASoft on the GPVM nodes]]
* [[Installing a local copy of NOvASoft and the external products]]
* [[Installing a local copy of a tagged release]]
* [[Using Condor and Running on Grid from IF Cluster Machines|Running on the Grid]]
* [[NOvA Computing Do's and Don'ts]]
* [[Devs SVN access|Devs SVN Repository Access]]
* [[Using CernVM-FS (CVMFS)]]
* [[Using Docker with NOvA Software]]
* [[All Things macOS]]

h1. How to Use and Write NOvASoft code

* [[The NOvA Offline Workbook]]
* [[Documentation FOR BEGINNERS]]
** "Tutorial and Workshop Videos": Videos":
** [[NOvA Vocabulary and Jargon]]
** [[SRT and SVN (Minimal Guide)]]
* [[Using the Framework]]
* "ART Workbook":
* [[Editing Code]]
* [[Editing Code with CMake and buildtool|Editing Code with CMake and mrb]]
* [[Using artmod]]
* [[Adding a package to NOvASoft]]
* [[Running Jobs|Running Jobs (including how to use fhicl)]]
** "Submitting NOvA ART jobs to the grid":
Additional ART documentation
(via the mu2e experiment, until the ART developers can write/distribute their own)
(_Don't complain to mu2e or Rob Kutschke if it doesn't apply to NOvA_)
** Using FHICL "quick start guide and formal spec": "mu2e notes":
** "Using Paths":
** "Using ART Services":
** "Native ART Services":
** "Possibly others under the art section here":
** Need to know what values were used from fhicl files to fill a @fhicl::ParameterSet@ passed to a job module?
@% config_dumper@ _art_framework_event_file.root_

* [[Running the EventDisplay]]
* "Use the RandomNumberGenerator Service": (*NB* the code examples are from the older fw implementation)
* [[Using Associations]]
* [[CAF ROOT Macros and PyROOT]]
* [[CAF Tree Structure and Variable Listing]]
* [[Running event mixer ]]
* [[Tech Notes and Other Important Documents]]
* [[How Stuff Works]]
* [[Third analysis todo list]]
* [[nova_ci:|Continuous Integration]]

h1. Troubleshooting

* [[Trouble Shooting and Gotchas]]
* [[art2 Changes]]

h1. Documents and Other Materials

* [[Tech Notes and Other Important Documents]]
* "Blessed Plots and Figures Gallery":
* [[Blessed Plots Instructions]]
* [[Detector Specifications]]

h1. NOvA Groups

h2. Data Quality

* "Redmine":

h2. Watchdogs

* "Redmine":

h2. Beam

* [[Running NOvA Beam Simulations]]
* "Dk2Nu Format Flux Files":
* "FluxReader Wiki":
* "PPFX, Package to Predict the FluX":

h2. Simulation

* [[Running_NOvA_Simulations|Running Detector Simulations]]
* [[Running MC Validation]]
* [[Known limitations of the simulation]]
* [[Flat Neutrino Event Spectra Generation]]
* [[Central value weights]]
* [[Production 5]]

h2. SAM

* "Documentation and HowTo's (Redmine)":
* "Issue Tracker":
* "New Issue":

h2. Production

Links for general users.

* "Official datasets":
* "Production testing":
* [[Period and Epoch Naming]]
* [[Disk Usage]]
* [[So You Want to Make Some Monte Carlo (A Qwik Start Guide for non-Productioners)]]
* "Flux File Handling":
* [[2016 Miniproduction]]
* [[2019 Miniproduction]]
* [[Production FCLs and module configuration]]

For the production group:

* "Production Wiki":

h2. Reconstruction

* "Reconstruction Redmine":
* "CVN":
* [[List of reconstruction changes since the prod2calib branch]]
* [[New CAFs (feature_caf_size) notes]]
* "Reconstruction in production 4 campaign":
* [[Production 5]]
* "Reconstruction in production 5 campaign":
* "HDF5 at NOvA":

h2. Calibration

* [[Which Calibration Tag Should I Use?]]
* [[Calibration tags]]
* [[Calibration-tagging]]
* [[Production 5]]

h2. Three-flavor (joint numu+nue) analysis

* [[Reproducing the 2019 joint analysis]]
* [[Reproducing the 2020 joint analysis]]
* [[numu details]]
* [[nue details]]
* [[Convergence and modernization punch list]]
* "Making Concats":

h2. numu analysis (historical)

* [[General numu analysis details]]
* [[Reproducing numu First Analysis results]]
* [[Reproducing numu Second Analysis results]]
* [[Reproducing numu 2017 Analysis results]]
* [[Reproducing numu 2018 Analysis results]]
* [[Far/Near energy spectrum extrapolation]]
* [[Notes for 2019/2020 Analyses]]

h2. nue analysis (historical)

* [[General nue analysis details]]
* [[Reproducing the nue First Analysis results]]
* [[Reproducing the nue Second Analysis results]]
* [[Reproducing the nue 2017 Analysis results]]
* [[Reproducing the nue 2018 Analysis|Reproducing the nue 2018 Analysis results]]

* [[Ideas for the next nue analysis]]
* [[nue datasets|nue SA-era datasets]]
* [[LEM processing using the dropbox]]
* [[reach|Future sensitivities]]

* [[What we know about the E/hit discrepancy]]

* [[Systematics strategy]]

h2. nus analysis

* [[nus Overview]]
* [[nus datasets]]

h2. SBL Joint Analysis

* [[SBL Overview]]
* [[SBL Datasets]]

h2. ND analyses

* [[Extracting flux from gsimple files]]
* [[CAFAna-for-cross-sections workshop, 2016]]
* [[Reproducing the CCPi02017 Analysis]]

h2. Exotics analysis

* [[Generating a multipoint lookup table]]
* [[Generating a GENIE flux file using WimpSim]]
* [[LDM and HNL]]
* [[Neutron-Antineutron Oscillation Analysis]]

h2. CAFAna

* [[CAFAna resources]]
* [[CAFAna overview]]
* [[ModularExtrap]]
* [[CAFAna systematics]]
* [[CAFAna on the grid]]
* [[Adjusting your macro to SRProxy]]
* [[Adjusting your macro after the Stan Bayesian MCMC merge]]
* [[Using Stan Bayesian MCMC for fitting]]

h2. FNEX

* [[FNEX Analysis Framework]]

h2. Cross-section tuning

* [[Relevant x-sec literature]]
* [[Current x-sec to-dos]]

h1. Data and Monte Carlo Files

* [[Data]]
* [[SamDataSets | Defining and Using Datasets]]
* [[Finding_Monte_Carlo_files_at_FNAL|Monte Carlo]] (old location "Monte Carlo":
* [[GSimpleNtpFlux|NOvA GSimpleNtpFlux files]]
* [[What is in a file?]]
* [[Trimming Files|Removing Objects from Art Files]]

h1. The NuMI Beam

* "NuMI Beam Monitoring":
* "NuMI Beam Devices Monitoring (Nova Standard)":
* "NuMI Spill Monitoring (Big Green Button)":
* "Accessing the NuMI Beam Data":

h1. Releases

* [[NOvA Snapshot and Release Policy|Snapshots, Releases, and Feature Branches]]
* [[History of Tagged Releases]]

h1. Package, Release listings and other tools

* [[Complete list of NOvASoft packages]]
* [[novasoft externals]]
* [[Code Review Information]]
* "cppcheck static analysis results":
* [[Performance Checking]] (using google-perftools)
* "NOvA-ART doxygen source code browser":
* "NOvA-ART CVS repository browser":
* "NOvA-ART CVS repository browser. LXR version":
* [[NOvA Software in CVMFS]]
* [[Setting up NOvA Software on your Laptop]]
* [[About ccache]]
* [[Job and Grid Monitoring Tools]]
* [[Production Infrastructure and Scripts]]
* [[novacompadmin|Administration]]
* [[Archives of Former Nova Users]]
* [[_SAM_Jobsub_and_Data_Handling_Quick_Links|Offline Quick Links (Jobs Monitoring, SAM, Data Handling)]]

h1. ART code repositories, mailing lists, issue reporting

* "ART":
* "Message Facility":
* "FHICL":
* LXR code browsers
> * "ART":
> * "CETLIB":
> * "CPP0X":
> * "FHICL":
> * "Message Facility":
* "Issue Tracker": Please report issues to the ART developers using the ART Redmine project. Reporting issues in this matter keeps you in the loop with respect to work on the issue.
* "ART Workbook": ART Documentation aimed at multiple levels.
* - an open-post, open membership list with archive for community questions about ART, user announcements, etc.
* - an open-post, closed-membership list with private archive for directed questions to experts and private discussions among developers.

h1. Database

* [[DatabaseDocumentation|Documentation]]
* [[Database#RunHistory | The Run History Interface]]

h1. Getting Help

* [[General Computing]]
* [[Grid Computing]]
* [[Art Framework]]

h1. Fermilab NOvASoft Build Logs

The nightly build is split into three parts:

# *Jenkins Build Status* -- the actual build on the Jenkins build management system
# *Jenkins Nightly / Release Download Log* -- Automatic downloading of any successful build to temporary location (the build machine)
# *Nightly Build cronjob Logs* -- Cronjobs that update the GPVM nodes (update setup_nova, copy last build of development into place from the build machine)

There is a check in the process trying to prevent broken builds being copied into place.

* If the Actual Build is a success -> Copying of the build to temporary location proceeds overwriting the last build stored in the temporary location

It is possible to obtain a tarball of any recent release built on the Jenkins Build system / the last week's worth of nightly builds from the links in this section:

* Jenkins Build - Last Succesful Build Artifacts

h2. Jenkins (Nightly) Build Status

There is one build for each operating system (OS) currently supported - SLF6. All nodes at Fermilab are SLF6.
Each of the OS builds has a "debug" and "maxopt" version of the build.

* "Jenkins nightly build SLF6":

h2. Jenkins Nightly / Release Download Log

A cronjob runs every 10 minutes checking for new builds on the Jenkins build system. If a build is detected it is checked to see if it was successful. If it is successful the build is downloaded to the novabuild01 machine. These logs have a line per release downloaded. The downloaded / logging is split by operating system (SLF5/SLF6) and by build type (nightly==development / release).

* "Jenkins nightly build SLF5 download log":
* "Jenkins release build SLF5 download log":

* "Jenkins nightly build SLF6 download log":
* "Jenkins release build SLF6 download log":

h2. Nightly Build cronjob Logs

These cronjobs do things like - update the setup on the GPVM nodes, *copy in to place the nightly builds* from the novabuild01 machine to the GPVM nodes, run the datagrams, automatically detect and download all Jenkins builds of NOvA offline software releases and nightly builds (See above for minimal logging).

If things go awry with the nightly build this is a good place to look for problems. The logs are rotate once per day (using logrotate), with the last 5 days of logs kept. The links are to the most recent versions of each log file.

* "Get release from Jenkins SLF5":
* "Get nightly build from Jenkins SLF5":

* "Get release from Jenkins SLF6":
* "Get nightly build from Jenkins SLF6":

* "Move nightly build to GPVM nodes SLF5":
* "Move nightly build to GPVM nodes SLF6":

* "Run Datagram":

* "Update setup SLF5":
* "Update setup SLF6":

h2. Jenkins Build - Last Succesful Build Artifacts

You can use these links to download the actual nightly / release build output (libraries, binaries, etc...). These links are for the most recent. You can navigate from them to older releases / nightly builds.

* "Jenkins nightly build SLF5 tarballs":
* "Jenkins nightly build SLF6 tarballs":

* "Jenkins release build SLF5 tarballs":
* "Jenkins release build SLF6 tarballs":

h2. CI tests

* "NOvA CI web monitoring page":
* "Jenkins NOvA CI test project":
* [[NOvA CI test user guide]]

h1. Other Resources

* [[Where_to_Find_Graphics_for_NOvA_Public_Presentations| Where to Find Graphics for NOvA Public Presentations]]
* "": - useful information on c++ programming with examples for how to use various stl objects, etc
* "ROOT: User's Gude": - the ROOT User's Guide documentation
* "Good c++ practices in ART": - some good c++ code practices in the ART framework, in particular introducing c++2011 features. Document provided by Marc Paterno.