CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
AlphaT Class Reference

#include <AlphaT.h>

Public Member Functions

template<class T >
 AlphaT (std::vector< T const *> const &p4, bool setDHtZero=false, bool use_et=true)
 
template<class T >
 AlphaT (std::vector< T > const &p4, bool setDHtZero=false, bool use_et=true)
 
double value (void) const
 
double value (std::vector< bool > &jet_sign) const
 

Private Member Functions

double value_ (std::vector< bool > *jet_sign) const
 

Private Attributes

std::vector< double > et_
 
std::vector< double > px_
 
std::vector< double > py_
 
bool setDHtZero_
 

Detailed Description

Definition at line 8 of file AlphaT.h.

Constructor & Destructor Documentation

◆ AlphaT() [1/2]

template<class T >
AlphaT::AlphaT ( std::vector< T const *> const &  p4,
bool  setDHtZero = false,
bool  use_et = true 
)

◆ AlphaT() [2/2]

template<class T >
AlphaT::AlphaT ( std::vector< T > const &  p4,
bool  setDHtZero = false,
bool  use_et = true 
)

Definition at line 32 of file AlphaT.h.

References et_, px_, py_, setDHtZero_, and HcalDetIdTransform::transform().

32  {
33  std::transform(p4.begin(), p4.end(), back_inserter(et_), std::mem_fn(use_et ? &T::Et : &T::Pt));
34  std::transform(p4.begin(), p4.end(), back_inserter(px_), std::mem_fn(&T::Px));
35  std::transform(p4.begin(), p4.end(), back_inserter(py_), std::mem_fn(&T::Py));
36  setDHtZero_ = setDHtZero;
37 }
std::vector< double > px_
Definition: AlphaT.h:18
std::vector< double > py_
Definition: AlphaT.h:19
std::vector< double > et_
Definition: AlphaT.h:17
bool setDHtZero_
Definition: AlphaT.h:27
unsigned transform(const HcalDetId &id, unsigned transformCode)

Member Function Documentation

◆ value() [1/2]

double AlphaT::value ( void  ) const
inline

Definition at line 40 of file AlphaT.h.

References value_().

Referenced by SUSY_HLT_alphaT::analyze(), and average.Average::average().

40 { return value_(nullptr); }
double value_(std::vector< bool > *jet_sign) const
Definition: AlphaT.cc:5

◆ value() [2/2]

double AlphaT::value ( std::vector< bool > &  jet_sign) const
inline

Definition at line 43 of file AlphaT.h.

References value_().

Referenced by average.Average::average().

43 { return value_(&jet_sign); }
double value_(std::vector< bool > *jet_sign) const
Definition: AlphaT.cc:5

◆ value_()

double AlphaT::value_ ( std::vector< bool > *  jet_sign) const
private

Definition at line 5 of file AlphaT.cc.

References funct::abs(), et_, mps_fire::i, createfilelist::int, dqmiolumiharvest::j, WZElectronSkims53X_cff::max, px_, py_, setDHtZero_, mathSSE::sqrt(), and mitigatedMETSequence_cff::U.

Referenced by value().

5  {
6  // Clear pseudo-jet container
7  if (jet_sign) {
8  jet_sign->clear();
9  jet_sign->resize(et_.size());
10  }
11 
12  // check the size of the input collection
13  if (et_.empty())
14  // empty jet collection, return AlphaT = 0
15  return 0.;
16 
17  if (et_.size() > (unsigned int)std::numeric_limits<unsigned int>::digits)
18  // too many jets, return AlphaT = a very large number
20 
21  // Momentum sums in transverse plane
22  const double sum_et = std::accumulate(et_.begin(), et_.end(), 0.);
23  const double sum_px = std::accumulate(px_.begin(), px_.end(), 0.);
24  const double sum_py = std::accumulate(py_.begin(), py_.end(), 0.);
25 
26  // Minimum Delta Et for two pseudo-jets
27  double min_delta_sum_et = sum_et;
28 
29  if (setDHtZero_) {
30  min_delta_sum_et = 0.;
31  } else {
32  for (unsigned int i = 0; i < (1U << (et_.size() - 1)); i++) { //@@ iterate through different combinations
33  double delta_sum_et = 0.;
34  for (unsigned int j = 0; j < et_.size(); ++j) { //@@ iterate through jets
35  if (i & (1U << j))
36  delta_sum_et -= et_[j];
37  else
38  delta_sum_et += et_[j];
39  }
40  delta_sum_et = std::abs(delta_sum_et);
41  if (delta_sum_et < min_delta_sum_et) {
42  min_delta_sum_et = delta_sum_et;
43  if (jet_sign) {
44  for (unsigned int j = 0; j < et_.size(); ++j)
45  (*jet_sign)[j] = ((i & (1U << j)) == 0);
46  }
47  }
48  }
49  }
50  // Alpha_T
51  return (0.5 * (sum_et - min_delta_sum_et) / std::sqrt(sum_et * sum_et - (sum_px * sum_px + sum_py * sum_py)));
52 }
std::vector< double > px_
Definition: AlphaT.h:18
std::vector< double > py_
Definition: AlphaT.h:19
std::vector< double > et_
Definition: AlphaT.h:17
T sqrt(T t)
Definition: SSEVec.h:23
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool setDHtZero_
Definition: AlphaT.h:27

Member Data Documentation

◆ et_

std::vector<double> AlphaT::et_
private

Definition at line 17 of file AlphaT.h.

Referenced by AlphaT(), and value_().

◆ px_

std::vector<double> AlphaT::px_
private

Definition at line 18 of file AlphaT.h.

Referenced by AlphaT(), and value_().

◆ py_

std::vector<double> AlphaT::py_
private

Definition at line 19 of file AlphaT.h.

Referenced by AlphaT(), and value_().

◆ setDHtZero_

bool AlphaT::setDHtZero_
private

Definition at line 27 of file AlphaT.h.

Referenced by AlphaT(), and value_().