[35cdc46] | 1 | ------------------------------------------------------------------------
|
---|
| 2 | SoftKiller FastJet contrib
|
---|
| 3 | ------------------------------------------------------------------------
|
---|
| 4 |
|
---|
| 5 | The SoftKiller FastJet contrib aims to provide an implementation of
|
---|
| 6 | the pileup removal technique introduced in
|
---|
| 7 |
|
---|
| 8 | SoftKiller, a particle-level pileup removal method
|
---|
| 9 | Matteo Cacciari, Gavin P. Salam, Gregory Soyez
|
---|
| 10 | arXiv:1407.0408
|
---|
| 11 |
|
---|
| 12 | The SoftKiller class progressively kills soft particles in order of
|
---|
| 13 | increasing pt until half of the event is empty (i.e. rho is zero).
|
---|
| 14 | It is constructed using
|
---|
| 15 |
|
---|
| 16 | SoftKiller soft_killer(double rapmax, double grid_spacing,
|
---|
| 17 | Selector sifter = Selector());
|
---|
| 18 |
|
---|
| 19 | with
|
---|
| 20 |
|
---|
| 21 | rapmax the maximal (absolute) rapidity extent of the grid
|
---|
| 22 | tile_size the requested grid spacing (or equivalent tile size)
|
---|
| 23 | sifter when provided, the soft killer is applied
|
---|
| 24 | only to particles that pass the sifter (the
|
---|
| 25 | others are kept untouched)
|
---|
| 26 |
|
---|
| 27 | For a given event, the SoftKiller is then applied to an event as follows
|
---|
| 28 |
|
---|
| 29 | vector<PseudoJet> event;
|
---|
| 30 | vector<PseudoJet> killed_event = soft_killer(event);
|
---|
| 31 |
|
---|
| 32 | For an explicit illustration of how this works, see the example.cc
|
---|
| 33 | file which can be built using
|
---|
| 34 |
|
---|
| 35 | make example
|
---|
| 36 |
|
---|
| 37 | and should be run with
|
---|
| 38 |
|
---|
| 39 | ./example < ../data/Pythia-Zp2jets-lhc-pileup-1ev.dat
|
---|
| 40 |
|
---|
| 41 | The expected output can be found in example.ref
|
---|
| 42 |
|
---|
| 43 | ----------------------------------------------------------------------
|
---|
| 44 | More advanced usage
|
---|
| 45 | ===================
|
---|
| 46 |
|
---|
| 47 | If you have FastJet 3.1, then you can use its RectangularGrid to have
|
---|
| 48 | obtain control over the grid; for example to apply a soft killer
|
---|
| 49 | separately to central and forward particles you might have:
|
---|
| 50 |
|
---|
| 51 | double central_rapmax = 2.5, forward_rapmax = 5.0, tile_size = 0.5;
|
---|
| 52 |
|
---|
| 53 | // the central SK runs from -central_rapmax to central_rapmax; we
|
---|
| 54 | // can have separate rapidity and phi tile sizes, but here keep
|
---|
| 55 | // them the same
|
---|
| 56 | RectangularGrid central_grid(-central_rapmax, central_rapmax, tile_size, tile_size);
|
---|
| 57 | SoftKiller central_killer(central_grid);
|
---|
| 58 | Selector central_selector = SelectorAbsRapMax(central_rapmax); // for later use
|
---|
| 59 |
|
---|
| 60 | // for the forward SK, we have a grid from -5.0 to 5.0 but then use
|
---|
| 61 | // only grid tiles whose central point passes the forward selector
|
---|
| 62 | Selector forward_selector = SelectorAbsRapRange(central_rapmax, forward_rapmax);
|
---|
| 63 | RectangularGrid forward_grid(-forward_rapma, forward_rapmax, tile_size, tile_size, forward_selector);
|
---|
| 64 | SoftKiller central_killer(forward_grid);
|
---|
| 65 |
|
---|
| 66 | // now process central and forward particles separately
|
---|
| 67 | vector<PseudoJet> central_kept_particles = central_killer(central_selector(particles));
|
---|
| 68 | vector<PseudoJet> forward_kept_particles = forward_killer(forward_selector(particles));
|
---|
| 69 |
|
---|
| 70 |
|
---|