DAS  3.0
Das Analysis System
PseudoJet

#include <fjcore.hh>

+ Collaboration diagram for PseudoJet:

Classes

class  InexistentUserInfo
 
class  UserInfoBase
 

Public Types

enum  {
  X =0, Y =1, Z =2, T =3,
  NUM_COORDINATES =4, SIZE =NUM_COORDINATES
}
 

Public Member Functions

 PseudoJet ()
 
 PseudoJet (const double px, const double py, const double pz, const double E)
 
template<class L >
 PseudoJet (const L &some_four_vector)
 
 PseudoJet (bool)
 
virtual ~PseudoJet ()
 
double E () const
 
double e () const
 
double px () const
 
double py () const
 
double pz () const
 
double phi () const
 
double phi_std () const
 
double phi_02pi () const
 
double rap () const
 
double rapidity () const
 
double pseudorapidity () const
 
double eta () const
 
double pt2 () const
 
double pt () const
 
double perp2 () const
 
double perp () const
 
double CorrPt () const
 
double kt2 () const
 
double m2 () const
 
double m () const
 
double mperp2 () const
 
double mperp () const
 
double mt2 () const
 
double mt () const
 
double modp2 () const
 
double modp () const
 
double Et () const
 
double Et2 () const
 
double cos_theta () const
 
double theta () const
 
double operator() (int i) const
 
double operator[] (int i) const
 
double kt_distance (const PseudoJet &other) const
 
double plain_distance (const PseudoJet &other) const
 
double squared_distance (const PseudoJet &other) const
 
double delta_R (const PseudoJet &other) const
 
double delta_phi_to (const PseudoJet &other) const
 
double beam_distance () const
 
std::valarray< double > four_mom () const
 
PseudoJetboost (const PseudoJet &prest)
 
PseudoJetunboost (const PseudoJet &prest)
 
PseudoJetoperator*= (double)
 
PseudoJetoperator/= (double)
 
PseudoJetoperator+= (const PseudoJet &)
 
PseudoJetoperator-= (const PseudoJet &)
 
void reset (double px, double py, double pz, double E)
 
void reset (const PseudoJet &psjet)
 
template<class L >
void reset (const L &some_four_vector)
 
void reset_PtYPhiM (double pt_in, double y_in, double phi_in, double m_in=0.0)
 
void reset_momentum (double px, double py, double pz, double E)
 
void reset_momentum (const PseudoJet &pj)
 
void reset_momentum_PtYPhiM (double pt, double y, double phi, double m=0.0)
 
template<class L >
void reset_momentum (const L &some_four_vector)
 
void set_cached_rap_phi (double rap, double phi)
 
int user_index () const
 
void set_user_index (const int index)
 
void set_user_info (UserInfoBase *user_info_in)
 
template<class L >
const L & user_info () const
 
bool has_user_info () const
 
template<class L >
bool has_user_info () const
 
const UserInfoBaseuser_info_ptr () const
 
const SharedPtr< UserInfoBase > & user_info_shared_ptr () const
 
SharedPtr< UserInfoBase > & user_info_shared_ptr ()
 
std::string description () const
 
bool has_associated_cluster_sequence () const
 
bool has_associated_cs () const
 
bool has_valid_cluster_sequence () const
 
bool has_valid_cs () const
 
const ClusterSequenceassociated_cluster_sequence () const
 
const ClusterSequenceassociated_cs () const
 
const ClusterSequencevalidated_cluster_sequence () const
 
const ClusterSequencevalidated_cs () const
 
void set_structure_shared_ptr (const SharedPtr< PseudoJetStructureBase > &structure)
 
bool has_structure () const
 
const PseudoJetStructureBasestructure_ptr () const
 
PseudoJetStructureBasestructure_non_const_ptr ()
 
const PseudoJetStructureBasevalidated_structure_ptr () const
 
const SharedPtr< PseudoJetStructureBase > & structure_shared_ptr () const
 
template<typename StructureType >
const StructureType & structure () const
 
template<typename TransformerType >
bool has_structure_of () const
 
template<typename TransformerType >
const TransformerType::StructureType & structure_of () const
 
virtual bool has_partner (PseudoJet &partner) const
 
virtual bool has_child (PseudoJet &child) const
 
virtual bool has_parents (PseudoJet &parent1, PseudoJet &parent2) const
 
virtual bool contains (const PseudoJet &constituent) const
 
virtual bool is_inside (const PseudoJet &jet) const
 
virtual bool has_constituents () const
 
virtual std::vector< PseudoJetconstituents () const
 
virtual bool has_exclusive_subjets () const
 
std::vector< PseudoJetexclusive_subjets (const double dcut) const
 
int n_exclusive_subjets (const double dcut) const
 
