4 #ifndef L1Trigger_L1CaloTrigger_Phase2L1CaloEGammaUtils 5 #define L1Trigger_L1CaloTrigger_Phase2L1CaloEGammaUtils 179 int phiID =
int((phi +
M_PI) / size_cell);
195 if ((nCard % 2) == 1) {
198 return (16 - nTower);
208 if ((nCard % 2) == 1) {
238 float phi = (
id * size_cell) -
M_PI + 0.5 * size_cell;
277 inline float pt()
const {
return pt_; };
301 int iPhi =
int((phi +
M_PI) / size_cell);
432 inline void addEt(ap_uint<10> newEt) {
et += newEt; };
637 ap_uint<12>
et() {
return (
data & 0xFFF); }
638 ap_uint<4>
hoe() {
return ((
data >> 12) & 0xF); }
642 operator uint16_t() {
return (uint16_t)
data; }
650 ap_uint<16> newEt_uint = (ap_uint<16>)(
int)(newEt /
ECAL_LSB);
652 newEt_uint = (newEt_uint & 0x0FFF);
655 ap_uint<16> bitMask = 0xF000;
664 ap_uint<1> hoeLSB = 0;
692 hoeOut = hoeLSB | (
hoe << 1);
693 ap_uint<16> hoeOutLong =
694 ((((ap_uint<16>)hoeOut) << 12) | 0x0000);
696 ap_uint<16> bitMask = 0x0FFF;
760 ap_uint<15> clusterEt5x5 = 0,
761 ap_uint<15> clusterEt2x5 = 0,
762 ap_uint<2> clusterBrems = 0,
763 float clusterCalib = 1.0,
764 bool cluster_is_ss =
false,
765 bool cluster_is_looseTkss =
false,
766 bool cluster_is_iso =
false,
767 bool cluster_is_looseTkiso =
false,
768 int clusterRegionIdx = 0) {
772 et5x5 = clusterEt5x5;
773 et2x5 = clusterEt2x5;
774 brems = clusterBrems;
775 calib = clusterCalib;
776 is_ss = cluster_is_ss;
789 ap_uint<3>
satur()
const {
return ((
data >> 25) & 0x7); }
793 operator uint32_t()
const {
return (ap_uint<28>)
data; }
814 ap_uint<28> newPt_uint = (ap_uint<28>)(
int)(newPt /
ECAL_LSB);
816 newPt_uint = (newPt_uint & 0x0000FFF);
819 ap_uint<28> bitMask = 0xFFFF000;
826 int crystalEta_in_card =
863 <<
"card " <<
cc <<
", " 864 <<
"et (float): " <<
getPt() <<
", " 881 ecaltp_t
bestOf2(
const ecaltp_t ecaltp0,
const ecaltp_t ecaltp1);
886 Cluster
packCluster(ap_uint<15>& clusterEt, ap_uint<5>& etaMax_t, ap_uint<5>& phiMax_t);
893 ap_uint<5> seed_phi);
896 ap_uint<5> seed_phi);
1053 towPhi = (3 - rctCluster.
towPhi) + (iRCTcardIndex * 4);
1082 int iEta_in_gctCard;
1097 int iEta_in_barrel = iEta_in_gctCard;
1098 return iEta_in_barrel;
1110 int iPhi_card_offset = 0;
1111 if (returnGlobalGCTiPhi) {
1121 return iPhi_in_barrel;
1133 bool getGlobalIndex =
true;
1141 bool getGlobalIndex =
false;
1177 float relativeIsolationAsFloat = 0;
1181 relativeIsolationAsFloat = 0;
1183 relIso = relativeIsolationAsFloat;
1213 std::map<std::string, float>
params;
1220 return caloCrystalCluster;
1251 towPhi - corrTowPhiOffset,
1276 <<
"et (float): " <<
etFloat() <<
", " 1277 <<
"eta: " <<
realEta() <<
", " 1278 <<
"phi: " <<
realPhi() <<
", " 1280 <<
"towEta: " <<
towEta <<
", " 1281 <<
"towPhi: " <<
towPhi <<
", " 1282 <<
"crEta: " <<
crEta <<
", " 1283 <<
"crPhi: " <<
crPhi <<
", " 1284 <<
"iso (GeV): " <<
isoFloat() <<
", " 1285 <<
"rel iso (unitless float): " <<
relIsoFloat() <<
", " 1288 <<
"is_ss: " <<
is_ss <<
", " 1290 <<
"is_iso: " <<
is_iso <<
", " 1292 <<
"brems: " <<
brems << std::endl;
1330 int globalToweriEta(
unsigned int nGCTCard,
unsigned int gctCorrFiberIdx,
unsigned int posInFiber) {
1333 int global_toweriEta;
1334 if (isTowerInPositiveEta) {
1341 return global_toweriEta;
1352 int globalToweriPhi(
unsigned int nGCTCard,
unsigned int gctCorrFiberIdx,
unsigned int posInFiber) {
1355 int toweriPhi_card_offset = 0;
1358 else if (nGCTCard == 1)
1360 else if (nGCTCard == 2)
1364 int global_tower_iPhi = (toweriPhi_card_offset + effectiveFiberIdx) % (
n_towers_Phi);
1365 return global_tower_iPhi;
1372 int global_iEta = gctCard_tower_iEta;
1381 int toweriPhi_card_offset = 0;
1384 else if (nGCTCard == 1)
1386 else if (nGCTCard == 2)
1389 int global_iPhi = (toweriPhi_card_offset + gctCard_tower_iPhi) % (
n_towers_Phi);
1402 int global_tower_iEta =
globalToweriEta(nGCTCard, iFiber, iTowerInFiber);
1403 int global_tower_iPhi =
globalToweriPhi(nGCTCard, iFiber, iTowerInFiber);
1433 unsigned int indexFiber,
1434 unsigned int indexTower) {
1446 <<
"fb: " <<
fb <<
", " 1447 <<
"global tower ieta: " << global_tower_iEta <<
", " 1448 <<
"global tower iphi: " << global_tower_iPhi <<
", " 1478 ap_uint<12> uint_isolation = 0;
1485 bool inOverlapWithAnotherGCTCard = (((toweriPhi_in_GCT_card >= 0) && (toweriPhi_in_GCT_card < 4)) ||
1486 ((toweriPhi_in_GCT_card >= 28) && (toweriPhi_in_GCT_card < 32)));
1487 if (inOverlapWithAnotherGCTCard) {
1493 int isoWindow_toweriEta_in_GCT_card_min =
std::max(0, toweriEta_in_GCT_card - 2);
1494 int isoWindow_toweriEta_in_GCT_card_max =
std::min(toweriEta_in_GCT_card + 2,
N_GCTETA - 1);
1500 int isoWindow_toweriPhi_in_GCT_card_min =
std::max(0, toweriPhi_in_GCT_card - 2);
1501 int isoWindow_toweriPhi_in_GCT_card_max =
std::min(toweriPhi_in_GCT_card + 2,
N_GCTPHI - 1);
1504 int nTowersSummed = 0;
1510 if (!((candFiber == iFiber) && (candCluster == iCluster))) {
1518 if (((candidate_toweriEta >= isoWindow_toweriEta_in_GCT_card_min) &&
1519 (candidate_toweriEta <= isoWindow_toweriEta_in_GCT_card_max)) &&
1520 ((candidate_toweriPhi >= isoWindow_toweriPhi_in_GCT_card_min) &&
1521 (candidate_toweriPhi <= isoWindow_toweriPhi_in_GCT_card_max))) {
1530 for (
int iEta = isoWindow_toweriEta_in_GCT_card_min;
iEta <= isoWindow_toweriEta_in_GCT_card_max;
iEta++) {
1531 for (
int iPhi = isoWindow_toweriPhi_in_GCT_card_min; iPhi <= isoWindow_toweriPhi_in_GCT_card_max; iPhi++) {
1534 int indexInto64Fibers;
1535 int indexInto17TowersInFiber;
1538 if (isTowerInPositiveEta) {
1540 indexInto64Fibers = iPhi;
1542 indexInto17TowersInFiber = (
iEta % 17);
1547 indexInto17TowersInFiber = (16 -
iEta);
1551 uint_isolation += ecalEt;
1559 uint_isolation = (ap_uint<12>)(((
float)uint_isolation) *
scaleFactor);
1585 for (
unsigned int iPhi = 0; iPhi <
N_GCTPHI; iPhi++) {
1602 {11, 13, 15, 17, 19, 21, 23, 25, 10, 12, 14, 16, 18, 20, 22, 24},
1605 {23, 25, 27, 29, 31, 33, 35, 1, 22, 24, 26, 28, 30, 32, 34, 0},
1608 {35, 1, 3, 5, 7, 9, 11, 13, 34, 0, 2, 4, 6, 8, 10, 12}};
1615 <<
".ecalTowerEta() (float): " << thisTower.
ecalTowerEt() <<
", " 1616 <<
".hcalTowerEta() (float): " << thisTower.
hcalTowerEt() <<
", " 1617 <<
".towerIEta(): " << thisTower.
towerIEta() <<
", " 1618 <<
".towerIPhi(): " << thisTower.
towerIPhi() <<
", " 1619 <<
".towerEta() " << thisTower.
towerEta() <<
", " 1620 <<
".towerPhi() " << thisTower.
towerPhi() << std::endl;
1623 void algo_top(
const GCTcard_t& GCTcard,
1624 GCTtoCorr_t& GCTtoCorr,
1625 unsigned int nGCTCard,
1626 std::unique_ptr<l1tp2::CaloCrystalClusterCollection>
const& gctClusters,
1627 std::unique_ptr<l1tp2::CaloTowerCollection>
const& gctTowers,
1628 std::unique_ptr<l1tp2::CaloTowerCollection>
const&
gctFullTowers,
1629 std::unique_ptr<l1t::EGammaBxCollection>
const& gctEGammas,
1630 std::unique_ptr<l1tp2::DigitizedClusterCorrelatorCollection>
const& gctDigitizedClustersCorrelator,
1631 std::unique_ptr<l1tp2::DigitizedTowerCorrelatorCollection>
const& gctDigitizedTowersCorrelator,
1632 std::unique_ptr<l1tp2::DigitizedClusterGTCollection>
const& gctDigitizedClustersGT,
1635 GCTinternal_t
getClustersTowers(
const GCTcard_t& GCTcard,
unsigned int nGCTCard);
1640 bool isPositiveEta);
1644 GCTintTowers_t
getFullTowers(
const GCTinternal_t& GCTinternal);
1647 const GCTinternal_t& GCTinternal,
1648 GCTtoCorr_t& GCTtoCorrOutput,
1649 std::unique_ptr<l1tp2::CaloCrystalClusterCollection>
const& gctClustersOutput,
1650 std::unique_ptr<l1tp2::CaloTowerCollection>
const& gctTowersOutput,
1651 std::unique_ptr<l1t::EGammaBxCollection>
const& gctEGammas,
1652 std::unique_ptr<l1tp2::DigitizedClusterCorrelatorCollection>
const& gctDigitizedClustersCorrelator,
1653 std::unique_ptr<l1tp2::DigitizedTowerCorrelatorCollection>
const& gctDigitizedTowersCorrelator,
1654 std::unique_ptr<l1tp2::DigitizedClusterGTCollection>
const& gctDigitizedClustersGT,
1658 int corrFiberIndexOffset,
1659 int corrTowPhiOffset);
static constexpr float ECAL_eta_range
static constexpr float half_crystal_size
int crystaliPhi(void) const
void setRawEt(short int pt)
void applyCalibration(float factor)
float relIsoFloat() const
GCTCorrfiber_t GCTCorrfiber[N_GCTCORR_FIBERS]
ap_uint< 3 > clusterEta() const
int crystalLocaliEta(int cc) const
float ecalTowerEt() const
static constexpr int N_GCTCLUSTERS_FIBER
void setRelIsoAndFlags(void)
static constexpr float b1
void getECALTowersEt(crystal tempX[CRYSTAL_IN_ETA][CRYSTAL_IN_PHI], ap_uint< 12 > towerEt[12])
GCTtower_t GCTtower[N_GCTETA][N_GCTPHI]
static constexpr int N_GCTTOWERS_CLUSTER_ISO_ONESIDE
static constexpr float high_pt_threshold
const bool isValid(const Frame &aFrame, const FrameQuality &aQuality, const uint16_t aExpectedPos)
RCTcluster_t RCTclusters[N_RCTCLUSTERS_FIBER]
ap_uint< 15 > uint_et2x5() const
l1tp2::CaloCrystalCluster createCaloCrystalCluster(void) const
int getCard_iEtaMax(int cc)
static constexpr float c2_ss
bool passes_iso(float pt, float iso)
void setEcalTowerEt(float et)
static constexpr float e2_looseTkss
GCTCorrfiber_t GCTCorrfiber[N_GCTINTERNAL_FIBERS]
uint32_t cc[maxCellsPerHit]
Geom::Phi< T > phi() const
int globalToweriPhi(void) const
static constexpr int GCTCARD_1_TOWER_IPHI_OFFSET
float hcalEtFloat() const
void printl1tp2TowerInfo(l1tp2::CaloTower thisTower, std::string description="")
clusterInfo getClusterValues(crystal tempX[CRYSTAL_IN_ETA][CRYSTAL_IN_PHI], ap_uint< 5 > seed_eta, ap_uint< 5 > seed_phi)
Sin< T >::type sin(const T &t)
linkECAL & getLinkECAL(int iEta, int iPhi)
void setTowerIPhi(int iPhi)
void setIdHcal(const HcalDetId &idhcal)
int crystalLocaliPhi(int cc) const
clusterInfo getClusterPosition(const ecalRegion_t ecalRegion)
static constexpr int n_towers_Eta
static constexpr int n_clusters_4link
void setPosition(const GlobalVector &pos)
static constexpr float a1_80
int getCard_iPhiMin(int cc)
l1tp2::CaloTower createFullTowerFromCardIdx(int nGCTCard, int gctCard_tower_iEta, int gctCard_tower_iPhi)
void addCrystalE(int iEta, int iPhi, ap_uint< 10 > energy)
void setRegionIdx(int regIdx)
reco::Candidate::PolarLorentzVector p4(void) const
static constexpr int N_GCTPOSITIVE_FIBERS
int globalToweriPhi(unsigned int nGCTCard, unsigned int gctCorrFiberIdx, unsigned int posInFiber)
std::array< std::array< towerHCAL, TOWER_IN_PHI >, TOWER_IN_ETA > towersHCAL
static constexpr int N_GCTTOWERS_FIBER
static constexpr int n_crystals_cardPhi
int getAbsID_iPhi_fromFirmwareCardTowerLink(int nCard, int nTower, int nLink)
float totalEtFloat() const
static constexpr int n_towers_Phi
void setIsolationInfo(void)
static constexpr float eta0_loose_ss
ap_uint< 15 > uint_et5x5() const
ap_uint< 10 > crystalE[CRYSTALS_IN_TOWER_ETA][CRYSTALS_IN_TOWER_PHI]
int looseL1TkMatchWP() const
static constexpr int N_REGIONS_PER_CARD
static constexpr int N_CLUSTERS_PER_REGION
RCTtower_t RCTtowers[N_RCTTOWERS_FIBER]
int globalToweriEta(unsigned int nGCTCard, unsigned int gctCorrFiberIdx, unsigned int posInFiber)
bool isInCard(int cc) const
static constexpr int GCTCARD_0_TOWER_IPHI_OFFSET
void removeClusterFromCrystal(crystal temp[CRYSTAL_IN_ETA][CRYSTAL_IN_PHI], ap_uint< 5 > seed_eta, ap_uint< 5 > seed_phi, ap_uint< 2 > brems)
TEMPL(T2) struct Divides void
Cluster(ap_uint< 12 > clusterEnergy, ap_uint< 5 > towerEta, ap_uint< 2 > towerPhi, ap_uint< 3 > clusterEta, ap_uint< 3 > clusterPhi, ap_uint< 3 > satur, ap_uint< 15 > clusterEt5x5=0, ap_uint< 15 > clusterEt2x5=0, ap_uint< 2 > clusterBrems=0, float clusterCalib=1.0, bool cluster_is_ss=false, bool cluster_is_looseTkss=false, bool cluster_is_iso=false, bool cluster_is_looseTkiso=false, int clusterRegionIdx=0)
float realPhi(void) const
GCTcluster_t GCTclusters[N_GCTCLUSTERS_FIBER]
int inCardToweriPhi(void) const
crystal(ap_uint< 10 > energy)
void setHcalTowerEt(float et)
static constexpr int CRYSTAL_IN_ETA
void setTowerIEta(int iEta)
float getTowerPhi_fromAbsID(int id)
int getCard_refCrystal_iEta(int cc)
bool passes_looseTkss(float pt, float eta, float ss)
void printHitInfo(std::string description="") const
int inCardToweriEta(void) const
bool passes_ss(float pt, float eta, float ss)
int globalClusteriPhi(bool returnGlobalGCTiPhi=true) const
crystal & operator=(const crystal &rhs)
static constexpr float c0_ss
Cluster getClusterFromRegion3x4(crystal temp[CRYSTAL_IN_ETA][CRYSTAL_IN_PHI])
static constexpr int n_towers_per_link
void setTowerPhi(float phi)
ecalRegion_t initStructure(crystal temporary[CRYSTAL_IN_ETA][CRYSTAL_IN_PHI])
void printGCTTowerInfoFromGlobalIdx(int global_tower_iEta, int global_tower_iPhi, std::string description="")
ecaltp_t getPeakBin20N(const etaStrip_t etaStrip)
static constexpr int N_GCTPHI
ap_uint< 5 > towerEta() const
l1t::EGamma createL1TEGamma(void) const
const GlobalVector & position() const
static constexpr float HCAL_LSB
void computeClusterIsolationInPlace(int nGCTCard)
RCTcard_t RCTcardEtaNeg[N_RCTCARDS_PHI]
int globalToweriEta(void) const
float getTowerEta_fromAbsID(int id)
static constexpr float slideIsoPtThreshold
static constexpr int N_RCTCARDS_PHI
towerHCAL & getTowerHCAL(int iEta, int iPhi)
l1tp2::DigitizedClusterGT createDigitizedClusterGT(bool isValid) const
ap_uint< 3 > satur() const
static constexpr int N_RCTTOWERS_FIBER
static constexpr int GCTCARD_2_TOWER_IPHI_OFFSET
int globalToweriPhiFromGCTcardiPhi(unsigned int nGCTCard, int gctCard_tower_iPhi)
static constexpr float ECAL_LSB
GCTcard_t getClustersCombined(const GCTcard_t &GCTcard, unsigned int nGCTCard)
Abs< T >::type abs(const T &t)
static constexpr int n_towers_cardPhi
static constexpr int N_RCTGCT_FIBERS
int passesShowerShape() const
tower_t(ap_uint< 12 > et, ap_uint< 4 > hoe)
constexpr G4double scaleFactor
ap_uint< 10 > et_uint() const
static constexpr int N_RCTCLUSTERS_FIBER
void stitchClusterOverRegionBoundary(std::vector< Cluster > &cluster_list, int towerEtaUpper, int towerEtaLower, int cc)
ap_uint< 3 > clusterPhi() const
const float realPhi(int cc)
l1tp2::DigitizedClusterCorrelator createDigitizedClusterCorrelator(const int corrTowPhiOffset) const
int getRegionNumber(const int local_iEta)
int getCard_iPhiMax(int cc)
int getCard_iEtaMin(int cc)
l1tp2::CaloTower createCaloTowerFromFiberIdx(int nGCTCard, int iFiber, int iTowerInFiber)
static constexpr float cut_500_MeV
static constexpr float loose_ss_offset
void setTowerEta(float eta)
std::array< towers3x4, N_REGIONS_PER_CARD > card3x4Towers
static constexpr int n_clusters_link
static constexpr int N_GCTINTERNAL_FIBERS
void addEt(ap_uint< 10 > newEt)
int crystaliEta(void) const
static constexpr int TOWER_IN_PHI
float realEta(void) const
static constexpr float a0_80
int getTower_absPhiID(float phi)
static constexpr float c1_ss
const EBDetId & id() const
void setTowerIEta(short int ieta)
ap_uint< 10 > getCrystalE(int iEta, int iPhi)
GCTintTowers_t getFullTowers(const GCTinternal_t &GCTinternal)
const int crystaliPhiFromCardRegionInfo(int cc)
void printClusterInfo(int cc, std::string description="")
const float realEta(int cc)
void setShape(short int s)
float hcalTowerEt() const
static constexpr int TOWER_IN_ETA
static constexpr int N_GCTCARDS
void writeToCorrelatorAndGTOutputs(const GCTinternal_t &GCTinternal, GCTtoCorr_t &GCTtoCorrOutput, std::unique_ptr< l1tp2::CaloCrystalClusterCollection > const &gctClustersOutput, std::unique_ptr< l1tp2::CaloTowerCollection > const &gctTowersOutput, std::unique_ptr< l1t::EGammaBxCollection > const &gctEGammas, std::unique_ptr< l1tp2::DigitizedClusterCorrelatorCollection > const &gctDigitizedClustersCorrelator, std::unique_ptr< l1tp2::DigitizedTowerCorrelatorCollection > const &gctDigitizedTowersCorrelator, std::unique_ptr< l1tp2::DigitizedClusterGTCollection > const &gctDigitizedClustersGT, int nGCTCard, int fiberStart, int fiberEnd, int corrFiberIndexOffset, int corrTowPhiOffset)
void setIsoEt(short int iso)
ap_uint< 2 > towerPhi() const
region3x4 & getRegion3x4(int idx)
float ecalEtFloat() const
clusterInfo getBremsValuesPos(crystal tempX[CRYSTAL_IN_ETA][CRYSTAL_IN_PHI], ap_uint< 5 > seed_eta, ap_uint< 5 > seed_phi)
int globalClusteriEta(void) const
void doProximityAndBremsStitching(const RCTcard_t(&inputCards)[N_RCTCARDS_PHI], RCTcard_t(&outputCards)[N_RCTCARDS_PHI], int iStartingCard, bool isPositiveEta)
void setEt_uint(ap_uint< 10 > et_uint)
static constexpr float eta3_loose_ss
static constexpr int N_GCTETA
static constexpr int N_GCTCORR_FIBERS
bool passes_looseTkiso(float pt, float iso)
void initFromRCTCluster(int iRCTcardIndex, bool isPosEta, const RCTcluster_t &rctCluster)
void applyCalibration(float factor)
static constexpr float e0_looseTkss
RCTtoGCTfiber_t RCTtoGCTfiber[N_RCTGCT_FIBERS]
int globalToweriEtaFromGCTcardiEta(int gctCard_tower_iEta)
void setId(const EBDetId &id)
void setExperimentalParams(const std::map< std::string, float > ¶ms)
static constexpr int n_crystals_cardEta
static constexpr float d1
RCTcard_t RCTcardEtaPos[N_RCTCARDS_PHI]
ap_uint< 12 > clusterEnergy() const
int getTower_absEtaID(float eta)
towers3x4 & getTowers3x4(int idx)
static constexpr float eta2_loose_ss
l1tp2::DigitizedTowerCorrelator createDigitizedTowerCorrelator(unsigned int indexCard, unsigned int indexFiber, unsigned int indexTower)
static constexpr int CRYSTALS_IN_TOWER_ETA
void setTowerIPhi(short int iphi)
int getCard_refCrystal_iPhi(int cc)
std::array< std::array< linkECAL, TOWER_IN_PHI >, TOWER_IN_ETA > linksECAL
const int crystaliEtaFromCardRegionInfo(int cc)
static constexpr int n_towers_halfPhi
crystalMax getPeakBin15N(const etaStripPeak_t etaStrip)
Cluster packCluster(ap_uint< 15 > &clusterEt, ap_uint< 5 > &etaMax_t, ap_uint< 5 > &phiMax_t)
void printGCTClusterInfo(std::string description="")
static constexpr float b2
std::array< region3x4, N_REGIONS_PER_CARD > card3x4Regions
clusterInfo getBremsValuesNeg(crystal tempX[CRYSTAL_IN_ETA][CRYSTAL_IN_PHI], ap_uint< 5 > seed_eta, ap_uint< 5 > seed_phi)
static constexpr int n_towers_cardEta
void addHoverEToTower(ap_uint< 12 > ECAL, ap_uint< 12 > HCAL)
static constexpr float d0
static constexpr float b0
GCTtower_t GCTtowers[N_GCTTOWERS_FIBER]
static constexpr float eta1_loose_ss
GCTinternal_t getClustersTowers(const GCTcard_t &GCTcard, unsigned int nGCTCard)
static constexpr int n_links_card
void writeToPFOutput(int nGCTCard, std::unique_ptr< l1tp2::CaloTowerCollection > const &gctFullTowers)
void algo_top(const GCTcard_t &GCTcard, GCTtoCorr_t &GCTtoCorr, unsigned int nGCTCard, std::unique_ptr< l1tp2::CaloCrystalClusterCollection > const &gctClusters, std::unique_ptr< l1tp2::CaloTowerCollection > const &gctTowers, std::unique_ptr< l1tp2::CaloTowerCollection > const &gctFullTowers, std::unique_ptr< l1t::EGammaBxCollection > const &gctEGammas, std::unique_ptr< l1tp2::DigitizedClusterCorrelatorCollection > const &gctDigitizedClustersCorrelator, std::unique_ptr< l1tp2::DigitizedTowerCorrelatorCollection > const &gctDigitizedTowersCorrelator, std::unique_ptr< l1tp2::DigitizedClusterGTCollection > const &gctDigitizedClustersGT, l1tp2::ParametricCalibration calib_)
static constexpr float a0
void setCrystalE(int iEta, int iPhi, ap_uint< 10 > energy)
Power< A, B >::type pow(const A &a, const B &b)
void initFromRCTTower(const RCTtower_t &rctTower)
static constexpr int CRYSTAL_IN_PHI
ecaltp_t bestOf2(const ecaltp_t ecaltp0, const ecaltp_t ecaltp1)
static constexpr int CRYSTALS_IN_TOWER_PHI
Geom::Theta< T > theta() const
int getAbsID_iEta_fromFirmwareCardTowerLink(int nCard, int nTower, int nLink)
bool compareClusterET(const Cluster &lhs, const Cluster &rhs)
static const unsigned int GCTcardtoRCTcardnumber[N_GCTCARDS][N_RCTCARDS_PHI *2]
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
static constexpr float e1_looseTkss