#include <ClusterSequenceAreaBase.hh>
Inheritance diagram for fastjet::ClusterSequenceAreaBase:


Public Member Functions | |
| template<class L> | |
| ClusterSequenceAreaBase (const std::vector< L > &pseudojets, const JetDefinition &jet_def, const bool &writeout_combinations=false) | |
| a constructor which just carries out the construction of the parent class | |
| ClusterSequenceAreaBase () | |
| default constructor | |
| virtual | ~ClusterSequenceAreaBase () |
| destructor | |
| virtual double | area (const PseudoJet &jet) const |
| return the area associated with the given jet; this base class returns 0. | |
| virtual double | area_error (const PseudoJet &jet) const |
| return the error (uncertainty) associated with the determination of the area of this jet; this base class returns 0. | |
| virtual PseudoJet | area_4vector (const PseudoJet &jet) const |
| return a PseudoJet whose 4-vector is defined by the following integral | |
| virtual bool | is_pure_ghost (const PseudoJet &jet) const |
| true if a jet is made exclusively of ghosts | |
| virtual double | empty_area (const RangeDefinition &range) const |
| return the total area, within range, that is free of jets. | |
| virtual double | n_empty_jets (const RangeDefinition &range) const |
| return something similar to the number of pure ghost jets in the given range in an active area case. | |
| double | median_pt_per_unit_area (const RangeDefinition &range) const |
| the median of (pt/area) for jets contained within range, making use also of the info on n_empty_jets | |
| double | median_pt_per_unit_area_4vector (const RangeDefinition &range) const |
| the median of (pt/area_4vector) for jets contained within making use also of the info on n_empty_jets | |
| double | median_pt_per_unit_something (const RangeDefinition &range, bool use_area_4vector) const |
| the median of (pt/area) for jets contained within range, counting the empty area as if it were made up of a collection of empty jets each of area (0.55 * pi R^2). | |
| virtual void | get_median_rho_and_sigma (const RangeDefinition &range, bool use_area_4vector, double &median, double &sigma, double &mean_area) const |
| using jets withing range (and with 4-vector areas if use_area_4vector), calculate the median pt/area, as well as an "error" (uncertainty), which is defined as the 1-sigma half-width of the distribution of pt/A, obtained by looking for the point below which we have (1-0.6827)/2 of the jets (including empty jets). | |
| virtual void | get_median_rho_and_sigma (const RangeDefinition &range, bool use_area_4vector, double &median, double &sigma) const |
| same as the full version of get_median_rho_and_error, but without access to the mean_area | |
| virtual void | parabolic_pt_per_unit_area (double &a, double &b, const RangeDefinition &range, double exclude_above=-1.0, bool use_area_4vector=false) const |
| fits a form pt_per_unit_area(y) = a + b*y^2 for jets in range. | |
| std::vector< PseudoJet > | subtracted_jets (const double rho, const double ptmin=0.0) const |
| return a vector of all subtracted jets, using area_4vector, given rho. | |
| std::vector< PseudoJet > | subtracted_jets (const RangeDefinition &range, const double ptmin=0.0) const |
| return a vector of subtracted jets, using area_4vector. | |
| PseudoJet | subtracted_jet (const PseudoJet &jet, const double rho) const |
| return a subtracted jet, using area_4vector, given rho | |
| PseudoJet | subtracted_jet (const PseudoJet &jet, const RangeDefinition &range) const |
| return a subtracted jet, using area_4vector; note that this is potentially inefficient if repeatedly used for many different jets, because rho will be recalculated each time around. | |
| double | subtracted_pt (const PseudoJet &jet, const double rho, bool use_area_4vector=false) const |
| return the subtracted pt, given rho | |
| double | subtracted_pt (const PseudoJet &jet, const RangeDefinition &range, bool use_area_4vector=false) const |
| return the subtracted pt; note that this is potentially inefficient if repeatedly used for many different jets, because rho will be recalculated each time around. | |
Private Member Functions | |
| void | _check_jet_alg_good_for_median () const |
| check the jet algorithm is suitable (and if not issue a warning) | |
Static Private Attributes | |
| static LimitedWarning | _warnings |
| allow for warnings | |
the virtual functions here all return 0, since no area determination is implemented.
Definition at line 45 of file ClusterSequenceAreaBase.hh.
|
||||||||||||||||||||
|
a constructor which just carries out the construction of the parent class
Definition at line 51 of file ClusterSequenceAreaBase.hh. 00053 : 00054 ClusterSequence(pseudojets, jet_def, writeout_combinations) {}
|
|
|
default constructor
Definition at line 58 of file ClusterSequenceAreaBase.hh. 00058 {}
|
|
|
destructor
Definition at line 62 of file ClusterSequenceAreaBase.hh. 00062 {}
|
|
|
check the jet algorithm is suitable (and if not issue a warning)
Definition at line 296 of file ClusterSequenceAreaBase.cc. References _warnings, fastjet::cambridge_algorithm, fastjet::cambridge_for_passive_algorithm, fastjet::ClusterSequence::jet_def(), fastjet::kt_algorithm, and LimitedWarning::warn(). Referenced by get_median_rho_and_sigma(). 00296 {
00297 if (jet_def().jet_algorithm() != kt_algorithm
00298 && jet_def().jet_algorithm() != cambridge_algorithm
00299 && jet_def().jet_algorithm() != cambridge_for_passive_algorithm) {
00300 _warnings.warn("ClusterSequenceAreaBase: jet_def being used may not be suitable for estimating diffuse backgrounds (good options are kt, cam)");
00301 }
00302 }
|
|
|
return the area associated with the given jet; this base class returns 0.
Reimplemented in fastjet::ClusterSequenceActiveArea, fastjet::ClusterSequenceActiveAreaExplicitGhosts, fastjet::ClusterSequenceArea, and fastjet::ClusterSequenceVoronoiArea. Definition at line 67 of file ClusterSequenceAreaBase.hh. Referenced by empty_area(), get_median_rho_and_sigma(), parabolic_pt_per_unit_area(), print_jets(), and subtracted_pt(). 00067 {return 0.0;}
|
|
|
return a PseudoJet whose 4-vector is defined by the following integral drap d PseudoJet("rap,phi,pt=one") * Theta("rap,phi inside jet boundary") where PseudoJet("rap,phi,pt=one") is a 4-vector with the given rapidity (rap), azimuth (phi) and pt=1, while Theta("rap,phi inside jet boundary") is a function that is 1 when rap,phi define a direction inside the jet boundary and 0 otherwise. This base class returns a null 4-vector. Reimplemented in fastjet::ClusterSequenceActiveArea, fastjet::ClusterSequenceActiveAreaExplicitGhosts, fastjet::ClusterSequenceArea, and fastjet::ClusterSequenceVoronoiArea. Definition at line 84 of file ClusterSequenceAreaBase.hh. Referenced by get_median_rho_and_sigma(), parabolic_pt_per_unit_area(), and subtracted_jet(). 00084 {
00085 return PseudoJet(0.0,0.0,0.0,0.0);}
|
|
|
return the error (uncertainty) associated with the determination of the area of this jet; this base class returns 0.
Reimplemented in fastjet::ClusterSequenceActiveArea, fastjet::ClusterSequenceArea, and fastjet::ClusterSequenceVoronoiArea. Definition at line 71 of file ClusterSequenceAreaBase.hh. Referenced by print_jets(). 00071 {return 0.0;}
|
|
|
return the total area, within range, that is free of jets. Calculate this as (range area) - {i in range} A_i Reimplemented in fastjet::ClusterSequenceActiveArea, fastjet::ClusterSequenceActiveAreaExplicitGhosts, fastjet::ClusterSequenceArea, and fastjet::ClusterSequencePassiveArea. Definition at line 51 of file ClusterSequenceAreaBase.cc. References area(), fastjet::RangeDefinition::area(), fastjet::ClusterSequence::inclusive_jets(), and fastjet::RangeDefinition::is_in_range(). Referenced by fastjet::ClusterSequencePassiveArea::empty_area(), and get_median_rho_and_sigma(). 00051 {
00052 double empty = range.area();
00053 vector<PseudoJet> incl_jets(inclusive_jets(0.0));
00054 for (unsigned i = 0; i < incl_jets.size(); i++) {
00055 if (range.is_in_range(incl_jets[i])) empty -= area(incl_jets[i]);
00056 }
00057 return empty;
00058 }
|
|
||||||||||||||||||||
|
same as the full version of get_median_rho_and_error, but without access to the mean_area
Reimplemented in fastjet::ClusterSequenceArea. Definition at line 147 of file ClusterSequenceAreaBase.hh. 00149 {
00150 double mean_area;
00151 get_median_rho_and_sigma(range, use_area_4vector,
00152 median, sigma, mean_area);
00153 }
|
|
||||||||||||||||||||||||
|
using jets withing range (and with 4-vector areas if use_area_4vector), calculate the median pt/area, as well as an "error" (uncertainty), which is defined as the 1-sigma half-width of the distribution of pt/A, obtained by looking for the point below which we have (1-0.6827)/2 of the jets (including empty jets). The subtraction for a jet with uncorrected pt pt^U and area A is pt^S = pt^U - median*A +- sigma*sqrt(A) where the error is only that associated with the fluctuations in the noise and not that associated with the noise having caused changes in the hard-particle content of the jet. (NB: subtraction may also be done with 4-vector area of course) Reimplemented in fastjet::ClusterSequenceArea. Definition at line 140 of file ClusterSequenceAreaBase.cc. References _check_jet_alg_good_for_median(), area(), area_4vector(), empty_area(), fastjet::ClusterSequence::inclusive_jets(), fastjet::RangeDefinition::is_in_range(), and n_empty_jets(). Referenced by median_pt_per_unit_something(). 00142 {
00143
00144 _check_jet_alg_good_for_median();
00145
00146 vector<double> pt_over_areas;
00147 vector<PseudoJet> incl_jets = inclusive_jets();
00148 double total_area = 0.0;
00149 double total_njets = 0;
00150
00151 for (unsigned i = 0; i < incl_jets.size(); i++) {
00152 if (range.is_in_range(incl_jets[i])) {
00153 double this_area;
00154 if (use_area_4vector) {
00155 this_area = area_4vector(incl_jets[i]).perp();
00156 } else {
00157 this_area = area(incl_jets[i]);
00158 }
00159 pt_over_areas.push_back(incl_jets[i].perp()/this_area);
00160 total_area += this_area;
00161 total_njets += 1.0;
00162 }
00163 }
00164
00165 // there is nothing inside our region, so answer will always be zero
00166 if (pt_over_areas.size() == 0) {
00167 median = 0.0;
00168 sigma = 0.0;
00169 mean_area = 0.0;
00170 return;
00171 }
00172
00173 // get median (pt/area) [this is the "old" median definition. It considers
00174 // only the "real" jets in calculating the median, i.e. excluding the
00175 // only-ghost ones]
00176 sort(pt_over_areas.begin(), pt_over_areas.end());
00177
00178 // now get the median & error, accounting for empty jets
00179 // define the fractions of distribution at median, median-1sigma
00180 double posn[2] = {0.5, (1.0-0.6827)/2.0};
00181 double res[2];
00182
00183 double n_empty = n_empty_jets(range);
00184 total_njets += n_empty;
00185 total_area += empty_area(range);
00186
00187 for (int i = 0; i < 2; i++) {
00188 double nj_median_pos =
00189 (pt_over_areas.size()-1 + n_empty)*posn[i] - n_empty;
00190 double nj_median_ratio;
00191 if (nj_median_pos >= 0 && pt_over_areas.size() > 1) {
00192 int int_nj_median = int(nj_median_pos);
00193 nj_median_ratio =
00194 pt_over_areas[int_nj_median] * (int_nj_median+1-nj_median_pos)
00195 + pt_over_areas[int_nj_median+1] * (nj_median_pos - int_nj_median);
00196 } else {
00197 nj_median_ratio = 0.0;
00198 }
00199 res[i] = nj_median_ratio;
00200 }
00201 median = res[0];
00202 double error = res[0] - res[1];
00203 mean_area = total_area / total_njets;
00204 sigma = error * sqrt(mean_area);
00205 }
|
|
|
true if a jet is made exclusively of ghosts NB: most area classes do not give any explicit ghost jets, but some do, and they should replace this function with their own version. Reimplemented in fastjet::ClusterSequenceActiveAreaExplicitGhosts, and fastjet::ClusterSequenceArea. Definition at line 92 of file ClusterSequenceAreaBase.hh. 00092 {
00093 return false;
00094 }
|
|
|
the median of (pt/area) for jets contained within range, making use also of the info on n_empty_jets
Definition at line 60 of file ClusterSequenceAreaBase.cc. References median_pt_per_unit_something(). Referenced by subtracted_pt(). 00060 {
00061 return median_pt_per_unit_something(range,false);
00062 }
|
|
|
the median of (pt/area_4vector) for jets contained within making use also of the info on n_empty_jets
Definition at line 64 of file ClusterSequenceAreaBase.cc. References median_pt_per_unit_something(). Referenced by subtracted_jet(), and subtracted_jets(). 00064 {
00065 return median_pt_per_unit_something(range,true);
00066 }
|
|
||||||||||||
|
the median of (pt/area) for jets contained within range, counting the empty area as if it were made up of a collection of empty jets each of area (0.55 * pi R^2).
Definition at line 73 of file ClusterSequenceAreaBase.cc. References get_median_rho_and_sigma(). Referenced by median_pt_per_unit_area(), and median_pt_per_unit_area_4vector(). 00074 {
00075
00076 double median, sigma, mean_area;
00077 get_median_rho_and_sigma(range, use_area_4vector, median, sigma, mean_area);
00078 return median;
00079
00080 }
|
|
|
return something similar to the number of pure ghost jets in the given range in an active area case. For the local implementation we return empty_area/(0.55 pi R^2), based on measured properties of ghost jets with kt and cam. Note that the number returned is a double. Reimplemented in fastjet::ClusterSequence1GhostPassiveArea, fastjet::ClusterSequenceActiveArea, and fastjet::ClusterSequenceArea. Definition at line 104 of file ClusterSequenceAreaBase.hh. References fastjet::pi. Referenced by get_median_rho_and_sigma(). 00104 {
00105 double R = jet_def().R();
00106 return empty_area(range)/(0.55*pi*R*R);
00107 }
|
|
||||||||||||||||||||||||
|
fits a form pt_per_unit_area(y) = a + b*y^2 for jets in range. exclude_above allows one to exclude large values of pt/area from fit. use_area_4vector = true uses the 4vector areas. Reimplemented in fastjet::ClusterSequenceArea. Definition at line 87 of file ClusterSequenceAreaBase.cc. References area(), area_4vector(), fastjet::ClusterSequence::inclusive_jets(), and fastjet::RangeDefinition::is_in_range(). 00089 {
00090
00091 int n=0;
00092 int n_excluded = 0;
00093 double mean_f=0, mean_x2=0, mean_x4=0, mean_fx2=0;
00094
00095 vector<PseudoJet> incl_jets = inclusive_jets();
00096
00097 for (unsigned i = 0; i < incl_jets.size(); i++) {
00098 if (range.is_in_range(incl_jets[i])) {
00099 double this_area;
00100 if ( use_area_4vector ) {
00101 this_area = area_4vector(incl_jets[i]).perp();
00102 } else {
00103 this_area = area(incl_jets[i]);
00104 }
00105 double f = incl_jets[i].perp()/this_area;
00106 if (exclude_above <= 0.0 || f < exclude_above) {
00107 double x = incl_jets[i].rap(); double x2 = x*x;
00108 mean_f += f;
00109 mean_x2 += x2;
00110 mean_x4 += x2*x2;
00111 mean_fx2 += f*x2;
00112 n++;
00113 } else {
00114 n_excluded++;
00115 }
00116 }
00117 }
00118
00119 if (n <= 1) {
00120 // meaningful results require at least two jets inside the
00121 // area -- mind you if there are empty jets we should be in
00122 // any case doing something special...
00123 a = 0.0;
00124 b = 0.0;
00125 } else {
00126 mean_f /= n;
00127 mean_x2 /= n;
00128 mean_x4 /= n;
00129 mean_fx2 /= n;
00130
00131 b = (mean_f*mean_x2 - mean_fx2)/(mean_x2*mean_x2 - mean_x4);
00132 a = mean_f - b*mean_x2;
00133 }
00134 //cerr << "n_excluded = "<< n_excluded << endl;
00135 }
|
|
||||||||||||
|
return a subtracted jet, using area_4vector; note that this is potentially inefficient if repeatedly used for many different jets, because rho will be recalculated each time around.
Definition at line 258 of file ClusterSequenceAreaBase.cc. References median_pt_per_unit_area_4vector(), and subtracted_jet(). 00259 {
00260 double rho = median_pt_per_unit_area_4vector(range);
00261 PseudoJet sub_jet = subtracted_jet(jet, rho);
00262 return sub_jet;
00263 }
|
|
||||||||||||
|
return a subtracted jet, using area_4vector, given rho
Definition at line 238 of file ClusterSequenceAreaBase.cc. References area_4vector(), fastjet::PseudoJet::cluster_hist_index(), fastjet::PseudoJet::perp(), and fastjet::PseudoJet::set_cluster_hist_index(). Referenced by subtracted_jet(), subtracted_jets(), and subtracted_pt(). 00239 {
00240 PseudoJet area4vect = area_4vector(jet);
00241 PseudoJet sub_jet;
00242 // sanity check
00243 if (rho*area4vect.perp() < jet.perp() ) {
00244 sub_jet = jet - rho*area4vect;
00245 } else { sub_jet = PseudoJet(0.0,0.0,0.0,0.0); }
00246
00247 // make sure the subtracted jet has the same index
00248 // (i.e. "looks like") the original jet
00249 sub_jet.set_cluster_hist_index(jet.cluster_hist_index());
00250
00251 return sub_jet;
00252 }
|
|
||||||||||||
|
return a vector of subtracted jets, using area_4vector. Only inclusive_jets above ptmin are subtracted and returned. the ordering is the same as that of sorted_by_pt(cs.inclusive_jets()), i.e. not necessarily ordered in pt once subtracted Definition at line 228 of file ClusterSequenceAreaBase.cc. References median_pt_per_unit_area_4vector(), and subtracted_jets(). 00231 {
00232 double rho = median_pt_per_unit_area_4vector(range);
00233 return subtracted_jets(rho,ptmin);
00234 }
|
|
||||||||||||
|
return a vector of all subtracted jets, using area_4vector, given rho. Only inclusive_jets above ptmin are subtracted and returned. the ordering is the same as that of sorted_by_pt(cs.inclusive_jets()), i.e. not necessarily ordered in pt once subtracted Definition at line 212 of file ClusterSequenceAreaBase.cc. References fastjet::ClusterSequence::inclusive_jets(), fastjet::ClusterSequence::jets(), fastjet::sorted_by_pt(), and subtracted_jet(). Referenced by subtracted_jets(). 00214 {
00215 vector<PseudoJet> sub_jets;
00216 vector<PseudoJet> jets = sorted_by_pt(inclusive_jets(ptmin));
00217 for (unsigned i=0; i<jets.size(); i++) {
00218 PseudoJet sub_jet = subtracted_jet(jets[i],rho);
00219 sub_jets.push_back(sub_jet);
00220 }
00221 return sub_jets;
00222 }
|
|
||||||||||||||||
|
return the subtracted pt; note that this is potentially inefficient if repeatedly used for many different jets, because rho will be recalculated each time around.
Definition at line 282 of file ClusterSequenceAreaBase.cc. References median_pt_per_unit_area(), fastjet::PseudoJet::perp(), subtracted_jet(), and subtracted_pt(). 00284 {
00285 if ( use_area_4vector ) {
00286 PseudoJet sub_jet = subtracted_jet(jet,range);
00287 return sub_jet.perp();
00288 } else {
00289 double rho = median_pt_per_unit_area(range);
00290 return subtracted_pt(jet,rho,false);
00291 }
00292 }
|
|
||||||||||||||||
|
return the subtracted pt, given rho
Definition at line 267 of file ClusterSequenceAreaBase.cc. References area(), fastjet::PseudoJet::perp(), and subtracted_jet(). Referenced by subtracted_pt(). 00269 {
00270 if ( use_area_4vector ) {
00271 PseudoJet sub_jet = subtracted_jet(jet,rho);
00272 return sub_jet.perp();
00273 } else {
00274 return jet.perp() - rho*area(jet);
00275 }
00276 }
|
|
|
allow for warnings
Reimplemented in fastjet::ClusterSequenceActiveAreaExplicitGhosts. Definition at line 44 of file ClusterSequenceAreaBase.cc. Referenced by _check_jet_alg_good_for_median(). |
1.4.2