|
fastjet 2.4.3
|


Public Member Functions | |
| TemporaryJet (float seedET) | |
| TemporaryJet (float seedET, float y, float phi) | |
| ~TemporaryJet () | |
| float | dist (TemporaryJet &jet) const |
| void | midpoint (const TemporaryJet &jet, float &y, float &phi) const |
| bool | is_stable (const std::list< const Item * > &itemlist, float radius, float min_ET, int max_iterations=50) |
Definition at line 200 of file ILConeAlgorithm.hpp.
| d0::ILConeAlgorithm< Item >::TemporaryJet::TemporaryJet | ( | float | seedET | ) | [inline] |
Definition at line 205 of file ILConeAlgorithm.hpp.
: ProtoJet<Item>(seedET) {;}
| d0::ILConeAlgorithm< Item >::TemporaryJet::TemporaryJet | ( | float | seedET, |
| float | y, | ||
| float | phi | ||
| ) | [inline] |
Definition at line 207 of file ILConeAlgorithm.hpp.
| d0::ILConeAlgorithm< Item >::TemporaryJet::~TemporaryJet | ( | ) | [inline] |
Definition at line 210 of file ILConeAlgorithm.hpp.
{;}
| float d0::ILConeAlgorithm< Item >::TemporaryJet::dist | ( | TemporaryJet & | jet | ) | const [inline] |
Definition at line 212 of file ILConeAlgorithm.hpp.
References d0::ProtoJet< Item >::phi(), d0::RDelta(), and d0::ProtoJet< Item >::y().
| bool d0::ILConeAlgorithm< Item >::TemporaryJet::is_stable | ( | const std::list< const Item * > & | itemlist, |
| float | radius, | ||
| float | min_ET, | ||
| int | max_iterations = 50 |
||
| ) | [inline] |
Definition at line 250 of file ILConeAlgorithm.hpp.
References d0::inline_maths::phi(), and d0::RD2().
{
float radius2 = radius*radius;
float Rcut= 1.E-06;
// ?? if(_Increase_Delta_R) Rcut= 1.E-04;
bool stable= true;
int trial= 0;
float Yst;
float PHIst;
do {
trial++;
//std::cout << " trial " << trial << " " << _y << " " << _phi << std::endl;
Yst = this->_y;
PHIst= this->_phi;
//cout << "is_stable beginning do loop: this->_pT=" << this->_pT << " this->_y=" << this->_y << " this->_phi=" << this->_phi << endl;
this->erase();
this->setJet(Yst,PHIst,0.0);
#ifdef ILCA_USE_ORDERED_LIST
std::list<const Item*>::const_iterator lower =
lower_bound(itemlist.begin(),itemlist.end(),Yst-radius,
rapidity_order<Item>());
std::list<const Item*>::const_iterator upper =
upper_bound(itemlist.begin(),itemlist.end(),Yst+radius,
rapidity_order<Item>());
for(std::list<const Item*>::const_iterator tk = lower; tk != upper; ++tk) {
//std::cout << " is_stable: item y=" << (*tk)->y() << " phi=" << (*tk)->phi() << " RD2=" << RD2((*tk)->y(),(*tk)->phi(),Yst,PHIst) << " " << Yst-radius << " " << Yst+radius << endl;
if(RD2((*tk)->y(),(*tk)->phi(),Yst,PHIst) <= radius2)
{
addItem(*tk);
}
}
#else
#ifdef ILCA_USE_MMAP
// need to loop only on the subset with Yst-R < y < Yst+R
for ( std::multimap<float,const Item*>::const_iterator
tk = items.lower_bound(Yst-radius);
tk != items.upper_bound(Yst+radius); ++tk )
{
//std::cout << " item " << (*tk)->y() << " " << (*tk)->phi() << " " << RD2((*tk)->y(),(*tk)->phi(),Yst,PHIst) << " " << Yst-radius << " " << Yst+radius << endl;
if(RD2(((*tk).second)->y(),((*tk).second)->phi(),Yst,PHIst) <= radius2)
{
addItem((*tk).second);
}
}
#else
//cout << " is_stable: itemlist.size()=" << itemlist.size() << endl;
for(typename std::list<const Item*>::const_iterator tk = itemlist.begin(); tk != itemlist.end(); ++tk)
{
//std::cout << " is_stable: item (*tk)->y()=" << (*tk)->y() << " (*tk)->phi=" << (*tk)->phi() << " RD2=" << RD2((*tk)->y(),(*tk)->phi(),Yst,PHIst) << " Yst-rad=" << Yst-radius << " Yst+rad=" << Yst+radius << endl;
if(RD2((*tk)->y(),(*tk)->phi(),Yst,PHIst) <= radius2)
{
//cout << "add item to *tk" << endl;
addItem(*tk);
}
}
#endif
#endif
//std::cout << "is_stable, before update: jet this->_y=" << this->_y << " _phi=" << this->_phi << " _pT=" << this->_pT << " min_ET=" << min_ET << std::endl;
this->updateJet();
//std::cout << "is_stable, after update: jet this->_y=" << this->_y << " _phi=" << this->_phi << " _pT=" << this->_pT << " min_ET=" << min_ET << std::endl;
if(this->_pT < min_ET )
{
stable= false;
break;
}
//cout << "is_stable end while loop: this->_pT=" << this->_pT << " this->_y=" << this->_y << " this->_phi=" << this->_phi << endl;
} while(RD2(this->_y,this->_phi,Yst,PHIst) >= Rcut && trial <= max_iterations);
//std::cout << " trial stable " << trial << " " << stable << std::endl;
return stable;
}
| void d0::ILConeAlgorithm< Item >::TemporaryJet::midpoint | ( | const TemporaryJet & | jet, |
| float & | y, | ||
| float & | phi | ||
| ) | const [inline] |
Definition at line 217 of file ILConeAlgorithm.hpp.
References d0::ProtoJet< Item >::phi(), d0::inline_maths::PI, d0::ProtoJet< Item >::pT(), d0::inline_maths::TWOPI, and d0::ProtoJet< Item >::y().
{
// Midpoint should probably be computed w/4-vectors but don't
// have that info. Preserving Pt-weighted calculation - JPK
float pTsum = this->_pT + jet.pT();
y = (this->_y*this->_pT + jet.y()*jet.pT())/pTsum;
phi = (this->_phi*this->_pT + jet.phi()*jet.pT())/pTsum;
// careful with phi-wrap area: convert from [0,2pi] to [-pi,pi]
//ls: original D0 code, as of 23/Mar/2007
//if ( abs(phi-this->_phi)>2.0 ) { // assumes cones R=1.14 or smaller, merge within 2R only
//ls: abs bug fixed 26/Mar/2007
if ( fabs(phi-this->_phi)>2.0 ) { // assumes cones R=1.14 or smaller, merge within 2R only
phi = fmod( this->_phi+PI, TWOPI);
if (phi < 0.0) phi += TWOPI;
phi -= PI;
float temp=fmod( jet.phi()+PI, TWOPI);
if (temp < 0.0) temp += TWOPI;
temp -= PI;
phi = (phi*this->_pT + temp*jet.pT()) /pTsum;
}
if ( phi < 0. ) phi += TWOPI;
}
1.7.3