Skip to content

Commit

Permalink
Merge pull request #32342 from guitargeek/PFSimProducer_1
Browse files Browse the repository at this point in the history
Implement fillDescriptions() for producers in RecoParticleFlow/PFSimProducer
  • Loading branch information
cmsbuild authored Dec 4, 2020
2 parents 1d6a7bf + b1e869b commit d85160d
Show file tree
Hide file tree
Showing 19 changed files with 397 additions and 570 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
particleFlowLinks = cms.Sequence(particleFlowLinksTask)

from RecoParticleFlow.PFTracking.hgcalTrackCollection_cfi import *
from RecoParticleFlow.PFProducer.simPFProducer_cfi import *
from RecoParticleFlow.PFProducer.simPFProducer_cff import *
from SimTracker.TrackerHitAssociation.tpClusterProducer_cfi import *
from SimTracker.TrackAssociatorProducers.quickTrackAssociatorByHits_cfi import *
particleFlowTmpBarrel = particleFlowTmp.clone()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,8 @@
# are not stored in the event!
from RecoTracker.TrackProducer.CTFFinalFitWithMaterial_cff import *
from SimGeneral.HepPDTESSource.pythiapdt_cfi import *
from RecoParticleFlow.PFProducer.particleFlowSimParticle_cfi import *
from RecoParticleFlow.PFSimProducer.particleFlowSimParticle_cfi import *

from FastSimulation.Event.ParticleFilter_cfi import ParticleFilterBlock

particleFlowSimParticle.ParticleFilter = ParticleFilterBlock.ParticleFilter.clone(chargedPtMin = 0, EMin = 0)
33 changes: 0 additions & 33 deletions RecoParticleFlow/PFProducer/python/particleFlowSimParticle_cfi.py

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,20 +1,4 @@
import FWCore.ParameterSet.Config as cms

simPFProducer = cms.EDProducer(
'SimPFProducer',
superClusterThreshold = cms.double(4.0),
neutralEMThreshold = cms.double(0.250),
neutralHADThreshold = cms.double(0.250),
pfRecTrackSrc = cms.InputTag("hgcalTrackCollection:TracksInHGCal"),
trackSrc = cms.InputTag('generalTracks'),
gsfTrackSrc = cms.InputTag('electronGsfTracks'),
muonSrc = cms.InputTag("muons1stStep"),
trackingParticleSrc = cms.InputTag('mix:MergedTrackTruth'),
simClusterTruthSrc = cms.InputTag('mix:MergedCaloTruth'),
caloParticlesSrc = cms.InputTag('mix:MergedCaloTruth'),
simClustersSrc = cms.InputTag('particleFlowClusterHGCal'),
associators = cms.VInputTag(cms.InputTag('quickTrackAssociatorByHits') )
)
from RecoParticleFlow.PFSimProducer.simPFProducer_cfi import *

