[Solid_software] art experience
Richard S. Holmes
rsholmes at syr.edu
Thu Feb 25 15:40:01 EST 2016
I've been trying out art. (It's supposed to be in italics, *art*, but I'm
not about to start doing that.) I started off by downloading the Workbook
https://web.fnal.gov/project/ArtDoc/_layouts/15/WopiFrame.aspx?sourcedoc=%2Fproject%2FArtDoc%2FShared%20Documents%2Fart-documentation%2Epdf&action=view
and started reading. Then I started installing based on Appendix B.
At first I tried installing on my Mac, which runs OS X 10.8 (Snow Leopard).
Appendix B seems to say the version supported for OS X 10.9 (Mavericks)
would probably run on 10.8, but I got errors and after getting a response
to a post on the art users mailing list telling me it was due to the OS I
decided to abandon that. (I will very soon by replacing my Mac with a new
one running OS X 10.11 (El Capitan) but art isn't supported on that either,
yet. I'm going from too old to too new.)
So instead I installed art on a CentOS machine, specifically
OSRELEASE=Linux_CentOS6.5-x86_64-gcc4.4.7.
One thing to notice is they want you (or at least the documentation expects
you) to use bash, not tcsh. This is fine with me, I much prefer bash, but
JLab seems to be pretty tcsh-centric.
Installation went like this:
mkdir -p art/products
> cd art/products/
> mkdir ../tmp
> cd ../tmp
> curl -O http://scisoft.fnal.gov/scisoft/bundles/tools/pullProducts
> chmod u+x pullProducts
> ./pullProducts ~rsholmes/art/products slf6 toyExperiment-v0_00_29 s14-e7
> debug
> cd ..
> rm -rf tmp
All of this worked. I didn't time it but I'd guess it took on the order of
30 minutes. The resulting art/products directory and its subdirectories
came to a total of 4.2G disk usage.
(There is a gotcha here however: Appendix B says you can do pullProducts
with prof, debug, or both (to get profile, debug, or both versions). I just
did debug. However, the workbook examples assume prof. For a while I was
able to get along by specifying debug instead of prof in command lines, but
eventually I hit a place where prof is evidently assumed in a shell script.
I gave up and installed the prof version at that point. That took about 15
minutes; many of the products already existed from the pullProducts debug
done earlier. Total disk usage in the products directory and subdirectories
after this was 5.4G.)
Next I created a setup script, again following Appendix B. I chose to put
it in the art directory; I also chose to create subdirectories art/output
and art/working. (For a serious installation I'd probably use our data/work
disk instead of the home disk for these directories.) Here is my setup
script:
source /home/rsholmes/art/products/setup
> export ART_WORKBOOK_OUTPUT_BASE=/home/rsholmes/art/output
> export ART_WORKBOOK_WORKING_BASE=/home/rsholmes/art/working
> export ART_WORKBOOK_QUAL=s14:e7
Following this I went back to Chapter 9 and followed the procedure in
9.6.1.1 and successfully ran art!
mep1[pre-built]$ art -c hello.fcl >& output/hello.log
> mep1[pre-built]$
> mep1[pre-built]$
> mep1[pre-built]$ cat output/hello.log
> %MSG-i MF_INIT_OK: art 18-Feb-2016 15:14:34 EST JobSetup
> Messagelogger initialization complete.
> %MSG
> 18-Feb-2016 15:14:35 EST Initiating request to open file
> inputFiles/input01.art
> 18-Feb-2016 15:14:35 EST Successfully opened file inputFiles/input01.art
> Begin processing the 1st record. run: 1 subRun: 0 event: 1 at 18-Feb-2016
> 15:14:35 EST
> Hello World! This event has the id: run: 1 subRun: 0 event: 1
> Hello World! This event has the id: run: 1 subRun: 0 event: 2
> Hello World! This event has the id: run: 1 subRun: 0 event: 3
> Hello World! This event has the id: run: 1 subRun: 0 event: 4
> Hello World! This event has the id: run: 1 subRun: 0 event: 5
> Hello World! This event has the id: run: 1 subRun: 0 event: 6
> Hello World! This event has the id: run: 1 subRun: 0 event: 7
> Hello World! This event has the id: run: 1 subRun: 0 event: 8
> Hello World! This event has the id: run: 1 subRun: 0 event: 9
> Hello World! This event has the id: run: 1 subRun: 0 event: 10
> 18-Feb-2016 15:14:35 EST Closed file inputFiles/input01.art
> TrigReport ---------- Event Summary ------------
> TrigReport Events total = 10 passed = 10 failed = 0
> TrigReport ------ Modules in End-Path: end_path ------------
> TrigReport Trig Bit# Visited Passed Failed Error Name
> TrigReport 0 0 10 10 0 0 hi
> TimeReport ---------- Time Summary ---[sec]----
> TimeReport CPU = 0.000680 Real = 0.000000
> Art has completed and will exit with status 0.
>From there on through Chapter 18 things went smoothly. There were a few
places where evidently the Workbook hasn't caught up with the software and
things were a little different than expected. (For instance: In chapter 10
they introduce the artmod tool, and say it will write a (superfluous)
destructor definition by default. But it didn't.) Generally these were easy
to spot and not consequential.
Chapter 19, the last chapter (3D Event Displays), was a no go: art -c
fcl/EventDisplay3D/eventDisplay01.fcl crashed immediately on my machine:
A cet::exception is going through WorkerT<EDAnalyzer>:
%MSG
> %MSG-s ArtException: EventDisplay3D:eventDisplay at BeginJob 25-Feb-2016
> 14:39:55 EST ModuleConstruction
> cet::exception caught in art
> ---- OtherArt BEGIN
> ---- FatalRootError BEGIN
> Fatal Root Error: @SUB=TEveViewer::SpawnGLViewer
> Insufficient support from the graphics hardware. Aborting.
> A cet::exception is going through WorkerT<EDAnalyzer>:
> Module type=EventDisplay3D, Module label=eventDisplay, Parameter Set ID=4e83570561ae955c6e64bec8e95d3950e1e15a1a,
> Process name=eventDisplay01,
> Release Version=v1_15_01, Pass ID=, Main Parameter Set
> ID=6c07a5d87929f54bec85265c36ad9a3edcd450a8
> ---- FatalRootError END
> ---- OtherArt END
> %MSG
> Art has completed and will exit with status 1.
I have no idea how or if I can fix this.
Up to that point, though, everything pretty much worked, as noted. The
documentation, which mostly consists only of the (incomplete) Workbook at
this time, is very good. It's 450+ pages with a lot left to be written. It
mostly tells you how to run art and write user analysis modules for it.
Writing the experiment-specific (SoLID) code for the users to use would go
well beyond that, of course.
It looks well designed to me and the code seems clean. This, by the way, is
the first time I've looked at C++11. From what I can tell most of what's
been added is fairly arcane stuff I don't know if I'd ever have a use for.
I do like, though, that we finally have range-based for loops:
for ( GenParticle const& gen : *gens ){
...
}
The functionality of art seems very good. As Ole has pointed out, the FHiCL
control language doesn't allow for doing things like computing parameters;
if you need to do that you might have to e.g. write a Python script to
generate FHiCL files. On the other hand FHiCL is, it seems to me, a cleaner
and easier to read/maintain way of driving analysis tasks than
Perl/Python/shell scripts, long multi-option command lines, and gcard
files.
So far art looks like a good framework choice for SoLID to me.
--
- Richard S. Holmes
Physics Department
Syracuse University
Syracuse, NY 13244
315-443-5977
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.jlab.org/pipermail/solid_software/attachments/20160225/f37ce662/attachment.html>
More information about the Solid_software
mailing list