#include <GsfElectronCoreEcalDrivenProducer.h>
Public Member Functions | |
GsfElectronCoreEcalDrivenProducer (const edm::ParameterSet &conf) | |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
virtual | ~GsfElectronCoreEcalDrivenProducer () |
Definition at line 6 of file GsfElectronCoreEcalDrivenProducer.h.
GsfElectronCoreEcalDrivenProducer::GsfElectronCoreEcalDrivenProducer | ( | const edm::ParameterSet & | conf | ) | [explicit] |
Definition at line 27 of file GsfElectronCoreEcalDrivenProducer.cc.
GsfElectronCoreEcalDrivenProducer::~GsfElectronCoreEcalDrivenProducer | ( | ) | [virtual] |
Definition at line 68 of file GsfElectronCoreEcalDrivenProducer.cc.
{}
void GsfElectronCoreEcalDrivenProducer::produce | ( | edm::Event & | event, |
const edm::EventSetup & | setup | ||
) | [virtual] |
Implements edm::EDProducer.
Definition at line 31 of file GsfElectronCoreEcalDrivenProducer.cc.
References edm::RefToBase< T >::castTo(), GsfElectronCoreBaseProducer::fillElectronCore(), GsfElectronCoreBaseProducer::gsfTracksH_, i, GsfElectronCoreBaseProducer::initEvent(), edm::Ref< C, T, F >::isNull(), and edm::Handle< T >::product().
{ // base input GsfElectronCoreBaseProducer::initEvent(event,setup) ; // output std::auto_ptr<GsfElectronCoreCollection> electrons(new GsfElectronCoreCollection) ; // loop on ecal driven tracks const GsfTrackCollection * gsfTrackCollection = gsfTracksH_.product() ; for ( unsigned int i=0 ; i<gsfTrackCollection->size() ; ++i ) { const GsfTrackRef gsfTrackRef = edm::Ref<GsfTrackCollection>(gsfTracksH_,i) ; GsfElectronCore * ele = new GsfElectronCore(gsfTrackRef) ; if (!ele->ecalDrivenSeed()) { delete ele ; continue ; } GsfElectronCoreBaseProducer::fillElectronCore(ele) ; edm::RefToBase<TrajectorySeed> seed = gsfTrackRef->extra()->seedRef() ; ElectronSeedRef elseed = seed.castTo<ElectronSeedRef>() ; edm::RefToBase<CaloCluster> caloCluster = elseed->caloCluster() ; SuperClusterRef scRef = caloCluster.castTo<SuperClusterRef>() ; if (!scRef.isNull()) { ele->setSuperCluster(scRef) ; electrons->push_back(*ele) ; } else { edm::LogWarning("GsfElectronCoreEcalDrivenProducer")<<"Seed CaloCluster is not a SuperCluster, unexpected..." ; } delete ele ; } event.put(electrons) ; }