CMS 3D CMS Logo

Stage2MainProcessorImp1.cc
Go to the documentation of this file.
1 
21 
23 
24 using namespace std;
25 
27 {
28 
29  m_towerAlgo = make_unique<Stage2TowerDecompressAlgorithmFirmwareImp1>(params);
30  m_egClusterAlgo = make_unique<Stage2Layer2ClusterAlgorithmFirmwareImp1>(params,
31  Stage2Layer2ClusterAlgorithmFirmwareImp1::ClusterInput::EH);
32  m_egAlgo = make_unique<Stage2Layer2EGammaAlgorithmFirmwareImp1>(params);
33  m_tauClusterAlgo = make_unique<Stage2Layer2ClusterAlgorithmFirmwareImp1>(params,
34  Stage2Layer2ClusterAlgorithmFirmwareImp1::ClusterInput::EH);
35  m_tauAlgo = make_unique<Stage2Layer2TauAlgorithmFirmwareImp1>(params);
36  m_jetAlgo = make_unique<Stage2Layer2JetAlgorithmFirmwareImp1>(params);
37  m_sumAlgo = make_unique<Stage2Layer2EtSumAlgorithmFirmwareImp1>(params);
38  m_jetSumAlgo = make_unique<Stage2Layer2JetSumAlgorithmFirmwareImp1>(params);
39 
40  m_demuxEGAlgo = make_unique<Stage2Layer2DemuxEGAlgoFirmwareImp1>(params);
41  m_demuxTauAlgo = make_unique<Stage2Layer2DemuxTauAlgoFirmwareImp1>(params);
42  m_demuxJetAlgo = make_unique<Stage2Layer2DemuxJetAlgoFirmwareImp1>(params);
43  m_demuxSumsAlgo = make_unique<Stage2Layer2DemuxSumsAlgoFirmwareImp1>(params);
44 
45 }
46 
47 //need to switch to BXVector
48 void l1t::Stage2MainProcessorFirmwareImp1::processEvent(const std::vector<l1t::CaloTower> & inTowers,
49  std::vector<l1t::CaloTower> & outTowers,
50  std::vector<l1t::CaloCluster> & clusters,
51  std::vector<l1t::EGamma> & mpEGammas,
52  std::vector<l1t::Tau> & mpTaus,
53  std::vector<l1t::Jet> & mpJets,
54  std::vector<l1t::EtSum> & mpSums,
55  std::vector<l1t::EGamma> & egammas,
56  std::vector<l1t::Tau> & taus,
57  std::vector<l1t::Jet> & jets,
58  std::vector<l1t::EtSum> & etSums) {
59 
60  // processing below is performed by the MP
61  std::vector<l1t::CaloCluster> egClusters;
62  std::vector<l1t::CaloCluster> tauClusters;
63  std::vector<l1t::Jet> mpAllJets;
64  std::vector<l1t::EtSum> towerSums;
65  std::vector<l1t::EtSum> jetSums;
66 
67  m_towerAlgo->processEvent( inTowers, outTowers );
68  m_egClusterAlgo->processEvent( outTowers, egClusters );
69  m_egAlgo->processEvent( egClusters, outTowers, mpEGammas );
70  m_tauClusterAlgo->processEvent( outTowers, tauClusters );
71  m_tauAlgo->processEvent( tauClusters,outTowers, mpTaus );
72  m_jetAlgo->processEvent( outTowers, mpJets, mpAllJets );
73  m_sumAlgo->processEvent( outTowers, towerSums );
74  m_jetSumAlgo->processEvent( mpAllJets, jetSums );
75 
76  clusters.insert( clusters.end(), egClusters.begin(), egClusters.end() );
77 
78  mpSums.insert( mpSums.end(), towerSums.begin(), towerSums.end() );
79  mpSums.insert( mpSums.end(), jetSums.begin(), jetSums.end() );
80 
81 
82  // processing below is actually performed by the Demux card
83  // in principle this could be done in a separate EDProduce
84  // but it is done here for flexibility
85 
86  m_demuxEGAlgo->processEvent( mpEGammas, egammas );
87  m_demuxTauAlgo->processEvent( mpTaus, taus );
88  m_demuxJetAlgo->processEvent( mpJets, jets );
89  m_demuxSumsAlgo->processEvent( mpSums, etSums );
90 
91 }
92 
93 
95 
96  out << "Calo Stage 2 Main Processor" << std::endl;
97  out << " Tower algo : " << (m_towerAlgo?1:0) << std::endl;
98  out << " EG cluster algo : " << (m_egClusterAlgo?1:0) << std::endl;
99  out << " EG ID algo : " << (m_egAlgo?1:0) << std::endl;
100  out << " Tau cluster algo : " << (m_tauClusterAlgo?1:0) << std::endl;
101  out << " Tau ID algo : " << (m_tauAlgo?1:0) << std::endl;
102  out << " Jet algo : " << (m_jetAlgo?1:0) << std::endl;
103  out << " Jet sum algo : " << (m_jetSumAlgo?1:0) << std::endl;
104  out << " Sums algo : " << (m_sumAlgo?1:0) << std::endl;
105 
106 }
vector< PseudoJet > jets
Stage2MainProcessorFirmwareImp1(unsigned fwv, CaloParamsHelper const *params)
void processEvent(const std::vector< l1t::CaloTower > &inTowers, std::vector< l1t::CaloTower > &outTowers, std::vector< l1t::CaloCluster > &clusters, std::vector< l1t::EGamma > &mpEGammas, std::vector< l1t::Tau > &mpTaus, std::vector< l1t::Jet > &mpJets, std::vector< l1t::EtSum > &mpSums, std::vector< l1t::EGamma > &egammas, std::vector< l1t::Tau > &taus, std::vector< l1t::Jet > &jets, std::vector< l1t::EtSum > &etSums) override