Home
FastJet 2.4.1 user manual - lpthe - Université Pierre et Marie CURIE
Contents
1. The second constructor allows one to modify by a multiplicative factor effective_Rfact the radius of the circle which is intersected with the Voronoi cells With effective_Rfact 1 for the k algorithm the Voronoi area is equivalent to the passive area Information about the specification in use is returned by return the value of effective_Rfact double effective_Rfact const return a textual description of the area definition std string description const 19 The Voronoi areas are calculated with the help of Fortune s N In N Voronoi diagram generator for planar static point sets 8 6 2 fastjet ClusterSequenceArea This is the main clas to which the user is exposed for accessing cluster sequences that include information about jet areas It is derived from fastjet ClusterSequenceAreaBase itself derived from fastjet ClusterSequence and includes the methods return a reference to the area definition virtual const fastjet AreaDefinition amp area_def const return the area associated with the given jet virtual double area const fastjet PseudoJet amp jet const return the error uncertainty associated with the determination of the area of the jet returns 0 when the repeat value 1 and also for the active_area_explicit_ghosts and certain passive areas virtual double area_error const fastjet PseudoJet amp jet const return a PseudoJet whose 4 vector is define
2. use area 4vector true gt use 4 vector area double median pt per unit something const amp RangeDefinition range bool use area 4vector const using jets within range and with 4 vector areas if use area 4vector calculate the median pt area p as well as an error uncertainty which is defined as the 1 sigma half width of the distribution of pt A obtained by looking for the value o such which a fraction 1 0 6827 2 of the jets including empty jets have p A lt p a A 22 EE The subtraction for a jet with uncorrected pt py and area is 1 1 pp pe pA oVA ce where the error is only that associated with the fluctuations in the noise and not that associated with the noise having caused changes in the hard particle content of the jet 1 NB subtraction may also be done with 4 vector area of course and this is recommended for jets with larger values of R as long as rho has also been determined with a 4 vector area using a scalar area causes one to neglect terms of relative order R 8 in the jet pr void get median rho and sigma const RangeDefinition amp range bool use area 4vector double amp median double amp sigma double amp mean area A version exists also without the last argument A final version that is present allows one to calculate the median based on an explicit li st of jets rather than the cluster sequence s
3. except that the new jet is attributed the momentum and user_index of newjet void plugin_record_ij_recombination int jet_i int jet_j double dij const PseudoJet amp newjet int amp newjet_k record the fact that there has been a recombination between jets jet_i and the beam with the specified diB when looking 28 or inclusive jets any iB recombination will returned to the user as a jet void plugin record iB recombination int jet i double diB These dij recombination functions return the index newjet_k of the newly formed pseudojet The plugin may need to keep track of this index in order to specify subsequent recombinations Certain cone jet algorithms do not perform pairwise clustering in these cases the plugin must invent a ficititious series of pairwise recombinations that leads to the same final jets Such jet algorithms may also produce extra information that cannot be encoded in this way for example a list of stable cones but to which one may still want access For this purpose during run clustering the plugin may call the ClusterSequence member function inline void plugin associate extras std auto ptr lt ClusterSequence Extras gt extras where ClusterSequence Extras is a dummy class which the plugin should extend so as to provide the relevant information class ClusterSequence Extras public virtual Extras virtual std string description const
4. recombine pa and pb and put result into pab virtual void recombine const PseudoJet amp pa const PseudoJet amp pb PseudoJet amp pab const 0 routine called to preprocess each input jet to make all input jets compatible with the scheme requirements e g massless virtual void preprocess PseudoJet amp p const a destructor to be replaced if necessary in derived classes virtual Recombiner F3 37 A jet definition can then be constructed by providing a pointer to an object derived from JetDefinition Recombiner instead of the RecombinationScheme index JetDefinition JetAlgorithm jet algorithm double R const JetDefinition Recombiner recombiner Strategy strategy Best The derived class JetDefinition DefaultRecombiner is what is used internally to implement the various recombination schemes if an external Recombiner is not provided It provides a useful example of how to implement a new Recombiner class References 10 11 12 13 14 M Cacciari and G P Salam Phys Lett B 641 2006 57 hep ph 0512210 S Catani Y L Dokshitzer M H Seymour and B R Webber Nucl Phys B 406 1993 187 S D Ellis and D E Soper Phys Rev D 48 1993 3160 hep ph 9305266 Y L Dokshitzer G D Leder S Moretti and B R Webber JHEP 9708 001 1997 hep ph 9707323 M Wobisch and T Wengler Hadronization corrections to jet cross sections in dee
5. return a vector of the particles that make up jet vector lt fastjet PseudoJet gt constituents const fastjet PseudoJet amp jet Note that this is a member function of the fastjet ClusterSequence and not of fastjet PseudoJet because jets are only meaningful when referred to a given fastjet ClusterSequencef If the user wishes to identify the constituents with the original particles provided to fastjet ClusterSequence she or he should have set a unique index for each of the original particles with the fastjet PseudoJet set user index function Subjet analysis To obtain the set of subjets at a specific deut scale inside a given jet one may use the following ClusterSequence member function return a vector of all subjets of the current jet in the sense of the exclusive algorithm that would be obtained when running the algorithm with the given dcut std vector lt PseudoJet gt exclusive subjets const PseudoJet amp jet const double amp dcut const If m jets are found this takes a time O mln m owing to the internal use of a priority queue Alternatively one may obtain the jet s constituents cluster them separately and then carry out an exclusive_jets analysis on the resulting ClusterSequence The results should be identical This second method is mandatory if one wishes to identify subjets with an algorithm that differs from the one used to find the original jets One can also make use of the followi
6. A method of ClusterSequence then provides the user with access to the extra information returns a pointer to the extras object may be null const Extras extras const The user should carry out a dynamic cast so as to convert the extras back to the specific plugin extras class as illustrated later for SISCone Example plugin jet algorithms that are provided with Fast Jet are the CDFMidPointPlugin illus trated above and also a CDFJetCluPlugin These interface code available at I9 The PxConePlugin interfaces the PxCone code 20 All three of these cone jet algorithms though widely used are in frared or collinear unsafe depending on the parameters The SISConePlugin described in detail below interfaces the infrared safe seedless cone algorithm of 7 Examples using these plugins and some further documentation are provided in the plugins directory 7 2 SISCone Plugin SISCone 7 is an implementation of a cone type jet algorithm As with most modern cone algorithms it is divided into two parts first it searches for stable cones then because a particle can appear in more than one stable cone a split merge procedure is applied which ensures that no particle ends up in more than one jet The stable cones are identified using an O N In N seedless approach This and some care in the the split merge procedure ensures that the jets it produces are insensitive to additional soft particles and collinear splittings
7. Best For the generalised k algorithm and its efe version one requires R and an extra parameter p and the following constructor should then be used fastjet JetDefinition fastjet JetAlgorithm jet algorithm double R double p fastjet RecombinationScheme recomb scheme E scheme fastjet Strategy strategy Best If the user calls a constructor with the incorrect number of arguments for the requested jet algorithm a fastjet Error exception will be thrown with an explanatory message The default constructor for JetDefinition provides the k algorithm with R 1 the default constructor is there for programming convenience and should not be taken to constitute a default recommendation for physics analyses The strategy selects the algorithmic strategy to use while clustering and is an enum of type fastjet Strategy with potentially interesting values listed in table B Nearly all strategies are based on the factorisation of energy and geometrical distance components of the d measure I In particular they involve the dynamic maintenance of a nearest neighbour graph for the geometrical 4As of v2 3 the JetAlgorithm name replaces the old JetFinder one in keeping with the Les Houches convention Backward compatibility is assured at the user level by a typedef and a doubling of the methods names Backward com patibility with versions lt 2 3 is however broken for user written derived classes of ClusterSequence as the prote
8. 1 cos 6 1 cos R dig EP 5b a di min E E 5a J for a general value of p and R At a given stage of the clustering sequence if a dj is smallest then and 7 are recombined while if a dig is smallest then 7 is called an inclusive jet For values of R lt v in eq 5 the generalised ee k algorithm behaves in analogy with the pp algorithms when an object is at an angle 6 x gt R from all other objects X then it forms an inclusive jet With the choice p 1 this provides a simple infrared and collinear safe way of obtaining a cone like algorithm for e e collisions since hard well separated jets have a circular profile on the 3D sphere with opening half angle R If one imagines a complex value of R such that 1 cos R gt 2 then the dig will be smallest only if the event consists of a single particle and thus with the additional choice of p 1 the clustering sequence will correspond to that of the efe k algorithm 9 often referred to also as the Durham algorithm which has a single distance dj 2min E EPI cos Oi 6 Note the difference in normalisation between the d in eqs 5 and 6 and the fact in neither case have we normalised to the total energy Q in the event contrary to the convention adopted originally in 9 where the distance measure was called y 5 6 Recombination schemes When merging particles in step 2 of the clustering procedure on
9. The class fastjet JetDefinition contains a full specification of how to carry out the clustering According to the Les Houches convention detailed in I a jet definition should include the jet name its parameters often the radius R and the recombination scheme Its constructor 3 id fastjet JetDefinition fastjet JetAlgorithm jet algorithm double R fastjet RecombinationScheme recomb scheme E scheme fastjet Strategy strategy Best 3The v 2 0 constructor without the recombination scheme argument still remains valid BIpt scheme BIpt2 scheme Table 1 Members of the RecombinationScheme enum the last two refer to boost invariant version of the p and p schemes as defined in section 5 0 The jet algorithm is one of the entries of the fastjet JetAlgorithm enum enum JetAlgorithm kt algorithm cambridge algorithm antikt algorithm genkt algorithm ee kt algorithm ee genkt algorithm 5 where the represent additional values that are present for internal or testing purposes R specifies the value of R that appears in eqs U2 The recombination scheme should be one of those listed in table I If it is omitted the E scheme is chosen For one algorihm ee_kt_algorithm there is no R parameter so the constructor is to be called without the R argument fastjet JetDefinition fastjet JetAlgorithm jet algorithm fastjet RecombinationScheme recomb_scheme E scheme fastjet Strategy strategy
10. a citation is needed here include fastjet TrackJetPlugin hh tiie TrackJetPlugin double radius RecombinationScheme jet_recombination_scheme pt_scheme RecombinationScheme track_recombination_scheme pt_scheme Two recombination schemes are involved the first one indicates how momenta are recombined to provide the final jets once particle jet assignments are known the second one indicates how momenta are combined in the procedure that constructs the jets The underlying code for this algorithm was written by the Fast Jet authors based on code extracts from the Rivet implementation written by Andy Buckley with input from Manuel Bahr and Rick Field Note this algorithm is believed to be Colls unsafe It is to be deprecated for new experimental or theoretical analyses 7 4 Other plugins for ete 7 4 1 Cambridge algorithm The original e e cambridge 4 algorithm is provided as a plugin include fastjet EECambridgePlugin hh ieee EECambridgePlugin double ycut This algorithms performs sequential recombination of the pair of particles that is closest in angle except when yij ee cos 0 gt Yeut in which case the less energetic of i and j is labelled a jet and the other member of the pair remains free to cluster To access the jets the user should use the inclusive jets i e as they would for the majority of the pp algorithms The underlying code for this algorithm was written by the Fas
11. i e the jets are infrared and collinear safe The plugin library and include files are to be be found in the plugins SISCone directory and the main header file is SISConePlugin hh The SISConePlugin class has a constructor with the following structure SISConePlugin double cone_radius 29 double overlap threshold 0 5 int n pass max 0 double protojet ptmin 0 0 bool caching false STSConePlugin SplitMergeScale split merge scale SISConePlugin SM_pttilde A cone centered at Ye de is stable if the sum of momenta of all particles i satisfying Ay A lt cone radius has rapidity Ye e The overlap threshold is the fraction of overlapping momentum above which two protojets are merged in a Tevatron Run II type 8 split merge procedure 4 The radius and overlap parameters are a common feature of most modern cone algorithms Because some event particles are not to be found in any stable cone PI SISCone can carry out multiple stable cone search passes as advocated in 22 in each pass one searches for stable cones using just the subset of particles not present in any stable cone in earlier passes Up to n_pass_max passes are carried out and the algorithm automatically stops at the highest pass that gives no new stable cones The default ofn pass max 0 is equivalent to setting it to oo Since concern has been expressed that an excessive number of stable cones may complicate cone jets in events with high noise 8
12. const returns the y momentum component double pz const returns the z momentum component double phi const returns the azimuthal angle in range 0 27 double phi std const returns the azimuthal angle in range 7 7 double rap const returns the rapidity double rapidity const returns the rapidity double pseudorapidity const returns the pseudo rapidity double eta const returns the pseudo rapidity double kt2 const returns the squared transverse momentum double perp2 const returns the squared transverse momentum double perp const returns the transverse momentum double m2 const returns squared invariant mass double m const returns invariant mass m if m lt 0 double mperp2 const returns the squared transverse mass k m double mperp const returns the transverse mass double operator int i const returns component i double operator int i const returns component i return a valarray containing the four momentum components 0 2 2 fastjet PseudoJet is the analogue of KtJet s KtLorentzVector A significant difference is that it is not derived from HepLorentzVector so as to allow compilation even without CLHEP are 3 momentum component 3 is energy valarray lt double gt four mom const It also allows the user to set and access an index in case the user wishes to keep track of the identity of a fast
13. deprecated for new experimental or theoretical analyses 33 7 3 4 ATLAS iterative cone The iterative cone with split merge algorithm used by ATLAS during the preparation for the LHC include fastjet AtlasConePlugin hh Ti hoe ATLASConePlugin double R double seedPt 2 0 double f 0 5 f is the overlap threshold The underlying code for this algorithm was extracted from SpartyJet 27 Note this algorithm is IR2 unsafe in the limit of zero seed threshold It is to be deprecated for new experimental or theoretical analyses 7 3 5 CMS iterative cone The iterative cone with progressive removal algorithm used by CMS during the preparation for the LHC include fastjet CMSIterativeConePlugin hh es ee CMSIterativeConePlugin double ConeRadius double SeedThreshold 0 0 The underlying code for this algorithm was extracted from the CMSSW web site with certain small service routines having been rewritten by the FastJet authors The resulting code was validated by clustering 1000 events with the original version of the CMS software and comparing the output to the clustering performed with the FastJet plugin The jet contents were identical in all cases However the jet momenta differed at a relative precision level of 1077 related to the use of single precision arithmetic at some internal stage of the CMS software while the FastJet version is in double precision Note this algorithm is Col
14. ee 35 ines eee ae eo eee eae ee eee 35 beet pase oie ees ene ee ew es eee eee 36 8 Compilation note 36 A External Recombination Schemes 37 1 Introduction This note documents the FastJet package which provides efficient geometrically based implemen tations I for the longitudinally invariant k 2 B inclusive Cambridge Aachen 4 B and anti k 6 jet algorithms It also provides access to tools that allow one to determine the areas of individual jets which is of importance when correcting for underlying event and pileup contamination Finally external jet algorithms can be accessed through the fastjet interface using a plugin facility The implementation of the inclusive Cambridge algorithm and of jet areas are new features of version 2 of FastJet other changes include a new interface and new algorithmic strategies that can provide a factor of two improvement in speed for events whose number N of particles 10 Choices of recombination schemes and plugins are new features of version 2 1 Version 2 2 introduces a broader set of area measures and the anti k algorithm 6 A plugin facility allows one to access external jet algorithms through the FastJet interface and overlays FastJet features such as areas onto the external jet algorithms Plugins are included for the fortran PxCone code and for the CDF C JetClu and MidPoint cone jet algorithms all infrared unsafe as well as the recent Seedless Infrared Safe Cone S
15. inclusive_jets virtual void get_median_rho_and_sigma const std vector lt PseudoJet gt amp all_jets const RangeDefinition amp range bool use_area_4vector double amp median double amp sigma double amp mean_area bool all_are_inclusive false const There are at least two ways this might be used One is if you want to exclude say some number of hardest jets from the estimate of p get list of jets vector lt PseudoJet gt all jets sorted by pt cs inclusive jets remove the two hardest jets you might do this more efficiently all jets erase all jets begin all jets begin 2 Get rho based on all but the two hardest jets The last argument MUST be set to true unless you are using explicit ghosts cs get median rho and sigma all jets range true median sigma mean area true Another way it might be used is if you have the Cambridge Aachen algorithm at some R value and wish to determine p based on the jets it would provide at a different jet radius R lt R without rerunning the clustering get list of jets at smaller R value vector lt PseudoJet gt all jets cs exclusive jets pow R R 2 The last argument MUST be set to false unless you are using explicit ghosts cs get median rho and sigma all jets range true median sigma mean area false This is useful for example if you wish to determine p at a series of different angular resolutions R It only works for
16. it overrides a virtual function already present in RangeDefinition For localizable classes override this function with a function that returns true virtual inline bool is localizable const to return true This causes the two following functions present but disabled in the base class to be enabled place the range on the rap phi position inline void set position const double amp rap const double amp phi place the range on the jet position inline void set position const PseudoJet amp jet They allow one to place an existing local range at the supplied position Note we expect the interface for ranges to evolve significantly in releases subsequent to 2 4 6 3 3 Background subtraction Once a range has been specified the following methods belonging to the base class ClusterSequenceAreaBase are available for extracting the diffuse noise level and its fluctuations the median of pt area for jets contained within range making use also of the info on n_empty_jets double median_pt_per_unit_area const RangeDefinition amp range const the median of pt area_4vector perp for jets contained within range making use also of the info on n_empty_jets double median_pt_per_unit_area_4vector const RangeDefinition amp range const the function that does the work for median_pt_per_unit_area and median pt per unit area 4vector use area 4vector false gt use plain area
17. the ghosts on the y grid and of their transverse momentum and mean_ghost_kt which is the average transverse momentum of the ghosts Even after the initialisation the parameters can be modified by void set_ghost_area double void set_ghost_etamax double void set_ghost_maxrap double void set_grid_scatter double void set_kt_scatter double void set_mean_ghost_kt double void set_repeat int and information about the GhostedAreaSpec in use can be retrieved as follows for a summary std string description const double ghost_etamax const double ghost_maxrap const double ghost_area const double grid_scatter const double kt_scatter const double mean_ghost_kt const int repeat O const 6 1 2 Voronoi Areas The Voronoi areas of jets are evaluated by summing the corresponding Voronoi areas of the jets constituents The latter are obtained by considering the intersection between the Voronoi cell of each particle and a circle of radius R centred on the particle s position in the rapidity azimuth plane The jets Voronoi areas can be obtained from fastjet ClusterSequenceArea by passing the proper fast jet VoronoiAreaSpec specification to fastjet AreaDefinition Its constuctors are default constructor effective_Rfact 1 fastjet VoronoiAreaSpec constructor that allows you to set effective_Rfact fastjet VoronoiAreaSpec double effective Rfact
18. Algorithmica 2 1987 1 The CDF code has been taken from http www pa msu edu huston Les Houches 2005 JetClu Midpo L A del Pozo and M H Seymour unpublished S D Ellis J Huston and M Tonnesmann in Proc of the APS DPF DPB Summer Study on the Future of Particle Physics Snowmass 2001 ed N Graf p P513 hep ph 0111434 TeV4LHC QCD Working Group et al hep ph 0610012 D Eppstein J Experimental Algorithmics 5 2000 1 23 ces DS 9912014 M H Seymour and C Tevlin JHEP 0611 2006 052 arXiv hep ph 0609100 W Bartel et al JADE Collaboration Z Phys C 33 1986 23 S Bethke et al JADE Collaboration Phys Lett B 213 1988 235 P A Delsart K Geerlings and J Huston SpartyJet http www pa msu edu huston SpartyJet Sparty J E Huth et al FNAL C 90 249 E published in the proceedings of the 1990 Summer Study on High Energy Physics Research Directions for the Decade Snowmass Colorado June 25 July 13 1990 39
19. Fast Jet 2 4 1 user manual Matteo Cacciari Gavin P Salam LPTHE Universit Pierre et Marie Curie Paris 6 Universit Denis Diderot Paris 7 CNRS UMR 7589 Gregory Soyez Brookhaven National Laboratory Upton NY USA Abstract FastJet provides fast N In N N implementations of the longitudinally invariant k anti ki and Cambridge Aachen jet algorithms for pp collisions based in part on tools and methods from the Computational Geometry community as well as a native implementation of the efe k algorithm Further jet algorithms including most of the other commonly used pp and efe algorithms can be accessed from the FastJet interface using a plugin mechanism FastJet also provides ways of determining jet areas Contents 3 1 fastiet PseudoJef 2 3 2 fastjet JetDefinition 3 3 fastjet ClusterSequencd 3 4 Version information 2 Example progra errr ere oe ones Nada auld ees eee ms TERETERE PEPEL ada TETERE TET TEEPEE are ere ere eps ba rp eee seen A 6 4 Example program with areas and subtraction o o aoa a a a a a a a a aa bre Saabs oe o PR Fae at a oot aa 7 3 1 CDF Midpomtl 2 42 ee 4 Scat Sch ie a th WER TEREE TE ae rd a 10 12 12 14 14 14 14 15 15 15 16 17 18 19 20 20 21 21 22 24 ge ee ee EO SE RE A Sd SR 34 E Mr e SS SR SR ee sce ae eae 34 ET a RO A O PR OR ee ee re 35 rm Se ee ANA ee JR ee Se Sa ee
20. ISCone jet algorithm 7 Version 2 3 introduced a new build system GNU autotools a broader range of areas and tools to help navigate the ClusterSequence Version 2 4 includes the new version 2 0 of SISCone as well as plugins to the D Run II cone the ATLAS cone the CMS cone and a range of ete algorithms and also further tools to help investigate jet substructure There is also a wrapper to FastJet allowing one to run SISCone and iterfrom a Fortran program The current implementation of the pp sequential recombinaion algorithms is restricted to the so called AR distance measure recommended in 8 with a choice of recombination schemes The k algorithm has both exclusive 2 and inclusive modes 3 the latter currently being in more widespread use though the exclusive mode may have physical advantages in certain cases 2 Quick start guide For the impatient the FastJet package can be set up and run as follows e Download the code and the unpack it wget http www lpthe jussieu fr salam fastjet repo fastjet X Y Z tar gz tar zxvf fastjet X Y Z tar gz lt br gt cd fastjet X Y Z e Compile and install choose your own preferred prefix and when you re done go back to the original directory configure prefix pwd fastjet install make make check make install CA us The old one though retained through v2 is deprecated and will be removed in v3 e Now paste the following piece of code into a file called short example
21. Its two main constructors are fastjet AreaDefinition fastjet AreaType area type fastjet GhostedAreaSpec ghost spec for the various active and passive areas which all involve ghosts and fastjet AreaDefinition fastjet VoronoiAreaSpec voronoi_spec for the Voronoi area A default constructor exists and provides an active area with a ghost_spec that is suitable for a majority of area measurements with clustering algorithms and typical Tevatron and LHC rapidity coverage Information about the current AreaDefinition can be retrieved as follows return a description of the current area definition std string description const return info about the type of area being used by this defn AreaType area_type const return a reference to the ghosted area spec where relevant const GhostedAreaSpec amp ghost_spec const return a reference to the voronoi area spec where relevant const VoronoiAreaSpec amp voronoi spec const 17 6 1 1 Ghosted Areas active and passive There are two variants each of the active and passive areas as defined by the AreaType enum enum fastjet AreaTypet active_area active_area_explicit_ghosts one_ghost_passive_area passive_area The two active variants give identical results The second one explicitly includes the ghosts when the user requests the constituents of a jet The first of the passive variants explicitly runs through the procedure
22. Midpoint One of the two algorithms used by CDF in Run II of the Tevatron based on 8 It is a midpoint type iterative cone with a split merge step include fastjet CDFCones hh ager CDFMidPointPlugin double R double overlap_threshold double seed_threshold 1 0 double cone_area_fraction 1 0 The overlap threshold f used by CDF is usually 0 5 the seed threshold is 1GeV and in most measurements the cone area fraction is 1 With an area fraction lt 1 this becomes the searchcone 32 algorithm of PI Further control over the plugin can be obtained by consulting the header file The underlying code for this algorithm was taken from a webpage provided by Joey Huston with minor modifications to ensure reasonable run times with optimising compilers for 32 bit intel processors these modifications do not affect the final jets Note this algorithm is IR3 1 unsafe in the limit of zero seed threshold 7 with cone area fraction 1 it becomes IR2 unsafe 22 It is to be deprecated for new experimental or theoretical analyses 7 3 2 CDF JetClu The other algorithm used by CDF during Run II as well as their main algorithm during Run I include fastjet CDFCones hh I fxs CDFJetCluPlugin double cone_radius double overlap_threshold double seed_threshold 1 0 int iratch 1 This is an iterative cone with split merge and optional ratcheting if iratch 1 particles that appe
23. _def_recombiner true In this case the user index no longer contains the information about the pass Since SISCone is infrared safe it may meaningfully be used also with the ClusterSequenceArea class Note however that in that case ones loses the cone specific information from the jets because of the way FastJet filters out the information relating to ghosts in the clustering If the user needs both areas and cone specific information she he may use the 31 ClusterSequenceActiveAreaExplicitGhosts class for usage information see the corresponding hh file A final remark concerns speed and memory requirements as mentioned above SISCone takes O N ln N time to find jets and the memory use is O N taking N 10 as a reference point it runs in a few tenths of a second making it about 100 times slower than native Fast Jet algorithms These are expected results i e valid for a suitably random set of particles In area determinations the ghost particles are anything but random and run times and memory usage are in practice somewhat larger than for a normal QCD event with the same number of particles We therefore recommend running with not too small a ghost area e g 0 05 and using grid scatter 1 which helps to reduce the number of stable cones and correspondingly the time and memory usage of the subsequent split merge step An alternative which has been found to be acceptable in most situations is to use a pass
24. ar in one iteration fo a cone are retained in future iterations The overlap threshold is usually set to 0 75 in CDF analyses Further control over the plugin can be obtained by consulting the header file The underlying code for this algorithm was taken from a webpage provided by Joey Huston Note this algorithm is IR unsafe and some IR unsafety persists with non zero seed threshold It is to be deprecated for new experimental or theoretical analyses Note also that the underlying implementation groups particles ogether into calorimeter towers with CDF type geometry before running the jet algorithm 7 3 3 D Run II cone The main algorithm used by DO in Run II of the Tevatron which is a midpoint type iterative cone with split merge include fastjet DORunIIConePlugin hh dd das DORunIIConePlugin double R double min jet Et double split ratio 0 5 Instead of a seed threshold the algorithm places a cut on the minimum E of the cones during iteration related to min jet Et The split ratio is the same as the overlap threshold in other split merge based algorithms D usually use 0 5 It is the Fast Jet authors understanding that two values have been used for min jet Et 8GeV in earlier publications and 6 GeV in more recent publications The underlying code for this algorithm was provided by Lars Sonnenschein Note this algorithm is IR3 unsafe IR2 for jets with energy too close to min jet Et It is to be
25. arameters double Rparam 1 0 fastjet Strategy strategy fastjet Best fastjet JetDefinition jet_def fastjet kt_algorithm Rparam strategy run the jet clustering with the above jet definition fastjet ClusterSequence clust_seq input_particles jet def extract the inclusive jets with pt gt 5 GeV double ptmin 5 0 vector lt fastjet PseudoJet gt inclusive jets clust_seq inclusive_jets ptmin extract the exclusive jets with dcut 25 GeV 2 and sort them in order of increasing pt double dcut 25 0 vector lt fastjet PseudoJet gt exclusive jets sorted by pt clust seq exclusive jets dcut print out the details for each jet for unsigned int i 0 i lt exclusive jets size i 1 get constituents of the jet NB this is through a member function of clust seg because that is where the information is held vector lt fastjet PseudoJet gt constituents clust_seq constituents exclusive_jets i printf 5u 15 8f 15 8f 15 8f 8u n i exclusive jetsli rap exclusive jets i phiO exclusive jetsli perp constituents size 13 5 FastJet native jet algorithms 5 1 k jet algorithm The definition of the inclusive k jet algorithm that is coded is as follows and corresponds to 3 modulo small changes of notation 1 For each pair of particles i 7 work out the k distance dij min ke ki AR R 1 with AR yi yj di 45 where ky yi and are
26. cc tinclude fastjet ClusterSequence hh include lt iostream gt using namespace fastjet using namespace std int main vector lt PseudoJet gt particles an event with two particles px py pz E particles push_back PseudoJet 100 0 0 0 100 0 particles push_back PseudoJet 100 0 0 0 100 0 choose a jet definition double R 0 7 JetDefinition jet_def kt_algorithm R run the clustering extract the jets ClusterSequence cs particles jet def vector lt PseudoJet gt jets cs inclusive_jets print the jets cout lt lt pt y phi lt lt endl for unsigned i 0 i lt jets size i cout lt lt jet lt lt i lt lt lt lt jets i perpQ lt lt lt lt jetsli rap lt lt lt lt jets i phi lt lt endl e Then compile and run it with g short example cc o short example fastjet install bin fastjet config cxxflags fastjet install bin fastjet config libs The output will consist of a banner followed by the lines pt y phi jet 0 100 0 3 14159 jet 1 10000 3 Jet finding interface The FastJet code is written in C From the point of view of simple usage its interface has a number of similarities to that of KtJet 10 fundamental differences being highlighted below All classes are contained in the fastjet namespace For basic usage the user is exposed to three main classes class fastjet PseudoJet class fastj
27. cted variables default jet finder and jet finder have been replaced by default_jet_algorithm and _jet_algorithm N2Plain a plain N algorithm fastest for N lt 50 N2Tiled a tiled N algorithm fastest for 50 lt N lt 400 N2MinHeapTiled a tiled N algorithm with a heap for tracking the minimum of dij fastest for 400 S N lt 15000 N1nN the Voronoi based N In N algorithm fastest for N 2 15000 NlnNCam based on Chan s N In N closest pairs algorithm fastest for N 6000 suitable only for the Cambridge jet algorithm Best automatic selection of the best of these based on N and R Table 2 The more interesting of the various algorithmic strategies for clustering Other strategies are given JetDefinition hh note however that strategies not listed in the above table may disappear in future releases For jet algorithms with spherical distance measures those whose name starts with ee_ only the N2Plain strategy is available distances They apply equally well to any of the internally implemented jet algorithms The one ex ception is NlnNCam which is based on a computational geometry algorithm for dynamic maintenance of closest pairs 12 rather than the more involved nearest neighbour graph and is suitable only for the Cambridge algorithm whose distance measure is purely geometrical The N2Plain strategy uses a nearest neighbour heuristic I3 approach to maintaining the ge ometrical nearest neighbour graph N2Tiled
28. d by the following integral J dydy PseudoJet y p 1 O y d inside jet boundary tis where PseudoJet y p 1 is a 4 vector with the given rapidity y azimuth 9 and p 1 while O y inside jet boundary is a function that is 1 when y define a direction inside the jet boundary and O otherwise ARA virtual fastjet PseudoJet area 4vector const PseudoJet amp jet const When the AreaType is active area explicit ghosts one may additionally use the following func tion true if a jet is made exclusively of ghosts virtual bool is_pure_ghost const PseudoJet amp jet const to determine whether a jet is made purely of ghosts Its argument can also be one of the constituents of a jet in which case it will return true if that constituent is a ghost 6 3 Areas and background subtraction Jet areas can be used to study the level of a randomly distributed diffuse background which might be present together with the hard event of interest After selecting a phase space region over which to analyse the jets one can determine the average level rho transverse momentum per unit area of as ClusterSequenceArea makes use of one among ClusterSequenceActiveArea ClusterSequenceActiveAreaExplicitGhosts ClusterSequencePassiveArea ClusterSequenceiGhostPassiveArea or ClusterSequenceVoronoiArea all of them in the fastjet namespace of course according to the choice made with AreaDefinition The user mi
29. dded to the ghost positions as compared to a perfect grid distribution To obtain a reliable area one may then repeat the area determination several times the number of times being specified by the repeat variable For hadron level events a value of 5 is sufficient to give jet areas that are determined to within a few percent In practice it is usually satisfactory even to set repeat 1 and this is the default since it runs faster For events with a dense distribution of true particles there is no degeneracy in the ghost clustering and there is no need at all to use repeat gt 1 If repeat gt 1 a statistical uncertainty on the area given by o v repeat 1 is provided for each jet Note that the repeat value is ignored i e taken to be 1 for active area explicit ghosts and meaningless for the passive area in the k algorithm which just calculates the Voronoi area discussed below since they are identical 10This ability is provided for k Cambridge Aachen anti k and the SISCone plugin In the case of k it is actually a Voronoi area that is used since this can be shown to be equivalent to the passive area I6 For other algorithms it defaults back to the one_ghost_passive_area approach HOr accept a default which uses the default values listed in the explicit constructor and ghost maxrap 6 18 Other variables that the user may wish to set are grid scatter and kt scatter which are fractional random fluctuations of the position of
30. e must specify how to combine the momenta The simplest procedure E scheme simply adds the four vectors This has been advocated as a Standard in 8 and is the default option in Fast Jet 15 Other schemes for pp collisions Other schemes provided by earlier k clustering implementations 10 are the p p E and E schemes They all incorporate a preprocessing stage to make the initial momenta massless rescaling the energy to be equal to the 3 momentum for the p and p schemes rescaling to the 3 momentum to be equal to the energy in the E and E schemes Then for all schemes the recombination p of p and p is a massless 4 vector satisfying Ptr Pri Dto 7a br widi wjhj wi wy 7b Yr wiys w y w Wy 7c where w is pri for the p and E schemes and is p for the p and E schemes Note that for massive particles the schemes defined in the previous paragraph are not invariant under longitudinal boosts We therefore also introduce boost invariant p and p schemes which are identical to the normal p and p schemes except that they omit the preprocessing stage Other schemes for ete collisions On request we may in the future provide dedicated schemes for efe collisions User defined schemes The user may define their own custom recombination schemes as de scribed in Appendix A 6 Jet areas Since a jet is made up of only a finite number of particles one needs a specific defin
31. e plugin Note that the it makes no sense to ask for exclusive jets from a SISCone based ClusterSequence Some extra output information is appropriate for a cone algorithm that is not of relevance in clustering algorithms through the extras resource const fastjet SISConeExtras extras dynamic cast lt const fastjet SISConeExtras gt clust seg extras To determine the pass at which a given jet was found one does the following int pass extras gt pass jet The user may also obtain a list of the positions of original stable cones as follows vector lt fastjet PseudoJet gt stable cones extras gt stable cones The stable cones are represented as four momenta for which only the rapidity and azimuth are meaningful The user index indicates the pass at which a given stable cone was found In the current version of SISCone the user index of a jet also corresponds to the pass at which it was found however this manner of accessing the pass for a jet is deprecated for reasons related to the internal representation of jets it fails for single particle jets It is retained in version 2 4 for backwards compatibility but will be removed at some stage in the future SISCone uses E scheme recombination internally and also for constructing the final jets from the list of constituents For the latter task the user may instead instruct SISCone to use the jet definition s own recombiner with the command plugin gt set_use_jet
32. e user s own jet algorithm and transferring the information to the ClusterSequence class This is best illustrated with an example using namespace fastjet void CDFMidPointPlugin run_clustering ClusterSequence amp clust_seq when run_clustering is called the clust_seq has already been filled with the initial particles which are available through the jetsQ array const vector lt PseudoJet gt amp initial_particles clust_seq jets it is up to the user to do their own clustering on these initial particles ae Once the plugin has run its own clustering it must transfer the information back to the clust_seq This is done by recording mergings between pairs of particles or between a particle and the beam The new momenta are stored in the clust_seq jets vector after the initial particles Note though that the plugin is not allowed to modify clust_seq jets itself Instead it must tell clust_seq what recombinations have occurred via the following ClusterSequence member functions record the fact that there has been a recombination between jetsQ jet il and jets jet_k with the specified dij and return the index newjet_k allocated to the new jet whose momentum is assumed to be the 4 vector sum of that of jet_i and fit jee void plugin_record_ij_recombination int jet_i int jet_j double dij int amp newjet_k as for the simpler variant of plugin_record_ij_recombination
33. et JetDefinition class fastjet ClusterSequence fastjet PseudoJet provides a jet object with a four momentum and some internal indices to situate it in the context of a jet clustering sequence fastjet ClusterSequence is the class that carries out jet clustering and provides access to the final jets The class fastjet JetDefinition contains a specification of how jet clustering is to be per formed Such a class was not present in version 1 of FastJet nor in KtJet but was found to be useful to contain the complexity of the interface as new features such as alternative jet algorithms and jet area determination were introduced 3 1 fastjet PseudoJet Al jets as well as input particles to the clustering optionally are fastjet PseudoJet objects They can be created using one of the following constructors fastjet PseudoJet double px double py double pz double E template lt class T gt fastjet PseudoJet const T amp some lorentz vector where the second form allows the initialisation to be obtained from any class T that allows subscripting to return the components of the momentum running from 0 3 in the order py py pz E for example the CLHEP HepLorentzVector classP It includes the following member functions for accessing the components double E const returns the energy component double e const returns the energy component double px const returns the x momentum component double py
34. ets evaluates the median transverse momentum per unit area of the event both for the standard area and the alter native 4 vector area and performs the subtraction of the background noise from the hard jets 24 include fastjet ClusterSequenceArea hh namespace fj fastjet using namespace std int main int argc char argv select the jet algorithm kt with R 0 7 double R 0 7 fj JetDefinition jet def fj kt algorithm R select the area type active area with default ghosts fj AreaDefinition area def fj active area read in input particles double px py pz E vector lt fj PseudoJet gt input particles while cin gt gt px gt gt py gt gt pz gt gt E 1 input particles push back fj PseudoJet px py pz E cluster the event also obtaining area information fj ClusterSequenceArea csa input particles jet def area def get list of jets with pt gt 5 GeV vector lt fj PseudoJet gt jets csa inclusive_jets 5 0 set the rapidity azimuth range within which to study background double rapmax 4 0 fj RangeDefinition range rapmax get median pt of all jets using standard area double median_pt csa median_pt_per_unit_area range get median pt of all jets using area_4vector double median_pt_4vect csa median_pt_per_unit_area_4vector range cout lt lt in Median rho pt per unit area lt lt median pt lt lt GeV n n cout lt lt i rap ph
35. ght of course also use these classes directly 20 the background and also subtract it from the hard jets This way of using jets to determine the noise level on an event by event basis was introduced and described in 77 Note that we recommend that you use only the k or Cambridge Aachen algorithms for calculating the UE pileup density p In fact it is important to avoid algorithms with extreme behaviours for the areas In particular one should not use anti k which has many jets with near zero area or SISCone which can have jets with near zero area as well as monster jets with huge areas if the overlap parameter f is too small In contrast the k and Cambridge Aachen algorithms are suitable Once p has been determined using k or Cambridge Aachen and an appropriate value of R typi cally of order 0 4 0 6 see 7 for more details its value can then be used for UE pileup subtraction in an analysis using any jet algorithm 6 3 1 Fixed range The fastjet RangeDefinition class allows the user to set the rapidity azimuth range over which he she wishes to study the areas of the jets It has two constructors The first is constructor for a range definition given by ly lt rapmax fastjet RangeDefinition double rapmax which defines a range inclusive in azimuth 0 27 and bound by a maximum value for abs y The second constructor constructor for a range definition given by vapmin lt y lt rapmax phimin lt
36. i pt area pt_sub pt_sub_4vect lt lt endl perform subtraction output results for unsigned i 0 i lt jets size i get area of jet i double area csa area jets i get area 4vector of jet i fj PseudoJet area4vect csa area 4vector jetsli standard subtraction double pt_sub jets i perp median_pt area 4 vector subtraction fj PseudoJet jet sub jets i median_pt_4vect area4vect print out results 25 printf 2u 7 3f 7 3f 7 3f 7 3f 7 3f 7 3f n i jets i rapQ jets i phi jets i perpQ area pt_sub jet_sub perp Note that the above listing ignores the issue of cases where the transverse momentum to be subtracted is larger than the jet s p This occurs when the jet is not really a true hard jet but rather mostly composed of the background contamination In such cases the subtraction should not be performed and the jet should be instead be discarded For convenience the above operations are pre packaged together with a certain number of safety checks in particular if the subtracted transverse momentum is too large routines that return a jet set all of its components to zero Methods that are given a RangeDefinition object in input and therefore calculate p themselves do it according to area 4vector unless a further input flag is present and false return a vector of all subtracted jets using area 4vector given rho Only inclusive_jets above
37. ingle clustering We note that the true exclusive formulation of the Cambridge algorithm 4 instead makes use an auxiliary k distance measure and freezes pseudojets whose recombination would involve too large a value of the auxiliary distance measure 5 3 Anti k jet algorithm This new algorithm introduced and studied in 6 is defined exactly like the standard k algorithm except for the distance measures which are now given by di min 1 kj 1 kj ARG R 3a 14 While being a sequential recombination algorithm like k and Cambridge Aachen the anti k algorithm behaves in some sense like a perfect cone algorithm in that its hard jets are exactly circular on the y cylinder 6 5 4 Generalised k jet algorithm The generalised k algorithm again follows the same procedure but depends on an additional continuous parameter p with has the following distance measure dy mink RAR 4a tj dig k 4b For specific values of p it reduces to one or other of the algorithms list above k p 1 Cam bridge Aachen p 0 and anti k p 1 5 5 Generalised k algorithm for efe collisions Fast Jet also provides native implementations of clustering algorithms in spherical coordinates specif ically for ete collisions along the lines of the original k algorithms 9 but extended in analogy with the generalised pp algorithm of 6 and section 5 4 We define the two following distances
38. ition in order to make its area i e the surface in the y plane over which it extends an unambiguous concept Three definitions of area have been proposed in 16 and they are implemented in Fast Jet e Active areas add a uniform background of extremely soft massless ghost particles to the event and allow them to participate in the clustering The area of a given jet is proportional to the number of ghosts it contains Because the ghosts are extremely soft and sensible jet algorithms are infrared safe the presence of the ghosts does not affect the set of user particles that end up in a given jet e Passive areas are defined as follows One adds a single randomly placed ghost at a time to the event One examines which jet if any the ghost ends up in One repeats the procedure many times and the passive area of a jet is then proportional to the probability of it containing the ghost e The Voronoi area of a jet is the sum of the Voronoi areas of its constituent particles The Voronoi area of a particle is obtained by determining the Voronoi diagram for the event as a whole and intersecting the Voronoi cell of the particle with a circle of radius R centred on the particle Note that for the k algorithm but not for Cambridge Aachen or anti k nor in general for any other algorithm the Voronoi area of a jet coincides with its passive area The area can be calculated either as a scalar or as a 4 vector Essentially the scalar case corre
39. ive area since this is relatively fast to calculate with SISCone 7 3 Other plugins for pp Not all plugins are enabled by default in FastJet At configuration time configure sh help will indicate which ones get enabled by default To enable all plugins run configure with the argument enable allplugins while to enable all but PxCone which requires fortran and can introduce link time issues use enable allcxxplugins All plugins are in the fastjet namespace Below we show the file that needs to be included and the constructor for each plugin Except where stated the usual way to access jets from these plugins is through ClusterSequence inclusive jets Most of the algorithms listed below are either infrared IR or collinear unsafe The details are indicated for each algorithm as follows IR 1 means that the hard jets may be modified if to an ensemble of n hard particles in a common neighbourhood one adds a single soft particle Coll 1 means that for n hard particles in a common neighbourhood the collinear splitting of one of them may modify the hard jets The FastJet authors and numerous theory experiment accords advise against the use IR and collinear safe jet algorithms Interfaces to these algorithms have been provided mainly for legacy comparison purposes As of FastJet version 2 4 this section is partially incomplete in particular it misses many refer ences This will hopefully evolve for future versions 7 3 1 CDF
40. jet PseudoJet object set the user index intended to allow the user to label the object void set user index const int index return the user index int user index const A PseudoJet can be reset with reset the 4 momentum according to the supplied components and put the user and history indices back to their default values inline void reset double px double py double pz double E and similarly taking as argument a templated some_lorentz_vector or a PseudoJet in the latter case the user and internal indices are inherited Finally the x and operators are defined with acting on pairs of PseudoJets and acting on a PseudoJet and a double coefficient Analogous etc operators are also defined We also provide routines for taking an unsorted vector of fastjet PseudoJets and returning a sorted vector return a vector of jets sorted into decreasing transverse momentum vector lt fastjet PseudoJet gt sorted_by_pt const vector lt fastjet PseudoJet gt amp jets return a vector of jets sorted into increasing rapidity vector lt fastjet PseudoJet gt sorted_by_rapidity const vector lt fastjet PseudoJet gt amp jets return a vector of jets sorted into decreasing energy vector lt fastjet PseudoJet gt sorted_by_E const vector lt fastjet PseudoJet gt amp jets These will typically be used on the jets returned by fast jet ClusterSequence 3 2 fastjet JetDefinition
41. l3 unsafe 6 It is to be deprecated for new experimental or theoretical analyses 7 3 6 PxCone A fortran plugin for the PxCone algorithm which is an iterative cone with midpoints and a split drop procedure include fastjet PxConePlugin hh FEF es PxConePlugin double cone_radius i double min jet energy 5 0 double overlap threshold 0 5 bool E_scheme_jets false with a threshold on the minimum cone transverse energy if it is to be included in the split drop stage If E_scheme_jets is true then the plugin applies an E scheme recombination to provide the momenta of the final jets by default an E type recombination scheme is used 34 The base code for this plugin is written in Fortran and on some systems problems have been reported at the link stage due to mixing Fortran and C The Fortran code has been modified by the FastJet authors to provide the same jets regardless of the order of the input particles This involved a small modification of the midpoint procedure which can have a minor effect on the final jets and should make the algorithm correspond to the description of 24 The underlying code for this algorithm was taken from a google search for PxCone Note this algorithm is IR3 unsafe It is to be deprecated for new experimental or theoretical analyses 7 3 7 TrackJet This algorithm has been used at the Tevatron for identifying jets from charged particle tracks in underlying event studies
42. le c counting how many ghosts end up in a given jet virtual bool supports_ghosted_passive_areas const return false set the ghost separation scale for passive area determinations in future runs NB const so should set internal mutable var virtual void set_ghost_separation_scale double scale const virtual double ghost_separation_scale const A JetDefinition can be constructed by providing a pointer to a JetDefinition Plugin the resulting JetDefinition object can then be used identically to the normal JetDefinition objects used in the previous sections have some plugin class derived from the Plugin base class class CDFMidPointPlugin public fastjet JetDefinition Plugin 13Except those that perform 3 2 clusterings for which there is no unique mapping of particles into jets some particles are effectively shared among more than one jet 27 create an instance of the CDFMidPointPlugin class CDFMidPointPlugin cdf midpoint options create the jet definition fastjet JetDefinition jet_def fastjet JetDefinition amp cdf_midpoint then create ClusterSequence with the input particles and jet_def and use it to extract jets as usual Any plugin class must define the description and run_clustering member functions The former just returns a textual description of the jet algorithm and its options e g radius etc while the latter does the hard work of running th
43. mentioned above i e it clusters the events with one ghost at a time and repeats this for very many ghosts This can be quite slow so we also provide the passive_area option which makes use of information specific to the jet algorithm in order to speed up the passive area determination In order to carry out a clustering with a ghosted area determination the user should also create an object that specifies how to distribute the ghosts This is done via the class fast jet GhostedAreaSpec whose constructor is fastjet GhostedAreaSpec double ghost_maxrap int repeat double ghost_area double grid scatter double kt scatter 0 1 double mean_ghost_kt 1e 100 a 1 Horn 0 0 gt The ghosts are distributed on a uniform grid in y and with small random fluctuations to avoid degeneracies The ghost_maxrap defines the maximum rapidity up to which ghosts are generated typically jet areas will be reliable for jets up to rapidity y ghost_maxrap R The ghost area is the area associated with a single ghost The number of ghosts is inversely proportional to the ghost area and so a smaller area leads to a longer CPU time for clustering However small ghost areas give more accurate results We have found the default ghost area given above to be suitable for most applications For sparse events the set of ghost particles that end up in a given jet is not unique and depends on the degeneracy breaking random shifts a
44. ng methods which allow one to follow the merging sequence and walk back through it 8This is a further respect in which the interface differs from that of KtJet 11 if the jet has parents in the clustering it returns true and sets parenti and parent2 equal to them if it has no parents it returns false and sets parenti and parent2 to zero bool has parents const PseudoJet amp jet PseudoJet amp parenti PseudoJet amp parent2 const if the jet has a child then return true and give the child jet otherwise return false and set the child to zero bool has_child const PseudoJet amp jet PseudoJet amp child const if this jet has a child and so a partner return true and give the partner otherwise return false and set the partner to zero bool has_partner const PseudoJet amp jet PseudoJet amp partner const Unclustered particles User supplied plugin jet algorithms see section 7 may have the property that not all particles are clustered into jets In such a case it can be useful to obtain the list of unclustered particles This can be done as follows vector lt fastjet PseudoJet gt unclustered clust_seq unclustered_particles 3 4 Version information Information on the version of FastJet that is being run can be obtained by making a call to std string fastjet fastjet version string defined in fastjet JetDefinition hh In line with recommendations for o
45. on a cache size of 2 MB Finally for a given N and R the optimal strategy may also depend on the event structure A textual description of the jet definition can be obtained by a call to the member function std string description 5Tiling is a textbook approach in computational geometry where it is often referred to as bucketing It has been used also in certain cone jet algorithms notably at trigger level and in 14 3 3 fastjet ClusterSequence To run the jet clustering create a fastjet ClusterSequence object 3 through the following con structor template lt class L gt fastjet ClusterSequence const std vector lt L gt amp input_particles const fastjet JetDefinition amp jet def where input particles is the vector of initial particles of any type fastjet PseudoJet HepLorentzVector etc that can be used to initialise a fastjet PseudoJet and jet def contains the full specification of the clustering see Section B 2 If the user wishes to access inclusive jets the following member function should be used return a vector of all jets in the sense of the inclusive algorithm with pt gt ptmin vector lt fastjet PseudoJet gt inclusive_jets const double amp ptmin 0 0 const where ptmin may be omitted then implicitly taking value 0 There are two ways of accessing exclusive jets one where one specifies deut the other where one specifies that the clustering is taken to be stopped once it
46. ons of locations of include files The user may specify the location of this file to FastJet either through the above environment variable or with the with cgalmakefile configuration option For CGAL 3 4 the user should instead specify with cgaldir unless the CGAL files are installed in a standard location The NInNCam strategy does not require CGAL since it is based on a considerably simpler computational geometry structure Acknowledgements We wish to thank Timothy Chan for helpful exchanges about the details of his dynamic closest pair algorithm We thank Markus Wobisch and Andreas Oehler for comments on the documentation and Sebastian Sapeta for bug reports and testing of beta version of the code as well as to Juan Rojo for discussions related to various features of the code We are grateful to CDF Joey Huston Lars Sonnenschein and Mike Seymour for providing per mission to distribute their cone jet algorithm codes as plugins for fastjet and to Salvatore Rappaccio for assistance in validating the CMS cone We thank Andy Buckley for numerous comments on the documentation and build system A External Recombination Schemes If the user wishes to introduce a new recombination scheme she may do so writing a class derived from JetDefinition Recombiner class JetDefinition Recombiner public return a textual description of the recombination scheme implemented here virtual std string description const 0
47. onstructor is the same for the inclusive and exclusive cases This choice has been made because the clustering sequence is identical in the two cases 10 return the maximum of the dmin encountered during all recombinations up to the one that led to an n jet final state identical to exclusive_dmerge except in cases where the dmin do not increase monotonically double exclusive_dmerge_max const int amp njets const The first returns the dmin in going from n 1 to n jets Occasionally however the dmin value does not increase monotonically during successive mergings and using a deu smaller than the return value from exclusive_dmerge does not guarantee an event with more than njets jets For this reason the second function exclusive_dmerge_max is provided using a deut below its return value is guaranteed to provide a final state with more than n jets while using a larger value will return a final state with n or fewer jets For ete collisions where it is usual to refer to yi di Q Q is the total visible energy FastJet provides the following methods double exclusive_ymerge int njets double exclusive_ymerge_max int njets int n_exclusive_jets_ycut double ycut std vector lt PseudoJet gt exclusive_jets_ycut double ycut which are relevant for use with the efe k algorithm and with the Jade plugin section Z4 2 Finally the user may obtain the constituent particles of a given jet via
48. p inelastic arXiv hep ph 9907280 M Wobisch Measurement and QCD analysis of jet cross sections in deep inelastic DESY THESIS 2000 049 M Cacciari G P Salam and G Soyez JHEP 0804 2008 063 arXiv 0802 1189 hep ph G P Salam and G Soyez JHEP 0705 086 2007 arXiv 0704 0292 hep ph standalone code available from http projects hepforge org siscone G C Blazey et al hep ex 0005012 S Catani Y L Dokshitzer M Olsson G Turnock and B R Webber Phys Lett B 269 432 1991 http hepforge cedar ac uk ktjet J M Butterworth J P Couchman B E Cox and B M Waugh Comput Phys Commun 153 85 2003 hep ph 0210022 C Buttar et al arXiv 0803 0678 hep ph T M Chan Closest point problems simplified on the RAM in Proc 13th ACM SIAM Sym posium on Discrete Algorithms SODA p 472 2002 M R Anderberg Cluster Analysis for Applications Number 19 in Probability and Mathematical Statistics Academic Press New York 1973 L Sonnenschein Ph D Thesis RWTH Aachen 2001 http cmsdoc cern ch documents 01 doc2001_025 ps Z 38 15 16 17 18 19 20 21 22 23 24 25 26 27 28 A Fabri et al Softw Pract Exper 30 2000 1167 J D Boissonnat et al Comp Geom 22 2001 5 http www cgal org M Cacciari G P Salam and G Soyez JHEP 0804 2008 005 arXiv 0802 1188 hep ph M Cacciari and G P Salam arXiv 0707 1378 hep ph S Fortune
49. phi lt phimax fastjet RangeDefinition double rapmin double rapmax double phimin 0 0 double phimax twopi allows one to fully specify a rectangle in the rapidity azimuth plane fastjet RangeDefinition contains return bool according to whether the jet is within the given range bool is_in_range const PseudoJet amp jet const return bool according to whether the rap phi point is within the given range virtual bool is_in_range double rap double phi const scalar area of the range region virtual double area const return the minimal and maximal rapidity of this range virtual inline void get_rap_limits double amp rapmin double amp rapmax const textual description of the range virtual std string description const 6 3 2 Local Ranges The virtual functions above can be overloaded by the user in a derived class where a different range definition can be specified An example can be found in CircularRange hh which implements a circular range centred on a jet s axis Its constructors are 21 initialise CircularRange with a jet fastjet CircularRange const fastjet PseudoJet amp jet double distance initialise CircularRange with a rap phi point fastjet CircularRange double rap double phi double distance initialise CircularRange with just the radius parameter fastjet CircularRange double distance This local range makes use of two further methods First
50. ptmin are subtracted and returned The ordering is the same as that of sorted_by_pt cs inclusive_jets i e not necessarily ordered in pt once subtracted std vector lt PseudoJet gt subtracted jets const double rho const double ptmin 0 0 const return a vector of subtracted jets using area_4vector Only inclusive_jets above ptmin are subtracted and returned The ordering is the same as that of sorted_by_pt cs inclusive_jets i e not necessarily ordered in pt once subtracted std vector lt PseudoJet gt subtracted_jets const RangeDefinition amp range const double ptmin 0 0 const return a subtracted jet using area_4vector given rho PseudoJet subtracted_jet const PseudoJet amp jet const double rho const return a subtracted jet using area 4vector note that this is potentially inefficient if repeatedly used for many different jets because rho will be recalculated each time around PseudoJet subtracted_jet const PseudoJet amp jet const RangeDefinition amp range const return the subtracted pt given rho double subtracted_pt const PseudoJet amp jet const double rho bool use_area_4vector false const return the subtracted pt note that this is potentially inefficient if repeatedly used for many different jets because rho will be recalculated each time around double subtracted_pt const PseudoJet amp jet const RangeDefinition amp range bool
51. reaches the specified number of jets return a vector of all jets in the sense of the exclusive algorithm that would be obtained when running the algorithm with the given dcut vector lt fastjet PseudoJet gt exclusive_jets const double amp dcut const return a vector of all jets when the event is clustered in the exclusive sense to exactly njets vector lt fastjet PseudoJet gt exclusive_jets const int amp njets const Note that these two member functions have the same name and the compiler selects the correct one based on the type of the arguments as is standard in C The fastjet PseudoJet vectors returned by the above routines can all be sorted with the routines described at the end of section B I The user may also wish just to obtain information about the number of jets in the exclusive algorithm return the number of jets in the sense of the exclusive algorithm that would be obtained when running the algorithm with the given dcut int n_exclusive_jets const double amp dcut const Another common query is to establish the dmin value associated with merging from n 1 to n jets Two member functions are available for determining this return the dmin corresponding to the recombination that went from n 1 to n jets sometimes known as d_ n n 1 double exclusive_dmerge const int amp njets const The analogue of Kt Jet s KtEvent In contrast to KtJet the class c
52. s One can similarly also use a plain RangeDefinition in a limited rapidity and or azimuth region Note that more specialised methods for extracting the noise level might be present at the level of a specific class e g ClusterSequenceActiveArea At least some of them should however be considered obsolete and might be removed in future releases of FastJet Finally the base class ClusterSequenceAreaBase contains virtual methods usually overloaded by the derived classes that deal with pure ghost jets that might be formed when adding ghost particles to the events in order to calculate ghosted areas return the total area within range that is free of jets virtual double empty area const RangeDefinition amp range const return something similar to the number of pure ghost jets in the given range in an active area case Note that the number returned is a double virtual double n empty jets const RangeDefinition amp range const With active area definitions these are calculated based on the observed number of pure ghost jets and unclustered ghosts in range for Voronoi and passive and areas they are calculated using the difference between the total range area and the area of the jets contained in the range with the number of empty jets then being calculated based on the average jet area 6 4 Example program with areas and subtraction The following simplified example program clusters a series of input particles into j
53. sponds to counting the number of ghosts in the jet while the 4 vector case corresponds to summing their 16 4 vectors normalised such that for a narrow jet the transverse component of the 4 vector is equal to the scalar area Jet areas are obtained by clustering with the class ClusterSequenceArea rather than ClusterSequence from which it is derived Its constructor takes an AreaDefinition argument in addition to the list of particles and the JetDefinition It is worth noting that in the limit of very densely populated events all area definitions tend to the same value 6 It might therefore be advantageous to select a Voronoi area type rather than an active one when using areas for phenomenological tasks like pileup subtraction 7 as it generally requires less CPU time to calculate To summarise in order to access the areas of the jets the user is exposed to two main classes class fastjet AreaDefinition class fastjet ClusterSequenceArea If jet areas are to be used to study the level of a diffuse noise which might be present in the event like underlying event particles or pileup a further specification the phase space region over which to study such noise will have to be given via the class class fastjet RangeDefinition These classes are described in detail below and an example program is given in section 6 4 6 1 fastjet AreaDefinition Area definitions are contained in fastjet AreaDefinition class
54. tJet authors 35 7 4 2 Jade algorithm The JADE algorithm 25 B6 a sequential recombination algorithm with distance measure d 2E E 1 cos6 is available through include fastjet JadePlugin hh AREE JadePlugin To access the jets at a given You El O the user should call ClusterSequence exclusive jets ycut double ycut Note the JADE algorithm has been used with various recombination schemes The current plugin will use whatever recombination scheme the user specifies with for the jet definition The default E scheme is what was used in the original JADE publication 25 To modify the recombination scheme the user may first construct the jet definition and then use either of void JetDefinition set recombination scheme RecombinationScheme recomb scheme void JetDefinition set recombiner const Recombiner recomb cf sections ESIA to modify the recombination scheme The underlying code for this algorithm was written by the FastJet authors 7 5 Building new sequential recombination algorithms To enable users to more easily build plugins for new sequential recombination algorithms fastjet also provides a class NNH which provides users with access to an implementation of the nearest neighbour heuristic for establishing and maintaining information about the closest pair of objects in a dynamic set of objects see 23 for an introduction to this and other generic algorithms In good cases this allo
55. the Cambridge Aachen algorithm 23 Note the all are inclusive argument relates to Fast Jet s internal mechanism for dealing with empty area The treatment of empty area is much more robust if the area is based on explicit ghosts active area explicit ghosts Its use of strongly recommended for the above applications in which case the value of all are inclusive becomes irrelevant There is also a routine for estimating rapidity dependent densities intended for example for heavy ion events fits a form pt per unit area y a b y in the given range exclude above allows one to exclude large values of pt area from fit use area 4vector true uses the 4vector areas void parabolic pt per unit area double amp a double amp b const RangeDefinition amp range double exclude above 1 0 bool use area 4vector false const This method is now considered deprecated it is too sensitive to contamination from hard jets An alternative is to use a local range definition like the CircularRange mentioned above Such a range definition will of course lead to a different median p according to where the range is placed It is useful whenever the background distribution is expected to be non uniform in rapidity and for instance in the case of non central collisions also in azimuth With a wise choice for the distance d CircularRange will then allow one to use ClusterSequenceArea get median rho and sigma on a jet by jet basi
56. the SISCone plugin would be as follows define a SISCone plugin pointer fastjet SISConePlugin plugin allocate a new plugin for SISCone double cone radius 0 7 Though its default value is 0 5 retained for backwards compatibility of the interface we strongly recommend using a higher value e g 0 75 especially in high noise environments in order to disfavour the production of monster jets through repeated merge operations 15Early experience indicates that protojet_ptmin is actually perfectly adequate and that potential problems of massively agglomerated jets that can occur in high noise environments for a wide range of cone algorithms can be addressed with a slightly larger value of the overlap_threshold 0 6 30 double overlap threshold 0 5 plugin new fastjet SISConePlugin cone radius overlap_threshold create a jet definition based on the plugin fastjet JetDefinition jet def plugin prepare the set of particles vector lt fastjet PseudoJet gt particles read input particles cin particles or whatever you want here run the jet algorithm and look at the jets fastjet ClusterSequence clust seq particles jet def vector lt fastjet PseudoJet gt inclusive jets clust seg inclusive jets then analyse the jets as for native FastJet jets only when you will no longer be using the jet definition or ClusterSequence objects that involve it may you delete the plugin delet
57. the protojet_ptmin parameter allows one to use only protojets with p gt protojet_ptmin in the split merge phase all others are thrown away J In many cases SISCone s most time consuming step is the search for stable cones If one has multiple SISConePlugin based jet definitions each with caching true a check will be carried out whether the previously clustered event had the same set of particles and the same cone radius and number of passes If it did the stable cones are simply reused from the previous event rather than being recalculated and only the split merge step is repeated often leading to considerable speed gains A final comment concerns the split_merge_scale parameter This controls both the scale used for ordering the protojets during the split merge step during the split merge step and also the scale used to measure the degree of overlap between protojets While various options have been implemented enum SplitMergeScale SM_pt SM_Et SM_mt SM_pttilde we recommend using only the last of them p ae Pai which is also the default scale The other scales are included only for historical comparison purposes p used in several other codes is IR unsafe for events whose hadronic component conserves momentum E advocated in 8 is not boost invariant and Mm m p is IR unsafe for events whose hadronic component conserves momentum and stems from the decay of two identical particles An example of the use of
58. the transverse momentum rapidity and azimuth of particle and R is a jet radius parameter usually taken of order 1 for each parton i also work out the beam distance dig kz 2 Find the minimum dymin of all the dij dig If dmin is a di merge particles 7 and j into a single particle summing their four momenta this is E scheme recombination if it is a djg then declare particle to be a final jet and remove it from the list 3 Repeat from step 1 until no particles are left The exclusive longitudinally invariant k jet algorithm 2 is similar except that a when a dig is the smallest value that particle is considered to become part of the beam jet i e is discarded and b clustering is stopped when all d and dig are above some deut In the exclusive mode R is commonly set to 1 5 2 Cambridge Aachen jet algorithm Currently the Cambridge Aachen jet algorithm is provided only in an inclusive version 5 whose formulation is identical to that of the k jet algorithm except as regards the distance measures which are dij AR R 2a dip 1 2b Attempting to extract exclusive jets from the Cambridge Aachen with a deut parameter simply pro vides the set of jets obtained up to the point where all dij dig gt dew Having clustered with some given R this can actually be an effective way of viewing the event at a smaller radius Reff VdeuR thus allowing a single event to be viewed at a continuous range of Rey within a s
59. ther programs in high energy physics the user may wish to include this information in publications and plots so as to facilitate reproducibility of the jet findingl We recommend also that the main elements of the jet_def description be provided together with citations to the original article that defines the algorithm as well as to the FastJet paper I 4 Example program For full details see the example program example fastjet_example cc that is distributed with the FastJet code For the reader who is familiar with KtJet I0 the example program is also given as it would be written for KtJet in the file example ktjet_example cc A simplified version of the FastJet example program is given below include fastjet PseudoJet hh include fastjet ClusterSequence hh using namespace std While we devote significant effort to ensuring that all versions of FastJet give identical correct results we are obviously not able to completely guarantee the absence of bugs that might have an effect on the jet finding 12 int main int argc char argv vector lt fastjet PseudoJet gt input_particles read in input particles double px py pz E while cin gt gt px gt gt py gt gt pz gt gt E push fastjet PseudoJet of px py pz E on back of input_particles input particles push back fastjet PseudoJet px py pz E J create an object that represents your choice of jet algorithm and its associated p
60. tiles the y cylinder to limit the set of points over which nearest neighbours are searched forf and N2MinHeapTiled differs only in that it uses an N ln N rather than N data structure for maintaining in order the subset of the dj that involves nearest neighbours The N1nN strategy uses CGAL s Delaunay Triangulation I5 for the maintenance of the nearest neighbour graph Note that N ln N performance of is an expected result and it holds in practice for the k and Cambridge algorithms while for anti k and generalised k with p lt 0 hub and spoke bicycle wheel type configurations emerge dynamically during the clustering and these break the conditions needed for the expected result to hold this however has a significant impact only for N 10 If strategy is omitted then the Best option is set Note that the N ranges quoted above for which a given strategy is optimal hold for R 1 the general R dependence can be significant and non trivial for example for the Cambridge Aachen jet algorithm with R 0 4 NlnNCam beats the N2MinHeapTiled strategy only for N 37000 While some attempt has been made to account for the R dependence in the choice of the strategy with the Best option there may exist specific regions of N and R in which a manual choice of strategy can give faster execution Furthermore the NInNCam strategy s timings may depend strongly on the size of the cache and the transitions that have been adopted are based
61. use_area_4vector false const 26 7 Plugin jet algorithms It can be useful to have a common interface for a range of jet algorithms beyond the native k anti k and Cambridge Aachen algorithms and it can also be useful to use the area measurement tools for these other jet algorithms In order to facilitate this the FastJet package provides a plugin facility allowing almost any other jet algorith to be used within the same framework 7 1 Generic plugin use and construction Any plugin is to be derived from the abstract base class fastjet JetDefinition Plugin class JetDefinition Pluginf public return a textual description of the jet definition implemented in this plugin virtual std string description const 0 given a ClusterSequence that has been filled up with initial particles the following function should fill up the rest of the ClusterSequence using the following member functions of ClusterSequence plugin_do_ij_recombination plugin do iB recombination virtual void run clustering ClusterSequence amp const 0 a destructor to be replaced if necessary in derived classes virtual Plugin V HaHa ignore what follows for simple usage return true if there is passive areas can be efficiently determined by a setting the ghost_separation scale see below b clustering with many ghosts with py lt ghost separation sca
62. ws one to construct clustering that runs in N time though its worst case can be as bad as N It is a templated class and the template argument should be a class that stores the minimal information for each jet so as to be able to calculate interjet distances It underlies the implementations of the Jade and efe Cambridge plugins The interested user should consult those codes for more information as well as the header for the NNH class 8 Compilation notes Compilation and installation make use of the standard h configure make make check make install procedure Explanations of available options are given in the INSTALL file in the top directory In order to access the N1nN strategy for the k algorithm the library needs to be compiled with the Computational Geometry Algorithms Library CGAL mld At configure time the enable cgal 16This same strategy gives N ln N performance for Cambridge Aachen and N3 2 performance for anti k whose sequence for jet clustering triggers a worst case scenario for the underlying computational geometry methods 36 option may be used to specify that CGAL support should be included CGAL may be obtained in source form from http www cgal org Under linux with CGAL versions 3 2 and 3 3 after compilation and installation the user will be encouraged to set an environ ment variable CGAL MAKEFILE which points to the Makefile generated by CGAL at install time which contains various definiti
Download Pdf Manuals
Related Search
Related Contents
TLC-40 Advance / TLC-50 Advance User instructions 取 扱 説 明 書 YUMIC−SC15 DVP-FX810 SNC-CH135/CH140/CH240 Airlink AWLC3025 Network Card User Manual V7 Flip Case for Samsung® Galaxy S5 TARIF EXPORT PRO.cdr User Manual - Waxman Energy Copyright © All rights reserved.
Failed to retrieve file