std::vector< PseudoJetexclusive_subjets (int nsub) const
 
std::vector< PseudoJetexclusive_subjets_up_to (int nsub) const
 
double exclusive_subdmerge (int nsub) const
 
double exclusive_subdmerge_max (int nsub) const
 
virtual bool has_pieces () const
 
virtual std::vector< PseudoJetpieces () const
 
int cluster_hist_index () const
 
void set_cluster_hist_index (const int index)
 
int cluster_sequence_history_index () const
 
void set_cluster_sequence_history_index (const int index)
 

Protected Attributes

SharedPtr< PseudoJetStructureBase_structure
 
SharedPtr< UserInfoBase_user_info
 

Private Member Functions

void _finish_init ()
 
void _reset_indices ()
 
void _ensure_valid_rap_phi () const
 
void _set_rap_phi () const
 

Private Attributes

double _px
 
double _py
 
double _pz
 
double _E
 
double _phi
 
double _rap
 
double _kt2
 
int _cluster_hist_index
 
int _user_index
 

Friends

PseudoJet operator* (double, const PseudoJet &)
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
NUM_COORDINATES 
SIZE 
596 { X=0, Y=1, Z=2, T=3, NUM_COORDINATES=4, SIZE=NUM_COORDINATES };

Constructor & Destructor Documentation

◆ PseudoJet() [1/4]

PseudoJet ( )
inline
537 : _px(0), _py(0), _pz(0), _E(0) {_finish_init(); _reset_indices();}

◆ PseudoJet() [2/4]

PseudoJet ( const double  px,
const double  py,
const double  pz,
const double  E 
)
3746  {
3747  _E = E_in ;
3748  _px = px_in;
3749  _py = py_in;
3750  _pz = pz_in;
3751  this->_finish_init();
3752  _reset_indices();
3753 }

◆ PseudoJet() [3/4]

PseudoJet ( const L &  some_four_vector)
inline
781  {
782  reset(some_four_vector);
783 }

◆ PseudoJet() [4/4]

PseudoJet ( bool  )
inline
542 {}

◆ ~PseudoJet()

virtual ~PseudoJet ( )
inlinevirtual
543 {};

Member Function Documentation

◆ _ensure_valid_rap_phi()

void _ensure_valid_rap_phi ( ) const
inlineprivate
720  {
722  }

◆ _finish_init()

void _finish_init ( )
private
3754  {
3755  _kt2 = this->px()*this->px() + this->py()*this->py();
3758 }

◆ _reset_indices()

void _reset_indices ( )
inlineprivate
785  {
787  set_user_index(-1);
788  _structure.reset();
789  _user_info.reset();
790 }

◆ _set_rap_phi()

void _set_rap_phi ( ) const
private
3759  {
3760  if (_kt2 == 0.0) {
3761  _phi = 0.0; }
3762  else {
3763  _phi = atan2(this->py(),this->px());
3764  }
3765  if (_phi < 0.0) {_phi += twopi;}
3766  if (_phi >= twopi) {_phi -= twopi;} // can happen if phi=-|eps<1e-15|?
3767  if (this->E() == abs(this->pz()) && _kt2 == 0) {
3768  double MaxRapHere = MaxRap + abs(this->pz());
3769  if (this->pz() >= 0.0) {_rap = MaxRapHere;} else {_rap = -MaxRapHere;}
3770  } else {
3771  double effective_m2 = max(0.0,m2()); // force non tachyonic mass
3772  double E_plus_pz = _E + abs(_pz); // the safer of p+, p-
3773  _rap = 0.5*log((_kt2 + effective_m2)/(E_plus_pz*E_plus_pz));
3774  if (_pz > 0) {_rap = - _rap;}
3775  }
3776 }

◆ associated_cluster_sequence()

const ClusterSequence * associated_cluster_sequence ( ) const
3971  {
3972  if (! has_associated_cluster_sequence()) return NULL;
3974 }

◆ associated_cs()

const ClusterSequence* associated_cs ( ) const
inline
671 {return associated_cluster_sequence();}

◆ beam_distance()

double beam_distance ( ) const
inline
594 {return _kt2;}

◆ boost()

PseudoJet & boost ( const PseudoJet prest)
3879  {
3880  if (prest.px() == 0.0 && prest.py() == 0.0 && prest.pz() == 0.0)
3881  return *this;
3882  double m_local = prest.m();
3883  assert(m_local != 0);
3884  double pf4 = ( px()*prest.px() + py()*prest.py()
3885  + pz()*prest.pz() + E()*prest.E() )/m_local;
3886  double fn = (pf4 + E()) / (prest.E() + m_local);
3887  _px += fn*prest.px();
3888  _py += fn*prest.py();
3889  _pz += fn*prest.pz();
3890  _E = pf4;
3891  _finish_init(); // we need to recalculate phi,rap,kt2
3892  return *this;
3893 }

