Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

fastjet::JetDefinition::DefaultRecombiner Class Reference

A class that will provide the recombination scheme facilities and/or allow a user to extend these facilities. More...

#include <JetDefinition.hh>

Inheritance diagram for fastjet::JetDefinition::DefaultRecombiner:

Inheritance graph
[legend]
Collaboration diagram for fastjet::JetDefinition::DefaultRecombiner:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 DefaultRecombiner (RecombinationScheme recomb_scheme=E_scheme)
virtual std::string description () const
 return a textual description of the recombination scheme implemented here
virtual void recombine (const PseudoJet &pa, const PseudoJet &pb, PseudoJet &pab) const
 recombine pa and pb and put result into pab
virtual void preprocess (PseudoJet &p) const
 routine called to preprocess each input jet (to make all input jets compatible with the scheme requirements (e.g.
RecombinationScheme scheme () const
 return the index of the recombination scheme

Private Attributes

RecombinationScheme _recomb_scheme

Detailed Description

A class that will provide the recombination scheme facilities and/or allow a user to extend these facilities.

Definition at line 250 of file JetDefinition.hh.


Constructor & Destructor Documentation

fastjet::JetDefinition::DefaultRecombiner::DefaultRecombiner RecombinationScheme  recomb_scheme = E_scheme  )  [inline]
 

Definition at line 252 of file JetDefinition.hh.

00252                                                                     : 
00253       _recomb_scheme(recomb_scheme) {};


Member Function Documentation

string fastjet::JetDefinition::DefaultRecombiner::description  )  const [virtual]
 

return a textual description of the recombination scheme implemented here

Implements fastjet::JetDefinition::Recombiner.

Definition at line 34 of file JetDefinition.cc.

References _recomb_scheme, fastjet::BIpt2_scheme, fastjet::BIpt_scheme, fastjet::E_scheme, fastjet::Et2_scheme, fastjet::Et_scheme, fastjet::pt2_scheme, and fastjet::pt_scheme.

00034                                                          {
00035   switch(_recomb_scheme) {
00036   case E_scheme:
00037     return "E scheme recombination";
00038   case pt_scheme:
00039     return "pt scheme recombination";
00040   case pt2_scheme:
00041     return "pt2 scheme recombination";
00042   case Et_scheme:
00043     return "Et scheme recombination";
00044   case Et2_scheme:
00045     return "Et2 scheme recombination";
00046   case BIpt_scheme:
00047     return "boost-invariant pt scheme recombination";
00048   case BIpt2_scheme:
00049     return "boost-invariant pt2 scheme recombination";
00050   default:
00051     ostringstream err;
00052     err << "DefaultRecombiner: unrecognized recombination scheme " 
00053         << _recomb_scheme;
00054     throw Error(err.str());
00055   }
00056 }

void fastjet::JetDefinition::DefaultRecombiner::preprocess PseudoJet p  )  const [virtual]
 

