CMS 3D CMS Logo

PFCandidateElectronExtra.cc
Go to the documentation of this file.
3 #include <ostream>
4 #include <iomanip>
5 
6 using namespace reco;
7 
9  status_ = 0;
10  mvaStatus_ = 0;
11  pout_ = math::XYZTLorentzVector(0., 0., 0., 0.);
12  hadEnergy_ = -9999.;
13  sigmaEtaEta_ = -9999.;
14 
15  for (MvaVariable m = MVA_FIRST; m < MVA_LAST; m = MvaVariable(m + 1))
16  mvaVariables_.push_back(-9999.);
17 
20 }
21 
23  status_ = 0;
24  mvaStatus_ = 0;
25  pout_ = math::XYZTLorentzVector(0., 0., 0., 0.);
26  hadEnergy_ = -9999.;
27  sigmaEtaEta_ = -9999.;
28 
29  for (MvaVariable m = MVA_FIRST; m < MVA_LAST; m = MvaVariable(m + 1))
30  mvaVariables_.push_back(-9999.);
31 
32  gsfTrackRef_ = gsfTrack;
34 
36  setVariable(MVA_EtaGsf, gsfTrackRef_->etaMode());
37  setVariable(MVA_Chi2Gsf, gsfTrackRef_->normalizedChi2());
38  float ptmodeerror = gsfTrackRef_->ptModeError();
39  if (ptmodeerror > 0.)
40  setVariable(MVA_SigmaPtOverPt, ptmodeerror / gsfTrackRef_->ptMode());
41  else
43 
44  setVariable(MVA_Fbrem, (gsfTrackRef_->ptMode() - pout_.pt()) / gsfTrackRef_->ptMode());
45 }
46 
48 
50 
52  kfTrackRef_ = ref;
53  float nhit_kf = 0;
54  float chi2_kf = -0.01;
55  // if the reference is null, it does not mean that the variables have not been set
56  if (kfTrackRef_.isNonnull()) {
57  nhit_kf = (float)kfTrackRef_->hitPattern().trackerLayersWithMeasurement();
58  chi2_kf = kfTrackRef_->normalizedChi2();
59  }
60  setVariable(MVA_NhitsKf, nhit_kf);
61  setVariable(MVA_Chi2Kf, chi2_kf);
62 }
63 
65  lateBrem_ = val;
67 }
68 
70  earlyBrem_ = val;
72 }
73 
75  hadEnergy_ = val;
76  if (!clusterEnergies_.empty())
78 }
79 
81  sigmaEtaEta_ = val;
83 }
84 
86  deltaEta_ = val;
88 }
89 
90 void PFCandidateElectronExtra::setClusterEnergies(const std::vector<float>& energies) {
91  clusterEnergies_ = energies;
92 
93  if (pout_.t() != 0.)
95 
96  const float m_el2 = 0.00051 * 0.00051;
97  float Ein_gsf = sqrt(gsfTrackRef_->pMode() * gsfTrackRef_->pMode() + m_el2);
98 
99  float etot = 0;
100  unsigned size = clusterEnergies_.size();
101  // std::cout << " N clusters " << size << std::endl;
102  float ebrem = 0.;
103  for (unsigned ic = 0; ic < size; ++ic) {
104  etot += clusterEnergies_[ic];
105  if (ic > 0)
106  ebrem += clusterEnergies_[ic];
107  }
108  setVariable(MVA_EtotOverPin, etot / Ein_gsf);
109  setVariable(MVA_EbremOverDeltaP, ebrem / (Ein_gsf - pout_.t()));
110 
111  // recompute - as in PFElectronAglo, the had energy is filled before the cluster energies
112  if (hadEnergy_ != -9999.)
114 }
115 
117 
120  mvaStatus_ |= (1 << (type));
121 }
122 
124  if (status) {
125  status_ |= (1 << type);
126  } else {
127  status_ &= ~(1 << type);
128  }
129 }
130 
132 
134 
136  return (mvaStatus(var) ? mvaVariables_[var] : -9999.);
137 }
138 
139 #include <string>
140 
141 static char const* const listVar[] = {"LogPt",
142  "Eta",
143  "SigmaPtOverPt",
144  "fbrem",
145  "Chi2Gsf",
146  "NhitsKf",
147  "Chi2Kf",
148  "EtotOverPin",
149  "EseedOverPout",
150  "EbremOverDeltaP",
151  "DeltaEtaTrackCluster",
152  "LogSigmaEtaEta",
153  "H/(H+E)",
154  "LateBrem",
155  "FirstBrem",
156  "MVA"};
157 
158 std::ostream& reco::operator<<(std::ostream& out, const PFCandidateElectronExtra& extra) {
159  if (!out)
160  return out;
161 
162  out << std::setiosflags(std::ios::left) << std::setw(20) << "Variable index" << std::setw(20) << "Name"
163  << std::setw(10) << "Set(0/1)" << std::setw(8) << "value" << std::endl;
167  out << std::setw(20) << i << std::setw(20) << listVar[i] << std::setw(10) << extra.mvaStatus(i) << std::setw(8)
168  << extra.mvaVariable(i) << std::endl;
169  }
170 
171  return out;
172 }
reco::PFCandidateElectronExtra::MVA_SigmaPtOverPt
Definition: PFCandidateElectronExtra.h:31
reco::GsfTrackRef
edm::Ref< GsfTrackCollection > GsfTrackRef
persistent reference to a GsfTrack
Definition: GsfTrackFwd.h:13
reco::PFCandidateElectronExtra::mvaStatus
bool mvaStatus(MvaVariable flag) const
access to mva variable status
Definition: PFCandidateElectronExtra.cc:133
reco::PFCandidateElectronExtra::MVA_HOverHE
Definition: PFCandidateElectronExtra.h:41
mps_fire.i
i
Definition: mps_fire.py:428
reco::PFCandidateElectronExtra::setVariable
void setVariable(MvaVariable type, float var)
Definition: PFCandidateElectronExtra.cc:118
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
reco::PFCandidateElectronExtra::pout_
math::XYZTLorentzVector pout_
Variables entering the MVA that should be saved.
Definition: PFCandidateElectronExtra.h:135
reco::PFCandidateElectronExtra::setStatus
void setStatus(StatusFlag type, bool status=true)
set status
Definition: PFCandidateElectronExtra.cc:123
reco::PFCandidateElectronExtra::setSigmaEtaEta
void setSigmaEtaEta(float val)
set the sigmaetaeta
Definition: PFCandidateElectronExtra.cc:80
reco::PFCandidateElectronExtra::status_
int status_
Status of the electron.
Definition: PFCandidateElectronExtra.h:132
mps_update.status
status
Definition: mps_update.py:69
reco::PFCandidateElectronExtra::MVA_EbremOverDeltaP
Definition: PFCandidateElectronExtra.h:38
reco::PFCandidateElectronExtra::deltaEta_
float deltaEta_
Definition: PFCandidateElectronExtra.h:140
reco::PFCandidateElectronExtra::PFCandidateElectronExtra
PFCandidateElectronExtra()
constructor
Definition: PFCandidateElectronExtra.cc:8
reco::PFCandidateElectronExtra::MVA_FirstBrem
Definition: PFCandidateElectronExtra.h:43
reco::PFCandidateElectronExtra::sigmaEtaEta_
float sigmaEtaEta_
Definition: PFCandidateElectronExtra.h:138
reco::PFCandidateElectronExtra::mvaStatus_
int mvaStatus_
status of mva variables
Definition: PFCandidateElectronExtra.h:129
reco::PFCandidateElectronExtra::clusterEnergies_
std::vector< float > clusterEnergies_
energy of individual clusters (corrected). The first cluster is the seed
Definition: PFCandidateElectronExtra.h:123
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
reco::PFCandidateElectronExtra::MVA_EseedOverPout
Definition: PFCandidateElectronExtra.h:37
reco::PFCandidateElectronExtra::MVA_FIRST
Definition: PFCandidateElectronExtra.h:28
reco::PFCandidateElectronExtra::setGsfTrackRef
void setGsfTrackRef(const reco::GsfTrackRef &ref)
set gsftrack reference
Definition: PFCandidateElectronExtra.cc:47
edm::Ref< GsfTrackCollection >
listVar
static char const *const listVar[]
Definition: PFCandidateElectronExtra.cc:141
trigObjTnPSource_cfi.var
var
Definition: trigObjTnPSource_cfi.py:21
reco::PFCandidateElectronExtra::hadEnergy_
float hadEnergy_
Definition: PFCandidateElectronExtra.h:139
reco::PFCandidateElectronExtra::StatusFlag
StatusFlag
Definition: PFCandidateElectronExtra.h:18
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
reco::PFCandidateElectronExtra::setMVA
void setMVA(float val)
set the result (mostly for debugging)
Definition: PFCandidateElectronExtra.cc:116
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
reco::PFCandidateElectronExtra::gsfTrackRef_
reco::GsfTrackRef gsfTrackRef_
Ref to the GSF track.
Definition: PFCandidateElectronExtra.h:118
reco::TrackRef
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:20
reco::PFCandidateElectronExtra::setHadEnergy
void setHadEnergy(float val)
set the had energy. The cluster energies should be entered before
Definition: PFCandidateElectronExtra.cc:74
reco::PFCandidateElectronExtra::MVA_LogSigmaEtaEta
Definition: PFCandidateElectronExtra.h:40
reco::PFCandidateElectronExtra::MVA_Chi2Gsf
Definition: PFCandidateElectronExtra.h:33
reco::PFCandidateElectronExtra::setEarlyBrem
void setEarlyBrem(float val)
set EarlyBrem
Definition: PFCandidateElectronExtra.cc:69
reco::PFCandidateElectronExtra::MVA_DeltaEtaTrackCluster
Definition: PFCandidateElectronExtra.h:39
reco::PFCandidateElectronExtra::setDeltaEta
void setDeltaEta(float val)
set the delta eta
Definition: PFCandidateElectronExtra.cc:85
type
type
Definition: SiPixelVCal_PayloadInspector.cc:37
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
reco::PFCandidateElectronExtra
Definition: PFCandidateElectronExtra.h:16
gainCalibHelper::gainCalibPI::type
type
Definition: SiPixelGainCalibHelper.h:40
reco::PFCandidateElectronExtra::earlyBrem_
float earlyBrem_
Definition: PFCandidateElectronExtra.h:136
reco::PFCandidateElectronExtra::MvaVariable
MvaVariable
Definition: PFCandidateElectronExtra.h:27
reco::PFCandidateElectronExtra::electronStatus
int electronStatus() const
access to the status
Definition: PFCandidateElectronExtra.h:98
reco::PFCandidateElectronExtra::setGsfTrackPout
void setGsfTrackPout(const math::XYZTLorentzVector &pout)
set the pout (not trivial to get from the GSF track)
Definition: PFCandidateElectronExtra.cc:49
GsfTrack.h
reco::PFCandidateElectronExtra::setClusterEnergies
void setClusterEnergies(const std::vector< float > &energies)
set the cluster energies. the Pout should be saved first
Definition: PFCandidateElectronExtra.cc:90
reco::operator<<
std::ostream & operator<<(std::ostream &, BeamSpot beam)
Definition: BeamSpot.cc:66
reco::PFCandidateElectronExtra::mvaVariables_
std::vector< float > mvaVariables_
mva variables - transient !
Definition: PFCandidateElectronExtra.h:126
reco::PFCandidateElectronExtra::mvaVariable
float mvaVariable(MvaVariable var) const
access to any variable
Definition: PFCandidateElectronExtra.cc:135
reco::PFCandidateElectronExtra::MVA_LAST
Definition: PFCandidateElectronExtra.h:45
reco::PFCandidateElectronExtra::MVA_EtaGsf
Definition: PFCandidateElectronExtra.h:30
reco::PFCandidateElectronExtra::setKfTrackRef
void setKfTrackRef(const reco::TrackRef &ref)
set kf track reference
Definition: PFCandidateElectronExtra.cc:51
reco::PFCandidateElectronExtra::kfTrackRef_
reco::TrackRef kfTrackRef_
Ref to the KF track.
Definition: PFCandidateElectronExtra.h:120
reco::PFCandidateElectronExtra::MVA_MVA
Definition: PFCandidateElectronExtra.h:44
reco::PFCandidateElectronExtra::MVA_NhitsKf
Definition: PFCandidateElectronExtra.h:34
heppy_batch.val
val
Definition: heppy_batch.py:351
reco::PFCandidateElectronExtra::MVA_LateBrem
Definition: PFCandidateElectronExtra.h:42
reco::PFCandidateElectronExtra::setLateBrem
void setLateBrem(float val)
set LateBrem
Definition: PFCandidateElectronExtra.cc:64
reco::PFCandidateElectronExtra::lateBrem_
float lateBrem_
Definition: PFCandidateElectronExtra.h:137
reco::PFCandidateElectronExtra::MVA_EtotOverPin
Definition: PFCandidateElectronExtra.h:36
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
reco::PFCandidateElectronExtra::MVA_Fbrem
Definition: PFCandidateElectronExtra.h:32
reco::PFCandidateElectronExtra::MVA_Chi2Kf
Definition: PFCandidateElectronExtra.h:35
reco::PFCandidateElectronExtra::MVA_LnPtGsf
Definition: PFCandidateElectronExtra.h:29
PFCandidateElectronExtra.h
RemoveAddSevLevel.flag
flag
Definition: RemoveAddSevLevel.py:116
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443