diff --git a/CondFormats/L1TObjects/interface/CaloParams.h b/CondFormats/L1TObjects/interface/CaloParams.h index 8793a5f63bbbd..7916062a79cbd 100644 --- a/CondFormats/L1TObjects/interface/CaloParams.h +++ b/CondFormats/L1TObjects/interface/CaloParams.h @@ -38,7 +38,7 @@ namespace l1t { std::vector uparams_; std::vector iparams_; std::vector sparams_; - Node(){ type_="unspecified"; version_=0; } + Node(){ type_="unspecified"; version_=1; } COND_SERIALIZABLE; }; @@ -84,7 +84,7 @@ namespace l1t { TowerParams() : lsbH_(0), lsbE_(0), lsbSum_(0), nBitsH_(0), nBitsE_(0), nBitsSum_(0), nBitsRatio_(0), - maskH_(0), maskE_(0), maskSum_(0), maskRatio_(0), + maskH_(0), maskE_(0), maskSum_(0), maskRatio_(0), doEncoding_(false) { /* no-op */} @@ -128,8 +128,8 @@ namespace l1t { // veto region is seed tower +/- <=egIsoVetoNrTowersPhi unsigned isoVetoNrTowersPhi_; - EgParams() : lsb_(0), seedThreshold_(0), neighbourThreshold_(0), hcalThreshold_(0), maxHcalEt_(0), maxPtHOverE_(0), - minPtJetIsolation_(0), maxPtJetIsolation_(0), minPtHOverEIsolation_(0), maxPtHOverEIsolation_(0), + EgParams() : lsb_(0), seedThreshold_(0), neighbourThreshold_(0), hcalThreshold_(0), maxHcalEt_(0), maxPtHOverE_(0), + minPtJetIsolation_(0), maxPtJetIsolation_(0), minPtHOverEIsolation_(0), maxPtHOverEIsolation_(0), isoAreaNrTowersEta_(0), isoAreaNrTowersPhi_(0), isoVetoNrTowersPhi_(0) { /* no-op */ } @@ -173,9 +173,9 @@ namespace l1t { // veto region is seed tower +/- <=tauIsoVetoNrTowersPhi unsigned isoVetoNrTowersPhi_; - TauParams() : lsb_(0), seedThreshold_(0), neighbourThreshold_(0), maxPtTauVeto_(0), + TauParams() : lsb_(0), seedThreshold_(0), neighbourThreshold_(0), maxPtTauVeto_(0), minPtJetIsolationB_(0), maxJetIsolationB_(0), maxJetIsolationA_(0), - isoEtaMin_(0), isoEtaMax_(0), + isoEtaMin_(0), isoEtaMax_(0), isoAreaNrTowersEta_(0), isoAreaNrTowersPhi_(0), isoVetoNrTowersPhi_(0) { /* no-op */ } @@ -204,7 +204,7 @@ namespace l1t { egTrimming=1, egMaxHOverE=2, egCompressShapes=3, egShapeId=4, egCalibration=5, egPUS=6, egIsolation=7, tauCalibration=8, tauPUS=9, tauIsolation=10, jetPUS=11, jetCalibration=12, - hiCentrality=13, hiQ2=14, + hiCentrality=13, hiQ2=14, tauEtToHFRingEt=15, NUM_CALOPARAMNODES=16 }; @@ -212,187 +212,11 @@ namespace l1t { CaloParams() { version_=Version; pnode_.resize(NUM_CALOPARAMNODES); } ~CaloParams() {} - // towers - double towerLsbH() const { return towerp_.lsbH_; } - double towerLsbE() const { return towerp_.lsbE_; } - double towerLsbSum() const { return towerp_.lsbSum_; } - int towerNBitsH() const { return towerp_.nBitsH_; } - int towerNBitsE() const { return towerp_.nBitsE_; } - int towerNBitsSum() const { return towerp_.nBitsSum_; } - int towerNBitsRatio() const { return towerp_.nBitsRatio_; } - int towerMaskE() const { return towerp_.maskE_; } - int towerMaskH() const { return towerp_.maskH_; } - int towerMaskSum() const { return towerp_.maskSum_; } - int towerMaskRatio() const { return towerp_.maskRatio_; } - bool doTowerEncoding() const { return towerp_.doEncoding_; } - - void setTowerLsbH(double lsb) { towerp_.lsbH_ = lsb; } - void setTowerLsbE(double lsb) { towerp_.lsbE_ = lsb; } - void setTowerLsbSum(double lsb) { towerp_.lsbSum_ = lsb; } - void setTowerNBitsH(int n) { towerp_.nBitsH_ = n; towerp_.maskH_ = std::pow(2,n)-1; } - void setTowerNBitsE(int n) { towerp_.nBitsE_ = n; towerp_.maskE_ = std::pow(2,n)-1; } - void setTowerNBitsSum(int n) { towerp_.nBitsSum_ = n; towerp_.maskSum_ = std::pow(2,n)-1; } - void setTowerNBitsRatio(int n) { towerp_.nBitsRatio_ = n; towerp_.maskRatio_ = std::pow(2,n)-1; } - void setTowerEncoding(bool doit) { towerp_.doEncoding_ = doit; } - - - // regions - double regionLsb() const { return regionLsb_; } - std::string regionPUSType() const { return pnode_[regionPUS].type_; } - std::vector regionPUSParams() { return pnode_[regionPUS].dparams_; } - - void setRegionLsb(double lsb) { regionLsb_ = lsb; } - void setRegionPUSType(std::string type) { pnode_[regionPUS].type_ = type; } - void setRegionPUSParams(const std::vector & params) { pnode_[regionPUS].dparams_ = params; } - - // EG - double egLsb() const { return egp_.lsb_; } - double egSeedThreshold() const { return egp_.seedThreshold_; } - double egNeighbourThreshold() const { return egp_.neighbourThreshold_; } - double egHcalThreshold() const { return egp_.hcalThreshold_; } - l1t::LUT* egTrimmingLUT() { return &pnode_[egTrimming].LUT_; } - double egMaxHcalEt() const { return egp_.maxHcalEt_; } - double egMaxPtHOverE() const {return egp_.maxPtHOverE_;} - l1t::LUT* egMaxHOverELUT() { return &pnode_[egMaxHOverE].LUT_; } - l1t::LUT* egCompressShapesLUT() { return &pnode_[egCompressShapes].LUT_; } - l1t::LUT* egShapeIdLUT() { return &pnode_[egShapeId].LUT_; } - int egMinPtJetIsolation() const { return egp_.minPtJetIsolation_; } - int egMaxPtJetIsolation() const { return egp_.maxPtJetIsolation_; } - int egMinPtHOverEIsolation() const { return egp_.minPtHOverEIsolation_; } - int egMaxPtHOverEIsolation() const { return egp_.maxPtHOverEIsolation_; } - - unsigned egIsoAreaNrTowersEta()const{return egp_.isoAreaNrTowersEta_;} - unsigned egIsoAreaNrTowersPhi()const{return egp_.isoAreaNrTowersPhi_;} - unsigned egIsoVetoNrTowersPhi()const{return egp_.isoVetoNrTowersPhi_;} - const std::string & egPUSType() const { return pnode_[egPUS].type_; } - const std::vector & egPUSParams() const { return pnode_[egPUS].dparams_; } - double egPUSParam(int ipar) const { return pnode_[egPUS].dparams_.at(ipar); } - - - - l1t::LUT* egIsolationLUT() { return &pnode_[egIsolation].LUT_; } - std::string egCalibrationType() const { return pnode_[egCalibration].type_; } - std::vector egCalibrationParams() { return pnode_[egCalibration].dparams_; } - l1t::LUT* egCalibrationLUT() { return &pnode_[egCalibration].LUT_; } - - void setEgLsb(double lsb) { egp_.lsb_ = lsb; } - void setEgSeedThreshold(double thresh) { egp_.seedThreshold_ = thresh; } - void setEgNeighbourThreshold(double thresh) { egp_.neighbourThreshold_ = thresh; } - void setEgHcalThreshold(double thresh) { egp_.hcalThreshold_ = thresh; } - void setEgTrimmingLUT(const l1t::LUT & lut) { pnode_[egTrimming].LUT_ = lut; } - void setEgMaxHcalEt(double cut) { egp_.maxHcalEt_ = cut; } - void setEgMaxPtHOverE(double thresh) { egp_.maxPtHOverE_ = thresh;} - void setEgMaxHOverELUT(const l1t::LUT & lut) { pnode_[egMaxHOverE].LUT_ = lut; } - void setEgCompressShapesLUT(const l1t::LUT & lut) { pnode_[egCompressShapes].LUT_ = lut; } - void setEgShapeIdLUT(const l1t::LUT & lut) { pnode_[egShapeId].LUT_ = lut; } - void setEgMinPtJetIsolation(int cutValue) { egp_.minPtJetIsolation_ = cutValue; } - void setEgMaxPtJetIsolation(int cutValue) { egp_.maxPtJetIsolation_ = cutValue; } - void setEgMinPtHOverEIsolation(int cutValue) { egp_.minPtHOverEIsolation_ = cutValue; } - void setEgMaxPtHOverEIsolation(int cutValue) { egp_.maxPtHOverEIsolation_ = cutValue; } - - void setEgIsoAreaNrTowersEta(unsigned iEgIsoAreaNrTowersEta){egp_.isoAreaNrTowersEta_=iEgIsoAreaNrTowersEta;} - void setEgIsoAreaNrTowersPhi(unsigned iEgIsoAreaNrTowersPhi){egp_.isoAreaNrTowersPhi_=iEgIsoAreaNrTowersPhi;} - void setEgIsoVetoNrTowersPhi(unsigned iEgIsoVetoNrTowersPhi){egp_.isoVetoNrTowersPhi_=iEgIsoVetoNrTowersPhi;} - void setEgPUSType(std::string type) { pnode_[egPUS].type_ = type; } - void setEgPUSParams(const std::vector & params) { pnode_[egPUS].dparams_ = params; } - void setEgIsolationLUT(const l1t::LUT & lut) { pnode_[egIsolation].LUT_ = lut; } - void setEgCalibrationType(std::string type) { pnode_[egCalibration].type_ = type; } - void setEgCalibrationParams(std::vector params) { pnode_[egCalibration].dparams_ = params; } - void setEgCalibrationLUT(const l1t::LUT & lut) { pnode_[egCalibration].LUT_ = lut; } - - // tau - double tauLsb() const { return taup_.lsb_; } - double tauSeedThreshold() const { return taup_.seedThreshold_; } - double tauNeighbourThreshold() const { return taup_.neighbourThreshold_; } - double tauMaxPtTauVeto() const { return taup_.maxPtTauVeto_;} - double tauMinPtJetIsolationB() const { return taup_.minPtJetIsolationB_;} - double tauMaxJetIsolationB() const { return taup_.maxJetIsolationB_; } - double tauMaxJetIsolationA() const { return taup_.maxJetIsolationA_; } - int isoTauEtaMin() const { return taup_.isoEtaMin_; } - int isoTauEtaMax() const { return taup_.isoEtaMax_; } - std::string tauPUSType() const { return pnode_[tauPUS].type_; } - const std::vector & tauPUSParams() const { return pnode_[tauPUS].dparams_; } - double tauPUSParam(int ipar) const { return pnode_[tauPUS].dparams_.at(ipar); } - - l1t::LUT* tauIsolationLUT() { return &pnode_[tauIsolation].LUT_; } - - std::string tauCalibrationType() const { return pnode_[tauCalibration].type_; } - std::vector tauCalibrationParams() { return pnode_[tauCalibration].dparams_; } - l1t::LUT* tauCalibrationLUT() { return &pnode_[tauCalibration].LUT_; } - - l1t::LUT* tauEtToHFRingEtLUT() { return &pnode_[tauEtToHFRingEt].LUT_; } - - unsigned tauIsoAreaNrTowersEta()const{return taup_.isoAreaNrTowersEta_;} - unsigned tauIsoAreaNrTowersPhi()const{return taup_.isoAreaNrTowersPhi_;} - unsigned tauIsoVetoNrTowersPhi()const{return taup_.isoVetoNrTowersPhi_;} - - - void setTauLsb(double lsb) { taup_.lsb_ = lsb; } - void setTauSeedThreshold(double thresh) { taup_.seedThreshold_ = thresh; } - void setTauNeighbourThreshold(double thresh) { taup_.neighbourThreshold_ = thresh; } - void setTauMaxPtTauVeto(double limit) { taup_.maxPtTauVeto_ = limit; } - void setTauMinPtJetIsolationB(double limit) { taup_.minPtJetIsolationB_ = limit; } - void setTauMaxJetIsolationB(double limit) { taup_.maxJetIsolationB_ = limit; } - void setTauMaxJetIsolationA(double cutValue) { taup_.maxJetIsolationA_ = cutValue; } - void setIsoTauEtaMin(int value) { taup_.isoEtaMin_ = value; } - void setIsoTauEtaMax(int value) { taup_.isoEtaMax_ = value; } - void setTauPUSType(std::string type) { pnode_[tauPUS].type_ = type; } - void setTauIsolationLUT(const l1t::LUT & lut) { pnode_[tauIsolation].LUT_ = lut; } - - void setTauCalibrationType(std::string type) { pnode_[tauCalibration].type_ = type; } - void setTauIsoAreaNrTowersEta(unsigned iTauIsoAreaNrTowersEta){taup_.isoAreaNrTowersEta_=iTauIsoAreaNrTowersEta;} - void setTauIsoAreaNrTowersPhi(unsigned iTauIsoAreaNrTowersPhi){taup_.isoAreaNrTowersPhi_=iTauIsoAreaNrTowersPhi;} - void setTauIsoVetoNrTowersPhi(unsigned iTauIsoVetoNrTowersPhi){taup_.isoVetoNrTowersPhi_=iTauIsoVetoNrTowersPhi;} - - void setTauCalibrationParams(std::vector params) { pnode_[tauCalibration].dparams_ = params; } - void setTauCalibrationLUT(const l1t::LUT & lut) { pnode_[tauCalibration].LUT_ = lut; } - void setTauPUSParams(const std::vector & params) { pnode_[tauPUS].dparams_ = params; } - - void setTauEtToHFRingEtLUT(const l1t::LUT & lut) { pnode_[tauEtToHFRingEt].LUT_ = lut; } - - // jets - double jetLsb() const { return jetp_.lsb_; } - double jetSeedThreshold() const { return jetp_.seedThreshold_; } - double jetNeighbourThreshold() const { return jetp_.neighbourThreshold_; } - std::string jetPUSType() const { return pnode_[jetPUS].type_; } - std::vector jetPUSParams() { return pnode_[jetPUS].dparams_; } - std::string jetCalibrationType() const { return pnode_[jetCalibration].type_; } - std::vector jetCalibrationParams() { return pnode_[jetCalibration].dparams_; } - l1t::LUT* jetCalibrationLUT() { return &pnode_[jetCalibration].LUT_; } - - void setJetLsb(double lsb) { jetp_.lsb_ = lsb; } - void setJetSeedThreshold(double thresh) { jetp_.seedThreshold_ = thresh; } - void setJetNeighbourThreshold(double thresh) { jetp_.neighbourThreshold_ = thresh; } - void setJetPUSType(std::string type) { pnode_[jetPUS].type_ = type; } - void setJetPUSParams(std::vector params) { pnode_[jetPUS].dparams_ = params; } - void setJetCalibrationType(std::string type) { pnode_[jetCalibration].type_ = type; } - void setJetCalibrationParams(std::vector params) { pnode_[jetCalibration].dparams_ = params; } - void setJetCalibrationLUT(const l1t::LUT & lut) { pnode_[jetCalibration].LUT_ = lut; } - - // sums - double etSumLsb() const { return etSumLsb_; } - int etSumEtaMin(unsigned isum) const; - int etSumEtaMax(unsigned isum) const; - double etSumEtThreshold(unsigned isum) const; - - void setEtSumLsb(double lsb) { etSumLsb_ = lsb; } - void setEtSumEtaMin(unsigned isum, int eta); - void setEtSumEtaMax(unsigned isum, int eta); - void setEtSumEtThreshold(unsigned isum, double thresh); - - // HI centrality - l1t::LUT * centralityLUT() { return &pnode_[hiCentrality].LUT_; } - void setCentralityLUT(const l1t::LUT & lut) { pnode_[hiCentrality].LUT_ = lut; } - - // HI Q2 - l1t::LUT * q2LUT() { return &pnode_[hiQ2].LUT_; } - void setQ2LUT(const l1t::LUT & lut) { pnode_[hiQ2].LUT_ = lut; } - // print parameters to stream: void print(std::ostream&) const; friend std::ostream& operator<<(std::ostream& o, const CaloParams & p) { p.print(o); return o; } - private: + protected: unsigned version_; std::vector pnode_; diff --git a/CondFormats/L1TObjects/src/CaloParams.cc b/CondFormats/L1TObjects/src/CaloParams.cc index 1e02743614f36..2d6dcb1933ddd 100644 --- a/CondFormats/L1TObjects/src/CaloParams.cc +++ b/CondFormats/L1TObjects/src/CaloParams.cc @@ -1,83 +1,3 @@ #include "CondFormats/L1TObjects/interface/CaloParams.h" using namespace l1t; - -int CaloParams::etSumEtaMin(unsigned isum) const { - if (etSumEtaMin_.size()>isum) return etSumEtaMin_.at(isum); - else return 0; -} - -int CaloParams::etSumEtaMax(unsigned isum) const { - if (etSumEtaMax_.size()>isum) return etSumEtaMax_.at(isum); - else return 0; -} - -double CaloParams::etSumEtThreshold(unsigned isum) const { - if (etSumEtThreshold_.size()>isum) return etSumEtThreshold_.at(isum); - else return 0.; -} - -void CaloParams::setEtSumEtaMin(unsigned isum, int eta) { - if (etSumEtaMin_.size()<=isum) etSumEtaMin_.resize(isum+1); - etSumEtaMin_.at(isum) = eta; -} - -void CaloParams::setEtSumEtaMax(unsigned isum, int eta) { - if (etSumEtaMax_.size()<=isum) etSumEtaMax_.resize(isum+1); - etSumEtaMax_.at(isum) = eta; -} - -void CaloParams::setEtSumEtThreshold(unsigned isum, double thresh) { - if (etSumEtThreshold_.size()<=isum) etSumEtThreshold_.resize(isum+1); - etSumEtThreshold_.at(isum) = thresh; -} - -void CaloParams::print(std::ostream& out) const { - - out << "L1 Calo Parameters" << std::endl; - out << "Towers" << std::endl; - out << " LSB H : " << this->towerLsbH() << std::endl; - out << " LSB E : " << this->towerLsbE() << std::endl; - out << " LSB Sum : " << this->towerLsbSum() << std::endl; - out << " Nbits H : " << this->towerNBitsH() << std::endl; - out << " Nbits E : " << this->towerNBitsE() << std::endl; - out << " Nbits Sum : " << this->towerNBitsSum() << std::endl; - out << " Nbits Ratio : " << this->towerNBitsRatio() << std::endl; - out << " Mask E : " << this->towerMaskE() << std::endl; - out << " Mask H : " << this->towerMaskH() << std::endl; - out << " Mask Sum : " << this->towerMaskSum() << std::endl; - out << " Mask Ratio : " << this->towerMaskRatio() << std::endl; - out << " Encoding : " << this->doTowerEncoding() << std::endl; - - out << "Regions" << std::endl; - out << " PUS : " << this->regionPUSType() << std::endl; - out << " LSB : " << this->regionLsb() << std::endl; - - out << "EG" << std::endl; - out << " LSB : " << this->egLsb() << std::endl; - out << " Seed thresh : " << this->egSeedThreshold() << std::endl; - out << " Neighbour thresh : " << this->egNeighbourThreshold() << std::endl; - out << " HCAL thresh : " << this->egHcalThreshold() << std::endl; - out << " HCAL max Et : " << this->egMaxHcalEt() << std::endl; - out << " Iso PUS type : " << this->egPUSType() << std::endl; - - out << "Tau" << std::endl; - out << " Seed thresh : " << this->tauSeedThreshold() << std::endl; - out << " Neighbour thresh : " << this->tauNeighbourThreshold() << std::endl; - out << " Iso PUS type : " << this->tauPUSType() << std::endl; - - out << "Jets" << std::endl; - out << " LSB : " << this->jetLsb() << std::endl; - out << " Seed thresh : " << this->jetSeedThreshold() << std::endl; - out << " Neighbour thresh : " << this->jetNeighbourThreshold() << std::endl; - out << " PUS type : " << this->jetPUSType() << std::endl; - out << " Calibration type : " << this->jetCalibrationType() << std::endl; - - out << "Sums" << std::endl; - for (unsigned i=0; ietSumEtaMin(i) << std::endl; - if (etSumEtaMax_.size()>i) out << " EtSum" << i << " eta max : " << this->etSumEtaMax(i) << std::endl; - if (etSumEtThreshold_.size()>i) out << " EtSum" << i << " Et thresh : " << this->etSumEtThreshold(i) << std::endl; - } - -} diff --git a/L1Trigger/L1TCalorimeter/data/centrality_extended_LUT_preRun.txt b/L1Trigger/L1TCalorimeter/data/centrality_extended_LUT_preRun.txt new file mode 100644 index 0000000000000..1762fef14793e --- /dev/null +++ b/L1Trigger/L1TCalorimeter/data/centrality_extended_LUT_preRun.txt @@ -0,0 +1,27 @@ +# LUT for centrality thresholds in hw scale +# Index is just threshold number (0-7 inclusive) +#anything after # is ignored with the exception of the header +#the header is first valid line starting with #
versionStr(unused but may be in future) nrBitsAddress nrBitsData
+#
V2 5 14
+0 0 +1 92 +2 591 +3 1774 +4 4155 +5 5091 +6 6000 +7 7000 +8 87 +9 97 +10 561 +11 621 +12 1685 +13 1863 +14 4113 +15 4197 +16 5040 +17 5142 +18 5940 +19 6060 +20 6930 +21 7070 diff --git a/L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h b/L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h new file mode 100644 index 0000000000000..031b1371c2b14 --- /dev/null +++ b/L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h @@ -0,0 +1,287 @@ +// CaloParamsHelper.h +// Author: R. Alex Barbieri +// +// Wrapper class for CaloParams and Et scales + +#include "CondFormats/L1TObjects/interface/CaloParams.h" + +#include "CondFormats/L1TObjects/interface/L1CaloEtScale.h" +#include "CondFormats/DataRecord/interface/L1EmEtScaleRcd.h" +#include "CondFormats/DataRecord/interface/L1JetEtScaleRcd.h" +#include "CondFormats/DataRecord/interface/L1HtMissScaleRcd.h" +#include "CondFormats/DataRecord/interface/L1HfRingEtScaleRcd.h" + +#ifndef CaloParamsHelper_h +#define CaloParamsHelper_h + +namespace l1t { + + class CaloParamsHelper : public CaloParams { + + public: + CaloParamsHelper() {} + CaloParamsHelper(const CaloParams); + ~CaloParamsHelper() {} + + L1CaloEtScale emScale() { return emScale_; } + void setEmScale(L1CaloEtScale emScale) { emScale_ = emScale; } + L1CaloEtScale jetScale() { return jetScale_; } + void setJetScale(L1CaloEtScale jetScale) { jetScale_ = jetScale; } + L1CaloEtScale HtMissScale() {return HtMissScale_;} + L1CaloEtScale HfRingScale() {return HfRingScale_;} + void setHtMissScale(L1CaloEtScale HtMissScale){HtMissScale_ = HtMissScale;} + void setHfRingScale(L1CaloEtScale HfRingScale){HfRingScale_ = HfRingScale;} + + // towers + double towerLsbH() const { return towerp_.lsbH_; } + double towerLsbE() const { return towerp_.lsbE_; } + double towerLsbSum() const { return towerp_.lsbSum_; } + int towerNBitsH() const { return towerp_.nBitsH_; } + int towerNBitsE() const { return towerp_.nBitsE_; } + int towerNBitsSum() const { return towerp_.nBitsSum_; } + int towerNBitsRatio() const { return towerp_.nBitsRatio_; } + int towerMaskE() const { return towerp_.maskE_; } + int towerMaskH() const { return towerp_.maskH_; } + int towerMaskSum() const { return towerp_.maskSum_; } + int towerMaskRatio() const { return towerp_.maskRatio_; } + bool doTowerEncoding() const { return towerp_.doEncoding_; } + + void setTowerLsbH(double lsb) { towerp_.lsbH_ = lsb; } + void setTowerLsbE(double lsb) { towerp_.lsbE_ = lsb; } + void setTowerLsbSum(double lsb) { towerp_.lsbSum_ = lsb; } + void setTowerNBitsH(int n) { towerp_.nBitsH_ = n; towerp_.maskH_ = std::pow(2,n)-1; } + void setTowerNBitsE(int n) { towerp_.nBitsE_ = n; towerp_.maskE_ = std::pow(2,n)-1; } + void setTowerNBitsSum(int n) { towerp_.nBitsSum_ = n; towerp_.maskSum_ = std::pow(2,n)-1; } + void setTowerNBitsRatio(int n) { towerp_.nBitsRatio_ = n; towerp_.maskRatio_ = std::pow(2,n)-1; } + void setTowerEncoding(bool doit) { towerp_.doEncoding_ = doit; } + + + // regions + double regionLsb() const { return regionLsb_; } + std::string regionPUSType() const { return pnode_[regionPUS].type_; } + std::vector regionPUSParams() { return pnode_[regionPUS].dparams_; } + l1t::LUT* regionPUSLUT() {return &pnode_[regionPUS].LUT_; } + + int regionPUSValue(int PUM0, int eta) + { + int puSub = ceil(regionPUSParams()[18*eta+PUM0]*2); + return puSub; + } + + void setRegionLsb(double lsb) { regionLsb_ = lsb; } + void setRegionPUSType(std::string type) { pnode_[regionPUS].type_ = type; } + void setRegionPUSParams(const std::vector & params) { pnode_[regionPUS].dparams_ = params; } + void setRegionPUSLUT(const l1t::LUT & lut) { pnode_[regionPUS].LUT_ = lut; } + + // EG + int egEtaCut() const { + if (pnode_[egPUS].version_ ==1) + return pnode_[egPUS].iparams_[0]; + else + return 0; + } + double egLsb() const { return egp_.lsb_; } + double egSeedThreshold() const { return egp_.seedThreshold_; } + double egNeighbourThreshold() const { return egp_.neighbourThreshold_; } + double egHcalThreshold() const { return egp_.hcalThreshold_; } + l1t::LUT* egTrimmingLUT() { return &pnode_[egTrimming].LUT_; } + double egMaxHcalEt() const { return egp_.maxHcalEt_; } + double egMaxPtHOverE() const {return egp_.maxPtHOverE_;} + l1t::LUT* egMaxHOverELUT() { return &pnode_[egMaxHOverE].LUT_; } + l1t::LUT* egCompressShapesLUT() { return &pnode_[egCompressShapes].LUT_; } + l1t::LUT* egShapeIdLUT() { return &pnode_[egShapeId].LUT_; } + int egMinPtJetIsolation() const { return egp_.minPtJetIsolation_; } + int egMaxPtJetIsolation() const { return egp_.maxPtJetIsolation_; } + int egMinPtHOverEIsolation() const { return egp_.minPtHOverEIsolation_; } + int egMaxPtHOverEIsolation() const { return egp_.maxPtHOverEIsolation_; } + + unsigned egIsoAreaNrTowersEta()const{return egp_.isoAreaNrTowersEta_;} + unsigned egIsoAreaNrTowersPhi()const{return egp_.isoAreaNrTowersPhi_;} + unsigned egIsoVetoNrTowersPhi()const{return egp_.isoVetoNrTowersPhi_;} + const std::string & egPUSType() const { return pnode_[egPUS].type_; } + const std::vector & egPUSParams() const { return pnode_[egPUS].dparams_; } + double egPUSParam(int ipar) const { return pnode_[egPUS].dparams_.at(ipar); } + + l1t::LUT* egIsolationLUT() { return &pnode_[egIsolation].LUT_; } + std::string egCalibrationType() const { return pnode_[egCalibration].type_; } + std::vector egCalibrationParams() { return pnode_[egCalibration].dparams_; } + l1t::LUT* egCalibrationLUT() { return &pnode_[egCalibration].LUT_; } + + void setEgEtaCut(int mask) { + pnode_[egPUS].iparams_.resize(1); + pnode_[egPUS].iparams_[0] = mask; + } + void setEgLsb(double lsb) { egp_.lsb_ = lsb; } + void setEgSeedThreshold(double thresh) { egp_.seedThreshold_ = thresh; } + void setEgNeighbourThreshold(double thresh) { egp_.neighbourThreshold_ = thresh; } + void setEgHcalThreshold(double thresh) { egp_.hcalThreshold_ = thresh; } + void setEgTrimmingLUT(const l1t::LUT & lut) { pnode_[egTrimming].LUT_ = lut; } + void setEgMaxHcalEt(double cut) { egp_.maxHcalEt_ = cut; } + void setEgMaxPtHOverE(double thresh) { egp_.maxPtHOverE_ = thresh;} + void setEgMaxHOverELUT(const l1t::LUT & lut) { pnode_[egMaxHOverE].LUT_ = lut; } + void setEgCompressShapesLUT(const l1t::LUT & lut) { pnode_[egCompressShapes].LUT_ = lut; } + void setEgShapeIdLUT(const l1t::LUT & lut) { pnode_[egShapeId].LUT_ = lut; } + void setEgMinPtJetIsolation(int cutValue) { egp_.minPtJetIsolation_ = cutValue; } + void setEgMaxPtJetIsolation(int cutValue) { egp_.maxPtJetIsolation_ = cutValue; } + void setEgMinPtHOverEIsolation(int cutValue) { egp_.minPtHOverEIsolation_ = cutValue; } + void setEgMaxPtHOverEIsolation(int cutValue) { egp_.maxPtHOverEIsolation_ = cutValue; } + + void setEgIsoAreaNrTowersEta(unsigned iEgIsoAreaNrTowersEta){egp_.isoAreaNrTowersEta_=iEgIsoAreaNrTowersEta;} + void setEgIsoAreaNrTowersPhi(unsigned iEgIsoAreaNrTowersPhi){egp_.isoAreaNrTowersPhi_=iEgIsoAreaNrTowersPhi;} + void setEgIsoVetoNrTowersPhi(unsigned iEgIsoVetoNrTowersPhi){egp_.isoVetoNrTowersPhi_=iEgIsoVetoNrTowersPhi;} + void setEgPUSType(std::string type) { pnode_[egPUS].type_ = type; } + void setEgPUSParams(const std::vector & params) { pnode_[egPUS].dparams_ = params; } + void setEgIsolationLUT(const l1t::LUT & lut) { pnode_[egIsolation].LUT_ = lut; } + void setEgCalibrationType(std::string type) { pnode_[egCalibration].type_ = type; } + void setEgCalibrationParams(std::vector params) { pnode_[egCalibration].dparams_ = params; } + void setEgCalibrationLUT(const l1t::LUT & lut) { pnode_[egCalibration].LUT_ = lut; } + + // tau + int tauRegionMask() const { + if (pnode_[tauPUS].version_ ==1) + return pnode_[tauPUS].iparams_[0]; + else + return 0; + } + double tauLsb() const { return taup_.lsb_; } + double tauSeedThreshold() const { return taup_.seedThreshold_; } + double tauNeighbourThreshold() const { return taup_.neighbourThreshold_; } + double tauMaxPtTauVeto() const { return taup_.maxPtTauVeto_;} + double tauMinPtJetIsolationB() const { return taup_.minPtJetIsolationB_;} + double tauMaxJetIsolationB() const { return taup_.maxJetIsolationB_; } + double tauMaxJetIsolationA() const { return taup_.maxJetIsolationA_; } + int isoTauEtaMin() const { return taup_.isoEtaMin_; } + int isoTauEtaMax() const { return taup_.isoEtaMax_; } + std::string tauPUSType() const { return pnode_[tauPUS].type_; } + const std::vector & tauPUSParams() const { return pnode_[tauPUS].dparams_; } + double tauPUSParam(int ipar) const { return pnode_[tauPUS].dparams_.at(ipar); } + + l1t::LUT* tauIsolationLUT() { return &pnode_[tauIsolation].LUT_; } + + std::string tauCalibrationType() const { return pnode_[tauCalibration].type_; } + std::vector tauCalibrationParams() { return pnode_[tauCalibration].dparams_; } + l1t::LUT* tauCalibrationLUT() { return &pnode_[tauCalibration].LUT_; } + + l1t::LUT* tauEtToHFRingEtLUT() { return &pnode_[tauEtToHFRingEt].LUT_; } + + unsigned tauIsoAreaNrTowersEta()const{return taup_.isoAreaNrTowersEta_;} + unsigned tauIsoAreaNrTowersPhi()const{return taup_.isoAreaNrTowersPhi_;} + unsigned tauIsoVetoNrTowersPhi()const{return taup_.isoVetoNrTowersPhi_;} + + void setTauRegionMask(int mask) { + pnode_[tauPUS].iparams_.resize(1); + pnode_[tauPUS].iparams_[0] = mask; + } + void setTauLsb(double lsb) { taup_.lsb_ = lsb; } + void setTauSeedThreshold(double thresh) { taup_.seedThreshold_ = thresh; } + void setTauNeighbourThreshold(double thresh) { taup_.neighbourThreshold_ = thresh; } + void setTauMaxPtTauVeto(double limit) { taup_.maxPtTauVeto_ = limit; } + void setTauMinPtJetIsolationB(double limit) { taup_.minPtJetIsolationB_ = limit; } + void setTauMaxJetIsolationB(double limit) { taup_.maxJetIsolationB_ = limit; } + void setTauMaxJetIsolationA(double cutValue) { taup_.maxJetIsolationA_ = cutValue; } + void setIsoTauEtaMin(int value) { taup_.isoEtaMin_ = value; } + void setIsoTauEtaMax(int value) { taup_.isoEtaMax_ = value; } + void setTauPUSType(std::string type) { pnode_[tauPUS].type_ = type; } + void setTauIsolationLUT(const l1t::LUT & lut) { pnode_[tauIsolation].LUT_ = lut; } + + void setTauCalibrationType(std::string type) { pnode_[tauCalibration].type_ = type; } + void setTauIsoAreaNrTowersEta(unsigned iTauIsoAreaNrTowersEta){taup_.isoAreaNrTowersEta_=iTauIsoAreaNrTowersEta;} + void setTauIsoAreaNrTowersPhi(unsigned iTauIsoAreaNrTowersPhi){taup_.isoAreaNrTowersPhi_=iTauIsoAreaNrTowersPhi;} + void setTauIsoVetoNrTowersPhi(unsigned iTauIsoVetoNrTowersPhi){taup_.isoVetoNrTowersPhi_=iTauIsoVetoNrTowersPhi;} + + void setTauCalibrationParams(std::vector params) { pnode_[tauCalibration].dparams_ = params; } + void setTauCalibrationLUT(const l1t::LUT & lut) { pnode_[tauCalibration].LUT_ = lut; } + void setTauPUSParams(const std::vector & params) { pnode_[tauPUS].dparams_ = params; } + + void setTauEtToHFRingEtLUT(const l1t::LUT & lut) { pnode_[tauEtToHFRingEt].LUT_ = lut; } + + // jets + double jetLsb() const { return jetp_.lsb_; } + double jetSeedThreshold() const { return jetp_.seedThreshold_; } + double jetNeighbourThreshold() const { return jetp_.neighbourThreshold_; } + int jetRegionMask() const { + if (pnode_[jetPUS].version_ ==1) + return pnode_[jetPUS].iparams_[0]; + else + return 0; + } + std::string jetPUSType() const { return pnode_[jetPUS].type_; } + std::vector jetPUSParams() { return pnode_[jetPUS].dparams_; } + std::string jetCalibrationType() const { return pnode_[jetCalibration].type_; } + std::vector jetCalibrationParams() { return pnode_[jetCalibration].dparams_; } + l1t::LUT* jetCalibrationLUT() { return &pnode_[jetCalibration].LUT_; } + + void setJetLsb(double lsb) { jetp_.lsb_ = lsb; } + void setJetSeedThreshold(double thresh) { jetp_.seedThreshold_ = thresh; } + void setJetNeighbourThreshold(double thresh) { jetp_.neighbourThreshold_ = thresh; } + void setJetRegionMask(int mask) { + pnode_[jetPUS].iparams_.resize(1); + pnode_[jetPUS].iparams_[0] = mask; + } + void setJetPUSType(std::string type) { pnode_[jetPUS].type_ = type; } + void setJetPUSParams(std::vector params) { pnode_[jetPUS].dparams_ = params; } + void setJetCalibrationType(std::string type) { pnode_[jetCalibration].type_ = type; } + void setJetCalibrationParams(std::vector params) { pnode_[jetCalibration].dparams_ = params; } + void setJetCalibrationLUT(const l1t::LUT & lut) { pnode_[jetCalibration].LUT_ = lut; } + + // sums + double etSumLsb() const { return etSumLsb_; } + int etSumEtaMin(unsigned isum) const; + int etSumEtaMax(unsigned isum) const; + double etSumEtThreshold(unsigned isum) const; + + void setEtSumLsb(double lsb) { etSumLsb_ = lsb; } + void setEtSumEtaMin(unsigned isum, int eta); + void setEtSumEtaMax(unsigned isum, int eta); + void setEtSumEtThreshold(unsigned isum, double thresh); + + // HI centrality + int centralityRegionMask() const { + if(pnode_[hiCentrality].version_ == 1) + return pnode_[hiCentrality].iparams_[0] ; + else + return 0; + } + std::vector minimumBiasThresholds() const { + if(pnode_[hiCentrality].version_ == 1 && pnode_[hiCentrality].iparams_.size()==5) { + std::vector newVec; + for(int i = 0; i<4; i++) { + newVec.push_back(pnode_[hiCentrality].iparams_.at(i+1)); + } + return newVec; + } else { + std::vector newVec; + return newVec; + } + } + l1t::LUT * centralityLUT() { return &pnode_[hiCentrality].LUT_; } + void setCentralityRegionMask(int mask) { + pnode_[hiCentrality].iparams_.resize(5); + pnode_[hiCentrality].iparams_[0] = mask; + } + void setMinimumBiasThresholds(std::vector thresholds) { + pnode_[hiCentrality].iparams_.resize(5); + for(int i = 0; i<4; i++) { + pnode_[hiCentrality].iparams_[i+1] = thresholds.at(i); + } + } + void setCentralityLUT(const l1t::LUT & lut) { pnode_[hiCentrality].LUT_ = lut; } + + // HI Q2 + l1t::LUT * q2LUT() { return &pnode_[hiQ2].LUT_; } + void setQ2LUT(const l1t::LUT & lut) { pnode_[hiQ2].LUT_ = lut; } + + // HI parameters + + + + private: + L1CaloEtScale emScale_; + L1CaloEtScale jetScale_; + L1CaloEtScale HtMissScale_; + L1CaloEtScale HfRingScale_; + + }; +} + +#endif diff --git a/L1Trigger/L1TCalorimeter/interface/HardwareSortingMethods.h b/L1Trigger/L1TCalorimeter/interface/HardwareSortingMethods.h index 5a23f6f86c07d..9cacd4df2ff5a 100644 --- a/L1Trigger/L1TCalorimeter/interface/HardwareSortingMethods.h +++ b/L1Trigger/L1TCalorimeter/interface/HardwareSortingMethods.h @@ -25,6 +25,8 @@ namespace l1t { std::vector * output); unsigned int pack15bits(int pt, int eta, int phi); + unsigned int pack16bits(int pt, int eta, int phi); + unsigned int pack16bitsEgammaSpecial(int pt, int eta, int phi); } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/JetCalibrationMethods.h b/L1Trigger/L1TCalorimeter/interface/JetCalibrationMethods.h index a0f80022ea083..47b0f135db004 100644 --- a/L1Trigger/L1TCalorimeter/interface/JetCalibrationMethods.h +++ b/L1Trigger/L1TCalorimeter/interface/JetCalibrationMethods.h @@ -6,7 +6,7 @@ #ifndef JETCALIBRATIONMETHODS_H #define JETCALIBRATIONMETHODS_H -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "DataFormats/L1Trigger/interface/Jet.h" #include diff --git a/L1Trigger/L1TCalorimeter/interface/JetFinderMethods.h b/L1Trigger/L1TCalorimeter/interface/JetFinderMethods.h index 8dd3871bf656c..0ee288cdacf44 100644 --- a/L1Trigger/L1TCalorimeter/interface/JetFinderMethods.h +++ b/L1Trigger/L1TCalorimeter/interface/JetFinderMethods.h @@ -24,7 +24,7 @@ namespace l1t { std::vector * uncalibjets); void passThroughJets(const std::vector * regions, std::vector * uncalibjets); - void TwoByTwoFinder(const std::vector * regions, + void TwoByTwoFinder(const int, const int, const std::vector * regions, std::vector * uncalibjets); } diff --git a/L1Trigger/L1TCalorimeter/interface/L1GObject.h b/L1Trigger/L1TCalorimeter/interface/L1GObject.h index 9b2a2f8ec0273..bf5f3d6f757cc 100644 --- a/L1Trigger/L1TCalorimeter/interface/L1GObject.h +++ b/L1Trigger/L1TCalorimeter/interface/L1GObject.h @@ -2,11 +2,8 @@ #define L1GObject_h #include -using std::iostream; -using std::ostream; #include -using std::string; #include "DataFormats/Candidate/interface/LeafCandidate.h" #include "DataFormats/Math/interface/LorentzVector.h" @@ -30,10 +27,10 @@ class L1GObject : public reco::LeafCandidate L1GObject(unsigned int et, unsigned int eta, unsigned int phi) : myEt(et), myEta(eta), myPhi(phi), myName("L1GObject") {initialize();} - L1GObject(unsigned int et, unsigned int eta, unsigned int phi, string name) + L1GObject(unsigned int et, unsigned int eta, unsigned int phi, std::string name) : myEt(et), myEta(eta), myPhi(phi), myName(name) {initialize();} - L1GObject(unsigned int packedObject, string name = "L1GObject") { + L1GObject(unsigned int packedObject, std::string name = "L1GObject") { myEt = (packedObject & 0xFFFF0000) >> 16; myEta = (packedObject & 0x0000FF00) >> 8; myPhi = (packedObject & 0x000000FF); @@ -94,7 +91,7 @@ class L1GObject : public reco::LeafCandidate // Access functions - string name() const {return myName;} + std::string name() const {return myName;} bool empty() const {return false;} @@ -157,7 +154,7 @@ class L1GObject : public reco::LeafCandidate else return false; } - friend ostream& operator<<(ostream &os, const L1GObject& t) + friend std::ostream& operator<<(std::ostream &os, const L1GObject& t) { os << "L1GObject : Name = " << t.name() << "(Et, Eta, Phi) = (" @@ -173,7 +170,7 @@ class L1GObject : public reco::LeafCandidate void setEt(unsigned int et) {myEt = et;} void setEta(unsigned int eta) {myEta = eta;} void setPhi(unsigned int phi) {myPhi = phi;} - void setName(string name) {myName = name;} + void setName(std::string name) {myName = name;} void setLSB(double lsb) {myLSB = lsb;} void initialize() @@ -231,7 +228,7 @@ class L1GObject : public reco::LeafCandidate unsigned int myEt; unsigned int myEta; unsigned int myPhi; - string myName; + std::string myName; double myLSB; double etaValues[11]; diff --git a/L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h b/L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h index 5b0eeade55501..0cb915ef9ff5d 100644 --- a/L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h +++ b/L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h @@ -11,8 +11,7 @@ #include "DataFormats/L1TCalorimeter/interface/CaloRegion.h" #include "DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h" #include "DataFormats/L1TCalorimeter/interface/CaloEmCand.h" -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include @@ -20,16 +19,14 @@ namespace l1t { void HICaloRingSubtraction(const std::vector & regions, std::vector *subRegions, - std::vector regionPUSparams, - std::string regionPUSType); + CaloParamsHelper *params); void simpleHWSubtraction(const std::vector & regions, std::vector *subRegions); void RegionCorrection(const std::vector & regions, std::vector *subRegions, - std::vector regionPUSparams, - std::string regionPUSType); + CaloParamsHelper *params); } diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2EGammaAlgorithmImp.h b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2EGammaAlgorithmImp.h index 4f4afdbced141..e97030293d8f7 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2EGammaAlgorithmImp.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2EGammaAlgorithmImp.h @@ -19,21 +19,20 @@ #define L1TCALOSTAGE1EGAMMAALGORITHMIMP_H #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2EGammaAlgorithm.h" -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { class Stage1Layer2EGammaAlgorithmImpPP : public Stage1Layer2EGammaAlgorithm { public: - Stage1Layer2EGammaAlgorithmImpPP(CaloParamsStage1* params); + Stage1Layer2EGammaAlgorithmImpPP(CaloParamsHelper* params); virtual ~Stage1Layer2EGammaAlgorithmImpPP(); virtual void processEvent(const std::vector & EMCands, const std::vector & regions, const std::vector * jets, std::vector* egammas); private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; double Isolation(int ieta, int iphi, const std::vector & regions) const; double HoverE(int et, int ieta, int iphi, @@ -46,14 +45,14 @@ namespace l1t { class Stage1Layer2EGammaAlgorithmImpHI : public Stage1Layer2EGammaAlgorithm { public: - Stage1Layer2EGammaAlgorithmImpHI(CaloParamsStage1* params); + Stage1Layer2EGammaAlgorithmImpHI(CaloParamsHelper* params); virtual ~Stage1Layer2EGammaAlgorithmImpHI(); virtual void processEvent(const std::vector & EMCands, const std::vector & regions, const std::vector * jets, std::vector* egammas); private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; double Isolation(int ieta, int iphi, const std::vector & regions) const; double HoverE(int et, int ieta, int iphi, @@ -66,14 +65,14 @@ namespace l1t { class Stage1Layer2EGammaAlgorithmImpHW : public Stage1Layer2EGammaAlgorithm { public: - Stage1Layer2EGammaAlgorithmImpHW(CaloParamsStage1* params); + Stage1Layer2EGammaAlgorithmImpHW(CaloParamsHelper* params); virtual ~Stage1Layer2EGammaAlgorithmImpHW(); virtual void processEvent(const std::vector & EMCands, const std::vector & regions, const std::vector * jets, std::vector* egammas); private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; int AssociatedJetPt(int ieta, int iphi, const std::vector * jets) const; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2EtSumAlgorithmImp.h b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2EtSumAlgorithmImp.h index 69e49f76e47d9..69536060a9d0e 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2EtSumAlgorithmImp.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2EtSumAlgorithmImp.h @@ -19,7 +19,7 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2EtSumAlgorithm.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "L1Trigger/L1TCalorimeter/interface/CordicXilinx.h" #include #include @@ -29,7 +29,7 @@ namespace l1t { class Stage1Layer2EtSumAlgorithmImpPP : public Stage1Layer2EtSumAlgorithm { public: - Stage1Layer2EtSumAlgorithmImpPP(CaloParamsStage1* params); + Stage1Layer2EtSumAlgorithmImpPP(CaloParamsHelper* params); virtual ~Stage1Layer2EtSumAlgorithmImpPP(); virtual void processEvent(const std::vector & regions, const std::vector & EMCands, @@ -37,7 +37,7 @@ namespace l1t { std::vector * sums); private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; int DiJetPhi(const std::vector * jets) const; uint16_t MHToverHT(uint16_t,uint16_t) const; @@ -48,7 +48,7 @@ namespace l1t { class Stage1Layer2EtSumAlgorithmImpHW : public Stage1Layer2EtSumAlgorithm { public: - Stage1Layer2EtSumAlgorithmImpHW(CaloParamsStage1* params); + Stage1Layer2EtSumAlgorithmImpHW(CaloParamsHelper* params); virtual ~Stage1Layer2EtSumAlgorithmImpHW(); virtual void processEvent(const std::vector & regions, const std::vector & EMCands, @@ -56,7 +56,7 @@ namespace l1t { std::vector * sums); private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; int DiJetPhi(const std::vector * jets) const; uint16_t MHToverHT(uint16_t,uint16_t) const; @@ -85,15 +85,55 @@ namespace l1t { std::array sines; }; + class Stage1Layer2EtSumAlgorithmImpHI : public Stage1Layer2EtSumAlgorithm { + public: + Stage1Layer2EtSumAlgorithmImpHI(CaloParamsHelper* params); + virtual ~Stage1Layer2EtSumAlgorithmImpHI(); + virtual void processEvent(const std::vector & regions, + const std::vector & EMCands, + const std::vector * jets, + std::vector * sums); + + private: + CaloParamsHelper* const params_; + + int DiJetPhi(const std::vector * jets) const; + uint16_t MHToverHT(uint16_t,uint16_t) const; + + struct SimpleRegion { + int ieta; + int iphi; + int et; + }; + enum class ETSumType { + kHadronicSum, + kEmSum + }; + std::tuple doSumAndMET(const std::vector& regionEt, ETSumType sumType); + + // Converts 3Q16 fixed-point phase from CORDIC + // to 0-71 appropriately + int cordicToMETPhi(int phase); + // Array used in above function + std::array cordicPhiValues; + + CordicXilinx cordic{24, 19}; + + // for converting region et to x and y components + std::array cosines; + std::array sines; + }; + + /* class Stage1Layer2CentralityAlgorithm : public Stage1Layer2EtSumAlgorithm { */ /* public: */ - /* Stage1Layer2CentralityAlgorithm(CaloParamsStage1* params); */ + /* Stage1Layer2CentralityAlgorithm(CaloParamsHelper* params); */ /* virtual ~Stage1Layer2CentralityAlgorithm(); */ /* virtual void processEvent(const std::vector & regions, */ /* const std::vector & EMCands, */ /* std::vector * sums); */ /* private: */ - /* CaloParamsStage1* const params_; */ + /* CaloParamsHelper* const params_; */ /* }; */ } diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2FirmwareFactory.h b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2FirmwareFactory.h index a8b6c0cc9ca3e..e2e4e7bae76f3 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2FirmwareFactory.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2FirmwareFactory.h @@ -13,8 +13,7 @@ #include -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "FWCore/Framework/interface/Event.h" @@ -26,8 +25,8 @@ namespace l1t { public: typedef boost::shared_ptr ReturnType; - // ReturnType create(const FirmwareVersion & fwv /*,const CaloParamsStage1 & dbPars*/); - ReturnType create(const int fwv ,CaloParamsStage1* dbPars); + // ReturnType create(const FirmwareVersion & fwv /*,const CaloParamsHelper & dbPars*/); + ReturnType create(const int fwv ,CaloParamsHelper* dbPars); // (Why not make "create" a static member function? You could... // But this way allows you to add additional customizations to the diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFBitCountAlgorithmImp.h b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFBitCountAlgorithmImp.h index 80f4bc4a81ef7..27264b25d7efc 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFBitCountAlgorithmImp.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFBitCountAlgorithmImp.h @@ -19,22 +19,21 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFBitCountAlgorithm.h" -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { class Stage1Layer2HFMinimumBias : public Stage1Layer2HFBitCountAlgorithm { public: - Stage1Layer2HFMinimumBias(CaloParamsStage1* params); + Stage1Layer2HFMinimumBias(CaloParamsHelper* params); virtual ~Stage1Layer2HFMinimumBias(); virtual void processEvent(const std::vector & regions, const std::vector & EMCands, l1t::CaloSpare * spare); private: - CaloParamsStage1* params_; + CaloParamsHelper* params_; }; } diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFRingSumAlgorithmImp.h b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFRingSumAlgorithmImp.h index 6130876cc85de..6f2cd696ef624 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFRingSumAlgorithmImp.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFRingSumAlgorithmImp.h @@ -19,15 +19,14 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFRingSumAlgorithm.h" -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { class Stage1Layer2FlowAlgorithm : public Stage1Layer2HFRingSumAlgorithm { public: - Stage1Layer2FlowAlgorithm(CaloParamsStage1* params); + Stage1Layer2FlowAlgorithm(CaloParamsHelper* params); virtual ~Stage1Layer2FlowAlgorithm(); virtual void processEvent(const std::vector & regions, const std::vector & EMCands, @@ -35,14 +34,14 @@ namespace l1t { l1t::CaloSpare * spare); private: - CaloParamsStage1* params_; + CaloParamsHelper* params_; std::vector cosPhi; std::vector sinPhi; }; class Stage1Layer2CentralityAlgorithm : public Stage1Layer2HFRingSumAlgorithm { public: - Stage1Layer2CentralityAlgorithm(CaloParamsStage1* params); + Stage1Layer2CentralityAlgorithm(CaloParamsHelper* params); virtual ~Stage1Layer2CentralityAlgorithm(); virtual void processEvent(const std::vector & regions, const std::vector & EMCands, @@ -50,20 +49,20 @@ namespace l1t { l1t::CaloSpare * spare); private: - CaloParamsStage1 *params_; + CaloParamsHelper *params_; }; class Stage1Layer2DiTauAlgorithm : public Stage1Layer2HFRingSumAlgorithm { public: - Stage1Layer2DiTauAlgorithm(CaloParamsStage1* params); + Stage1Layer2DiTauAlgorithm(CaloParamsHelper* params); virtual ~Stage1Layer2DiTauAlgorithm(); virtual void processEvent(const std::vector & regions, const std::vector & EMCands, const std::vector * taus, l1t::CaloSpare * spare); private: - CaloParamsStage1* params_; + CaloParamsHelper* params_; }; } diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithmImp.h b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithmImp.h index 4ba10b1c21ca6..257d4db68aad1 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithmImp.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithmImp.h @@ -19,48 +19,47 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithm.h" #include "DataFormats/L1TCalorimeter/interface/CaloEmCand.h" -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { class Stage1Layer2JetAlgorithmImpHI : public Stage1Layer2JetAlgorithm { public: - Stage1Layer2JetAlgorithmImpHI(CaloParamsStage1* params); + Stage1Layer2JetAlgorithmImpHI(CaloParamsHelper* params); virtual ~Stage1Layer2JetAlgorithmImpHI(); virtual void processEvent(const std::vector & regions, const std::vector & EMCands, std::vector * jets, std::vector * preGtJets); private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; //double regionLSB_; }; class Stage1Layer2JetAlgorithmImpPP : public Stage1Layer2JetAlgorithm { public: - Stage1Layer2JetAlgorithmImpPP(CaloParamsStage1* params); + Stage1Layer2JetAlgorithmImpPP(CaloParamsHelper* params); virtual ~Stage1Layer2JetAlgorithmImpPP(); virtual void processEvent(const std::vector & regions, const std::vector & EMCands, std::vector * jets, std::vector * preGtJets); private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; //double regionLSB_; }; class Stage1Layer2JetAlgorithmImpSimpleHW : public Stage1Layer2JetAlgorithm { public: - Stage1Layer2JetAlgorithmImpSimpleHW(CaloParamsStage1* params); + Stage1Layer2JetAlgorithmImpSimpleHW(CaloParamsHelper* params); virtual ~Stage1Layer2JetAlgorithmImpSimpleHW(); virtual void processEvent(const std::vector & regions, const std::vector & EMCands, std::vector * jets, std::vector * preGtJets); private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; //double regionLSB_; }; } diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2MainProcessorFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2MainProcessorFirmware.h index da6fd2ca58aa5..a5f2fab02b7c9 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2MainProcessorFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2MainProcessorFirmware.h @@ -14,8 +14,7 @@ #define Stage1Layer2MainProcessorFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2MainProcessor.h" -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "Stage1Layer2EGammaAlgorithm.h" @@ -29,8 +28,8 @@ namespace l1t { class Stage1Layer2MainProcessorFirmwareImp1 : public Stage1Layer2MainProcessor { public: - //Stage1Layer2MainProcessorFirmwareImp1(const FirmwareVersion & fwv /*const CaloParamsStage1 & dbPars*/); - Stage1Layer2MainProcessorFirmwareImp1(const int fwv , CaloParamsStage1* dbPars); + //Stage1Layer2MainProcessorFirmwareImp1(const FirmwareVersion & fwv /*const CaloParamsHelper & dbPars*/); + Stage1Layer2MainProcessorFirmwareImp1(const int fwv , CaloParamsHelper* dbPars); virtual ~Stage1Layer2MainProcessorFirmwareImp1(); virtual void processEvent(const std::vector &, const std::vector &, @@ -45,7 +44,7 @@ namespace l1t { private: int m_fwv; - CaloParamsStage1* m_db; + CaloParamsHelper* m_db; Stage1Layer2EGammaAlgorithm* m_egAlgo; Stage1Layer2TauAlgorithm* m_tauAlgo; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2TauAlgorithmImp.h b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2TauAlgorithmImp.h index dd018da80d7e6..6c33c63556890 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2TauAlgorithmImp.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2TauAlgorithmImp.h @@ -3,8 +3,7 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2TauAlgorithm.h" #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithmImp.h" -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "L1Trigger/L1TCalorimeter/interface/Stage1TauIsolationLUT.h" @@ -15,7 +14,7 @@ namespace l1t { class Stage1Layer2SingleTrackHI : public Stage1Layer2TauAlgorithm { public: - Stage1Layer2SingleTrackHI(CaloParamsStage1* params); + Stage1Layer2SingleTrackHI(CaloParamsHelper* params); virtual ~Stage1Layer2SingleTrackHI(); virtual void processEvent(const std::vector & clusters, const std::vector & regions, @@ -23,13 +22,13 @@ namespace l1t { std::vector * taus); private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; }; class Stage1Layer2TauAlgorithmImpPP : public Stage1Layer2TauAlgorithm { public: - Stage1Layer2TauAlgorithmImpPP(CaloParamsStage1* params); + Stage1Layer2TauAlgorithmImpPP(CaloParamsHelper* params); virtual ~Stage1Layer2TauAlgorithmImpPP(); virtual void processEvent(const std::vector & EMCands, const std::vector & regions, @@ -38,7 +37,7 @@ namespace l1t { private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; string findNESW(int ieta, int iphi, int neta, int nphi) const; @@ -54,7 +53,7 @@ namespace l1t { class Stage1Layer2TauAlgorithmImpHW : public Stage1Layer2TauAlgorithm { public: - Stage1Layer2TauAlgorithmImpHW(CaloParamsStage1* params); + Stage1Layer2TauAlgorithmImpHW(CaloParamsHelper* params); virtual ~Stage1Layer2TauAlgorithmImpHW(); virtual void processEvent(const std::vector & EMCands, const std::vector & regions, @@ -63,8 +62,8 @@ namespace l1t { private: - CaloParamsStage1* const params_; - Stage1TauIsolationLUT* isoTauLut; + CaloParamsHelper* const params_; + Stage1TauIsolationLUT* isoTauLut; string findNESW(int ieta, int iphi, int neta, int nphi) const; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1TauIsolationLUT.h b/L1Trigger/L1TCalorimeter/interface/Stage1TauIsolationLUT.h index 4c8e910db9035..8c0b856d7a39e 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1TauIsolationLUT.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1TauIsolationLUT.h @@ -12,7 +12,7 @@ #include #include -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { @@ -23,14 +23,14 @@ namespace l1t { static const unsigned int nbits_data; // number of bits in the payload static const unsigned int lut_version; - Stage1TauIsolationLUT(CaloParamsStage1* params); + Stage1TauIsolationLUT(CaloParamsHelper* params); virtual ~Stage1TauIsolationLUT(); unsigned lutAddress(unsigned int, unsigned int) const; int lutPayload(unsigned int) const; private: - CaloParamsStage1* const params_; + CaloParamsHelper* const params_; //double tauMaxJetIsolationA; //double tauMaxJetIsolationB; //int tauMinPtJetIsolationB; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer1FirmwareFactory.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer1FirmwareFactory.h index 998ad9b4c3c8d..f5eff679dbcda 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer1FirmwareFactory.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer1FirmwareFactory.h @@ -15,7 +15,7 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2PreProcessor.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { @@ -24,7 +24,7 @@ namespace l1t { public: typedef boost::shared_ptr ReturnType; - ReturnType create(unsigned fwv, CaloParams* params); + ReturnType create(unsigned fwv, CaloParamsHelper* params); }; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2ClusterAlgorithmFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2ClusterAlgorithmFirmware.h index e2b02c4ef0061..525d127c872e8 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2ClusterAlgorithmFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2ClusterAlgorithmFirmware.h @@ -14,13 +14,13 @@ #define Stage2Layer2ClusterAlgorithmFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2ClusterAlgorithm.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" -namespace l1t +namespace l1t { // Imp1 is for v1 and v2 - class Stage2Layer2ClusterAlgorithmFirmwareImp1 : public Stage2Layer2ClusterAlgorithm + class Stage2Layer2ClusterAlgorithmFirmwareImp1 : public Stage2Layer2ClusterAlgorithm { public: enum ClusterInput @@ -30,7 +30,7 @@ namespace l1t EH = 2 }; - Stage2Layer2ClusterAlgorithmFirmwareImp1(CaloParams* params, ClusterInput clusterInput); + Stage2Layer2ClusterAlgorithmFirmwareImp1(CaloParamsHelper* params, ClusterInput clusterInput); virtual ~Stage2Layer2ClusterAlgorithmFirmwareImp1(); virtual void processEvent(const std::vector& towers, std::vector& clusters); @@ -45,7 +45,7 @@ namespace l1t int seedThreshold_; int clusterThreshold_; int hcalThreshold_; - CaloParams* params_; + CaloParamsHelper* params_; }; } diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxEGAlgoFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxEGAlgoFirmware.h index 8ff59c5b6d12b..ce1ffd6221bf4 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxEGAlgoFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxEGAlgoFirmware.h @@ -14,24 +14,24 @@ #define Stage2Layer2DemuxEGAlgoFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxEGAlgo.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // Imp1 is for v1 and v2 class Stage2Layer2DemuxEGAlgoFirmwareImp1 : public Stage2Layer2DemuxEGAlgo { public: - Stage2Layer2DemuxEGAlgoFirmwareImp1(CaloParams* params); //const CaloMainProcessorParams & dbPars); + Stage2Layer2DemuxEGAlgoFirmwareImp1(CaloParamsHelper* params); //const CaloMainProcessorParams & dbPars); virtual ~Stage2Layer2DemuxEGAlgoFirmwareImp1(); - virtual void processEvent(const std::vector & inputEgammas, + virtual void processEvent(const std::vector & inputEgammas, std::vector & outputEgammas); - + private: - CaloParams* params_; + CaloParamsHelper* params_; }; - + } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxJetAlgoFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxJetAlgoFirmware.h index 34819bc33ed1e..12b5e1b894892 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxJetAlgoFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxJetAlgoFirmware.h @@ -14,21 +14,21 @@ #define Stage2Layer2DemuxJetAlgoFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxJetAlgo.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // Imp1 is for v1 and v2 class Stage2Layer2DemuxJetAlgoFirmwareImp1 : public Stage2Layer2DemuxJetAlgo { public: - Stage2Layer2DemuxJetAlgoFirmwareImp1(CaloParams* params); + Stage2Layer2DemuxJetAlgoFirmwareImp1(CaloParamsHelper* params); virtual ~Stage2Layer2DemuxJetAlgoFirmwareImp1(); virtual void processEvent(const std::vector & inputJets, std::vector & outputJets); private: - CaloParams* const params_; + CaloParamsHelper* const params_; }; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxSumsAlgoFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxSumsAlgoFirmware.h index 317585ca91780..50820b292a463 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxSumsAlgoFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxSumsAlgoFirmware.h @@ -14,7 +14,7 @@ #define Stage2Layer2DemuxSumsAlgoFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxSumsAlgo.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "L1Trigger/L1TCalorimeter/interface/Cordic.h" namespace l1t { @@ -22,18 +22,18 @@ namespace l1t { // Imp1 is for v1 and v2 class Stage2Layer2DemuxSumsAlgoFirmwareImp1 : public Stage2Layer2DemuxSumsAlgo { public: - Stage2Layer2DemuxSumsAlgoFirmwareImp1(CaloParams* params); + Stage2Layer2DemuxSumsAlgoFirmwareImp1(CaloParamsHelper* params); virtual ~Stage2Layer2DemuxSumsAlgoFirmwareImp1(); virtual void processEvent(const std::vector & inputSums, std::vector & outputSums); private: - CaloParams* params_; + CaloParamsHelper* params_; Cordic cordic_; }; - + } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxTauAlgoFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxTauAlgoFirmware.h index c7e64948fb524..3ba9fc43c7805 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxTauAlgoFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxTauAlgoFirmware.h @@ -14,25 +14,25 @@ #define Stage2Layer2DemuxTauAlgoFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxTauAlgo.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // Imp1 is for v1 and v2 class Stage2Layer2DemuxTauAlgoFirmwareImp1 : public Stage2Layer2DemuxTauAlgo { public: - Stage2Layer2DemuxTauAlgoFirmwareImp1(CaloParams* params); //const CaloMainProcessorParams & dbPars); + Stage2Layer2DemuxTauAlgoFirmwareImp1(CaloParamsHelper* params); //const CaloMainProcessorParams & dbPars); virtual ~Stage2Layer2DemuxTauAlgoFirmwareImp1(); virtual void processEvent(const std::vector & inputTaus, std::vector & outputTaus); - + private: - + // parameters - CaloParams* params_; + CaloParamsHelper* params_; }; - + } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2EGammaAlgorithmFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2EGammaAlgorithmFirmware.h index 21c5de63bd142..1c40385954c7d 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2EGammaAlgorithmFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2EGammaAlgorithmFirmware.h @@ -14,16 +14,16 @@ #define Stage2Layer2EGammaAlgorithmFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2EGammaAlgorithm.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" -namespace l1t +namespace l1t { // Imp1 is for v1 and v2 - class Stage2Layer2EGammaAlgorithmFirmwareImp1 : public Stage2Layer2EGammaAlgorithm + class Stage2Layer2EGammaAlgorithmFirmwareImp1 : public Stage2Layer2EGammaAlgorithm { public: - Stage2Layer2EGammaAlgorithmFirmwareImp1(CaloParams* params); //const CaloMainProcessorParams & dbPars); + Stage2Layer2EGammaAlgorithmFirmwareImp1(CaloParamsHelper* params); //const CaloMainProcessorParams & dbPars); virtual ~Stage2Layer2EGammaAlgorithmFirmwareImp1(); virtual void processEvent(const std::vector& clusters, const std::vector& towers, std::vector& egammas); @@ -40,11 +40,11 @@ namespace l1t int isoCalEgHwFootPrint(const l1t::CaloCluster&,const std::vector&); unsigned isoLutIndex(int iEta,unsigned int nrTowers); // calibration - int calibratedPt(const l1t::CaloCluster& clus, int hwPt); + int calibratedPt(const l1t::CaloCluster& clus, int hwPt); unsigned int calibrationLutIndex(int iEta, int E, int shape); private: - CaloParams* params_; + CaloParamsHelper* params_; }; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2EtSumAlgorithmFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2EtSumAlgorithmFirmware.h index c2c4502a313a4..31a0b134890d9 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2EtSumAlgorithmFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2EtSumAlgorithmFirmware.h @@ -14,28 +14,28 @@ #define Stage2Layer2EtSumAlgorithmFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2EtSumAlgorithm.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // Imp1 is for v1 and v2 class Stage2Layer2EtSumAlgorithmFirmwareImp1 : public Stage2Layer2EtSumAlgorithm { public: - Stage2Layer2EtSumAlgorithmFirmwareImp1(CaloParams* params); + Stage2Layer2EtSumAlgorithmFirmwareImp1(CaloParamsHelper* params); virtual ~Stage2Layer2EtSumAlgorithmFirmwareImp1(); virtual void processEvent(const std::vector & towers, std::vector & sums); private: - CaloParams* params_; + CaloParamsHelper* params_; int32_t etSumEtThresholdHwEt_; - int32_t etSumEtThresholdHwMet_; + int32_t etSumEtThresholdHwMet_; int32_t etSumEtaMinEt_; int32_t etSumEtaMaxEt_; int32_t etSumEtaMinMet_; int32_t etSumEtaMaxMet_; }; - + } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2FirmwareFactory.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2FirmwareFactory.h index 6c7f969a94a0c..8d0ccb3d9dabd 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2FirmwareFactory.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2FirmwareFactory.h @@ -15,7 +15,7 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2MainProcessor.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" //#include "FWCore/Framework/interface/Event.h" @@ -26,7 +26,7 @@ namespace l1t { public: typedef boost::shared_ptr ReturnType; - ReturnType create(unsigned fwv, CaloParams* params); + ReturnType create(unsigned fwv, CaloParamsHelper* params); }; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetAlgorithmFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetAlgorithmFirmware.h index 35491ffa1aea5..0a789c111370d 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetAlgorithmFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetAlgorithmFirmware.h @@ -14,14 +14,14 @@ #define Stage2Layer2JetAlgorithmFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetAlgorithm.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // Imp1 is for v1 and v2 class Stage2Layer2JetAlgorithmFirmwareImp1 : public Stage2Layer2JetAlgorithm { public: - Stage2Layer2JetAlgorithmFirmwareImp1(CaloParams* params); + Stage2Layer2JetAlgorithmFirmwareImp1(CaloParamsHelper* params); virtual ~Stage2Layer2JetAlgorithmFirmwareImp1(); virtual void processEvent(const std::vector & towers, std::vector & jets, std::vector & alljets); @@ -33,15 +33,15 @@ namespace l1t { double calibFit(double*, double*); - int donutPUEstimate(int jetEta, int jetPhi, int size, + int donutPUEstimate(int jetEta, int jetPhi, int size, const std::vector & towers); - - int chunkyDonutPUEstimate(int jetEta, int jetPhi, int pos, + + int chunkyDonutPUEstimate(int jetEta, int jetPhi, int pos, const std::vector & towers); private: - CaloParams* const params_; + CaloParamsHelper* const params_; }; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetSumAlgorithmFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetSumAlgorithmFirmware.h index 457e4d9cc2fb5..de932fc4c7c4f 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetSumAlgorithmFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetSumAlgorithmFirmware.h @@ -14,21 +14,21 @@ #define Stage2Layer2JetSumAlgorithmFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetSumAlgorithm.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // Imp1 is for v1 and v2 class Stage2Layer2JetSumAlgorithmFirmwareImp1 : public Stage2Layer2JetSumAlgorithm { public: - Stage2Layer2JetSumAlgorithmFirmwareImp1(CaloParams* params); + Stage2Layer2JetSumAlgorithmFirmwareImp1(CaloParamsHelper* params); virtual ~Stage2Layer2JetSumAlgorithmFirmwareImp1(); virtual void processEvent(const std::vector & alljets, std::vector & htsums); private: - CaloParams* params_; + CaloParamsHelper* params_; int32_t etSumEtThresholdHwEt_; - int32_t etSumEtThresholdHwMet_; + int32_t etSumEtThresholdHwMet_; int32_t etSumEtaMinEt_; int32_t etSumEtaMaxEt_; int32_t etSumEtaMinMet_; diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2TauAlgorithmFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2TauAlgorithmFirmware.h index 582e61fc658d7..ef794fa56a008 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2Layer2TauAlgorithmFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2Layer2TauAlgorithmFirmware.h @@ -14,19 +14,19 @@ #define Stage2Layer2TauAlgorithmFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2TauAlgorithm.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // Imp1 is for v1 and v2 class Stage2Layer2TauAlgorithmFirmwareImp1 : public Stage2Layer2TauAlgorithm { public: - Stage2Layer2TauAlgorithmFirmwareImp1(CaloParams* params); //const CaloMainProcessorParams & dbPars); + Stage2Layer2TauAlgorithmFirmwareImp1(CaloParamsHelper* params); //const CaloMainProcessorParams & dbPars); virtual ~Stage2Layer2TauAlgorithmFirmwareImp1(); virtual void processEvent(const std::vector & clusters, const std::vector& towers, std::vector & taus); - + private: void merging(const std::vector& clusters, const std::vector& towers, std::vector& taus); @@ -37,19 +37,19 @@ namespace l1t { void loadCalibrationLuts(); double calibratedPt(int hwPtEm, int hwPtHad, int ieta); - + // parameters - CaloParams* params_; + CaloParamsHelper* params_; std::vector >coefficients_; float offsetBarrelEH_; float offsetBarrelH_; float offsetEndcapsEH_; float offsetEndcapsH_; - + unsigned int isoLutIndex(int Et, unsigned int nrTowers); }; - + } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2MainProcessor.h b/L1Trigger/L1TCalorimeter/interface/Stage2MainProcessor.h index aa1463f3b7687..6a04c8721be9e 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2MainProcessor.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2MainProcessor.h @@ -21,11 +21,9 @@ #include "DataFormats/L1Trigger/interface/Jet.h" #include "DataFormats/L1Trigger/interface/EtSum.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" - namespace l1t { - - class Stage2MainProcessor { + + class Stage2MainProcessor { public: virtual void processEvent(const std::vector & inTowers, std::vector & outTowers, @@ -37,12 +35,12 @@ namespace l1t { std::vector & egammas, std::vector & taus, std::vector & jets, - std::vector & etSums) = 0; + std::vector & etSums) = 0; virtual ~Stage2MainProcessor(){}; - }; - -} + }; + +} #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2MainProcessorFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2MainProcessorFirmware.h index 6e954d1b34f3d..6dde2db2bdcfe 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2MainProcessorFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2MainProcessorFirmware.h @@ -26,7 +26,7 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxJetAlgoFirmware.h" #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxSumsAlgoFirmware.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { @@ -34,7 +34,7 @@ namespace l1t { // first iteration class Stage2MainProcessorFirmwareImp1 : public Stage2MainProcessor { public: - Stage2MainProcessorFirmwareImp1(unsigned fwv, CaloParams* params); + Stage2MainProcessorFirmwareImp1(unsigned fwv, CaloParamsHelper* params); virtual ~Stage2MainProcessorFirmwareImp1(); @@ -55,8 +55,8 @@ namespace l1t { friend std::ostream& operator<<(std::ostream& o, const Stage2MainProcessorFirmwareImp1 & p) { p.print(o); return o; } private: - - CaloParams* m_params; + + CaloParamsHelper* m_params; Stage2TowerDecompressAlgorithm* m_towerAlgo; Stage2Layer2ClusterAlgorithm* m_egClusterAlgo; @@ -71,9 +71,9 @@ namespace l1t { Stage2Layer2DemuxTauAlgo* m_demuxTauAlgo; Stage2Layer2DemuxJetAlgo* m_demuxJetAlgo; Stage2Layer2DemuxSumsAlgo* m_demuxSumsAlgo; - + }; - + } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2PreProcessor.h b/L1Trigger/L1TCalorimeter/interface/Stage2PreProcessor.h index 9c232fb2686fd..82db08ef80937 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2PreProcessor.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2PreProcessor.h @@ -15,19 +15,17 @@ #include "DataFormats/L1TCalorimeter/interface/CaloTower.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" - namespace l1t { - - class Stage2PreProcessor { + + class Stage2PreProcessor { public: virtual void processEvent(const std::vector & inTowers, std::vector & outTowers) = 0; virtual ~Stage2PreProcessor(){}; - }; - -} + }; + +} #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2PreProcessorFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2PreProcessorFirmware.h index 2d239e048709e..7a4d1ddaa2d7a 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2PreProcessorFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2PreProcessorFirmware.h @@ -15,14 +15,14 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2PreProcessor.h" #include "L1Trigger/L1TCalorimeter/interface/Stage2TowerCompressAlgorithm.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // first iteration class Stage2PreProcessorFirmwareImp1 : public Stage2PreProcessor { public: - Stage2PreProcessorFirmwareImp1(unsigned fwv, CaloParams* params); + Stage2PreProcessorFirmwareImp1(unsigned fwv, CaloParamsHelper* params); virtual ~Stage2PreProcessorFirmwareImp1(); @@ -34,14 +34,14 @@ namespace l1t { friend std::ostream& operator<<(std::ostream& o, const Stage2PreProcessorFirmwareImp1 & p) { p.print(o); return o; } private: - + //FirmwareVersion const & m_fwv; - CaloParams* m_params; + CaloParamsHelper* m_params; Stage2TowerCompressAlgorithm* m_towerAlgo; - + }; - + } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2TowerCompressAlgorithmFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2TowerCompressAlgorithmFirmware.h index 15b5b307a1b38..dcecc3b810338 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2TowerCompressAlgorithmFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2TowerCompressAlgorithmFirmware.h @@ -14,22 +14,22 @@ #define Stage2TowerCompressAlgorithmFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2TowerCompressAlgorithm.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // Imp1 is for v1 and v2 class Stage2TowerCompressAlgorithmFirmwareImp1 : public Stage2TowerCompressAlgorithm { public: - Stage2TowerCompressAlgorithmFirmwareImp1(CaloParams* params); + Stage2TowerCompressAlgorithmFirmwareImp1(CaloParamsHelper* params); virtual ~Stage2TowerCompressAlgorithmFirmwareImp1(); virtual void processEvent(const std::vector & inTowers, std::vector & outTowers); private: - CaloParams* params_; + CaloParamsHelper* params_; }; - + } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/Stage2TowerDecompressAlgorithmFirmware.h b/L1Trigger/L1TCalorimeter/interface/Stage2TowerDecompressAlgorithmFirmware.h index e48717db61855..3bc9c974dc3b1 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage2TowerDecompressAlgorithmFirmware.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage2TowerDecompressAlgorithmFirmware.h @@ -14,22 +14,22 @@ #define Stage2TowerDecompressAlgorithmFirmware_H #include "L1Trigger/L1TCalorimeter/interface/Stage2TowerDecompressAlgorithm.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" namespace l1t { // Imp1 is for v1 and v2 class Stage2TowerDecompressAlgorithmFirmwareImp1 : public Stage2TowerDecompressAlgorithm { public: - Stage2TowerDecompressAlgorithmFirmwareImp1(CaloParams* params); + Stage2TowerDecompressAlgorithmFirmwareImp1(CaloParamsHelper* params); virtual ~Stage2TowerDecompressAlgorithmFirmwareImp1(); virtual void processEvent(const std::vector & inTowers, std::vector & outTowers); private: - CaloParams* params_; + CaloParamsHelper* params_; }; - + } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h b/L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h index 92df7bfa38ad2..46d34cbf02b34 100644 --- a/L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h +++ b/L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h @@ -12,42 +12,41 @@ #include "DataFormats/L1Trigger/interface/Tau.h" #include "DataFormats/L1Trigger/interface/Jet.h" #include "DataFormats/L1Trigger/interface/EtSum.h" -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include namespace l1t { - void calibrateAndRankJets(CaloParamsStage1 *params, + void calibrateAndRankJets(CaloParamsHelper *params, const std::vector * input, std::vector *output); - void calibrateAndRankTaus(CaloParamsStage1 *params, + void calibrateAndRankTaus(CaloParamsHelper *params, const std::vector * input, std::vector *output); - void JetToGtEtaScales(CaloParamsStage1 *params, + void JetToGtEtaScales(CaloParamsHelper *params, const std::vector * input, std::vector *output); - void JetToGtPtScales(CaloParamsStage1 *params, + void JetToGtPtScales(CaloParamsHelper *params, const std::vector * input, std::vector *output); - void EGammaToGtScales(CaloParamsStage1 *params, + void EGammaToGtScales(CaloParamsHelper *params, const std::vector * input, std::vector *output); - void TauToGtEtaScales(CaloParamsStage1 *params, + void TauToGtEtaScales(CaloParamsHelper *params, const std::vector * input, std::vector *output); - void TauToGtPtScales(CaloParamsStage1 *params, + void TauToGtPtScales(CaloParamsHelper *params, const std::vector * input, std::vector *output); - void EtSumToGtScales(CaloParamsStage1 *params, + void EtSumToGtScales(CaloParamsHelper *params, const std::vector * input, std::vector *output); diff --git a/L1Trigger/L1TCalorimeter/plugins/L1TCaloParamsESProducer.cc b/L1Trigger/L1TCalorimeter/plugins/L1TCaloParamsESProducer.cc index 4a89755ec6fd9..cf819de05b324 100644 --- a/L1Trigger/L1TCalorimeter/plugins/L1TCaloParamsESProducer.cc +++ b/L1Trigger/L1TCalorimeter/plugins/L1TCaloParamsESProducer.cc @@ -31,6 +31,7 @@ #include "FWCore/ParameterSet/interface/FileInPath.h" #include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "CondFormats/DataRecord/interface/L1TCaloParamsRcd.h" using namespace std; @@ -74,133 +75,139 @@ L1TCaloParamsESProducer::L1TCaloParamsESProducer(const edm::ParameterSet& conf) setWhatProduced(this); //setWhatProduced(this, conf.getParameter("label")); + CaloParamsHelper m_params_helper; + // towers - m_params.setTowerLsbH(conf.getParameter("towerLsbH")); - m_params.setTowerLsbE(conf.getParameter("towerLsbE")); - m_params.setTowerLsbSum(conf.getParameter("towerLsbSum")); - m_params.setTowerNBitsH(conf.getParameter("towerNBitsH")); - m_params.setTowerNBitsE(conf.getParameter("towerNBitsE")); - m_params.setTowerNBitsSum(conf.getParameter("towerNBitsSum")); - m_params.setTowerNBitsRatio(conf.getParameter("towerNBitsRatio")); - m_params.setTowerEncoding(conf.getParameter("towerEncoding")); + m_params_helper.setTowerLsbH(conf.getParameter("towerLsbH")); + m_params_helper.setTowerLsbE(conf.getParameter("towerLsbE")); + m_params_helper.setTowerLsbSum(conf.getParameter("towerLsbSum")); + m_params_helper.setTowerNBitsH(conf.getParameter("towerNBitsH")); + m_params_helper.setTowerNBitsE(conf.getParameter("towerNBitsE")); + m_params_helper.setTowerNBitsSum(conf.getParameter("towerNBitsSum")); + m_params_helper.setTowerNBitsRatio(conf.getParameter("towerNBitsRatio")); + m_params_helper.setTowerEncoding(conf.getParameter("towerEncoding")); // regions - m_params.setRegionLsb(conf.getParameter("regionLsb")); - m_params.setRegionPUSType(conf.getParameter("regionPUSType")); - m_params.setRegionPUSParams(conf.getParameter >("regionPUSParams")); + m_params_helper.setRegionLsb(conf.getParameter("regionLsb")); + m_params_helper.setRegionPUSType(conf.getParameter("regionPUSType")); + m_params_helper.setRegionPUSParams(conf.getParameter >("regionPUSParams")); // EG - m_params.setEgLsb(conf.getParameter("egLsb")); - m_params.setEgSeedThreshold(conf.getParameter("egSeedThreshold")); - m_params.setEgNeighbourThreshold(conf.getParameter("egNeighbourThreshold")); - m_params.setEgHcalThreshold(conf.getParameter("egHcalThreshold")); + m_params_helper.setEgEtaCut(conf.getParameter("egEtaCut")); + + m_params_helper.setEgLsb(conf.getParameter("egLsb")); + m_params_helper.setEgSeedThreshold(conf.getParameter("egSeedThreshold")); + m_params_helper.setEgNeighbourThreshold(conf.getParameter("egNeighbourThreshold")); + m_params_helper.setEgHcalThreshold(conf.getParameter("egHcalThreshold")); edm::FileInPath egTrimmingLUTFile = conf.getParameter("egTrimmingLUTFile"); std::ifstream egTrimmingLUTStream(egTrimmingLUTFile.fullPath()); std::shared_ptr egTrimmingLUT( new LUT(egTrimmingLUTStream) ); - m_params.setEgTrimmingLUT(*egTrimmingLUT); + m_params_helper.setEgTrimmingLUT(*egTrimmingLUT); - m_params.setEgMaxHcalEt(conf.getParameter("egMaxHcalEt")); - m_params.setEgMaxPtHOverE(conf.getParameter("egMaxPtHOverE")); - m_params.setEgMinPtJetIsolation(conf.getParameter("egMinPtJetIsolation")); - m_params.setEgMaxPtJetIsolation(conf.getParameter("egMaxPtJetIsolation")); - m_params.setEgMinPtHOverEIsolation(conf.getParameter("egMinPtHOverEIsolation")); - m_params.setEgMaxPtHOverEIsolation(conf.getParameter("egMaxPtHOverEIsolation")); + m_params_helper.setEgMaxHcalEt(conf.getParameter("egMaxHcalEt")); + m_params_helper.setEgMaxPtHOverE(conf.getParameter("egMaxPtHOverE")); + m_params_helper.setEgMinPtJetIsolation(conf.getParameter("egMinPtJetIsolation")); + m_params_helper.setEgMaxPtJetIsolation(conf.getParameter("egMaxPtJetIsolation")); + m_params_helper.setEgMinPtHOverEIsolation(conf.getParameter("egMinPtHOverEIsolation")); + m_params_helper.setEgMaxPtHOverEIsolation(conf.getParameter("egMaxPtHOverEIsolation")); edm::FileInPath egMaxHOverELUTFile = conf.getParameter("egMaxHOverELUTFile"); std::ifstream egMaxHOverELUTStream(egMaxHOverELUTFile.fullPath()); std::shared_ptr egMaxHOverELUT( new LUT(egMaxHOverELUTStream) ); - m_params.setEgMaxHOverELUT(*egMaxHOverELUT); + m_params_helper.setEgMaxHOverELUT(*egMaxHOverELUT); edm::FileInPath egCompressShapesLUTFile = conf.getParameter("egCompressShapesLUTFile"); std::ifstream egCompressShapesLUTStream(egCompressShapesLUTFile.fullPath()); std::shared_ptr egCompressShapesLUT( new LUT(egCompressShapesLUTStream) ); - m_params.setEgCompressShapesLUT(*egCompressShapesLUT); + m_params_helper.setEgCompressShapesLUT(*egCompressShapesLUT); edm::FileInPath egShapeIdLUTFile = conf.getParameter("egShapeIdLUTFile"); std::ifstream egShapeIdLUTStream(egShapeIdLUTFile.fullPath()); std::shared_ptr egShapeIdLUT( new LUT(egShapeIdLUTStream) ); - m_params.setEgShapeIdLUT(*egShapeIdLUT); + m_params_helper.setEgShapeIdLUT(*egShapeIdLUT); - m_params.setEgPUSType(conf.getParameter("egPUSType")); + m_params_helper.setEgPUSType(conf.getParameter("egPUSType")); edm::FileInPath egIsoLUTFile = conf.getParameter("egIsoLUTFile"); std::ifstream egIsoLUTStream(egIsoLUTFile.fullPath()); std::shared_ptr egIsoLUT( new LUT(egIsoLUTStream) ); - m_params.setEgIsolationLUT(*egIsoLUT); + m_params_helper.setEgIsolationLUT(*egIsoLUT); //edm::FileInPath egIsoLUTFileBarrel = conf.getParameter("egIsoLUTFileBarrel"); //std::ifstream egIsoLUTBarrelStream(egIsoLUTFileBarrel.fullPath()); //std::shared_ptr egIsoLUTBarrel( new LUT(egIsoLUTBarrelStream) ); - //m_params.setEgIsolationLUTBarrel(egIsoLUTBarrel); + //m_params_helper.setEgIsolationLUTBarrel(egIsoLUTBarrel); //edm::FileInPath egIsoLUTFileEndcaps = conf.getParameter("egIsoLUTFileEndcaps"); //std::ifstream egIsoLUTEndcapsStream(egIsoLUTFileEndcaps.fullPath()); //std::shared_ptr egIsoLUTEndcaps( new LUT(egIsoLUTEndcapsStream) ); - //m_params.setEgIsolationLUTEndcaps(egIsoLUTEndcaps); + //m_params_helper.setEgIsolationLUTEndcaps(egIsoLUTEndcaps); - m_params.setEgIsoAreaNrTowersEta(conf.getParameter("egIsoAreaNrTowersEta")); - m_params.setEgIsoAreaNrTowersPhi(conf.getParameter("egIsoAreaNrTowersPhi")); - m_params.setEgIsoVetoNrTowersPhi(conf.getParameter("egIsoVetoNrTowersPhi")); - //m_params.setEgIsoPUEstTowerGranularity(conf.getParameter("egIsoPUEstTowerGranularity")); - //m_params.setEgIsoMaxEtaAbsForTowerSum(conf.getParameter("egIsoMaxEtaAbsForTowerSum")); - //m_params.setEgIsoMaxEtaAbsForIsoSum(conf.getParameter("egIsoMaxEtaAbsForIsoSum")); - m_params.setEgPUSParams(conf.getParameter>("egPUSParams")); + m_params_helper.setEgIsoAreaNrTowersEta(conf.getParameter("egIsoAreaNrTowersEta")); + m_params_helper.setEgIsoAreaNrTowersPhi(conf.getParameter("egIsoAreaNrTowersPhi")); + m_params_helper.setEgIsoVetoNrTowersPhi(conf.getParameter("egIsoVetoNrTowersPhi")); + //m_params_helper.setEgIsoPUEstTowerGranularity(conf.getParameter("egIsoPUEstTowerGranularity")); + //m_params_helper.setEgIsoMaxEtaAbsForTowerSum(conf.getParameter("egIsoMaxEtaAbsForTowerSum")); + //m_params_helper.setEgIsoMaxEtaAbsForIsoSum(conf.getParameter("egIsoMaxEtaAbsForIsoSum")); + m_params_helper.setEgPUSParams(conf.getParameter>("egPUSParams")); edm::FileInPath egCalibrationLUTFile = conf.getParameter("egCalibrationLUTFile"); std::ifstream egCalibrationLUTStream(egCalibrationLUTFile.fullPath()); std::shared_ptr egCalibrationLUT( new LUT(egCalibrationLUTStream) ); - m_params.setEgCalibrationLUT(*egCalibrationLUT); + m_params_helper.setEgCalibrationLUT(*egCalibrationLUT); // tau - m_params.setTauLsb(conf.getParameter("tauLsb")); - m_params.setTauSeedThreshold(conf.getParameter("tauSeedThreshold")); - m_params.setTauNeighbourThreshold(conf.getParameter("tauNeighbourThreshold")); - m_params.setTauMaxPtTauVeto(conf.getParameter("tauMaxPtTauVeto")); - m_params.setTauMinPtJetIsolationB(conf.getParameter("tauMinPtJetIsolationB")); - m_params.setTauPUSType(conf.getParameter("tauPUSType")); - m_params.setTauMaxJetIsolationB(conf.getParameter("tauMaxJetIsolationB")); - m_params.setTauMaxJetIsolationA(conf.getParameter("tauMaxJetIsolationA")); - m_params.setTauIsoAreaNrTowersEta(conf.getParameter("tauIsoAreaNrTowersEta")); - m_params.setTauIsoAreaNrTowersPhi(conf.getParameter("tauIsoAreaNrTowersPhi")); - m_params.setTauIsoVetoNrTowersPhi(conf.getParameter("tauIsoVetoNrTowersPhi")); + m_params_helper.setTauRegionMask(conf.getParameter("tauRegionMask")); + m_params_helper.setTauLsb(conf.getParameter("tauLsb")); + m_params_helper.setTauSeedThreshold(conf.getParameter("tauSeedThreshold")); + m_params_helper.setTauNeighbourThreshold(conf.getParameter("tauNeighbourThreshold")); + m_params_helper.setTauMaxPtTauVeto(conf.getParameter("tauMaxPtTauVeto")); + m_params_helper.setTauMinPtJetIsolationB(conf.getParameter("tauMinPtJetIsolationB")); + m_params_helper.setTauPUSType(conf.getParameter("tauPUSType")); + m_params_helper.setTauMaxJetIsolationB(conf.getParameter("tauMaxJetIsolationB")); + m_params_helper.setTauMaxJetIsolationA(conf.getParameter("tauMaxJetIsolationA")); + m_params_helper.setTauIsoAreaNrTowersEta(conf.getParameter("tauIsoAreaNrTowersEta")); + m_params_helper.setTauIsoAreaNrTowersPhi(conf.getParameter("tauIsoAreaNrTowersPhi")); + m_params_helper.setTauIsoVetoNrTowersPhi(conf.getParameter("tauIsoVetoNrTowersPhi")); edm::FileInPath tauIsoLUTFile = conf.getParameter("tauIsoLUTFile"); std::ifstream tauIsoLUTStream(tauIsoLUTFile.fullPath()); std::shared_ptr tauIsoLUT( new LUT(tauIsoLUTStream) ); - m_params.setTauIsolationLUT(*tauIsoLUT); + m_params_helper.setTauIsolationLUT(*tauIsoLUT); edm::FileInPath tauCalibrationLUTFile = conf.getParameter("tauCalibrationLUTFile"); std::ifstream tauCalibrationLUTStream(tauCalibrationLUTFile.fullPath()); std::shared_ptr tauCalibrationLUT( new LUT(tauCalibrationLUTStream) ); - m_params.setTauCalibrationLUT(*tauCalibrationLUT); + m_params_helper.setTauCalibrationLUT(*tauCalibrationLUT); edm::FileInPath tauEtToHFRingEtLUTFile = conf.getParameter("tauEtToHFRingEtLUTFile"); std::ifstream tauEtToHFRingEtLUTStream(tauEtToHFRingEtLUTFile.fullPath()); std::shared_ptr tauEtToHFRingEtLUT( new LUT(tauEtToHFRingEtLUTStream) ); - m_params.setTauEtToHFRingEtLUT(*tauEtToHFRingEtLUT); + m_params_helper.setTauEtToHFRingEtLUT(*tauEtToHFRingEtLUT); - m_params.setIsoTauEtaMin(conf.getParameter ("isoTauEtaMin")); - m_params.setIsoTauEtaMax(conf.getParameter ("isoTauEtaMax")); + m_params_helper.setIsoTauEtaMin(conf.getParameter ("isoTauEtaMin")); + m_params_helper.setIsoTauEtaMax(conf.getParameter ("isoTauEtaMax")); - m_params.setTauPUSParams(conf.getParameter>("tauPUSParams")); + m_params_helper.setTauPUSParams(conf.getParameter>("tauPUSParams")); // jets - m_params.setJetLsb(conf.getParameter("jetLsb")); - m_params.setJetSeedThreshold(conf.getParameter("jetSeedThreshold")); - m_params.setJetNeighbourThreshold(conf.getParameter("jetNeighbourThreshold")); - m_params.setJetPUSType(conf.getParameter("jetPUSType")); - m_params.setJetCalibrationType(conf.getParameter("jetCalibrationType")); - m_params.setJetCalibrationParams(conf.getParameter >("jetCalibrationParams")); + m_params_helper.setJetLsb(conf.getParameter("jetLsb")); + m_params_helper.setJetSeedThreshold(conf.getParameter("jetSeedThreshold")); + m_params_helper.setJetNeighbourThreshold(conf.getParameter("jetNeighbourThreshold")); + m_params_helper.setJetRegionMask(conf.getParameter("jetRegionMask")); + m_params_helper.setJetPUSType(conf.getParameter("jetPUSType")); + m_params_helper.setJetCalibrationType(conf.getParameter("jetCalibrationType")); + m_params_helper.setJetCalibrationParams(conf.getParameter >("jetCalibrationParams")); edm::FileInPath jetCalibrationLUTFile = conf.getParameter("jetCalibrationLUTFile"); std::ifstream jetCalibrationLUTStream(jetCalibrationLUTFile.fullPath()); std::shared_ptr jetCalibrationLUT( new LUT(jetCalibrationLUTStream) ); - m_params.setJetCalibrationLUT(*jetCalibrationLUT); + m_params_helper.setJetCalibrationLUT(*jetCalibrationLUT); // sums - m_params.setEtSumLsb(conf.getParameter("etSumLsb")); + m_params_helper.setEtSumLsb(conf.getParameter("etSumLsb")); std::vector etSumEtaMin = conf.getParameter >("etSumEtaMin"); std::vector etSumEtaMax = conf.getParameter >("etSumEtaMax"); @@ -208,9 +215,9 @@ L1TCaloParamsESProducer::L1TCaloParamsESProducer(const edm::ParameterSet& conf) if ((etSumEtaMin.size() == etSumEtaMax.size()) && (etSumEtaMin.size() == etSumEtThreshold.size())) { for (unsigned i=0; i("centralityLUTFile"); std::ifstream centralityLUTStream(centralityLUTFile.fullPath()); std::shared_ptr centralityLUT( new LUT(centralityLUTStream) ); - m_params.setCentralityLUT(*centralityLUT); + m_params_helper.setCentralityLUT(*centralityLUT); + m_params_helper.setCentralityRegionMask(conf.getParameter("centralityRegionMask")); + std::vector minbiasThresholds = conf.getParameter >("minimumBiasThresholds"); + if(minbiasThresholds.size() == 4) { + m_params_helper.setMinimumBiasThresholds(minbiasThresholds); + } else { + edm::LogError("l1t|calo") << "Incorrect number of minimum bias thresholds set."; + } // HI Q2 trigger edm::FileInPath q2LUTFile = conf.getParameter("q2LUTFile"); std::ifstream q2LUTStream(q2LUTFile.fullPath()); std::shared_ptr q2LUT( new LUT(q2LUTStream) ); - m_params.setQ2LUT(*q2LUT); - + m_params_helper.setQ2LUT(*q2LUT); + m_params = (CaloParams)m_params_helper; } diff --git a/L1Trigger/L1TCalorimeter/plugins/L1TCaloStage1LutWriter.cc b/L1Trigger/L1TCalorimeter/plugins/L1TCaloStage1LutWriter.cc index 5af58b76adccf..0e2010cae5fa1 100644 --- a/L1Trigger/L1TCalorimeter/plugins/L1TCaloStage1LutWriter.cc +++ b/L1Trigger/L1TCalorimeter/plugins/L1TCaloStage1LutWriter.cc @@ -11,7 +11,7 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "CondFormats/L1TObjects/interface/CaloParams.h" #include "CondFormats/DataRecord/interface/L1TCaloParamsRcd.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "L1Trigger/L1TCalorimeter/interface/Stage1TauIsolationLUT.h" @@ -40,7 +40,7 @@ class L1TCaloStage1LutWriter : public edm::EDAnalyzer { virtual void analyze(const edm::Event&, const edm::EventSetup&) override; virtual void endJob() override; - CaloParamsStage1* m_params; + CaloParamsHelper* m_params; std::string m_conditionsLabel; Stage1TauIsolationLUT* isoTauLut; @@ -61,7 +61,7 @@ L1TCaloStage1LutWriter::L1TCaloStage1LutWriter(const edm::ParameterSet& iConfig) m_isoTauLutName = iConfig.getUntrackedParameter("isoTauLutName", "isoTauLut.txt" ); m_conditionsLabel = iConfig.getParameter("conditionsLabel"); - m_params = new CaloParamsStage1; + m_params = new CaloParamsHelper; isoTauLut = new Stage1TauIsolationLUT(m_params); }; @@ -77,7 +77,7 @@ L1TCaloStage1LutWriter::analyze(const edm::Event& iEvent, const edm::EventSetup& { edm::ESHandle paramsHandle; iSetup.get().get(m_conditionsLabel, paramsHandle); - m_params = new (m_params) CaloParamsStage1(*paramsHandle.product()); + m_params = new (m_params) CaloParamsHelper(*paramsHandle.product()); if (! m_params){ std::cout << "Could not retrieve params from Event Setup" << std::endl; return; diff --git a/L1Trigger/L1TCalorimeter/plugins/L1TCaloUpgradeToGCTConverter.cc b/L1Trigger/L1TCalorimeter/plugins/L1TCaloUpgradeToGCTConverter.cc index f649f8cb395fa..85e7b7cb6fd63 100644 --- a/L1Trigger/L1TCalorimeter/plugins/L1TCaloUpgradeToGCTConverter.cc +++ b/L1Trigger/L1TCalorimeter/plugins/L1TCaloUpgradeToGCTConverter.cc @@ -304,6 +304,9 @@ L1TCaloUpgradeToGCTConverter::produce(StreamID, Event& e, const EventSetup& es) bxCounter = 0; for(int itBX=HfCounts->getFirstBX(); itBX<=HfCounts->getLastBX(); ++itBX){ + if (itBXbxMax_) continue; + bxCounter++; L1GctHFBitCounts count = L1GctHFBitCounts::fromGctEmulator(itBX, 0, diff --git a/L1Trigger/L1TCalorimeter/plugins/L1TStage1Layer2Producer.cc b/L1Trigger/L1TCalorimeter/plugins/L1TStage1Layer2Producer.cc index 639872f34358a..3df2989f3f383 100644 --- a/L1Trigger/L1TCalorimeter/plugins/L1TStage1Layer2Producer.cc +++ b/L1Trigger/L1TCalorimeter/plugins/L1TStage1Layer2Producer.cc @@ -38,7 +38,7 @@ #include "CondFormats/L1TObjects/interface/CaloParams.h" #include "CondFormats/DataRecord/interface/L1TCaloParamsRcd.h" //#include "CondFormats/L1TObjects/interface/FirmwareVersion.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "L1Trigger/L1TCalorimeter/interface/CaloConfigHelper.h" #include "CondFormats/DataRecord/interface/L1TCaloConfigRcd.h" @@ -84,7 +84,7 @@ using namespace l1t; // ----------member data --------------------------- unsigned long long m_paramsCacheId; // Cache-ID from current parameters, to check if needs to be updated. unsigned long long m_configCacheId; // Cache-ID from current parameters, to check if needs to be updated. - CaloParamsStage1* m_params; + CaloParamsHelper* m_params; CaloConfigHelper m_config; @@ -122,7 +122,7 @@ using namespace l1t; m_conditionsLabel = iConfig.getParameter("conditionsLabel"); - m_params = new CaloParamsStage1; + m_params = new CaloParamsHelper; // set cache id to zero, will be set at first beginRun: m_paramsCacheId = 0; @@ -276,8 +276,8 @@ void L1TStage1Layer2Producer::beginRun(Run const&iR, EventSetup const&iE){ iE.get().get(m_conditionsLabel, paramsHandle); // replace our local copy of the parameters with a new one using placement new - m_params->~CaloParamsStage1(); - m_params = new (m_params) CaloParamsStage1(*paramsHandle.product()); + m_params->~CaloParamsHelper(); + m_params = new (m_params) CaloParamsHelper(*paramsHandle.product()); LogDebug("L1TDebug") << *m_params << std::endl; diff --git a/L1Trigger/L1TCalorimeter/plugins/L1TStage2Layer1Producer.cc b/L1Trigger/L1TCalorimeter/plugins/L1TStage2Layer1Producer.cc index 06f872d2e9994..5cbf9de97f3a4 100644 --- a/L1Trigger/L1TCalorimeter/plugins/L1TStage2Layer1Producer.cc +++ b/L1Trigger/L1TCalorimeter/plugins/L1TStage2Layer1Producer.cc @@ -2,7 +2,7 @@ // // Package: L1Trigger/skeleton // Class: skeleton -// +// /**\class skeleton skeleton.cc L1Trigger/skeleton/plugins/skeleton.cc Description: [one line class summary] @@ -36,7 +36,7 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer1FirmwareFactory.h" #include "L1Trigger/L1TCalorimeter/interface/Stage2PreProcessor.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "CondFormats/DataRecord/interface/L1TCaloParamsRcd.h" #include "CondFormats/L1TObjects/interface/L1CaloEcalScale.h" @@ -58,46 +58,46 @@ using namespace l1t; - - class L1TStage2Layer1Producer : public edm::EDProducer { + + class L1TStage2Layer1Producer : public edm::EDProducer { public: explicit L1TStage2Layer1Producer(const edm::ParameterSet& ps); ~L1TStage2Layer1Producer(); - + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) ; - + private: virtual void beginJob() override; virtual void produce(edm::Event&, const edm::EventSetup&) override; virtual void endJob() override; - + virtual void beginRun(edm::Run const&, edm::EventSetup const&) override; virtual void endRun(edm::Run const&, edm::EventSetup const&) override; //virtual void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; //virtual void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; - + // ----------member data --------------------------- int verbosity_; - + int bxFirst_, bxLast_; // bx range to process int ietaMin_, ietaMax_, iphiMin_, iphiMax_; - + std::vector ecalToken_; // this is a crazy way to store multi-BX info std::vector hcalToken_; // should be replaced with a BXVector< > or similar // parameters unsigned long long paramsCacheId_; unsigned fwv_; - CaloParams* params_; + CaloParamsHelper* params_; // the processor Stage2Layer1FirmwareFactory factory_; boost::shared_ptr processor_; - - }; - + + }; + L1TStage2Layer1Producer::L1TStage2Layer1Producer(const edm::ParameterSet& ps) : @@ -116,15 +116,15 @@ L1TStage2Layer1Producer::L1TStage2Layer1Producer(const edm::ParameterSet& ps) : // register what you produce produces (); - + // register what you consume and keep token for later access: for (int ibx=0; ibx(ps.getParameter("ecalToken")); hcalToken_[ibx] = consumes(ps.getParameter("hcalToken")); } - + // placeholder for the parameters - params_ = new CaloParams; + params_ = new CaloParamsHelper; // set firmware version from python config for now fwv_ = ps.getParameter("firmware"); @@ -132,7 +132,7 @@ L1TStage2Layer1Producer::L1TStage2Layer1Producer(const edm::ParameterSet& ps) : } L1TStage2Layer1Producer::~L1TStage2Layer1Producer() { - + delete params_; } @@ -149,7 +149,7 @@ L1TStage2Layer1Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet edm::ESHandle ecalScale; iSetup.get().get(ecalScale); // const L1CaloEcalScale* e = ecalScale.product(); - + edm::ESHandle hcalScale; iSetup.get().get(hcalScale); // const L1CaloHcalScale* h = hcalScale.product(); @@ -163,19 +163,19 @@ L1TStage2Layer1Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet // loop over crossings for (int bx = bxFirst_; bx < bxLast_+1; ++bx) { - + int ibx = bx-bxFirst_; - + edm::Handle ecalTPs; edm::Handle hcalTPs; - + iEvent.getByToken(hcalToken_[ibx], hcalTPs); iEvent.getByToken(ecalToken_[ibx], ecalTPs); // create input and output tower vectors for this BX std::auto_ptr< std::vector > localInTowers (new std::vector(CaloTools::caloTowerHashMax())); std::auto_ptr< std::vector > localOutTowers (new std::vector()); //this is later filled to the same size as localInTowers - + // loop over ECAL TPs EcalTrigPrimDigiCollection::const_iterator ecalItr; int nEcal=0; @@ -191,8 +191,8 @@ L1TStage2Layer1Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet double et = ecalScale->et( ietIn, abs(ieta), (ieta>0) ); int ietOut = floor( et / params_->towerLsbE() ); // int ietOutMask = (int) pow(2,params_->towerNBitsE())-1; - - if (ietIn>0) + + if (ietIn>0) LogDebug("L1TDebug") << " ECAL TP : " << ieta << ", " << iphi << ", " << ietIn << ", " << et << ", " << ietOut << std::endl; int itow = CaloTools::caloTowerHash(ieta, iphi); @@ -205,8 +205,8 @@ L1TStage2Layer1Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet HcalTrigPrimDigiCollection::const_iterator hcalItr; int nHcal=0; for (hcalItr=hcalTPs->begin(); hcalItr!=hcalTPs->end(); ++hcalItr, ++nHcal) { - - int ieta = hcalItr->id().ieta(); + + int ieta = hcalItr->id().ieta(); int iphi = hcalItr->id().iphi(); int ietIn = hcalItr->SOI_compressedEt(); @@ -217,7 +217,7 @@ L1TStage2Layer1Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet int ietOut = floor( et / params_->towerLsbH() ); // int ietOutMask = (int) pow(2,params_->towerNBitsH() )-1; - if (ietIn>0) + if (ietIn>0) LogDebug("L1TDebug") << " HCAL TP : " << ieta << ", " << iphi << ", " << ietIn << ", " << et << ", " << ietOut << std::endl; int itow = CaloTools::caloTowerHash(ieta, iphi); @@ -238,7 +238,7 @@ L1TStage2Layer1Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet // get ECAL/HCAL raw numbers int ietEcal = localInTowers->at(itow).hwEtEm(); int ietHcal = localInTowers->at(itow).hwEtHad(); - + // const LorentzVector& p4; int iet = ietEcal + ietHcal; // this is nonsense, temp solution! @@ -253,29 +253,29 @@ L1TStage2Layer1Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet // do the decompression processor_->processEvent(*localInTowers, *localOutTowers); - + // copy towers to output collection - for(std::vector::const_iterator tower = localOutTowers->begin(); - tower != localOutTowers->end(); - ++tower) + for(std::vector::const_iterator tower = localOutTowers->begin(); + tower != localOutTowers->end(); + ++tower) towersColl->push_back(ibx, *tower); LogDebug("L1TDebug") << "BX=" << ibx << ", N(Tower in)=" << localInTowers->size() << ", N(Tower out)=" << localOutTowers->size() << std::endl; } - + iEvent.put(towersColl); - + } // ------------ method called once each job just before starting event loop ------------ -void +void L1TStage2Layer1Producer::beginJob() { } // ------------ method called once each job just after ending the event loop ------------ -void +void L1TStage2Layer1Producer::endJob() { } @@ -289,8 +289,8 @@ L1TStage2Layer1Producer::beginRun(edm::Run const& iRun, edm::EventSetup const& i // parameters - unsigned long long id = iSetup.get().cacheIdentifier(); - + unsigned long long id = iSetup.get().cacheIdentifier(); + if (id != paramsCacheId_) { paramsCacheId_ = id; @@ -299,13 +299,13 @@ L1TStage2Layer1Producer::beginRun(edm::Run const& iRun, edm::EventSetup const& i iSetup.get().get(paramsHandle); // replace our local copy of the parameters with a new one using placement new - params_->~CaloParams(); - params_ = new (params_) CaloParams(*paramsHandle.product()); - + params_->~CaloParamsHelper(); + params_ = new (params_) CaloParamsHelper(*paramsHandle.product()); + LogDebug("L1TDebug") << *params_ << std::endl; if (! params_){ - edm::LogError("l1t|caloStage2") << "Could not retrieve params from Event Setup" << std::endl; + edm::LogError("l1t|caloStage2") << "Could not retrieve params from Event Setup" << std::endl; } } @@ -313,21 +313,21 @@ L1TStage2Layer1Producer::beginRun(edm::Run const& iRun, edm::EventSetup const& i // firmware if ( !processor_ ) { // in future, also check if the firmware cache ID has changed ! - + // m_fwv = ; // get new firmware version in future - + // Set the current algorithm version based on DB pars from database: processor_ = factory_.create(fwv_, params_); LogDebug("L1TDebug") << "Processor object : " << (processor_?1:0) << std::endl; - + if (! processor_) { // we complain here once per run edm::LogError("l1t|caloStage2") << "Layer 1 firmware could not be configured.\n"; } - + } - + } @@ -346,7 +346,7 @@ t&) { } */ - + // ------------ method called when ending the processing of a luminosity block ------------ /* void @@ -355,7 +355,7 @@ L1TStage2Layer1Producer::endLuminosityBlock(edm::LuminosityBlock const&, edm::Ev { } */ - + // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void L1TStage2Layer1Producer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { diff --git a/L1Trigger/L1TCalorimeter/plugins/L1TStage2Layer2Producer.cc b/L1Trigger/L1TCalorimeter/plugins/L1TStage2Layer2Producer.cc index 99cd13c2a8427..42a47215d8c7c 100644 --- a/L1Trigger/L1TCalorimeter/plugins/L1TStage2Layer2Producer.cc +++ b/L1Trigger/L1TCalorimeter/plugins/L1TStage2Layer2Producer.cc @@ -2,7 +2,7 @@ // // Package: L1Trigger/skeleton // Class: skeleton -// +// /**\class skeleton skeleton.cc L1Trigger/skeleton/plugins/skeleton.cc Description: [one line class summary] @@ -36,7 +36,7 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2FirmwareFactory.h" #include "L1Trigger/L1TCalorimeter/interface/Stage2MainProcessor.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include "CondFormats/DataRecord/interface/L1TCaloParamsRcd.h" #include "DataFormats/L1TCalorimeter/interface/CaloTower.h" @@ -50,25 +50,25 @@ // using namespace l1t; - - class L1TStage2Layer2Producer : public edm::EDProducer { + + class L1TStage2Layer2Producer : public edm::EDProducer { public: explicit L1TStage2Layer2Producer(const edm::ParameterSet& ps); ~L1TStage2Layer2Producer(); - + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) ; - + private: virtual void beginJob() override; virtual void produce(edm::Event&, const edm::EventSetup&) override; virtual void endJob() override; - + virtual void beginRun(edm::Run const&, edm::EventSetup const&) override; virtual void endRun(edm::Run const&, edm::EventSetup const&) override; //virtual void beginLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; //virtual void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override; - + // ----------member data --------------------------- // input token @@ -77,14 +77,14 @@ using namespace l1t; // parameters unsigned long long m_paramsCacheId; unsigned m_fwv; - CaloParams* m_params; + CaloParamsHelper* m_params; // the processor Stage2Layer2FirmwareFactory m_factory; boost::shared_ptr m_processor; - - }; - + + }; + L1TStage2Layer2Producer::L1TStage2Layer2Producer(const edm::ParameterSet& ps) { @@ -100,20 +100,20 @@ L1TStage2Layer2Producer::L1TStage2Layer2Producer(const edm::ParameterSet& ps) { produces (); produces (); produces (); - + // register what you consume and keep token for later access: m_towerToken = consumes(ps.getParameter("towerToken")); - + // placeholder for the parameters - m_params = new CaloParams; + m_params = new CaloParamsHelper; // set firmware version from python config for now m_fwv = ps.getParameter("firmware"); - + } L1TStage2Layer2Producer::~L1TStage2Layer2Producer() { - + delete m_params; } @@ -123,19 +123,19 @@ void L1TStage2Layer2Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { using namespace edm; - + LogDebug("l1t|stage 2") << "L1TStage2Layer2Producer::produce function called..." << std::endl; - - + + //inputs Handle< BXVector > towers; iEvent.getByToken(m_towerToken,towers); - + int bxFirst = towers->getFirstBX(); int bxLast = towers->getLastBX(); LogDebug("L1TDebug") << "First BX=" << bxFirst << ", last BX=" << bxLast << std::endl; - + //outputs std::auto_ptr outTowers (new CaloTowerBxCollection(0, bxFirst, bxLast)); std::auto_ptr clusters (new CaloClusterBxCollection(0, bxFirst, bxLast)); @@ -147,7 +147,7 @@ L1TStage2Layer2Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet std::auto_ptr taus (new TauBxCollection(0, bxFirst, bxLast)); std::auto_ptr jets (new JetBxCollection(0, bxFirst, bxLast)); std::auto_ptr etsums (new EtSumBxCollection(0, bxFirst, bxLast)); - + // loop over BX for(int ibx = bxFirst; ibx < bxLast+1; ++ibx) { std::auto_ptr< std::vector > localTowers (new std::vector); @@ -161,7 +161,7 @@ L1TStage2Layer2Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet std::auto_ptr< std::vector > localTaus (new std::vector); std::auto_ptr< std::vector > localJets (new std::vector); std::auto_ptr< std::vector > localEtSums (new std::vector); - + LogDebug("L1TDebug") << "BX=" << ibx << ", N(Towers)=" << towers->size(ibx) << std::endl; for(std::vector::const_iterator tower = towers->begin(ibx); @@ -170,20 +170,20 @@ L1TStage2Layer2Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet localTowers->push_back(*tower); } - LogDebug("L1TDebug") << "BX=" << ibx << ", N(Towers)=" << localTowers->size() << std::endl; + LogDebug("L1TDebug") << "BX=" << ibx << ", N(Towers)=" << localTowers->size() << std::endl; m_processor->processEvent(*localTowers, - *localOutTowers, - *localClusters, - *localMPEGammas, + *localOutTowers, + *localClusters, + *localMPEGammas, *localMPTaus, *localMPJets, *localMPEtSums, - *localEGammas, + *localEGammas, *localTaus, *localJets, *localEtSums); - + for(std::vector::const_iterator tow = localOutTowers->begin(); tow != localOutTowers->end(); ++tow) outTowers->push_back(ibx, *tow); for(std::vector::const_iterator clus = localClusters->begin(); clus != localClusters->end(); ++clus) clusters->push_back(ibx, *clus); for(std::vector::const_iterator eg = localMPEGammas->begin(); eg != localMPEGammas->end(); ++eg) mpegammas->push_back(ibx, *eg); @@ -196,10 +196,10 @@ L1TStage2Layer2Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet for(std::vector::const_iterator etsum = localEtSums->begin(); etsum != localEtSums->end(); ++etsum) etsums->push_back(ibx, *etsum); - LogDebug("L1TDebug") << "BX=" << ibx << ", N(Cluster)=" << localClusters->size() << ", N(EG)=" << localEGammas->size() << ", N(Tau)=" << localTaus->size() << ", N(Jet)=" << localJets->size() << ", N(Sums)=" << localEtSums->size() << std::endl; + LogDebug("L1TDebug") << "BX=" << ibx << ", N(Cluster)=" << localClusters->size() << ", N(EG)=" << localEGammas->size() << ", N(Tau)=" << localTaus->size() << ", N(Jet)=" << localJets->size() << ", N(Sums)=" << localEtSums->size() << std::endl; } - + iEvent.put(outTowers, "MP"); iEvent.put(clusters, "MP"); iEvent.put(mpegammas, "MP"); @@ -210,17 +210,17 @@ L1TStage2Layer2Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSet iEvent.put(taus); iEvent.put(jets); iEvent.put(etsums); - + } // ------------ method called once each job just before starting event loop ------------ -void +void L1TStage2Layer2Producer::beginJob() { } // ------------ method called once each job just after ending the event loop ------------ -void +void L1TStage2Layer2Producer::endJob() { } @@ -234,8 +234,8 @@ L1TStage2Layer2Producer::beginRun(edm::Run const& iRun, edm::EventSetup const& i // parameters - unsigned long long id = iSetup.get().cacheIdentifier(); - + unsigned long long id = iSetup.get().cacheIdentifier(); + if (id != m_paramsCacheId) { m_paramsCacheId = id; @@ -244,13 +244,13 @@ L1TStage2Layer2Producer::beginRun(edm::Run const& iRun, edm::EventSetup const& i iSetup.get().get(paramsHandle); // replace our local copy of the parameters with a new one using placement new - m_params->~CaloParams(); - m_params = new (m_params) CaloParams(*paramsHandle.product()); - + m_params->~CaloParamsHelper(); + m_params = new (m_params) CaloParamsHelper(*paramsHandle.product()); + LogDebug("L1TDebug") << *m_params << std::endl; if (! m_params){ - edm::LogError("l1t|caloStage2") << "Could not retrieve params from Event Setup" << std::endl; + edm::LogError("l1t|caloStage2") << "Could not retrieve params from Event Setup" << std::endl; } } @@ -258,21 +258,21 @@ L1TStage2Layer2Producer::beginRun(edm::Run const& iRun, edm::EventSetup const& i // firmware if ( !m_processor ) { // in future, also check if the firmware cache ID has changed ! - + // m_fwv = ; // get new firmware version in future - + // Set the current algorithm version based on DB pars from database: m_processor = m_factory.create(m_fwv, m_params); - + if (! m_processor) { // we complain here once per run edm::LogError("l1t|caloStage2") << "Firmware could not be configured.\n"; } - + LogDebug("L1TDebug") << "Processor object : " << (m_processor?1:0) << std::endl; - + } - + } @@ -291,7 +291,7 @@ t&) { } */ - + // ------------ method called when ending the processing of a luminosity block ------------ /* void @@ -300,7 +300,7 @@ L1TStage2Layer2Producer::endLuminosityBlock(edm::LuminosityBlock const&, edm::Ev { } */ - + // ------------ method fills 'descriptions' with the allowed parameters for the module ------------ void L1TStage2Layer2Producer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { diff --git a/L1Trigger/L1TCalorimeter/python/L1TCaloStage1_HIFromRaw_cff.py b/L1Trigger/L1TCalorimeter/python/L1TCaloStage1_HIFromRaw_cff.py index 267183d4922b7..1e9685f6be133 100644 --- a/L1Trigger/L1TCalorimeter/python/L1TCaloStage1_HIFromRaw_cff.py +++ b/L1Trigger/L1TCalorimeter/python/L1TCaloStage1_HIFromRaw_cff.py @@ -9,9 +9,7 @@ RCTConfigProducers.hMinForHoECut = cms.double(999) RCTConfigProducers.eMinForFGCut = cms.double(999) -from L1Trigger.L1TCalorimeter.caloStage1Params_cfi import * -caloStage1Params.jetSeedThreshold = cms.double(0.) -caloStage1Params.regionPUSType = cms.string("zeroWall") +from L1Trigger.L1TCalorimeter.caloStage1Params_HI_cfi import * from Configuration.StandardSequences.RawToDigi_Repacked_cff import ecalDigis, hcalDigis diff --git a/L1Trigger/L1TCalorimeter/python/L1TCaloStage1_PPFromRaw_cff.py b/L1Trigger/L1TCalorimeter/python/L1TCaloStage1_PPFromRaw_cff.py index e6c53981c0348..4f910cad344dc 100644 --- a/L1Trigger/L1TCalorimeter/python/L1TCaloStage1_PPFromRaw_cff.py +++ b/L1Trigger/L1TCalorimeter/python/L1TCaloStage1_PPFromRaw_cff.py @@ -1,6 +1,6 @@ import FWCore.ParameterSet.Config as cms -from L1Trigger.L1TCalorimeter.caloStage1Params_cfi import * +#from L1Trigger.L1TCalorimeter.caloStage1Params_cfi import * # HCAL TP hack from L1Trigger.L1TCalorimeter.L1TRerunHCALTP_FromRaw_cff import * diff --git a/L1Trigger/L1TCalorimeter/python/caloParams_cfi.py b/L1Trigger/L1TCalorimeter/python/caloParams_cfi.py index 2baf228965fcf..47a777f7f2268 100644 --- a/L1Trigger/L1TCalorimeter/python/caloParams_cfi.py +++ b/L1Trigger/L1TCalorimeter/python/caloParams_cfi.py @@ -23,9 +23,11 @@ # regions regionLsb = cms.double(0.5), regionPUSType = cms.string("None"), + regionPUSVersion = cms.int32(0), regionPUSParams = cms.vdouble(), # EG + egEtaCut = cms.int32(0), egLsb = cms.double(0.5), egSeedThreshold = cms.double(2.), egNeighbourThreshold = cms.double(1.), @@ -54,6 +56,7 @@ egIsoMaxEtaAbsForIsoSum = cms.uint32(27), # Tau + tauRegionMask = cms.int32(0), tauLsb = cms.double(0.5), tauSeedThreshold = cms.double(7.), tauNeighbourThreshold = cms.double(0.), @@ -74,6 +77,7 @@ tauPUSParams = cms.vdouble(1,4,27), # jets + jetRegionMask = cms.int32(0), jetLsb = cms.double(0.5), jetSeedThreshold = cms.double(0.), jetNeighbourThreshold = cms.double(0.), @@ -90,6 +94,9 @@ etSumEtThreshold = cms.vdouble(0., 0., 0., 0.), # HI + centralityNodeVersion = cms.int32(1), + centralityRegionMask = cms.int32(0), + minimumBiasThresholds = cms.vint32(0, 0, 0, 0), centralityLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/centralityLUT_stage1.txt"), q2LUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/q2LUT_stage1.txt") diff --git a/L1Trigger/L1TCalorimeter/python/caloStage1Params_Deprecated_cfi.py b/L1Trigger/L1TCalorimeter/python/caloStage1Params_Deprecated_cfi.py new file mode 100644 index 0000000000000..8f189b95e196a --- /dev/null +++ b/L1Trigger/L1TCalorimeter/python/caloStage1Params_Deprecated_cfi.py @@ -0,0 +1,64 @@ +import FWCore.ParameterSet.Config as cms + +from L1Trigger.L1TCalorimeter.caloStage1RegionSF_cfi import * +from L1Trigger.L1TCalorimeter.caloStage1JetSF_cfi import * + +from L1Trigger.L1TCalorimeter.caloParams_cfi import caloParamsSource +import L1Trigger.L1TCalorimeter.caloParams_cfi +#caloStage1ParamsSource = L1Trigger.L1TCalorimeter.caloParams_cfi.caloParamsSource.clone() +caloStage1Params = L1Trigger.L1TCalorimeter.caloParams_cfi.caloParams.clone() + +caloStage1Params.regionPUSType = cms.string("PUM0") #"None" for no PU subtraction, "PUM0", "HICaloRingSub" +caloStage1Params.regionPUSParams = regionSubtraction_PU40_MC13TeV + +# EG +caloStage1Params.egLsb = cms.double(1.) +caloStage1Params.egSeedThreshold = cms.double(0.) + +caloStage1Params.egMinPtJetIsolation = cms.int32(25) +caloStage1Params.egMaxPtJetIsolation = cms.int32(63) +caloStage1Params.egMinPtHOverEIsolation = cms.int32(1) +caloStage1Params.egMaxPtHOverEIsolation = cms.int32(40) + +caloStage1Params.egPUSType = cms.string("None") +caloStage1Params.egPUSParams = cms.vdouble() + +## EG Isolation LUT +## caloStage1Params.egIsoLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/egIsoLUT_stage1.txt") +caloStage1Params.egIsoLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/egIsoLUT_stage1_isolEB0.30_isolEE0.50_combined.txt") +#caloStage1Params.egIsoLUTFileBarrel = cms.FileInPath("L1Trigger/L1TCalorimeter/data/egIsoLUT_stage1_isol0.30.txt") +#caloStage1Params.egIsoLUTFileEndcaps = cms.FileInPath("L1Trigger/L1TCalorimeter/data/egIsoLUT_stage1_isol0.50.txt") + +# Tau +caloStage1Params.tauSeedThreshold = cms.double(7.) +caloStage1Params.tauNeighbourThreshold = cms.double(0.) +#Tau parameters below are only used for setting tau isolation flag +caloStage1Params.tauMaxPtTauVeto = cms.double(64.) +caloStage1Params.tauMinPtJetIsolationB = cms.double(192.) +caloStage1Params.tauMaxJetIsolationB = cms.double(100.) +caloStage1Params.tauMaxJetIsolationA = cms.double(0.1) +caloStage1Params.tauIsoLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/tauIsoLUT_stage1_isolA0.10_isolB100.00_ch_switchToIsoBPt192.00_j8t8.txt") +## caloStage1Params.tauCalibrationLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/tauCalibrationLUT_stage1.txt") +caloStage1Params.tauCalibrationLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/tauL1Calib_LUT.txt") +caloStage1Params.tauEtToHFRingEtLUTFile= cms.FileInPath("L1Trigger/L1TCalorimeter/data/tauHwEtToHFRingScale_LUT.txt") +caloStage1Params.isoTauEtaMin = cms.int32(5) +caloStage1Params.isoTauEtaMax = cms.int32(16) +# jets +caloStage1Params.jetLsb = cms.double(0.5) +caloStage1Params.jetSeedThreshold = cms.double(5.) +caloStage1Params.jetNeighbourThreshold = cms.double(0.) +caloStage1Params.jetCalibrationType = cms.string("Stage1JEC") +caloStage1Params.jetCalibrationParams = jetSF_8TeV_data +## caloStage1Params.jetCalibrationLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/jetCalibrationLUT_stage1_prelim.txt") +caloStage1Params.jetCalibrationLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/jetCalibrationLUT_symmetric_0is0.txt") + +# sums +caloStage1Params.etSumLsb = cms.double(0.5) +caloStage1Params.etSumEtaMin = cms.vint32(4, 4) #ET, HT +caloStage1Params.etSumEtaMax = cms.vint32(17, 17) #ET, HT +caloStage1Params.etSumEtThreshold = cms.vdouble(0., 7.) #ET, HT + +# HI +caloStage1Params.minimumBiasThresholds = cms.vint32(3,3,6,6) +caloStage1Params.centralityLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/centrality_extended_LUT_preRun.txt") +caloStage1Params.q2LUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/q2LUT_stage1.txt") diff --git a/L1Trigger/L1TCalorimeter/python/caloStage1Params_HI_cfi.py b/L1Trigger/L1TCalorimeter/python/caloStage1Params_HI_cfi.py new file mode 100644 index 0000000000000..601a38d9926a7 --- /dev/null +++ b/L1Trigger/L1TCalorimeter/python/caloStage1Params_HI_cfi.py @@ -0,0 +1,63 @@ +import FWCore.ParameterSet.Config as cms + +from L1Trigger.L1TCalorimeter.caloStage1RegionSF_cfi import * +from L1Trigger.L1TCalorimeter.caloStage1JetSF_cfi import * + +from L1Trigger.L1TCalorimeter.caloParams_cfi import caloParamsSource +import L1Trigger.L1TCalorimeter.caloParams_cfi +#caloStage1ParamsSource = L1Trigger.L1TCalorimeter.caloParams_cfi.caloParamsSource.clone() +caloStage1Params = L1Trigger.L1TCalorimeter.caloParams_cfi.caloParams.clone() + +caloStage1Params.regionPUSType = cms.string("zeroWall") #"None" for no PU subtraction, "PUM0", "HICaloRingSub" +caloStage1Params.regionPUSParams = regionSubtraction_PU40_MC13TeV + +# EG +caloStage1Params.egLsb = cms.double(1.) +caloStage1Params.egSeedThreshold = cms.double(0.) + +caloStage1Params.egMinPtJetIsolation = cms.int32(25) +caloStage1Params.egMaxPtJetIsolation = cms.int32(63) +caloStage1Params.egMinPtHOverEIsolation = cms.int32(1) +caloStage1Params.egMaxPtHOverEIsolation = cms.int32(40) + +caloStage1Params.egPUSType = cms.string("None") +caloStage1Params.egPUSParams = cms.vdouble() + +## EG Isolation LUT +## caloStage1Params.egIsoLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/egIsoLUT_stage1.txt") +caloStage1Params.egIsoLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/egIsoLUT_stage1_isolEB0.30_isolEE0.50_combined.txt") +#caloStage1Params.egIsoLUTFileBarrel = cms.FileInPath("L1Trigger/L1TCalorimeter/data/egIsoLUT_stage1_isol0.30.txt") +#caloStage1Params.egIsoLUTFileEndcaps = cms.FileInPath("L1Trigger/L1TCalorimeter/data/egIsoLUT_stage1_isol0.50.txt") + +# Tau +caloStage1Params.tauSeedThreshold = cms.double(7.) +caloStage1Params.tauNeighbourThreshold = cms.double(0.) +#Tau parameters below are only used for setting tau isolation flag +caloStage1Params.tauMaxPtTauVeto = cms.double(64.) +caloStage1Params.tauMinPtJetIsolationB = cms.double(192.) +caloStage1Params.tauMaxJetIsolationB = cms.double(100.) +caloStage1Params.tauMaxJetIsolationA = cms.double(0.1) +caloStage1Params.tauIsoLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/tauIsoLUT_stage1_isolA0.10_isolB100.00_ch_switchToIsoBPt192.00_j8t8.txt") +## caloStage1Params.tauCalibrationLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/tauCalibrationLUT_stage1.txt") +caloStage1Params.tauCalibrationLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/tauL1Calib_LUT.txt") +caloStage1Params.tauEtToHFRingEtLUTFile= cms.FileInPath("L1Trigger/L1TCalorimeter/data/tauHwEtToHFRingScale_LUT.txt") +caloStage1Params.isoTauEtaMin = cms.int32(5) +caloStage1Params.isoTauEtaMax = cms.int32(16) +# jets +caloStage1Params.jetLsb = cms.double(0.5) +caloStage1Params.jetSeedThreshold = cms.double(0.) +caloStage1Params.jetNeighbourThreshold = cms.double(0.) +caloStage1Params.jetCalibrationType = cms.string("Stage1JEC") +caloStage1Params.jetCalibrationParams = jetSF_8TeV_data +## caloStage1Params.jetCalibrationLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/jetCalibrationLUT_stage1_prelim.txt") +caloStage1Params.jetCalibrationLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/jetCalibrationLUT_symmetric_0is0.txt") + +# sums +caloStage1Params.etSumLsb = cms.double(0.5) +caloStage1Params.etSumEtaMin = cms.vint32(4, 4) #ET, HT +caloStage1Params.etSumEtaMax = cms.vint32(17, 17) #ET, HT +caloStage1Params.etSumEtThreshold = cms.vdouble(0., 7.) #ET, HT + +# HI +caloStage1Params.centralityLUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/centralityLUT_5020TeV_stage1.txt") +caloStage1Params.q2LUTFile = cms.FileInPath("L1Trigger/L1TCalorimeter/data/q2LUT_stage1.txt") diff --git a/L1Trigger/L1TCalorimeter/src/CaloParamsHelper.cc b/L1Trigger/L1TCalorimeter/src/CaloParamsHelper.cc new file mode 100644 index 0000000000000..8b5b24e517cbc --- /dev/null +++ b/L1Trigger/L1TCalorimeter/src/CaloParamsHelper.cc @@ -0,0 +1,40 @@ +// CaloParamsHelper.cc +// Author: R. Alex Barbieri +// +// Wrapper class for CaloParams and Et scales + +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" + +namespace l1t { + CaloParamsHelper::CaloParamsHelper(const CaloParams p) : CaloParams(p) {}; + + int CaloParamsHelper::etSumEtaMin(unsigned isum) const { + if (etSumEtaMin_.size()>isum) return etSumEtaMin_.at(isum); + else return 0; + } + + int CaloParamsHelper::etSumEtaMax(unsigned isum) const { + if (etSumEtaMax_.size()>isum) return etSumEtaMax_.at(isum); + else return 0; + } + + double CaloParamsHelper::etSumEtThreshold(unsigned isum) const { + if (etSumEtThreshold_.size()>isum) return etSumEtThreshold_.at(isum); + else return 0.; + } + + void CaloParamsHelper::setEtSumEtaMin(unsigned isum, int eta) { + if (etSumEtaMin_.size()<=isum) etSumEtaMin_.resize(isum+1); + etSumEtaMin_.at(isum) = eta; + } + + void CaloParamsHelper::setEtSumEtaMax(unsigned isum, int eta) { + if (etSumEtaMax_.size()<=isum) etSumEtaMax_.resize(isum+1); + etSumEtaMax_.at(isum) = eta; + } + + void CaloParamsHelper::setEtSumEtThreshold(unsigned isum, double thresh) { + if (etSumEtThreshold_.size()<=isum) etSumEtThreshold_.resize(isum+1); + etSumEtThreshold_.at(isum) = thresh; + } +} diff --git a/L1Trigger/L1TCalorimeter/src/HardwareSortingMethods.cc b/L1Trigger/L1TCalorimeter/src/HardwareSortingMethods.cc index 4800fe59b69b1..3b0aa54e3ba36 100644 --- a/L1Trigger/L1TCalorimeter/src/HardwareSortingMethods.cc +++ b/L1Trigger/L1TCalorimeter/src/HardwareSortingMethods.cc @@ -20,6 +20,16 @@ namespace l1t{ { return( ((pt & 0x3f)) + ((eta & 0xf) << 6) + ((phi & 0x1f) << 10)); } + + unsigned int pack16bits(int pt, int eta, int phi) + { + return( 0x8000 + ((pt & 0x3f)) + ((eta & 0xf) << 6) + ((phi & 0x1f) << 10)); + } + + unsigned int pack16bitsEgammaSpecial(int pt, int eta, int phi) + { + return( 0x8000 + ((pt & 0x3f) << 9) + ((eta & 0xf)) + ((phi & 0x1f) << 4)); + } } void print2DVector(std::vector > myVector){ @@ -247,6 +257,7 @@ std::vector > presort_egamma(std::vector * input, std::vector * output){ + //verbose = true; const int CENTRAL_ETA_SLICES = 14; const int N_PHI_GROUPS = 5; const int N_PRESORTED_ROWS_CENTRAL = CENTRAL_ETA_SLICES*N_PHI_GROUPS; @@ -375,6 +386,7 @@ namespace l1t{ intjet->setHwQual(intjet->hwQual() | 2); output->push_back(*intjet); } + //verbose = false; } void SortEGammas(std::vector * input, diff --git a/L1Trigger/L1TCalorimeter/src/JetFinderMethods.cc b/L1Trigger/L1TCalorimeter/src/JetFinderMethods.cc index 45f07f5d8772d..045130c388c6e 100644 --- a/L1Trigger/L1TCalorimeter/src/JetFinderMethods.cc +++ b/L1Trigger/L1TCalorimeter/src/JetFinderMethods.cc @@ -144,6 +144,19 @@ namespace l1t { if(forward) jetQual |= 0x2; + // check for input overflow regions + if(forward && regionET == 255) { + jetET = 1023; // 10 bit max + } else if(!forward && regionET == 1023) { + jetET = 1023; // 10 bit max + } else if(region->hwEta() == 17) { + if(neighborNE_et == 255 || neighborE_et == 255 || neighborSE_et == 255) + jetET = 1023; // 10 bit max + } else if(region->hwEta() == 4) { + if(neighborNW_et == 255 || neighborW_et == 255 || neighborSW_et == 255) + jetET = 1023; // 10 bit max + } + ROOT::Math::LorentzVector > jetLorentz(0,0,0,0); l1t::Jet theJet(*&jetLorentz, jetET, jetEta, jetPhi, jetQual); //l1t::Jet theJet(0, jetET, jetEta, jetPhi); @@ -253,11 +266,16 @@ namespace l1t { } } - void TwoByTwoFinder(const std::vector * regions, + void TwoByTwoFinder(const int jetSeedThreshold, + const int etaMask, + const std::vector * regions, std::vector * uncalibjets) { for(std::vector::const_iterator region = regions->begin(); region != regions->end(); region++) { int regionET = region->hwPt(); + if (regionET <= jetSeedThreshold) continue; + int subEta = region->hwEta(); + if((etaMask & (1<>subEta) regionET = 0; int neighborN_et = 0; int neighborS_et = 0; int neighborE_et = 0; @@ -269,6 +287,9 @@ namespace l1t { unsigned int nNeighbors = 0; for(std::vector::const_iterator neighbor = regions->begin(); neighbor != regions->end(); neighbor++) { int neighborET = neighbor->hwPt(); + int subEta2 = neighbor->hwEta(); + if((etaMask & (1<>subEta2) neighborET = 0; + if(deltaGctPhi(*region, *neighbor) == 1 && (region->hwEta() ) == neighbor->hwEta()) { neighborN_et = neighborET; diff --git a/L1Trigger/L1TCalorimeter/src/PUSubtractionMethods.cc b/L1Trigger/L1TCalorimeter/src/PUSubtractionMethods.cc index 4d2a9485602db..efd92196e720b 100644 --- a/L1Trigger/L1TCalorimeter/src/PUSubtractionMethods.cc +++ b/L1Trigger/L1TCalorimeter/src/PUSubtractionMethods.cc @@ -18,9 +18,9 @@ namespace l1t { /// --------------- For heavy ion ------------------------------------- void HICaloRingSubtraction(const std::vector & regions, std::vector *subRegions, - std::vector regionPUSParams, - std::string regionPUSType) + CaloParamsHelper *params) { + const bool verbose = false; int puLevelHI[L1CaloRegionDetId::N_ETA]; for(unsigned i = 0; i < L1CaloRegionDetId::N_ETA; ++i) @@ -33,25 +33,29 @@ namespace l1t { puLevelHI[region->hwEta()] += region->hwPt(); } + if(verbose) + std::cout << "hwEta avgValue" << std::endl; for(unsigned i = 0; i < L1CaloRegionDetId::N_ETA; ++i) { - puLevelHI[i] = floor(((double)puLevelHI[i] / (double)L1CaloRegionDetId::N_PHI)+0.5); + //puLevelHI[i] = floor(((double)puLevelHI[i] / (double)L1CaloRegionDetId::N_PHI)+0.5); + puLevelHI[i] = (puLevelHI[i] + 9) * 455 / (1 << 13); // approx equals X/18 +0.5 + if(verbose) + std::cout << i << " " << puLevelHI[i] << std::endl; } + if(verbose) + std::cout << "hwPt hwEta hwPhi subtractedValue hwPt_afterSub" << std::endl; for(std::vector::const_iterator region = regions.begin(); region!= regions.end(); region++){ int subPt = std::max(0, region->hwPt() - puLevelHI[region->hwEta()]); int subEta = region->hwEta(); int subPhi = region->hwPhi(); - if((regionPUSType == "zeroWall") && (subEta == 4 || subEta == 17)) { - subPt = 0; - } else if ((regionPUSType == "zeroWideWall") && - (subEta == 4 || subEta == 17 || subEta == 5 || subEta == 16)) { - subPt = 0; - } ROOT::Math::LorentzVector > ldummy(0,0,0,0); + if(verbose) + std::cout << region->hwPt() << " " << subEta << " " << subPhi << " " + << puLevelHI[region->hwEta()] << " " << subPt << std::endl; CaloRegion newSubRegion(*&ldummy, 0, 0, subPt, subEta, subPhi, region->hwQual(), region->hwEtEm(), region->hwEtHad()); subRegions->push_back(newSubRegion); } @@ -84,10 +88,11 @@ namespace l1t { void RegionCorrection(const std::vector & regions, std::vector *subRegions, - std::vector regionPUSParams, - std::string regionPUSType) + CaloParamsHelper *params) { + std::string regionPUSType = params->regionPUSType(); + if(regionPUSType == "None") { for(std::vector::const_iterator notCorrectedRegion = regions.begin(); notCorrectedRegion != regions.end(); notCorrectedRegion++){ @@ -97,7 +102,7 @@ namespace l1t { } if (regionPUSType == "HICaloRingSub") { - HICaloRingSubtraction(regions, subRegions, regionPUSParams, regionPUSType); + HICaloRingSubtraction(regions, subRegions, params); } if (regionPUSType == "PUM0") { @@ -120,7 +125,8 @@ namespace l1t { int regionEta = notCorrectedRegion->hwEta(); int regionPhi = notCorrectedRegion->hwPhi(); - int puSub = ceil(regionPUSParams[18*regionEta+pumbin]*2); + //int puSub = ceil(regionPUSParams[18*regionEta+pumbin]*2); + int puSub = params->regionPUSValue(pumbin, regionEta); // The values in regionSubtraction are MULTIPLIED by // RegionLSB=.5 (physicalRegionEt), so to get back unmultiplied // regionSubtraction we want to multiply the number by 2 @@ -132,14 +138,13 @@ namespace l1t { int regionEtCorr = std::max(0, regionET - puSub); if(regionET == 1023) regionEtCorr = 1023; // do not subtract overflow regions + if((regionET==255) && (regionEta < 4 || regionEta > 17)) + regionEtCorr = 255; ROOT::Math::LorentzVector > lorentz(0,0,0,0); CaloRegion newSubRegion(*&lorentz, 0, 0, regionEtCorr, regionEta, regionPhi, notCorrectedRegion->hwQual(), notCorrectedRegion->hwEtEm(), notCorrectedRegion->hwEtHad()); subRegions->push_back(newSubRegion); } - //std::cout << "PUM0 " << puMult << std::endl; } - } - } diff --git a/L1Trigger/L1TCalorimeter/src/Stage1TauIsolationLUT.cc b/L1Trigger/L1TCalorimeter/src/Stage1TauIsolationLUT.cc index e2f8f6177ddb8..9164009c6b65e 100644 --- a/L1Trigger/L1TCalorimeter/src/Stage1TauIsolationLUT.cc +++ b/L1Trigger/L1TCalorimeter/src/Stage1TauIsolationLUT.cc @@ -12,7 +12,7 @@ const unsigned int Stage1TauIsolationLUT::nbitsTau=NBITS_TAU_ET_LUT; const unsigned int Stage1TauIsolationLUT::nbits_data=NBITS_DATA; const unsigned int Stage1TauIsolationLUT::lut_version=LUT_VERSION; -Stage1TauIsolationLUT::Stage1TauIsolationLUT(CaloParamsStage1* params): params_(params) +Stage1TauIsolationLUT::Stage1TauIsolationLUT(CaloParamsHelper* params): params_(params) {}; unsigned Stage1TauIsolationLUT::lutAddress(unsigned int tauPt, unsigned int jetPt) const diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2CentralityAlgorithm.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2CentralityAlgorithm.cc index a8782747db67a..106ace219fb55 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2CentralityAlgorithm.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2CentralityAlgorithm.cc @@ -11,7 +11,7 @@ #include "L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h" #include "L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h" -l1t::Stage1Layer2CentralityAlgorithm::Stage1Layer2CentralityAlgorithm(CaloParamsStage1* params) +l1t::Stage1Layer2CentralityAlgorithm::Stage1Layer2CentralityAlgorithm(CaloParamsHelper* params) : params_(params) {} @@ -25,27 +25,122 @@ void l1t::Stage1Layer2CentralityAlgorithm::processEvent(const std::vector * taus, l1t::CaloSpare * spare) { + // This is no really two algorithms, the first is the HI centrality algorithm + // while the second is an alternative MB trigger. + + // Begin Centrality Trigger // + int etaMask = params_->centralityRegionMask(); int sumET = 0; int regionET=0; for(std::vector::const_iterator region = regions.begin(); region != regions.end(); region++) { - if (region->hwEta() > 3 && region->hwEta() < 18) { - continue; - } + int etaVal = region->hwEta(); + if (etaVal > 3 && etaVal < 18) continue; // never consider central regions, independent of mask + if((etaMask & (1<>etaVal) continue; + regionET=region->hwPt(); sumET +=regionET; } - int outputBits = 0; + // The LUT format is pretty funky. + int LUT_under[8]; + int LUT_nominal[8]; + int LUT_over[8]; for(int i = 0; i < 8; ++i) { - if(sumET > params_->centralityLUT()->data(i)) - outputBits = i; + LUT_nominal[i] = params_->centralityLUT()->data(i); + } + LUT_under[0] = LUT_nominal[0]; + LUT_over[0] = LUT_nominal[0]; + for(int i = 8; i < 22; ++i) + { + int j=i-8; + if(j%2 == 0){ + LUT_under[j/2+1] = params_->centralityLUT()->data(i); + } else { + LUT_over[j/2+1] = params_->centralityLUT()->data(i); + } + } + + int regularResult = 0; + int underlapResult = 0; + int overlapResult = 0; + + for(int i = 0; i < 8; ++i) + { + if(sumET > LUT_nominal[i]) + regularResult = i; + if(sumET > LUT_under[i]) + underlapResult = i; + if(sumET >= LUT_over[i]) // logical expression in firmware is constructed slightly differently, but this is equivalent + overlapResult = i; + } + + int alternateResult = 0; + if(underlapResult > regularResult) { + alternateResult = underlapResult; + } else if(overlapResult < regularResult) { + alternateResult = overlapResult; + } else { + alternateResult = regularResult; + } + + //paranoia + if(regularResult > 0x7) regularResult = 0x7; + if(alternateResult > 0x7) alternateResult = 0x7; + + spare->SetRing(0, regularResult); + spare->SetRing(1, alternateResult); + // End Centrality Trigger // + + // Begin MB Trigger // + std::vector thresholds = params_->minimumBiasThresholds(); + int numOverThresh[4] = {0}; + for(std::vector::const_iterator region = regions.begin(); region != regions.end(); region++) { + if(region->hwEta() < 4) { + if(region->hwPt() >= thresholds.at(0)) + numOverThresh[0]++; + if(region->hwPt() >= thresholds.at(2)) + numOverThresh[2]++; + } + if(region->hwEta() > 17) { + if(region->hwPt() >= thresholds.at(1)) + numOverThresh[1]++; + if(region->hwPt() >= thresholds.at(3)) + numOverThresh[3]++; + } + } + + int bits[6]; + bits[0] = ((numOverThresh[0] > 0) && (numOverThresh[1] > 0)); + bits[1] = ((numOverThresh[0] > 0) || (numOverThresh[1] > 0)); + bits[2] = ((numOverThresh[2] > 0) && (numOverThresh[3] > 0)); + bits[3] = ((numOverThresh[2] > 0) || (numOverThresh[3] > 0)); + bits[4] = ((numOverThresh[0] > 1) && (numOverThresh[1] > 1)); + bits[5] = ((numOverThresh[2] > 1) && (numOverThresh[3] > 1)); + + spare->SetRing(2, (bits[2]<<2) + (bits[1]<<1) + bits[0]); + spare->SetRing(3, (bits[5]<<2) + (bits[4]<<1) + bits[3]); + // End MB Trigger // + + const bool verbose = false; + const bool hex = true; + if(verbose) + { + if(!hex) + { + std::cout << "HF Ring Sums (Centrality)" << std::endl; + std::cout << bitset<12>(spare->hwPt()).to_string() << std::endl; + } else { + std::cout << "Centrality" << std::endl; + std::cout << std::hex << spare->hwPt() << std::endl; + // std::cout << std::hex << spare->GetRing(0) << " " + // << spare->GetRing(1) << " " + // << bits[0] << " " << bits[1] << " " + // << bits[2] << " " << bits[3] << " " + // << bits[4] << " " << bits[5] << std::endl; + } } - // ROOT::Math::LorentzVector > dummy(0,0,0,0); - // l1t::CaloSpare centrality (*&dummy,CaloSpare::CaloSpareType::Centrality,outputBits,0,0,0); - // spares->push_back(centrality); - spare->SetRing(0, outputBits); } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2DiTauAlgorithm.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2DiTauAlgorithm.cc index 6e18a517c1911..f2394a07c4e35 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2DiTauAlgorithm.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2DiTauAlgorithm.cc @@ -12,7 +12,7 @@ //#include "L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h" #include "DataFormats/L1GlobalCaloTrigger/interface/L1GctHFRingEtSums.h" -l1t::Stage1Layer2DiTauAlgorithm::Stage1Layer2DiTauAlgorithm(CaloParamsStage1* params) : params_(params) +l1t::Stage1Layer2DiTauAlgorithm::Stage1Layer2DiTauAlgorithm(CaloParamsHelper* params) : params_(params) { } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpHI.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpHI.cc index aeb6464ab8fa2..b0ea1e8adb581 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpHI.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpHI.cc @@ -22,18 +22,21 @@ using namespace std; using namespace l1t; -Stage1Layer2EGammaAlgorithmImpHI::Stage1Layer2EGammaAlgorithmImpHI(CaloParamsStage1* params) : params_(params) {}; +Stage1Layer2EGammaAlgorithmImpHI::Stage1Layer2EGammaAlgorithmImpHI(CaloParamsHelper* params) : params_(params) {}; Stage1Layer2EGammaAlgorithmImpHI::~Stage1Layer2EGammaAlgorithmImpHI(){}; - +void verboseDumpEGammas(const std::vector &egs); void l1t::Stage1Layer2EGammaAlgorithmImpHI::processEvent(const std::vector & EMCands, const std::vector & regions, const std::vector * jets, std::vector* egammas) { + int egEtaCut = params_->egEtaCut(); + std::vector *preSortEGammas = new std::vector(); std::vector *preGtEGammas = new std::vector(); + std::vector *dumpEGammas = new std::vector(); for(CaloEmCandBxCollection::const_iterator egCand = EMCands.begin(); egCand != EMCands.end(); egCand++) { @@ -41,48 +44,145 @@ void l1t::Stage1Layer2EGammaAlgorithmImpHI::processEvent(const std::vectorhwPt(); int eg_eta = egCand->hwEta(); int eg_phi = egCand->hwPhi(); - int index = ((1-egCand->hwIso())*4 + egCand->hwQual()) ; + int index = (egCand->hwIso()*4 + egCand->hwQual()) ; ROOT::Math::LorentzVector > egLorentz(0,0,0,0); int isoFlag = 0; - bool isinBarrel = (eg_eta>=7 && eg_eta<=14); + bool isinBarrel = false; + if((egEtaCut & (1<>eg_eta) { + isinBarrel = true; + } - isoFlag = !isinBarrel; + isoFlag = isinBarrel; l1t::EGamma theEG(*&egLorentz, eg_et, eg_eta, eg_phi, index, isoFlag); preSortEGammas->push_back(theEG); } + //EGammaToGtScales(params_, preSortEGammas, dumpEGammas); + //verboseDumpEGammas(*dumpEGammas); + SortEGammas(preSortEGammas, preGtEGammas); EGammaToGtScales(params_, preGtEGammas, egammas); const bool verbose = false; + const bool hex = true; if(verbose) { - int cEGammas = 0; - int fEGammas = 0; - printf("EGammas Isolated\n"); - for(std::vector::const_iterator itEGamma = egammas->begin(); - itEGamma != egammas->end(); ++itEGamma){ - if(itEGamma->hwIso() != 1) continue; - cEGammas++; - unsigned int packed = pack15bits(itEGamma->hwPt(), itEGamma->hwEta(), itEGamma->hwPhi()); - cout << bitset<15>(packed).to_string() << endl; - if(cEGammas == 4) break; - } - - printf("EGammas Non-isolated\n"); - //printf("pt\teta\tphi\n"); - for(std::vector::const_iterator itEGamma = egammas->begin(); - itEGamma != egammas->end(); ++itEGamma){ - if(itEGamma->hwIso() != 0) continue; - fEGammas++; - unsigned int packed = pack15bits(itEGamma->hwPt(), itEGamma->hwEta(), itEGamma->hwPhi()); - cout << bitset<15>(packed).to_string() << endl; - if(fEGammas == 4) break; + if(hex) + { + std::cout << "EGammas" << std::endl; + l1t::EGamma aegammas[8]; + for(std::vector::const_iterator itEgamma = egammas->begin(); + itEgamma != egammas->end(); ++itEgamma){ + aegammas[itEgamma - egammas->begin()] = *itEgamma; + } + //std::cout << "Egammas (hex)" << std::endl; + std::cout << std::hex << pack16bits(aegammas[0].hwPt(), aegammas[0].hwEta(), aegammas[0].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(aegammas[1].hwPt(), aegammas[1].hwEta(), aegammas[1].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(aegammas[4].hwPt(), aegammas[4].hwEta(), aegammas[4].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(aegammas[5].hwPt(), aegammas[5].hwEta(), aegammas[5].hwPhi()); + std::cout << std::endl; + std::cout << std::hex << pack16bits(aegammas[2].hwPt(), aegammas[2].hwEta(), aegammas[2].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(aegammas[3].hwPt(), aegammas[3].hwEta(), aegammas[3].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(aegammas[6].hwPt(), aegammas[6].hwEta(), aegammas[6].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(aegammas[7].hwPt(), aegammas[7].hwEta(), aegammas[7].hwPhi()); + std::cout << std::endl; + } else { + int cEGammas = 0; + int fEGammas = 0; + printf("EGammas Isolated\n"); + for(std::vector::const_iterator itEGamma = egammas->begin(); + itEGamma != egammas->end(); ++itEGamma){ + if(itEGamma->hwIso() != 1) continue; + cEGammas++; + unsigned int packed = pack15bits(itEGamma->hwPt(), itEGamma->hwEta(), itEGamma->hwPhi()); + cout << bitset<15>(packed).to_string() << endl; + if(cEGammas == 4) break; + } + + printf("EGammas Non-isolated\n"); + //printf("pt\teta\tphi\n"); + for(std::vector::const_iterator itEGamma = egammas->begin(); + itEGamma != egammas->end(); ++itEGamma){ + if(itEGamma->hwIso() != 0) continue; + fEGammas++; + unsigned int packed = pack15bits(itEGamma->hwPt(), itEGamma->hwEta(), itEGamma->hwPhi()); + cout << bitset<15>(packed).to_string() << endl; + if(fEGammas == 4) break; + } } } delete preSortEGammas; delete preGtEGammas; + delete dumpEGammas; +} + +void verboseDumpEGammas(const std::vector &jets) +{ + // int fwPhi[18] = { 4, + // 3 , + // 2 , + // 1 , + // 0 , + // 17 , + // 16 , + // 15 , + // 14 , + // 13 , + // 12 , + // 11 , + // 10 , + // 9 , + // 8 , + // 7 , + // 6 , + // 5 }; + + // int fwEta[22] = {0, + // 1, + // 2, + // 3, + // 0, + // 1, + // 2, + // 3, + // 4, + // 5, + // 6, + // 0, + // 1, + // 2, + // 3, + // 4, + // 5, + // 6, + // 0, + // 1, + // 2, + // 3}; + + + std::cout << "pt eta phi" << std::endl; + for(std::vector::const_iterator itEGamma = jets.begin(); + itEGamma != jets.end(); ++itEGamma){ + + //std::cout << itEGamma->hwPt() << " "; + //std::cout << fwEta[itEGamma->hwEta()] << " " ; + //std::cout << fwPhi[itEGamma->hwPhi()] << " "; + //std::cout << itEGamma->hwEta() << " " ; + //std::cout << itEGamma->hwPhi() << std::endl; + //bool sign = (itEGamma->hwEta() < 11); + //std::cout << sign << std::endl; + std::cout << std::hex << pack16bitsEgammaSpecial(itEGamma->hwPt(), itEGamma->hwEta(), itEGamma->hwPhi()) << std::endl; + + + } } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpHW.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpHW.cc index 3cc6c78590ad2..0e7ae78bc802c 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpHW.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpHW.cc @@ -22,7 +22,7 @@ using namespace std; using namespace l1t; -Stage1Layer2EGammaAlgorithmImpHW::Stage1Layer2EGammaAlgorithmImpHW(CaloParamsStage1* params) : params_(params) {}; +Stage1Layer2EGammaAlgorithmImpHW::Stage1Layer2EGammaAlgorithmImpHW(CaloParamsHelper* params) : params_(params) {}; Stage1Layer2EGammaAlgorithmImpHW::~Stage1Layer2EGammaAlgorithmImpHW(){}; @@ -31,9 +31,6 @@ Stage1Layer2EGammaAlgorithmImpHW::~Stage1Layer2EGammaAlgorithmImpHW(){}; void l1t::Stage1Layer2EGammaAlgorithmImpHW::processEvent(const std::vector & EMCands, const std::vector & regions, const std::vector * jets, std::vector* egammas) { - std::string regionPUSType = params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); - std::vector *subRegions = new std::vector(); std::vector *preSortEGammas = new std::vector(); std::vector *preGtEGammas = new std::vector(); @@ -41,7 +38,7 @@ void l1t::Stage1Layer2EGammaAlgorithmImpHW::processEvent(const std::vector *unCorrJets = new std::vector(); diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpPP.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpPP.cc index 7aeef7567eecf..e0767161e8f01 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpPP.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EGammaAlgorithmImpPP.cc @@ -22,7 +22,7 @@ using namespace std; using namespace l1t; -Stage1Layer2EGammaAlgorithmImpPP::Stage1Layer2EGammaAlgorithmImpPP(CaloParamsStage1* params) : params_(params) {}; +Stage1Layer2EGammaAlgorithmImpPP::Stage1Layer2EGammaAlgorithmImpPP(CaloParamsHelper* params) : params_(params) {}; Stage1Layer2EGammaAlgorithmImpPP::~Stage1Layer2EGammaAlgorithmImpPP(){}; @@ -40,9 +40,6 @@ void l1t::Stage1Layer2EGammaAlgorithmImpPP::processEvent(const std::vectoregMinPtHOverEIsolation(); int egMaxPtHOverEIsolation = params_->egMaxPtHOverEIsolation(); - std::string regionPUSType = params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); - std::vector *subRegions = new std::vector(); std::vector *preSortEGammas = new std::vector(); std::vector *preGtEGammas = new std::vector(); @@ -50,7 +47,7 @@ void l1t::Stage1Layer2EGammaAlgorithmImpPP::processEvent(const std::vector *unCorrJets = new std::vector(); diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpHI.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpHI.cc new file mode 100644 index 0000000000000..853b9fcd5891d --- /dev/null +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpHI.cc @@ -0,0 +1,321 @@ +/// +/// \class l1t::Stage1Layer2EtSumAlgorithmImpHI +/// +/// \author: Nick Smith (nick.smith@cern.ch) +/// +/// Description: hardware emulation of et sum algorithm + +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2EtSumAlgorithmImp.h" +#include "L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h" +#include "L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h" +#include "DataFormats/L1Trigger/interface/EtSum.h" +#include "DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h" +#include "L1Trigger/L1TCalorimeter/interface/JetFinderMethods.h" +#include "L1Trigger/L1TCalorimeter/interface/JetCalibrationMethods.h" +#include "L1Trigger/L1TCalorimeter/interface/HardwareSortingMethods.h" +#include + +l1t::Stage1Layer2EtSumAlgorithmImpHI::Stage1Layer2EtSumAlgorithmImpHI(CaloParamsHelper* params) : params_(params) +{ + //now do what ever initialization is needed + for(size_t i=0; i(pow(2.,16)*(((float) i)-36)*M_PI/36); + } + for(size_t i=0; i(pow(2,30)*sin(i*20*M_PI/180)); + cosines[i] = static_cast(pow(2,30)*cos(i*20*M_PI/180)); + } +} + + +l1t::Stage1Layer2EtSumAlgorithmImpHI::~Stage1Layer2EtSumAlgorithmImpHI() { + + +} + +void l1t::Stage1Layer2EtSumAlgorithmImpHI::processEvent(const std::vector & regions, + const std::vector & EMCands, + const std::vector * jets, + std::vector * etsums) { + + std::vector *subRegions = new std::vector(); + + + //Region Correction will return uncorrected subregions if + //regionPUSType is set to None in the config + double jetLsb=params_->jetLsb(); + + int etSumEtaMinEt = params_->etSumEtaMin(0); + int etSumEtaMaxEt = params_->etSumEtaMax(0); + //double etSumEtThresholdEt = params_->etSumEtThreshold(0); + int etSumEtThresholdEt = (int) (params_->etSumEtThreshold(0) / jetLsb); + + int etSumEtaMinHt = params_->etSumEtaMin(1); + int etSumEtaMaxHt = params_->etSumEtaMax(1); + //double etSumEtThresholdHt = params_->etSumEtThreshold(1); + int etSumEtThresholdHt = (int) (params_->etSumEtThreshold(1) / jetLsb); + + //RegionCorrection(regions, subRegions, params_); + + std::vector regionEtVect; + std::vector regionHtVect; + + // check the un-subtracted regions for overflow + bool regionOverflowEt(false); + bool regionOverflowHt(false); + for (auto& region : regions) { + if(region.hwEta() >= etSumEtaMinEt && region.hwEta() <= etSumEtaMaxEt) + { + if(region.hwPt() >= 1023) + { + regionOverflowEt = true; + } + } + if ( region.hwEta() >= etSumEtaMinHt && region.hwEta() <= etSumEtaMaxHt) + { + if(region.hwPt() >= 1023) + { + regionOverflowHt = true; + } + } + } + + // hwPt() is the sum ET+HT in region, for stage 1 this will be + // the region sum input to MET algorithm + // In stage 2, we would move to hwEtEm() and hwEtHad() for separate MET/MHT + // Thresholds will be hardware values not physical + //for (auto& region : *subRegions) { + for (auto& region : regions) { + if ( region.hwEta() >= etSumEtaMinEt && region.hwEta() <= etSumEtaMaxEt) + { + if(region.hwPt() >= etSumEtThresholdEt) + { + SimpleRegion r; + r.ieta = region.hwEta(); + r.iphi = region.hwPhi(); + r.et = region.hwPt(); + regionEtVect.push_back(r); + } + } + if ( region.hwEta() >= etSumEtaMinHt && region.hwEta() <= etSumEtaMaxHt) + { + if(region.hwPt() >= etSumEtThresholdHt) + { + SimpleRegion r; + r.ieta = region.hwEta(); + r.iphi = region.hwPhi(); + r.et = region.hwPt(); + regionHtVect.push_back(r); + } + } + } + + int sumET, MET, iPhiET; + std::tie(sumET, MET, iPhiET) = doSumAndMET(regionEtVect, ETSumType::kEmSum); + + int sumHT, MHT, iPhiHT; + std::tie(sumHT, MHT, iPhiHT) = doSumAndMET(regionHtVect, ETSumType::kHadronicSum); + + // Set quality (i.e. overflow) bits appropriately + int METqual = 0; + int MHTqual = 0; + int ETTqual = 0; + int HTTqual = 0; + if(MET >= 0xfff || regionOverflowEt) // MET 12 bits + METqual = 1; + if(MHT >= 0x7f || regionOverflowHt) // MHT 7 bits + MHTqual = 1; + if(sumET >= 0xfff || regionOverflowEt) + ETTqual = 1; + if(sumHT >= 0xfff || regionOverflowHt) + HTTqual = 1; + + MHT &= 127; // limit MHT to 7 bits as the firmware does, but only after checking for overflow. + //MHT is replaced with MHT/HT + uint16_t MHToHT=MHToverHT(MHT,sumHT); + // std::cout << "MHT HT MHT/HT" << std::endl; + // std::cout << MHT << " " << sumHT << " " << MHToHT << std::endl; + //iPhiHt is replaced by the dPhi between two most energetic jets + iPhiHT = DiJetPhi(jets); + + + const ROOT::Math::LorentzVector > etLorentz(0,0,0,0); + l1t::EtSum etMiss(*&etLorentz,EtSum::EtSumType::kMissingEt,MET&0xfff,0,iPhiET,METqual); + l1t::EtSum htMiss(*&etLorentz,EtSum::EtSumType::kMissingHt,MHToHT&0x7f,0,iPhiHT,MHTqual); + l1t::EtSum etTot (*&etLorentz,EtSum::EtSumType::kTotalEt,sumET&0xfff,0,0,ETTqual); + l1t::EtSum htTot (*&etLorentz,EtSum::EtSumType::kTotalHt,sumHT&0xfff,0,0,HTTqual); + + std::vector *preGtEtSums = new std::vector(); + + preGtEtSums->push_back(etMiss); + preGtEtSums->push_back(htMiss); + preGtEtSums->push_back(etTot); + preGtEtSums->push_back(htTot); + + EtSumToGtScales(params_, preGtEtSums, etsums); + + delete subRegions; + delete preGtEtSums; + + // Emulator - HDL simulation comparison printout + const bool verbose = false; + if(verbose) + { + for(std::vector::const_iterator itetsum = etsums->begin(); + itetsum != etsums->end(); ++itetsum){ + if(EtSum::EtSumType::kMissingEt == itetsum->getType()) + { + cout << "Missing Et" << endl; + cout << bitset<7>(itetsum->hwPhi()).to_string() << bitset<1>(itetsum->hwQual()).to_string() << bitset<12>(itetsum->hwPt()).to_string() << endl; + } + if(EtSum::EtSumType::kMissingHt == itetsum->getType()) + { + cout << "Missing Ht" << endl; + cout << bitset<1>(itetsum->hwQual()).to_string() << bitset<7>(itetsum->hwPt()).to_string() << bitset<5>(itetsum->hwPhi()).to_string() << endl; + } + if(EtSum::EtSumType::kTotalEt == itetsum->getType()) + { + cout << "Total Et" << endl; + cout << bitset<1>(itetsum->hwQual()).to_string() << bitset<12>(itetsum->hwPt()).to_string() << endl; + } + if(EtSum::EtSumType::kTotalHt == itetsum->getType()) + { + cout << "Total Ht" << endl; + cout << bitset<1>(itetsum->hwQual()).to_string() << bitset<12>(itetsum->hwPt()).to_string() << endl; + } + } + } +} + +std::tuple +l1t::Stage1Layer2EtSumAlgorithmImpHI::doSumAndMET(const std::vector& regionEt, ETSumType sumType) +{ + std::array sumEtaPos{}; + std::array sumEtaNeg{}; + for (const auto& r : regionEt) + { + if ( r.ieta < 11 ) + sumEtaNeg[r.iphi] += r.et; + else + sumEtaPos[r.iphi] += r.et; + } + + std::array sumEta{}; + int sumEt(0); + for(size_t i=0; i= 0 && sumEtaNeg[i] >= 0); + sumEta[i] = sumEtaPos[i] + sumEtaNeg[i]; + sumEt += sumEta[i]; + } + + // 0, 20, 40, 60, 80 degrees + std::array sumsForCos{}; + std::array sumsForSin{}; + for(size_t iphi=0; iphi>25; + int cordicY = sumY>>25; + + uint32_t cordicMag(0); + int cordicPhase(0); + cordic(cordicX, cordicY, cordicPhase, cordicMag); + + int met(0); + int metPhi(0); + if ( sumType == ETSumType::kHadronicSum ) + { + met = (cordicMag % (1<<7)) | ((cordicMag >= (1<<7)) ? (1<<7):0); + metPhi = cordicToMETPhi(cordicPhase) >> 2; + assert(metPhi >=0 && metPhi < 18); + } + else + { + met = (cordicMag % (1<<12)) | ((cordicMag >= (1<<12)) ? (1<<12):0); + metPhi = cordicToMETPhi(cordicPhase); + assert(metPhi >=0 && metPhi < 72); + } + + return std::make_tuple(sumEt, met, metPhi); +} + +// converts phase from 3Q16 to 0-71 +// Expects abs(phase) <= 205887 (pi*2^16) +int +l1t::Stage1Layer2EtSumAlgorithmImpHI::cordicToMETPhi(int phase) +{ + assert(abs(phase)<=205887); + for(size_t i=0; i= cordicPhiValues[i] && phase < cordicPhiValues[i+1] ) + return i; + // if phase == +205887 (+pi), return zero + return 0; +} + +int l1t::Stage1Layer2EtSumAlgorithmImpHI::DiJetPhi(const std::vector * jets) const { + + // cout << "Number of jets: " << jets->size() << endl; + + int dphi = 10; // initialize to negative physical dphi value + if (jets->size()<2) return dphi; // size() not really reliable as we pad the size to 8 (4cen+4for) in the sorter + if ((*jets).at(0).hwPt() == 0) return dphi; + if ((*jets).at(1).hwPt() == 0) return dphi; + + + int iphi1 = (*jets).at(0).hwPhi(); + int iphi2 = (*jets).at(1).hwPhi(); + + int difference=abs(iphi1-iphi2); + + if ( difference > 9 ) difference= L1CaloRegionDetId::N_PHI - difference ; // make Physical dphi always positive + return difference; +} + +uint16_t l1t::Stage1Layer2EtSumAlgorithmImpHI::MHToverHT(uint16_t num,uint16_t den) const { + + uint16_t result; + uint32_t numerator(num),denominator(den); + + if(numerator == denominator) + result = 0x7f; + else + { + numerator = numerator << 7; + result = numerator/denominator; + result = result & 0x7f; + } + // cout << "Result: " << result << endl; + + return result; +} diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpHW.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpHW.cc index 0e28a7f400e90..2e144863cbd5c 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpHW.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpHW.cc @@ -16,7 +16,7 @@ #include "L1Trigger/L1TCalorimeter/interface/HardwareSortingMethods.h" #include -l1t::Stage1Layer2EtSumAlgorithmImpHW::Stage1Layer2EtSumAlgorithmImpHW(CaloParamsStage1* params) : params_(params) +l1t::Stage1Layer2EtSumAlgorithmImpHW::Stage1Layer2EtSumAlgorithmImpHW(CaloParamsHelper* params) : params_(params) { //now do what ever initialization is needed for(size_t i=0; ietSumEtThreshold(1); int etSumEtThresholdHt = (int) (params_->etSumEtThreshold(1) / jetLsb); - std::string regionPUSType = params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); - RegionCorrection(regions, subRegions, regionPUSParams, regionPUSType); + RegionCorrection(regions, subRegions, params_); std::vector regionEtVect; std::vector regionHtVect; @@ -123,24 +121,21 @@ void l1t::Stage1Layer2EtSumAlgorithmImpHW::processEvent(const std::vector= 0xfff || regionOverflowEt) // MET 12 bits + if(MET > 0xfff || regionOverflowEt) // MET 12 bits METqual = 1; - if(MHT >= 0x7f || regionOverflowHt) // MHT 7 bits + if(MHT > 0x7f || regionOverflowHt) // MHT 7 bits MHTqual = 1; - if(sumET >= 0xfff || regionOverflowEt) + if(sumET > 0xfff || regionOverflowEt) ETTqual = 1; - if(sumHT >= 0xfff || regionOverflowHt) + if(sumHT > 0xfff || regionOverflowHt) HTTqual = 1; MHT &= 127; // limit MHT to 7 bits as the firmware does, but only after checking for overflow. //MHT is replaced with MHT/HT uint16_t MHToHT=MHToverHT(MHT,sumHT); - // std::cout << "MHT HT MHT/HT" << std::endl; - // std::cout << MHT << " " << sumHT << " " << MHToHT << std::endl; //iPhiHt is replaced by the dPhi between two most energetic jets iPhiHT = DiJetPhi(jets); - const ROOT::Math::LorentzVector > etLorentz(0,0,0,0); l1t::EtSum etMiss(*&etLorentz,EtSum::EtSumType::kMissingEt,MET&0xfff,0,iPhiET,METqual); l1t::EtSum htMiss(*&etLorentz,EtSum::EtSumType::kMissingHt,MHToHT&0x7f,0,iPhiHT,MHTqual); diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpPP.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpPP.cc index 9de1358fe1565..69a870d1cad44 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpPP.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2EtSumAlgorithmImpPP.cc @@ -15,7 +15,7 @@ #include "L1Trigger/L1TCalorimeter/interface/JetCalibrationMethods.h" #include "L1Trigger/L1TCalorimeter/interface/HardwareSortingMethods.h" -l1t::Stage1Layer2EtSumAlgorithmImpPP::Stage1Layer2EtSumAlgorithmImpPP(CaloParamsStage1* params) : params_(params) +l1t::Stage1Layer2EtSumAlgorithmImpPP::Stage1Layer2EtSumAlgorithmImpPP(CaloParamsHelper* params) : params_(params) { //now do what ever initialization is needed for(unsigned int i = 0; i < L1CaloRegionDetId::N_PHI; i++) { @@ -64,9 +64,7 @@ void l1t::Stage1Layer2EtSumAlgorithmImpPP::processEvent(const std::vectoretSumEtThreshold(1); int etSumEtThresholdHt = (int) (params_->etSumEtThreshold(1) / jetLsb); - std::string regionPUSType = params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); - RegionCorrection(regions, subRegions, regionPUSParams, regionPUSType); + RegionCorrection(regions, subRegions, params_); double towerLsb = params_->towerLsbSum(); int jetSeedThreshold = floor( params_->jetSeedThreshold()/towerLsb + 0.5); @@ -227,7 +225,7 @@ uint16_t l1t::Stage1Layer2EtSumAlgorithmImpPP::MHToverHT(uint16_t num,uint16_t d uint16_t result; uint32_t numerator(num),denominator(den); - + if(numerator == denominator) result = 0x7f; else @@ -237,6 +235,6 @@ uint16_t l1t::Stage1Layer2EtSumAlgorithmImpPP::MHToverHT(uint16_t num,uint16_t d result = result & 0x7f; } // cout << "Result: " << result << endl; - + return result; } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2FirmwareFactory.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2FirmwareFactory.cc index 7efe17e6a2336..b3fbf7a91c2ab 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2FirmwareFactory.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2FirmwareFactory.cc @@ -15,8 +15,7 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2MainProcessorFirmware.h" #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2FirmwareFactory.h" -//#include "CondFormats/L1TObjects/interface/CaloParams.h" -#include "L1Trigger/L1TCalorimeter/interface/CaloParamsStage1.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" using namespace std; using namespace edm; @@ -24,8 +23,7 @@ using namespace edm; namespace l1t { Stage1Layer2FirmwareFactory::ReturnType - // Stage1Layer2FirmwareFactory::create(const FirmwareVersion & m_fwv /*,const CaloParams & dbPars*/){ - Stage1Layer2FirmwareFactory::create(const int m_fwv ,CaloParamsStage1* dbPars){ + Stage1Layer2FirmwareFactory::create(const int m_fwv ,CaloParamsHelper* dbPars){ ReturnType p; //unsigned fwv = m_fwv.firmwareVersion(); //unsigned fwv = 1; diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2FlowAlgorithm.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2FlowAlgorithm.cc index 73255049d04ea..d31d397162f07 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2FlowAlgorithm.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2FlowAlgorithm.cc @@ -11,7 +11,7 @@ #include "L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h" #include "L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h" -l1t::Stage1Layer2FlowAlgorithm::Stage1Layer2FlowAlgorithm(CaloParamsStage1* params) : params_(params) +l1t::Stage1Layer2FlowAlgorithm::Stage1Layer2FlowAlgorithm(CaloParamsHelper* params) : params_(params) { //now do what ever initialization is needed //Converting phi to be as it is define at GCT (-pi to pi instead of 0 to 2*pi) diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2HFMinimumBias.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2HFMinimumBias.cc index 8f42e536d7415..fbbf149abac07 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2HFMinimumBias.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2HFMinimumBias.cc @@ -10,7 +10,7 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage1Layer2HFBitCountAlgorithmImp.h" #include "L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h" -l1t::Stage1Layer2HFMinimumBias::Stage1Layer2HFMinimumBias(CaloParamsStage1* params) +l1t::Stage1Layer2HFMinimumBias::Stage1Layer2HFMinimumBias(CaloParamsHelper* params) : params_(params) {} diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpHI.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpHI.cc index bacd8b49ac800..00ccd57ef653a 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpHI.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpHI.cc @@ -16,29 +16,153 @@ using namespace std; using namespace l1t; -Stage1Layer2JetAlgorithmImpHI::Stage1Layer2JetAlgorithmImpHI(CaloParamsStage1* params) : params_(params) { }; +Stage1Layer2JetAlgorithmImpHI::Stage1Layer2JetAlgorithmImpHI(CaloParamsHelper* params) : params_(params) { }; Stage1Layer2JetAlgorithmImpHI::~Stage1Layer2JetAlgorithmImpHI(){}; +void verboseDumpJets(const std::vector &jets); + void Stage1Layer2JetAlgorithmImpHI::processEvent(const std::vector & regions, const std::vector & EMCands, std::vector * jets, std::vector * preGtJets ){ - std::string regionPUSType = params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); + //std::vector regionPUSParams = params_->regionPUSParams(); + int jetThreshold = params_->jetSeedThreshold(); + + unsigned int etaMask = params_->jetRegionMask(); std::vector *subRegions = new std::vector(); std::vector *unSortedJets = new std::vector(); std::vector *preGtEtaJets = new std::vector(); + std::vector *preRankJets = new std::vector(); - HICaloRingSubtraction(regions, subRegions, regionPUSParams, regionPUSType); - TwoByTwoFinder(subRegions, unSortedJets); + HICaloRingSubtraction(regions, subRegions, params_); + TwoByTwoFinder(jetThreshold, etaMask, subRegions, preRankJets); + //slidingWindowJetFinder(0, subRegions, unSortedJets); + JetToGtPtScales(params_, preRankJets, unSortedJets); + //verboseDumpJets(*unSortedJets); SortJets(unSortedJets, preGtEtaJets); JetToGtEtaScales(params_, preGtEtaJets, preGtJets); - JetToGtPtScales(params_, preGtJets, jets); + JetToGtEtaScales(params_, preGtEtaJets, jets); + //JetToGtPtScales(params_, preGtJets, jets); delete subRegions; delete unSortedJets; delete preGtEtaJets; + + const bool verbose = false; + const bool hex = true; + if(verbose) + { + if(!hex) + { + int cJets = 0; + int fJets = 0; + printf("Jets Central\n"); + //printf("pt\teta\tphi\n"); + for(std::vector::const_iterator itJet = jets->begin(); + itJet != jets->end(); ++itJet){ + if((itJet->hwQual() & 2) == 2) continue; + cJets++; + unsigned int packed = pack15bits(itJet->hwPt(), itJet->hwEta(), itJet->hwPhi()); + cout << bitset<15>(packed).to_string() << endl; + if(cJets == 4) break; + } + + printf("Jets Forward\n"); + //printf("pt\teta\tphi\n"); + for(std::vector::const_iterator itJet = jets->begin(); + itJet != jets->end(); ++itJet){ + if((itJet->hwQual() & 2) != 2) continue; + fJets++; + unsigned int packed = pack15bits(itJet->hwPt(), itJet->hwEta(), itJet->hwPhi()); + cout << bitset<15>(packed).to_string() << endl; + + if(fJets == 4) break; + } + } else { + std::cout << "Jets" << std::endl; + l1t::Jet ajets[8]; + for(std::vector::const_iterator itJet = jets->begin(); + itJet != jets->end(); ++itJet){ + ajets[itJet - jets->begin()] = *itJet; + } + //std::cout << "Jets (hex)" << std::endl; + std::cout << std::hex << pack16bits(ajets[0].hwPt(), ajets[0].hwEta(), ajets[0].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(ajets[1].hwPt(), ajets[1].hwEta(), ajets[1].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(ajets[4].hwPt(), ajets[4].hwEta(), ajets[4].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(ajets[5].hwPt(), ajets[5].hwEta(), ajets[5].hwPhi()); + std::cout << std::endl; + std::cout << std::hex << pack16bits(ajets[2].hwPt(), ajets[2].hwEta(), ajets[2].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(ajets[3].hwPt(), ajets[3].hwEta(), ajets[3].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(ajets[6].hwPt(), ajets[6].hwEta(), ajets[6].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(ajets[7].hwPt(), ajets[7].hwEta(), ajets[7].hwPhi()); + std::cout << std::endl; + } + } +} + +void verboseDumpJets(const std::vector &jets) +{ + int fwPhi[18] = { 4, + 3 , + 2 , + 1 , + 0 , + 17 , + 16 , + 15 , + 14 , + 13 , + 12 , + 11 , + 10 , + 9 , + 8 , + 7 , + 6 , + 5 }; + + int fwEta[22] = {0, + 1, + 2, + 3, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 0, + 1, + 2, + 3}; + + + std::cout << "pt eta phi sign" << std::endl; + for(std::vector::const_iterator itJet = jets.begin(); + itJet != jets.end(); ++itJet){ + + std::cout << itJet->hwPt() << " "; + std::cout << fwEta[itJet->hwEta()] << " " ; + std::cout << fwPhi[itJet->hwPhi()] << " "; + bool sign = (itJet->hwEta() < 11); + std::cout << sign << std::endl; + + } } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpPP.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpPP.cc index 34170eb857bc9..bc27beee9c066 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpPP.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpPP.cc @@ -17,7 +17,7 @@ using namespace std; using namespace l1t; -Stage1Layer2JetAlgorithmImpPP::Stage1Layer2JetAlgorithmImpPP(CaloParamsStage1* params) : params_(params) {}; +Stage1Layer2JetAlgorithmImpPP::Stage1Layer2JetAlgorithmImpPP(CaloParamsHelper* params) : params_(params) {}; Stage1Layer2JetAlgorithmImpPP::~Stage1Layer2JetAlgorithmImpPP(){}; @@ -35,14 +35,12 @@ void Stage1Layer2JetAlgorithmImpPP::processEvent(const std::vectortowerLsbSum(); int jetSeedThreshold = floor( params_->jetSeedThreshold()/towerLsb + 0.5); - std::string regionPUSType = params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); std::string jetCalibrationType = params_->jetCalibrationType(); std::vector jetCalibrationParams = params_->jetCalibrationParams(); //Region Correction will return uncorrected subregions //if regionPUSType is set to None in the config - RegionCorrection(regions, subRegions, regionPUSParams, regionPUSType); + RegionCorrection(regions, subRegions, params_); slidingWindowJetFinder(jetSeedThreshold, subRegions, uncalibjets); diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpSimpleHW.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpSimpleHW.cc index 6c6748b0cf568..c8d59260f0fae 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpSimpleHW.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2JetAlgorithmImpSimpleHW.cc @@ -19,7 +19,7 @@ using namespace std; using namespace l1t; -Stage1Layer2JetAlgorithmImpSimpleHW::Stage1Layer2JetAlgorithmImpSimpleHW(CaloParamsStage1* params) : params_(params) +Stage1Layer2JetAlgorithmImpSimpleHW::Stage1Layer2JetAlgorithmImpSimpleHW(CaloParamsHelper* params) : params_(params) { } @@ -38,9 +38,7 @@ void Stage1Layer2JetAlgorithmImpSimpleHW::processEvent(const std::vectortowerLsbSum(); int jetSeedThreshold = floor( params_->jetSeedThreshold()/towerLsb + 0.5); - std::string regionPUSType = "PUM0"; //params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); - RegionCorrection(regions, subRegions, regionPUSParams, regionPUSType); + RegionCorrection(regions, subRegions, params_); slidingWindowJetFinder(jetSeedThreshold, subRegions, preGtEtaJets); diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2MainProcessorFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2MainProcessorFirmwareImp1.cc index 6f52d8926c802..235597ca5cab1 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2MainProcessorFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2MainProcessorFirmwareImp1.cc @@ -17,12 +17,12 @@ using namespace std; using namespace l1t; -// Stage1Layer2MainProcessorFirmwareImp1::Stage1Layer2MainProcessorFirmwareImp1(/*const CaloParamsStage1 & dbPars*/ -Stage1Layer2MainProcessorFirmwareImp1::Stage1Layer2MainProcessorFirmwareImp1(const int fwv, CaloParamsStage1* dbPars) : m_fwv(fwv), m_db(dbPars) { +// Stage1Layer2MainProcessorFirmwareImp1::Stage1Layer2MainProcessorFirmwareImp1(/*const CaloParamsHelper & dbPars*/ +Stage1Layer2MainProcessorFirmwareImp1::Stage1Layer2MainProcessorFirmwareImp1(const int fwv, CaloParamsHelper* dbPars) : m_fwv(fwv), m_db(dbPars) { if (m_fwv == 1) { //HI algo m_egAlgo = new Stage1Layer2EGammaAlgorithmImpHI(m_db); - m_sumAlgo = new Stage1Layer2EtSumAlgorithmImpPP(m_db); + m_sumAlgo = new Stage1Layer2EtSumAlgorithmImpHI(m_db); m_jetAlgo = new Stage1Layer2JetAlgorithmImpHI(m_db); //fwv =1 => HI algo m_tauAlgo = new Stage1Layer2SingleTrackHI(m_db); //fwv=1 => single track seed m_hfRingAlgo = new Stage1Layer2CentralityAlgorithm(m_db); diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2SingleTrackHI.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2SingleTrackHI.cc index 984e5c359417c..cebc504fad68b 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2SingleTrackHI.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2SingleTrackHI.cc @@ -13,57 +13,99 @@ #include "L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h" #include "L1Trigger/L1TCalorimeter/interface/legacyGtHelper.h" +#include "L1Trigger/L1TCalorimeter/interface/HardwareSortingMethods.h" -l1t::Stage1Layer2SingleTrackHI::Stage1Layer2SingleTrackHI(CaloParamsStage1* params) : params_(params) {} + +l1t::Stage1Layer2SingleTrackHI::Stage1Layer2SingleTrackHI(CaloParamsHelper* params) : params_(params) {} l1t::Stage1Layer2SingleTrackHI::~Stage1Layer2SingleTrackHI(){}; -void findRegions(const std::vector * sr, std::vector * t); +void findRegions(const std::vector * sr, std::vector * t, const int etaMask); void l1t::Stage1Layer2SingleTrackHI::processEvent(const std::vector & clusters, const std::vector & regions, std::vector * isoTaus, std::vector * taus) { - std::string regionPUSType = params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); + int etaMask = params_->tauRegionMask(); std::vector *subRegions = new std::vector(); std::vector *preGtEtaTaus = new std::vector(); std::vector *preGtTaus = new std::vector(); + std::vector *unsortedTaus = new std::vector(); + - HICaloRingSubtraction(regions, subRegions, regionPUSParams, regionPUSType); - findRegions(subRegions, preGtEtaTaus); - TauToGtEtaScales(params_, preGtEtaTaus, preGtTaus); - TauToGtPtScales(params_, preGtTaus, taus); + HICaloRingSubtraction(regions, subRegions, params_); + findRegions(subRegions, preGtTaus, etaMask); + TauToGtPtScales(params_, preGtTaus, unsortedTaus); + SortTaus(unsortedTaus, preGtEtaTaus); + //SortTaus(preGtTaus, unsortedTaus); + //TauToGtPtScales(params_, unsortedTaus, preGtEtaTaus); + TauToGtEtaScales(params_, preGtEtaTaus, taus); delete subRegions; delete preGtTaus; -} -void findRegions(const std::vector * sr, std::vector * t) -{ - int regionETMax = 0; - int regionETMaxEta = -1; - int regionETMaxPhi = -1; + isoTaus->resize(4); + //taus->resize(4); - for(std::vector::const_iterator region = sr->begin(); region != sr->end(); region++) + const bool verbose = false; + const bool hex = true; + if(verbose) { - int regionET = region->hwPt(); - if((region->hwEta() < 8) || (region->hwEta() > 13)) continue; - if (regionET > regionETMax) + if(hex) { - regionETMax = regionET; - regionETMaxEta = region->hwEta(); - regionETMaxPhi = region->hwPhi(); + std::cout << "Taus" << std::endl; + l1t::Tau ataus[8]; + for(std::vector::const_iterator itTau = taus->begin(); + itTau != taus->end(); ++itTau){ + ataus[itTau - taus->begin()] = *itTau; + } + //std::cout << "Taus (hex)" << std::endl; + std::cout << std::hex << pack16bits(ataus[0].hwPt(), ataus[0].hwEta(), ataus[0].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(ataus[1].hwPt(), ataus[1].hwEta(), ataus[1].hwPhi()); + // std::cout << " "; + // std::cout << std::hex << pack16bits(ataus[4].hwPt(), ataus[4].hwEta(), ataus[4].hwPhi()); + // std::cout << " "; + // std::cout << std::hex << pack16bits(ataus[5].hwPt(), ataus[5].hwEta(), ataus[5].hwPhi()); + std::cout << std::endl; + std::cout << std::hex << pack16bits(ataus[2].hwPt(), ataus[2].hwEta(), ataus[2].hwPhi()); + std::cout << " "; + std::cout << std::hex << pack16bits(ataus[3].hwPt(), ataus[3].hwEta(), ataus[3].hwPhi()); + // std::cout << " "; + // std::cout << std::hex << pack16bits(ataus[6].hwPt(), ataus[6].hwEta(), ataus[6].hwPhi()); + // std::cout << " "; + // std::cout << std::hex << pack16bits(ataus[7].hwPt(), ataus[7].hwEta(), ataus[7].hwPhi()); + std::cout << std::endl; + } else { + std::cout << "Taus" << std::endl; + for(std::vector::const_iterator iTau = taus->begin(); iTau != taus->end(); ++iTau) + { + unsigned int packed = pack15bits(iTau->hwPt(), iTau->hwEta(), iTau->hwPhi()); + std::cout << bitset<15>(packed).to_string() << std::endl; + } + std::cout << "Isolated Taus" << std::endl; + for(std::vector::const_iterator iTau = isoTaus->begin(); iTau != isoTaus->end(); ++iTau) + { + unsigned int packed = pack15bits(iTau->hwPt(), iTau->hwEta(), iTau->hwPhi()); + std::cout << bitset<15>(packed).to_string() << std::endl; + } } } +} - ROOT::Math::LorentzVector > TauLorentz(0,0,0,0); - l1t::Tau taucand(*&TauLorentz,regionETMax,regionETMaxEta,regionETMaxPhi); +void findRegions(const std::vector * sr, std::vector * t, const int etaMask) +{ + for(std::vector::const_iterator region = sr->begin(); region != sr->end(); region++) + { + int tauEta = region->hwEta(); + if(tauEta < 4 || tauEta > 17) continue; // taus CANNOT be in the forward region + if((etaMask & (1<>tauEta) continue; - //don't push a taucand we didn't actually find - if(taucand.hwPt() > 0) - t->push_back(taucand); + ROOT::Math::LorentzVector > TauLorentz(0,0,0,0); + l1t::Tau taucand(*&TauLorentz,region->hwPt(),region->hwEta(),region->hwPhi()); + t->push_back(taucand); + } } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2TauAlgorithmImpHW.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2TauAlgorithmImpHW.cc index 148d135b14272..ceb59c1a0add0 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2TauAlgorithmImpHW.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2TauAlgorithmImpHW.cc @@ -22,7 +22,7 @@ using namespace std; using namespace l1t; -Stage1Layer2TauAlgorithmImpHW::Stage1Layer2TauAlgorithmImpHW(CaloParamsStage1* params) : params_(params) +Stage1Layer2TauAlgorithmImpHW::Stage1Layer2TauAlgorithmImpHW(CaloParamsHelper* params) : params_(params) { isoTauLut = new Stage1TauIsolationLUT(params_); @@ -42,8 +42,6 @@ void l1t::Stage1Layer2TauAlgorithmImpHW::processEvent(const std::vectortowerLsbSum(); - std::string regionPUSType = params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); int tauSeedThreshold= floor( params_->tauSeedThreshold()/towerLsb + 0.5); // convert GeV to HW units int tauNeighbourThreshold= floor( params_->tauNeighbourThreshold()/towerLsb + 0.5); // convert GeV to HW units int tauMaxPtTauVeto = floor( params_->tauMaxPtTauVeto()/towerLsb + 0.5); @@ -55,7 +53,7 @@ void l1t::Stage1Layer2TauAlgorithmImpHW::processEvent(const std::vectortowerLsbSum(); - std::string regionPUSType = params_->regionPUSType(); - std::vector regionPUSParams = params_->regionPUSParams(); int tauSeedThreshold= floor( params_->tauSeedThreshold()/towerLsb + 0.5); // convert GeV to HW units int tauNeighbourThreshold= floor( params_->tauNeighbourThreshold()/towerLsb + 0.5); // convert GeV to HW units int jetSeedThreshold= floor( params_->jetSeedThreshold()/towerLsb + 0.5); // convert GeV to HW units @@ -54,7 +52,7 @@ void l1t::Stage1Layer2TauAlgorithmImpPP::processEvent(const std::vector& towers, std::vector& clusters) +void l1t::Stage2Layer2ClusterAlgorithmFirmwareImp1::processEvent(const std::vector& towers, std::vector& clusters) /*****************************************************************/ { - if (clusterInput_==E) + if (clusterInput_==E) { - seedThreshold_ = floor(params_->egSeedThreshold()/params_->towerLsbE()); + seedThreshold_ = floor(params_->egSeedThreshold()/params_->towerLsbE()); clusterThreshold_ = floor(params_->egNeighbourThreshold()/params_->towerLsbE()); } - else if (clusterInput_==EH) + else if (clusterInput_==EH) { - seedThreshold_ = floor(params_->egSeedThreshold()/params_->towerLsbSum()); + seedThreshold_ = floor(params_->egSeedThreshold()/params_->towerLsbSum()); clusterThreshold_ = floor(params_->egNeighbourThreshold()/params_->towerLsbSum()); } - if (clusterInput_==H) + if (clusterInput_==H) { - seedThreshold_ = floor(params_->egSeedThreshold()/params_->towerLsbH()); + seedThreshold_ = floor(params_->egSeedThreshold()/params_->towerLsbH()); clusterThreshold_ = floor(params_->egNeighbourThreshold()/params_->towerLsbH()); } @@ -93,7 +93,7 @@ void l1t::Stage2Layer2ClusterAlgorithmFirmwareImp1::clustering(const std::vector // H/E is currently encoded on 9 bits, from 0 to 1 int hwEtHadTh = (tower.hwEtHad()>=hcalThreshold_ ? tower.hwEtHad() : 0); int hOverE = (tower.hwEtEm()>0 ? (hwEtHadTh<<9)/tower.hwEtEm() : 511); - if(hOverE>511) hOverE = 511; + if(hOverE>511) hOverE = 511; cluster.setHOverE(hOverE); // FG of the cluster is FG of the seed bool fg = (tower.hwQual() & (0x1<<2)); @@ -123,7 +123,7 @@ void l1t::Stage2Layer2ClusterAlgorithmFirmwareImp1::clustering(const std::vector const l1t::CaloTower& towerSE = l1t::CaloTools::getTower(towers, iEtaP, iPhiP); const l1t::CaloTower& towerS = l1t::CaloTools::getTower(towers, iEta , iPhiP); const l1t::CaloTower& towerSW = l1t::CaloTools::getTower(towers, iEtaM, iPhiP); - const l1t::CaloTower& towerW = l1t::CaloTools::getTower(towers, iEtaM, iPhi ); + const l1t::CaloTower& towerW = l1t::CaloTools::getTower(towers, iEtaM, iPhi ); const l1t::CaloTower& towerNN = l1t::CaloTools::getTower(towers, iEta , iPhiM2); const l1t::CaloTower& towerSS = l1t::CaloTools::getTower(towers, iEta , iPhiP2); int towerEtNW = 0; @@ -286,7 +286,7 @@ void l1t::Stage2Layer2ClusterAlgorithmFirmwareImp1::filtering(const std::vector< // END NOT_IN_FIRMWARE } else // iEta==1 - { + { if(clusterNW.hwPt() > cluster.hwPt()) cluster.setClusterFlag(CaloCluster::INCLUDE_SEED, false); if(clusterN .hwPt() > cluster.hwPt()) cluster.setClusterFlag(CaloCluster::INCLUDE_SEED, false); if(clusterNE.hwPt() > cluster.hwPt()) cluster.setClusterFlag(CaloCluster::INCLUDE_SEED, false); @@ -777,4 +777,3 @@ void l1t::Stage2Layer2ClusterAlgorithmFirmwareImp1::refining(const std::vector #include -l1t::Stage2Layer2DemuxEGAlgoFirmwareImp1::Stage2Layer2DemuxEGAlgoFirmwareImp1(CaloParams* params) : +l1t::Stage2Layer2DemuxEGAlgoFirmwareImp1::Stage2Layer2DemuxEGAlgoFirmwareImp1(CaloParamsHelper* params) : params_(params) { @@ -34,4 +34,3 @@ void l1t::Stage2Layer2DemuxEGAlgoFirmwareImp1::processEvent(const std::vector @@ -16,7 +16,7 @@ inline bool operator> ( l1t::Jet& a, l1t::Jet& b ) { - if ( a.hwPt() > b.hwPt() ){ + if ( a.hwPt() > b.hwPt() ){ return true; } else { return false; @@ -25,7 +25,7 @@ inline bool operator> ( l1t::Jet& a, l1t::Jet& b ) #include "L1Trigger/L1TCalorimeter/interface/BitonicSort.h" -l1t::Stage2Layer2DemuxJetAlgoFirmwareImp1::Stage2Layer2DemuxJetAlgoFirmwareImp1(CaloParams* params) : +l1t::Stage2Layer2DemuxJetAlgoFirmwareImp1::Stage2Layer2DemuxJetAlgoFirmwareImp1(CaloParamsHelper* params) : params_(params) { @@ -44,20 +44,20 @@ void l1t::Stage2Layer2DemuxJetAlgoFirmwareImp1::processEvent(const std::vector::iterator start(outputJets.begin()); std::vector::iterator end(outputJets.end()); - + BitonicSort< l1t::Jet >(down,start,end); - - // Transform the eta and phi onto the ouput scales to GT + + // Transform the eta and phi onto the ouput scales to GT for (std::vector::iterator jet = outputJets.begin(); jet != outputJets.end(); ++jet ) { - + jet->setHwPhi(2*jet->hwPhi()); jet->setHwEta(2*jet->hwEta()); - + if (jet->hwPt()>0x7FF){ jet->setHwPt(0x7FF); } else { @@ -67,4 +67,3 @@ void l1t::Stage2Layer2DemuxJetAlgoFirmwareImp1::processEvent(const std::vector #include -l1t::Stage2Layer2DemuxSumsAlgoFirmwareImp1::Stage2Layer2DemuxSumsAlgoFirmwareImp1(CaloParams* params) : +l1t::Stage2Layer2DemuxSumsAlgoFirmwareImp1::Stage2Layer2DemuxSumsAlgoFirmwareImp1(CaloParamsHelper* params) : params_(params), cordic_(Cordic(14,6,8)) // These are the settings in the hardware - should probably make this configurable { } @@ -39,7 +39,7 @@ void l1t::Stage2Layer2DemuxSumsAlgoFirmwareImp1::processEvent(const std::vector< case l1t::EtSum::EtSumType::kTotalEt: et += eSum->hwPt(); break; - + case l1t::EtSum::EtSumType::kTotalEtx: metx += eSum->hwPt(); break; @@ -47,24 +47,24 @@ void l1t::Stage2Layer2DemuxSumsAlgoFirmwareImp1::processEvent(const std::vector< case l1t::EtSum::EtSumType::kTotalEty: mety += eSum->hwPt(); break; - + case l1t::EtSum::EtSumType::kTotalHt: ht += eSum->hwPt(); break; - + case l1t::EtSum::EtSumType::kTotalHtx: mhtx += eSum->hwPt(); break; - + case l1t::EtSum::EtSumType::kTotalHty: mhty += eSum->hwPt(); break; - + default: continue; // Should throw an exception or something? } } - + // Final MET calculation cordic_( metx , mety , metPhi , met ); @@ -85,4 +85,3 @@ void l1t::Stage2Layer2DemuxSumsAlgoFirmwareImp1::processEvent(const std::vector< outputSums.push_back(htSumMissingHt); } - diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2DemuxTauAlgoFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2DemuxTauAlgoFirmwareImp1.cc index ab893b6fa0405..40f93f00ce9cc 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2DemuxTauAlgoFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2DemuxTauAlgoFirmwareImp1.cc @@ -1,19 +1,19 @@ /// /// \class l1t::Stage2Layer2TauAlgorithmFirmwareImp1 /// -/// \author: +/// \author: /// -/// Description: +/// Description: #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxTauAlgoFirmware.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include #include -l1t::Stage2Layer2DemuxTauAlgoFirmwareImp1::Stage2Layer2DemuxTauAlgoFirmwareImp1(CaloParams* params) : +l1t::Stage2Layer2DemuxTauAlgoFirmwareImp1::Stage2Layer2DemuxTauAlgoFirmwareImp1(CaloParamsHelper* params) : params_(params) { @@ -34,4 +34,3 @@ void l1t::Stage2Layer2DemuxTauAlgoFirmwareImp1::processEvent(const std::vector& clusters, const std::vector& towers, std::vector& egammas) +void l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::processEvent(const std::vector& clusters, const std::vector& towers, std::vector& egammas) /*****************************************************************/ { l1t::CaloStage2Nav caloNav; @@ -37,7 +37,7 @@ void l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::processEvent(const std::vecto { // Keep only valid clusters if(cluster.isValid()) - { + { // need tower energies to recompute egamma trimmed energy int iEta = cluster.hwEta(); int iPhi = cluster.hwPhi(); @@ -69,7 +69,7 @@ void l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::processEvent(const std::vecto int towerEtSW = towerSW.hwEtEm(); int towerEtW = towerW .hwEtEm(); int towerEtNN = towerNN.hwEtEm(); - int towerEtSS = towerSS.hwEtEm(); + int towerEtSS = towerSS.hwEtEm(); // initialize egamma from cluster egammas.push_back(cluster); @@ -96,15 +96,15 @@ void l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::processEvent(const std::vecto // Based on the seed tower FG bit, the H/E ratio of the seed toswer, and the shape of the cluster bool hOverEBit = idHOverE(cluster, egamma.hwPt()); bool shapeBit = idShape(cluster, egamma.hwPt()); - bool fgBit = !(cluster.hwSeedPt()>6 && cluster.fgECAL()); + bool fgBit = !(cluster.hwSeedPt()>6 && cluster.fgECAL()); int qual = 0; if(fgBit) qual |= (0x1); // first bit = FG if(hOverEBit) qual |= (0x1<<1); // second bit = H/E if(shapeBit) qual |= (0x1<<2); // third bit = shape - egamma.setHwQual( qual ); + egamma.setHwQual( qual ); - // Isolation + // Isolation int hwEtSum = CaloTools::calHwEtSum(cluster.hwEta(), cluster.hwPhi(), towers, -1*params_->egIsoAreaNrTowersEta(),params_->egIsoAreaNrTowersEta(), -1*params_->egIsoAreaNrTowersPhi(),params_->egIsoAreaNrTowersPhi(), @@ -116,7 +116,7 @@ void l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::processEvent(const std::vecto 1,72,towers,1,999,CaloTools::CALO); unsigned int lutAddress = isoLutIndex(egamma.hwEta(), nrTowers); - int isolBit = hwEtSum-hwFootPrint <= params_->egIsolationLUT()->data(lutAddress); + int isolBit = hwEtSum-hwFootPrint <= params_->egIsolationLUT()->data(lutAddress); // std::cout <<"hwEtSum "<egIsoAreaNrTowersEta()<<" "<egIsoAreaNrTowersPhi()<< " veto "<egIsoVetoNrTowersPhi()<egMaxHOverELUT()->data(lutAddress) ); hOverEBit |= ( clus.hwPt()>=floor(params_->egMaxPtHOverE()/params_->egLsb()) ); return hOverEBit; @@ -184,7 +184,7 @@ bool l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::idShape(const l1t::CaloCluste if( clus.checkClusterFlag(CaloCluster::INCLUDE_NN) ) shape |= (0x1<<5); if( clus.checkClusterFlag(CaloCluster::INCLUDE_SS) ) shape |= (0x1<<6); - unsigned int lutAddress = idShapeLutIndex(clus.hwEta(), hwPt, shape); + unsigned int lutAddress = idShapeLutIndex(clus.hwEta(), hwPt, shape); bool shapeBit = params_->egShapeIdLUT()->data(lutAddress); return shapeBit; } @@ -202,7 +202,7 @@ unsigned int l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::idShapeLutIndex(int i //calculates the footprint of the electron in hardware values /*****************************************************************/ -int l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::isoCalEgHwFootPrint(const l1t::CaloCluster& clus,const std::vector& towers) +int l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::isoCalEgHwFootPrint(const l1t::CaloCluster& clus,const std::vector& towers) /*****************************************************************/ { int iEta=clus.hwEta(); @@ -232,7 +232,7 @@ unsigned l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::isoLutIndex(int iEta,unsi { const unsigned int kNrTowersInSum=72*params_->egPUSParam(1)*2; const unsigned int kTowerGranularity=params_->egPUSParam(0); - const unsigned int kMaxAddress = kNrTowersInSum%kTowerGranularity==0 ? (kNrTowersInSum/kTowerGranularity+1)*28*2 : + const unsigned int kMaxAddress = kNrTowersInSum%kTowerGranularity==0 ? (kNrTowersInSum/kTowerGranularity+1)*28*2 : (kNrTowersInSum/kTowerGranularity)*28*2; unsigned int nrTowersNormed = nrTowers/kTowerGranularity; @@ -261,7 +261,7 @@ int l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::calibratedPt(const l1t::CaloCl if( clus.checkClusterFlag(CaloCluster::INCLUDE_NN) ) shape |= (0x1<<5); if( clus.checkClusterFlag(CaloCluster::INCLUDE_SS) ) shape |= (0x1<<6); - unsigned int lutAddress = calibrationLutIndex(clus.hwEta(), hwPt, shape); + unsigned int lutAddress = calibrationLutIndex(clus.hwEta(), hwPt, shape); int corr = params_->egCalibrationLUT()->data(lutAddress); // 9 bits. [0,1]. corrPt = (1+corr)*rawPt // the correction can only increase the energy, and it cannot increase it more than a factor two int rawPt = hwPt; @@ -306,10 +306,10 @@ l1t::CaloCluster l1t::Stage2Layer2EGammaAlgorithmFirmwareImp1::trimCluster(const if( clus.checkClusterFlag(CaloCluster::INCLUDE_NN) ) shape |= (0x1<<5); if( clus.checkClusterFlag(CaloCluster::INCLUDE_SS) ) shape |= (0x1<<6); - unsigned int lutAddress = trimmingLutIndex(shape, clus.hwEta()); + unsigned int lutAddress = trimmingLutIndex(shape, clus.hwEta()); unsigned int shapeTrim = params_->egTrimmingLUT()->data(lutAddress); // apply trimming flags - clusCopy.setClusterFlag(CaloCluster::INCLUDE_N, ( shapeTrim&(0x1) ) ? true : false); + clusCopy.setClusterFlag(CaloCluster::INCLUDE_N, ( shapeTrim&(0x1) ) ? true : false); clusCopy.setClusterFlag(CaloCluster::INCLUDE_S, ( shapeTrim&(0x1<<1) ) ? true : false); clusCopy.setClusterFlag(CaloCluster::INCLUDE_NN, ( shapeTrim&(0x1<<5) ) ? true : false); clusCopy.setClusterFlag(CaloCluster::INCLUDE_SS, ( shapeTrim&(0x1<<6) ) ? true : false); diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2EtSumAlgorithmFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2EtSumAlgorithmFirmwareImp1.cc index e6dbc5d62f42f..98ea354c5bf9e 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2EtSumAlgorithmFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2EtSumAlgorithmFirmwareImp1.cc @@ -11,7 +11,7 @@ #include -l1t::Stage2Layer2EtSumAlgorithmFirmwareImp1::Stage2Layer2EtSumAlgorithmFirmwareImp1(CaloParams* params) : +l1t::Stage2Layer2EtSumAlgorithmFirmwareImp1::Stage2Layer2EtSumAlgorithmFirmwareImp1(CaloParamsHelper* params) : params_(params) { @@ -19,10 +19,10 @@ l1t::Stage2Layer2EtSumAlgorithmFirmwareImp1::Stage2Layer2EtSumAlgorithmFirmwareI etSumEtThresholdHwEt_ = floor(params_->etSumEtThreshold(0)/params_->towerLsbSum()); etSumEtThresholdHwMet_ = floor(params_->etSumEtThreshold(2)/params_->towerLsbSum()); - + etSumEtaMinEt_ = params_->etSumEtaMin(0); etSumEtaMaxEt_ = params_->etSumEtaMax(0); - + etSumEtaMinMet_ = params_->etSumEtaMin(2); etSumEtaMaxMet_ = params_->etSumEtaMax(2); } @@ -32,53 +32,53 @@ l1t::Stage2Layer2EtSumAlgorithmFirmwareImp1::~Stage2Layer2EtSumAlgorithmFirmware void l1t::Stage2Layer2EtSumAlgorithmFirmwareImp1::processEvent(const std::vector & towers, std::vector & etsums) { - + int etaMax=40, etaMin=1, phiMax=72, phiMin=1; - + // etaSide=1 is positive eta, etaSide=-1 is negative eta for (int etaSide=1; etaSide>=-1; etaSide-=2) { int32_t ex(0), ey(0), et(0); - + std::vector rings; for (int i=etaMin; i<=etaMax; i++) rings.push_back(i*etaSide); - + for (unsigned etaIt=0; etaIt> 9; ringEy += (int32_t) (tower.hwPt() * std::trunc ( 511. * sin ( 2 * M_PI * iphi / 72.0 ) )) >> 9; ringEt += tower.hwPt(); - + } - + // At some point we will remove the bit shifts and will need to limit to the precision available in the firmware - + ex += ( ringEx >> 2); ey += ( ringEy >> 2); et += ( ringEt >> 1); - + } - + math::XYZTLorentzVector p4; l1t::EtSum etSumTotalEt(p4,l1t::EtSum::EtSumType::kTotalEt,et,0,0,0); l1t::EtSum etSumEx(p4,l1t::EtSum::EtSumType::kTotalEtx,ex,0,0,0); l1t::EtSum etSumEy(p4,l1t::EtSum::EtSumType::kTotalEty,ey,0,0,0); - + etsums.push_back(etSumTotalEt); etsums.push_back(etSumEx); etsums.push_back(etSumEy); } - + } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2FirmwareFactory.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2FirmwareFactory.cc index 3ea8eded6dcea..a4a76fd19fcc5 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2FirmwareFactory.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2FirmwareFactory.cc @@ -10,17 +10,17 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2MainProcessorFirmware.h" #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2FirmwareFactory.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" using namespace std; using namespace edm; l1t::Stage2Layer2FirmwareFactory::ReturnType -l1t::Stage2Layer2FirmwareFactory::create(unsigned fwv, CaloParams* params) { +l1t::Stage2Layer2FirmwareFactory::create(unsigned fwv, CaloParamsHelper* params) { ReturnType p; unsigned v = fwv; - + switch (v){ case 1: p = ReturnType(new Stage2MainProcessorFirmwareImp1(fwv, params)); @@ -30,7 +30,7 @@ l1t::Stage2Layer2FirmwareFactory::create(unsigned fwv, CaloParams* params) { LogError("l1t|caloStage2") << "Invalid firmware version requested: " << v << "\n"; break; } - + return p; } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2JetAlgorithmFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2JetAlgorithmFirmwareImp1.cc index c61475959ef5d..cd7e243b5d9a6 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2JetAlgorithmFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2JetAlgorithmFirmwareImp1.cc @@ -1,4 +1,4 @@ -// +// /// \class l1t::Stage2Layer2JetAlgorithmFirmwareImp1 /// /// \author: Adam Elwood and Matthew Citron @@ -10,7 +10,7 @@ #include "DataFormats/Math/interface/LorentzVector.h" #include "L1Trigger/L1TCalorimeter/interface/CaloTools.h" #include "L1Trigger/L1TCalorimeter/interface/BitonicSort.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" #include #include @@ -45,7 +45,7 @@ int mask_[9][9] = { std::vector::iterator start_, end_; -l1t::Stage2Layer2JetAlgorithmFirmwareImp1::Stage2Layer2JetAlgorithmFirmwareImp1(CaloParams* params) : +l1t::Stage2Layer2JetAlgorithmFirmwareImp1::Stage2Layer2JetAlgorithmFirmwareImp1(CaloParamsHelper* params) : params_(params){} @@ -53,24 +53,24 @@ l1t::Stage2Layer2JetAlgorithmFirmwareImp1::~Stage2Layer2JetAlgorithmFirmwareImp1 void l1t::Stage2Layer2JetAlgorithmFirmwareImp1::processEvent(const std::vector & towers, std::vector & jets, std::vector & alljets) { - + // find jets create(towers, jets, alljets, params_->jetPUSType()); // jet energy corrections - calibrate(jets, 10/params_->jetLsb()); // pass the jet collection and the hw threshold above which to calibrate - + calibrate(jets, 10/params_->jetLsb()); // pass the jet collection and the hw threshold above which to calibrate + } -void l1t::Stage2Layer2JetAlgorithmFirmwareImp1::create(const std::vector & towers, std::vector & jets, +void l1t::Stage2Layer2JetAlgorithmFirmwareImp1::create(const std::vector & towers, std::vector & jets, std::vector & alljets, std::string PUSubMethod) { - + int etaMax=40, etaMin=1, phiMax=72, phiMin=1; - + // etaSide=1 is positive eta, etaSide=-1 is negative eta for (int etaSide=1; etaSide>=-1; etaSide-=2) { - + // the 4 groups of rings std::vector ringGroup1, ringGroup2, ringGroup3, ringGroup4; for (int i=etaMin; i<=etaMax; i++) { @@ -80,125 +80,125 @@ void l1t::Stage2Layer2JetAlgorithmFirmwareImp1::create(const std::vector > theRings = { ringGroup1, ringGroup2, ringGroup3, ringGroup4 }; - + // the 24 jets in this eta side std::vector jetsHalf; - + // loop over the 4 groups of rings for ( unsigned ringGroupIt=1; ringGroupIt<=theRings.size(); ringGroupIt++ ) { - + // the 6 accumulated jets std::vector jetsAccu; - + // loop over the 10 rings in this group for ( unsigned ringIt=0; ringIt jetsRing; - + // loop over phi in the ring for ( int iphi=phiMin; iphi<=phiMax; ++iphi ) { - + // no more than 18 jets per ring if (jetsRing.size()==18) break; - + // seed tower - const CaloTower& tow = CaloTools::getTower(towers, ieta, iphi); - + const CaloTower& tow = CaloTools::getTower(towers, ieta, iphi); + int seedEt = tow.hwPt(); int iEt = seedEt; bool vetoCandidate = false; - + // check it passes the seed threshold if(iEt < floor(params_->jetSeedThreshold()/params_->towerLsbSum())) continue; - + // loop over towers in this jet for( int deta = -4; deta < 5; ++deta ) { for( int dphi = -4; dphi < 5; ++dphi ) { - + int towEt = 0; int ietaTest = ieta+deta; int iphiTest = iphi+dphi; - + // wrap around phi while ( iphiTest > phiMax ) iphiTest -= phiMax; while ( iphiTest < phiMin ) iphiTest += phiMax; - + // wrap over eta=0 if (ieta > 0 && ietaTest <=0) ietaTest -= 1; if (ieta < 0 && ietaTest >=0) ietaTest += 1; - + // check jet mask and sum tower et const CaloTower& towTest = CaloTools::getTower(towers, ietaTest, iphiTest); towEt = towTest.hwPt(); - + if (mask_[8-(dphi+4)][deta+4] == 0) continue; else if (mask_[8-(dphi+4)][deta+4] == 1) vetoCandidate = (seedEt < towEt); else if (mask_[8-(dphi+4)][deta+4] == 2) vetoCandidate = (seedEt <= towEt); - + if (vetoCandidate) break; else iEt += towEt; - + } - if(vetoCandidate) break; + if(vetoCandidate) break; } - + // add the jet to the list if (!vetoCandidate) { - - if (PUSubMethod == "Donut") iEt -= donutPUEstimate(ieta, iphi, 5, towers); + + if (PUSubMethod == "Donut") iEt -= donutPUEstimate(ieta, iphi, 5, towers); if (PUSubMethod == "ChunkyDonut") iEt -= chunkyDonutPUEstimate(ieta, iphi, 5, towers); - + if (iEt<=0) continue; - + math::XYZTLorentzVector p4; l1t::Jet jet( p4, iEt, ieta, iphi, 0); - + jetsRing.push_back(jet); alljets.push_back(jet); - + } - + } - + // sort these jets and keep top 6 - start_ = jetsRing.begin(); + start_ = jetsRing.begin(); end_ = jetsRing.end(); BitonicSort(down, start_, end_); if (jetsRing.size()>6) jetsRing.resize(6); - + // merge with the accumulated jets std::vector jetsSort; jetsSort.insert(jetsSort.end(), jetsAccu.begin(), jetsAccu.end()); jetsSort.insert(jetsSort.end(), jetsRing.begin(), jetsRing.end()); - + // sort and truncate start_ = jetsSort.begin(); end_ = jetsSort.end(); BitonicSort(down, start_, end_); // or just use BitonicMerge if (jetsSort.size()>6) jetsSort.resize(6); - + // update accumulated jets jetsAccu = jetsSort; - + } - + // add to final jets in this eta side jetsHalf.insert(jetsHalf.end(), jetsAccu.begin(), jetsAccu.end()); - + } - + // sort the 24 jets and keep top 6 - start_ = jetsHalf.begin(); + start_ = jetsHalf.begin(); end_ = jetsHalf.end(); BitonicSort(down, start_, end_); if (jetsHalf.size()>6) jetsHalf.resize(6); // add to final jets jets.insert(jets.end(), jetsHalf.begin(), jetsHalf.end()); - + } } @@ -222,7 +222,7 @@ int l1t::Stage2Layer2JetAlgorithmFirmwareImp1::donutPUEstimate(int jetEta, int j int ietaUp = (jetEta + size > etaMax) ? 999 : jetEta+size; int ietaDown = (jetEta - size < etaMin) ? 999 : jetEta-size; - for (int ieta = jetEta - size+1; ieta < jetEta + size; ++ieta) + for (int ieta = jetEta - size+1; ieta < jetEta + size; ++ieta) { if (ieta > etaMax || ieta < etaMin) continue; @@ -244,9 +244,9 @@ int l1t::Stage2Layer2JetAlgorithmFirmwareImp1::donutPUEstimate(int jetEta, int j towEt = tow2.hwPt(); ring[1]+=towEt; - } + } - for (int iphi = jetPhi - size+1; iphi < jetPhi + size; ++iphi) + for (int iphi = jetPhi - size+1; iphi < jetPhi + size; ++iphi) { int towerPhi = iphi; @@ -260,7 +260,7 @@ int l1t::Stage2Layer2JetAlgorithmFirmwareImp1::donutPUEstimate(int jetEta, int j const CaloTower& tow2 = CaloTools::getTower(towers, ietaDown, towerPhi); towEt = tow2.hwPt(); ring[3]+=towEt; - } + } //for the Donut Subtraction we only use the middle 2 (in energy) ring strips std::sort(ring.begin(), ring.end(), std::greater()); @@ -292,52 +292,52 @@ int l1t::Stage2Layer2JetAlgorithmFirmwareImp1::chunkyDonutPUEstimate(int jetEta, int ietaDown = jetEta - size - stripIt; if ( jetEta<0 && ietaUp>=0 ) ietaUp += 1; if ( jetEta>0 && ietaDown<=0 ) ietaDown -= 1; - + // do PhiUp and PhiDown for (int ieta=jetEta-size+1; ietaetaMax || ieta0 && towEta<=0) towEta-=1; if (jetEta<0 && towEta>=0) towEta+=1; - + const CaloTower& towPhiUp = CaloTools::getTower(towers, towEta, iphiUp); int towEt = towPhiUp.hwPt(); ring[0] += towEt; - + const CaloTower& towPhiDown = CaloTools::getTower(towers, towEta, iphiDown); towEt = towPhiDown.hwPt(); ring[1] += towEt; - - } - + + } + // do EtaUp and EtaDown for (int iphi=jetPhi-size+1; iphi phiMax ) towPhi -= phiMax; while ( towPhi < phiMin ) towPhi += phiMax; - if (ietaUp>=etaMin && ietaUp<=etaMax) { + if (ietaUp>=etaMin && ietaUp<=etaMax) { const CaloTower& towEtaUp = CaloTools::getTower(towers, ietaUp, towPhi); int towEt = towEtaUp.hwPt(); ring[2] += towEt; } - + if (ietaDown>=etaMin && ietaDown<=etaMax) { const CaloTower& towEtaDown = CaloTools::getTower(towers, ietaDown, towPhi); int towEt = towEtaDown.hwPt(); ring[3] += towEt; } - - } - + + } + } - + // for donut subtraction we only use the middle 2 (in energy) ring strips std::sort(ring.begin(), ring.end(), std::greater()); - return ( ring[1]+ring[2] ); + return ( ring[1]+ring[2] ); } @@ -384,7 +384,7 @@ void l1t::Stage2Layer2JetAlgorithmFirmwareImp1::calibrate(std::vector int etaBin; if(jet->hwEta() < 0) //Account for a lack of 0 etaBin = ttToRct[ jet->hwEta() + 40 ]; - else + else etaBin = ttToRct[ jet->hwEta() + 39 ]; double params[6]; //These are the parameters of the fit @@ -424,7 +424,7 @@ void l1t::Stage2Layer2JetAlgorithmFirmwareImp1::calibrate(std::vector int etaBin; if(jet->hwEta() < 0) //Account for a lack of 0 etaBin = jet->hwEta() + 40; - else + else etaBin = jet->hwEta() + 39; @@ -454,7 +454,7 @@ void l1t::Stage2Layer2JetAlgorithmFirmwareImp1::calibrate(std::vector return; } else { - if(params_->jetCalibrationType() != "None" && params_->jetCalibrationType() != "none") + if(params_->jetCalibrationType() != "None" && params_->jetCalibrationType() != "none") edm::LogError("l1t|stage 2") << "Invalid calibration type in calo params. Not calibrating Stage 2 Jets" << std::endl; return; } @@ -471,8 +471,8 @@ double l1t::Stage2Layer2JetAlgorithmFirmwareImp1::calibFit( double *v, double *p double term1 = par[1] / ( logX * logX + par[2] ); double term2 = par[3] * exp( -par[4]*((logX - par[5])*(logX - par[5])) ); - // Final fitting function - double f = par[0] + term1 + term2; + // Final fitting function + double f = par[0] + term1 + term2; return f; } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2JetSumAlgorithmFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2JetSumAlgorithmFirmwareImp1.cc index dd66fd112a3c6..bdeb601dd11ca 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2JetSumAlgorithmFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2JetSumAlgorithmFirmwareImp1.cc @@ -8,7 +8,7 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2JetSumAlgorithmFirmware.h" -l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::Stage2Layer2JetSumAlgorithmFirmwareImp1(CaloParams* params) : +l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::Stage2Layer2JetSumAlgorithmFirmwareImp1(CaloParamsHelper* params) : params_(params) { etSumEtThresholdHwEt_ = floor(params_->etSumEtThreshold(0)/params_->jetLsb()); @@ -16,7 +16,7 @@ l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::Stage2Layer2JetSumAlgorithmFirmwar etSumEtaMinEt_ = params_->etSumEtaMin(0); etSumEtaMaxEt_ = params_->etSumEtaMax(0); - + etSumEtaMinMet_ = params_->etSumEtaMin(2); etSumEtaMaxMet_ = params_->etSumEtaMax(2); } @@ -28,29 +28,29 @@ l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::~Stage2Layer2JetSumAlgorithmFirmwa } -void l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::processEvent(const std::vector & alljets, std::vector & htsums) +void l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::processEvent(const std::vector & alljets, std::vector & htsums) { int etaMax=40, etaMin=1, phiMax=72, phiMin=1; - + // etaSide=1 is positive eta, etaSide=-1 is negative eta for (int etaSide=1; etaSide>=-1; etaSide-=2) { int32_t hx(0), hy(0), ht(0); - + std::vector rings; for (int i=etaMin; i<=etaMax; i++) rings.push_back(i*etaSide); - // loop over rings + // loop over rings for (unsigned etaIt=0; etaItetSumEtThresholdHwMet_ && thisJet.hwEta()>=etSumEtaMinMet_ && thisJet.hwEta()<=etSumEtaMaxMet_) { ringHx += (int32_t) ( thisJet.hwPt() * std::trunc ( 511. * cos ( 2 * M_PI * (72 - iphi) / 72.0 ) )) >> 10; ringHy += (int32_t) ( thisJet.hwPt() * std::trunc ( 511. * sin ( 2 * M_PI * iphi / 72.0 ) )) >> 10; } - + if (thisJet.hwPt()>etSumEtThresholdHwEt_ && thisJet.hwEta()>=etSumEtaMinEt_ && thisJet.hwEta()<=etSumEtaMaxEt_) { ringHt += thisJet.hwPt(); } @@ -75,19 +75,18 @@ void l1t::Stage2Layer2JetSumAlgorithmFirmwareImp1::processEvent(const std::vecto hx += (ringHx >> 5); hy += (ringHy >> 5); ht += (ringHt >> 5); - + } - + math::XYZTLorentzVector p4; - + l1t::EtSum htSumHt(p4,l1t::EtSum::EtSumType::kTotalHt,ht,0,0,0); l1t::EtSum htSumHx(p4,l1t::EtSum::EtSumType::kTotalHtx,hx,0,0,0); l1t::EtSum htSumHy(p4,l1t::EtSum::EtSumType::kTotalHty,hy,0,0,0); - + htsums.push_back(htSumHt); htsums.push_back(htSumHx); htsums.push_back(htSumHy); - + } } - diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2TauAlgorithmFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2TauAlgorithmFirmwareImp1.cc index ba3e9d1c00cd9..f974fe8c8e358 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2TauAlgorithmFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2Layer2TauAlgorithmFirmwareImp1.cc @@ -12,7 +12,7 @@ #include "L1Trigger/L1TCalorimeter/interface/CaloStage2Nav.h" -l1t::Stage2Layer2TauAlgorithmFirmwareImp1::Stage2Layer2TauAlgorithmFirmwareImp1(CaloParams* params) : +l1t::Stage2Layer2TauAlgorithmFirmwareImp1::Stage2Layer2TauAlgorithmFirmwareImp1(CaloParamsHelper* params) : params_(params) { @@ -31,7 +31,7 @@ void l1t::Stage2Layer2TauAlgorithmFirmwareImp1::processEvent(const std::vector & taus) { merging(clusters, towers, taus); - + } @@ -40,7 +40,7 @@ void l1t::Stage2Layer2TauAlgorithmFirmwareImp1::merging(const std::vector tmpClusters(clusters); @@ -127,7 +127,7 @@ void l1t::Stage2Layer2TauAlgorithmFirmwareImp1::merging(const std::vectortauIsoAreaNrTowersEta(),params_->tauIsoAreaNrTowersEta(), - -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); + -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - - //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta to ieta=cluster.Eta+1 + + //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,0,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are from ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are from ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are from ieta=cluster.Eta to ieta=cluster.Eta+2 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are from ieta=cluster.Eta to ieta=cluster.Eta+2 hwFootPrint = CaloTools::calHwEtSum(iEtaP,iPhiP,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are from ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are from ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } } if(!mainCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT) && secondaryCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT)){ // SumEt in (ieta,iphi) = 5x9 centered in the cluster.Eta-1, cluster.Phi+1 hwEtSum = CaloTools::calHwEtSum(iEtaM,iPhiP,towers,-1*params_->tauIsoAreaNrTowersEta(),params_->tauIsoAreaNrTowersEta(), - -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); + -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are from ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are from ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta-1 && ieta=cluster.Eta + //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta-1 && ieta=cluster.Eta hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,-1,0,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-2 to ieta=cluster.Eta + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-2 to ieta=cluster.Eta hwFootPrint = CaloTools::calHwEtSum(iEtaM,iPhiP,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } } if(!mainCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT) && !secondaryCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT)){ // SumEt in (ieta,iphi) = 5x9 centered in the cluster.Eta, cluster.Phi+1 hwEtSum = CaloTools::calHwEtSum(iEta,iPhiP,towers,-1*params_->tauIsoAreaNrTowersEta(),params_->tauIsoAreaNrTowersEta(), - -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); - + -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); + if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta && ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta && ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,0,+1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta-1 && ieta=cluster.Eta + //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta-1 && ieta=cluster.Eta hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiP,towers,-1,0,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } } } - if(!mainCluster.checkClusterFlag(CaloCluster::MERGE_UPDOWN) && secondaryCluster.checkClusterFlag(CaloCluster::MERGE_UPDOWN)){ + if(!mainCluster.checkClusterFlag(CaloCluster::MERGE_UPDOWN) && secondaryCluster.checkClusterFlag(CaloCluster::MERGE_UPDOWN)){ if(mainCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT) && !secondaryCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT)){ // SumEt in (ieta,iphi) = 5x9 centered in the cluster.Eta+1, cluster.Phi-1 hwEtSum = CaloTools::calHwEtSum(iEtaM,iPhiP,towers,-1*params_->tauIsoAreaNrTowersEta(),params_->tauIsoAreaNrTowersEta(), - -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); + -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta && ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta && ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,0,+1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta to ieta=cluster.Eta+2 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta to ieta=cluster.Eta+2 hwFootPrint = CaloTools::calHwEtSum(iEtaP,iPhiM,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } } if(!mainCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT) && secondaryCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT)){ // SumEt in (ieta,iphi) = 5x9 centered in the cluster.Eta-1, cluster.Phi-1 hwEtSum = CaloTools::calHwEtSum(iEtaM,iPhiM,towers,-1*params_->tauIsoAreaNrTowersEta(),params_->tauIsoAreaNrTowersEta(), - -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); + -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta-1 && ieta=cluster.Eta + //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta-1 && ieta=cluster.Eta hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,-1,0,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-2 to ieta=cluster.Eta + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-2 to ieta=cluster.Eta hwFootPrint = CaloTools::calHwEtSum(iEtaM,iPhiM,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } } if(!mainCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT) && !secondaryCluster.checkClusterFlag(CaloCluster::MERGE_LEFTRIGHT)){ // SumEt in (ieta,iphi) = 5x9 centered in the cluster.Eta, cluster.Phi-1 or Phi-2 hwEtSum = CaloTools::calHwEtSum(iEta,iPhiM,towers,-1*params_->tauIsoAreaNrTowersEta(),params_->tauIsoAreaNrTowersEta(), - -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); + -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 3x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,-1,1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta to ieta=cluster.Eta+1 + //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta to ieta=cluster.Eta+1 hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,0,+1,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } if(!mainCluster.checkClusterFlag(CaloCluster::TRIM_LEFT) && !secondaryCluster.checkClusterFlag(CaloCluster::TRIM_LEFT)){ - //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta + //Evaluation of the tau footprint of a size 2x5, the slices in ieta are ieta=cluster.Eta-1 to ieta=cluster.Eta hwFootPrint = CaloTools::calHwEtSum(iEta,iPhiM,towers,-1,0,-1*params_->tauIsoVetoNrTowersPhi(),params_->tauIsoVetoNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); } } } int isolBit = 0; - + int nrTowers = CaloTools::calNrTowers(-1*params_->tauPUSParam(1),params_->tauPUSParam(1),1,72,towers,1,999,CaloTools::CALO); unsigned int lutAddress = isoLutIndex(calibPt, nrTowers); - + isolBit = hwEtSum-hwFootPrint <= (params_->tauIsolationLUT()->data(lutAddress)); taus.back().setHwIso(isolBit); @@ -354,17 +354,17 @@ void l1t::Stage2Layer2TauAlgorithmFirmwareImp1::merging(const std::vectortauIsoAreaNrTowersEta(),params_->tauIsoAreaNrTowersEta(), -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); - + int hwFootPrint = isoCalTauHwFootPrint(mainCluster,towers); - + int isolBit = 0; int nrTowers = CaloTools::calNrTowers(-1*params_->tauPUSParam(1),params_->tauPUSParam(1),1,72,towers,1,999,CaloTools::CALO); unsigned int lutAddress = isoLutIndex(calibPt, nrTowers); - + isolBit = hwEtSum-hwFootPrint <= params_->tauIsolationLUT()->data(lutAddress); taus.back().setHwIso(isolBit); } @@ -385,17 +385,17 @@ void l1t::Stage2Layer2TauAlgorithmFirmwareImp1::merging(const std::vectortauIsoAreaNrTowersEta(),params_->tauIsoAreaNrTowersEta(), -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); - + int hwFootPrint = isoCalTauHwFootPrint(mainCluster,towers); - + int isolBit = 0; int nrTowers = CaloTools::calNrTowers(-1*params_->tauPUSParam(1),params_->tauPUSParam(1),1,72,towers,1,999,CaloTools::CALO); unsigned int lutAddress = isoLutIndex(calibPt, nrTowers); - + isolBit = hwEtSum-hwFootPrint <= params_->tauIsolationLUT()->data(lutAddress); taus.back().setHwIso(isolBit); @@ -408,17 +408,17 @@ void l1t::Stage2Layer2TauAlgorithmFirmwareImp1::merging(const std::vectortauIsoAreaNrTowersEta(),params_->tauIsoAreaNrTowersEta(), -1*params_->tauIsoAreaNrTowersPhi(),params_->tauIsoAreaNrTowersPhi(),params_->tauPUSParam(2),CaloTools::CALO); - + int hwFootPrint = isoCalTauHwFootPrint(mainCluster,towers); int isolBit = 0; int nrTowers = CaloTools::calNrTowers(-1*params_->tauPUSParam(1),params_->tauPUSParam(1),1,72,towers,1,999,CaloTools::CALO); unsigned int lutAddress = isoLutIndex(calibPt, nrTowers); - + isolBit = hwEtSum-hwFootPrint <= params_->tauIsolationLUT()->data(lutAddress); taus.back().setHwIso(isolBit); @@ -429,7 +429,7 @@ void l1t::Stage2Layer2TauAlgorithmFirmwareImp1::merging(const std::vector& towers) +int l1t::Stage2Layer2TauAlgorithmFirmwareImp1::isoCalTauHwFootPrint(const l1t::CaloCluster& clus,const std::vector& towers) { int iEta=clus.hwEta(); int iPhi=clus.hwPhi(); @@ -473,7 +473,7 @@ void l1t::Stage2Layer2TauAlgorithmFirmwareImp1::loadCalibrationLuts() size = (1 << lut->nrBitsData()); nBins = (1 << 6); // can't auto-extract this now due to combined LUT. - + emptyCoeff.resize(nBins,0.); binSize = (maxScaleEta-minScaleEta)/(float)size; coefficients_.push_back(emptyCoeff); @@ -503,7 +503,7 @@ double l1t::Stage2Layer2TauAlgorithmFirmwareImp1::calibratedPt(int hwPtEm, int h else { double offset = (barrel) ? offsetBarrelH_ : offsetEndcapsH_; calibPt = h*coefficients_[2+ilutOffset][ibin]+offset; - } + } // eta calibration if(ieta<-28) ieta=-28; @@ -520,11 +520,11 @@ unsigned int l1t::Stage2Layer2TauAlgorithmFirmwareImp1::isoLutIndex(int Et, unsi { const unsigned int kTowerGranularity=params_->tauPUSParam(0); unsigned int nrTowersNormed = nrTowers/kTowerGranularity; - + if (nrTowersNormed > 1023) nrTowersNormed = 1023; // 10 bits for towers int kTowerOffs = 256*nrTowersNormed; - + if (Et > 255) Et = 255; // 8 bit for E - + return (kTowerOffs + Et); } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2MainProcessorImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2MainProcessorImp1.cc index 80ee544a83370..77bcf550ab5aa 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2MainProcessorImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2MainProcessorImp1.cc @@ -19,11 +19,11 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxJetAlgoFirmware.h" #include "L1Trigger/L1TCalorimeter/interface/Stage2Layer2DemuxSumsAlgoFirmware.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" using namespace std; -l1t::Stage2MainProcessorFirmwareImp1::Stage2MainProcessorFirmwareImp1(unsigned fwv, CaloParams* params) : +l1t::Stage2MainProcessorFirmwareImp1::Stage2MainProcessorFirmwareImp1(unsigned fwv, CaloParamsHelper* params) : m_params(params) { @@ -31,13 +31,13 @@ l1t::Stage2MainProcessorFirmwareImp1::Stage2MainProcessorFirmwareImp1(unsigned f m_egClusterAlgo = new Stage2Layer2ClusterAlgorithmFirmwareImp1(m_params, Stage2Layer2ClusterAlgorithmFirmwareImp1::ClusterInput::E); m_egAlgo = new Stage2Layer2EGammaAlgorithmFirmwareImp1(m_params); - m_tauClusterAlgo = new Stage2Layer2ClusterAlgorithmFirmwareImp1(m_params, + m_tauClusterAlgo = new Stage2Layer2ClusterAlgorithmFirmwareImp1(m_params, Stage2Layer2ClusterAlgorithmFirmwareImp1::ClusterInput::EH); m_tauAlgo = new Stage2Layer2TauAlgorithmFirmwareImp1(m_params); m_jetAlgo = new Stage2Layer2JetAlgorithmFirmwareImp1(m_params); m_sumAlgo = new Stage2Layer2EtSumAlgorithmFirmwareImp1(m_params); m_jetSumAlgo = new Stage2Layer2JetSumAlgorithmFirmwareImp1(m_params); - + m_demuxEGAlgo = new Stage2Layer2DemuxEGAlgoFirmwareImp1(m_params); m_demuxTauAlgo = new Stage2Layer2DemuxTauAlgoFirmwareImp1(m_params); m_demuxJetAlgo = new Stage2Layer2DemuxJetAlgoFirmwareImp1(m_params); @@ -46,7 +46,7 @@ l1t::Stage2MainProcessorFirmwareImp1::Stage2MainProcessorFirmwareImp1(unsigned f } l1t::Stage2MainProcessorFirmwareImp1::~Stage2MainProcessorFirmwareImp1() -{ +{ }; @@ -78,7 +78,7 @@ void l1t::Stage2MainProcessorFirmwareImp1::processEvent(const std::vectorprocessEvent( tauClusters,outTowers, mpTaus ); m_jetAlgo->processEvent( outTowers, mpJets, mpAllJets ); m_sumAlgo->processEvent( outTowers, towerSums ); - m_jetSumAlgo->processEvent( mpAllJets, jetSums ); + m_jetSumAlgo->processEvent( mpAllJets, jetSums ); clusters.insert( clusters.end(), egClusters.begin(), egClusters.end() ); @@ -111,5 +111,3 @@ void l1t::Stage2MainProcessorFirmwareImp1::print(std::ostream& out) const { out << " Sums algo : " << (m_sumAlgo?1:0) << std::endl; } - - diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2PreProcessFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2PreProcessFirmwareImp1.cc index 2436e08a04fe1..1612078fcd152 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2PreProcessFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2PreProcessFirmwareImp1.cc @@ -9,29 +9,24 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2PreProcessorFirmware.h" #include "L1Trigger/L1TCalorimeter/interface/Stage2TowerCompressAlgorithmFirmware.h" -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" using namespace std; -l1t::Stage2PreProcessorFirmwareImp1::Stage2PreProcessorFirmwareImp1(unsigned fwv, CaloParams* params) : +l1t::Stage2PreProcessorFirmwareImp1::Stage2PreProcessorFirmwareImp1(unsigned fwv, CaloParamsHelper* params) : m_params(params) { m_towerAlgo = new Stage2TowerCompressAlgorithmFirmwareImp1(m_params); - + } l1t::Stage2PreProcessorFirmwareImp1::~Stage2PreProcessorFirmwareImp1() -{ +{ }; -//void l1t::Stage2PreProcessorFirmwareImp1::setParams(CaloParams* params) { -// m_params = params; -//} - - //need to switch to BXVector void l1t::Stage2PreProcessorFirmwareImp1::processEvent(const std::vector & inTowers, std::vector & outTowers) { @@ -48,5 +43,3 @@ void l1t::Stage2PreProcessorFirmwareImp1::print(std::ostream& out) const { out << " Tower compress algo : " << (m_towerAlgo?1:0) << std::endl; } - - diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2TowerCompressAlgorithmFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2TowerCompressAlgorithmFirmwareImp1.cc index ec4ff326ab643..01bd2b494fb29 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2TowerCompressAlgorithmFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2TowerCompressAlgorithmFirmwareImp1.cc @@ -9,9 +9,9 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2TowerCompressAlgorithmFirmware.h" //#include "DataFormats/Math/interface/LorentzVector.h " -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" -l1t::Stage2TowerCompressAlgorithmFirmwareImp1::Stage2TowerCompressAlgorithmFirmwareImp1(CaloParams* params) : +l1t::Stage2TowerCompressAlgorithmFirmwareImp1::Stage2TowerCompressAlgorithmFirmwareImp1(CaloParamsHelper* params) : params_(params) { @@ -41,22 +41,22 @@ void l1t::Stage2TowerCompressAlgorithmFirmwareImp1::processEvent(const std::vect int etEm = tow->hwEtEm(); int etHad = tow->hwEtHad(); - + int ratio = 0; if (etEm>0 && etHad>0) { if (etEm>=etHad) ratio = (int) std::round(log(float(etEm) / float(etHad))/log(2.)); else ratio = (int) std::round(log(float(etHad) / float(etEm))/log(2.)); } ratio &= params_->towerMaskRatio() ; - + int sum = etEm + etHad; sum &= params_->towerMaskSum() ; - + int qual = 0; qual |= (etEm==0 || etHad==0 ? 0x1 : 0x0 ); // denominator ==0 flag qual |= ((etHad==0 && etEm>0) || etEm>=etHad ? 0x2 : 0x0 ); // E/H flag qual |= (tow->hwQual() & 0xc); // get feature bits from existing tower - + l1t::CaloTower newTow; newTow.setHwEtEm(etEm); newTow.setHwEtHad(etHad); @@ -65,9 +65,9 @@ void l1t::Stage2TowerCompressAlgorithmFirmwareImp1::processEvent(const std::vect newTow.setHwPt( sum ); newTow.setHwEtRatio( ratio ); newTow.setHwQual( qual ); - + outTowers.push_back(newTow); - + } } diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage2TowerDecompressAlgorithmFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage2TowerDecompressAlgorithmFirmwareImp1.cc index 8d866ff05cb32..c9e412047ecf1 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage2TowerDecompressAlgorithmFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage2TowerDecompressAlgorithmFirmwareImp1.cc @@ -9,9 +9,9 @@ #include "L1Trigger/L1TCalorimeter/interface/Stage2TowerDecompressAlgorithmFirmware.h" //#include "DataFormats/Math/interface/LorentzVector.h " -#include "CondFormats/L1TObjects/interface/CaloParams.h" +#include "L1Trigger/L1TCalorimeter/interface/CaloParamsHelper.h" -l1t::Stage2TowerDecompressAlgorithmFirmwareImp1::Stage2TowerDecompressAlgorithmFirmwareImp1(CaloParams* params) : +l1t::Stage2TowerDecompressAlgorithmFirmwareImp1::Stage2TowerDecompressAlgorithmFirmwareImp1(CaloParamsHelper* params) : params_(params) { @@ -33,52 +33,52 @@ void l1t::Stage2TowerDecompressAlgorithmFirmwareImp1::processEvent(const std::ve ++tow ) { if (!params_->doTowerEncoding()) { - + outTowers.push_back( *tow ); - + } - + else { - - + + int sum = tow->hwPt(); int ratio = tow->hwEtRatio(); int qual = tow->hwQual(); - + int denomCoeff = int ( ( 128./ ( 1. + ratio ) ) + 0.5 ); int numCoeff = 128 - denomCoeff; - + // if ((qual & 0x1)==0) { // switch (ratio) { - // case 000 : + // case 000 : // numCoeff = 64; // denomCoeff = 64; // break; - // case 001 : + // case 001 : // numCoeff = 43; // denomCoeff = 85; // break; - // case 010 : + // case 010 : // numCoeff = 26; // denomCoeff = 102; // break; - // case 011 : + // case 011 : // numCoeff = 14; // denomCoeff = 114; // break; - // case 100 : + // case 100 : // numCoeff = 8; // denomCoeff = 120; // break; - // case 101 : + // case 101 : // numCoeff = 4; // denomCoeff = 124; // break; - // case 110 : + // case 110 : // numCoeff = 2; // denomCoeff = 126; // break; - // case 111 : + // case 111 : // numCoeff = 1; // denomCoeff = 127; // break; @@ -88,13 +88,13 @@ void l1t::Stage2TowerDecompressAlgorithmFirmwareImp1::processEvent(const std::ve // numCoeff = 128; // denomCoeff = 0; // } - + int em = 0; int had = 0; bool denomZeroFlag = ((qual&0x1) > 0); bool eOverHFlag = ((qual&0x2) > 0); - + if (denomZeroFlag && !eOverHFlag) had = sum; @@ -105,29 +105,29 @@ void l1t::Stage2TowerDecompressAlgorithmFirmwareImp1::processEvent(const std::ve em = denomCoeff * sum; had = numCoeff * sum; } - + if (!denomZeroFlag && eOverHFlag) { // E >= H , so ratio==log(E/H) em = numCoeff * sum; had = denomCoeff * sum; } - + em &= params_->towerMaskE(); had &= params_->towerMaskH(); - + l1t::CaloTower newTow; newTow.setHwEta( tow->hwEta() ); newTow.setHwPhi( tow->hwPhi() ); newTow.setHwEtEm( em ); newTow.setHwEtHad( had ); - + newTow.setHwPt( sum ); newTow.setHwEtRatio( ratio ); newTow.setHwQual( qual ); - + outTowers.push_back(newTow); - + } - + } } diff --git a/L1Trigger/L1TCalorimeter/src/legacyGtHelper.cc b/L1Trigger/L1TCalorimeter/src/legacyGtHelper.cc index c722ca70d827a..ad46506c1cb02 100644 --- a/L1Trigger/L1TCalorimeter/src/legacyGtHelper.cc +++ b/L1Trigger/L1TCalorimeter/src/legacyGtHelper.cc @@ -9,7 +9,7 @@ namespace l1t { - void calibrateAndRankJets(CaloParamsStage1 *params, + void calibrateAndRankJets(CaloParamsHelper *params, const std::vector * input, std::vector *output){ @@ -33,7 +33,7 @@ namespace l1t { } } - void calibrateAndRankTaus(CaloParamsStage1 *params, + void calibrateAndRankTaus(CaloParamsHelper *params, const std::vector * input, std::vector *output){ @@ -54,7 +54,7 @@ namespace l1t { } - void JetToGtEtaScales(CaloParamsStage1 *params, + void JetToGtEtaScales(CaloParamsHelper *params, const std::vector * input, std::vector *output){ @@ -78,7 +78,7 @@ namespace l1t { } } - void JetToGtPtScales(CaloParamsStage1 *params, + void JetToGtPtScales(CaloParamsHelper *params, const std::vector * input, std::vector *output){ @@ -96,7 +96,7 @@ namespace l1t { } - void EGammaToGtScales(CaloParamsStage1 *params, + void EGammaToGtScales(CaloParamsHelper *params, const std::vector * input, std::vector *output){ @@ -121,7 +121,7 @@ namespace l1t { } } - void TauToGtEtaScales(CaloParamsStage1 *params, + void TauToGtEtaScales(CaloParamsHelper *params, const std::vector * input, std::vector *output){ for(std::vector::const_iterator itTau = input->begin(); @@ -145,7 +145,7 @@ namespace l1t { } } - void TauToGtPtScales(CaloParamsStage1 *params, + void TauToGtPtScales(CaloParamsHelper *params, const std::vector * input, std::vector *output){ for(std::vector::const_iterator itTau = input->begin(); @@ -162,7 +162,7 @@ namespace l1t { } - void EtSumToGtScales(CaloParamsStage1 *params, + void EtSumToGtScales(CaloParamsHelper *params, const std::vector * input, std::vector *output){ for(std::vector::const_iterator itEtSum = input->begin(); diff --git a/L1Trigger/L1TCalorimeter/test/SimL1Emulator_Stage1.py b/L1Trigger/L1TCalorimeter/test/SimL1Emulator_Stage1.py index 07d40da40af5b..c13d7c829e8d9 100644 --- a/L1Trigger/L1TCalorimeter/test/SimL1Emulator_Stage1.py +++ b/L1Trigger/L1TCalorimeter/test/SimL1Emulator_Stage1.py @@ -60,7 +60,7 @@ ### Get new RCT calibrations from CondDB until new GlobalTag is ready ### Goes with tauL1Calib_LUT.txt -### Need new GCT jet calibrations to go with it +### Need new GCT jet calibrations to go with it #from CondCore.DBCommon.CondDBSetup_cfi import CondDBSetup #process.rctSFDB = cms.ESSource("PoolDBESSource", # CondDBSetup,