◆ cluster_hist_index()

int cluster_hist_index ( ) const
inline
704 {return _cluster_hist_index;}

◆ cluster_sequence_history_index()

int cluster_sequence_history_index ( ) const
inline
706  {
707  return cluster_hist_index();}

◆ constituents()

vector< PseudoJet > constituents ( ) const
virtual
4019  {
4020  return validated_structure_ptr()->constituents(*this);
4021 }

◆ contains()

bool contains ( const PseudoJet constituent) const
virtual
4010  {
4011  return validated_structure_ptr()->object_in_jet(constituent, *this);
4012 }

◆ CorrPt()

double CorrPt ( ) const
inline
568 {return sqrt(_kt2);}

◆ cos_theta()

double cos_theta ( ) const
inline
580  {
581  return std::min(1.0, std::max(-1.0, _pz/sqrt(modp2())));
582  }

◆ delta_phi_to()

double delta_phi_to ( const PseudoJet other) const
3957  {
3958  double dphi = other.phi() - phi();
3959  if (dphi > pi) dphi -= twopi;
3960  if (dphi < -pi) dphi += twopi;
3961  return dphi;
3962 }

◆ delta_R()

double delta_R ( const PseudoJet other) const
inline
590  {
591  return sqrt(squared_distance(other));
592  }

◆ description()

string description ( ) const
3963  {
3964  if (!_structure)
3965  return "standard PseudoJet (with no associated clustering information)";
3966  return _structure->description();
3967 }

◆ E()

double E ( ) const
inline
544 {return _E;}

◆ e()

double e ( ) const
inline
545 {return _E;} // like CLHEP

◆ Et()

double Et ( ) const
inline
578 {return (_kt2==0) ? 0.0 : _E/sqrt(1.0+_pz*_pz/_kt2);}

◆ Et2()

double Et2 ( ) const
inline
579 {return (_kt2==0) ? 0.0 : _E*_E/(1.0+_pz*_pz/_kt2);}

◆ eta()

double eta ( ) const
inline
563 {return pseudorapidity();}

◆ exclusive_subdmerge()

double exclusive_subdmerge ( int  nsub) const
4044  {
4045  return validated_structure_ptr()->exclusive_subdmerge(*this, nsub);
4046 }

◆ exclusive_subdmerge_max()

double exclusive_subdmerge_max ( int  nsub) const
4047  {
4048  return validated_structure_ptr()->exclusive_subdmerge_max(*this, nsub);
4049 }

◆ exclusive_subjets() [1/2]

std::vector< PseudoJet > exclusive_subjets ( const double  dcut) const
4025  {
4026  return validated_structure_ptr()->exclusive_subjets(*this, dcut);
4027 }

◆ exclusive_subjets() [2/2]

std::vector< PseudoJet > exclusive_subjets ( int  nsub) const
4034  {
4035  vector<PseudoJet> subjets = exclusive_subjets_up_to(nsub);
4036  if (int(subjets.size()) < nsub) {
4037  ostringstream err;
4038  err << "Requested " << nsub << " exclusive subjets, but there were only "
4039  << subjets.size() << " particles in the jet";
4040  throw Error(err.str());
4041  }
4042  return subjets;
4043 }

◆ exclusive_subjets_up_to()

std::vector< PseudoJet > exclusive_subjets_up_to ( int  nsub) const
4031  {
4032  return validated_structure_ptr()->exclusive_subjets_up_to(*this, nsub);
4033 }

◆ four_mom()

valarray< double > four_mom ( ) const
3777  {
3778  valarray<double> mom(4);
3779  mom[0] = _px;
3780  mom[1] = _py;
3781  mom[2] = _pz;
3782  mom[3] = _E ;
3783  return mom;
3784 }

◆ has_associated_cluster_sequence()

bool has_associated_cluster_sequence ( ) const
3968  {
3970 }

◆ has_associated_cs()

bool has_associated_cs ( ) const
inline

◆ has_child()

bool has_child ( PseudoJet child) const
virtual
4004  {
4005  return validated_structure_ptr()->has_child(*this, child);
4006 }

◆ has_constituents()

bool has_constituents ( ) const
virtual
4016  {
4017  return (_structure) && (_structure->has_constituents());
4018 }

◆ has_exclusive_subjets()

bool has_exclusive_subjets ( ) const
virtual
4022  {
4023  return (_structure) && (_structure->has_exclusive_subjets());
4024 }

◆ has_parents()

