Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FastSim: fix trackref in ConversionTrackCollection #9202

Merged
merged 6 commits into from May 21, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion FastSimulation/Configuration/python/EventContent_cff.py
Expand Up @@ -110,7 +110,8 @@
#AOD content
FastSimRecoTrackerAOD = cms.PSet(
outputCommands = cms.untracked.vstring('keep recoTracks_iterativeGSWithMaterialTracks_*_*',
'keep *_generalTracksBeforeMixing_*_*')
#'keep *_generalTracksBeforeMixing_*_*'
)
)


Expand Down
Expand Up @@ -109,6 +109,14 @@
# so we feed it with the 'before mixing' track colletion
_reco.generalConversionTrackProducer.TrackProducer = 'generalTracksBeforeMixing'

# then we need to fix the track references, so that they point to the final track collection, after mixing
import FastSimulation.Tracking.ConversionTrackRefFix_cfi
_conversionTrackRefFix = FastSimulation.Tracking.ConversionTrackRefFix_cfi.fixedConversionTracks.clone(
src = cms.InputTag("generalConversionTrackProducerTmp"))
_reco.conversionTrackSequenceNoEcalSeeded.replace(_reco.generalConversionTrackProducer,_reco.generalConversionTrackProducer+_conversionTrackRefFix)
_reco.generalConversionTrackProducerTmp = _reco.generalConversionTrackProducer
_reco.generalConversionTrackProducer = _conversionTrackRefFix

# this might be historical: not sure why we do this
_reco.egammaGlobalReco.replace(_reco.conversionTrackSequence,_reco.conversionTrackSequenceNoEcalSeeded)
_reco.allConversions.src = 'gsfGeneralConversionTrackMerger'
Expand Down
1 change: 1 addition & 0 deletions FastSimulation/Tracking/BuildFile.xml
Expand Up @@ -4,6 +4,7 @@
<use name="DataFormats/TrackerCommon"/>
<use name="DataFormats/TrackingRecHit"/>
<use name="DataFormats/TrackerRecHit2D"/>
<use name="DataFormats/EgammaTrackReco"/>
<use name="Geometry/CommonDetUnit"/>
<use name="Geometry/TrackerGeometryBuilder"/>
<use name="Geometry/Records"/>
Expand Down
48 changes: 48 additions & 0 deletions FastSimulation/Tracking/plugins/ConversionTrackRefFix.cc
@@ -0,0 +1,48 @@
#include "FastSimulation/Tracking/plugins/ConversionTrackRefFix.h"

#include "DataFormats/TrackReco/interface/Track.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "DataFormats/EgammaTrackReco/interface/ConversionTrack.h"

using namespace std;
using namespace reco;
using namespace edm;

ConversionTrackRefFix::ConversionTrackRefFix(const edm::ParameterSet& iConfig)
{
InputTag conversionTracksTag = iConfig.getParameter<InputTag>("src");
InputTag newTracksTag = iConfig.getParameter<InputTag>("newTrackCollection");

produces<ConversionTrackCollection>();

conversionTracksToken = consumes<ConversionTrackCollection>(conversionTracksTag);
newTracksToken = consumes<TrackCollection>(newTracksTag);
}

ConversionTrackRefFix::~ConversionTrackRefFix(){}


void
ConversionTrackRefFix::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
{
Handle<ConversionTrackCollection> conversionTracks;
iEvent.getByToken(conversionTracksToken,conversionTracks);

Handle<TrackCollection> newTracks;
iEvent.getByToken(newTracksToken,newTracks);

auto_ptr<ConversionTrackCollection> output(new ConversionTrackCollection);

for(const ConversionTrack & conversion : *(conversionTracks.product())){
size_t trackIndex = conversion.trackRef().key();
output->push_back(ConversionTrack(TrackBaseRef(TrackRef(newTracks,trackIndex))));
output->back().setTrajRef(conversion.trajRef());
output->back().setIsTrackerOnly(conversion.isTrackerOnly());
output->back().setIsArbitratedEcalSeeded(conversion.isArbitratedEcalSeeded());
output->back().setIsArbitratedMerged(conversion.isArbitratedMerged());
output->back().setIsArbitratedMergedEcalGeneral(conversion.isArbitratedMergedEcalGeneral());
}

iEvent.put(output);

}
24 changes: 24 additions & 0 deletions FastSimulation/Tracking/plugins/ConversionTrackRefFix.h
@@ -0,0 +1,24 @@
#ifndef FastSimulation_Tracking_ConversionTrackRefFix_h
#define FastSimulation_Tracking_ConversionTrackRefFix_h

