CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes | Private Attributes
GenParticleProducer Class Reference
Inheritance diagram for GenParticleProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

int chargeTimesThree (int) const
 
bool convertParticle (reco::GenParticle &cand, const HepMC::GenParticle *part)
 
bool fillDaughters (reco::GenParticleCollection &cand, const HepMC::GenParticle *part, size_t index)
 
bool fillIndices (const HepMC::GenEvent *mc, std::vector< const HepMC::GenParticle * > &particles, std::vector< int > &barCodeVector, int offset)
 
 GenParticleProducer (const edm::ParameterSet &)
 constructor More...
 
virtual void produce (edm::Event &e, const edm::EventSetup &) override
 process one event More...
 
 ~GenParticleProducer ()
 destructor More...
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (std::string const &iProcessName, std::string const &iModuleLabel, bool iPrint, std::vector< char const * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Public Attributes

std::map< int, size_t > barcodes_
 
reco::GenParticleRefProd ref_
 

Private Attributes

bool abortOnUnknownPDGCode_
 unknown code treatment flag More...
 
std::vector< int > chargeM_
 
std::map< int, int > chargeMap_
 
std::vector< int > chargeP_
 charge indices More...
 
bool doSubEvent_
 input & output modes More...
 
bool firstEvent_
 whether the first event was looked at More...
 
MCTruthHelper< HepMC::GenParticle > mcTruthHelper_
 
MCTruthHelper< reco::GenParticlemcTruthHelperGenParts_
 
edm::EDGetTokenT
< CrossingFrame
< edm::HepMCProduct > > 
mixToken_
 
bool saveBarCodes_
 save bar-codes More...
 
edm::EDGetTokenT
< edm::HepMCProduct
srcToken_
 source collection name More...
 
bool useCF_
 
std::vector< edm::EDGetTokenT
< edm::HepMCProduct > > 
vectorSrcTokens_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 26 of file GenParticleProducer.cc.

Constructor & Destructor Documentation

GenParticleProducer::GenParticleProducer ( const edm::ParameterSet cfg)

constructor

Definition at line 90 of file GenParticleProducer.cc.

References HLT_FULL_cff::alias, edm::ParameterSet::getParameter(), HLT_FULL_cff::InputTag, mixToken_, saveBarCodes_, srcToken_, AlCaHLTBitMon_QueryRunRegistry::string, and useCF_.

90  :
91  firstEvent_(true),
92  abortOnUnknownPDGCode_( cfg.getUntrackedParameter<bool>( "abortOnUnknownPDGCode", true ) ),
93  saveBarCodes_( cfg.getUntrackedParameter<bool>( "saveBarCodes", false ) ),
95  doSubEvent_(cfg.getUntrackedParameter<bool>( "doSubEvent", false )),
96  useCF_(cfg.getUntrackedParameter<bool>( "useCrossingFrame", false ))
97 {
98  produces<GenParticleCollection>();
99  if( saveBarCodes_ ) {
100  std::string alias( cfg.getParameter<std::string>( "@module_label" ) );
101  produces<vector<int> >().setBranchAlias( alias + "BarCodes" );
102  }
103 
104  if(useCF_) mixToken_ = mayConsume<CrossingFrame<HepMCProduct> >(InputTag(cfg.getParameter<std::string>( "mix" ),"generatorSmeared"));
105  else srcToken_ = mayConsume<HepMCProduct>(cfg.getParameter<InputTag>( "src" ));
106 }
T getParameter(std::string const &) const
bool abortOnUnknownPDGCode_
unknown code treatment flag
T getUntrackedParameter(std::string const &, T const &) const
std::vector< int > chargeP_
charge indices
edm::EDGetTokenT< CrossingFrame< edm::HepMCProduct > > mixToken_
edm::EDGetTokenT< edm::HepMCProduct > srcToken_
source collection name
bool firstEvent_
whether the first event was looked at
bool doSubEvent_
input &amp; output modes
std::vector< int > chargeM_
bool saveBarCodes_
save bar-codes
static const int PDGCacheMax
GenParticleProducer::~GenParticleProducer ( )

destructor

Definition at line 108 of file GenParticleProducer.cc.

108  {
109 }

Member Function Documentation

int GenParticleProducer::chargeTimesThree ( int  id) const

Definition at line 111 of file GenParticleProducer.cc.

References abortOnUnknownPDGCode_, funct::abs(), chargeM_, chargeMap_, chargeP_, Exception, f, edm::errors::LogicError, and PDGCacheMax.

Referenced by convertParticle().

111  {
112  if( std::abs( id ) < PDGCacheMax )
113  return id > 0 ? chargeP_[ id ] : chargeM_[ - id ];
114  map<int, int>::const_iterator f = chargeMap_.find( id );
115  if ( f == chargeMap_.end() ) {
118  << "invalid PDG id: " << id << endl;
119  else
120  return HepPDT::ParticleID(id).threeCharge();
121  }
122  return f->second;
123 }
bool abortOnUnknownPDGCode_
unknown code treatment flag
std::vector< int > chargeP_
charge indices
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double f[11][100]
std::map< int, int > chargeMap_
std::vector< int > chargeM_
static const int PDGCacheMax
bool GenParticleProducer::convertParticle ( reco::GenParticle cand,
const HepMC::GenParticle *  part 
)

Definition at line 266 of file GenParticleProducer.cc.

References chargeTimesThree(), MCTruthHelper< P >::fillGenStatusFlags(), mcTruthHelper_, mmToCm, p4, SingleMuPt40Fwdv2_cfi_GEN_SIM::pdgId, reco::GenParticle::setCollisionId(), reco::LeafCandidate::setP4(), reco::LeafCandidate::setPdgId(), reco::LeafCandidate::setStatus(), reco::LeafCandidate::setThreeCharge(), reco::LeafCandidate::setVertex(), reco::GenParticle::statusFlags(), and findQualityFiles::v.

Referenced by produce().

266  {
267  Candidate::LorentzVector p4( part->momentum() );
268  int pdgId = part->pdg_id();
269  cand.setThreeCharge( chargeTimesThree( pdgId ) );
270  cand.setPdgId( pdgId );
271  cand.setStatus( part->status() );
272  cand.setP4( p4 );
273  cand.setCollisionId(0);
274  const GenVertex * v = part->production_vertex();
275  if ( v != 0 ) {
276  ThreeVector vtx = v->point3d();
277  Candidate::Point vertex( vtx.x() * mmToCm, vtx.y() * mmToCm, vtx.z() * mmToCm );
278  cand.setVertex( vertex );
279  } else {
280  cand.setVertex( Candidate::Point( 0, 0, 0 ) );
281  }
283  return true;
284 }
MCTruthHelper< HepMC::GenParticle > mcTruthHelper_
void fillGenStatusFlags(const P &p, reco::GenStatusFlags &statusFlags)
void setCollisionId(int s)
Definition: GenParticle.h:38
virtual void setPdgId(int pdgId) final
int chargeTimesThree(int) const
double p4[4]
Definition: TauolaWrapper.h:92
virtual void setVertex(const Point &vertex)
set vertex
const GenStatusFlags & statusFlags() const
Definition: GenParticle.h:41
virtual void setStatus(int status) final
set status word
static const double mmToCm
part
Definition: HCALResponse.h:20
virtual void setP4(const LorentzVector &p4) final
set 4-momentum
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:37
math::XYZPoint Point
point in the space
Definition: Candidate.h:41
virtual void setThreeCharge(Charge qx3) final
set electric charge
Definition: LeafCandidate.h:97
bool GenParticleProducer::fillDaughters ( reco::GenParticleCollection cand,
const HepMC::GenParticle *  part,
size_t  index 
)

Definition at line 286 of file GenParticleProducer.cc.

References barcodes_, GenParticle::GenParticle, cmsHarvester::index, visualization-live-secondInstance_cfg::m, ref_, and edm::second().

Referenced by produce().

286  {
287 
288  const GenVertex * productionVertex = part->production_vertex();
289  size_t numberOfMothers = productionVertex->particles_in_size();
290  if ( numberOfMothers > 0 ) {
291  GenVertex::particles_in_const_iterator motherIt = productionVertex->particles_in_const_begin();
292  for( ; motherIt != productionVertex->particles_in_const_end(); motherIt++) {
293  const HepMC::GenParticle * mother = * motherIt;
294  size_t m = barcodes_.find( mother->barcode() )->second;
295  cands[ m ].addDaughter( GenParticleRef( ref_, index ) );
296  cands[ index ].addMother( GenParticleRef( ref_, m ) );
297  }
298  }
299 
300  return true;
301 }
std::map< int, size_t > barcodes_
edm::Ref< GenParticleCollection > GenParticleRef
persistent reference to a GenParticle
U second(std::pair< T, U > const &p)
reco::GenParticleRefProd ref_
part
Definition: HCALResponse.h:20
bool GenParticleProducer::fillIndices ( const HepMC::GenEvent *  mc,
std::vector< const HepMC::GenParticle * > &  particles,
std::vector< int > &  barCodeVector,
int  offset 
)

Definition at line 303 of file GenParticleProducer.cc.

References barcodes_, begin, end, GenParticle::GenParticle, customizeTrackingMonitorSeedNumber::idx, hltrates_dqm_sourceclient-live_cfg::offset, and AlCaHLTBitMon_ParallelJobs::p.

Referenced by produce().

303  {
304  size_t idx = offset;
305  HepMC::GenEvent::particle_const_iterator begin = mc->particles_begin(), end = mc->particles_end();
306  for( HepMC::GenEvent::particle_const_iterator p = begin; p != end; ++ p ) {
307  const HepMC::GenParticle * particle = * p;
308  size_t barCode_this_event = particle->barcode();
309  size_t barCode = barCode_this_event + offset;
310  if( barcodes_.find(barCode) != barcodes_.end() )
311  throw cms::Exception( "WrongReference" )
312  << "barcodes are duplicated! " << endl;
313  particles[idx] = particle;
314  barCodeVector[idx] = barCode;
315  barcodes_.insert( make_pair(barCode_this_event, idx ++) );
316  }
317  return true;
318 }
std::map< int, size_t > barcodes_
#define end
Definition: vmac.h:37
tuple idx
DEBUGGING if hasattr(process,&quot;trackMonIterativeTracking2012&quot;): print &quot;trackMonIterativeTracking2012 D...
#define begin
Definition: vmac.h:30
void GenParticleProducer::produce ( edm::Event e,
const edm::EventSetup es 
)
overridevirtual

process one event

fill indices

Implements edm::EDProducer.

Definition at line 125 of file GenParticleProducer.cc.

References funct::abs(), barcodes_, chargeM_, chargeMap_, chargeP_, convertParticle(), ztail::d, doSubEvent_, Exception, fillDaughters(), fillIndices(), firstEvent_, GenParticle::GenParticle, edm::Event::getByToken(), edm::EventSetup::getData(), edm::HepMCProduct::GetEvent(), MixCollection< T >::getObject(), edm::Event::getRefBeforePut(), i, edm::RefProd< T >::id(), edm::errors::InvalidReference, LogDebug, mixToken_, hltrates_dqm_sourceclient-live_cfg::offset, AlCaHLTBitMon_ParallelJobs::p, PDGCacheMax, SingleMuPt40Fwdv2_cfi_GEN_SIM::pdgId, edm::Handle< T >::product(), edm::Event::put(), ref_, reco::CompositeRefCandidateT< D >::resetDaughters(), saveBarCodes_, MixCollection< T >::size(), findQualityFiles::size, srcToken_, and useCF_.

125  {
126 
127  if (firstEvent_) {
129  es.getData( pdt );
130  for( HepPDT::ParticleDataTable::const_iterator p = pdt->begin(); p != pdt->end(); ++ p ) {
131  const HepPDT::ParticleID & id = p->first;
132  int pdgId = id.pid(), apdgId = std::abs( pdgId );
133  int q3 = id.threeCharge();
134  if ( apdgId < PDGCacheMax && pdgId > 0 ) {
135  chargeP_[ apdgId ] = q3;
136  chargeM_[ apdgId ] = -q3;
137  } else if ( apdgId < PDGCacheMax ) {
138  chargeP_[ apdgId ] = -q3;
139  chargeM_[ apdgId ] = q3;
140  } else {
141  chargeMap_[ pdgId ] = q3;
142  chargeMap_[ -pdgId ] = -q3;
143  }
144  }
145  firstEvent_ = false;
146  }
147 
148  barcodes_.clear();
149 
150  size_t totalSize = 0;
151  const GenEvent * mc = 0;
152  MixCollection<HepMCProduct>* cfhepmcprod = 0;
153  size_t npiles = 1;
154 
155  if(useCF_){
157  evt.getByToken(mixToken_,cf);
158  cfhepmcprod = new MixCollection<HepMCProduct>(cf.product());
159  npiles = cfhepmcprod->size();
160  LogDebug("GenParticleProducer")<<"npiles : "<<npiles<<endl;
161  for(unsigned int icf = 0; icf < npiles; ++icf){
162  LogDebug("GenParticleProducer")<<"subSize : "<<cfhepmcprod->getObject(icf).GetEvent()->particles_size()<<endl;
163  totalSize += cfhepmcprod->getObject(icf).GetEvent()->particles_size();
164  }
165  LogDebug("GenParticleProducer")<<"totalSize : "<<totalSize<<endl;
166  }else{
168  evt.getByToken( srcToken_, mcp );
169  mc = mcp->GetEvent();
170  if( mc == 0 )
172  << "HepMC has null pointer to GenEvent" << endl;
173  totalSize = mc->particles_size();
174  }
175 
176  // initialise containers
177  const size_t size = totalSize;
178  vector<const HepMC::GenParticle *> particles( size );
179  auto_ptr<GenParticleCollection> candsPtr( new GenParticleCollection( size ) );
180  auto_ptr<vector<int> > barCodeVector( new vector<int>( size ) );
181  ref_ = evt.getRefBeforePut<GenParticleCollection>();
182  GenParticleCollection & cands = * candsPtr;
183  size_t offset = 0;
184  size_t suboffset = 0;
185 
187  if(doSubEvent_ || useCF_){
188  for(size_t ipile = 0; ipile < npiles; ++ipile){
189  LogDebug("GenParticleProducer")<<"mixed object ipile : "<<ipile<<endl;
190  barcodes_.clear();
191  if(useCF_) mc = cfhepmcprod->getObject(ipile).GetEvent();
192 
193  //Look whether heavy ion/signal event
194  bool isHI = false;
195  const HepMC::HeavyIon * hi = mc->heavy_ion();
196  if(hi && hi->Ncoll_hard() > 1) isHI = true;
197  size_t num_particles = mc->particles_size();
198  LogDebug("GenParticleProducer")<<"num_particles : "<<num_particles<<endl;
199  fillIndices(mc, particles, *barCodeVector, offset);
200  // fill output collection and save association
201  for( size_t ipar = offset; ipar < offset + num_particles; ++ ipar ) {
202  const HepMC::GenParticle * part = particles[ ipar ];
203  reco::GenParticle & cand = cands[ ipar ];
204  // convert HepMC::GenParticle to new reco::GenParticle
205  convertParticle(cand, part);
206  cand.resetDaughters( ref_.id() );
207  }
208 
209  for( size_t d = offset; d < offset + num_particles; ++ d ) {
210  const HepMC::GenParticle * part = particles[ d ];
211  const GenVertex * productionVertex = part->production_vertex();
212  int sub_id = 0;
213  if ( productionVertex != 0 ) {
214  sub_id = productionVertex->id();
215  if(!isHI) sub_id = 0;
216  // search barcode map and attach daughters
217  fillDaughters(cands,part,d);
218  }else{
219  const GenVertex * endVertex = part->end_vertex();
220  if(endVertex != 0) sub_id = endVertex->id();
221  else throw cms::Exception( "SubEventID" )<<"SubEvent not determined. Particle has no production and no end vertex!"<<endl;
222  }
223  if(sub_id < 0) sub_id = 0;
224  int new_id = sub_id + suboffset;
225  GenParticleRef dref( ref_, d );
226  cands[d].setCollisionId(new_id); // For new GenParticle
227  LogDebug("VertexId")<<"SubEvent offset 3 : "<<suboffset;
228  }
229  int nsub = -2;
230  if(isHI){
231  nsub = hi->Ncoll_hard()+1;
232  suboffset += nsub;
233  }else{
234  suboffset += 1;
235  }
236  offset += num_particles;
237  }
238  }else{
239  fillIndices(mc, particles, *barCodeVector, 0);
240 
241  // fill output collection and save association
242  for( size_t i = 0; i < particles.size(); ++ i ) {
243  const HepMC::GenParticle * part = particles[ i ];
244  reco::GenParticle & cand = cands[ i ];
245  // convert HepMC::GenParticle to new reco::GenParticle
246  convertParticle(cand, part);
247  cand.resetDaughters( ref_.id() );
248  }
249 
250  // fill references to daughters
251  for( size_t d = 0; d < cands.size(); ++ d ) {
252  const HepMC::GenParticle * part = particles[ d ];
253  const GenVertex * productionVertex = part->production_vertex();
254  // search barcode map and attach daughters
255  if ( productionVertex != 0 ) fillDaughters(cands,part,d);
256  cands[d].setCollisionId(0);
257  }
258  }
259 
260  evt.put( candsPtr );
261  if(saveBarCodes_) evt.put( barCodeVector );
262  if(cfhepmcprod) delete cfhepmcprod;
263 
264 }
#define LogDebug(id)
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
int i
Definition: DBlmapReader.cc:9
bool fillDaughters(reco::GenParticleCollection &cand, const HepMC::GenParticle *part, size_t index)
std::vector< int > chargeP_
charge indices
std::map< int, size_t > barcodes_
edm::EDGetTokenT< CrossingFrame< edm::HepMCProduct > > mixToken_
edm::EDGetTokenT< edm::HepMCProduct > srcToken_
source collection name
int size() const
Definition: MixCollection.h:24
void getData(T &iHolder) const
Definition: EventSetup.h:79
reco::GenParticleRefProd ref_
tuple d
Definition: ztail.py:151
void resetDaughters(const edm::ProductID &id)
set daughters product ID
bool firstEvent_
whether the first event was looked at
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool fillIndices(const HepMC::GenEvent *mc, std::vector< const HepMC::GenParticle * > &particles, std::vector< int > &barCodeVector, int offset)
bool convertParticle(reco::GenParticle &cand, const HepMC::GenParticle *part)
const T & getObject(unsigned int ip) const
Definition: MixCollection.h:31
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:35
T const * product() const
Definition: Handle.h:81
part
Definition: HCALResponse.h:20
std::map< int, int > chargeMap_
bool doSubEvent_
input &amp; output modes
std::vector< int > chargeM_
ProductID id() const
Accessor for product ID.
Definition: RefProd.h:137
bool saveBarCodes_
save bar-codes
tuple size
Write out results.
static const int PDGCacheMax

Member Data Documentation

bool GenParticleProducer::abortOnUnknownPDGCode_
private

unknown code treatment flag

Definition at line 51 of file GenParticleProducer.cc.

Referenced by chargeTimesThree().

std::map<int, size_t> GenParticleProducer::barcodes_

Definition at line 39 of file GenParticleProducer.cc.

Referenced by fillDaughters(), fillIndices(), and produce().

std::vector<int> GenParticleProducer::chargeM_
private

Definition at line 55 of file GenParticleProducer.cc.

Referenced by chargeTimesThree(), and produce().

std::map<int, int> GenParticleProducer::chargeMap_
private

Definition at line 56 of file GenParticleProducer.cc.

Referenced by chargeTimesThree(), and produce().

std::vector<int> GenParticleProducer::chargeP_
private

charge indices

Definition at line 55 of file GenParticleProducer.cc.

Referenced by chargeTimesThree(), and produce().

bool GenParticleProducer::doSubEvent_
private

input & output modes

Definition at line 59 of file GenParticleProducer.cc.

Referenced by produce().

bool GenParticleProducer::firstEvent_
private

whether the first event was looked at

Definition at line 49 of file GenParticleProducer.cc.

Referenced by produce().

MCTruthHelper<HepMC::GenParticle> GenParticleProducer::mcTruthHelper_
private

Definition at line 62 of file GenParticleProducer.cc.

Referenced by convertParticle().

MCTruthHelper<reco::GenParticle> GenParticleProducer::mcTruthHelperGenParts_
private

Definition at line 63 of file GenParticleProducer.cc.

edm::EDGetTokenT<CrossingFrame<edm::HepMCProduct> > GenParticleProducer::mixToken_
private

Definition at line 46 of file GenParticleProducer.cc.

Referenced by GenParticleProducer(), and produce().

reco::GenParticleRefProd GenParticleProducer::ref_

Definition at line 40 of file GenParticleProducer.cc.

Referenced by fillDaughters(), and produce().

bool GenParticleProducer::saveBarCodes_
private

save bar-codes

Definition at line 53 of file GenParticleProducer.cc.

Referenced by GenParticleProducer(), and produce().

edm::EDGetTokenT<edm::HepMCProduct> GenParticleProducer::srcToken_
private

source collection name

Definition at line 44 of file GenParticleProducer.cc.

Referenced by GenParticleProducer(), and produce().

bool GenParticleProducer::useCF_
private

Definition at line 60 of file GenParticleProducer.cc.

Referenced by GenParticleProducer(), and produce().

std::vector<edm::EDGetTokenT<edm::HepMCProduct> > GenParticleProducer::vectorSrcTokens_
private

Definition at line 45 of file GenParticleProducer.cc.