------------------------------------------------------------------------ SoftKiller FastJet contrib ------------------------------------------------------------------------ The SoftKiller FastJet contrib aims to provide an implementation of the pileup removal technique introduced in SoftKiller, a particle-level pileup removal method Matteo Cacciari, Gavin P. Salam, Gregory Soyez arXiv:1407.0408 The SoftKiller class progressively kills soft particles in order of increasing pt until half of the event is empty (i.e. rho is zero). It is constructed using SoftKiller soft_killer(double rapmax, double grid_spacing, Selector sifter = Selector()); with rapmax the maximal (absolute) rapidity extent of the grid tile_size the requested grid spacing (or equivalent tile size) sifter when provided, the soft killer is applied only to particles that pass the sifter (the others are kept untouched) For a given event, the SoftKiller is then applied to an event as follows vector event; vector killed_event = soft_killer(event); For an explicit illustration of how this works, see the example.cc file which can be built using make example and should be run with ./example < ../data/Pythia-Zp2jets-lhc-pileup-1ev.dat The expected output can be found in example.ref ---------------------------------------------------------------------- More advanced usage =================== If you have FastJet 3.1, then you can use its RectangularGrid to have obtain control over the grid; for example to apply a soft killer separately to central and forward particles you might have: double central_rapmax = 2.5, forward_rapmax = 5.0, tile_size = 0.5; // the central SK runs from -central_rapmax to central_rapmax; we // can have separate rapidity and phi tile sizes, but here keep // them the same RectangularGrid central_grid(-central_rapmax, central_rapmax, tile_size, tile_size); SoftKiller central_killer(central_grid); Selector central_selector = SelectorAbsRapMax(central_rapmax); // for later use // for the forward SK, we have a grid from -5.0 to 5.0 but then use // only grid tiles whose central point passes the forward selector Selector forward_selector = SelectorAbsRapRange(central_rapmax, forward_rapmax); RectangularGrid forward_grid(-forward_rapma, forward_rapmax, tile_size, tile_size, forward_selector); SoftKiller central_killer(forward_grid); // now process central and forward particles separately vector central_kept_particles = central_killer(central_selector(particles)); vector forward_kept_particles = forward_killer(forward_selector(particles));