from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing
phase2_timing.toModify(
Expand Down
17 changes: 0 additions & 17 deletions RecoParticleFlow/PFProducer/python/tauHadronDecayFilter_cfi.py

This file was deleted.

18 changes: 1 addition & 17 deletions RecoParticleFlow/PFSimProducer/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<library name="RecoParticleFlowPFProducerSimPlugins" file="SimPFProducer.cc,TauHadronDecayFilter.cc,PFSimParticleProducer.cc,EcalBarrelClusterFastTimer.cc,,SealModuleSim.cc">
<library name="RecoParticleFlowPFProducerSimPlugins" file="*.cc">
<use name="DataFormats/EcalDetId"/>
<use name="TrackingTools/MaterialEffects"/>
<use name="DataFormats/EcalRecHit"/>
Expand Down Expand Up @@ -26,34 +26,18 @@
<use name="TrackingTools/PatternTools"/>
<use name="TrackingTools/Records"/>
<use name="TrackingTools/TrajectoryState"/>
<flags EDM_PLUGIN="1"/>
</library>

<library name="RecoParticleFlowPFTrackingSimPlugins" file="ConvBremSeedProducer.cc, modulesSim.cc">
<use name="DataFormats/GeometrySurface"/>
<use name="DataFormats/GsfTrackReco"/>
<use name="DataFormats/ParticleFlowReco"/>
<use name="DataFormats/TrackingRecHit"/>
<use name="DataFormats/TrajectorySeed"/>
<use name="FWCore/Framework"/>
<use name="FWCore/MessageLogger"/>
<use name="FastSimulation/ParticlePropagator"/>
<use name="FastSimulation/TrackerSetup"/>
<use name="FastSimulation/TrajectoryManager"/>
<use name="Geometry/Records"/>
<use name="Geometry/TrackerGeometryBuilder"/>
<use name="MagneticField/Engine"/>
<use name="MagneticField/Records"/>
<use name="RecoParticleFlow/PFTracking"/>
<use name="RecoTracker/Record"/>
<use name="RecoTracker/TkDetLayers"/>
<use name="RecoTracker/TkSeedGenerator"/>
<use name="RecoTracker/TransientTrackingRecHit"/>
<use name="TrackingTools/DetLayers"/>
<use name="TrackingTools/GeomPropagators"/>
<use name="TrackingTools/KalmanUpdators"/>
<use name="TrackingTools/MaterialEffects"/>
<use name="TrackingTools/Records"/>
<use name="TrackingTools/TrajectoryState"/>
<flags EDM_PLUGIN="1"/>
</library>
162 changes: 109 additions & 53 deletions RecoParticleFlow/PFSimProducer/plugins/ConvBremSeedProducer.cc
Original file line number Diff line number Diff line change
@@ -1,50 +1,110 @@
#include "RecoParticleFlow/PFSimProducer/plugins/ConvBremSeedProducer.h"
#include "FWCore/Framework/interface/ESHandle.h"

#include "TMath.h"

///RECORD NEEDED
#include "FastSimulation/TrackerSetup/interface/TrackerInteractionGeometryRecord.h"
#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
#include "RecoTracker/Record/interface/TrackerRecoGeometryRecord.h"
#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
#include "FastSimulation/ParticlePropagator/interface/MagneticFieldMapRecord.h"
#include "TrackingTools/Records/interface/TransientRecHitRecord.h"

///ESHANDLES
#include "FastSimulation/TrackerSetup/interface/TrackerInteractionGeometry.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "MagneticField/Engine/interface/MagneticField.h"
#include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h"

///COLLECTION
#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
#include "CommonTools/BaseParticlePropagator/interface/BaseParticlePropagator.h"
#include "DataFormats/GeometrySurface/interface/Surface.h"
#include "DataFormats/GeometrySurface/interface/TangentPlane.h"
#include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
#include "DataFormats/ParticleFlowReco/interface/ConvBremSeed.h"
#include "DataFormats/ParticleFlowReco/interface/ConvBremSeedFwd.h"
#include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrackFwd.h"
#include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrack.h"
#include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
#include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrackFwd.h"
#include "DataFormats/ParticleFlowReco/interface/PFBrem.h"
#include "DataFormats/ParticleFlowReco/interface/PFCluster.h"
#include "DataFormats/ParticleFlowReco/interface/PFClusterFwd.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHitCollection.h"
#include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2DCollection.h"
#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"

///PROPAGATION TOOLS
#include "TrackingTools/DetLayers/interface/DetLayer.h"
#include "TrackingTools/DetLayers/interface/BarrelDetLayer.h"
#include "TrackingTools/DetLayers/interface/ForwardDetLayer.h"
#include "DataFormats/GeometrySurface/interface/Surface.h"
#include "DataFormats/GeometrySurface/interface/TangentPlane.h"
#include "DataFormats/TrackingRecHit/interface/TrackingRecHitFwd.h"
#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h"
#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
#include "FWCore/Framework/interface/stream/EDProducer.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "FastSimulation/ParticlePropagator/interface/MagneticFieldMapRecord.h"
#include "FastSimulation/ParticlePropagator/interface/ParticlePropagator.h"
#include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h"
#include "FastSimulation/TrackerSetup/interface/TrackerInteractionGeometry.h"
#include "FastSimulation/TrackerSetup/interface/TrackerInteractionGeometryRecord.h"
#include "FastSimulation/TrajectoryManager/interface/InsideBoundsMeasurementEstimator.h"
#include "FastSimulation/TrajectoryManager/interface/LocalMagneticField.h"
#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "MagneticField/Engine/interface/MagneticField.h"
#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
#include "RecoTracker/Record/interface/TrackerRecoGeometryRecord.h"
#include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
#include "RecoTracker/TkSeedGenerator/interface/FastHelix.h"
#include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h"
#include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h"
#include "TrackingTools/DetLayers/interface/BarrelDetLayer.h"
#include "TrackingTools/DetLayers/interface/DetLayer.h"
#include "TrackingTools/DetLayers/interface/ForwardDetLayer.h"
#include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h"
#include "TrackingTools/KalmanUpdators/interface/KFUpdator.h"
#include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h"
#include "TrackingTools/Records/interface/TransientRecHitRecord.h"
#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h"

#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "TMath.h"

#include <memory>

class ConvBremSeedProducer : public edm::stream::EDProducer<> {
public:
explicit ConvBremSeedProducer(const edm::ParameterSet&);

static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

private:
void beginRun(const edm::Run&, const edm::EventSetup&) override;
void produce(edm::Event&, const edm::EventSetup&) override;
void endRun(const edm::Run&, const edm::EventSetup&) override;
void initializeLayerMap();
std::vector<const DetLayer*> theLayerMap;
TrajectoryStateOnSurface makeTrajectoryState(const DetLayer* layer,
const ParticlePropagator& pp,
const MagneticField* field) const;
const DetLayer* detLayer(const TrackerLayer& layer, float zpos) const;

bool isGsfTrack(const reco::Track&, const TrackingRecHit*);

int GoodCluster(const BaseParticlePropagator& bpg,
const reco::PFClusterCollection& pfc,
float minep,
bool sec = false);

std::vector<bool> sharedHits(const std::vector<std::pair<TrajectorySeed, std::pair<GlobalVector, float> > >&);

edm::ParameterSet conf_;
const GeometricSearchTracker* geomSearchTracker_;
const TrackerInteractionGeometry* geometry_;
const TrackerGeometry* tracker_;
const MagneticField* magfield_;
const MagneticFieldMap* fieldMap_;
const PropagatorWithMaterial* propagator_;
const KFUpdator* kfUpdator_;
const TransientTrackingRecHitBuilder* hitBuilder_;
std::vector<const DetLayer*> layerMap_;
int negLayerOffset_;
///B field
math::XYZVector B_;
};

#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(ConvBremSeedProducer);

void ConvBremSeedProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
// convBremSeeds
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("pixelRecHits", edm::InputTag("gsPixelRecHits"));
desc.add<edm::InputTag>("matchedrecHits", edm::InputTag("gsStripRecHits", "matchedRecHit"));
desc.add<std::string>("TTRHBuilder", "WithTrackAngle");
desc.add<edm::InputTag>("rphirecHits", edm::InputTag("gsStripRecHits", "rphiRecHit"));
desc.add<edm::InputTag>("PFClusters", edm::InputTag("particleFlowClusterECAL"));
desc.add<edm::InputTag>("PFRecTrackLabel", edm::InputTag("pfTrackElec"));
}

