diff --git a/DataFormats/L1TCalorimeterPhase2/interface/Phase2L1CaloJet.h b/DataFormats/L1TCalorimeterPhase2/interface/Phase2L1CaloJet.h
index 6117e1e578c15..7d4fab3055cd9 100644
--- a/DataFormats/L1TCalorimeterPhase2/interface/Phase2L1CaloJet.h
+++ b/DataFormats/L1TCalorimeterPhase2/interface/Phase2L1CaloJet.h
@@ -15,6 +15,7 @@ namespace l1tp2 {
Phase2L1CaloJet()
: l1t::L1Candidate(),
jetEt_(0.),
+ tauEt_(0.),
jetIEta_(-99),
jetIPhi_(-99),
jetEta_(-99.),
@@ -27,7 +28,8 @@ namespace l1tp2 {
Phase2L1CaloJet(const PolarLorentzVector& p4,
float jetEt,
- int jetIEta,
+ float tauEt,
+ int jetIEta,
int jetIPhi,
float jetEta,
float jetPhi,
@@ -38,6 +40,7 @@ namespace l1tp2 {
float towerPhi)
: l1t::L1Candidate(p4),
jetEt_(jetEt),
+ tauEt_(tauEt),
jetIEta_(jetIEta),
jetIPhi_(jetIPhi),
jetEta_(jetEta),
@@ -49,6 +52,7 @@ namespace l1tp2 {
towerPhi_(towerPhi){};
inline float jetEt() const { return jetEt_; };
+ inline float tauEt() const { return tauEt_; };
inline int jetIEta() const { return jetIEta_; };
inline int jetIPhi() const { return jetIPhi_; };
inline float jetEta() const { return jetEta_; };
@@ -60,6 +64,7 @@ namespace l1tp2 {
inline float towerPhi() const { return towerPhi_; };
void setJetEt(float jetEtIn) { jetEt_ = jetEtIn; };
+ void setTauEt(float tauEtIn) { tauEt_ = tauEtIn; };
void setJetIEta(int jetIEtaIn) { jetIEta_ = jetIEtaIn; };
void setJetIPhi(int jetIPhiIn) { jetIPhi_ = jetIPhiIn; };
void setJetEta(float jetEtaIn) { jetEta_ = jetEtaIn; };
@@ -73,6 +78,8 @@ namespace l1tp2 {
private:
// ET
float jetEt_;
+ // Tau ET
+ float tauEt_;
// GCT ieta
int jetIEta_;
// GCT iphi
diff --git a/DataFormats/L1TCalorimeterPhase2/src/classes_def.xml b/DataFormats/L1TCalorimeterPhase2/src/classes_def.xml
index 600eeaf019d35..90bfed0129957 100644
--- a/DataFormats/L1TCalorimeterPhase2/src/classes_def.xml
+++ b/DataFormats/L1TCalorimeterPhase2/src/classes_def.xml
@@ -50,8 +50,8 @@
-
-
+
+
diff --git a/L1Trigger/L1CaloTrigger/interface/Phase2L1CaloJetEmulator.h b/L1Trigger/L1CaloTrigger/interface/Phase2L1CaloJetEmulator.h
index 1c8d13fb69425..4f2aed3b61d8b 100644
--- a/L1Trigger/L1CaloTrigger/interface/Phase2L1CaloJetEmulator.h
+++ b/L1Trigger/L1CaloTrigger/interface/Phase2L1CaloJetEmulator.h
@@ -52,6 +52,7 @@ class jetInfo{
public:
float seedEnergy;
float energy;
+ float tauEt;
int phi;
int eta;
float energyMax;
@@ -63,6 +64,7 @@ class jetInfo{
jetInfo(){
seedEnergy = 0;
energy = 0;
+ tauEt = 0;
phi = 0;
eta = 0;
energyMax = 0;
@@ -75,6 +77,7 @@ class jetInfo{
jetInfo& operator=(const jetInfo& rhs){
seedEnergy = rhs.seedEnergy;
energy = rhs.energy;
+ tauEt = rhs.tauEt;
phi = rhs.phi;
eta = rhs.eta;
energyMax = rhs.energyMax;
@@ -366,6 +369,7 @@ jetInfo getJetPosition(GCTsupertower_t temp[nSTEta][nSTPhi]){
jet.seedEnergy = peakIn6.energy;
jet.energy = 0;
+ jet.tauEt = 0;
jet.eta = peakIn6.eta;
jet.phi = peakIn6.phi;
jet.energyMax = peakIn6.energyMax;
@@ -414,6 +418,7 @@ jetInfo getJetValues(GCTsupertower_t tempX[nSTEta][nSTPhi], int seed_eta, int se
}
jet_tmp.energy = eta_slice[0] + eta_slice[1] + eta_slice[2] ;
+ jet_tmp.tauEt = eta_slice[1]; //set tau Pt to be sum of ST energies in center eta slice */
// To find the jet centre: note that seed supertower is always (1, 1)
jet_tmp.etaCenter = 3*seed_eta + tempX[seed_eta][seed_phi].centerEta; //this is the ET weighted eta centre of the ST
jet_tmp.phiCenter = 3*seed_phi + tempX[seed_eta][seed_phi].centerPhi; //this is the ET weighted phi centre of the ST
@@ -439,8 +444,14 @@ jetInfo getRegion(GCTsupertower_t temp[nSTEta][nSTPhi]){
int seed_eta = jet_tmp.eta ;
float seed_energy = jet_tmp.seedEnergy ;
jet = getJetValues(temp, seed_eta, seed_phi) ;
- if(seed_energy > 10.) jet_tmp.energy = jet.energy; // suppress <= 10 GeV ST as seed
- else jet_tmp.energy = 0.;
+ if(seed_energy > 10.) { // suppress <= 10 GeV ST as seed
+ jet_tmp.energy = jet.energy;
+ jet_tmp.tauEt = jet.tauEt;
+ }
+ else {
+ jet_tmp.energy = 0.;
+ jet_tmp.tauEt = 0.;
+ }
jet_tmp.etaCenter = jet.etaCenter; // this is the ET weighted eta centre of the ST
jet_tmp.phiCenter = jet.phiCenter; // this is the ET weighted eta centre of the ST
jet_tmp.etaMax = jet.etaMax; // this is the leading tower eta in the ST
diff --git a/L1Trigger/L1CaloTrigger/plugins/Phase2L1CaloJetEmulator.cc b/L1Trigger/L1CaloTrigger/plugins/Phase2L1CaloJetEmulator.cc
index 71558466be790..425b83bf67874 100644
--- a/L1Trigger/L1CaloTrigger/plugins/Phase2L1CaloJetEmulator.cc
+++ b/L1Trigger/L1CaloTrigger/plugins/Phase2L1CaloJetEmulator.cc
@@ -231,6 +231,7 @@ void Phase2L1CaloJetEmulator::produce(edm::Event& iEvent, const edm::EventSetup&
jet[i] = getRegion(tempST);
l1tp2::Phase2L1CaloJet tempJet;
tempJet.setJetEt(jet[i].energy);
+ tempJet.setTauEt(jet[i].tauEt);
int gctjeteta = jet[i].etaCenter;
int gctjetphi = jet[i].phiCenter;
tempJet.setJetIEta(gctjeteta+k*nBarrelEta/2);
@@ -272,6 +273,7 @@ void Phase2L1CaloJetEmulator::produce(edm::Event& iEvent, const edm::EventSetup&
jet[i] = getRegion(tempST_hgcal);
l1tp2::Phase2L1CaloJet tempJet;
tempJet.setJetEt(jet[i].energy);
+ tempJet.setTauEt(jet[i].tauEt);
int hgcaljeteta = jet[i].etaCenter;
int hgcaljetphi = jet[i].phiCenter;
tempJet.setJetIEta(hgcaljeteta+k*nHgcalEta/2);
@@ -313,6 +315,7 @@ void Phase2L1CaloJetEmulator::produce(edm::Event& iEvent, const edm::EventSetup&
jet[i] = getRegion(tempST_hf);
l1tp2::Phase2L1CaloJet tempJet;
tempJet.setJetEt(jet[i].energy);
+ tempJet.setTauEt(jet[i].tauEt);
int hfjeteta = jet[i].etaCenter;
int hfjetphi = jet[i].phiCenter;
tempJet.setJetIEta(hfjeteta+k*nHfEta/2);
@@ -352,9 +355,12 @@ void Phase2L1CaloJetEmulator::produce(edm::Event& iEvent, const edm::EventSetup&
float barrel_ieta = nHgcalEta/2 + halfBarrelJets.at(j).jetIEta();
if (abs(barrel_ieta - hgcal_ieta) < 3 && abs(halfBarrelJets.at(j).jetIPhi() - halfHgcalJets.at(i).jetIPhi()) < 3) {
float totalet = halfBarrelJets.at(j).jetEt() + halfHgcalJets.at(i).jetEt();
+ float totalTauEt = halfBarrelJets.at(j).tauEt() + halfHgcalJets.at(i).tauEt();
if (halfBarrelJets.at(j).jetEt() > halfHgcalJets.at(i).jetEt()) {
halfHgcalJets.at(i).setJetEt(0.);
+ halfHgcalJets.at(i).setTauEt(0.);
halfBarrelJets.at(j).setJetEt(totalet);
+ halfBarrelJets.at(j).setTauEt(totalTauEt);
reco::Candidate::PolarLorentzVector tempJetp4;
tempJetp4.SetPt(totalet);
tempJetp4.SetEta(halfBarrelJets.at(j).jetEta());
@@ -364,7 +370,9 @@ void Phase2L1CaloJetEmulator::produce(edm::Event& iEvent, const edm::EventSetup&
}
else {
halfHgcalJets.at(i).setJetEt(totalet);
+ halfHgcalJets.at(i).setTauEt(totalTauEt);
halfBarrelJets.at(j).setJetEt(0.);
+ halfBarrelJets.at(j).setTauEt(0.);
reco::Candidate::PolarLorentzVector tempJetp4;
tempJetp4.SetPt(totalet);
tempJetp4.SetEta(halfHgcalJets.at(i).jetEta());
@@ -381,9 +389,12 @@ void Phase2L1CaloJetEmulator::produce(edm::Event& iEvent, const edm::EventSetup&
float hf_ieta = k*nBarrelEta + k*nHgcalEta + halfHfJets.at(j).jetIEta();
if(abs(hgcal_ieta - hf_ieta) < 3 && abs(halfHfJets.at(j).jetIPhi() - halfHgcalJets.at(i).jetIPhi()) < 3) {
float totalet = halfHfJets.at(j).jetEt() + halfHgcalJets.at(i).jetEt();
+ float totalTauEt = halfHfJets.at(j).tauEt() + halfHgcalJets.at(i).tauEt();
if (halfHfJets.at(j).jetEt() > halfHgcalJets.at(i).jetEt()) {
halfHgcalJets.at(i).setJetEt(0.);
+ halfHgcalJets.at(i).setTauEt(0.);
halfHfJets.at(j).setJetEt(totalet);
+ halfHfJets.at(j).setTauEt(totalTauEt);
reco::Candidate::PolarLorentzVector tempJetp4;
tempJetp4.SetPt(totalet);
tempJetp4.SetEta(halfHfJets.at(j).jetEta());
@@ -393,7 +404,9 @@ void Phase2L1CaloJetEmulator::produce(edm::Event& iEvent, const edm::EventSetup&
}
else {
halfHgcalJets.at(i).setJetEt(totalet);
+ halfHgcalJets.at(i).setTauEt(totalTauEt);
halfHfJets.at(j).setJetEt(0.);
+ halfHfJets.at(j).setTauEt(0.);
reco::Candidate::PolarLorentzVector tempJetp4;
tempJetp4.SetPt(totalet);
tempJetp4.SetEta(halfHgcalJets.at(i).jetEta());
diff --git a/L1Trigger/L1CaloTrigger/python/L1CaloJets_cff.py b/L1Trigger/L1CaloTrigger/python/L1CaloJets_cff.py
index bfd0802564924..9ef2925bc8135 100644
--- a/L1Trigger/L1CaloTrigger/python/L1CaloJets_cff.py
+++ b/L1Trigger/L1CaloTrigger/python/L1CaloJets_cff.py
@@ -3,6 +3,8 @@
# This cff file is based off of the L1T Phase-2 Menu group using
# the process name "REPR"
+from L1Trigger.L1CaloTrigger.l1tPhase2L1CaloEGammaEmulator_cfi import *
+
# --------------------------------------------------------------------------------------------
#
@@ -18,7 +20,8 @@
from L1Trigger.L1CaloTrigger.l1tTowerCalibrationProducer_cfi import *
l1tTowerCalibrationProducer.L1HgcalTowersInputTag = cms.InputTag("l1tHGCalTowerProducer","HGCalTowerProcessor","")
-l1tTowerCalibrationProducer.l1CaloTowers = cms.InputTag("l1tEGammaClusterEmuProducer","L1CaloTowerCollection","")
+#l1tTowerCalibrationProducer.l1CaloTowers = cms.InputTag("l1tEGammaClusterEmuProducer","L1CaloTowerCollection","")
+l1tTowerCalibrationProducer.l1CaloTowers = cms.InputTag("l1tPhase2L1CaloEGammaEmulator","GCTFullTowers","")
@@ -26,9 +29,11 @@
#
# ---- Produce the L1CaloJets
-from L1Trigger.L1CaloTrigger.l1tCaloJetProducer_cfi import *
-l1tCaloJetProducer.l1CaloTowers = cms.InputTag("l1tTowerCalibrationProducer","L1CaloTowerCalibratedCollection","")
-l1tCaloJetProducer.L1CrystalClustersInputTag = cms.InputTag("l1tEGammaClusterEmuProducer", "L1EGXtalClusterEmulator","")
+# from L1Trigger.L1CaloTrigger.l1tCaloJetProducer_cfi import *
+# l1tCaloJetProducer.l1CaloTowers = cms.InputTag("l1tTowerCalibrationProducer","L1CaloTowerCalibratedCollection","")
+# l1tCaloJetProducer.L1CrystalClustersInputTag = cms.InputTag("l1tEGammaClusterEmuProducer", "L1EGXtalClusterEmulator","")
+from L1Trigger.L1CaloTrigger.l1tPhase2CaloJetEmulator_cfi import *
+l1tPhase2CaloJetEmulator.gctFullTowers = cms.InputTag("l1tPhase2L1CaloEGammaEmulator","GCTFullTowers")
@@ -41,8 +46,10 @@
L1TCaloJetsSequence = cms.Sequence(
- l1tEGammaClusterEmuProducer *
+ #l1tEGammaClusterEmuProducer *
+ l1tPhase2L1CaloEGammaEmulator*
l1tTowerCalibrationProducer *
- l1tCaloJetProducer *
+ #l1tCaloJetProducer *
+ l1tPhase2CaloJetEmulator*
l1tCaloJetHTTProducer
)