<div dir="ltr"><div>I've been trying out art. (It's supposed to be in italics, <i>art</i>, but I'm not about to start doing that.) I started off by downloading the Workbook<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="monospace, monospace"><a href="https://web.fnal.gov/project/ArtDoc/_layouts/15/WopiFrame.aspx?sourcedoc=%2Fproject%2FArtDoc%2FShared%20Documents%2Fart-documentation%2Epdf&action=view">https://web.fnal.gov/project/ArtDoc/_layouts/15/WopiFrame.aspx?sourcedoc=%2Fproject%2FArtDoc%2FShared%20Documents%2Fart-documentation%2Epdf&action=view</a></font></blockquote><div><br></div><div>and started reading. Then I started installing based on Appendix B.</div><div><br></div><div>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.)</div><div><br></div><div>So instead I installed art on a CentOS machine, specifically OSRELEASE=Linux_CentOS6.5-x86_64-gcc4.4.7.</div><div><br></div><div>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.</div><div><br></div><div>Installation went like this:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="monospace, monospace">mkdir -p art/products<br></font><font face="monospace, monospace">cd art/products/<br></font><font face="monospace, monospace">mkdir ../tmp<br></font><font face="monospace, monospace">cd ../tmp<br></font><font face="monospace, monospace">curl -O <a href="http://scisoft.fnal.gov/scisoft/bundles/tools/pullProducts">http://scisoft.fnal.gov/scisoft/bundles/tools/pullProducts</a><br></font><font face="monospace, monospace">chmod u+x pullProducts<br></font><font face="monospace, monospace">./pullProducts ~rsholmes/art/products slf6 toyExperiment-v0_00_29 s14-e7 debug<br></font><font face="monospace, monospace">cd ..<br></font><font face="monospace, monospace">rm -rf tmp</font></blockquote><div><br></div><div>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.</div><div><br></div><div>(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.)</div><div><br></div><div>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:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="monospace, monospace">source /home/rsholmes/art/products/setup<br></font><font face="monospace, monospace">export ART_WORKBOOK_OUTPUT_BASE=/home/rsholmes/art/output<br></font><font face="monospace, monospace">export ART_WORKBOOK_WORKING_BASE=/home/rsholmes/art/working<br></font><font face="monospace, monospace">export ART_WORKBOOK_QUAL=s14:e7</font></blockquote><div><br></div><div>Following this I went back to Chapter 9 and followed the procedure in 9.6.1.1 and successfully ran art!</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="monospace, monospace">mep1[pre-built]$ art -c hello.fcl >& output/hello.log<br></font><font face="monospace, monospace">mep1[pre-built]$ <br></font><font face="monospace, monospace">mep1[pre-built]$ <br></font><font face="monospace, monospace">mep1[pre-built]$ cat output/hello.log <br></font><font face="monospace, monospace">%MSG-i MF_INIT_OK:  art 18-Feb-2016 15:14:34 EST JobSetup<br></font><font face="monospace, monospace">Messagelogger initialization complete.<br></font><font face="monospace, monospace">%MSG<br></font><font face="monospace, monospace">18-Feb-2016 15:14:35 EST  Initiating request to open file inputFiles/input01.art<br></font><font face="monospace, monospace">18-Feb-2016 15:14:35 EST  Successfully opened file inputFiles/input01.art<br></font><font face="monospace, monospace">Begin processing the 1st record. run: 1 subRun: 0 event: 1 at 18-Feb-2016 15:14:35 EST<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 1<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 2<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 3<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 4<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 5<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 6<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 7<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 8<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 9<br></font><font face="monospace, monospace">Hello World! This event has the id: run: 1 subRun: 0 event: 10<br></font><font face="monospace, monospace">18-Feb-2016 15:14:35 EST  Closed file inputFiles/input01.art</font><font face="monospace, monospace"><br></font><font face="monospace, monospace">TrigReport ---------- Event  Summary ------------<br></font><font face="monospace, monospace">TrigReport Events total = 10 passed = 10 failed = 0</font><font face="monospace, monospace"><br></font><font face="monospace, monospace">TrigReport ------ Modules in End-Path: end_path ------------<br></font><font face="monospace, monospace">TrigReport  Trig Bit#    Visited     Passed     Failed      Error Name<br></font><font face="monospace, monospace">TrigReport     0    0         10         10          0          0 hi</font><font face="monospace, monospace"><br></font><font face="monospace, monospace">TimeReport ---------- Time  Summary ---[sec]----<br></font><font face="monospace, monospace">TimeReport CPU = 0.000680 Real = 0.000000</font><font face="monospace, monospace"><br></font><font face="monospace, monospace">Art has completed and will exit with status 0.</font></blockquote><div><br></div><div>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.</div><div><br></div><div>Chapter 19, the last chapter (3D Event Displays), was a no go: <font face="monospace, monospace">art -c fcl/EventDisplay3D/eventDisplay01.fcl</font> crashed immediately on my machine:</div><div><br></div><div>A cet::exception is going through WorkerT<EDAnalyzer>:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="monospace, monospace">%MSG<br></font><font face="monospace, monospace">%MSG-s ArtException:  EventDisplay3D:eventDisplay@BeginJob  25-Feb-2016 14:39:55 EST <span class="" style="white-space:pre">    </span>ModuleConstruction<br></font><font face="monospace, monospace">cet::exception caught in art<br></font><font face="monospace, monospace">---- OtherArt BEGIN<br></font><font face="monospace, monospace">  ---- FatalRootError BEGIN<br></font><font face="monospace, monospace">    Fatal Root Error: @SUB=TEveViewer::SpawnGLViewer<br></font><font face="monospace, monospace">    Insufficient support from the graphics hardware. Aborting.<br></font><font face="monospace, monospace">    A cet::exception is going through WorkerT<EDAnalyzer>:<br></font><font face="monospace, monospace">    Module type=EventDisplay3D, Module label=eventDisplay, Parameter Set <span class="" style="white-space:pre">   </span>ID=4e83570561ae955c6e64bec8e95d3950e1e15a1a, Process name=eventDisplay01, <br></font><font face="monospace, monospace">Release Version=v1_15_01, Pass ID=, Main Parameter Set <span class="" style="white-space:pre">       </span>ID=6c07a5d87929f54bec85265c36ad9a3edcd450a8<br></font><font face="monospace, monospace">  ---- FatalRootError END<br></font><font face="monospace, monospace">---- OtherArt END<br></font><font face="monospace, monospace">%MSG<br></font><font face="monospace, monospace">Art has completed and will exit with status 1.</font></blockquote><div><br></div><div>I have no idea how or if I can fix this.</div><div><br></div><div>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. </div><div><br></div><div>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:</div><div><span style="font-size:10pt;font-family:NimbusMonL;font-weight:700;background-color:rgb(255,248,220)"><br></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="times new roman, serif"><span style="font-size:10pt;font-weight:700;background-color:rgb(255,248,220)">for </span><span style="font-size:10pt;background-color:rgb(255,248,220)">( GenParticle </span><span style="font-size:10pt;font-weight:700;background-color:rgb(255,248,220)">const</span><span style="font-size:10pt;background-color:rgb(255,248,220)">& gen : </span><span style="font-size:10pt;vertical-align:-2pt;background-color:rgb(255,248,220)">*</span><span style="font-size:10pt;background-color:rgb(255,248,220)">gen</span><span style="background-color:rgb(255,248,220)">s ){</span> </font></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span style="background-color:rgb(255,248,220)"><font face="times new roman, serif"> ...</font></span></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><font face="times new roman, serif">} </font></blockquote><div><br></div><div>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. </div><div><br></div><div>So far art looks like a good framework choice for SoLID to me.</div><div><br></div>-- <br><div class="gmail_signature">- Richard S. Holmes<br>  Physics Department<br>  Syracuse University<br>  Syracuse, NY 13244<br>  315-443-5977<br></div>
</div>