DAS  3.0
Das Analysis System
JetDefinition::DefaultRecombiner

#include <fjcore.hh>

+ Inheritance diagram for JetDefinition::DefaultRecombiner:
+ Collaboration diagram for JetDefinition::DefaultRecombiner:

Public Member Functions

 DefaultRecombiner (RecombinationScheme recomb_scheme=E_scheme)
 
virtual std::string description () const FJCORE_OVERRIDE
 
virtual void recombine (const PseudoJet &pa, const PseudoJet &pb, PseudoJet &pab) const FJCORE_OVERRIDE
 
virtual void preprocess (PseudoJet &p) const FJCORE_OVERRIDE
 
RecombinationScheme scheme () const
 
- Public Member Functions inherited from JetDefinition::Recombiner
virtual ~Recombiner ()
 
void plus_equal (PseudoJet &pa, const PseudoJet &pb) const
 

Private Attributes

RecombinationScheme _recomb_scheme
 

Constructor & Destructor Documentation

◆ DefaultRecombiner()

DefaultRecombiner ( RecombinationScheme  recomb_scheme = E_scheme)
inline
1181  :
1182  _recomb_scheme(recomb_scheme) {}

Member Function Documentation

◆ description()

string description ( ) const
virtual

Implements JetDefinition::Recombiner.

3490  {
3491  switch(_recomb_scheme) {
3492  case E_scheme:
3493  return "E scheme recombination";
3494  case pt_scheme:
3495  return "pt scheme recombination";
3496  case pt2_scheme:
3497  return "pt2 scheme recombination";
3498  case Et_scheme:
3499  return "Et scheme recombination";
3500  case Et2_scheme:
3501  return "Et2 scheme recombination";
3502  case BIpt_scheme:
3503  return "boost-invariant pt scheme recombination";
3504  case BIpt2_scheme:
3505  return "boost-invariant pt2 scheme recombination";
3506  case WTA_pt_scheme:
3507  return "pt-ordered Winner-Takes-All recombination";
3508  case WTA_modp_scheme:
3509  return "|3-momentum|-ordered Winner-Takes-All recombination";
3510  default:
3511  ostringstream err;
3512  err << "DefaultRecombiner: unrecognized recombination scheme "
3513  << _recomb_scheme;
3514  throw Error(err.str());
3515  }
3516 }

◆ preprocess()

void preprocess ( PseudoJet p) const
virtual

Reimplemented from JetDefinition::Recombiner.

3577  {
3578  switch(_recomb_scheme) {
3579  case E_scheme:
3580  case BIpt_scheme:
3581  case BIpt2_scheme:
3582  case WTA_pt_scheme:
3583  case WTA_modp_scheme:
3584  break;
3585  case pt_scheme:
3586  case pt2_scheme:
3587  {
3588  double newE = sqrt(p.perp2()+p.pz()*p.pz());
3589  p.reset_momentum(p.px(), p.py(), p.pz(), newE);
3590  }
3591  break;
3592  case Et_scheme:
3593  case Et2_scheme:
3594  {
3595  double rescale = p.E()/sqrt(p.perp2()+p.pz()*p.pz());
3596  p.reset_momentum(rescale*p.px(), rescale*p.py(), rescale*p.pz(), p.E());
3597  }
3598  break;
3599  default:
3600  ostringstream err;
3601  err << "DefaultRecombiner: unrecognized recombination scheme "
3602  << _recomb_scheme;
3603  throw Error(err.str());
3604  }
3605 }

◆ recombine()

void recombine ( const PseudoJet pa,
const PseudoJet pb,
PseudoJet pab 
) const
virtual

Implements JetDefinition::Recombiner.

