diff --git a/L1Trigger/L1TTwinMux/interface/DTLowQMatching.h b/L1Trigger/L1TTwinMux/interface/DTLowQMatching.h index 6b478d72e5742..32879856b0c3d 100644 --- a/L1Trigger/L1TTwinMux/interface/DTLowQMatching.h +++ b/L1Trigger/L1TTwinMux/interface/DTLowQMatching.h @@ -31,8 +31,7 @@ class DTLowQMatching { public: - DTLowQMatching(L1MuDTChambPhContainer* , L1MuDTChambPhContainer ); - ~DTLowQMatching() {}; + DTLowQMatching(L1MuDTChambPhContainer const* , L1MuDTChambPhContainer const& ); void run(const edm::EventSetup& c); @@ -45,8 +44,8 @@ class DTLowQMatching { void Matching(int track_seg); - L1MuDTChambPhContainer* m_phiDTDigis; - L1MuDTChambPhContainer m_phiRPCDigis; + L1MuDTChambPhContainer const* m_phiDTDigis; + L1MuDTChambPhContainer const& m_phiRPCDigis; // L1MuDTChambPhContainer m_phiRPCDigis2; diff --git a/L1Trigger/L1TTwinMux/interface/IOPrinter.h b/L1Trigger/L1TTwinMux/interface/IOPrinter.h index 51aab34d4cba9..97d8e5e346c10 100644 --- a/L1Trigger/L1TTwinMux/interface/IOPrinter.h +++ b/L1Trigger/L1TTwinMux/interface/IOPrinter.h @@ -31,7 +31,7 @@ class IOPrinter{ ~IOPrinter() {}; void run(edm::Handle, const L1MuDTChambPhContainer &, edm::Handle, const edm::EventSetup& ); - void run(L1MuDTChambPhContainer*, const L1MuDTChambPhContainer & , RPCDigiCollection*, + void run(L1MuDTChambPhContainer const*, const L1MuDTChambPhContainer & , RPCDigiCollection const*, const edm::EventSetup& ); }; diff --git a/L1Trigger/L1TTwinMux/interface/RPCHitCleaner.h b/L1Trigger/L1TTwinMux/interface/RPCHitCleaner.h index 85dc730bbc925..14731159abd8d 100644 --- a/L1Trigger/L1TTwinMux/interface/RPCHitCleaner.h +++ b/L1Trigger/L1TTwinMux/interface/RPCHitCleaner.h @@ -29,13 +29,12 @@ class RPCHitCleaner { public: - RPCHitCleaner(RPCDigiCollection inrpcDigis); - ~RPCHitCleaner() {}; + RPCHitCleaner(RPCDigiCollection const& inrpcDigis); void run(const edm::EventSetup& c); ///Return Output RPCCollection - RPCDigiCollection getRPCCollection(){ return m_outrpcDigis;} + RPCDigiCollection const& getRPCCollection(){ return m_outrpcDigis;} struct detId_Ext{ RPCDetId detid; @@ -49,7 +48,7 @@ class RPCHitCleaner { private: ///Input - RPCDigiCollection m_inrpcDigis; + RPCDigiCollection const& m_inrpcDigis; ///Output RPCDigiCollection m_outrpcDigis; diff --git a/L1Trigger/L1TTwinMux/interface/RPCtoDTTranslator.h b/L1Trigger/L1TTwinMux/interface/RPCtoDTTranslator.h index 0a205ee5f362f..e875416226be3 100644 --- a/L1Trigger/L1TTwinMux/interface/RPCtoDTTranslator.h +++ b/L1Trigger/L1TTwinMux/interface/RPCtoDTTranslator.h @@ -31,14 +31,13 @@ class RPCtoDTTranslator { public: - RPCtoDTTranslator(RPCDigiCollection inrpcDigis); - ~RPCtoDTTranslator() {}; + RPCtoDTTranslator(const RPCDigiCollection& inrpcDigis); void run(const edm::EventSetup& c); ///Return Output PhContainer - L1MuDTChambPhContainer getDTContainer(){ return m_rpcdt_translated;} - L1MuDTChambPhContainer getDTRPCHitsContainer(){ return m_rpchitsdt_translated;} + L1MuDTChambPhContainer const& getDTContainer() const { return m_rpcdt_translated;} + L1MuDTChambPhContainer const& getDTRPCHitsContainer() const { return m_rpchitsdt_translated;} static int radialAngle(RPCDetId , const edm::EventSetup& , int); static int bendingAngle(int, int, int); @@ -52,21 +51,7 @@ class RPCtoDTTranslator { L1MuDTChambPhContainer m_rpcdt_translated; L1MuDTChambPhContainer m_rpchitsdt_translated; - RPCDigiCollection m_rpcDigis; - - struct rpc_hit - { - int bx; - int station; - int sector; - int wheel; - RPCDetId detid; - int strip; - int roll; - int layer; - //rpc_hit(int pbx, int pstation,int psector, int pwheel, RPCDetId pdet, int pstrip, int proll, int player) : bx(pbx),station(pstation),sector(psector),wheel(pwheel, detid(pdet),strip(pstrip),roll(proll),layer(player) {} - }; - + const RPCDigiCollection& m_rpcDigis; }; #endif diff --git a/L1Trigger/L1TTwinMux/src/DTLowQMatching.cc b/L1Trigger/L1TTwinMux/src/DTLowQMatching.cc index ec17969da0dd4..dbefaaf966867 100644 --- a/L1Trigger/L1TTwinMux/src/DTLowQMatching.cc +++ b/L1Trigger/L1TTwinMux/src/DTLowQMatching.cc @@ -19,7 +19,7 @@ using namespace std; -DTLowQMatching::DTLowQMatching(L1MuDTChambPhContainer* inphiDTDigis, L1MuDTChambPhContainer inphiRPCDigis): m_phiDTDigis(inphiDTDigis),m_phiRPCDigis(inphiRPCDigis) { +DTLowQMatching::DTLowQMatching(L1MuDTChambPhContainer const* inphiDTDigis, L1MuDTChambPhContainer const& inphiRPCDigis): m_phiDTDigis(inphiDTDigis),m_phiRPCDigis(inphiRPCDigis) { // m_phiDTDigis=inphiDTDigis; // m_phiRPCDigis=inphiRPCDigis; }; @@ -41,15 +41,15 @@ void DTLowQMatching::Matching(int track_seg){ L1MuDTChambPhDigi * dtts=nullptr; L1MuDTChambPhDigi * rpcts1=nullptr; - auto m_phiRPCDigis_tm=std::make_shared(); + L1MuTMChambPhContainer m_phiRPCDigis_tm; const std::vector *phiChambVector; phiChambVector=m_phiRPCDigis.getContainer(); - m_phiRPCDigis_tm->setContainer(*phiChambVector ); + m_phiRPCDigis_tm.setContainer(*phiChambVector ); - auto m_phiDTDigis_tm=std::make_shared(); + L1MuTMChambPhContainer m_phiDTDigis_tm; const std::vector *phiChambVectorDT; phiChambVectorDT=m_phiDTDigis->getContainer(); - m_phiDTDigis_tm->setContainer(*phiChambVectorDT ); + m_phiDTDigis_tm.setContainer(*phiChambVectorDT ); int bx=0, wheel=0, sector=0, station=1; //cout<<"LowQ Matching "<chPhiSegm(wheel,station,sector,bx ,track_seg); + dtts = m_phiDTDigis_tm.chPhiSegm(wheel,station,sector,bx ,track_seg); if(!dtts || dtts->code()>=2) continue; int nhits = 0; nhits = DTRPCBxCorrection::nRPCHits(m_phiRPCDigis, rpcbx, wheel, sector, station); for(int hit=0; hitchPhiSegm(wheel, station, sector, rpcbx,hit); + rpcts1 = m_phiRPCDigis_tm.chPhiSegm(wheel, station, sector, rpcbx,hit); //If DT primitives with q<2 match with rpc hits do nothing else //'remove' the primitive by setting is quality to 7 if(rpcts1 && DTRPCBxCorrection::deltaPhi(dtts->phi(),rpcts1->phi()) < m_DphiWindow) { diff --git a/L1Trigger/L1TTwinMux/src/DTRPCBxCorrection.cc b/L1Trigger/L1TTwinMux/src/DTRPCBxCorrection.cc index dc520ea525eb5..0d1858b3be8f5 100644 --- a/L1Trigger/L1TTwinMux/src/DTRPCBxCorrection.cc +++ b/L1Trigger/L1TTwinMux/src/DTRPCBxCorrection.cc @@ -41,16 +41,16 @@ void DTRPCBxCorrection::run( const edm::EventSetup& c) { void DTRPCBxCorrection::BxCorrection(int track_seg){ - auto m_phiDTDigis_tm=std::make_shared(); + L1MuTMChambPhContainer m_phiDTDigis_tm; //std::shared_ptr m_phiDTDigis_tm (new L1MuTMChambPhContainer); const std::vector *phiChambVectorDT; phiChambVectorDT= m_phiDTDigis.getContainer(); - m_phiDTDigis_tm->setContainer(*phiChambVectorDT); - auto m_phiRPCDigis_tm=std::make_shared(); + m_phiDTDigis_tm.setContainer(*phiChambVectorDT); + L1MuTMChambPhContainer m_phiRPCDigis_tm; //std::shared_ptr m_phiRPCDigis_tm (new L1MuTMChambPhContainer); const std::vector *phiChambVectorRPC; phiChambVectorRPC= m_phiRPCDigis.getContainer(); - m_phiRPCDigis_tm->setContainer(*phiChambVectorRPC); + m_phiRPCDigis_tm.setContainer(*phiChambVectorRPC); int ibx_dtm = 0, fbx_dtm = 0; int ibx_dtp = 0, fbx_dtp = 0; @@ -68,12 +68,12 @@ void DTRPCBxCorrection::BxCorrection(int track_seg){ for(int rpcbx=bx-1; rpcbx<=bx+1; rpcbx++){ L1MuDTChambPhDigi * dtts=nullptr; L1MuDTChambPhDigi * rpcts1=nullptr; - dtts = m_phiDTDigis_tm->chPhiSegm(wheel,station,sector,bx ,track_seg); + dtts = m_phiDTDigis_tm.chPhiSegm(wheel,station,sector,bx ,track_seg); if(!dtts ) continue; - int nhits = nRPCHits(*m_phiRPCDigis_tm, rpcbx, wheel, sector, station); + int nhits = nRPCHits(m_phiRPCDigis_tm, rpcbx, wheel, sector, station); for(int hit=0; hitchPhiSegm(wheel, station, sector, rpcbx,hit); + rpcts1 = m_phiRPCDigis_tm.chPhiSegm(wheel, station, sector, rpcbx,hit); //Store in vectors the dphi of matched dt/rpc if(rpcts1 && dtts && dtts->code()phi(),rpcts1->phi()) < m_DphiWindow){ if((dtts->bxNum()-rpcbx)==-1 ) { @@ -118,8 +118,8 @@ void DTRPCBxCorrection::BxCorrection(int track_seg){ } else continue; //Primitve to be shifted in place of dttsnew - dtts = m_phiDTDigis_tm->chPhiSegm(wheel,station,sector,init_bx,track_seg); - dttsnew = m_phiDTDigis_tm->chPhiSegm(wheel,station,sector,final_bx,track_seg); + dtts = m_phiDTDigis_tm.chPhiSegm(wheel,station,sector,init_bx,track_seg); + dttsnew = m_phiDTDigis_tm.chPhiSegm(wheel,station,sector,final_bx,track_seg); bool shift_1 = false; if(dtts && dtts->code()whNum(), dtts->scNum(), dtts->stNum(),dtts->phi(), dtts->phiB(), dtts->code(), dtts->Ts2Tag(), dtts->BxCnt(),1); @@ -129,7 +129,7 @@ void DTRPCBxCorrection::BxCorrection(int track_seg){ if(dtts && dtts->code()code()chPhiSegm(wheel,station,sector,final_bx,flipBit(track_seg)) ) { + if(dtts && dtts->code()chPhiSegm(wheel,station,sector,bx,track_seg); + dtts = m_phiDTDigis_tm.chPhiSegm(wheel,station,sector,bx,track_seg); if(!shifted[bx+3] && dtts) { m_l1ttma_out.push_back(*dtts); } diff --git a/L1Trigger/L1TTwinMux/src/IOPrinter.cc b/L1Trigger/L1TTwinMux/src/IOPrinter.cc index 7aa4ff41ce91c..59364c761c0a5 100644 --- a/L1Trigger/L1TTwinMux/src/IOPrinter.cc +++ b/L1Trigger/L1TTwinMux/src/IOPrinter.cc @@ -18,8 +18,6 @@ void IOPrinter::run(edm::Handle inphiDigis, const L1MuDT cout<<"======================================================"< inphiDigis, const L1MuDT for (sector=0;sector<12; sector++ ){ for (station=1; station<=4; station++){ - dtts1=nullptr; dtts2=nullptr; - dtts1 = inphiDigis->chPhiSegm1(wheel,station,sector,bx); - dtts2 = inphiDigis->chPhiSegm2(wheel,station,sector,bx - 1 ); + auto dtts1 = inphiDigis->chPhiSegm1(wheel,station,sector,bx); + auto dtts2 = inphiDigis->chPhiSegm2(wheel,station,sector,bx - 1 ); if(dtts1 && dtts1->code()!=7) { L1MuDTChambPhDigi dt_ts1 = *dtts1; cout<bxNum()<<"\t"<whNum()<<"\t"<scNum()<<"\t"<stNum()<<"\t"<phi()<<"\t"<phiB()<<"\t"<code()<<"\t"<Ts2Tag()<<"\t"<BxCnt()<<"\t0"< inphiDigis, const L1MuDT cout<<"TwinMux Output"< inphiDigis, const L1MuDT for (sector=0;sector<12; sector++ ){ for (station=1; station<=4; station++){ - dtts1=nullptr; dtts2=nullptr; - - dtts1 = outphiDigis.chPhiSegm1(wheel,station,sector,bx); - dtts2 = outphiDigis.chPhiSegm2(wheel,station,sector,bx - 1 ); + auto dtts1 = outphiDigis.chPhiSegm1(wheel,station,sector,bx); + auto dtts2 = outphiDigis.chPhiSegm2(wheel,station,sector,bx - 1 ); if(dtts1&& dtts1->code()!=7) { L1MuDTChambPhDigi dt_ts1 = *dtts1; cout<bxNum()<<"\t"<whNum()<<"\t"<scNum()<<"\t"<stNum()<<"\t"<phi()<<"\t"<phiB()<<"\t"<code()<<"\t"<Ts2Tag()<<"\t"<BxCnt()<<"\t"<RpcBit()< * vInCon=inphiDigis->getContainer(); - inphiDigis_tm->setContainer(*vInCon); + inphiDigis_tm.setContainer(*vInCon); ///Align track segments that are coming in bx-1. @@ -120,8 +111,7 @@ void IOPrinter::run(L1MuDTChambPhContainer* inphiDigis,const L1MuDTChambPhContai for (station=1; station<=4; station++){ int nhits = DTRPCBxCorrection::nRPCHits(*inphiDigis, bx, wheel, sector, station); for(int hit=0; hitchPhiSegm(wheel,station,sector,bx,hit); + auto dtts1 = inphiDigis_tm.chPhiSegm(wheel,station,sector,bx,hit); if(dtts1) { cout<bxNum()<<"\t"<whNum()<<"\t"<scNum()<<"\t"<stNum()<<"\t"<phi()<<"\t"<phiB()<<"\t"<code()<<"\t"<Ts2Tag()<<"\t"<BxCnt()<<"\t0"<code()!=7) { L1MuDTChambPhDigi dt_ts1 = *dtts1; cout<bxNum()<<"\t"<whNum()<<"\t"<scNum()<<"\t"<stNum()<<"\t"<phi()<<"\t"<phiB()<<"\t"<code()<<"\t"<Ts2Tag()<<"\t"<BxCnt()<<"\t"<RpcBit()< thetaDigis, edm::Handle r ///Align track segments that are coming in bx-1. - auto alignedDTs=std::make_shared(*inphiDigis); - alignedDTs->run(c); - L1MuDTChambPhContainer phiDigis = alignedDTs->getDTContainer(); + AlignTrackSegments alignedDTs{*inphiDigis}; + alignedDTs.run(c); + L1MuDTChambPhContainer const& phiDigis = alignedDTs.getDTContainer(); //if only DTs are required without bx correction //return the aligned track segments if(onlyDT && !correctBX && !useLowQDT) { @@ -57,19 +57,19 @@ edm::Handle thetaDigis, edm::Handle r return; } ///Clean RPC hits - auto rpcHitCl=std::make_shared(*rpcDigis); - rpcHitCl->run(c); - RPCDigiCollection rpcDigisCleaned = rpcHitCl->getRPCCollection(); + RPCHitCleaner rpcHitCl{*rpcDigis}; + rpcHitCl.run(c); + RPCDigiCollection const& rpcDigisCleaned = rpcHitCl.getRPCCollection(); ///Translate RPC digis to DT primitives. - auto dt_from_rpc= std::make_shared(rpcDigisCleaned); - dt_from_rpc->run(c); - L1MuDTChambPhContainer rpcPhiDigis = dt_from_rpc->getDTContainer(); //Primitves used for RPC->DT (only station 1 and 2) - L1MuDTChambPhContainer rpcHitsPhiDigis = dt_from_rpc->getDTRPCHitsContainer(); //Primitves used for bx correction + RPCtoDTTranslator dt_from_rpc{rpcDigisCleaned}; + dt_from_rpc.run(c); + L1MuDTChambPhContainer const& rpcPhiDigis = dt_from_rpc.getDTContainer(); //Primitves used for RPC->DT (only station 1 and 2) + L1MuDTChambPhContainer const& rpcHitsPhiDigis = dt_from_rpc.getDTRPCHitsContainer(); //Primitves used for bx correction ///Match low q DT primitives with RPC hits in dphiWindow - auto dtlowq= std::make_shared(&phiDigis, rpcHitsPhiDigis); - dtlowq->run(c); + DTLowQMatching dtlowq{&phiDigis, rpcHitsPhiDigis}; + dtlowq.run(c); if(onlyDT && !correctBX && useLowQDT) { m_tm_phi_output = phiDigis; @@ -88,10 +88,10 @@ edm::Handle thetaDigis, edm::Handle r ///Correct(in bx) DT primitives by comparing them to RPC. // DTRPCBxCorrection *rpc_dt_bx = new DTRPCBxCorrection(phiDigis,rpcHitsPhiDigis); - auto rpc_dt_bx=std::make_shared(phiDigis,rpcHitsPhiDigis); - rpc_dt_bx->run(c); + DTRPCBxCorrection rpc_dt_bx{phiDigis,rpcHitsPhiDigis}; + rpc_dt_bx.run(c); - L1MuDTChambPhContainer phiDigiscp = rpc_dt_bx->getDTContainer(); + L1MuDTChambPhContainer const& phiDigiscp = rpc_dt_bx.getDTContainer(); ///Add RPC primitives in case that there are no DT primitives. std::vector l1ttma_out; diff --git a/L1Trigger/L1TTwinMux/src/RPCHitCleaner.cc b/L1Trigger/L1TTwinMux/src/RPCHitCleaner.cc index a6016fc73f09b..d039e0ccac7f9 100644 --- a/L1Trigger/L1TTwinMux/src/RPCHitCleaner.cc +++ b/L1Trigger/L1TTwinMux/src/RPCHitCleaner.cc @@ -26,8 +26,9 @@ using namespace std; -RPCHitCleaner::RPCHitCleaner(RPCDigiCollection inrpcDigis){ - m_inrpcDigis = inrpcDigis; +RPCHitCleaner::RPCHitCleaner(RPCDigiCollection const& inrpcDigis): + m_inrpcDigis {inrpcDigis} +{ } namespace { diff --git a/L1Trigger/L1TTwinMux/src/RPCtoDTTranslator.cc b/L1Trigger/L1TTwinMux/src/RPCtoDTTranslator.cc index edc587908ea6b..5fc4c4e3f63ff 100644 --- a/L1Trigger/L1TTwinMux/src/RPCtoDTTranslator.cc +++ b/L1Trigger/L1TTwinMux/src/RPCtoDTTranslator.cc @@ -25,17 +25,28 @@ using namespace std; - -RPCtoDTTranslator::RPCtoDTTranslator(RPCDigiCollection inrpcDigis){ - - m_rpcDigis = inrpcDigis; - +RPCtoDTTranslator::RPCtoDTTranslator(RPCDigiCollection const& inrpcDigis) : + m_rpcDigis{inrpcDigis} +{ } namespace { constexpr int max_rpc_bx = 2; constexpr int min_rpc_bx = -2; + struct rpc_hit + { + int bx; + int station; + int sector; + int wheel; + RPCDetId detid; + int strip; + int roll; + int layer; + rpc_hit(int pbx, int pstation,int psector, int pwheel, RPCDetId pdet, int pstrip, int proll, int player) : bx(pbx),station(pstation),sector(psector),wheel(pwheel), detid(pdet),strip(pstrip),roll(proll),layer(player) {} + }; + //Need to shift the index so that index 0 // corresponds to min_rpc_bx class BxToHit { @@ -70,10 +81,10 @@ void RPCtoDTTranslator::run(const edm::EventSetup& c) { for( auto digi = (*chamber).second.first ; digi != (*chamber).second.second; ++digi ) { if(detid.region()!=0 ) continue; //Region = 0 Barrel if(BxToHit::outOfRange(digi->bx())) continue; - if(detid.layer()==1) vrpc_hit_layer1.push_back({digi->bx(), detid.station(), detid.sector(), detid.ring(), detid, digi->strip(), detid.roll(), detid.layer()}); - if(detid.station()==3) vrpc_hit_st3.push_back({digi->bx(), detid.station(), detid.sector(), detid.ring(), detid, digi->strip(), detid.roll(), detid.layer()}); - if(detid.layer()==2) vrpc_hit_layer2.push_back({digi->bx(), detid.station(), detid.sector(), detid.ring(), detid, digi->strip(), detid.roll(), detid.layer()}); - if(detid.station()==4) vrpc_hit_st4.push_back({digi->bx(), detid.station(), detid.sector(), detid.ring(), detid, digi->strip(), detid.roll(), detid.layer()}); + if(detid.layer()==1) vrpc_hit_layer1.emplace_back(digi->bx(), detid.station(), detid.sector(), detid.ring(), detid, digi->strip(), detid.roll(), detid.layer()); + if(detid.station()==3) vrpc_hit_st3.emplace_back(digi->bx(), detid.station(), detid.sector(), detid.ring(), detid, digi->strip(), detid.roll(), detid.layer()); + if(detid.layer()==2) vrpc_hit_layer2.emplace_back(digi->bx(), detid.station(), detid.sector(), detid.ring(), detid, digi->strip(), detid.roll(), detid.layer()); + if(detid.station()==4) vrpc_hit_st4.emplace_back(digi->bx(), detid.station(), detid.sector(), detid.ring(), detid, digi->strip(), detid.roll(), detid.layer()); } }///for chamber @@ -120,12 +131,11 @@ void RPCtoDTTranslator::run(const edm::EventSetup& c) { bool found_hits = false; std::vector rpc2dt_phi, rpc2dt_phib; ///Loop over all combinations of layer 1 and 2. - int itr1=0, itr2=0; - int phi1=0, phi2=0; + int itr1=0; for(unsigned int l1=0; l1