diff --git a/L1Trigger/L1TCalorimeter/interface/JetFinderMethods.h b/L1Trigger/L1TCalorimeter/interface/JetFinderMethods.h index 21e117932222d..78be5525ca580 100644 --- a/L1Trigger/L1TCalorimeter/interface/JetFinderMethods.h +++ b/L1Trigger/L1TCalorimeter/interface/JetFinderMethods.h @@ -20,6 +20,8 @@ namespace l1t { int deltaGctPhi(const CaloRegion & region, const CaloRegion & neighbor); void slidingWindowJetFinder(const int, const std::vector * regions, std::vector * uncalibjets); + void passThroughJets(const std::vector * regions, + std::vector * uncalibjets); } #endif diff --git a/L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h b/L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h index f9cbcbe938e89..d425ba9a94aca 100644 --- a/L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h +++ b/L1Trigger/L1TCalorimeter/interface/PUSubtractionMethods.h @@ -21,6 +21,9 @@ namespace l1t { void HICaloRingSubtraction(const std::vector & regions, std::vector *subRegions); + void simpleHWSubtraction(const std::vector & regions, + std::vector *subRegions); + void RegionCorrection(const std::vector & regions, const std::vector & EMCands, std::vector *subRegions, diff --git a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithmImp.h b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithmImp.h index 98adc5d3cc66f..5ebff9421437f 100644 --- a/L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithmImp.h +++ b/L1Trigger/L1TCalorimeter/interface/Stage1Layer2JetAlgorithmImp.h @@ -48,6 +48,18 @@ namespace l1t { CaloParamsStage1* const params_; //double regionLSB_; }; + + class Stage1Layer2JetAlgorithmImpSimpleHW : public Stage1Layer2JetAlgorithm { + public: + Stage1Layer2JetAlgorithmImpSimpleHW(CaloParamsStage1* params); + virtual ~Stage1Layer2JetAlgorithmImpSimpleHW(); + virtual void processEvent(const std::vector & regions, + const std::vector & EMCands, + std::vector * jets); + private: + CaloParamsStage1* const params_; + //double regionLSB_; + }; } #endif diff --git a/L1Trigger/L1TCalorimeter/src/JetFinderMethods.cc b/L1Trigger/L1TCalorimeter/src/JetFinderMethods.cc index d71586dacd164..38129371c87a9 100644 --- a/L1Trigger/L1TCalorimeter/src/JetFinderMethods.cc +++ b/L1Trigger/L1TCalorimeter/src/JetFinderMethods.cc @@ -26,6 +26,24 @@ namespace l1t { return diff; } + // turn each central region into a jet + void passThroughJets(const std::vector * regions, + std::vector * uncalibjets) + { + for(std::vector::const_iterator region = regions->begin(); region != regions->end(); region++) { + if( region->hwEta() < 4 || region->hwEta() > 17) continue; + + int jetET = region->hwPt(); + int jetEta = region->hwEta(); + int jetPhi = region->hwPhi(); + int jetQual = 0; + + ROOT::Math::LorentzVector > jetLorentz(0,0,0,0); + l1t::Jet theJet(*&jetLorentz, jetET, jetEta, jetPhi, jetQual); + uncalibjets->push_back(theJet); + } + } + void slidingWindowJetFinder(const int jetSeedThreshold, const std::vector * regions, std::vector * uncalibjets) { diff --git a/L1Trigger/L1TCalorimeter/src/PUSubtractionMethods.cc b/L1Trigger/L1TCalorimeter/src/PUSubtractionMethods.cc index 3096febd024dd..a04370896f838 100644 --- a/L1Trigger/L1TCalorimeter/src/PUSubtractionMethods.cc +++ b/L1Trigger/L1TCalorimeter/src/PUSubtractionMethods.cc @@ -51,6 +51,22 @@ namespace l1t { } } + void simpleHWSubtraction(const std::vector & regions, + std::vector *subRegions) + { + for(std::vector::const_iterator region = regions.begin(); + region != regions.end(); region++){ + int subPt = region->hwPt(); + int subEta = region->hwEta(); + int subPhi = region->hwPhi(); + + ROOT::Math::LorentzVector > ldummy(0,0,0,0); + + CaloRegion newSubRegion(*&ldummy, 0, 0, subPt, subEta, subPhi, 0, 0, 0); + subRegions->push_back(newSubRegion); + } + } + /// --------- New region correction (PUsub, no response correction at the moment) ----------- diff --git a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2MainProcessorFirmwareImp1.cc b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2MainProcessorFirmwareImp1.cc index 25d367c59fd6b..154dfd69fd0e4 100644 --- a/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2MainProcessorFirmwareImp1.cc +++ b/L1Trigger/L1TCalorimeter/src/firmware/Stage1Layer2MainProcessorFirmwareImp1.cc @@ -41,16 +41,24 @@ void Stage1Layer2MainProcessorFirmwareImp1::processEvent(const std::vector PP algo m_tauAlgo = new Stage1Layer2TauAlgorithmImpPP(m_db); } + else if ( m_fwv == 3 ) + { // hw testing algorithms + m_jetAlgo = new Stage1Layer2JetAlgorithmImpSimpleHW(m_db); + } else{ // undefined fwv version edm::LogError("FWVersionError") << "Undefined firmware version passed to Stage1Layer2MainProcessorFirmwareImp1" << std::endl; return; } - m_jetAlgo->processEvent(regions, emcands, jets); // need to run jets before egammas and taus for rel. isol. cuts - m_egAlgo->processEvent(emcands, regions, jets, egammas); - m_tauAlgo->processEvent(emcands, regions, jets, taus); - m_sumAlgo->processEvent(regions, emcands, etsums); + if(m_jetAlgo) + m_jetAlgo->processEvent(regions, emcands, jets); // need to run jets before egammas and taus for rel. isol. cuts + if(m_egAlgo) + m_egAlgo->processEvent(emcands, regions, jets, egammas); + if(m_tauAlgo) + m_tauAlgo->processEvent(emcands, regions, jets, taus); + if(m_sumAlgo) + m_sumAlgo->processEvent(regions, emcands, etsums); delete m_jetAlgo; delete m_egAlgo;