CMS 3D CMS Logo

OscarProducer Class Reference

#include <SimG4Core/Application/interface/OscarProducer.h>

Inheritance diagram for OscarProducer:

edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Types

typedef std::vector
< boost::shared_ptr
< SimProducer > > 
Producers

Public Member Functions

virtual void beginJob (const edm::EventSetup &c)
virtual void endJob ()
 OscarProducer (edm::ParameterSet const &p)
virtual void produce (edm::Event &e, const edm::EventSetup &c)
virtual ~OscarProducer ()

Protected Attributes

Producers m_producers
RunManagerm_runManager
CustomUIsessionm_UIsession

Private Attributes

CLHEP::HepRandomEngine * m_engine


Detailed Description

Definition at line 20 of file OscarProducer.h.


Member Typedef Documentation

typedef std::vector<boost::shared_ptr<SimProducer> > OscarProducer::Producers

Definition at line 23 of file OscarProducer.h.


Constructor & Destructor Documentation

OscarProducer::OscarProducer ( edm::ParameterSet const &  p  )  [explicit]

Definition at line 50 of file OscarProducer.cc.

References m_engine, m_producers, m_runManager, m_UIsession, and random.

00051 {   
00052     StaticRandomEngineSetUnset random;
00053     m_engine = random.getEngine();
00054     
00055     produces<edm::SimTrackContainer>().setBranchAlias("SimTracks");
00056     produces<edm::SimVertexContainer>().setBranchAlias("SimVertices");
00057     produces<edm::PSimHitContainer>("TrackerHitsPixelBarrelLowTof");
00058     produces<edm::PSimHitContainer>("TrackerHitsPixelBarrelHighTof");
00059     produces<edm::PSimHitContainer>("TrackerHitsTIBLowTof");
00060     produces<edm::PSimHitContainer>("TrackerHitsTIBHighTof");
00061     produces<edm::PSimHitContainer>("TrackerHitsTIDLowTof");
00062     produces<edm::PSimHitContainer>("TrackerHitsTIDHighTof");
00063     produces<edm::PSimHitContainer>("TrackerHitsPixelEndcapLowTof");
00064     produces<edm::PSimHitContainer>("TrackerHitsPixelEndcapHighTof");
00065     produces<edm::PSimHitContainer>("TrackerHitsTOBLowTof");
00066     produces<edm::PSimHitContainer>("TrackerHitsTOBHighTof");
00067     produces<edm::PSimHitContainer>("TrackerHitsTECLowTof");
00068     produces<edm::PSimHitContainer>("TrackerHitsTECHighTof");
00069     
00070     produces<edm::PSimHitContainer>("TotemHitsT1");
00071     produces<edm::PSimHitContainer>("TotemHitsT2Gem");
00072     produces<edm::PSimHitContainer>("TotemHitsRP");
00073     produces<edm::PSimHitContainer>("FP420SI");
00074     produces<edm::PSimHitContainer>("BSCHits");
00075     
00076     produces<edm::PCaloHitContainer>("EcalHitsEB");
00077     produces<edm::PCaloHitContainer>("EcalHitsEE");
00078     produces<edm::PCaloHitContainer>("EcalHitsES");
00079     produces<edm::PCaloHitContainer>("HcalHits");
00080     produces<edm::PCaloHitContainer>("CaloHitsTk");
00081     produces<edm::PSimHitContainer>("MuonDTHits");
00082     produces<edm::PSimHitContainer>("MuonCSCHits");
00083     produces<edm::PSimHitContainer>("MuonRPCHits");
00084     produces<edm::PCaloHitContainer>("CastorPL");
00085     produces<edm::PCaloHitContainer>("CastorFI");
00086     produces<edm::PCaloHitContainer>("CastorBU");
00087     produces<edm::PCaloHitContainer>("CastorTU");
00088     produces<edm::PCaloHitContainer>("EcalTBH4BeamHits");
00089     produces<edm::PCaloHitContainer>("HcalTB06BeamHits");
00090     produces<edm::PCaloHitContainer>("ZDCHITS"); 
00091     
00092     //m_runManager = RunManager::init(p);
00093     m_runManager = new RunManager(p);
00094 
00095     //register any products 
00096     m_producers= m_runManager->producers();
00097 
00098     for(Producers::iterator itProd = m_producers.begin();
00099         itProd != m_producers.end();
00100         ++itProd) {
00101        (*itProd)->registerProducts(*this);
00102     }
00103 
00104     //UIsession manager for message handling
00105     m_UIsession = new CustomUIsession();
00106 
00107 }

OscarProducer::~OscarProducer (  )  [virtual]

Definition at line 109 of file OscarProducer.cc.

