52 #include "fastjet/ClusterSequence.hh" 
   53 #include "fastjet/CMSIterativeConePlugin.hh" 
   61 FASTJET_BEGIN_NAMESPACE      
 
   70 T deltaPhi (T phi1, T phi2) { 
 
   71   T result = phi1 - phi2;
 
   72   while (result > M_PI) result -= 2*M_PI;
 
   73   while (result <= -M_PI) result += 2*M_PI;
 
   78 T deltaR2 (T eta1, T phi1, T eta2, T phi2) {
 
   80   T dphi = deltaPhi (phi1, phi2);
 
   81   return deta*deta + dphi*dphi;
 
   85 bool CMSIterativeConePlugin::_first_time = 
true;
 
   87 string CMSIterativeConePlugin::description ()
 const {
 
   89   desc << 
"CMSIterativeCone plugin with R = " << theConeRadius << 
" and seed threshold = " << theSeedThreshold;
 
   99   list<PseudoJet> input;
 
  100   for (
unsigned int i=0 ; i<clust_seq.
jets().size() ; i++) {
 
  101     input.push_back(clust_seq.
jets()[i]);
 
  103   NumericSafeGreaterByEt<PseudoJet> compCandidate;
 
  105   input.sort(compCandidate);
 
  109   while( !input.empty() && (input.front().Et() > theSeedThreshold )) {
 
  111     double eta0=input.front().eta();
 
  112     double phi0=input.front().phi();
 
  118     list< list<PseudoJet>::iterator> cone;
 
  119     for(
int iteration=0;iteration<100;iteration++){
 
  125       for(list<PseudoJet>::iterator inp=input.begin();
 
  126           inp!=input.end();inp++){
 
  128         if( deltaR2(eta0,phi0,tower.eta(),tower.
phi()) < 
 
  129             theConeRadius*theConeRadius) {
 
  130           double tower_et = tower.
Et();   
 
  132           eta+= tower_et*tower.eta();
 
  133           double dphi=tower.
phi()-phi0;
 
  134           if(dphi>M_PI) dphi-=2*M_PI;
 
  135           else if(dphi<=-M_PI) dphi+=2*M_PI;
 
  142       if(phi>M_PI)phi-=2*M_PI;
 
  143       else if(phi<=-M_PI)phi+=2*M_PI;
 
  145       if(fabs(eta-eta0)<.001 && fabs(phi-phi0)<.001) 
break;
 
  171     list< list<PseudoJet>::iterator>::const_iterator inp;
 
  173     int jet_k = (*inp)->cluster_hist_index();
 
  182     while (inp != cone.end()){
 
  186       int jet_j = (*inp)->cluster_hist_index();
 
  208     double d_iB = clust_seq.
jets()[jet_k].perp2();
 
  217 void CMSIterativeConePlugin::_print_banner(ostream *ostr)
 const{
 
  218   if (! _first_time) 
return;
 
  224   (*ostr) << 
"#-------------------------------------------------------------------------" << endl;
 
  225   (*ostr) << 
"# You are running the CMS Iterative Cone plugin for FastJet               " << endl;
 
  226   (*ostr) << 
"# Original code by the CMS collaboration adapted by the FastJet authors   " << endl;
 
  227   (*ostr) << 
"# If you use this plugin, please cite                                     " << endl;
 
  228   (*ostr) << 
"#   G. L. Bayatian et al. [CMS Collaboration],                            " << endl;
 
  229   (*ostr) << 
"#   CMS physics: Technical design report.                                 " << endl;
 
  230   (*ostr) << 
"# in addition to the usual FastJet reference.                             " << endl;
 
  231   (*ostr) << 
"#-------------------------------------------------------------------------" << endl;
 
  237 FASTJET_END_NAMESPACE      
 
const std::vector< PseudoJet > & jets() const 
allow the user to access the internally stored _jets() array, which contains both the initial particl...
 
double Et() const 
return the transverse energy 
 
void plugin_record_ij_recombination(int jet_i, int jet_j, double dij, int &newjet_k)
record the fact that there has been a recombination between jets()[jet_i] and jets()[jet_k], with the specified dij, and return the index (newjet_k) allocated to the new jet, whose momentum is assumed to be the 4-vector sum of that of jet_i and jet_j 
 
void plugin_record_iB_recombination(int jet_i, double diB)
record the fact that there has been a recombination between jets()[jet_i] and the beam...
 
double phi() const 
returns phi (in the range 0..2pi) 
 
static std::ostream * fastjet_banner_stream()
returns a pointer to the stream to be used to print banners (cout by default). 
 
Class to contain pseudojets, including minimal information of use to jet-clustering routines...