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 willbe 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 energyparticles 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 ofthe enumeration passed to the finder if it consists of 3-vectors (the .t() method of LorentzVector isused 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 followingthe scheme elsewhere in the class that "mass" often means mass*2 - then just a slight change to the documentationwould 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 the4-vector created only uses the magnitude of the 3-vector (i.e. effectively mass=0.). This doesn'tseem 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 sothis 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 afew places where it may be confusing. For example, the energy sum passed as a parameter to the masscut isin 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 sincethe 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] ========================