using namespace edm;
using namespace std;
Expand All @@ -55,12 +115,10 @@ ConvBremSeedProducer::ConvBremSeedProducer(const ParameterSet& iConfig)
produces<ConvBremSeedCollection>();
}

ConvBremSeedProducer::~ConvBremSeedProducer() {}

void ConvBremSeedProducer::produce(Event& iEvent, const EventSetup& iSetup) {
LogDebug("ConvBremSeedProducerProducer") << "START event: " << iEvent.id().event() << " in run " << iEvent.id().run();

float pfmass = 0.0005;
constexpr float pfmass = 0.0005;

///INPUT COLLECTIONS

Expand All @@ -76,8 +134,6 @@ void ConvBremSeedProducer::produce(Event& iEvent, const EventSetup& iSetup) {
///STRIP
Handle<SiStripRecHit2DCollection> rphirecHits;
iEvent.getByLabel(conf_.getParameter<InputTag>("rphirecHits"), rphirecHits);
Handle<SiStripRecHit2DCollection> stereorecHits;
iEvent.getByLabel(conf_.getParameter<InputTag>("stereorecHits"), stereorecHits);
Handle<SiStripMatchedRecHit2DCollection> matchedrecHits;
iEvent.getByLabel(conf_.getParameter<InputTag>("matchedrecHits"), matchedrecHits);

Expand Down Expand Up @@ -169,30 +225,30 @@ void ConvBremSeedProducer::produce(Event& iEvent, const EventSetup& iSetup) {
continue;
TrajectoryStateOnSurface trajState = makeTrajectoryState(tkLayer, PP, &mf);

std::vector<DetWithState> compat = tkLayer->compatibleDets(trajState, alongProp, est);
auto compat = tkLayer->compatibleDets(trajState, alongProp, est);
vector<long int> temp;
if (compat.empty())
continue;

for (std::vector<DetWithState>::const_iterator i = compat.begin(); i != compat.end(); i++) {
for (auto i = compat.begin(); i != compat.end(); i++) {
long int detid = i->first->geographicalId().rawId();

if (!GeomDetEnumerators::isTrackerPixel(tkLayer->subDetector())) {
StDetMatch DetMatch = (rphirecHits.product())->find((detid));
MatDetMatch MDetMatch = (matchedrecHits.product())->find((detid));
auto DetMatch = (rphirecHits.product())->find((detid));
auto MDetMatch = (matchedrecHits.product())->find((detid));

long int DetID = (DetMatch != rphirecHits->end()) ? detid : 0;

if ((MDetMatch != matchedrecHits->end()) && !MDetMatch->empty()) {
long int pii = MDetMatch->begin()->monoId();
StDetMatch CDetMatch = (rphirecHits.product())->find((pii));
auto CDetMatch = (rphirecHits.product())->find((pii));
DetID = (CDetMatch != rphirecHits->end()) ? pii : 0;
}

temp.push_back(DetID);

} else {
PiDetMatch DetMatch = (pixelHits.product())->find((detid));
auto DetMatch = (pixelHits.product())->find((detid));
long int DetID = (DetMatch != pixelHits->end()) ? detid : 0;
temp.push_back(DetID);
}
Expand Down Expand Up @@ -240,25 +296,25 @@ void ConvBremSeedProducer::produce(Event& iEvent, const EventSetup& iSetup) {
TransientTrackingRecHit::ConstRecHitContainer glob_hits;
OwnVector<TrackingRecHit> loc_hits;
for (unsigned int i = 0; i < tripl.size(); i++) {
StDetMatch DetMatch1 = (rphirecHits.product())->find(tripl[i][0]);
StDetMatch DetMatch2 = (rphirecHits.product())->find(tripl[i][1]);
StDetMatch DetMatch3 = (rphirecHits.product())->find(tripl[i][2]);
auto DetMatch1 = (rphirecHits.product())->find(tripl[i][0]);
auto DetMatch2 = (rphirecHits.product())->find(tripl[i][1]);
auto DetMatch3 = (rphirecHits.product())->find(tripl[i][2]);
if ((DetMatch1 == rphirecHits->end()) || (DetMatch2 == rphirecHits->end()) || (DetMatch3 == rphirecHits->end()))
continue;
StDetSet DetSet1 = *DetMatch1;
StDetSet DetSet2 = *DetMatch2;
StDetSet DetSet3 = *DetMatch3;
auto DetSet1 = *DetMatch1;
auto DetSet2 = *DetMatch2;
auto DetSet3 = *DetMatch3;

for (StDetSet::const_iterator it1 = DetSet1.begin(); it1 != DetSet1.end(); ++it1) {
for (auto it1 = DetSet1.begin(); it1 != DetSet1.end(); ++it1) {
GlobalPoint gp1 = tracker_->idToDet(tripl[i][0])->surface().toGlobal(it1->localPosition());

bool tak1 = isGsfTrack(gsfRecHits, &(*it1));

for (StDetSet::const_iterator it2 = DetSet2.begin(); it2 != DetSet2.end(); ++it2) {
for (auto it2 = DetSet2.begin(); it2 != DetSet2.end(); ++it2) {
GlobalPoint gp2 = tracker_->idToDet(tripl[i][1])->surface().toGlobal(it2->localPosition());
bool tak2 = isGsfTrack(gsfRecHits, &(*it2));

for (StDetSet::const_iterator it3 = DetSet3.begin(); it3 != DetSet3.end(); ++it3) {
for (auto it3 = DetSet3.begin(); it3 != DetSet3.end(); ++it3) {
// ips++;
GlobalPoint gp3 = tracker_->idToDet(tripl[i][2])->surface().toGlobal(it3->localPosition());
bool tak3 = isGsfTrack(gsfRecHits, &(*it3));
Expand Down
Loading

0 comments on commit d85160d

Please sign in to comment.