#include <JetDefinition.hh>
Inheritance diagram for fastjet::JetDefinition::DefaultRecombiner:
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 |
Definition at line 250 of file JetDefinition.hh.
|
Definition at line 252 of file JetDefinition.hh. 00252 : 00253 _recomb_scheme(recomb_scheme) {};
|
|
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 }
|
|
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 }
|
|
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 }
|
|
return the index of the recombination scheme
Definition at line 264 of file JetDefinition.hh. 00264 {return _recomb_scheme;};
|
|
Definition at line 264 of file JetDefinition.hh. Referenced by description(), preprocess(), and recombine(). |