Home
FastJet 3.0alpha1 user manual
Contents
1. Get rho based on all but the two hardest jets The last argument MUST be set to true unless you are using explicit ghosts 26 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 the Cambridge Aachen algorithm Note the all are inclusive argument relates to FastJet 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
2. 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 29 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 use_area_4vector false const 8 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 8 1 Generic plugin use and construction Any plugin is to be derived from the abstract base class fast jet JetDefinition Plugin class JetDefinition Plugint public retu
3. pA oVA fis 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 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 p 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 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
4. 19 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 corresponds to counting the number of ghosts in the jet while the 4 vector case corresponds to summing their 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 16 It might therefore be
5. fastjet EECambridgePlugin hh ie EECambridgePlugin double ycut This algorithms performs sequential recombination of the pair of particles that is closest in angle except when yj a 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 FastJet authors 8 4 2 Jade algorithm The JADE algorithm 25 26 a sequential recombination algorithm with distance measure d 2E E 1 cos6 is available through include fastjet JadePlugin hh Lie JadePlugin 39 To access the jets at a given You daula 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 f
6. 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 deep 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 A Fabri et al Softw Pract Exper 30 2000 1167 J D Boissonnat et al Com
7. 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 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 the 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 UP ta a Once the plugin has run its own clustering it must transfer the information
8. 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 38 Note this algorithm is IR3 unsafe It is to be deprecated for new experimental or theoretical analyses 8 3 8 TrackJet This algorithm has been used at the Tevatron for identifying jets from charged particle tracks in underlying event studies a citation is needed here include fastjet TrackJetPlugin hh PEs ateu 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 Collg unsafe It is to be deprecated for new experimental or theoretical analyses 8 4 Other plugins for efe 8 4 1 Cambridge algorithm The original e e cambridge 4 algorithm is provided as a plugin include
9. partner const If any of the above functions are used with a PseudoJet that is not associated with a ClusterSequence an error will be thrown Since the information about a jet s constituents is actually stored in the ClusterSequence and not in the jet itself these methods will also throw an error if the ClusterSequence associated with the jet has gone out of scope been deleted or in any other way become invalid One can establish the status of a PseudoJet s associated cluster sequence with the following enquiry functions returns true if this PseudoJet has an associated and valid ClusterSequence bool has_associated_cluster_sequence const get a const pointer to the parent ClusterSequence NULL if inexistent const ClusterSequence associated_cluster_sequence const 12 3 5 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 other 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 finding 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 pr
10. we expect the interface for ranges to evolve significantly in releases subsequent to 2 4 7 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 25 median pt per unit area 4vector use area 4vector false gt use plain area 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 oA The subtraction for a jet with uncorrected pt py and area A is oe pep p
11. 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 i 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 jets i 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 plugins watch out once again for the backquotes if you cut and paste from the PDF 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 fastjet JetDefinition class fastjet ClusterSequence fastjet PseudoJet provides a jet object with a four momentum and some internal indices to situate it in th
12. and the transitions that have been adopted are based on a cache size of 2 MB Finally for a given N and R the optimal strategy may 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 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 3 3 fastjet ClusterSequence To run the jet clustering create a fastjet ClusterSequence object 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 8 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 speci
13. 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 jetsO 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 jetj 31 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 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 for 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
14. convention there are also SelectorPhiRange min max and SelectorRapPhiRange Ymin Ymax min Pmax In addition there are also some relocatable selectors These have been developed in anticipation of usefulness for background estimation where one wishes to select a fixed shape in y 4 neighbourhood of first one jet then another jet and so forth For example one can define Selector sel SelectorCircle 1 0 Then if one is interested in the subset of jets neighbourhood of jet1 and then those near jet2 one performs the following operations sel relocate jet1 vector lt PseudoJet gt jets_near_jeti sel jets sel relocate jet2 vector lt PseudoJet gt jets_near_jet2 sel jets Using a relocatable selector before it has ever been relocated will cause an exception to be thrown The other relocatable selectors that are available by default are SelectorStrip SelectorDoughnut and SelectorRectangle A user can obtain information on what a given Selector does by calling its description member function This behaves sensibly also for compound selectors 6 3 Other information about selectors Selectors contain a certain amount of additional information that can provide useful hints in some contexts for example in anticipation of their future use for background estimation One such piece of information is a selectors rapidity extent accessible through a get_rapidity_extent rapmin rapmax call If it is not sensible to talk a
15. 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 7 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 AreaTypef active_area active_area_explicit_ghosts one_ghost_passive_area passive_area esol RS 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 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 9 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 E This is done via the class fastjet GhostedAreaSpec whose constructor is fastjet GhostedAreaSpec double ghost maxrap int repeat double ghost_area double grid
16. in source form from 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 definitions 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 16This same strategy gives Nln 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 40 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 I2 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 fast
17. the same meaning as in the D Run I cone and once again instead of a seed threshold there is a cut on the minimum E of the cones during iteration related to min jet Et It is the FastJet 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 IRs 1 unsafe IR 1 for jets with energy too close to min jet Et It is to be deprecated for new experimental or theoretical analyses 8 3 5 ATLAS iterative cone The iterative cone with split merge algorithm used by ATLAS during the preparation for the LHC include fastjet AtlasConePlugin hh Ti fess 37 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 8 3 6 CMS iterative cone The iterative cone with progressive removal algorithm used by CMS during the preparation for the LHC include fastjet CMSIterativeConePlugin hh DRE ees CMSIterativeConePlugin double ConeRadius double SeedThreshold 0 0 The underlying code for this algorithm was extracted from the CMSSW web site with certain small service routine
18. 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 Fo 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 FastJet are the CDFMidPointPlugin illus trated above and also a CDFJetCluPlugin These interface code available at 19 The PxConePlugin interfaces the PxCone code 20 All three of these cone jet algorithms though widely used are infrared o
19. 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 unsafe in the limit of zero seed threshold 7 with cone_area_fraction 1 it becomes IR 2 unsafe 22 It is to be deprecated for new experimental or theoretical analyses 8 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 Id foxes 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 appear 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 8 3 3
20. 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 14 are dij ARj R 2a dig 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 d dig gt dew Having clustered with some given R this can actually be an effective way of viewing the event at a smaller radius Rep VdeuR thus allowing a single event to be viewed at a continuous range of Rey within a single 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 d
21. 16 16 17 17 18 18 19 20 21 22 23 23 24 24 27 29 ee Goes one Ge eee Se RA A RA E a sap q eee ae pp ee ee aa pp eae ee eT ee Pe eee ee eee ee 831 CDF Midp intd assa e Gee pe eek FERE RES ee ee ebb a oa RR Sone Bae ee ee Eee bea AR E beso pepe eee pi GS a E sed at OE EEES has pane eee ee oe eek E Oban Ww enee ae eed eee Phe oh ee O E O EE EE TEE im ede Hee sae ees eee we E RS Ra by ee eed ee eee eee eee eee ee Pi Body Eos ne eae ee ee ee ee Building new 9 Compilation note A External Recombination Schemes B Extra Info in PseudoJet Qa 39 40 41 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
22. 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 SISCone 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 included 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 It also added a wrapper to FastJet allowing one to run SISCone and some of the sequential recombination algorithms from Fortran programs In version 3 0 alphal a PseudoJet knows where relevant about its underlying ClusterSequence allowing one to write e g jet constituents and can be associated with extra information beyond just a user index This version also adds the DO Run I cone as a new plugin and support for native jet algorithms to be run with R gt 7 2 It also brings the first of a series of FastJet tools to help with advanced jet analyses namely the Selector class The current implementation of the pp sequential recombinaion algorit
23. D Run I cone The main algorithm used by DO in Run I of the Tevatron which is an iterative cone algorithm with a split merge It comes in two versions 36 include fastjet DORunIpre96ConePlugin hh bf vss DORunIpre96ConePlugin double R double min_jet_Et double split_ratio 0 5 and include fastjet DORunIConePlugin hh FET oats DORunIConePlugin double R double min_jet_Et double split_ratio 0 5 corresponding to versions of the algorithm used respectively before and after 1996 They differ only in the way the jet momenta are calculated as described in 29 Instead of the seed threshold used in the CDF cones 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 FastJet authors understanding that the value used for min jet Et was 8 GeV The underlying code for this algorithm was provided by Lars Sonnenschein Note this algorithm is IR unsafe It is recommended that it be used only for the purpose of comparison with Run I data from D 8 3 4 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 ine DORunIIConePlugin double R double min_jet_Et double split_ratio 0 5 The parameters have
24. FastJet 3 0alphal user manual Matteo Cacciari Gavin P Salam and Gregory Soyez ILPTHE UPMC Univ Paris 6 and CNRS UMR 7589 Paris France Universit Paris Diderot Paris France 3CERN Physics Department Theory Unit Geneva Switzerland Department of Physics Princeton University Princeton NJ 08544 USA Institut de Physique Th orique CEA Saclay France Abstract Fast Jet provides fast N ln N N implementations of the longitudinally invariant k anti k 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 re k algorithm Further jet algorithms including most of the other commonly used pp and e algorithms can be accessed from the FastJet interface using a plugin mechanism FastJet also provides ways of determining jet areas Contents E Ro ns a ee Ade E e Meda nadas pas bed Tore FastJet native jet algorithms Rise do era pia bn a eee da yaa ae eee 5 5 Generalised k algorithm for e e collisions 6 2 Available selectorg 4 6 3 Other information about selectorg 6 4 Implementing new selectorg 7 1 1 Ghosted Areas active and passive ERR eee oop eee hee oy eae 2 es ee Ce ee ee Bene ote ee 7 4 Example program with areas and subtractio 8 Plugin jet algorithms om o a 12 12 13 13 13 14 14 14 15
25. SCone plugin pointer fastjet SISConePlugin plugin allocate a new plugin for SISCone double cone radius 0 7 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 delete 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 c
26. advantageous to select a Voronoi area type rather than an active one when using areas for phenomenological tasks like pileup subtraction I7 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 7 4 7 1 fastjet AreaDefinition Area definitions are contained in fastjet AreaDefinition class 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 20 return a description of the current area
27. as mentioned above SISCone takes O N InN time to find jets and the memory use is O V2 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 passive area since this is relatively fast to calculate with SISCone 8 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 i
28. astjet ClusterSequence 3 2 fastjet JetDefinition 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 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 lgorithm name its parameters often the radius R and the recombination scheme Its constructor if fastjet JetDefinition fastjet JetAlgorithm jet algorithm double R fastjet RecombinationScheme recomb scheme E scheme fastjet Strategy strategy Best The jet algorithm is one of the entries of the fastjet JetAlgorithm enu enum JetAlgorithm kt_algorithm cambridge_algorithm antikt_algorithm genkt_algorithm ee kt algorithm ee_genkt_algorithm where the represent additional values that are present for internal or testing purposes R specifies the value of R that appears in eqs URBHIS The recombination scheme should be one of those listed in table 1 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 Best For the general
29. bout a rapidity extent for a given selector e g for SelectorPtMin the rapidity limits that are returned are the largest negative and positive numbers that can be represented as doubles Is discussion of areas not too detailed Selectors may also have areas associated with them in analogy with jet areas section 7 The has_area member function returns true if a selector has a meaningful finite area The area 18 function returns this area In some cases the area may be computed using ghosts by default with ghosts of area 0 01 the user can specify a different ghost area as an argument to the area function 6 4 Implementing new selectors Technically a Selector contains a shared pointer to a SelectorWorker Classes derived from SelectorWorker actually do the work So for example the call to the function SelectorAbsRapMax 2 5 first causes a new instance of the internal SW AbsRapMax class to be constructed with the information that the limit on y is 2 5 Sw AbsRapMax derives from SelectorWorker Then a Selector is constructed with a pointer to the Sw AbsRapMax object and it is this Selector that is returned to the user Selector SelectorAbsRapMax double absrapmax return Selector new SW_AbsRapMax absrapmax Since Selector is really nothing more than a shared pointer to the Sw AbsRapMax object it is a lightweight object The fact that it s a shared pointer also means that it looks after the memory management i
30. class B Extra Info in PseudoJets One method for associating extra information with a PseudoJet is via its user index section B I This is adequate for encoding simple information for example an input particle s barcode in a HepMC event but can quickly show its limitations for example when simulating pileup if an input particle can come from one of several HepMC events A second method for supplementing a PseudoJet with extra information is for the user to derive a class from PseudoJet ExtraInfo and associate the PseudoJet with a pointer to an instance of that class void set extra info Extralnfo extra info const ExtraInfo extra info const It is important to be aware that the function set extra info transfers ownership of the pointer to the PseudoJet This is achieved with the help of a shared pointer Copies of the PseudoJet will point to the same extra info When the PseudoJet and all its copies go out of scope the extra info will be deleted Since nearly all practical uses of extra info will require it to be cast to the relevant derived class of ExtraInfo we also provide the following member function for convenience template lt class L gt const L amp extra info cast const which casts the extra info to type L If the cast fails or the extra info has not been set an error will be thrown The user may wonder why we have used shared pointers internally i e have ownership transferred to the PseudoJet rath
31. cles User supplied plugin jet algorithms see section B 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 Constituents and substructure of jets For any PseudoJet that results from a clustering the user can obtain information about its con stituents internal substructure etc through member functions of the PseudoJet class Jet constituents For example the constituents of a give PseudoJet jet can be obtained as vector lt fastjet PseudoJet gt constituents jet constituents Note that if the user wishes to identify these constituents with the original particles provided to fastjet ClusterSequence she or he should have set a unique index for each of the original particles 8This is a new development in version 3 of FastJet In earlier versions access to information about a jet s contents had to be made through its ClusterSequence Those forms of access though not documented here will be retained throughout the 3 X series 11 with the fastjet PseudoJet set user index function Alternatively more detailed information can also be set through the extra info facilities of PseudoJet Put ref to place where discussed Subjet properties To obtain the set of subjets at a specific deut scale inside a given jet one may us
32. e 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 performed 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 All jets as well as input particles to the clustering optionally are fast jet 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 pz py pz for example the CLHEP HepLorentzVector class The default constructor for a PseudoJet leaves its momentum components uninitialised 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 const returns the y momentum component double pz const retu
33. e the following PseudoJet 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 double amp dcut const If m jets are found this takes a time O mlnm 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 following methods which allow one to follow the merging sequence and walk back through it 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 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 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 PseudoJet amp
34. ed 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 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 Early 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 2 0 6 33 we recommend using only the last of them py ici Pri 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 m m 2 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 the SISCone plugin would be as follows define a SI
35. election 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 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 2 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 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 ma
36. er than normal pointers An example use case where the difference is important is if for example one wishes to write a Recombiner that sets the extra info in the recombined PseudoJet Since this is likely to be new information the Recombiner will have to allocate some memory for it With a normal pointer there is then no easy way to clean up that memory when the PseudoJet is no longer relevant e g because the ClusterSequence that contains it has gone out of scope In contrast with a shared pointer the memory is handled automatically The shared pointer type in FastJet is a template class called SharedPtr available through include fastjet SharedPtr hh It behaves almost identically to the C 0x shared_ptr though some internal details are different The end user should not usually need to manipulate the SharedPtr though the SharedPtr to extra_info is accessible through PseudoJet s extra_info_shared member References 1 M Cacciari and G P Salam Phys Lett B 641 2006 57 hep ph 0512210 17 The user may also wonder why we didn t simply write a templated version of PseudoJet in order to contain extra information The answer here is that to introduce a templated PseudoJet would then imply that every other class in FastJet should then also be templated 42 10 11 12 13 14 15 16 17 18 19 20 21 22 S Catani Y L Dokshitzer M H Seymour and B R Webber Nucl Phys
37. fies that the clustering is taken to be stopped once it 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 1 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 The analogue of KtJet s KtEvent In contrast to KtJet the class constructor 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 Another common query is to establish the dmin value associated with merging from n 1 to n jets Two member functi
38. 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 ete 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 di 2min E EPI cos Oi 6 Note the difference in normalisation between the d in eqs and 0 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 yi 5 6 Recombination schemes When merging particles in step 2 of the clustering procedure one 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 and is the default option in Fast Jet Other schemes for pp collisions Other schemes provided by earlier k clustering implementations TO are the p p E and E schemes They all incorporate a preprocessing stage to make the initial momenta massless rescaling the ener
39. gy 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 schemes Then for all schemes the recombination p of p and p is a massless 4 vector satisfying Ptr Pri Pty s 7a br wid w d wi Wy 7b Yr wiys wjyj wi w 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 16 6 Selectors 6 1 Essential usage Analyses often place constraints cuts on jets transverse momenta rapidity maybe consider only some N hardest jets etc There are situations in which it is convenient to be able to define a set of cuts in one part of a program and then have it used elsewhere To allow for this we provide a Selector class available through include fastjet tools Selector hh As an example of how it is used if have a vector of jets jets and wish to select those that have rapidities y lt 2 5 a
40. he 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 I7 for more details its value can then be used for UE pileup subtraction in an analysis using any jet algorithm 7 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 y 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 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 24 return the minimal and maximal rapidity
41. he 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 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 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 5 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 spe
42. he user to label the object void set_user_index const int index return the user_index int user_index const A more powerful method which involves a pointer to a derived class of PseudoJet ExtraInfo is discussed in appendix B 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 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 f
43. hms is restricted to the so called AR distance measure recommended in with a choice of recombination schemes The k algorithm has both exclusive 2 and inclusive modes 8 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 The old one though retained through v2 is deprecated and will be removed in v3 4 make make check make install CA eos Ifyou copy and paste the above lines from one very widespread PDF viewer you should note that the first line contains backquotes not forward quotes but that your PDF viewer may nevertheless paste forward quotes causing problems down the line the issue arises again below e Now paste the following piece of code into a file called short example cc include 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
44. i min 1 k Iyk ARE 3a dip 1 kj 3b 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 di min ki ky ARR 4a 13 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 FastJet also provides native implementations of clustering algorithms in spherical coordinates specif ically for e e 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 1 cos 6 1 cos R dig E 5b dij min E E 15 for a general value of p and R At a given stage of the clustering sequence if a d is smallest then 7 and 7 are recombined while if a dig is smallest then 7 is called an inclusive jet For values of R lt 7 in eq 5 the generalised ete k algorithm behaves in analogy with the pp algorithms when an object is at an angle 6 x
45. ifying The design choice that we have made is that SelectorNHardest 2 amp amp SelectorAbsRapMax 2 5 SelectorAbsRapMax 2 5 amp amp SelectorNHardest 2 give identical results in logical combinations of selectors each constituent selector is applied inde pendently to the ensemble of jets and then a decision whether a jet passes is determined from the corresponding logical combination of each of the selectors results Thus here only jets that are among the 2 hardest of the whole ensemble and that have y lt 2 5 will be selected If one wishes to first apply a rapidity cut and then find the 2 hardest among those jets that pass the rapidity cut then one may instead use the operator SelectorNHardest 2 SelectorAbsRapMax 2 5 In this combined selector the right hand selector is applied first and then the left hand selector is applied to the results of the right hand selection 17 6 2 Available selectors A number of selectors have been implemented following the naming convention Selector Var LimitType The Var indicates which variable is being cut on and can be one of pt Et E M Rap AbsRap Eta AbsEta The Limit Type indicates whether one places a lower limit on the variable an upper limit or a range corresponding to the choices Min Max Range A couple of examples are SelectorPtMin 25 0 Selects p gt 25GeV SelectorRapRange 1 9 4 9 Selects 19 lt y lt 4 9 Following a similar naming
46. ing 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 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
47. intaining the ge ometrical nearest neighbour graph N2Tiled 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 In N rather than N data structure for maintaining in order the subset of the d that involves nearest neighbours The N1nN strategy uses CGAL s Delaunay Triangulation 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 NInNCam beats the N2MinHeapTiled strategy only for N 2 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
48. ised 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 3The v 2 0 constructor without the recombination scheme argument still remains valid As 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 compatibility with versions lt 2 3 is however broken for user written derived classes of ClusterSequence as the protected 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 s
49. jet 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 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 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 41 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
50. maxrap const double ghost_area O const double grid_scatter const double kt_scatter O const double mean_ghost_kt const int repeat O const 7 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 fastjet VoronoiAreaSpec specification to fastjet AreaDefinition Its constuctors are default constructor effective Rfact 1 fastjet VoronoiAreaSpec constructor that allows you to set effective Rfact 22 fastjet VoronoiAreaSpec double effective Rfact 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 The Voronoi areas are calculated with the help of Fortune s N In N Voronoi diagram generator for planar static
51. nd transverse momenta above 20 GeV then we might write the following Selector select_rapidity SelectorAbsRapMax 2 5 Selector select_pt SelectorPtMin 20 0 Selector select_both select_pt amp amp select_rapidity vector lt PseudoJet gt selected_jets select_both jets Here Selector is a class while SelectorAbsRapMax and SelectorPtMin are functions that return an instance of the Selector class containing the internal information needed to carry out the selection Selector operator const vector lt PseudoJet gt amp jets takes the jets given as input and returns a vector containing those that pass the selection cuts The logical operations amp amp and enable different selectors to be combined Nearly all selectors like those above apply jet by jet they return Selector applies_jet_by_jet true For these one can query whether a single jet passes the selection with the help of the function bool Selector pass const PseudoJet amp There are also selectors that only make sense applied to an ensemble of jets This is the case specifically for SelectorNHardest unsigned int n which acting on an ensemble of jets selects the n with largest transverse momenta If there are fewer than n jets then all jets pass For selectors that apply jet by jet the selectors on either side of the logical operators amp amp and naturally commute For operators that act only on the ensemble of jets the behaviour needs spec
52. 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 basis 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 t
53. 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 7 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 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 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
54. ogram example fastjet example cc that is distributed with the FastJet code For the reader who is familiar with KtJet IO 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 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 1 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 parameters 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 seg inclusive jets ptmin extract the exclusive jets with dcut 25 GeV 2 and sort them While we devote significant effort to ensuring that all versions of FastJet give identical correct results we are obviously not able to completely guaran
55. ones 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 34 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 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 ClusterSequenceActiveAreaExplicitGhosts class for usage information see the corresponding hh file A final remark concerns speed and memory requirements
56. ons 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 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 deut 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 dew 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 y 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 8 42 Unclustered parti
57. or this algorithm was written by the FastJet authors 8 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 allows 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 9 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 ness At configure time the enable cgal option may be used to specify that CGAL support should be included CGAL may be obtained
58. otal 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 27 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 7 4 Example program with areas and subtraction The following simplified example program clusters a series of input particles into jets 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 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 l
59. p 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 Algorithmica 2 1987 1 The CDF code has been taken from EEEp wwa pa meu edu huston Les Houches _2005 JetClutMidpo 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 43 23 D Eppstein J Experimental Algorithmics 5 2000 1 23 es DS 9912014 24 M H Seymour and C Tevlin JHEP 0611 2006 052 arXiv hep ph 0609100 25 W Bartel et al JADE Collaboration Z Phys C 33 1986 23 26 S Bethke et al JADE Collaboration Phys Lett B 213 1988 235 27 PA Delsart K Geerlings and J Huston SpartyJet http www pa msu edu huston SpartyJet Sparty 28 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 29 B Abbott et al DO Collaboration FERMILAB PUB 97 242 E 44
60. point sets 8 7 2 fastjet ClusterSequenceArea This is the main clas 4 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 O 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 defined by the following integral PRA dydy PseudoJet y p 1 OC y d inside jet boundary fii where PseudoJet y p 1 is a 4 vector with the given rapidity y azimuth 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 tee 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 12 ClusterSequenceArea makes use of one among ClusterSequenceActiveArea Clu
61. r 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 32 8 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 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 double overlap_threshold 0 5 int n pass max 0 double protojet ptmin 0 0 bool caching false SISConePlugin SplitMergeScale split merge scale SISConePlugin SM_pttilde A cone centered at Yc de is stable if the sum of momenta of all particles i satisfying Ay Ad lt cone_radius has rapidity ye de T
62. riable 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 I 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 Other variables that the user may wish to set are grid scatter and kt scatter which are frac tional random fluctuations of the position of the ghosts on the y grid and of their transverse mo mentum 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_
63. rn 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 dil 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 pp lt ghost_separation_scale c counting how many ghosts end up in a given jet virtual bool supports_ghosted_passive_areas const return false 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 30 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
64. rns 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 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 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 are 3 momentum component 3 is energy valarray lt double gt four mom const There are two ways of associating information user information with a PseudoJet The simpler method is through an integer called the user index set the user index intended to allow t
65. s 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 107 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 Coll unsafe 6 It is to be deprecated for new experimental or theoretical analyses 8 3 7 PxCone A fortran plugin for the PxCone algorithm which is an iterative cone with midpoints and a split drop procedure include fastjet PxConePlugin hh PLA as PxConePlugin double cone radius 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 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
66. s 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 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 4 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 39 8 3 1 CDF 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 ELD ves 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 algorithm of Pi Further control over the plugin can be obtained by consulting the header file The
67. scatter double kt scatter 0 1 double mean ghost kt 1e 100 1 gt FOR 0 0 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 JO This ability is provided for ke 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 Or accept a default which uses the default values listed in the explicit constructor and ghost maxrap 6 21 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 added 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 va
68. ssues associated with the Sw AbsRapMax object If a user wishes to implement a new selector they should write a class derived from SelectorWorker The base is defined with sensible defaults so for simple usage only two SelectorWorker functions need to be overloaded returns true if a given object passes the selection criterion pass const PseudoJet amp jet const 0 returns a description of the worker virtual std string description const return missing description For information on how to implement more advanced workers for example workers that do not apply jet by jet or that are relocatable users may wish to examine the implementation of the existing workers and or consult the authors to come e areas 7 Jet areas Since a jet is made up of only a finite number of particles one needs a specific definition 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
69. sterSequenceActiveAreaExplicitGhosts ClusterSequencePassiveArea ClusterSequenceiGhostPassiveArea or ClusterSequenceVoronoiArea all of them in the fastjet namespace of course according to the choice made with AreaDefinition The user might of course also use these classes directly 23 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 7 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 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 I 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 t
70. t 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 J 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 phi pt area pt_sub pt_sub_4vect lt lt endl perform subtraction output results 28 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 printf 2u 7 3f 7 3f 7 3f 7 3f 7 3f 7 3f n i jets i rapQ jets i phiQ jets i perp Q area pt_sub jet_sub perp Note that the above list
71. tee the absence of bugs that might have an effect on the jet finding 13 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 exclusive jets il constituents printf 5u 15 8f 15 8f 15 8f 8u n i exclusive jetsli rap exclusive jets i phiO exclusive jets i perp constituents size 5 FastJet native jet algorithms 5 1 ky 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 7 work out the k distance with AR yi yj j where ku yi and are 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 dyin of all the d dig If dmin is a d i 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
Download Pdf Manuals
Related Search
Related Contents
Save - Florida Metrology MATERIAL SAFETY DATA SHEET USER'S GUIDE Télécharger mode d`emploi PDF VLT® 5000 - Motralec Serie System Q - Manual Práctico 420019_03_2013_Layout 1 PayPal Gateway - 2012 Developer's Guide Hunter Engineering Quick Check System Brochure Yard-Man 540 Lawn Mower User Manual Copyright © All rights reserved.
Failed to retrieve file