4 #ifndef L1Trigger_L1CaloTrigger_Phase2L1CaloEGammaUtils 5 #define L1Trigger_L1CaloTrigger_Phase2L1CaloEGammaUtils 57 static constexpr
float b0 = 0.38,
b1 = 1.9,
b2 = 0.05;
59 static constexpr
float d0 = 0.96,
d1 = 0.0003;
98 return (ap_uint<12>(hcalEtAsFloat /
ECAL_LSB));
183 int phiID =
int((phi +
M_PI) / size_cell);
199 if ((nCard % 2) == 1) {
202 return (16 - nTower);
212 if ((nCard % 2) == 1) {
242 float phi = (
id * size_cell) -
M_PI + 0.5 * size_cell;
281 inline float pt()
const {
return pt_; };
305 int iPhi =
int((phi +
M_PI) / size_cell);
458 inline void addEt(ap_uint<10> newEt) {
et += newEt; };
699 ap_uint<12>
et() {
return (
data & 0xFFF); }
700 ap_uint<4>
hoe() {
return ((
data >> 12) & 0xF); }
704 operator uint16_t() {
return (uint16_t)
data; }
712 ap_uint<16> newEt_uint = (ap_uint<16>)(
int)(newEt * 8.0);
714 newEt_uint = (newEt_uint & 0x0FFF);
717 ap_uint<16> bitMask = 0xF000;
728 ap_uint<1> hoeLSB = 0;
756 hoeOut = hoeLSB | (
hoe << 1);
757 ap_uint<16> hoeOutLong =
758 ((((ap_uint<16>)hoeOut) << 12) | 0x0000);
760 ap_uint<16> bitMask = 0x0FFF;
835 ap_uint<15> clusterEt5x5 = 0,
836 ap_uint<15> clusterEt2x5 = 0,
837 ap_uint<2> clusterBrems = 0,
838 float clusterCalib = 1.0,
839 bool cluster_is_ss =
false,
840 bool cluster_is_looseTkss =
false,
841 bool cluster_is_iso =
false,
842 bool cluster_is_looseTkiso =
false,
843 int clusterRegionIdx = 0) {
847 et2x5 = clusterEt2x5;
848 brems = clusterBrems;
849 calib = clusterCalib;
850 is_ss = cluster_is_ss;
877 ap_uint<3>
satur()
const {
return ((
data >> 25) & 0x7); }
881 operator uint32_t()
const {
return (ap_uint<28>)
data; }
902 ap_uint<28> newPt_uint = (ap_uint<28>)(
int)(newPt /
ECAL_LSB);
904 newPt_uint = (newPt_uint & 0x0000FFF);
907 ap_uint<28> bitMask = 0xFFFF000;
914 int crystalEta_in_card =
951 <<
"card " <<
cc <<
", " 952 <<
"et (float): " <<
getPt() <<
", " 969 ecaltp_t
bestOf2(
const ecaltp_t ecaltp0,
const ecaltp_t ecaltp1);
974 Cluster
packCluster(ap_uint<15>& clusterEt, ap_uint<5>& etaMax_t, ap_uint<5>& phiMax_t);
981 ap_uint<5> seed_phi);
984 ap_uint<5> seed_phi);
1135 towPhi = (3 - rctCluster.
towPhi) + (iRCTcardIndex * 4);
1164 int iEta_in_gctCard;
1179 int iEta_in_barrel = iEta_in_gctCard;
1180 return iEta_in_barrel;
1192 int iPhi_card_offset = 0;
1193 if (returnGlobalGCTiPhi) {
1203 return iPhi_in_barrel;
1215 bool getGlobalIndex =
true;
1223 bool getGlobalIndex =
false;
1259 float relativeIsolationAsFloat = 0;
1263 relativeIsolationAsFloat = 0;
1265 relIso = relativeIsolationAsFloat;
1295 std::map<std::string, float>
params;
1302 return caloCrystalCluster;
1333 towPhi - corrTowPhiOffset,
1358 <<
"et (float): " <<
etFloat() <<
", " 1359 <<
"eta: " <<
realEta() <<
", " 1360 <<
"phi: " <<
realPhi() <<
", " 1362 <<
"towEta: " <<
towEta <<
", " 1363 <<
"towPhi: " <<
towPhi <<
", " 1364 <<
"crEta: " <<
crEta <<
", " 1365 <<
"crPhi: " <<
crPhi <<
", " 1366 <<
"iso (GeV): " <<
isoFloat() <<
", " 1367 <<
"rel iso (unitless float): " <<
relIsoFloat() <<
", " 1370 <<
"is_ss: " <<
is_ss <<
", " 1372 <<
"is_iso: " <<
is_iso <<
", " 1374 <<
"brems: " <<
brems << std::endl;
1412 int globalToweriEta(
unsigned int nGCTCard,
unsigned int gctCorrFiberIdx,
unsigned int posInFiber) {
1415 int global_toweriEta;
1416 if (isTowerInPositiveEta) {
1423 return global_toweriEta;
1434 int globalToweriPhi(
unsigned int nGCTCard,
unsigned int gctCorrFiberIdx,
unsigned int posInFiber) {
1437 int toweriPhi_card_offset = 0;
1440 else if (nGCTCard == 1)
1442 else if (nGCTCard == 2)
1446 int global_tower_iPhi = (toweriPhi_card_offset + effectiveFiberIdx) % (
n_towers_Phi);
1447 return global_tower_iPhi;
1454 int global_iEta = gctCard_tower_iEta;
1463 int toweriPhi_card_offset = 0;
1466 else if (nGCTCard == 1)
1468 else if (nGCTCard == 2)
1471 int global_iPhi = (toweriPhi_card_offset + gctCard_tower_iPhi) % (
n_towers_Phi);
1484 int global_tower_iEta =
globalToweriEta(nGCTCard, iFiber, iTowerInFiber);
1485 int global_tower_iPhi =
globalToweriPhi(nGCTCard, iFiber, iTowerInFiber);
1514 unsigned int indexFiber,
1515 unsigned int indexTower) {
1527 <<
"fb: " <<
fb <<
", " 1528 <<
"global tower ieta: " << global_tower_iEta <<
", " 1529 <<
"global tower iphi: " << global_tower_iPhi <<
", " 1559 ap_uint<12> uint_isolation = 0;
1566 bool inOverlapWithAnotherGCTCard = (((toweriPhi_in_GCT_card >= 0) && (toweriPhi_in_GCT_card < 4)) ||
1567 ((toweriPhi_in_GCT_card >= 28) && (toweriPhi_in_GCT_card < 32)));
1568 if (inOverlapWithAnotherGCTCard) {
1574 int isoWindow_toweriEta_in_GCT_card_min =
std::max(0, toweriEta_in_GCT_card - 2);
1575 int isoWindow_toweriEta_in_GCT_card_max =
std::min(toweriEta_in_GCT_card + 2,
N_GCTETA - 1);
1581 int isoWindow_toweriPhi_in_GCT_card_min =
std::max(0, toweriPhi_in_GCT_card - 2);
1582 int isoWindow_toweriPhi_in_GCT_card_max =
std::min(toweriPhi_in_GCT_card + 2,
N_GCTPHI - 1);
1585 int nTowersSummed = 0;
1591 if (!((candFiber == iFiber) && (candCluster == iCluster))) {
1599 if (((candidate_toweriEta >= isoWindow_toweriEta_in_GCT_card_min) &&
1600 (candidate_toweriEta <= isoWindow_toweriEta_in_GCT_card_max)) &&
1601 ((candidate_toweriPhi >= isoWindow_toweriPhi_in_GCT_card_min) &&
1602 (candidate_toweriPhi <= isoWindow_toweriPhi_in_GCT_card_max))) {
1611 for (
int iEta = isoWindow_toweriEta_in_GCT_card_min;
iEta <= isoWindow_toweriEta_in_GCT_card_max;
iEta++) {
1612 for (
int iPhi = isoWindow_toweriPhi_in_GCT_card_min; iPhi <= isoWindow_toweriPhi_in_GCT_card_max; iPhi++) {
1615 int indexInto64Fibers;
1616 int indexInto17TowersInFiber;
1619 if (isTowerInPositiveEta) {
1621 indexInto64Fibers = iPhi;
1623 indexInto17TowersInFiber = (
iEta % 17);
1628 indexInto17TowersInFiber = (16 -
iEta);
1632 uint_isolation += ecalEt;
1640 uint_isolation = (ap_uint<12>)(((
float)uint_isolation) *
scaleFactor);
1664 void writeToPFOutput(
int nGCTCard, std::unique_ptr<l1tp2::CaloTowerCollection>
const& gctFullTowers) {
1666 for (
unsigned int iPhi = 0; iPhi <
N_GCTPHI; iPhi++) {
1683 {11, 13, 15, 17, 19, 21, 23, 25, 10, 12, 14, 16, 18, 20, 22, 24},
1686 {23, 25, 27, 29, 31, 33, 35, 1, 22, 24, 26, 28, 30, 32, 34, 0},
1689 {35, 1, 3, 5, 7, 9, 11, 13, 34, 0, 2, 4, 6, 8, 10, 12}};
1696 <<
".ecalTowerEta() (float): " << thisTower.
ecalTowerEt() <<
", " 1697 <<
".hcalTowerEta() (float): " << thisTower.
hcalTowerEt() <<
", " 1698 <<
".towerIEta(): " << thisTower.
towerIEta() <<
", " 1699 <<
".towerIPhi(): " << thisTower.
towerIPhi() <<
", " 1700 <<
".towerEta() " << thisTower.
towerEta() <<
", " 1701 <<
".towerPhi() " << thisTower.
towerPhi() << std::endl;
1704 void algo_top(
const GCTcard_t& GCTcard,
1705 GCTtoCorr_t& GCTtoCorr,
1706 unsigned int nGCTCard,
1707 std::unique_ptr<l1tp2::CaloCrystalClusterCollection>
const& gctClusters,
1708 std::unique_ptr<l1tp2::CaloTowerCollection>
const& gctTowers,
1709 std::unique_ptr<l1tp2::CaloTowerCollection>
const& gctFullTowers,
1710 std::unique_ptr<l1t::EGammaBxCollection>
const& gctEGammas,
1711 std::unique_ptr<l1tp2::DigitizedClusterCorrelatorCollection>
const& gctDigitizedClustersCorrelator,
1712 std::unique_ptr<l1tp2::DigitizedTowerCorrelatorCollection>
const& gctDigitizedTowersCorrelator,
1713 std::unique_ptr<l1tp2::DigitizedClusterGTCollection>
const& gctDigitizedClustersGT,
1716 GCTinternal_t
getClustersTowers(
const GCTcard_t& GCTcard,
unsigned int nGCTCard);
1721 bool isPositiveEta);
1725 GCTintTowers_t
getFullTowers(
const GCTinternal_t& GCTinternal);
1728 const GCTinternal_t& GCTinternal,
1729 GCTtoCorr_t& GCTtoCorrOutput,
1730 std::unique_ptr<l1tp2::CaloCrystalClusterCollection>
const& gctClustersOutput,
1731 std::unique_ptr<l1tp2::CaloTowerCollection>
const& gctTowersOutput,
1732 std::unique_ptr<l1t::EGammaBxCollection>
const& gctEGammas,
1733 std::unique_ptr<l1tp2::DigitizedClusterCorrelatorCollection>
const& gctDigitizedClustersCorrelator,
1734 std::unique_ptr<l1tp2::DigitizedTowerCorrelatorCollection>
const& gctDigitizedTowersCorrelator,
1735 std::unique_ptr<l1tp2::DigitizedClusterGTCollection>
const& gctDigitizedClustersGT,
1739 int corrFiberIndexOffset,
1740 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
region3x4 card3x4Regions[N_REGIONS_PER_CARD]
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])
card operator=(const card &other)
GCTtower_t GCTtower[N_GCTETA][N_GCTPHI]
static constexpr int N_GCTTOWERS_CLUSTER_ISO_ONESIDE
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)
Cluster & operator=(const Cluster &rhs)
Sin< T >::type sin(const T &t)
linkECAL & getLinkECAL(int iEta, int iPhi)
crystalMax & operator=(const crystalMax &rhs)
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)
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)
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]
towerHCAL(const towerHCAL &other)
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)
void printHitInfo(std::string description="") const
int inCardToweriEta(void) const
int globalClusteriPhi(bool returnGlobalGCTiPhi=true) const
crystal & operator=(const crystal &rhs)
static constexpr float c0_ss
bool passes_ss(float pt, float 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)
region3x4 operator=(const region3x4 &other)
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
towerHCAL towersHCAL[TOWER_IN_ETA][TOWER_IN_PHI]
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)
tower_t & operator=(const tower_t &rhs)
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
void setTowerEta(float eta)
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
towers3x4(const towers3x4 &other)
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)
clusterInfo & operator=(const clusterInfo &rhs)
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
void getHoverE(ap_uint< 12 > ECAL, ap_uint< 12 > HCAL_inHcalConvention)
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 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)
region3x4(const region3x4 &other)
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)
bool passes_looseTkss(float pt, float ss)
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)
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)
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
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
static constexpr float d0
static constexpr float b0
GCTtower_t GCTtowers[N_GCTTOWERS_FIBER]
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
towers3x4 card3x4Towers[N_REGIONS_PER_CARD]
void setCrystalE(int iEta, int iPhi, ap_uint< 10 > energy)
ap_uint< 12 > convertHcalETtoEcalET(ap_uint< 12 > HCAL)
void initFromRCTTower(const RCTtower_t &rctTower)
static constexpr int CRYSTAL_IN_PHI
ecaltp_t bestOf2(const ecaltp_t ecaltp0, const ecaltp_t ecaltp1)
linkECAL linksECAL[TOWER_IN_ETA][TOWER_IN_PHI]
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