#include <memory>

#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/stream/EDProducer.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "DataFormats/EgammaTrackReco/interface/ConversionTrackFwd.h"

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

private:

virtual void produce(edm::Event&, const edm::EventSetup&) override;
edm::EDGetTokenT<reco::ConversionTrackCollection > conversionTracksToken;
edm::EDGetTokenT<reco::TrackCollection > newTracksToken;
};

#endif
12 changes: 0 additions & 12 deletions FastSimulation/Tracking/plugins/ElectronSeedTrackRefFix.cc
@@ -1,6 +1,5 @@
#include "FastSimulation/Tracking/plugins/ElectronSeedTrackRefFix.h"

#include "FWCore/Framework/interface/EDProducer.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
Expand Down Expand Up @@ -119,17 +118,6 @@ ElectronSeedTrackRefFix::produce(edm::Event& iEvent, const edm::EventSetup& iSet
iEvent.put(oIdMap,preidLabel);
}

// ------------ method called once each job just before starting event loop ------------
void
ElectronSeedTrackRefFix::beginJob()
{
}

// ------------ method called once each job just after ending the event loop ------------
void
ElectronSeedTrackRefFix::endJob() {
}

// ------------ method fills 'descriptions' with the allowed parameters for the module ------------
void
ElectronSeedTrackRefFix::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
Expand Down
6 changes: 2 additions & 4 deletions FastSimulation/Tracking/plugins/ElectronSeedTrackRefFix.h
Expand Up @@ -11,21 +11,19 @@
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "DataFormats/EgammaReco/interface/ElectronSeedFwd.h"

#include "FWCore/Framework/interface/EDProducer.h"
#include "FWCore/Framework/interface/stream/EDProducer.h"
#include "DataFormats/Common/interface/ValueMap.h"


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

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

private:
virtual void beginJob() override;
virtual void produce(edm::Event&, const edm::EventSetup&) override;
virtual void endJob() override;

// ----------member data ---------------------------
edm::EDGetTokenT<reco::TrackCollection > newTracksToken;
Expand Down
2 changes: 2 additions & 0 deletions FastSimulation/Tracking/plugins/SealModule.cc
Expand Up @@ -4,6 +4,7 @@
#include "FastSimulation/Tracking/plugins/PixelTracksProducer.h"
#include "FastSimulation/Tracking/plugins/SimTrackIdProducer.h"
#include "FastSimulation/Tracking/plugins/ElectronSeedTrackRefFix.h"
#include "FastSimulation/Tracking/plugins/ConversionTrackRefFix.h"
// reco::Track accumulator:
#include "SimGeneral/MixingModule/interface/DigiAccumulatorMixModFactory.h"
#include "FastSimulation/Tracking/plugins/RecoTrackAccumulator.h"
Expand All @@ -14,4 +15,5 @@ DEFINE_FWK_MODULE(ElectronSeedTrackRefFix);
DEFINE_FWK_MODULE(TrackCandidateProducer);
DEFINE_FWK_MODULE(PixelTracksProducer);
DEFINE_FWK_MODULE(SimTrackIdProducer);
DEFINE_FWK_MODULE(ConversionTrackRefFix);
DEFINE_DIGI_ACCUMULATOR(RecoTrackAccumulator);
7 changes: 7 additions & 0 deletions FastSimulation/Tracking/python/ConversionTrackRefFix_cfi.py
@@ -0,0 +1,7 @@
import FWCore.ParameterSet.Config as cms

fixedConversionTracks = cms.EDProducer(
"ConversionTrackRefFix",
src = cms.InputTag("generalConversionTrackProducer"),
newTrackCollection = cms.InputTag("generalTracks")
)