CMS 3D CMS Logo

ClusterShapes.cc
Go to the documentation of this file.
2 #include <cmath>
3 
4 using namespace l1t;
5 
7  ClusterShapes cs(*this); // copy constructor
8  cs += x;
9  return cs;
10 }
11 
13  sum_e_ += x.sum_e_;
14  sum_e2_ += x.sum_e2_;
15  sum_logE_ += x.sum_logE_;
16  n_ += x.n_;
17 
18  sum_w_ += x.sum_w_;
19 
20  emax_ = (emax_ > x.emax_) ? emax_ : x.emax_;
21 
22  // mid-point
23  sum_eta_ += x.sum_eta_;
24  sum_phi_0_ += x.sum_phi_0_; //
25  sum_phi_1_ += x.sum_phi_1_; //
26  sum_r_ += x.sum_r_;
27 
28  // square
29  sum_eta2_ += x.sum_eta2_;
30  sum_phi2_0_ += x.sum_phi2_0_;
31  sum_phi2_1_ += x.sum_phi2_1_;
32  sum_r2_ += x.sum_r2_;
33 
34  // off diagonal
35  sum_eta_r_ += x.sum_eta_r_;
36  sum_r_phi_0_ += x.sum_r_phi_0_;
37  sum_r_phi_1_ += x.sum_r_phi_1_;
38  sum_eta_phi_0_ += x.sum_eta_phi_0_;
39  sum_eta_phi_1_ += x.sum_eta_phi_1_;
40 }
41 
42 // -------------- CLUSTER SHAPES ---------------
43 void ClusterShapes::Init(float e, float eta, float phi, float r) {
44  if (e <= 0)
45  return;
46  sum_e_ = e;
47  sum_e2_ = e * e;
48  sum_logE_ = std::log(e);
49 
50  float w = e;
51 
52  n_ = 1;
53 
54  sum_w_ = w;
55 
56  sum_phi_0_ = w * (phi);
57  sum_phi_1_ = w * (phi + M_PI);
58  sum_r_ = w * r;
59  sum_eta_ = w * eta;
60 
61  //--
62  sum_r2_ += w * (r * r);
63  sum_eta2_ += w * (eta * eta);
64  sum_phi2_0_ += w * (phi * phi);
65  sum_phi2_1_ += w * (phi + M_PI) * (phi + M_PI);
66 
67  // -- off diagonal
68  sum_eta_r_ += w * (r * eta);
69  sum_r_phi_0_ += w * (r * phi);
70  sum_r_phi_1_ += w * r * (phi + M_PI);
71  sum_eta_phi_0_ += w * (eta * phi);
72  sum_eta_phi_1_ += w * eta * (phi + M_PI);
73 }
74 // ------
75 float ClusterShapes::Eta() const { return sum_eta_ / sum_w_; }
76 float ClusterShapes::R() const { return sum_r_ / sum_w_; }
77 
78 float ClusterShapes::SigmaEtaEta() const { return sum_eta2_ / sum_w_ - Eta() * Eta(); }
79 
80 float ClusterShapes::SigmaRR() const { return sum_r2_ / sum_w_ - R() * R(); }
81 
83  float phi_0 = (sum_phi_0_ / sum_w_);
84  float phi_1 = (sum_phi_1_ / sum_w_);
85  float spp_0 = sum_phi2_0_ / sum_w_ - phi_0 * phi_0;
86  float spp_1 = sum_phi2_1_ / sum_w_ - phi_1 * phi_1;
87 
88  if (spp_0 < spp_1) {
89  isPhi0_ = true;
90  return spp_0;
91  } else {
92  isPhi0_ = false;
93  return spp_1;
94  }
95 }
96 
97 float ClusterShapes::Phi() const {
98  SigmaPhiPhi(); //update phi
99  if (isPhi0_)
100  return (sum_phi_0_ / sum_w_);
101  else
102  return (sum_phi_1_ / sum_w_);
103 }
104 
105 // off - diagonal
106 float ClusterShapes::SigmaEtaR() const { return -(sum_eta_r_ / sum_w_ - Eta() * R()); }
107 
109  SigmaPhiPhi(); // decide which phi use, update phi
110 
111  if (isPhi0_)
112  return -(sum_eta_phi_0_ / sum_w_ - Eta() * (sum_phi_0_ / sum_w_));
113  else
114  return -(sum_eta_phi_1_ / sum_w_ - Eta() * (sum_phi_1_ / sum_w_));
115 }
116 
118  SigmaPhiPhi(); // decide which phi use, update phi
119  if (isPhi0_)
120  return -(sum_r_phi_0_ / sum_w_ - R() * (sum_phi_0_ / sum_w_));
121  else
122  return -(sum_r_phi_1_ / sum_w_ - R() * (sum_phi_1_ / sum_w_));
123 }
l1t::ClusterShapes::R
float R() const
Definition: ClusterShapes.cc:76
l1t::ClusterShapes::sum_eta_phi_0_
float sum_eta_phi_0_
Definition: ClusterShapes.h:34
l1t::ClusterShapes::n_
int n_
Definition: ClusterShapes.h:14
l1t::ClusterShapes::Eta
float Eta() const
Definition: ClusterShapes.cc:75
l1t::ClusterShapes::sum_r_phi_1_
float sum_r_phi_1_
Definition: ClusterShapes.h:33
l1t::ClusterShapes::sum_e2_
float sum_e2_
Definition: ClusterShapes.h:12
fwrapper::cs
unique_ptr< ClusterSequence > cs
Definition: fastjetfortran_madfks.cc:47
l1t::ClusterShapes::SigmaPhiPhi
float SigmaPhiPhi() const
Definition: ClusterShapes.cc:82
l1t::ClusterShapes::isPhi0_
bool isPhi0_
Definition: ClusterShapes.h:38
l1t::ClusterShapes::SigmaEtaR
float SigmaEtaR() const
Definition: ClusterShapes.cc:106
l1t::ClusterShapes::sum_eta2_
float sum_eta2_
Definition: ClusterShapes.h:25
l1t::ClusterShapes::Phi
float Phi() const
Definition: ClusterShapes.cc:97
l1t::ClusterShapes::sum_phi2_1_
float sum_phi2_1_
Definition: ClusterShapes.h:28
PVValHelper::eta
Definition: PVValidationHelpers.h:69
w
const double w
Definition: UKUtility.cc:23
l1t::ClusterShapes::sum_eta_phi_1_
float sum_eta_phi_1_
Definition: ClusterShapes.h:35
l1t::ClusterShapes::Init
void Init(float e, float eta, float phi, float r=0.)
Definition: ClusterShapes.cc:43
l1t::ClusterShapes::sum_phi2_0_
float sum_phi2_0_
Definition: ClusterShapes.h:27
l1t::ClusterShapes::SigmaRPhi
float SigmaRPhi() const
Definition: ClusterShapes.cc:117
l1t::ClusterShapes::sum_r_phi_0_
float sum_r_phi_0_
Definition: ClusterShapes.h:32
l1t::ClusterShapes::sum_e_
float sum_e_
Definition: ClusterShapes.h:11
l1t::ClusterShapes::SigmaEtaEta
float SigmaEtaEta() const
Definition: ClusterShapes.cc:78
l1t
delete x;
Definition: CaloConfig.h:22
l1t::ClusterShapes::sum_eta_
float sum_eta_
Definition: ClusterShapes.h:19
l1t::ClusterShapes::operator+
ClusterShapes operator+(const ClusterShapes &)
Definition: ClusterShapes.cc:6
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
l1t::ClusterShapes::sum_logE_
float sum_logE_
Definition: ClusterShapes.h:13
l1t::ClusterShapes::sum_eta_r_
float sum_eta_r_
Definition: ClusterShapes.h:31
l1t::ClusterShapes::operator+=
void operator+=(const ClusterShapes &)
Definition: ClusterShapes.cc:12
l1t::ClusterShapes::sum_r2_
float sum_r2_
Definition: ClusterShapes.h:26
l1t::ClusterShapes::sum_phi_0_
float sum_phi_0_
Definition: ClusterShapes.h:22
alignCSCRings.r
r
Definition: alignCSCRings.py:93
l1t::ClusterShapes::sum_phi_1_
float sum_phi_1_
Definition: ClusterShapes.h:23
l1t::ClusterShapes::SigmaRR
float SigmaRR() const
Definition: ClusterShapes.cc:80
l1t::ClusterShapes::sum_r_
float sum_r_
Definition: ClusterShapes.h:20
ClusterShapes.h
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
l1t::ClusterShapes::emax_
float emax_
Definition: ClusterShapes.h:16
l1t::ClusterShapes
Definition: ClusterShapes.h:9
l1t::ClusterShapes::SigmaEtaPhi
float SigmaEtaPhi() const
Definition: ClusterShapes.cc:108
l1t::ClusterShapes::sum_w_
float sum_w_
Definition: ClusterShapes.h:18
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37