References m_runManager, and m_UIsession.

00110 { 
00111   //this is causing a seg fault when an exception occurs while constructing
00112   // an HcalSD.  Need to check for memory problems. 
00113   if (m_runManager!=0) delete m_runManager; 
00114   if (m_UIsession!=0) delete m_UIsession;
00115 
00116 }


Member Function Documentation

void OscarProducer::beginJob ( const edm::EventSetup c  )  [virtual]

Reimplemented from edm::EDProducer.

Definition at line 118 of file OscarProducer.cc.

References RunManager::initG4(), m_engine, m_runManager, and random.

00119 {
00120     StaticRandomEngineSetUnset random(m_engine);
00121 
00122     m_runManager->initG4(es);
00123 }

void OscarProducer::endJob ( void   )  [virtual]

Reimplemented from edm::EDProducer.

Definition at line 125 of file OscarProducer.cc.

00125 { }

void OscarProducer::produce ( edm::Event e,
const edm::EventSetup c 
) [virtual]

Implements edm::EDProducer.

Definition at line 127 of file OscarProducer.cc.

References RunManager::abortEvent(), lat::endl(), edm::errors::EventCorruption, in, it, G4SimEvent::load(), m_engine, m_producers, m_runManager, p1, p2, RunManager::produce(), edm::Event::put(), random, RunManager::sensCaloDetectors(), RunManager::sensTkDetectors(), RunManager::simEvent(), v, and SimG4Exception::what().

00128 {
00129     StaticRandomEngineSetUnset random(m_engine);
00130 
00131     std::vector<SensitiveTkDetector*>& sTk = m_runManager->sensTkDetectors();
00132     std::vector<SensitiveCaloDetector*>& sCalo = m_runManager->sensCaloDetectors();
00133 
00134     try
00135     {
00136     m_runManager->produce(e,es);
00137 
00138     std::auto_ptr<edm::SimTrackContainer> p1(new edm::SimTrackContainer);
00139     std::auto_ptr<edm::SimVertexContainer> p2(new edm::SimVertexContainer);
00140     G4SimEvent * evt = m_runManager->simEvent();
00141     evt->load(*p1);
00142     evt->load(*p2);   
00143 
00144     e.put(p1);
00145     e.put(p2);
00146 
00147     for (std::vector<SensitiveTkDetector*>::iterator it = sTk.begin(); it != sTk.end(); it++)
00148     {
00149         std::vector<std::string> v = (*it)->getNames();
00150         for (std::vector<std::string>::iterator in = v.begin(); in!= v.end(); in++)
00151         {
00152             std::auto_ptr<edm::PSimHitContainer> product(new edm::PSimHitContainer);
00153             (*it)->fillHits(*product,*in);
00154             e.put(product,*in);
00155         }
00156     }
00157     for (std::vector<SensitiveCaloDetector*>::iterator it = sCalo.begin(); it != sCalo.end(); it++)
00158     {
00159         std::vector<std::string>  v = (*it)->getNames();
00160         for (std::vector<std::string>::iterator in = v.begin(); in!= v.end(); in++)
00161         {
00162             std::auto_ptr<edm::PCaloHitContainer> product(new edm::PCaloHitContainer);
00163             (*it)->fillHits(*product,*in);
00164             e.put(product,*in);
00165         }
00166     }
00167 
00168     for(Producers::iterator itProd = m_producers.begin();
00169         itProd != m_producers.end();
00170         ++itProd) {
00171        (*itProd)->produce(e,es);
00172     }
00173     }
00174     catch ( const SimG4Exception& simg4ex )
00175     {
00176        
00177        edm::LogInfo("SimG4CoreApplication") << " SimG4Exception caght !" << simg4ex.what() << std::endl ;
00178        
00179        m_runManager->abortEvent() ;
00180        throw edm::Exception( edm::errors::EventCorruption ) ;
00181     }
00182 }


Member Data Documentation

CLHEP::HepRandomEngine* OscarProducer::m_engine [private]

Definition at line 36 of file OscarProducer.h.

Referenced by beginJob(), OscarProducer(), and produce().

Producers OscarProducer::m_producers [protected]

Definition at line 32 of file OscarProducer.h.

Referenced by OscarProducer(), and produce().

RunManager* OscarProducer::m_runManager [protected]

Definition at line 31 of file OscarProducer.h.

Referenced by beginJob(), OscarProducer(), produce(), and ~OscarProducer().

CustomUIsession* OscarProducer::m_UIsession [protected]

Definition at line 33 of file OscarProducer.h.

Referenced by OscarProducer(), and ~OscarProducer().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:29:25 2009 for CMSSW by  doxygen 1.5.4