routine called to preprocess each input jet (to make all input jets compatible with the scheme requirements (e.g.

massless).

Reimplemented from fastjet::JetDefinition::Recombiner.

Definition at line 112 of file JetDefinition.cc.

References _recomb_scheme, fastjet::BIpt2_scheme, fastjet::BIpt_scheme, fastjet::PseudoJet::E(), fastjet::E_scheme, fastjet::Et2_scheme, fastjet::Et_scheme, fastjet::PseudoJet::perp2(), fastjet::pt2_scheme, fastjet::pt_scheme, fastjet::PseudoJet::px(), fastjet::PseudoJet::py(), fastjet::PseudoJet::pz(), fastjet::PseudoJet::set_user_index(), and fastjet::PseudoJet::user_index().

00112                                                                    {
00113   switch(_recomb_scheme) {
00114   case E_scheme:
00115   case BIpt_scheme:
00116   case BIpt2_scheme:
00117     break;
00118   case pt_scheme:
00119   case pt2_scheme:
00120     {
00121       // these schemes (as in the ktjet implementation) need massless
00122       // initial 4-vectors with essentially E=|p|.
00123       double newE = sqrt(p.perp2()+p.pz()*p.pz());
00124       int    user_index = p.user_index();
00125       p = PseudoJet(p.px(), p.py(), p.pz(), newE);
00126       p.set_user_index(user_index);
00127     }
00128     break;
00129   case Et_scheme:
00130   case Et2_scheme:
00131     {
00132       // these schemes (as in the ktjet implementation) need massless
00133       // initial 4-vectors with essentially E=|p|.
00134       double rescale = p.E()/sqrt(p.perp2()+p.pz()*p.pz());
00135       int    user_index = p.user_index();
00136       p = PseudoJet(rescale*p.px(), rescale*p.py(), rescale*p.pz(), p.E());
00137       p.set_user_index(user_index);
00138     }
00139     break;
00140   default:
00141     ostringstream err;
00142     err << "DefaultRecombiner: unrecognized recombination scheme " 
00143         << _recomb_scheme;
00144     throw Error(err.str());
00145   }
00146 }

void fastjet::JetDefinition::DefaultRecombiner::recombine const PseudoJet pa,
const PseudoJet pb,
PseudoJet pab
const [virtual]
 

recombine pa and pb and put result into pab

Implements fastjet::JetDefinition::Recombiner.

Definition at line 59 of file JetDefinition.cc.

References _recomb_scheme, fastjet::BIpt2_scheme, fastjet::BIpt_scheme, fastjet::E_scheme, fastjet::Et2_scheme, fastjet::Et_scheme, fastjet::PseudoJet::perp(), fastjet::PseudoJet::perp2(), fastjet::PseudoJet::phi(), fastjet::pi, fastjet::pt2_scheme, fastjet::pt_scheme, fastjet::PseudoJet::rap(), fastjet::PseudoJet::set_user_index(), and fastjet::twopi.

00061                                   {
00062   
00063   double weighta, weightb;
00064 
00065   switch(_recomb_scheme) {
00066   case E_scheme:
00067     pab = pa + pb; 
00068     pab.set_user_index(0);
00069     return;
00070   // all remaining schemes are massless recombinations and locally
00071   // we just set weights, while the hard work is done below...
00072   case pt_scheme:
00073   case Et_scheme:
00074   case BIpt_scheme:
00075     weighta = pa.perp(); 
00076     weightb = pb.perp();
00077     break;
00078   case pt2_scheme:
00079   case Et2_scheme:
00080   case BIpt2_scheme:
00081     weighta = pa.perp2(); 
00082     weightb = pb.perp2();
00083     break;
00084   default:
00085     ostringstream err;
00086     err << "DefaultRecombiner: unrecognized recombination scheme " 
00087         << _recomb_scheme;
00088     throw Error(err.str());
00089   }
00090 
00091   double perp_ab = pa.perp() + pb.perp();
00092   if (perp_ab != 0.0) { // weights also non-zero...
00093     double y_ab    = (weighta * pa.rap() + weightb * pb.rap())/(weighta+weightb);
00094     
00095     // take care with periodicity in phi...
00096     double phi_a = pa.phi(), phi_b = pb.phi();
00097     if (phi_a - phi_b > pi)  phi_b += twopi;
00098     if (phi_a - phi_b < -pi) phi_b -= twopi;
00099     double phi_ab = (weighta * phi_a + weightb * phi_b)/(weighta+weightb);
00100     
00101     pab = PseudoJet(perp_ab*cos(phi_ab),
00102                     perp_ab*sin(phi_ab),
00103                     perp_ab*sinh(y_ab),
00104                     perp_ab*cosh(y_ab));
00105   } else { // weights are zero
00106     pab = PseudoJet(0.0,0.0,0.0,0.0);
00107   }
00108   pab.set_user_index(0);
00109 }

RecombinationScheme fastjet::JetDefinition::DefaultRecombiner::scheme  )  const [inline]
 

return the index of the recombination scheme

Definition at line 264 of file JetDefinition.hh.

00264 {return _recomb_scheme;};


Member Data Documentation

RecombinationScheme fastjet::JetDefinition::DefaultRecombiner::_recomb_scheme [private]
 

Definition at line 264 of file JetDefinition.hh.

Referenced by description(), preprocess(), and recombine().


The documentation for this class was generated from the following files:
Generated on Mon Apr 2 20:58:19 2007 for fastjet by  doxygen 1.4.2