Unlike the traditional approaches based on the jet width and eccentricity, usually derived using the principle-component analysis, (see, for example, Phys. Rev. D81 (2010) 114038), the current approach provides a significantly larger number of jet-shape characteristics: It goes beyond the simple jet elongation, and provides with various degrees of skewness of jet shapes in the longitudinal (along the major axis) and the transverse (along the minor axis) directions. This means that the approach can be used to detect jets with a triangular shape (!) assuming not only the geometrical shape topology, but also taking into account weights given by energies of jet constituents. This is potentially important for top quarks decaying to qqb, or other unbalanced energy flows inside a jet due to asymmetric decays. The best result is obtained for jets reconstructed with the kT algorithm (not anti-kT which makes circular jets!).
The main C++ code is "statshapes.cxx", which takes a jet (represented by the LParticle class) and builds all jet-shape variables using jet constituents (each represented by the CParticle class). LParticle and CParticle classes are given as convenient inputs (can be replaced by your interface classes).
You can get more instructions in the file "README". You can run a simple example reading a file with jet constituents by running the code (type "./main").
The package returns an array stat[] with 23 shape variables Below, 'quadrants' signifies the "quadrant method" while 'nq' denotes the "non-quadrant method" as defined in the paper hep-ph/1009.2749. The variables are defined there as well
Also below, 'method2' signifies an orthogonal projection of the jet-constituents onto the major and minor axis-lines before continuing with distance calculations.
Description of the output array:
0- major length (quadrants); distance between opposite major quadrant weighted centers
1- minor length (quadrants); distance between opposite minor quadrant weighted centers
2- Eccentricity (quadrants); 1- (stat[1]/stat[0])
3- semi-major length 1; distance from jet-center to closer major center (quadrants)
4- semi-major length 2; distance from jet-center to further major center (quadrants)
5- Major Eccentricity; 'skewness' of jet to one side of the minor axis; 1 - (stat[3]/stat[4])
6- semi-minor length 1 distance from jet-center to closer minor center (quadrants)
7- semi-minor length 2 distance from jet-center to further minor center (quadrants)
8- Minor Eccentricity; 'skewness' of jet to one side of the major axis; 1 - (stat[6]/stat[7])
9- absolute major length; distance between two furthest jet constituents (after major axis-line projection)
10- absolute minor length; distance between two furthest jet constituents (after minor axis-line projection)
11- major length "method2";
12- minor length "method2";
13- Eccentricity "method2"; 1 - (stat[12]/stat[11])
14- major length (nq); distance between opposite major semi-plane weighted centers
15- minor length (nq); distance between opposite minor semi-plane weighted centers
16- Eccentricity (nq); 1 - (stat[15]/stat[14])
17- major length "method2" (nq)
18- minor length "method" (nq)
19- Eccentricity "method2" (nq); 1-(stat[18]/stat[17])
20- Major Eccentricity (nq);
21- Minor Eccentricity (nq);
22- Fmax; fraction of jet energy held by the most energetic constituent
It should be noted that not all variables are interesting and some of them strongly correlate. The paper hep-ph/1009.2749 discusses a few most interesting variables.
The code also calculates the jet width and jet eccentricity using the principle-component analysis (PCA). In addition, it reconstructs the so-called pull values as described in hep-ph/1001.5027 by J.Gallicchio and M.D. Schwartz.