Hi Gary, Since this is detailed I haven't sent it to the whole list. You have re-phrased most of the content of my comment correctly, but more clearly. My point about the 3-vectors comes from this section of code: else if (o instanceof IHep3Vector) { IHep3Vector in = (IHep3Vector) o; m_devis += Math.sqrt(in.mag2() + defaultMass); m_in.addElement(in); m_4vec.addElement(new HepLorentzVector(in.mag(),in)); } It looks like the 4-vector that is created consists of the 3-vector plus the magnitude of that 3-vector (ptot?) and does not use the defaultMass. It seems that the default Mass is used only for the m_devis which is later used (as esum) in the calls to the masscut methods. The comment about the mass**2 is only for the unwary, and under-informed, person like me. When I wanted to use the 3-vector version (the 4-vector version didn't work) with non-zero masses I found this method: /** * Set the mass to use when converting 3-vectors to 4-vectors * This is a static method so the mass applies to all instances * of AbstractJetFinder. The default is 0. * @param mass The new value to use */ public static void setAssumedMassFor3Vecors(double mass) { defaultMass = mass; } This is used to get: m_devis += Math.sqrt(in.mag2() + defaultMass); or m_devis += in.t(); if already a 4-vector. In doFindJets() there is: double esum = m_devis; so esum is with units GeV, say. Continuing in the routine is: // // create invariant mass pair array. // ymass = new double[m_np][m_np]; for (int i = 0; i < m_np - 1; i++ ) { for (int j = i + 1 ; j < m_np ; j++ ) { double cmass = calculate_mass(m_part[i], m_part[j]); // h_cmass.fill(cmass); Which I assumed was refering to mass (GeV/c^2), but the methods actually returned (GeV/c^2)^2. Just a naming convention/documentation issue. Since the code is consistent it it doesn't matter, it just caused a few moments confusion for someone snooping around in the guts since I was confused about how the 3-vector routine worked. If your whole live was devoted to making me happy you could add a few 2, similar to the vector .mag2(), in the name like: double cmass2 = calculate_mass2(m_part[i], m_part[j]); But I think you will have much more productive things to do with your time! I hope you didn't take this as a critcism, you have done an impressive job making these packages available. Also, please excuse my naive questions as I fumble my way back into JAS/Java/FLC code. Bob > Hi Bob, I'm not following your discourse very well. Can you clarify > what you mean when you say in point number 1:"All particles are > assumed massless in the jet mass calculations". You can pass the jet > finder either a set of three vectors (which, of course, have no rest > mass) or a set of four vectors which may imply a non-zero rest mass. > If you pass four vectors with a non-zero mass then the jet mass > calculation includes those masses. If you pass three vectors the jet > finder immediately turns them into four vectors and then does all the > rest of the processing based on four vectors. If you pass three > vectors the jet finder will convert them to four vectors with a mass > of zero unless you use the option to specify the same default mass for > all the vectors. You have correctly identified two errors about this > process of using an assumed mass for the three vector case, namely the > spelling error and the calculation error where the default mass should > have been squared.The other thing I need clarified is your comment in > several places to the effect that in some places "mass means > mass-squared". Can you tell me exactly where you see that happening > and I will try to make it read consistently to be "mass" when it is > mass and "mass-squared" when it is mass*mass (java does not have > mass**2 like fortran.) The masscut and the mass for Geneva are not in > the "correct" units as you point out but the only effect the two > parameters have is by working together where the difference in units > is consistent. Perhaps Geneva can be recoded to be consistent with the > other jet finders but then it probably won't be consistent with the > original authors discription of their jet finder. > > -----Original Message----- > From: Robert J. Wilson [mailto:[log in to unmask]] > Sent: Thursday, October 12, 2000 2:35 PM > To: lcd-sim > Subject: AbstractJetFinder -- observations (+bugs?) > > A few observations on AbstractJetFinder ... please excuse me if these are common knowledege, hopefully they will > > be useful to newbies at least (especially if experts correct my misunderstandings!). > > 1. All particles are assumed massless in the jet mass calculations. This wouldn't be important for high energy > > particles but may be for events with high jet multiplicity and with significant strange or baryon content. > > 2. There is a method to set a defaultMass: > > /** > * Set the mass to use when converting 3-vectors to 4-vectors > * This is a static method so the mass applies to all instances > * of AbstractJetFinder. The default is 0. > * @param mass The new value to use > */ > public static void setAssumedMassFor3Vecors(double mass) > { > defaultMass = mass; > } > > Note the unexpected spelling of "Vecors" :). This mass is only used to calculate the total energy of > > the enumeration passed to the finder if it consists of 3-vectors (the .t() method of LorentzVector is > > used otherwise). This is used for some masscut methods. > > There is a bug (?) in the current version so that you need to pass the mass**2 value (or it is just following > > the scheme elsewhere in the class that "mass" often means mass*2 - then just a slight change to the documentation > > would be enough). (I have notified to Gary about this). > > Note that the mass is NOT used to upgrade the particle/track 3-vectors, the energy component of the > > 4-vector created only uses the magnitude of the 3-vector (i.e. effectively mass=0.). This doesn't > > seem consistent to me, but perhaps there is a good reason for it. > > Currently, there is a bug in the JAS version that prevents the class from > ccepting LorentzVectors so > > this bug/perculiarity of the 3-vector input might catch a few people. (Tony knows about this problem, > > as he mentioned in his last posting). > > 3. As I mentioned above, for most of the calculations, "mass" often means mass**2. However, there are a > > few places where it may be confusing. For example, the energy sum passed as a parameter to the masscut is > > in linear units, but the masscut value returned is in units squared for all the methods except geneva. > > I think it is used consistently, but you might want to be careful if you reuse parts parts of the code since > > the naming convention may confuse you too(okay, so maybe I am easily confused!). > > 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.28.32 > Email: [log in to unmask] > ======================== > > > -- 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.28.32 Email: [log in to unmask] ========================