From aff3b6db59a1c37e403be515c5965cd55f29d065 Mon Sep 17 00:00:00 2001 From: Valerio Bertacchi Date: Mon, 17 Feb 2020 14:49:46 +0100 Subject: [PATCH 1/2] perfect seed noTrackingParticles, bugFix --- .../python/JetCoreRegionalStep_cff.py | 6 +- .../plugins/JetCorePerfectSeedGenerator.cc | 428 +++++++++++------- .../plugins/JetCorePerfectSeedGenerator.h | 26 +- .../python/jetCorePerfectSeedGenerator_cfi.py | 5 +- .../RecoTrack/python/TrackValidation_cff.py | 2 +- 5 files changed, 291 insertions(+), 176 deletions(-) diff --git a/RecoTracker/IterativeTracking/python/JetCoreRegionalStep_cff.py b/RecoTracker/IterativeTracking/python/JetCoreRegionalStep_cff.py index fa05c476d39cd..968c90359d283 100644 --- a/RecoTracker/IterativeTracking/python/JetCoreRegionalStep_cff.py +++ b/RecoTracker/IterativeTracking/python/JetCoreRegionalStep_cff.py @@ -167,8 +167,10 @@ ) -import RecoTracker.TkSeedGenerator.jetCoreDirectSeedGenerator_cfi -jetCoreSeeds = RecoTracker.TkSeedGenerator.jetCoreDirectSeedGenerator_cfi.jetCoreDirectSeedGenerator.clone( +import RecoTracker.TkSeedGenerator.jetCorePerfectSeedGenerator_cfi +# import RecoTracker.TkSeedGenerator.jetCoreDirectSeedGenerator_cfi +jetCoreSeeds = RecoTracker.TkSeedGenerator.jetCorePerfectSeedGenerator_cfi.JetCorePerfectSeedGenerator.clone( +# jetCoreSeeds = RecoTracker.TkSeedGenerator.jetCoreDirectSeedGenerator_cfi.jetCoreDirectSeedGenerator.clone( vertices="firstStepPrimaryVertices" ) diff --git a/RecoTracker/TkSeedGenerator/plugins/JetCorePerfectSeedGenerator.cc b/RecoTracker/TkSeedGenerator/plugins/JetCorePerfectSeedGenerator.cc index 10b11b52c3fa6..969436e4adda5 100644 --- a/RecoTracker/TkSeedGenerator/plugins/JetCorePerfectSeedGenerator.cc +++ b/RecoTracker/TkSeedGenerator/plugins/JetCorePerfectSeedGenerator.cc @@ -4,9 +4,7 @@ // Class: JetCorePerfectSeedGenerator // /**\class JetCorePerfectSeedGenerator JetCorePerfectSeedGenerator.cc trackJet/JetCorePerfectSeedGenerator/plugins/JetCorePerfectSeedGenerator.cc - Description: [one line class summary] - Implementation: [Notes on implementation] */ @@ -83,15 +81,14 @@ #include "CommonTools/UtilAlgos/interface/TFileService.h" // #include "SimG4Core/Application/interface/G4SimTrack.h" -// #include "SimDataFormats/Track/interface/SimTrack.h" -// #include "SimDataFormats/Vertex/interface/SimVertex.h" -#include "SimDataFormats/TrackingAnalysis/interface/TrackingParticle.h" +#include "SimDataFormats/Track/interface/SimTrack.h" +#include "SimDataFormats/Vertex/interface/SimVertex.h" #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h" #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -// #include "SimDataFormats/TrackingHit/interface/PSimHit.h" +#include "SimDataFormats/TrackingHit/interface/PSimHit.h" #include "TTree.h" @@ -114,10 +111,9 @@ JetCorePerfectSeedGenerator::JetCorePerfectSeedGenerator(const edm::ParameterSet vertices_(consumes(iConfig.getParameter("vertices"))), pixelClusters_(consumes >(iConfig.getParameter("pixelClusters"))), cores_(consumes >(iConfig.getParameter("cores"))), - // simtracksToken(consumes >(iConfig.getParameter("simTracks"))), - // simvertexToken(consumes >(iConfig.getParameter("simVertex"))), - trackingParticleToken(consumes >(iConfig.getParameter("trackingParticle"))), - // PSimHitToken(consumes >(iConfig.getParameter("simHit"))), + simtracksToken(consumes >(iConfig.getParameter("simTracks"))), + simvertexToken(consumes >(iConfig.getParameter("simVertex"))), + PSimHitToken(consumes >(iConfig.getParameter("simHit"))), ptMin_(iConfig.getParameter("ptMin")), deltaR_(iConfig.getParameter("deltaR")), chargeFracMin_(iConfig.getParameter("chargeFractionMin")), @@ -129,6 +125,23 @@ JetCorePerfectSeedGenerator::JetCorePerfectSeedGenerator(const edm::ParameterSet produces(); + + // edm::Service fileService; + // JetCorePerfectSeedGeneratorTree= fileService->make("JetCorePerfectSeedGeneratorTree","JetCorePerfectSeedGeneratorTree"); + // JetCorePerfectSeedGeneratorTree->Branch("cluster_measured",clusterMeas,"cluster_measured[30][30][4]/D"); + // JetCorePerfectSeedGeneratorTree->Branch("jet_eta",&jet_eta); + // JetCorePerfectSeedGeneratorTree->Branch("jet_pt",&jet_pt); + + // for(int i=0; i(); auto resultTracks = std::make_unique(); - evt_counter++; + // evt_counter++; +// std::cout << "event number (iterative)=" << evt_counter<< ", event number (id)="<< iEvent.id().event() << std::endl; using namespace edm; @@ -162,15 +178,12 @@ void JetCorePerfectSeedGenerator::produce(edm::Event& iEvent, const edm::EventSe allSiPixelClusters.clear(); siPixelDetsWithClusters.clear(); allSiPixelClusters.reserve(inputPixelClusters->dataSize()); // this is important, otherwise push_back invalidates the iterators - // edm::Handle > simtracks; - // iEvent.getByToken(simtracksToken, simtracks); - // edm::Handle > simvertex; - // iEvent.getByToken(simvertexToken, simvertex); - - // iEvent.getByToken(PSimHitToken, simhits); + edm::Handle > simtracks; + iEvent.getByToken(simtracksToken, simtracks); + edm::Handle > simvertex; + iEvent.getByToken(simvertexToken, simvertex); - edm::Handle > trackingparticle; -iEvent.getByToken(trackingParticleToken, trackingparticle); + iEvent.getByToken(PSimHitToken, simhits); Handle > vertices; iEvent.getByToken(vertices_, vertices); @@ -178,6 +191,7 @@ iEvent.getByToken(trackingParticleToken, trackingparticle); Handle > cores; iEvent.getByToken(cores_, cores); + // iEvent.getByToken(pixeldigisimlinkToken, pixeldigisimlink); //--------------------------debuging lines ---------------------// edm::ESHandle pe; @@ -194,6 +208,9 @@ iEvent.getByToken(trackingParticleToken, trackingparticle); print = false; int jet_number = 0; +int seed_number = 0; + + for (unsigned int ji = 0; ji < cores->size(); ji++) { //loop jet jet_number++; @@ -205,20 +222,24 @@ int jet_number = 0; const reco::Vertex& jetVertex = (*vertices)[0]; std::vector splitClustDirSet = splittedClusterDirections(jet, tTopo, pp, jetVertex, 1); + //std::vector splitClustDirSet = splittedClusterDirections(jet, tTopo, pp, jetVertex); + // bool l2off=(splitClustDirSet.size()==0); if(splitClustDirSet.size()==0) {//if layer 1 is broken find direcitons on layer 2 splitClustDirSet = splittedClusterDirections(jet, tTopo, pp, jetVertex, 2); - std::cout << "split on lay2, in numero=" << splitClustDirSet.size() << "+jetDir" << std::endl; + // std::cout << "split on lay2, in numero=" << splitClustDirSet.size() << "+jetDir" << std::endl; } if(inclusiveConeSeed) splitClustDirSet.clear(); splitClustDirSet.push_back(GlobalVector(jet.px(),jet.py(),jet.pz())); + // std::cout << "splitted cluster number=" << splitClustDirSet.size() << std::endl;; + for(int cc=0; cc<(int)splitClustDirSet.size(); cc++){ GlobalVector bigClustDir = splitClustDirSet.at(cc); - // const auto & simtracksVector = simtracks.product(); - // const auto & simvertexVector = simvertex.product(); - const auto & trackingparticleVector = trackingparticle.product(); + const auto & simtracksVector = simtracks.product(); + const auto & simvertexVector = simvertex.product(); + LocalPoint jetInter(0,0,0); jet_eta = jet.eta(); @@ -228,39 +249,87 @@ int jet_number = 0; std::vector goodSimHit; + // edmNew::DetSetVector::const_iterator detIt = inputPixelClusters->begin(); const GeomDet* globDet = DetectorSelector(2, jet, bigClustDir, jetVertex, tTopo); //select detector mostly hitten by the jet if(globDet == 0) continue; - // std::pair,std::vector> goodSimTkVx; - std::vector goodTkP = JetCorePerfectSeedGenerator::coreTracksFillingDeltaR(trackingparticleVector,globDet,jet);; + // const GeomDet* goodDet1 = DetectorSelector(1, jet, bigClustDir, jetVertex, tTopo); + // const GeomDet* goodDet3 = DetectorSelector(3, jet, bigClustDir, jetVertex, tTopo); + // const GeomDet* goodDet4 = DetectorSelector(4, jet, bigClustDir, jetVertex, tTopo); + + - // if(inclusiveConeSeed) { - // // goodSimTkVx = JetCorePerfectSeedGenerator::coreTracksFillingDeltaR(simtracksVector, simvertexVector,globDet,jet); + // for (; detIt != inputPixelClusters->end(); detIt++) { //loop deset //COMMENTATO DA QUIIIII + // const edmNew::DetSet& detset = *detIt; + // const GeomDet* det = geometry_->idToDet(detset.id()); //lui sa il layer con cast a PXBDetId (vedi dentro il layer function) // - // } - // else { //notimplemented feature without sim track - // // std::vector goodSimHit = JetCorePerfectSeedGenerator::coreHitsFilling(simhits,globDet,bigClustDir,jetVertex); - // // goodSimTkVx = JetCorePerfectSeedGenerator::coreTracksFilling(goodSimHit,simtracksVector, simvertexVector); - // } + // for (auto cluster = detset.begin(); cluster != detset.end(); cluster++) { //loop cluster + // + // const SiPixelCluster& aCluster = *cluster; + // det_id_type aClusterID= detset.id(); + // if(DetId(aClusterID).subdetId()!=1) continue; + // + // int lay = tTopo->layer(det->geographicalId()); + // + // std::pair> interPair = findIntersection(bigClustDir,(reco::Candidate::Point)jetVertex.position(), det); + // if(interPair.first==false) continue; + // Basic3DVector inter = interPair.second; + // auto localInter = det->specificSurface().toLocal((GlobalPoint)inter); + // + // GlobalPoint pointVertex(jetVertex.position().x(), jetVertex.position().y(), jetVertex.position().z()); + // + // + // // GlobalPoint cPos = det->surface().toGlobal(pp->localParametersV(aCluster,(*geometry_->idToDetUnit(detIt->id())))[0].first); + // LocalPoint cPos_local = pp->localParametersV(aCluster,(*geometry_->idToDetUnit(detIt->id())))[0].first; + // + // if(std::abs(cPos_local.x()-localInter.x())/pitchX<=jetDimX/2 && std::abs(cPos_local.y()-localInter.y())/pitchY<=jetDimY/2){ // per ora preso baricentro, da migliorare + // + // if(det==goodDet1 || det==goodDet3 || det==goodDet4 || det==globDet) { + // // fillPixelMatrix(aCluster,lay,localInter, det, input_matrix_cluster); + // fillPixelMatrix(aCluster,lay,localInter, det, input_tensors); + // } + // } //cluster in ROI + // } //cluster + // } //detset + std::pair,std::vector> goodSimTkVx; + + if(inclusiveConeSeed) { + auto jetVert = jetVertex; + goodSimTkVx = JetCorePerfectSeedGenerator::coreTracksFillingDeltaR(simtracksVector, simvertexVector,globDet,jet,jetVert ); + } + else { + std::vector goodSimHit = JetCorePerfectSeedGenerator::coreHitsFilling(simhits,globDet,bigClustDir,jetVertex); + goodSimTkVx = JetCorePerfectSeedGenerator::coreTracksFilling(goodSimHit,simtracksVector, simvertexVector); + } + seed_number = goodSimTkVx.first.size(); + std::cout << "seed number in deltaR cone =" << seed_number << std::endl; + + std::vector> seedVector = JetCorePerfectSeedGenerator::seedParFilling(goodSimTkVx,globDet, jet); + std::cout << "seedVector.size()=" << seedVector.size()<< std::endl; - // std::vector> seedVector = JetCorePerfectSeedGenerator::seedParFilling(goodSimTkVx,globDet); - std::vector> seedVector = JetCorePerfectSeedGenerator::seedParFilling(goodTkP,globDet); for(uint tk=0; tksurface().toGlobal(localSeedPoint); reco::Track::CovarianceMatrix mm; resultTracks->push_back(reco::Track(1,1,reco::Track::Point(globalSeedPoint.x(),globalSeedPoint.y(),globalSeedPoint.z()),reco::Track::Vector(globSeedDir.x(),globSeedDir.y(),globSeedDir.z()),1,mm)); + std::cout << "seed " << tk<< ", out, pt=" << pt << ", eta="<< globSeedDir.eta() << ", phi=" << globSeedDir.phi() < pixInter = local2Pixel(inter.x(),inter.y(),det); + int nx = pix.x-pixInter.first; + int ny = pix.y-pixInter.second; + nx=flip*nx; + + if(abs(nx)=0 && nx>=0 && ny>=0) { + // clusterMeas[nx][ny][layer-1] += (pix.adc)/(float)(14000);//std::cout << "clusterMeas[nx][ny][layer-1] += (pix.adc)/(float)(14000) =" << (pix.adc)/(float)(14000) << std::endl;; + // } + } + } + +} + + const GeomDet* JetCorePerfectSeedGenerator::DetectorSelector(int llay, const reco::Candidate& jet, GlobalVector jetDir, const reco::Vertex& jetVertex, const TrackerTopology* const tTopo){ @@ -426,12 +531,11 @@ std::vector JetCorePerfectSeedGenerator::splittedClusterDirections float expCharge = std::sqrt(1.08f + jetZOverRho * jetZOverRho) * centralMIPCharge_; // std::cout <<"jDir="<< jetDir << ", cDir=" <,std::vector> JetCorePerfectSeedGenerator::coreTracksFilling(std::vector goodSimHit, const auto & simtracksVector, const auto & simvertexVector){ -// std::vector goodSimTrk; -// std::vector goodSimVtx; -// -// for(uint j=0; jsize(); j++){ -// for(std::vector::const_iterator it=goodSimHit.begin(); it!=goodSimHit.end(); ++it) { -// SimTrack st = simtracksVector->at(j); -// if(st.trackId()==(*it).trackId()) { -// goodSimTrk.push_back(st); -// for(uint v =0; vsize(); v++) { -// SimVertex sv = simvertexVector->at(v); -// if((int)sv.vertexId()==(int)st.vertIndex()){ -// // if(st.vertIndex()==-1) goodSimVtx.push_back((SimVertex)jVert); -// //else -// goodSimVtx.push_back(sv); -// } -// } -// } -// } -// } -// std::pair,std::vector> output(goodSimTrk,goodSimVtx); -// return output; -// } - -// std::pair,std::vector> JetCorePerfectSeedGenerator::coreTracksFillingDeltaR( const auto & simtracksVector, const auto & simvertexVector,const GeomDet* globDet, const reco::Candidate& jet){ -// std::vector goodSimTrk; -// std::vector goodSimVtx; -// -// GlobalVector jetDir(jet.px(), jet.py(), jet.pz()); -// for(uint j=0; jsize(); j++){ -// SimTrack st = simtracksVector.at(j); -// GlobalVector trkDir(st.momentum().Px(), st.momentum().Py(), st.momentum().Pz()); -// if(Geom::deltaR(jetDir, trkDir) < deltaR_){ -// goodSimTrk.push_back(st); -// for(uint v =0; vsize(); v++) { -// SimVertex sv = simvertexVector->at(v); -// if((int)sv.vertexId()==(int)st.vertIndex()){ -// // if(st.vertIndex()==-1) goodSimVtx.push_back((SimVertex)jVert); -// //else -// goodSimVtx.push_back(sv); -// } -// } -// -// } -// } -// std::pair,std::vector> output(goodSimTrk,goodSimVtx); -// return output; -// } +std::vector JetCorePerfectSeedGenerator::coreHitsFilling(auto simhits,const GeomDet* globDet,GlobalVector bigClustDir,const reco::Vertex& jetVertex){ + std::vector goodSimHit; + std::vector::const_iterator shIt = simhits->begin(); +// std::set simhitsDetSet; + for (; shIt != simhits->end(); shIt++) { //loop deset + // const edmNew::DetSet& detset = *shIt; + const GeomDet* det = geometry_->idToDet((*shIt).detUnitId()); + // if(det!=goodDet1 && det!=goodDet3 && det!=goodDet4 && det!=globDet) continue; + if(det!=globDet) continue; + std::pair> interPair = findIntersection(bigClustDir,(reco::Candidate::Point)jetVertex.position(), det); + if(interPair.first==false) continue; + Basic3DVector inter = interPair.second; + auto localInter = det->specificSurface().toLocal((GlobalPoint)inter); + // if(jetInter.x()==0 && jetInter.y()==0 && jetInter.z()==0) jetInter = localInter; //filling infoTracks + + // int flip = pixelFlipper(det); + if(std::abs(((*shIt).localPosition()).x()-localInter.x())/pitchX<=jetDimX/2 && std::abs(((*shIt).localPosition()).y()-localInter.y())/pitchY<=jetDimY/2){ + // std::cout << "good sim hit" << (*shIt).trackId()<< std::endl; + goodSimHit.push_back((*shIt)); + } + } + return goodSimHit; +} -std::vector JetCorePerfectSeedGenerator::coreTracksFillingDeltaR( const auto & trackingparticleVector,const GeomDet* globDet, const reco::Candidate& jet){ - std::vector goodTkP; +std::pair,std::vector> JetCorePerfectSeedGenerator::coreTracksFilling(std::vector goodSimHit, const auto & simtracksVector, const auto & simvertexVector){ + std::vector goodSimTrk; + std::vector goodSimVtx; - GlobalVector jetDir(jet.px(), jet.py(), jet.pz()); - for(uint j=0; jsize(); j++){ - TrackingParticle st = trackingparticleVector->at(j); - GlobalVector trkDir(st.px(), st.py(), st.pz()); - if(Geom::deltaR(jetDir, trkDir) < deltaR_){ - goodTkP.push_back(st); + + + for(uint j=0; jsize(); j++){ + for(std::vector::const_iterator it=goodSimHit.begin(); it!=goodSimHit.end(); ++it) { + SimTrack st = simtracksVector->at(j); + if(st.trackId()==(*it).trackId()) { + // goodSimTrk.push_back(st); + + for(uint v =0; vsize(); v++) { + SimVertex sv = simvertexVector->at(v); + if((int)sv.vertexId()==(int)st.vertIndex()){ + // if(st.vertIndex()==-1) goodSimVtx.push_back((SimVertex)jVert); + //else + goodSimTrk.push_back(st); + goodSimVtx.push_back(sv); + } + } + } } } - return goodTkP; + std::pair,std::vector> output(goodSimTrk,goodSimVtx); + return output; } +std::pair,std::vector> JetCorePerfectSeedGenerator::coreTracksFillingDeltaR( const auto & simtracksVector, const auto & simvertexVector,const GeomDet* globDet, const reco::Candidate& jet, auto jetVertex){ + std::vector goodSimTrk; + std::vector goodSimVtx; -// std::vector> JetCorePerfectSeedGenerator::seedParFilling(std::pair,std::vector> goodSimTkVx,const GeomDet* globDet){ -// std::vector> output; -// std::vector goodSimTrk=goodSimTkVx.first; -// std::vector goodSimVtx=goodSimTkVx.second; -// -// for(uint j=0; j> trkInterPair; -// trkInterPair = findIntersection(trkMom,(reco::Candidate::Point)trkPos, globDet); -// if(trkInterPair.first==false) continue; -// Basic3DVector trkInter = trkInterPair.second; -// auto localTrkInter = globDet->specificSurface().toLocal((GlobalPoint)trkInter); -// -// // // for(uint v =0; vsize(); v++) { -// // // SimVertex sv = simvertexVector->at(v); -// // // if((int)sv.vertexId()==(int)st.vertIndex()){ -// // // -// // // } -// // // } -// -// std::array tkPar {{localTrkInter.x(), localTrkInter.y(), st.momentum().Eta(), st.momentum().Phi(), 1/st.momentum().Pt()}}; -// output.push_back(tkPar); -// } -// return output; -// } + GlobalVector jetDir(jet.px(), jet.py(), jet.pz()); -std::vector> JetCorePerfectSeedGenerator::seedParFilling(std::vector goodTkP,const GeomDet* globDet){ - std::vector> output; + for(uint j=0; jsize(); j++){ + SimTrack st = simtracksVector->at(j); + GlobalVector trkDir(st.momentum().Px(), st.momentum().Py(), st.momentum().Pz()); + if(Geom::deltaR(jetDir, trkDir) < deltaR_){ + if(st.charge()==0) continue; + // if((int)st.vertIndex()==-1) { + // goodSimTrk.push_back(st); + // // goodSimVtx.push_back((SimVertex)jetVertex); + // std::cout << "problema" << std::endl; + // } + // else { + for(uint v =0; vsize(); v++) { + SimVertex sv = simvertexVector->at(v); + if((int)sv.vertexId()==(int)st.vertIndex()){ + // if(st.vertIndex()==-1) goodSimVtx.push_back((SimVertex)jVert); + //else + // std::cout << "goodsimtrack " << j<< ", filling good st, pt" << st.momentum().Pt() << ", eta="<< st.momentum().Eta() << ", phi=" << st.momentum().Phi() << std::endl; + goodSimTrk.push_back(st); + goodSimVtx.push_back(sv); + } + } + // } + + } + // else std::cout << "BAD sim track " << j<< ", pt" << st.momentum().Pt() << ", eta="<< st.momentum().Eta() << ", phi=" << st.momentum().Phi() << std::endl; + } + std::pair,std::vector> output(goodSimTrk,goodSimVtx); + return output; +} - for(uint j=0; j> JetCorePerfectSeedGenerator::seedParFilling(std::pair,std::vector> goodSimTkVx,const GeomDet* globDet, const reco::Candidate& jet){ + std::vector> output; + std::vector goodSimTrk=goodSimTkVx.first; + std::vector goodSimVtx=goodSimTkVx.second; + + std::cout << "goodSimTrk.size()" << goodSimTrk.size() << std::endl; + for(uint j=0; j> trkInterPair; + // std::cout << "sv " << (int)sv.vertexId() << "/// st " << (int)st.vertIndex()<< std::endl; trkInterPair = findIntersection(trkMom,(reco::Candidate::Point)trkPos, globDet); - if(trkInterPair.first==false) continue; + if(trkInterPair.first==false) { + GlobalVector jetDir(jet.px(), jet.py(), jet.pz()); + double deltar = Geom::deltaR(jetDir, trkMom); + // std::cout << "not intersection, deltaR=" << deltar << std::endl; + + continue; + } Basic3DVector trkInter = trkInterPair.second; + auto localTrkInter = globDet->specificSurface().toLocal((GlobalPoint)trkInter); + // std::cout << ", localtrackInter" << localTrkInter.x() << ", " << localTrkInter.y() << std::endl; + + + // double tkpar[Npar]; // // for(uint v =0; vsize(); v++) { // // SimVertex sv = simvertexVector->at(v); // // if((int)sv.vertexId()==(int)st.vertIndex()){ // // // // } // // } + // + // tkpar[0] = localTrkInter.x(); + // tkpar[1] = localTrkInter.y(); + // tkpar[2] = st.momentum().Eta(); + // tkpar[3] = st.momentum().Phi(); + // tkpar[4] = 1/st.momentum().Pt(); + + // std::cout << "IN, pt=" < > inputPixelClusters; edm::EDGetTokenT< edm::DetSetVector > pixeldigisimlinkToken; edm::EDGetTokenT > cores_; - // edm::EDGetTokenT > simtracksToken; - // edm::EDGetTokenT > simvertexToken; - // edm::EDGetTokenT > PSimHitToken; - edm::EDGetTokenT > trackingParticleToken; - // edm::Handle > simhits; + edm::EDGetTokenT > simtracksToken; + edm::EDGetTokenT > simvertexToken; + edm::EDGetTokenT > PSimHitToken; + edm::Handle > simhits; double ptMin_; double deltaR_; @@ -181,14 +179,12 @@ class JetCorePerfectSeedGenerator : public edm::one::EDProducer splittedClusterDirections(const reco::Candidate&, const TrackerTopology* const, auto pp, const reco::Vertex& jetVertex, int ); - // std::vector coreHitsFilling(auto,const GeomDet*,GlobalVector,const reco::Vertex&); - // std::pair,std::vector> coreTracksFilling(std::vector, const auto &, const auto &); + std::vector coreHitsFilling(auto,const GeomDet*,GlobalVector,const reco::Vertex&); + std::pair,std::vector> coreTracksFilling(std::vector, const auto &, const auto &); - // std::vector> seedParFilling(std::pair,std::vector>,const GeomDet*); - std::vector> seedParFilling(std::vector,const GeomDet*); + std::vector> seedParFilling(std::pair,std::vector>,const GeomDet*, const reco::Candidate&); - // std::pair,std::vector> coreTracksFillingDeltaR( const auto &, const auto &,const GeomDet* , const reco::Candidate& ); - std::vector coreTracksFillingDeltaR( const auto &,const GeomDet* , const reco::Candidate& ); + std::pair,std::vector> coreTracksFillingDeltaR( const auto &, const auto &,const GeomDet* , const reco::Candidate&,auto ); }; diff --git a/RecoTracker/TkSeedGenerator/python/jetCorePerfectSeedGenerator_cfi.py b/RecoTracker/TkSeedGenerator/python/jetCorePerfectSeedGenerator_cfi.py index c7d7462f3c96e..4ade6668c734b 100644 --- a/RecoTracker/TkSeedGenerator/python/jetCorePerfectSeedGenerator_cfi.py +++ b/RecoTracker/TkSeedGenerator/python/jetCorePerfectSeedGenerator_cfi.py @@ -5,8 +5,11 @@ pixelClusters= cms.InputTag("siPixelClustersPreSplitting"), cores= cms.InputTag("jetsForCoreTracking"), ptMin= cms.double(300), - deltaR= cms.double(0.1), + deltaR= cms.double(0.3), chargeFractionMin= cms.double(18000.0), + simTracks= cms.InputTag("g4SimHits"), + simVertex= cms.InputTag("g4SimHits"), + simHit= cms.InputTag("g4SimHits","TrackerHitsPixelBarrelLowTof"), centralMIPCharge= cms.double(2), pixelCPE= cms.string( "PixelCPEGeneric" ) ) diff --git a/Validation/RecoTrack/python/TrackValidation_cff.py b/Validation/RecoTrack/python/TrackValidation_cff.py index 9026335f03a3b..ba648a102ff8e 100644 --- a/Validation/RecoTrack/python/TrackValidation_cff.py +++ b/Validation/RecoTrack/python/TrackValidation_cff.py @@ -351,7 +351,7 @@ def _getMVASelectors(postfix): ) # Select jets for JetCore tracking -highPtJets = cms.EDFilter("CandPtrSelector", src = cms.InputTag("ak4CaloJets"), cut = cms.string("pt()>1000 && eta()<1.4 && eta()>-1.4")) +highPtJets = cms.EDFilter("CandPtrSelector", src = cms.InputTag("ak4CaloJets"), cut = cms.string("pt()>1000")) highPtJetsForTrk = highPtJetsForTrk = highPtJets.clone(src = "ak4CaloJetsForTrk") # Select B-hadron TPs From d1b10672b8869c1d0124f7d1bb496e26ae7c0f4a Mon Sep 17 00:00:00 2001 From: Valerio Bertacchi Date: Tue, 3 Mar 2020 19:09:28 +0100 Subject: [PATCH 2/2] eta range 1.4 set --- Validation/RecoTrack/python/TrackValidation_cff.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Validation/RecoTrack/python/TrackValidation_cff.py b/Validation/RecoTrack/python/TrackValidation_cff.py index ba648a102ff8e..78d039baa8c77 100644 --- a/Validation/RecoTrack/python/TrackValidation_cff.py +++ b/Validation/RecoTrack/python/TrackValidation_cff.py @@ -351,7 +351,8 @@ def _getMVASelectors(postfix): ) # Select jets for JetCore tracking -highPtJets = cms.EDFilter("CandPtrSelector", src = cms.InputTag("ak4CaloJets"), cut = cms.string("pt()>1000")) +# highPtJets = cms.EDFilter("CandPtrSelector", src = cms.InputTag("ak4CaloJets"), cut = cms.string("pt()>1000")) #perfectSeeding used in Connecting the Dots +highPtJets = cms.EDFilter("CandPtrSelector", src = cms.InputTag("ak4CaloJets"), cut = cms.string("pt()>1000 && eta()<1.4 && eta()>-1.4")) highPtJetsForTrk = highPtJetsForTrk = highPtJets.clone(src = "ak4CaloJetsForTrk") # Select B-hadron TPs