bool has_parents ( PseudoJet parent1,
PseudoJet parent2 
) const
virtual
4007  {
4008  return validated_structure_ptr()->has_parents(*this, parent1, parent2);
4009 }

◆ has_partner()

bool has_partner ( PseudoJet partner) const
virtual
4001  {
4002  return validated_structure_ptr()->has_partner(*this, partner);
4003 }

◆ has_pieces()

bool has_pieces ( ) const
virtual
4050  {
4051  return ((_structure) && (_structure->has_pieces(*this)));
4052 }

◆ has_structure()

bool has_structure ( ) const
3984  {
3985  return bool(_structure);
3986 }

◆ has_structure_of()

bool has_structure_of
824  {
825  if (!_structure) return false;
826  return dynamic_cast<const typename TransformerType::StructureType *>(_structure.get()) != 0;
827 }

◆ has_user_info() [1/2]

bool has_user_info ( ) const
inline
649  {
650  return _user_info.get();
651  }

◆ has_user_info() [2/2]

bool has_user_info ( ) const
inline
653  {
654  return _user_info.get() && dynamic_cast<const L *>(_user_info.get());
655  }

◆ has_valid_cluster_sequence()

bool has_valid_cluster_sequence ( ) const
3975  {
3977 }

◆ has_valid_cs()

bool has_valid_cs ( ) const
inline
669 {return has_valid_cluster_sequence();}

◆ is_inside()

bool is_inside ( const PseudoJet jet) const
virtual
4013  {
4014  return validated_structure_ptr()->object_in_jet(*this, jet);
4015 }

◆ kt2()

double kt2 ( ) const
inline
569 {return _kt2;} // for bkwds compatibility

◆ kt_distance()

double kt_distance ( const PseudoJet other) const
3943  {
3944  double distance = min(_kt2, other._kt2);
3945  double dphi = abs(phi() - other.phi());
3946  if (dphi > pi) {dphi = twopi - dphi;}
3947  double drap = rap() - other.rap();
3948  distance = distance * (dphi*dphi + drap*drap);
3949  return distance;
3950 }

◆ m()

double m ( ) const
inline
791  {
792  double mm = m2();
793  return mm < 0.0 ? -std::sqrt(-mm) : std::sqrt(mm);
794 }

◆ m2()

double m2 ( ) const
inline
570 {return (_E+_pz)*(_E-_pz)-_kt2;}

◆ modp()

double modp ( ) const
inline
577 {return sqrt(_kt2+_pz*_pz);}

◆ modp2()

double modp2 ( ) const
inline
576 {return _kt2+_pz*_pz;}

◆ mperp()

double mperp ( ) const
inline
573 {return sqrt(std::abs(mperp2()));}

◆ mperp2()

double mperp2 ( ) const
inline
572 {return (_E+_pz)*(_E-_pz);}

◆ mt()

double mt ( ) const
inline
575 {return sqrt(std::abs(mperp2()));}

◆ mt2()

double mt2 ( ) const
inline
574 {return (_E+_pz)*(_E-_pz);}

◆ n_exclusive_subjets()

int n_exclusive_subjets ( const double  dcut) const
4028  {
4029  return validated_structure_ptr()->n_exclusive_subjets(*this, dcut);
4030 }

◆ operator()()

double operator() ( int  i) const
3785  {
3786  switch(i) {
3787  case X:
3788  return px();
3789  case Y:
3790  return py();
3791  case Z:
3792  return pz();
3793  case T:
3794  return e();
3795  default:
3796  ostringstream err;
3797  err << "PseudoJet subscripting: bad index (" << i << ")";
3798  throw Error(err.str());
3799  }
3800  return 0.;
3801 }

◆ operator*=()

PseudoJet & operator*= ( double  coeff)
3833  {
3835  _px *= coeff;
3836  _py *= coeff;
3837  _pz *= coeff;
3838  _E *= coeff;
3839  _kt2*= coeff*coeff;
3840  return *this;
3841 }

◆ operator+=()

PseudoJet & operator+= ( const PseudoJet other_jet)
3846  {
3847  _px += other_jet._px;
3848  _py += other_jet._py;
3849  _pz += other_jet._pz;
3850  _E += other_jet._E ;
3851  _finish_init(); // we need to recalculate phi,rap,kt2
3852  return *this;
3853 }

◆ operator-=()

PseudoJet & operator-= ( const PseudoJet other_jet)
3854  {
3855  _px -= other_jet._px;
3856  _py -= other_jet._py;
3857  _pz -= other_jet._pz;
3858  _E -= other_jet._E ;
3859  _finish_init(); // we need to recalculate phi,rap,kt2
3860  return *this;
3861 }

◆ operator/=()

PseudoJet & operator/= ( double  coeff)
3842  {
3843  (*this) *= 1.0/coeff;
3844  return *this;
3845 }

