CMS 3D CMS Logo

LaserAlignmentSource.cc

Go to the documentation of this file.
00001 
00010 // system include files
00011 #include "FWCore/Framework/interface/Event.h"
00012 
00013 // user include files
00014 #include "Alignment/LaserAlignmentSimulation/plugins/LaserAlignmentSource.h"
00015 #include "FWCore/Framework/interface/InputSourceMacros.h" 
00016 
00017 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
00018 
00019 //
00020 // constructors and destructor
00021 //
00022 LaserAlignmentSource::LaserAlignmentSource(const edm::ParameterSet& iConfig, 
00023                                            const edm::InputSourceDescription& iDescription) :
00024   GeneratedInputSource(iConfig, iDescription)
00025 {
00026   //register your products
00027   produces<edm::HepMCProduct>();
00028 
00029   //now do what ever other initialization is needed
00030 }
00031 
00032 
00033 LaserAlignmentSource::~LaserAlignmentSource()
00034 {
00035   // no need to cleanup theEvent since it's done in HepMCProduct
00036 }
00037 
00038 // ------------ method called to produce the event  ------------
00039 bool LaserAlignmentSource::produce(edm::Event& iEvent)
00040 {
00041   // create the event
00042   theEvent = new HepMC::GenEvent();
00043 
00044   // create a primary vertex
00045   HepMC::GenVertex * theVtx = new HepMC::GenVertex(HepMC::FourVector(0.,0.,0.));
00046 
00047   // add a particle to the vertex; this is needed to avoid crashes in OscarProducer. Use a 
00048   // electron neutrino, with zero energy and mass
00049   HepMC::GenParticle * theParticle = new HepMC::GenParticle(HepMC::FourVector(0.,0.,0.,0.),12,1);
00050   
00051   theVtx->add_particle_out(theParticle);
00052 
00053   // add the vertex to the event
00054   theEvent->add_vertex(theVtx);
00055 
00056   // set the event number
00057   theEvent->set_event_number(event());
00058   // set the signal process id
00059   theEvent->set_signal_process_id(20);
00060 
00061   // create an empty output collection
00062   std::auto_ptr<edm::HepMCProduct> theOutput(new edm::HepMCProduct());
00063   theOutput->addHepMCData(theEvent);
00064    
00065   // put the output to the event
00066   iEvent.put(theOutput);
00067 
00068   return true;
00069 }
00070 
00071 //define this as a plug-in
00072 
00073 DEFINE_FWK_INPUT_SOURCE(LaserAlignmentSource);

Generated on Tue Jun 9 17:24:09 2009 for CMSSW by  doxygen 1.5.4