3519  {
3520  double weighta, weightb;
3521  switch(_recomb_scheme) {
3522  case E_scheme:
3523  pab.reset(pa.px()+pb.px(),
3524  pa.py()+pb.py(),
3525  pa.pz()+pb.pz(),
3526  pa.E ()+pb.E ());
3527  return;
3528  case pt_scheme:
3529  case Et_scheme:
3530  case BIpt_scheme:
3531  weighta = pa.perp();
3532  weightb = pb.perp();
3533  break;
3534  case pt2_scheme:
3535  case Et2_scheme:
3536  case BIpt2_scheme:
3537  weighta = pa.perp2();
3538  weightb = pb.perp2();
3539  break;
3540  case WTA_pt_scheme:{
3541  const PseudoJet & phard = (pa.pt2() >= pb.pt2()) ? pa : pb;
3542  pab.reset_PtYPhiM(pa.pt()+pb.pt(),
3543  phard.rap(), phard.phi(), phard.m());
3544  return;}
3545  case WTA_modp_scheme:{
3546  bool a_hardest = (pa.modp2() >= pb.modp2());
3547  const PseudoJet & phard = a_hardest ? pa : pb;
3548  const PseudoJet & psoft = a_hardest ? pb : pa;
3549  double modp_hard = phard.modp();
3550  double modp_ab = modp_hard + psoft.modp();
3551  if (phard.modp2()==0.0){
3552  pab.reset(0.0, 0.0, 0.0, phard.m());
3553  } else {
3554  double scale = modp_ab/modp_hard;
3555  pab.reset(phard.px()*scale, phard.py()*scale, phard.pz()*scale,
3556  sqrt(modp_ab*modp_ab + phard.m2()));
3557  }
3558  return;}
3559  default:
3560  ostringstream err;
3561  err << "DefaultRecombiner: unrecognized recombination scheme "
3562  << _recomb_scheme;
3563  throw Error(err.str());
3564  }
3565  double perp_ab = pa.perp() + pb.perp();
3566  if (perp_ab != 0.0) { // weights also non-zero...
3567  double y_ab = (weighta * pa.rap() + weightb * pb.rap())/(weighta+weightb);
3568  double phi_a = pa.phi(), phi_b = pb.phi();
3569  if (phi_a - phi_b > pi) phi_b += twopi;
3570  if (phi_a - phi_b < -pi) phi_b -= twopi;
3571  double phi_ab = (weighta * phi_a + weightb * phi_b)/(weighta+weightb);
3572  pab.reset_PtYPhiM(perp_ab,y_ab,phi_ab);
3573  } else { // weights are zero
3574  pab.reset(0.0, 0.0, 0.0, 0.0);
3575  }
3576 }

◆ scheme()

RecombinationScheme scheme ( ) const
inline
1187 {return _recomb_scheme;}

Member Data Documentation

◆ _recomb_scheme

RecombinationScheme _recomb_scheme
private

The documentation for this class was generated from the following files:
PseudoJet::py
double py() const
Definition: fjcore.hh:547
pi
FJCORE_BEGIN_NAMESPACE const double pi
Definition: fjcore.hh:191
Ntupliser_cfg.p
p
Definition: Ntupliser_cfg.py:174
PseudoJet::perp
double perp() const
Definition: fjcore.hh:567
JetDefinition::DefaultRecombiner::_recomb_scheme
RecombinationScheme _recomb_scheme
Definition: fjcore.hh:1189
PseudoJet::phi
double phi() const
Definition: fjcore.hh:549
WTA_modp_scheme
@ WTA_modp_scheme
Definition: fjcore.hh:1061
Et2_scheme
@ Et2_scheme
Definition: fjcore.hh:1057
PseudoJet::pt2
double pt2() const
Definition: fjcore.hh:564
PseudoJet::perp2
double perp2() const
Definition: fjcore.hh:566
pt2_scheme
@ pt2_scheme
Definition: fjcore.hh:1055
PseudoJet::modp2
double modp2() const
Definition: fjcore.hh:576
PseudoJet::pz
double pz() const
Definition: fjcore.hh:548
PseudoJet::reset_PtYPhiM
void reset_PtYPhiM(double pt_in, double y_in, double phi_in, double m_in=0.0)
Definition: fjcore.hh:618
BIpt2_scheme
@ BIpt2_scheme
Definition: fjcore.hh:1059
PseudoJet::px
double px() const
Definition: fjcore.hh:546
PseudoJet::rap
double rap() const
Definition: fjcore.hh:557
PseudoJet::modp
double modp() const
Definition: fjcore.hh:577
Et_scheme
@ Et_scheme
Definition: fjcore.hh:1056
PseudoJet::pt
double pt() const
Definition: fjcore.hh:565
PseudoJet
Definition: fjcore.hh:535
PseudoJet::m
double m() const
Definition: fjcore.hh:791
PseudoJet::E
double E() const
Definition: fjcore.hh:544
Error
Definition: fjcore.hh:462
WTA_pt_scheme
@ WTA_pt_scheme
Definition: fjcore.hh:1060
PseudoJet::m2
double m2() const
Definition: fjcore.hh:570
BIpt_scheme
@ BIpt_scheme
Definition: fjcore.hh:1058
twopi
const double twopi
Definition: fjcore.hh:192
pt_scheme
@ pt_scheme
Definition: fjcore.hh:1054
PseudoJet::reset
void reset(double px, double py, double pz, double E)
Definition: fjcore.hh:795
E_scheme
@ E_scheme
Definition: fjcore.hh:1053