◆ operator[]()

double operator[] ( int  i) const
inline
585 { return (*this)(i); }; // this too

◆ perp()

double perp ( ) const
inline
567 {return sqrt(_kt2);} // like CLHEP

◆ perp2()

double perp2 ( ) const
inline
566 {return _kt2;} // like CLHEP

◆ phi()

double phi ( ) const
inline
549 {return phi_02pi();}

◆ phi_02pi()

double phi_02pi ( ) const
inline
553  {
555  return _phi;
556  }

◆ phi_std()

double phi_std ( ) const
inline
550  {
552  return _phi > pi ? _phi-twopi : _phi;}

◆ pieces()

std::vector< PseudoJet > pieces ( ) const
virtual
4053  {
4054  return validated_structure_ptr()->pieces(*this);
4055 }

◆ plain_distance()

double plain_distance ( const PseudoJet other) const
3951  {
3952  double dphi = abs(phi() - other.phi());
3953  if (dphi > pi) {dphi = twopi - dphi;}
3954  double drap = rap() - other.rap();
3955  return (dphi*dphi + drap*drap);
3956 }

◆ pseudorapidity()

double pseudorapidity ( ) const
3802  {
3803  if (px() == 0.0 && py() ==0.0) return MaxRap;
3804  if (pz() == 0.0) return 0.0;
3805  double theta = atan(perp()/pz());
3806  if (theta < 0) theta += pi;
3807  return -log(tan(theta/2));
3808 }

◆ pt()

double pt ( ) const
inline
565 {return sqrt(_kt2);}

◆ pt2()

double pt2 ( ) const
inline
564 {return _kt2;}

◆ px()

double px ( ) const
inline
546 {return _px;}

◆ py()

double py ( ) const
inline
547 {return _py;}

◆ pz()

double pz ( ) const
inline
548 {return _pz;}

◆ rap()

double rap ( ) const
inline
557  {
559  return _rap;
560  }

◆ rapidity()

double rapidity ( ) const
inline
561 {return rap();} // like CLHEP

◆ reset() [1/3]

void reset ( const L &  some_four_vector)
inline
608  {
609  const PseudoJet * pj = fjcore::cast_if_derived<const PseudoJet>(&some_four_vector);
610  if (pj){
611  (*this) = *pj;
612  } else {
613  reset(some_four_vector[0], some_four_vector[1],
614  some_four_vector[2], some_four_vector[3]);
615  }
616  }

◆ reset() [2/3]

void reset ( const PseudoJet psjet)
inline
604  {
605  (*this) = psjet;
606  }

◆ reset() [3/3]

void reset ( double  px,
double  py,
double  pz,
double  E 
)
inline
795  {
796  _px = px_in;
797  _py = py_in;
798  _pz = pz_in;
799  _E = E_in;
800  _finish_init();
801  _reset_indices();
802 }

◆ reset_momentum() [1/3]

void reset_momentum ( const L &  some_four_vector)
inline
625  {
626  reset_momentum(some_four_vector[0], some_four_vector[1],
627  some_four_vector[2], some_four_vector[3]);
628  }

◆ reset_momentum() [2/3]

void reset_momentum ( const PseudoJet pj)
inline
810  {
811  _px = pj._px ;
812  _py = pj._py ;
813  _pz = pj._pz ;
814  _E = pj._E ;
815  _phi = pj._phi;
816  _rap = pj._rap;
817  _kt2 = pj._kt2;
818 }

◆ reset_momentum() [3/3]

void reset_momentum ( double  px,
double  py,
double  pz,
double  E 
)
inline
803  {
804  _px = px_in;
805  _py = py_in;
806  _pz = pz_in;
807  _E = E_in;
808  _finish_init();
809 }

◆ reset_momentum_PtYPhiM()

void reset_momentum_PtYPhiM ( double  pt,
double  y,
double  phi,
double  m = 0.0 
)
3920  {
3921  assert(phi_in < 2*twopi && phi_in > -twopi);
3922  double ptm = (m_in == 0) ? pt_in : sqrt(pt_in*pt_in+m_in*m_in);
3923  double exprap = exp(y_in);
3924  double pminus = ptm/exprap;
3925  double pplus = ptm*exprap;
3926  double px_local = pt_in*cos(phi_in);
3927  double py_local = pt_in*sin(phi_in);
3928  reset_momentum(px_local,py_local,0.5*(pplus-pminus),0.5*(pplus+pminus));
3929  set_cached_rap_phi(y_in,phi_in);
3930 }

◆ reset_PtYPhiM()

