143 std::vector<MET::METCorrectionType> tmpRaw;
144 std::vector<MET::METCorrectionType> tmpType1;
145 std::vector<MET::METCorrectionType> tmpType01;
146 std::vector<MET::METCorrectionType> tmpTypeXY;
147 std::vector<MET::METCorrectionType> tmpType1XY;
148 std::vector<MET::METCorrectionType> tmpType01XY;
149 std::vector<MET::METCorrectionType> tmpType1Smear;
150 std::vector<MET::METCorrectionType> tmpType01Smear;
151 std::vector<MET::METCorrectionType> tmpType1SmearXY;
152 std::vector<MET::METCorrectionType> tmpType01SmearXY;
159 tmpType01XY.push_back(
MET::T1);
160 tmpType1Smear.push_back(
MET::T1);
161 tmpType01Smear.push_back(
MET::T1);
162 tmpType1SmearXY.push_back(
MET::T1);
163 tmpType01SmearXY.push_back(
MET::T1);
166 tmpType01XY.push_back(
MET::T0);
167 tmpType01Smear.push_back(
MET::T0);
168 tmpType01SmearXY.push_back(
MET::T0);
193 std::vector<MET::METCorrectionType> tmpRawCalo;
198 std::vector<MET::METCorrectionType> tmpRawChs;
203 std::vector<MET::METCorrectionType> tmpRawTrk;
212 std::map<MET::METCorrectionLevel, std::vector<MET::METCorrectionType> >
::const_iterator itCor_ =
corMap_.find(cor);
213 if(itCor_==
corMap_.end() )
throw cms::Exception(
"Unsupported",
"Specified MET correction scheme does not exist");
215 bool isSmeared=
false;
217 unsigned int scor=itCor_->second.size();
218 for(
unsigned int i=0;
i<scor;
i++) {
253 if(cor!=MET::METCorrectionLevel::RawCalo) {
276 if(cor!=MET::METCorrectionLevel::RawCalo) {
299 if(cor!=MET::METCorrectionLevel::RawCalo) {
324 if(cor!=MET::METCorrectionLevel::RawCalo) {
384 corrections_.resize(MET::METCorrectionType::METCorrectionTypeSize);
392 return shiftedP2(MET::METUncertainty::NoShift, MET::METCorrectionLevel::RawCalo );
409 if (level !=
Type1 && level !=
Raw)
throw cms::Exception(
"Unsupported",
"MET uncertainties only supported for Raw and Type1 in 74X samples \n");
411 if (v.empty())
throw cms::Exception(
"Unsupported",
"MET uncertainties not available for the specified correction type\n");
413 if (shift != MET::METUncertainty::NoShift)
throw cms::Exception(
"Unsupported",
"MET uncertainties not available for the specified correction type (only central value available)\n");
414 return Vector2{ (
px() + v.front().dpx()), (
py() + v.front().dpy()) };
421 if (level !=
Type1 && level !=
Raw)
throw cms::Exception(
"Unsupported",
"MET uncertainties only supported for Raw and Type1 in 74X samples \n");
423 if (v.empty())
throw cms::Exception(
"Unsupported",
"MET uncertainties not available for the specified correction type\n");
425 if (shift != MET::METUncertainty::NoShift)
throw cms::Exception(
"Unsupported",
"MET uncertainties not available for the specified correction type (only central value available)\n");
426 return Vector(
px() + v.front().dpx(),
py() + v.front().dpy(), 0);
428 return Vector(
px() + v[shift].dpx(),
py() + v[shift].dpy(), 0);
432 if (level !=
Type1 && level !=
Raw)
throw cms::Exception(
"Unsupported",
"MET uncertainties only supported for Raw and Type1 in 74X samples\n");
434 if (v.empty())
throw cms::Exception(
"Unsupported",
"MET uncertainties not available for the specified correction type\n");
436 if (shift != MET::METUncertainty::NoShift)
throw cms::Exception(
"Unsupported",
"MET uncertainties not available for the specified correction type (only central value available)\n");
437 double x =
px() + v.front().dpx(),
y =
py() + v.front().dpy();
445 if (level !=
Type1 && level !=
Raw)
throw cms::Exception(
"Unsupported",
"MET uncertainties only supported for Raw and Type1 in 74X samples\n");
447 if (v.empty())
throw cms::Exception(
"Unsupported",
"MET uncertainties not available for the specified correction type\n");
449 if (shift != MET::METUncertainty::NoShift)
throw cms::Exception(
"Unsupported",
"MET uncertainties not available for the specified correction type (only central value available)\n");
450 return sumEt() + v.front().dsumEt();
Analysis-level MET class.
std::vector< double > dsumEt() const
value_type const * get() const
std::vector< PackedMETUncertainty > uncertaintiesRaw_
Vector2 shiftedP2_74x(METUncertainty shift, METCorrectionLevel level) const
const PackedMETUncertainty findMETTotalShift(MET::METCorrectionLevel cor, MET::METUncertainty shift) const
SpecificPFMETData getSpecific() const
math::XYZVector Vector
point in the space
Vector2 caloMETP2() const
std::vector< PackedMETUncertainty > uncertaintiesType1p2_
Vector2 corP2(METCorrectionLevel level=Type1) const
T const * get() const
Returns C++ pointer to the item.
std::vector< PackedMETUncertainty > uncertainties_
double px() const final
x coordinate of momentum vector
void setSignificanceMatrix(const reco::METCovMatrix &matrix)
double y() const final
rapidity
LorentzVector shiftedP4(METUncertainty shift, METCorrectionLevel level=Type1) const
void setUncShift(double px, double py, double sumEt, METUncertainty shift, bool isSmeared=false)
~MET() override
destructor
double metSignificance() const
Vector corP3(METCorrectionLevel level=Type1) const
static float float16to32(uint16_t h)
double caloMETSumEt() const
double corSumEt(METCorrectionLevel level=Type1) const
void add(float dpx, float dpy, float dsumEt)
SpecificCaloMETData getSpecific() const
PackedMETUncertainty caloPackedMet_
static uint16_t float32to16(float x)
LorentzVector corP4(METCorrectionLevel level=Type1) const
Vector2 shiftedP2(METUncertainty shift, METCorrectionLevel level=Type1) const
double caloMETPhi() const
double shiftedSumEt(METUncertainty shift, METCorrectionLevel level=Type1) const
std::vector< reco::GenMET > genMET_
LorentzVector shiftedP4_74x(METUncertainty shift, METCorrectionLevel level) const
double shiftedSumEt_74x(METUncertainty shift, METCorrectionLevel level) const
double uncorSumEt() const
MET & operator=(MET const &)
void setMETSumPtUnclustered(const double &sumPtUnclustered)
std::map< MET::METCorrectionLevel, std::vector< MET::METCorrectionType > > corMap_
const reco::GenMET * genMET() const
return the associated GenMET
double py() const final
y coordinate of momentum vector
std::vector< SpecificCaloMETData > caloMET_
this below should be private but Reflex doesn't like it
math::XYZTLorentzVector LorentzVector
Lorentz vector.
std::vector< std::vector< double > > tmp
std::vector< PackedMETUncertainty > uncertaintiesType1_
std::vector< PackedMETUncertainty > corrections_
math::XYZVector Vector
point in the space
static unsigned int const shift
LorentzVector uncorP4() const
Templated PAT object container.
void setCorShift(double px, double py, double sumEt, METCorrectionType level)
void setGenMET(const reco::GenMET &gm)
set the associated GenMET
std::vector< SpecificPFMETData > pfMET_
double metSumPtUnclustered() const
math::XYZTLorentzVector LorentzVector
Lorentz vector.
void setMETSignificance(const double &metSig)
Vector shiftedP3_74x(METUncertainty shift, METCorrectionLevel level) const
reco::METCovMatrix getSignificanceMatrix(void) const
Vector shiftedP3(METUncertainty shift, METCorrectionLevel level=Type1) const