31 #include <fastjet/tools/CASubJetTagger.hh> 
   32 #include <fastjet/ClusterSequence.hh> 
   40 FASTJET_BEGIN_NAMESPACE
 
   43 LimitedWarning CASubJetTagger::_non_ca_warnings;
 
   47 string CASubJetTagger::description()
 const{
 
   49   oss << 
"CASubJetTagger with z_threshold=" << _z_threshold ;
 
   50   if (_absolute_z_cut) oss << 
" (defined wrt original jet)";
 
   51   oss << 
" and scale choice ";
 
   52   switch (_scale_choice) {
 
   53   case kt2_distance:         oss << 
"kt2_distance";         
break;
 
   54   case jade_distance:        oss << 
"jade_distance";        
break;
 
   55   case jade2_distance:       oss << 
"jade2_distance";       
break;
 
   56   case plain_distance:       oss << 
"plain_distance";       
break;
 
   57   case mass_drop_distance:   oss << 
"mass_drop_distance";   
break;
 
   58   case dot_product_distance: oss << 
"dot_product_distance"; 
break;
 
   60     throw Error(
"unrecognized scale choice");
 
   72     _non_ca_warnings.warn(
"CASubJetTagger should only be applied on jets from a Cambridge/Aachen clustering; use it with other algorithms at your own risk");
 
   77   aux.aux_distance = -numeric_limits<double>::max();
 
   80   _recurse_through_jet(jet, aux, jet); 
 
   87   if (result_local == 
PseudoJet()) 
return result_local;
 
  115   switch (_scale_choice) {
 
  132   case mass_drop_distance:
 
  134     dist = jet.
m() - std::max(parent1.
m(),parent2.
m());
 
  136   case dot_product_distance:
 
  140     dist = dot_product(parent1, parent2);
 
  143     throw Error(
"unrecognized scale choice");
 
  152   if (parent1.
perp2() < parent2.
perp2()) std::swap(parent1,parent2);
 
  154   if (_absolute_z_cut) {
 
  155     z2    = parent2.
perp() / original_jet.
perp();
 
  156     zcut1 = parent1.
perp() / original_jet.
perp() >= _z_threshold;
 
  160   zcut2 = z2 >= _z_threshold;
 
  163     if (dist > aux.aux_distance){
 
  165       aux.aux_distance = dist;
 
  171   if (zcut1) _recurse_through_jet(parent1, aux, original_jet);
 
  172   if (zcut2) _recurse_through_jet(parent2, aux, original_jet);
 
  175 FASTJET_END_NAMESPACE
 
double _z
the transverse momentum fraction 
 
JetAlgorithm jet_algorithm() const 
return information about the definition... 
 
the structure returned by a CASubJetTagger 
 
class that contains the result internally 
 
const ClusterSequence * validated_cs() const 
shorthand for validated_cluster_sequence() 
 
virtual bool has_parents(PseudoJet &parent1, PseudoJet &parent2) const 
check if it is the product of a recombination, in which case return the 2 parents through the 'parent...
 
const JetDefinition & jet_def() const 
return a reference to the jet definition 
 
base class corresponding to errors that can be thrown by FastJet 
 
double squared_distance(const PseudoJet &other) const 
returns squared cylinder (rap-phi) distance between this jet and another 
 
double kt_distance(const PseudoJet &other) const 
returns kt distance (R=1) between this jet and another 
 
an implementation of C++0x shared pointers (or boost's) 
 
void set_structure_shared_ptr(const SharedPtr< PseudoJetStructureBase > &structure)
set the associated structure 
 
double perp() const 
returns the scalar transverse momentum 
 
the longitudinally invariant variant of the cambridge algorithm (aka Aachen algoithm). 
 
double m() const 
returns the invariant mass (If m2() is negative then -sqrt(-m2()) is returned, as in CLHEP) ...
 
Class to contain pseudojets, including minimal information of use to jet-clustering routines...
 
bool _absolute_z
whether z is computed wrt to the original jet or not 
 
double perp2() const 
returns the squared transverse momentum 
 
CASubJetTagger::ScaleChoice _scale_choice
the user scale choice 
 
double _distance
the maximal distance associated with the result