void reset_PtYPhiM ( double  pt_in,
double  y_in,
double  phi_in,
double  m_in = 0.0 
)
inline
618  {
619  reset_momentum_PtYPhiM(pt_in, y_in, phi_in, m_in);
620  _reset_indices();
621  }

◆ set_cached_rap_phi()

void set_cached_rap_phi ( double  rap,
double  phi 
)
3915  {
3916  _rap = rap_in; _phi = phi_in;
3917  if (_phi >= twopi) _phi -= twopi;
3918  if (_phi < 0) _phi += twopi;
3919 }

◆ set_cluster_hist_index()

void set_cluster_hist_index ( const int  index)
inline
705 {_cluster_hist_index = index;}

◆ set_cluster_sequence_history_index()

void set_cluster_sequence_history_index ( const int  index)
inline
708  {
709  set_cluster_hist_index(index);}

◆ set_structure_shared_ptr()

void set_structure_shared_ptr ( const SharedPtr< PseudoJetStructureBase > &  structure)
3981  {
3982  _structure = structure_in;
3983 }

◆ set_user_index()

void set_user_index ( const int  index)
inline
631 {_user_index = index;}

◆ set_user_info()

void set_user_info ( UserInfoBase user_info_in)
inline
641  {
642  _user_info.reset(user_info_in);
643  }

◆ squared_distance()

double squared_distance ( const PseudoJet other) const
inline
588  {
589  return plain_distance(other);}

◆ structure()

const StructureType & structure
820  {
821  return dynamic_cast<const StructureType &>(* validated_structure_ptr());
822 }

◆ structure_non_const_ptr()

PseudoJetStructureBase * structure_non_const_ptr ( )
3990  {
3991  return _structure.get();
3992 }

◆ structure_of()

const TransformerType::StructureType & structure_of
829  {
830  if (!_structure)
831  throw Error("Trying to access the structure of a PseudoJet without an associated structure");
832  return dynamic_cast<const typename TransformerType::StructureType &>(*_structure);
833 }

◆ structure_ptr()

const PseudoJetStructureBase * structure_ptr ( ) const
3987  {
3988  return _structure.get();
3989 }

◆ structure_shared_ptr()

const SharedPtr< PseudoJetStructureBase > & structure_shared_ptr ( ) const
3998  {
3999  return _structure;
4000 }

◆ theta()

double theta ( ) const
inline
583 { return acos(cos_theta()); }

◆ unboost()

PseudoJet & unboost ( const PseudoJet prest)
3894  {
3895  if (prest.px() == 0.0 && prest.py() == 0.0 && prest.pz() == 0.0)
3896  return *this;
3897  double m_local = prest.m();
3898  assert(m_local != 0);
3899  double pf4 = ( -px()*prest.px() - py()*prest.py()
3900  - pz()*prest.pz() + E()*prest.E() )/m_local;
3901  double fn = (pf4 + E()) / (prest.E() + m_local);
3902  _px -= fn*prest.px();
3903  _py -= fn*prest.py();
3904  _pz -= fn*prest.pz();
3905  _E = pf4;
3906  _finish_init(); // we need to recalculate phi,rap,kt2
3907  return *this;
3908 }

◆ user_index()

int user_index ( ) const
inline
630 {return _user_index;}

◆ user_info()

const L& user_info ( ) const
inline
645  {
646  if (_user_info.get() == 0) throw InexistentUserInfo();
647  return dynamic_cast<const L &>(* _user_info.get());
648  }

◆ user_info_ptr()

const UserInfoBase* user_info_ptr ( ) const
inline
656  {
657  return _user_info.get();
658  }

◆ user_info_shared_ptr() [1/2]

SharedPtr<UserInfoBase>& user_info_shared_ptr ( )
inline
662  {
663  return _user_info;
664  }

◆ user_info_shared_ptr() [2/2]

const SharedPtr<UserInfoBase>& user_info_shared_ptr ( ) const
inline
659  {
660  return _user_info;
661  }

◆ validated_cluster_sequence()

const ClusterSequence* validated_cluster_sequence ( ) const
inline
672  {
673  return validated_cs();
674  }

◆ validated_cs()

const ClusterSequence * validated_cs ( ) const
3978  {
3980 }

◆ validated_structure_ptr()

const PseudoJetStructureBase * validated_structure_ptr ( ) const
3993  {
3994  if (!_structure)
3995  throw Error("Trying to access the structure of a PseudoJet which has no associated structure");
3996  return _structure.get();
3997 }

Friends And Related Function Documentation

◆ operator*

PseudoJet operator* ( double  coeff,
const PseudoJet jet 
)
friend
3821  {
3822  jet._ensure_valid_rap_phi();
3823  PseudoJet coeff_times_jet(jet);
3824  coeff_times_jet *= coeff;
3825  return coeff_times_jet;
3826 }

