From 320eea0d9fb79f74a934d125d8b2bf7fcc2e9542 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 11 Nov 2015 18:52:21 +0100 Subject: [PATCH 01/20] cluster ME0 hits in time window for ME0Segment, porting to CMSSW_8_0_0 of PR 12370 --- RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h | 1 + 1 file changed, 1 insertion(+) diff --git a/RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h b/RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h index daa05df30a02a..09fb43e5f7cc7 100644 --- a/RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h +++ b/RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h @@ -48,6 +48,7 @@ class ME0RecHitBaseAlgo { LocalPoint& Point, LocalError& error) const = 0; + bool recOnlyMuons; }; #endif From bb0028e86127c7dd9278f48bddd6a4fd9c6a0bd9 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 11 Nov 2015 18:52:29 +0100 Subject: [PATCH 02/20] cluster ME0 hits in time window for ME0Segment, porting to CMSSW_8_0_0 of PR 12370 --- RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py b/RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py index f9088d0a2c1cc..d7814778eb001 100644 --- a/RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py +++ b/RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py @@ -1,7 +1,9 @@ import FWCore.ParameterSet.Config as cms me0RecHits = cms.EDProducer("ME0RecHitProducer", - recAlgoConfig = cms.PSet(), + recAlgoConfig = cms.PSet( + recOnlyMuons = cms.bool(False), + ), recAlgo = cms.string('ME0RecHitStandardAlgo'), me0DigiLabel = cms.InputTag("simMuonME0Digis"), ) From 0dd11c5531e5168682aa56a640ffe6dc4838ae4d Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 11 Nov 2015 18:52:36 +0100 Subject: [PATCH 03/20] cluster ME0 hits in time window for ME0Segment, porting to CMSSW_8_0_0 of PR 12370 --- RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc b/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc index d064e810c2040..1f36d61856284 100644 --- a/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc +++ b/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc @@ -13,8 +13,8 @@ #include "DataFormats/GEMDigi/interface/ME0DigiPreRecoCollection.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" - ME0RecHitBaseAlgo::ME0RecHitBaseAlgo(const edm::ParameterSet& config) { + recOnlyMuons = config.getParameter("recOnlyMuons"); } ME0RecHitBaseAlgo::~ME0RecHitBaseAlgo(){} @@ -33,12 +33,9 @@ const ME0DigiPreRecoCollection::Range& digiRange){ // Call the compute method bool OK = this->compute(*digi, point, tmpErr); if (!OK) continue; - - if (std::abs(digi->pdgid()) == 13) { - ME0RecHit* recHit = new ME0RecHit(me0Id,digi->tof(),point,tmpErr); - result.push_back(recHit); - } - + if (recOnlyMuons && std::abs(digi->pdgid()) != 13) continue; + ME0RecHit* recHit = new ME0RecHit(me0Id,digi->tof(),point,tmpErr); + result.push_back(recHit); } return result; } From 917e6dd27db2deab1c95963f05816ea0ff5cd8be Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 11 Nov 2015 18:52:44 +0100 Subject: [PATCH 04/20] cluster ME0 hits in time window for ME0Segment, porting to CMSSW_8_0_0 of PR 12370 --- .../GEMSegment/plugins/ME0SegAlgoMM.cc | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/RecoLocalMuon/GEMSegment/plugins/ME0SegAlgoMM.cc b/RecoLocalMuon/GEMSegment/plugins/ME0SegAlgoMM.cc index 0abf810e251b5..b764bdd156fc4 100644 --- a/RecoLocalMuon/GEMSegment/plugins/ME0SegAlgoMM.cc +++ b/RecoLocalMuon/GEMSegment/plugins/ME0SegAlgoMM.cc @@ -32,7 +32,13 @@ ME0SegAlgoMM::ME0SegAlgoMM(const edm::ParameterSet& ps) : ME0SegmentAlgorithm(ps preClustering_useChaining = ps.getParameter("preClusteringUseChaining"); dPhiChainBoxMax = ps.getParameter("dPhiChainBoxMax"); dEtaChainBoxMax = ps.getParameter("dEtaChainBoxMax"); + dTimeChainBoxMax = ps.getParameter("dTimeChainBoxMax"); maxRecHitsInCluster = ps.getParameter("maxRecHitsInCluster"); + + edm::LogVerbatim("ME0SegAlgoMM") << "[ME0SegAlgoMM::ctor] Parameters to build segments :: " + << "preClustering = "<id()); + edm::LogVerbatim("GEMSegAlgoMM") << "[ME0SegAlgoMM::run] build segments in chamber " << chId << " which contains "<me0Id(); + auto rhLP = (*rh)->localPosition(); + edm::LogVerbatim("ME0SegAlgoMM") << "[RecHit :: Loc x = "< segments_temp; std::vector segments; @@ -256,7 +270,7 @@ ME0SegAlgoMM::chainHits(const EnsembleHitContainer& rechits) { bool ME0SegAlgoMM::isGoodToMerge(const EnsembleHitContainer& newChain, const EnsembleHitContainer& oldChain) { - std::vector phi_new, eta_new, phi_old, eta_old; + std::vector phi_new, eta_new, time_new, phi_old, eta_old, time_old; std::vector layer_new, layer_old; for(size_t iRH_new = 0;iRH_newme0Id().layer()); phi_new.push_back(pos_new.phi()); eta_new.push_back(pos_new.eta()); + time_new.push_back(newChain[iRH_new]->tof()); } for(size_t iRH_old = 0;iRH_oldtoGlobal(oldChain[iRH_old]->localPosition()); layer_old.push_back(oldChain[iRH_old]->me0Id().layer()); phi_old.push_back(pos_old.phi()); eta_old.push_back(pos_old.eta()); + time_old.push_back(oldChain[iRH_old]->tof()); } for(size_t jRH_new = 0; jRH_newid().nlayers()-1); + // and they should have a time difference compatible with the hypothesis + // that the rechits originate from the same particle, but were detected in different layers + bool timeRequirementOK = fabs(time_new[jRH_new] - time_old[jRH_old]) < dTimeChainBoxMax; - if(layerRequirementOK && phiRequirementOK && etaRequirementOK){ + if(layerRequirementOK && phiRequirementOK && etaRequirementOK && timeRequirementOK){ return true; } } @@ -304,6 +323,16 @@ bool ME0SegAlgoMM::isGoodToMerge(const EnsembleHitContainer& newChain, const Ens std::vector ME0SegAlgoMM::buildSegments(const EnsembleHitContainer& rechits) { std::vector me0segs; + edm::LogVerbatim("ME0SegAlgoMM") << "[ME0SegAlgoMM::buildSegments] will now try to fit a ME0Segment from collection of "<me0Id(); + auto rhLP = (*rh)->localPosition(); + edm::LogVerbatim("ME0SegAlgoMM") << "[RecHit :: Loc x = "< Date: Wed, 11 Nov 2015 18:52:51 +0100 Subject: [PATCH 05/20] cluster ME0 hits in time window for ME0Segment, porting to CMSSW_8_0_0 of PR 12370 --- RecoLocalMuon/GEMSegment/plugins/ME0SegAlgoMM.h | 1 + 1 file changed, 1 insertion(+) diff --git a/RecoLocalMuon/GEMSegment/plugins/ME0SegAlgoMM.h b/RecoLocalMuon/GEMSegment/plugins/ME0SegAlgoMM.h index 5b2ee8adfde91..b48507f3f132e 100644 --- a/RecoLocalMuon/GEMSegment/plugins/ME0SegAlgoMM.h +++ b/RecoLocalMuon/GEMSegment/plugins/ME0SegAlgoMM.h @@ -68,6 +68,7 @@ class ME0SegAlgoMM : public ME0SegmentAlgorithm { bool preClustering_useChaining; double dPhiChainBoxMax; double dEtaChainBoxMax; + double dTimeChainBoxMax; int maxRecHitsInCluster; private: From f6e68908daf1b7b310e091ecd6758cef4cdbf431 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 11 Nov 2015 18:52:59 +0100 Subject: [PATCH 06/20] cluster ME0 hits in time window for ME0Segment, porting to CMSSW_8_0_0 of PR 12370 --- RecoLocalMuon/GEMSegment/plugins/ME0SegmentBuilder.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RecoLocalMuon/GEMSegment/plugins/ME0SegmentBuilder.cc b/RecoLocalMuon/GEMSegment/plugins/ME0SegmentBuilder.cc index 3a4709daaedbf..cdee3b4d90d89 100644 --- a/RecoLocalMuon/GEMSegment/plugins/ME0SegmentBuilder.cc +++ b/RecoLocalMuon/GEMSegment/plugins/ME0SegmentBuilder.cc @@ -63,7 +63,7 @@ void ME0SegmentBuilder::build(const ME0RecHitCollection* recHits, ME0SegmentColl } ME0SegmentAlgorithm::ME0Ensemble ensemble(std::pair >(firstlayer,ens)); - // LogDebug("ME0SegmentBuilder") << "found " << me0RecHits.size() << " rechits in chamber " << *enIt; + LogDebug("ME0SegmentBuilder") << "found " << me0RecHits.size() << " rechits in chamber " /*<< *enIt */; // given the chamber select the appropriate algo... and run it std::vector segv = algo->run(ensemble, me0RecHits); From bf39803d884db26c95f0ef3b6a7844c12c1c94d2 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 11 Nov 2015 18:53:07 +0100 Subject: [PATCH 07/20] cluster ME0 hits in time window for ME0Segment, porting to CMSSW_8_0_0 of PR 12370 --- RecoLocalMuon/GEMSegment/python/me0Segments_cfi.py | 1 + 1 file changed, 1 insertion(+) diff --git a/RecoLocalMuon/GEMSegment/python/me0Segments_cfi.py b/RecoLocalMuon/GEMSegment/python/me0Segments_cfi.py index fc57fb970bc24..774e788e21d63 100644 --- a/RecoLocalMuon/GEMSegment/python/me0Segments_cfi.py +++ b/RecoLocalMuon/GEMSegment/python/me0Segments_cfi.py @@ -12,6 +12,7 @@ preClusteringUseChaining = cms.bool(True), dPhiChainBoxMax = cms.double(.02), dEtaChainBoxMax = cms.double(.05), + dTimeChainBoxMax = cms.double(1.50), # 1ns, +/- time to fly through 30cm thick ME0 maxRecHitsInCluster = cms.int32(6) ) ) From 59efe0d9cfb843ba7e0e379cfeaa9c23f412ef96 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 11 Nov 2015 18:53:30 +0100 Subject: [PATCH 08/20] distribute neutron background uniform in time, porting to CMSSW_8_0_0 of PR 12370 --- .../interface/ME0PreRecoGaussianModel.h | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/SimMuon/GEMDigitizer/interface/ME0PreRecoGaussianModel.h b/SimMuon/GEMDigitizer/interface/ME0PreRecoGaussianModel.h index e4f34d5a98fed..d08faf1b47b34 100644 --- a/SimMuon/GEMDigitizer/interface/ME0PreRecoGaussianModel.h +++ b/SimMuon/GEMDigitizer/interface/ME0PreRecoGaussianModel.h @@ -37,32 +37,16 @@ class ME0PreRecoGaussianModel: public ME0DigiPreRecoModel bool etaproj; bool digitizeOnlyMuons_; double averageEfficiency_; - bool doBkgNoise_; - bool simulateIntrinsicNoise_; + // bool simulateIntrinsicNoise_; // not implemented + // double averageNoiseRate_; // not implemented bool simulateElectronBkg_; + bool simulateNeutralBkg_; - double averageNoiseRate_; - int bxwidth_; int minBunch_; int maxBunch_; - //params for the simple pol6 model of neutral bkg for ME0: - double ME0ModNeuBkgParam0; - double ME0ModNeuBkgParam1; - double ME0ModNeuBkgParam2; - double ME0ModNeuBkgParam3; - double ME0ModNeuBkgParam4; - double ME0ModNeuBkgParam5; - double ME0ModNeuBkgParam6; - - double ME0ModElecBkgParam0; - double ME0ModElecBkgParam1; - double ME0ModElecBkgParam2; - double ME0ModElecBkgParam3; - double ME0ModElecBkgParam4; - double ME0ModElecBkgParam5; - double ME0ModElecBkgParam6; - double ME0ModElecBkgParam7; + // params for the simple pol6 model of neutral bkg for ME0: + std::vector neuBkg, eleBkg; }; #endif From d8eea10ff46be734af357f4ede3844bc47791f15 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 11 Nov 2015 18:53:38 +0100 Subject: [PATCH 09/20] distribute neutron background uniform in time, porting to CMSSW_8_0_0 of PR 12370 --- .../python/muonME0DigisPreReco_cfi.py | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/SimMuon/GEMDigitizer/python/muonME0DigisPreReco_cfi.py b/SimMuon/GEMDigitizer/python/muonME0DigisPreReco_cfi.py index dbfd9e02e5a5a..dcd2614e23758 100644 --- a/SimMuon/GEMDigitizer/python/muonME0DigisPreReco_cfi.py +++ b/SimMuon/GEMDigitizer/python/muonME0DigisPreReco_cfi.py @@ -2,21 +2,19 @@ # Module to create simulated ME0 Pre Reco digis. simMuonME0Digis = cms.EDProducer("ME0DigiPreRecoProducer", - mixLabel = cms.string('mix'), inputCollection = cms.string('g4SimHitsMuonME0Hits'), digiPreRecoModelString = cms.string('PreRecoGaussian'), - timeResolution = cms.double(0.010), # [in ns] => for now at 10ps - phiResolution = cms.double(0.05), # [in cm] average resolution along local x in case of no correlation - etaResolution = cms.double(1.), # [in cm] average resolution along local y in case of no correlation - useCorrelation = cms.bool(False), - useEtaProjectiveGEO = cms.bool(False), + timeResolution = cms.double(0.001), # in ns + phiResolution = cms.double(0.05), # in cm average resolution along local x in case of no correlation + etaResolution = cms.double(1.), # in cm average resolution along local y in case of no correlation + useCorrelation = cms.bool(False), + useEtaProjectiveGEO = cms.bool(False), averageEfficiency = cms.double(0.98), - doBkgNoise = cms.bool(False), # False => No background noise simulation digitizeOnlyMuons = cms.bool(False), - simulateIntrinsicNoise = cms.bool(False), - simulateElectronBkg = cms.bool(False), # True => will simulate electron background - averageNoiseRate = cms.double(0.001), # simulation of intrinsic noise - bxwidth = cms.int32(25), - minBunch = cms.int32(-5), # in bx-units (x 25 ns) - maxBunch = cms.int32(3) + # simulateIntrinsicNoise = cms.bool(False), # intrinsic noise --> not implemented + # averageNoiseRate = cms.double(0.001), # intrinsic noise --> not implemented + simulateElectronBkg = cms.bool(True), # True - will simulate electron background + simulateNeutralBkg = cms.bool(True), # True - will simulate neutral (n+g) background + minBunch = cms.int32(-5), # [x 25 ns], forms the readout window together with maxBunch, + maxBunch = cms.int32(3), # we should think of shrinking this window ... ) From 48ae8e9209ed5a0c0dc63e92e9d969ee80d58034 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 11 Nov 2015 18:53:46 +0100 Subject: [PATCH 10/20] distribute neutron background uniform in time, porting to CMSSW_8_0_0 of PR 12370 --- .../src/ME0PreRecoGaussianModel.cc | 270 +++++++++--------- 1 file changed, 128 insertions(+), 142 deletions(-) diff --git a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc index ba449386b40ac..833d255219a19 100644 --- a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc +++ b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc @@ -11,41 +11,30 @@ #include #include -ME0PreRecoGaussianModel::ME0PreRecoGaussianModel(const edm::ParameterSet& config) : - ME0DigiPreRecoModel(config) -, sigma_t(config.getParameter ("timeResolution")) -, sigma_u(config.getParameter ("phiResolution")) -, sigma_v(config.getParameter ("etaResolution")) -, corr(config.getParameter ("useCorrelation")) -, etaproj(config.getParameter ("useEtaProjectiveGEO")) -, digitizeOnlyMuons_(config.getParameter ("digitizeOnlyMuons")) -, averageEfficiency_(config.getParameter ("averageEfficiency")) -, doBkgNoise_(config.getParameter ("doBkgNoise")) -, simulateIntrinsicNoise_(config.getParameter ("simulateIntrinsicNoise")) -, simulateElectronBkg_(config.getParameter("simulateElectronBkg")) -, averageNoiseRate_(config.getParameter ("averageNoiseRate")) -, bxwidth_(config.getParameter ("bxwidth")) -, minBunch_(config.getParameter ("minBunch")) -, maxBunch_(config.getParameter ("maxBunch")) +const double cspeed = 29.9792458; // [cm/ns] +const int bxwidth = 25; // [ns] +ME0PreRecoGaussianModel::ME0PreRecoGaussianModel(const edm::ParameterSet& config) : + ME0DigiPreRecoModel(config), + sigma_t(config.getParameter("timeResolution")), + sigma_u(config.getParameter("phiResolution")), + sigma_v(config.getParameter("etaResolution")), + corr(config.getParameter("useCorrelation")), + etaproj(config.getParameter("useEtaProjectiveGEO")), + digitizeOnlyMuons_(config.getParameter("digitizeOnlyMuons")), + averageEfficiency_(config.getParameter("averageEfficiency")), + // simulateIntrinsicNoise_(config.getParameter("simulateIntrinsicNoise")), + // averageNoiseRate_(config.getParameter("averageNoiseRate")), + simulateElectronBkg_(config.getParameter("simulateElectronBkg")), + simulateNeutralBkg_(config.getParameter("simulateNeutralBkg")), + minBunch_(config.getParameter("minBunch")), + maxBunch_(config.getParameter("maxBunch")) { - //params for the simple pol6 model of neutral and electron bkg for ME0: - ME0ModNeuBkgParam0 = 5.69e+06; - ME0ModNeuBkgParam1 = -293334; - ME0ModNeuBkgParam2 = 6279.6; - ME0ModNeuBkgParam3 = -71.2928; - ME0ModNeuBkgParam4 = 0.452244; - ME0ModNeuBkgParam5 = -0.0015191; - ME0ModNeuBkgParam6 = 2.1106e-06; - - ME0ModElecBkgParam0 = 3.77712e+06; - ME0ModElecBkgParam1 = -199280; - ME0ModElecBkgParam2 = 4340.69; - ME0ModElecBkgParam3 = -49.922; - ME0ModElecBkgParam4 = 0.319699; - ME0ModElecBkgParam5 = -0.00108113; - ME0ModElecBkgParam6 = 1.50889e-06; - + // polynomial parametrisation of neutral (n+g) and electron background + neuBkg.push_back(5.69e+06); neuBkg.push_back(-293334); neuBkg.push_back(6279.6); + neuBkg.push_back(-71.2928); neuBkg.push_back(0.452244); neuBkg.push_back(-0.0015191); neuBkg.push_back(2.1106e-06); + eleBkg.push_back(3.77712e+06); eleBkg.push_back(-199280); eleBkg.push_back(4340.69); + eleBkg.push_back(-49.922); eleBkg.push_back(0.319699); eleBkg.push_back(-0.00108113); eleBkg.push_back(1.50889e-06); } ME0PreRecoGaussianModel::~ME0PreRecoGaussianModel() @@ -56,10 +45,11 @@ void ME0PreRecoGaussianModel::simulateSignal(const ME0EtaPartition* roll, const { for (const auto & hit: simHits) { + // Digitize only Muons? if (std::abs(hit.particleType()) != 13 && digitizeOnlyMuons_) continue; - // GEM efficiency + // is GEM efficient? if (CLHEP::RandFlat::shoot(engine) > averageEfficiency_) continue; - + // create digi auto entry = hit.entryPoint(); float x=CLHEP::RandGaussQ::shoot(engine, entry.x(), sigma_u); float y=CLHEP::RandGaussQ::shoot(engine, entry.y(), sigma_v); @@ -68,7 +58,6 @@ for (const auto & hit: simHits) float corr=0.; float tof=CLHEP::RandGaussQ::shoot(engine, hit.timeOfFlight(), sigma_t); int pdgid = hit.particleType(); - // please keep hit time always 0 for this model ME0DigiPreReco digi(x,y,ex,ey,corr,tof,pdgid); digi_.insert(digi); } @@ -76,117 +65,114 @@ for (const auto & hit: simHits) void ME0PreRecoGaussianModel::simulateNoise(const ME0EtaPartition* roll, CLHEP::HepRandomEngine* engine) { - const double cspeed = 299792458; double trArea(0.0); const ME0DetId me0Id(roll->id()); - if (me0Id.region() == 0) - { - throw cms::Exception("Geometry") - << "GEMSynchronizer::simulateNoise() - this GEM id is from barrel, which cannot happen."; - } - const TrapezoidalStripTopology* top_(dynamic_cast (&(roll->topology()))); + // Extract detailed information from the Strip Topology: + // base_bottom, base_top, height, strips, pads + // note that (0,0) is in the middle of the roll ==> all param are at all half length + if (me0Id.region() == 0) { throw cms::Exception("Geometry") << "Asking TrapezoidalStripTopology from a ME0 will fail"; } // not sure we really need this + const TrapezoidalStripTopology* top_(dynamic_cast(&(roll->topology()))); - // base_bottom, base_top, height, strips, pads (all half length) auto& parameters(roll->specs()->parameters()); - float semiBottomEdge(parameters[0]); - float semiTopEdge(parameters[1]); - float semiHeight(parameters[2]); - float myTanPhi = (semiTopEdge - semiBottomEdge) / (semiHeight * 2); + float bottomLength(parameters[0]); bottomLength = 2*bottomLength; + float topLength(parameters[1]); topLength = 2*topLength; + float height(parameters[2]); height = 2*height; + float myTanPhi = (topLength - bottomLength) / (height * 2); double rollRadius = top_->radius(); - const int nBxing(maxBunch_ - minBunch_ + 1); - trArea = 2 * semiHeight * (semiTopEdge + semiBottomEdge); - - //simulate bkg contribution - if (!doBkgNoise_) - return; - - double aveNeutrRateBotRoll = 0.; - double averageNoiseElectronRatePerRoll = 0.; - int pdgid = 0; - - float myRand = CLHEP::RandFlat::shoot(engine); - float yy_rand = 2 * semiHeight * (myRand - 0.5); - - double radius_rand = rollRadius + yy_rand; - - if(simulateElectronBkg_) - averageNoiseElectronRatePerRoll = ME0ModElecBkgParam0 - + ME0ModElecBkgParam1 * radius_rand - + ME0ModElecBkgParam2 * radius_rand * radius_rand - + ME0ModElecBkgParam3 * radius_rand * radius_rand * radius_rand - + ME0ModElecBkgParam4 * radius_rand * radius_rand * radius_rand * radius_rand - + ME0ModElecBkgParam5 * radius_rand * radius_rand * radius_rand * radius_rand * radius_rand - + ME0ModElecBkgParam6 * radius_rand * radius_rand * radius_rand * radius_rand * radius_rand * radius_rand; - - const double averageNoiseElec(averageNoiseElectronRatePerRoll * nBxing * bxwidth_ * trArea * 1.0e-9); - const int n_elechits(CLHEP::RandPoissonQ::shoot(engine, averageNoiseElec)); - - double xMax = semiTopEdge - (semiHeight - yy_rand) * myTanPhi; - for (int i = 0; i < n_elechits; ++i) - { - //calculate xx_rand at a given yy_rand - float myRandX = CLHEP::RandFlat::shoot(engine); - float xx_rand = 2 * xMax * (myRandX - 0.5); - - float ex = sigma_u; - float ey = sigma_v; - float corr = 0.; - - GlobalPoint pointDigiHit = roll->toGlobal(LocalPoint(xx_rand, yy_rand)); - //calc tof to the random estimated point - double stripRadius = sqrt(pointDigiHit.x() * pointDigiHit.x() + pointDigiHit.y() * pointDigiHit.y() - + pointDigiHit.z() * pointDigiHit.z()); - double timeCalibrationOffset_ = (stripRadius * 1e+9) / (cspeed * 1e+2); //[ns] - float tof = CLHEP::RandGaussQ::shoot(engine, timeCalibrationOffset_, sigma_t); - - float myrand = CLHEP::RandFlat::shoot(engine); - if (myrand <= 0.5) - pdgid = -11; - else - pdgid = 11; - - ME0DigiPreReco digi(xx_rand, yy_rand, ex, ey, corr, tof, pdgid); - digi_.insert(digi); - } - - aveNeutrRateBotRoll = ME0ModNeuBkgParam0 - + ME0ModNeuBkgParam1 * radius_rand - + ME0ModNeuBkgParam2 * radius_rand * radius_rand - + ME0ModNeuBkgParam3 * radius_rand * radius_rand * radius_rand - + ME0ModNeuBkgParam4 * radius_rand * radius_rand * radius_rand * radius_rand - + ME0ModNeuBkgParam5 * radius_rand * radius_rand * radius_rand * radius_rand * radius_rand - + ME0ModNeuBkgParam6 * radius_rand * radius_rand * radius_rand * radius_rand * radius_rand * radius_rand; - - const double averageNoiseNeutral(aveNeutrRateBotRoll * nBxing * bxwidth_ * trArea * 1.0e-9); - const int n_hits(CLHEP::RandPoissonQ::shoot(engine, averageNoiseNeutral)); - - for (int i = 0; i < n_hits; ++i) - { - //calculate xx_rand at a given yy_rand - float myRandX = CLHEP::RandFlat::shoot(engine); - float xx_rand = 2 * xMax * (myRandX - 0.5); - - float ex = sigma_u; - float ey = sigma_v; - float corr = 0.; - - GlobalPoint pointDigiHit = roll->toGlobal(LocalPoint(xx_rand, yy_rand)); - //calc tof to the random estimated point - double stripRadius = sqrt(pointDigiHit.x() * pointDigiHit.x() + pointDigiHit.y() * pointDigiHit.y() - + pointDigiHit.z() * pointDigiHit.z()); - double timeCalibrationOffset_ = (stripRadius * 1e+9) / (cspeed * 1e+2); //[ns] - float tof = CLHEP::RandGaussQ::shoot(engine, timeCalibrationOffset_, sigma_t); - - //distribute bkg between neutrons and gammas - float myrand = CLHEP::RandFlat::shoot(engine); - if (myrand <= 0.1) - pdgid = 2112; // neutrons - else - pdgid = 22; - - ME0DigiPreReco digi(xx_rand, yy_rand, ex, ey, corr, tof, pdgid); - digi_.insert(digi); - } + trArea = height * (topLength + bottomLength) / 2.0; + + // simulate intrinsic noise and background hits in all BX that are being read out + for(int bx=minBunch_; bx neutron fraction = (0.08 / 1.04) = 0.077 = 0.08 + ME0DigiPreReco digi(xx_rand, yy_rand, ex, ey, corr, time, pdgid); + digi_.insert(digi); + } + } + + } // end loop over bx } From 8f2efdc531b0e00bedd8a0387696e598c8176ede Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Thu, 12 Nov 2015 13:42:02 +0100 Subject: [PATCH 11/20] correct values for Neutr bkg + possibility for Uniform Smearing --- .../src/ME0PreRecoGaussianModel.cc | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc index 833d255219a19..99a8ec6b7c40b 100644 --- a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc +++ b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc @@ -22,6 +22,7 @@ ME0PreRecoGaussianModel::ME0PreRecoGaussianModel(const edm::ParameterSet& config corr(config.getParameter("useCorrelation")), etaproj(config.getParameter("useEtaProjectiveGEO")), digitizeOnlyMuons_(config.getParameter("digitizeOnlyMuons")), + gaussianSmearing_(config.getParameter("gaussianSmearing")), averageEfficiency_(config.getParameter("averageEfficiency")), // simulateIntrinsicNoise_(config.getParameter("simulateIntrinsicNoise")), // averageNoiseRate_(config.getParameter("averageNoiseRate")), @@ -31,10 +32,10 @@ ME0PreRecoGaussianModel::ME0PreRecoGaussianModel(const edm::ParameterSet& config maxBunch_(config.getParameter("maxBunch")) { // polynomial parametrisation of neutral (n+g) and electron background - neuBkg.push_back(5.69e+06); neuBkg.push_back(-293334); neuBkg.push_back(6279.6); - neuBkg.push_back(-71.2928); neuBkg.push_back(0.452244); neuBkg.push_back(-0.0015191); neuBkg.push_back(2.1106e-06); - eleBkg.push_back(3.77712e+06); eleBkg.push_back(-199280); eleBkg.push_back(4340.69); - eleBkg.push_back(-49.922); eleBkg.push_back(0.319699); eleBkg.push_back(-0.00108113); eleBkg.push_back(1.50889e-06); + neuBkg.push_back(899644.0); neuBkg.push_back(-30841.0); neuBkg.push_back(441.28); + neuBkg.push_back(-3.3405); neuBkg.push_back(0.0140588); neuBkg.push_back(-3.11473e-05); neuBkg.push_back(2.83736e-08); + eleBkg.push_back(4.68590e+05); eleBkg.push_back(-1.63834e+04); eleBkg.push_back(2.35700e+02); + eleBkg.push_back(-1.77706e+00); eleBkg.push_back(7.39960e-03); eleBkg.push_back(-1.61448e-05); eleBkg.push_back(1.44368e-08); } ME0PreRecoGaussianModel::~ME0PreRecoGaussianModel() @@ -51,8 +52,15 @@ for (const auto & hit: simHits) if (CLHEP::RandFlat::shoot(engine) > averageEfficiency_) continue; // create digi auto entry = hit.entryPoint(); - float x=CLHEP::RandGaussQ::shoot(engine, entry.x(), sigma_u); - float y=CLHEP::RandGaussQ::shoot(engine, entry.y(), sigma_v); + float x=0.0, y=0.0; + if(gaussianSmearing_) { // Gaussian Smearing + x=CLHEP::RandGaussQ::shoot(engine, entry.x(), sigma_u); + y=CLHEP::RandGaussQ::shoot(engine, entry.y(), sigma_v); + } + else { // Uniform Smearing ... use the sigmas as boundaries + x=entry.x()+(CLHEP::RandFlat::shoot(engine)-0.5)*sigma_u; + y=entry.y()+(CLHEP::RandFlat::shoot(engine)-0.5)*sigma_v; + } float ex=sigma_u; float ey=sigma_v; float corr=0.; From d2f47c5f87b4c097e84f29708fabbf3f8e6bc2c4 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Thu, 12 Nov 2015 13:42:21 +0100 Subject: [PATCH 12/20] possibility for Uniform Smearing --- SimMuon/GEMDigitizer/interface/ME0PreRecoGaussianModel.h | 1 + 1 file changed, 1 insertion(+) diff --git a/SimMuon/GEMDigitizer/interface/ME0PreRecoGaussianModel.h b/SimMuon/GEMDigitizer/interface/ME0PreRecoGaussianModel.h index d08faf1b47b34..8f6d77d621a61 100644 --- a/SimMuon/GEMDigitizer/interface/ME0PreRecoGaussianModel.h +++ b/SimMuon/GEMDigitizer/interface/ME0PreRecoGaussianModel.h @@ -36,6 +36,7 @@ class ME0PreRecoGaussianModel: public ME0DigiPreRecoModel bool corr; bool etaproj; bool digitizeOnlyMuons_; + bool gaussianSmearing_; double averageEfficiency_; // bool simulateIntrinsicNoise_; // not implemented // double averageNoiseRate_; // not implemented From aa1d24486933b1c499672aa0c2b69ea49e8833d8 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Thu, 12 Nov 2015 13:42:28 +0100 Subject: [PATCH 13/20] possibility for Uniform Smearing --- SimMuon/GEMDigitizer/python/muonME0DigisPreReco_cfi.py | 1 + 1 file changed, 1 insertion(+) diff --git a/SimMuon/GEMDigitizer/python/muonME0DigisPreReco_cfi.py b/SimMuon/GEMDigitizer/python/muonME0DigisPreReco_cfi.py index dcd2614e23758..87ae9b447800f 100644 --- a/SimMuon/GEMDigitizer/python/muonME0DigisPreReco_cfi.py +++ b/SimMuon/GEMDigitizer/python/muonME0DigisPreReco_cfi.py @@ -10,6 +10,7 @@ useCorrelation = cms.bool(False), useEtaProjectiveGEO = cms.bool(False), averageEfficiency = cms.double(0.98), + gaussianSmearing = cms.bool(True), # False --> Uniform smearing digitizeOnlyMuons = cms.bool(False), # simulateIntrinsicNoise = cms.bool(False), # intrinsic noise --> not implemented # averageNoiseRate = cms.double(0.001), # intrinsic noise --> not implemented From b57aefcf2286102fd888883aadd4086631b99dc2 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Fri, 13 Nov 2015 18:00:30 +0100 Subject: [PATCH 14/20] removed unused cspeed --- SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc index 99a8ec6b7c40b..172e0748090a8 100644 --- a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc +++ b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc @@ -11,7 +11,6 @@ #include #include -const double cspeed = 29.9792458; // [cm/ns] const int bxwidth = 25; // [ns] ME0PreRecoGaussianModel::ME0PreRecoGaussianModel(const edm::ParameterSet& config) : From b0dfb6b1f3a7fc357cf55651b2edf76a9f98742f Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Mon, 16 Nov 2015 13:07:23 +0100 Subject: [PATCH 15/20] all calculations with double precision --- .../src/ME0PreRecoGaussianModel.cc | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc index 172e0748090a8..275a17eba7d5e 100644 --- a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc +++ b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc @@ -51,7 +51,7 @@ for (const auto & hit: simHits) if (CLHEP::RandFlat::shoot(engine) > averageEfficiency_) continue; // create digi auto entry = hit.entryPoint(); - float x=0.0, y=0.0; + double x=0.0, y=0.0; if(gaussianSmearing_) { // Gaussian Smearing x=CLHEP::RandGaussQ::shoot(engine, entry.x(), sigma_u); y=CLHEP::RandGaussQ::shoot(engine, entry.y(), sigma_v); @@ -60,10 +60,10 @@ for (const auto & hit: simHits) x=entry.x()+(CLHEP::RandFlat::shoot(engine)-0.5)*sigma_u; y=entry.y()+(CLHEP::RandFlat::shoot(engine)-0.5)*sigma_v; } - float ex=sigma_u; - float ey=sigma_v; - float corr=0.; - float tof=CLHEP::RandGaussQ::shoot(engine, hit.timeOfFlight(), sigma_t); + double ex=sigma_u; + double ey=sigma_v; + double corr=0.; + double tof=CLHEP::RandGaussQ::shoot(engine, hit.timeOfFlight(), sigma_t); int pdgid = hit.particleType(); ME0DigiPreReco digi(x,y,ex,ey,corr,tof,pdgid); digi_.insert(digi); @@ -82,11 +82,11 @@ void ME0PreRecoGaussianModel::simulateNoise(const ME0EtaPartition* roll, CLHEP:: const TrapezoidalStripTopology* top_(dynamic_cast(&(roll->topology()))); auto& parameters(roll->specs()->parameters()); - float bottomLength(parameters[0]); bottomLength = 2*bottomLength; - float topLength(parameters[1]); topLength = 2*topLength; - float height(parameters[2]); height = 2*height; - float myTanPhi = (topLength - bottomLength) / (height * 2); - double rollRadius = top_->radius(); + double bottomLength(parameters[0]); bottomLength = 2*bottomLength; + double topLength(parameters[1]); topLength = 2*topLength; + double height(parameters[2]); height = 2*height; + double myTanPhi = (topLength - bottomLength) / (height * 2); + double rollRadius = top_->radius(); trArea = height * (topLength + bottomLength) / 2.0; // simulate intrinsic noise and background hits in all BX that are being read out @@ -104,8 +104,8 @@ void ME0PreRecoGaussianModel::simulateNoise(const ME0EtaPartition* roll, CLHEP:: // ----------------------- if (simulateElectronBkg_) { - float myRandY = CLHEP::RandFlat::shoot(engine); - float yy_rand = height * (myRandY - 0.5); // random Y coord in Local Coords + double myRandY = CLHEP::RandFlat::shoot(engine); + double yy_rand = height * (myRandY - 0.5); // random Y coord in Local Coords double yy_glob = rollRadius + yy_rand; // random Y coord in Global Coords // Extract / Calculate the Average Electron Rate @@ -123,16 +123,16 @@ void ME0PreRecoGaussianModel::simulateNoise(const ME0EtaPartition* roll, CLHEP:: // loop over amount of electron hits in this roll for (int i = 0; i < n_elechits; ++i) { //calculate xx_rand at a given yy_rand - float myRandX = CLHEP::RandFlat::shoot(engine); - float xx_rand = 2 * xMax * (myRandX - 0.5); - float ex = sigma_u; - float ey = sigma_v; - float corr = 0.; + double myRandX = CLHEP::RandFlat::shoot(engine); + double xx_rand = 2 * xMax * (myRandX - 0.5); + double ex = sigma_u; + double ey = sigma_v; + double corr = 0.; // extract random time in this BX - float myrandT = CLHEP::RandFlat::shoot(engine); - float minBXtime = (bx-0.5)*bxwidth; // float maxBXtime = (bx+0.5)*bxwidth; - float time = myrandT*bxwidth+minBXtime; - float myrandP = CLHEP::RandFlat::shoot(engine); + double myrandT = CLHEP::RandFlat::shoot(engine); + double minBXtime = (bx-0.5)*bxwidth; // double maxBXtime = (bx+0.5)*bxwidth; + double time = myrandT*bxwidth+minBXtime; + double myrandP = CLHEP::RandFlat::shoot(engine); int pdgid = 0; if (myrandP <= 0.5) pdgid = -11; // electron else pdgid = 11; // positron @@ -145,8 +145,8 @@ void ME0PreRecoGaussianModel::simulateNoise(const ME0EtaPartition* roll, CLHEP:: // ---------------------------- if (simulateNeutralBkg_) { - float myRandY = CLHEP::RandFlat::shoot(engine); - float yy_rand = height * (myRandY - 0.5); // random Y coord in Local Coords + double myRandY = CLHEP::RandFlat::shoot(engine); + double yy_rand = height * (myRandY - 0.5); // random Y coord in Local Coords double yy_glob = rollRadius + yy_rand; // random Y coord in Global Coords // Extract / Calculate the Average Electron Rate // for the given global Y coord from Parametrization @@ -162,17 +162,17 @@ void ME0PreRecoGaussianModel::simulateNoise(const ME0EtaPartition* roll, CLHEP:: // loop over amount of neutral hits in this roll for (int i = 0; i < n_hits; ++i) { //calculate xx_rand at a given yy_rand - float myRandX = CLHEP::RandFlat::shoot(engine); - float xx_rand = 2 * xMax * (myRandX - 0.5); - float ex = sigma_u; - float ey = sigma_v; - float corr = 0.; + double myRandX = CLHEP::RandFlat::shoot(engine); + double xx_rand = 2 * xMax * (myRandX - 0.5); + double ex = sigma_u; + double ey = sigma_v; + double corr = 0.; // extract random time in this BX - float myrandT = CLHEP::RandFlat::shoot(engine); - float minBXtime = (bx-0.5)*bxwidth; - float time = myrandT*bxwidth+minBXtime; + double myrandT = CLHEP::RandFlat::shoot(engine); + double minBXtime = (bx-0.5)*bxwidth; + double time = myrandT*bxwidth+minBXtime; int pdgid = 0; - float myrandP = CLHEP::RandFlat::shoot(engine); + double myrandP = CLHEP::RandFlat::shoot(engine); if (myrandP <= 0.08) pdgid = 2112; // neutrons: GEM sensitivity for neutrons: 0.08% else pdgid = 22; // photons: GEM sensitivity for photons: 1.04% ==> neutron fraction = (0.08 / 1.04) = 0.077 = 0.08 ME0DigiPreReco digi(xx_rand, yy_rand, ex, ey, corr, time, pdgid); From 7036766cb3b352491ddbe5dbb551f0c3df1b0e50 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Mon, 16 Nov 2015 13:18:20 +0100 Subject: [PATCH 16/20] avoid overhead due to pow calculation --- SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc index 275a17eba7d5e..835aec58d0239 100644 --- a/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc +++ b/SimMuon/GEMDigitizer/src/ME0PreRecoGaussianModel.cc @@ -106,12 +106,13 @@ void ME0PreRecoGaussianModel::simulateNoise(const ME0EtaPartition* roll, CLHEP:: double myRandY = CLHEP::RandFlat::shoot(engine); double yy_rand = height * (myRandY - 0.5); // random Y coord in Local Coords - double yy_glob = rollRadius + yy_rand; // random Y coord in Global Coords + double yy_glob = rollRadius + yy_rand; // random Y coord in Global Coords // Extract / Calculate the Average Electron Rate // for the given global Y coord from Parametrization double averageElectronRatePerRoll = 0.0; - for(int j=0; j<7; ++j) { averageElectronRatePerRoll += eleBkg[j]*pow(yy_glob,j); } + double yy_helper = 1.0; + for(int j=0; j<7; ++j) { averageElectronRatePerRoll += eleBkg[j]*yy_helper; yy_helper *= yy_glob; } // Rate [Hz/cm^2] * 25*10^-9 [s] * Area [cm] = # hits in this roll const double averageElecRate(averageElectronRatePerRoll * (bxwidth*1.0e-9) * trArea); @@ -151,7 +152,8 @@ void ME0PreRecoGaussianModel::simulateNoise(const ME0EtaPartition* roll, CLHEP:: // Extract / Calculate the Average Electron Rate // for the given global Y coord from Parametrization double averageNeutralRatePerRoll = 0.0; - for(int j=0; j<7; ++j) { averageNeutralRatePerRoll += neuBkg[j]*pow(yy_glob,j); } + double yy_helper = 1.0; + for(int j=0; j<7; ++j) { averageNeutralRatePerRoll += neuBkg[j]*yy_helper; yy_helper *= yy_glob; } // Rate [Hz/cm^2] * 25*10^-9 [s] * Area [cm] = # hits in this roll const double averageNeutrRate(averageNeutralRatePerRoll * (bxwidth*1.0e-9) * trArea); int n_hits(CLHEP::RandPoissonQ::shoot(engine, averageNeutrRate)); From 1d786024865db16d248bd4b626dc7e14c859c77f Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Tue, 1 Dec 2015 16:08:06 +0100 Subject: [PATCH 17/20] removed MC-truth dependence to reconstruct only muon hits --- RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc b/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc index 1f36d61856284..59ad4554faceb 100644 --- a/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc +++ b/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc @@ -33,7 +33,6 @@ const ME0DigiPreRecoCollection::Range& digiRange){ // Call the compute method bool OK = this->compute(*digi, point, tmpErr); if (!OK) continue; - if (recOnlyMuons && std::abs(digi->pdgid()) != 13) continue; ME0RecHit* recHit = new ME0RecHit(me0Id,digi->tof(),point,tmpErr); result.push_back(recHit); } From 5190a530cbccbc7a5b18f0d5ae14dc70260783f0 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Tue, 1 Dec 2015 16:51:01 +0100 Subject: [PATCH 18/20] removed config parameter for MC truth --- RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py b/RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py index d7814778eb001..f9088d0a2c1cc 100644 --- a/RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py +++ b/RecoLocalMuon/GEMRecHit/python/me0RecHits_cfi.py @@ -1,9 +1,7 @@ import FWCore.ParameterSet.Config as cms me0RecHits = cms.EDProducer("ME0RecHitProducer", - recAlgoConfig = cms.PSet( - recOnlyMuons = cms.bool(False), - ), + recAlgoConfig = cms.PSet(), recAlgo = cms.string('ME0RecHitStandardAlgo'), me0DigiLabel = cms.InputTag("simMuonME0Digis"), ) From d69105bab24a21021726c98d2d64e73c1f8ef98f Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Tue, 1 Dec 2015 16:51:09 +0100 Subject: [PATCH 19/20] removed config parameter for MC truth --- RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc b/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc index 59ad4554faceb..36de41aeed9bd 100644 --- a/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc +++ b/RecoLocalMuon/GEMRecHit/src/ME0RecHitBaseAlgo.cc @@ -13,9 +13,7 @@ #include "DataFormats/GEMDigi/interface/ME0DigiPreRecoCollection.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" -ME0RecHitBaseAlgo::ME0RecHitBaseAlgo(const edm::ParameterSet& config) { - recOnlyMuons = config.getParameter("recOnlyMuons"); -} +ME0RecHitBaseAlgo::ME0RecHitBaseAlgo(const edm::ParameterSet& config) {} ME0RecHitBaseAlgo::~ME0RecHitBaseAlgo(){} From 19120549fd147a0c6595590ea91e7a61eba69b52 Mon Sep 17 00:00:00 2001 From: piet verwilligen Date: Wed, 2 Dec 2015 00:23:53 +0100 Subject: [PATCH 20/20] removed unused data member --- RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h b/RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h index 09fb43e5f7cc7..6aebad9f2eab9 100644 --- a/RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h +++ b/RecoLocalMuon/GEMRecHit/interface/ME0RecHitBaseAlgo.h @@ -47,8 +47,6 @@ class ME0RecHitBaseAlgo { virtual bool compute(const ME0DigiPreReco& digi, LocalPoint& Point, LocalError& error) const = 0; - - bool recOnlyMuons; }; #endif