[Rivet] Patch for Rivet to allow ordering of analyses and more fleshed out rivet-nopy

cholm cholm at nbi.dk
Mon May 1 13:26:04 BST 2017


Hi Developers,

I've made a small patch for Rivet that

- allow ordering of analyses
- fleshes out the program rivet-nopy (useful for debugging)

I attach the patch and a text file that explains the changes in some 
more detail.

I sent you a patch some time ago that makes configure figure out which 
FastJet plugins are available on the target system, but I cannot see 
that it has been applied yet.

Also, another thing I was thinking about: Parallelization of event 
processing.

I don't think it makes sense to parallelise AnalysisHandler it self - 
that is, there's no real need for calling Analysis::analyze in separate 
threads - I just don't think one will gain much from that, and the extra 
complexity in terms of synchronization could be too much and a killer.

So instead, I think one could use another paradigme - to parallelise on 
the events.  Suppose we had N inputs (files, fifo's, what not), we could 
then start N identical processes - one on each of the inputs.  E.g., 
with the input "files"

   input1
   input2
   input3

on which we want to run the analyses ana1, ana2, ana3, and ana4, we 
could do

   rivet -m process -a ana1,ana2,ana3,ana4 -o output1 input1
   rivet -m process -a ana1,ana2,ana3,ana4 -o output2 input2
   rivet -m process -a ana1,ana2,ana3,ana4 -o output3 input3

However, we want to collect the outputs into one merged output and then 
run Analysis::finalize for each of ana1, ana2, ana3, and ana4 on the 
merged output.  To do that, we'd call (another) application which

- reads the inputs
- merges what can be merged (e.g., YODA::Histo1D objects with the same 
path)
- sets up the same analyses objects
- sets the appropriate analysis objects on each analyses
- calls finalize on each analyses object

e.g.,

   rivet -m finalize -a ana1,ana2,ana3,ana4 -o final output1 output2 
output3

This would require that all classes derived from Analysis retrieves the 
needed analysis objects from the internal _analysisObjects container in 
Analysis::finalize - other than that, the user code could stay as is.  
PeRhaps the best option would be to add an interface for that - e.g., 
Analysis::initFinalize except to bring internal variables in order and 
called before Analysis::finalize.

Yours,

-- 
Christian Holm Christensen 
-------------------------------------------------
  Niels Bohr Institute, Blegdamsvej 17, DK-2100 Copenhagen
  http://cern.ch/cholm, +4524618591
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ah-container-nopy.md
URL: <https://www.hepforge.org/lists-archive/rivet/attachments/20170501/464b14ae/attachment.ksh>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ah-container-nopy.patch
Type: text/x-pascal
Size: 12684 bytes
Desc: not available
URL: <https://www.hepforge.org/lists-archive/rivet/attachments/20170501/464b14ae/attachment.p>


More information about the Rivet mailing list