Member Data Documentation

◆ _cluster_hist_index

int _cluster_hist_index
private

◆ _E

double _E
private

◆ _kt2

double _kt2
private

◆ _phi

double _phi
mutableprivate

◆ _px

double _px
private

◆ _py

double _py
private

◆ _pz

double _pz
private

◆ _rap

double _rap
private

◆ _structure

SharedPtr<PseudoJetStructureBase> _structure
protected

◆ _user_index

int _user_index
private

◆ _user_info

SharedPtr<UserInfoBase> _user_info
protected

The documentation for this class was generated from the following files:
PseudoJet::cluster_hist_index
int cluster_hist_index() const
Definition: fjcore.hh:704
PseudoJetStructureBase::has_associated_cluster_sequence
virtual bool has_associated_cluster_sequence() const
Definition: fjcore.hh:501
PseudoJet::_set_rap_phi
void _set_rap_phi() const
Definition: fjcore.cc:3759
MaxRap
FJCORE_BEGIN_NAMESPACE const double MaxRap
Definition: fjcore.hh:532
PseudoJet::set_cluster_hist_index
void set_cluster_hist_index(const int index)
Definition: fjcore.hh:705
PseudoJet::has_associated_cluster_sequence
bool has_associated_cluster_sequence() const
Definition: fjcore.cc:3968
PseudoJet::reset_momentum
void reset_momentum(double px, double py, double pz, double E)
Definition: fjcore.hh:803
PseudoJetStructureBase::has_partner
virtual bool has_partner(const PseudoJet &reference, PseudoJet &partner) const
Definition: fjcore.cc:4127
PseudoJet::_px
double _px
Definition: fjcore.hh:714
PseudoJet::py
double py() const
Definition: fjcore.hh:547
PseudoJet::cos_theta
double cos_theta() const
Definition: fjcore.hh:580
PseudoJet::_user_index
int _user_index
Definition: fjcore.hh:717
PseudoJet::mperp2
double mperp2() const
Definition: fjcore.hh:572
PseudoJetStructureBase::validated_cs
virtual const ClusterSequence * validated_cs() const
Definition: fjcore.cc:4124
PseudoJetStructureBase::has_parents
virtual bool has_parents(const PseudoJet &reference, PseudoJet &parent1, PseudoJet &parent2) const
Definition: fjcore.cc:4133
pi
FJCORE_BEGIN_NAMESPACE const double pi
Definition: fjcore.hh:191
PseudoJet::_rap
double _rap
Definition: fjcore.hh:715
PseudoJet::has_valid_cluster_sequence
bool has_valid_cluster_sequence() const
Definition: fjcore.cc:3975
PseudoJet::phi_02pi
double phi_02pi() const
Definition: fjcore.hh:553
PseudoJet::_user_info
SharedPtr< UserInfoBase > _user_info
Definition: fjcore.hh:712
PseudoJet::perp
double perp() const
Definition: fjcore.hh:567
PseudoJet::plain_distance
double plain_distance(const PseudoJet &other) const
Definition: fjcore.cc:3951
PseudoJet::_ensure_valid_rap_phi
void _ensure_valid_rap_phi() const
Definition: fjcore.hh:720
PseudoJetStructureBase::exclusive_subdmerge_max
virtual double exclusive_subdmerge_max(const PseudoJet &reference, int nsub) const
Definition: fjcore.cc:4154
PseudoJetStructureBase::object_in_jet
virtual bool object_in_jet(const PseudoJet &reference, const PseudoJet &jet) const
Definition: fjcore.cc:4136
pseudojet_invalid_phi
const double pseudojet_invalid_phi
Definition: fjcore.hh:533
PseudoJetStructureBase::description
virtual std::string description() const
Definition: fjcore.hh:500
PseudoJet::phi
double phi() const
Definition: fjcore.hh:549
PseudoJet::_kt2
double _kt2
Definition: fjcore.hh:716
PseudoJetStructureBase::associated_cluster_sequence
virtual const ClusterSequence * associated_cluster_sequence() const
Definition: fjcore.cc:4121
PseudoJetStructureBase::pieces
virtual std::vector< PseudoJet > pieces(const PseudoJet &) const
Definition: fjcore.cc:4157
PseudoJet::validated_cs
const ClusterSequence * validated_cs() const
Definition: fjcore.cc:3978
PseudoJet::SIZE
@ SIZE
Definition: fjcore.hh:596
PseudoJet::set_user_index
void set_user_index(const int index)
Definition: fjcore.hh:631
PseudoJet::pseudorapidity
double pseudorapidity() const
Definition: fjcore.cc:3802
PseudoJet::X
@ X
Definition: fjcore.hh:596
PseudoJet::modp2
double modp2() const
Definition: fjcore.hh:576
PseudoJet::pz
double pz() const
Definition: fjcore.hh:548
PseudoJet::_reset_indices
void _reset_indices()
Definition: fjcore.hh:785
PseudoJetStructureBase::exclusive_subdmerge
virtual double exclusive_subdmerge(const PseudoJet &reference, int nsub) const
Definition: fjcore.cc:4151
PseudoJet::_py
double _py
Definition: fjcore.hh:714
PseudoJet::e
double e() const
Definition: fjcore.hh:545
PseudoJetStructureBase::constituents
virtual std::vector< PseudoJet > constituents(const PseudoJet &reference) const
Definition: fjcore.cc:4139
PseudoJet::_structure
SharedPtr< PseudoJetStructureBase > _structure
Definition: fjcore.hh:711
PseudoJet::px
double px() const
Definition: fjcore.hh:546
PseudoJetStructureBase::has_valid_cluster_sequence
virtual bool has_valid_cluster_sequence() const
Definition: fjcore.hh:503
PseudoJet::rap
double rap() const
Definition: fjcore.hh:557
pseudojet_invalid_rap
const double pseudojet_invalid_rap
Definition: fjcore.hh:534
PseudoJet::_phi
double _phi
Definition: fjcore.hh:715
PseudoJet::Y
@ Y
Definition: fjcore.hh:596
SharedPtr::get
T * get() const
Definition: fjcore.hh:342
PseudoJet::set_cached_rap_phi
void set_cached_rap_phi(double rap, double phi)
Definition: fjcore.cc:3915
PseudoJetStructureBase::n_exclusive_subjets
virtual int n_exclusive_subjets(const PseudoJet &reference, const double &dcut) const
Definition: fjcore.cc:4145
PseudoJet::validated_structure_ptr
const PseudoJetStructureBase * validated_structure_ptr() const
Definition: fjcore.cc:3993
PseudoJetStructureBase::has_child
virtual bool has_child(const PseudoJet &reference, PseudoJet &child) const
Definition: fjcore.cc:4130
PseudoJet::squared_distance
double squared_distance(const PseudoJet &other) const
Definition: fjcore.hh:588
PseudoJet
Definition: fjcore.hh:535
PseudoJet::m
double m() const
Definition: fjcore.hh:791
PseudoJetStructureBase::exclusive_subjets
virtual std::vector< PseudoJet > exclusive_subjets(const PseudoJet &reference, const double &dcut) const
Definition: fjcore.cc:4142
PseudoJet::_cluster_hist_index
int _cluster_hist_index
Definition: fjcore.hh:717
PseudoJet::E
double E() const
Definition: fjcore.hh:544
PseudoJet::Z
@ Z
Definition: fjcore.hh:596
Error
Definition: fjcore.hh:462
SharedPtr::reset
void reset()
Definition: fjcore.hh:308
PseudoJet::m2
double m2() const
Definition: fjcore.hh:570
PseudoJet::_pz
double _pz
Definition: fjcore.hh:714
twopi
const double twopi
Definition: fjcore.hh:192
PseudoJetStructureBase::has_pieces
virtual bool has_pieces(const PseudoJet &) const
Definition: fjcore.hh:517
PseudoJet::NUM_COORDINATES
@ NUM_COORDINATES
Definition: fjcore.hh:596
PseudoJet::_finish_init
void _finish_init()
Definition: fjcore.cc:3754
PseudoJet::T
@ T
Definition: fjcore.hh:596
PseudoJetStructureBase::has_exclusive_subjets
virtual bool has_exclusive_subjets() const
Definition: fjcore.hh:511
PseudoJet::reset
void reset(double px, double py, double pz, double E)
Definition: fjcore.hh:795
PseudoJet::theta
double theta() const
Definition: fjcore.hh:583
PseudoJetStructureBase::has_constituents
virtual bool has_constituents() const
Definition: fjcore.hh:509
PseudoJet::reset_momentum_PtYPhiM
void reset_momentum_PtYPhiM(double pt, double y, double phi, double m=0.0)
Definition: fjcore.cc:3920
PseudoJetStructureBase::exclusive_subjets_up_to
virtual std::vector< PseudoJet > exclusive_subjets_up_to(const PseudoJet &reference, int nsub) const
Definition: fjcore.cc:4148
PseudoJet::associated_cluster_sequence
const ClusterSequence * associated_cluster_sequence() const
Definition: fjcore.cc:3971
PseudoJet::exclusive_subjets_up_to
std::vector< PseudoJet > exclusive_subjets_up_to(int nsub) const
Definition: fjcore.cc:4031
PseudoJet::_E
double _E
Definition: fjcore.hh:714