Hi Mike, thanks for the reply. > Bob, > > I'd like to hear what Tony has to say. I've been catching the > UnknownParticleID exceptions and handeling the different objects, like > strings, di-quarks, etc. I would propose that we extend the > DefaultParticlePropertyProvider by creating a > PythiaParticlePropertyProvider to handle the Particle ID exceptions that > the Pythia authors choose to make. In the LCD recon. files I used last year, there were a few non-standard oddities that I was happy to catch, for example the ID=123456789 "IDontknowino"! I noticed that the Pythia objects I was catching in v6.154, like strings (ID = 92), had an official code and name in the PDG book. I was also catching "real" particles, e.g. ID=415 (some excited state of a D that may not have been observed, but Pythia at least thinks it should exist -- there are numerous others like that). According to the Pythia manual, the author(s) use the algorithm that was developed for the PDG (with there input) for all particles. However, for a few they disagree about how the rule is applied. Since the PDG codes are (should be) the standard, should we put them (in their entirety) into the DefaultParticlePropertyProvider and put only the differences into a Pythia...? There are about 300 entries in the PythiaParticlePropertyProvider.java I generated from the Pythia code, only a few (I haven't checked which exactly) are different. I have checked a number of the "standard" particles. Another alternative (until someone does the XML version ... I may get to it at some point this year) is to take the Pythia list, prune it of the Pythia specific entries and provide that as the DefaultP... plus provide the PythiaP... in full. Should it have a version number in its name (currently I write it into a comment line)? A method to set the version? Is this making it too complicated? > > I've been working on a PythiaMonteCarloAnalyzer class that handles > reading generated Pythia events and deciphering the production channel > and decays. A base MonteCarloAnalyzer class provides a standard > interface to the generated information. You can find the code off my > SLAC directory at > > http://www.slac.stanford.edu/~ronan/code/lcd/hep.lcd.mc.analysis > > the methods in PythiaMonteCarloAnalyzer that might be of general > interest are: > > HEPLST(ParticleVector pv) - Provides a Pythia-like dump (see Tony's > new PlugIn) > interpretPythiaEvent(LCDEvent event) - Interprets Pythia documentation > and decay chains > I will take a look. > > It seems clear to me that we need to provide 1.) base classes to > handle routine interfacing to the generator information, and 2.) > subclasses for each of the standard generators to handle all the details > and exceptions that are introduced by the different authors. > > Mike > > P.S. There's nothing wrong with writing a FORTRAN program to test your > memory skills, but I wouldn't show it to anyone under 25 years of age. > Please send me a copy of your program and I'll try my hand at converting > it to Java using Native Interfacing to the Pythia common block. I thought I might get some grief for that! I used FORTRAN because Pythia is written in FORTRAN. I could simply copy the blockdata from their code and paste it into a modified version of their own subroutines (which convert internal IDs to PDG). This was the most expeditious way for me that has the least chance of me introducing errors. The compilation is a simple g77 pythnames.f. Future releases of Pythia will remain in FORTRAN for quite a while (though an effort is underway to produce an OO version). In that case, one would need only to repeat the copy, paste recompile, rerun to generate an updated code for JAS. Minimum effort and risk of errors? (Note the question mark). I agree that FORTRAN is an old nasty way to do things. The Pythia code uses IMPLICIT typing for integers (I-N) and reals so gives no warnings if a name typo introduces a variable with some random value. It is possible to to have the arrays in common blocks be single precision in some routines and double in others. Since there is a lot of legacy FORTRAN out there, I would be interested to see how you would handle this kind of task in Java. You have some complex routine/common that has to remain in FORTRAN but you want "foolproof" use of it in OO. Is the Native Interfacing a way of dropping a FORTRAN common block into a Java class? How does it handle notorious blockdata initialisations? I will send the FORTRAN in a separate mail so the rest of the list will not be offended by its presence ;-). Bob -- Robert J. Wilson Professor of Physics Department of Physics Colorado State University Fort Collins, CO 80523 Phone: (970) 491 5033 Fax: (970) 491 7947 Email: [log in to unmask] August 2000 - July 2001: ======================== Institut de Fisica d'Altes Energies Universitat Autonoma de Barcelona E-08193 Bellaterra (Barcelona) SPAIN Phone: (011 34) 93 581.33.22 Fax: (011 34) 93 581.19.38 Email: [log in to unmask] ========================