CMS 3D CMS Logo

FamosManager Class Reference

#include <FastSimulation/EventProducer/interface/FamosManager.h>

List of all members.

Public Member Functions

CalorimetryManagercalorimetryManager () const
 The calorimeter.
 FamosManager (edm::ParameterSet const &p)
 Constructor.
void reconstruct (const HepMC::GenEvent *evt, const reco::GenParticleCollection *particles, const HepMC::GenEvent *pu)
 The real thing is done here.
void setupGeometryAndField (edm::Run &run, const edm::EventSetup &es)
 Get information from the Event Setup.
FSimEventsimEvent () const
 The generated event.
TrajectoryManagertrackerManager () const
 The tracker.
 ~FamosManager ()
 Destructor.

Private Attributes

int iEvent
bool m_Alignment
bool m_Calorimetry
int m_pRunNumber
bool m_pUseMagneticField
int m_pVerbose
bool m_Tracking
CalorimetryManagermyCalorimetry
PileUpSimulatormyPileUpSimulator
FSimEventmySimEvent
TrajectoryManagermyTrajectoryManager
const RandomEnginerandom
double weight_


Detailed Description

Definition at line 27 of file FamosManager.h.


Constructor & Destructor Documentation

FamosManager::FamosManager ( edm::ParameterSet const &  p  ) 

Constructor.

Initialize the TrajectoryManager

Definition at line 46 of file FamosManager.cc.

References GenMuonPlsPt100GeV_cfg::cout, lat::endl(), Exception, edm::ParameterSet::getParameter(), edm::Service< T >::isAvailable(), m_Calorimetry, myCalorimetry, myPileUpSimulator, mySimEvent, myTrajectoryManager, and random.

00047     : iEvent(0),
00048       myPileUpSimulator(0),
00049       myCalorimetry(0),
00050       m_pUseMagneticField(p.getParameter<bool>("UseMagneticField")),
00051       m_Tracking(p.getParameter<bool>("SimulateTracking")),
00052       m_Calorimetry(p.getParameter<bool>("SimulateCalorimetry")),
00053       m_Alignment(p.getParameter<bool>("ApplyAlignment")),
00054       m_pRunNumber(p.getUntrackedParameter<int>("RunNumber",1)),
00055       m_pVerbose(p.getUntrackedParameter<int>("Verbosity",1))
00056 {
00057 
00058   std::cout << " FamosManager initializing " << std::endl;
00059 
00060   // Initialize the random number generator service
00061   edm::Service<edm::RandomNumberGenerator> rng;
00062   if ( ! rng.isAvailable() ) {
00063     throw cms::Exception("Configuration")
00064       << "FamosManager requires the RandomGeneratorService\n"
00065          "which is not present in the configuration file.\n"
00066          "You must add the service in the configuration file\n"
00067          "or remove the module that requires it";
00068   }
00069 
00070   random = new RandomEngine(&(*rng));
00071 
00072   // Initialize the FSimEvent
00073   mySimEvent = 
00074     new FSimEvent(p.getParameter<edm::ParameterSet>("VertexGenerator"),
00075                   p.getParameter<edm::ParameterSet>("ParticleFilter"),
00076                   random);
00077 
00079   myTrajectoryManager = 
00080     new TrajectoryManager(mySimEvent,
00081                           p.getParameter<edm::ParameterSet>("MaterialEffects"),
00082                           p.getParameter<edm::ParameterSet>("TrackerSimHits"),
00083                           p.getParameter<edm::ParameterSet>("ActivateDecays"),
00084                           random);
00085 
00086   // Initialize PileUp Producer (if requested)
00087   myPileUpSimulator = new PileUpSimulator(mySimEvent);
00088 
00089   // Initialize Calorimetry Fast Simulation (if requested)
00090   if ( m_Calorimetry) 
00091     myCalorimetry = 
00092       new CalorimetryManager(mySimEvent,
00093                              p.getParameter<edm::ParameterSet>("Calorimetry"),
00094                              random);
00095 
00096 }

FamosManager::~FamosManager (  ) 

Destructor.

Definition at line 98 of file FamosManager.cc.

References myCalorimetry, myPileUpSimulator, mySimEvent, myTrajectoryManager, and random.

00099 { 
00100   if ( mySimEvent ) delete mySimEvent; 
00101   if ( myTrajectoryManager ) delete myTrajectoryManager; 
00102   if ( myPileUpSimulator ) delete myPileUpSimulator;
00103   if ( myCalorimetry) delete myCalorimetry;
00104   delete random;
00105 }


Member Function Documentation

CalorimetryManager* FamosManager::calorimetryManager (  )  const [inline]

The calorimeter.

Definition at line 57 of file FamosManager.h.

References myCalorimetry.

Referenced by FamosProducer::produce().

00057 {return myCalorimetry;}

void FamosManager::reconstruct ( const HepMC::GenEvent *  evt,
const reco::GenParticleCollection particles,
const HepMC::GenEvent *  pu 
)

The real thing is done here.

Definition at line 172 of file FamosManager.cc.

References GenMuonPlsPt100GeV_cfg::cout, lat::endl(), FSimEvent::fill(), id, iEvent, m_pRunNumber, myCalorimetry, myPileUpSimulator, mySimEvent, myTrajectoryManager, FSimEvent::nGenParts(), FSimEvent::nTracks(), FSimEvent::nVertices(), PileUpSimulator::produce(), CalorimetryManager::reconstruct(), TrajectoryManager::reconstruct(), and FSimEvent::weight().

Referenced by FamosProducer::produce().

00175 {
00176 
00177   //  myGenEvent = evt;
00178 
00179   if (evt != 0 || particles != 0) {
00180     iEvent++;
00181     edm::EventID id(m_pRunNumber,iEvent);
00182 
00183 
00184     // Fill the event from the original generated event
00185     if (evt ) 
00186       mySimEvent->fill(*evt,id);
00187     else
00188       mySimEvent->fill(*particles,id);
00189 
00190 
00191     //    mySimEvent->printMCTruth(*evt);
00192     /*
00193     mySimEvent->print();
00194     std::cout << "----------------------------------------" << std::endl;
00195     */
00196 
00197     // Get the pileup events and add the particles to the main event
00198     myPileUpSimulator->produce(pu);
00199 
00200     /*
00201     mySimEvent->print();
00202     std::cout << "----------------------------------------" << std::endl;
00203     */
00204 
00205     // And propagate the particles through the detector
00206     myTrajectoryManager->reconstruct();
00207     /*
00208     mySimEvent->print();
00209     std::cout << "=========================================" 
00210               << std::endl
00211               << std::endl;
00212     */
00213 
00214     if ( myCalorimetry ) myCalorimetry->reconstruct();
00215 
00216   }
00217 
00218   std::cout << " saved : Event  " << iEvent 
00219             << " of weight " << mySimEvent->weight()
00220             << " with " << mySimEvent->nTracks() 
00221             << " tracks and " << mySimEvent->nVertices()
00222             << " vertices, generated by " 
00223             << mySimEvent->nGenParts() << " particles " << std::endl;
00224   
00225 }

void FamosManager::setupGeometryAndField ( edm::Run run,
const edm::EventSetup es 
)

Get information from the Event Setup.

Definition at line 108 of file FamosManager.cc.

References GenMuonPlsPt100GeV_cfg::cout, lat::endl(), g, edm::EventSetup::get(), CalorimetryManager::getCalorimeter(), edm::EventSetup::getData(), CaloGeometryHelper::initialize(), FBaseSimEvent::initializePdt(), TrajectoryManager::initializeRecoGeometry(), TrajectoryManager::initializeTrackerGeometry(), ParticleTable::instance(), m_Alignment, m_pRunNumber, m_pUseMagneticField, m_Tracking, myCalorimetry, mySimEvent, myTrajectoryManager, edm::Run::run(), Calorimeter::setupGeometry(), and Calorimeter::setupTopology().

Referenced by FamosProducer::beginRun().

00109 {
00110   std::cout << "FamosManager : setup geometry and field" << std::endl;
00111 
00112   // Particle data table (from Pythia)
00113   edm::ESHandle < HepPDT::ParticleDataTable > pdt;
00114   es.getData(pdt);
00115   mySimEvent->initializePdt(&(*pdt));
00116   ParticleTable::instance(&(*pdt));
00117 
00118   // Initialize the full (misaligned) tracker geometry 
00119   // (only if tracking is requested)
00120   std::string misAligned = m_Alignment ? "MisAligned" : "";
00121   // 1) By default, the aligned geometry is chosen (m_Alignment = false)
00122   // 2) By default, the misaligned geometry is aligned
00123   edm::ESHandle<TrackerGeometry> tracker;
00124   es.get<TrackerDigiGeometryRecord>().get(misAligned,tracker);
00125   if (m_Tracking)  myTrajectoryManager->initializeTrackerGeometry(&(*tracker)); 
00126 
00127   // Initialize the tracker misaligned reco geometry (always needed)
00128   // By default, the misaligned geometry is aligned
00129   edm::ESHandle<GeometricSearchTracker>       theGeomSearchTracker;
00130   es.get<TrackerRecoGeometryRecord>().get(misAligned, theGeomSearchTracker );
00131 
00132   // Initialize the misaligned tracker interaction geometry 
00133   edm::ESHandle<TrackerInteractionGeometry>  theTrackerInteractionGeometry;
00134   es.get<TrackerInteractionGeometryRecord>().get(misAligned, theTrackerInteractionGeometry );
00135 
00136   // Initialize the magnetic field
00137   double bField000 = 0.;
00138   if (m_pUseMagneticField) {
00139     edm::ESHandle<MagneticFieldMap> theMagneticFieldMap;
00140     es.get<MagneticFieldMapRecord>().get(misAligned, theMagneticFieldMap);
00141     const GlobalPoint g(0.,0.,0.);
00142     bField000 = theMagneticFieldMap->inTeslaZ(g);
00143     myTrajectoryManager->initializeRecoGeometry(&(*theGeomSearchTracker),
00144                                                 &(*theTrackerInteractionGeometry),
00145                                                 &(*theMagneticFieldMap));
00146   } else { 
00147     myTrajectoryManager->initializeRecoGeometry(&(*theGeomSearchTracker),
00148                                                 &(*theTrackerInteractionGeometry),
00149                                                 0);
00150     bField000 = 4.0;
00151   }
00152   std::cout << "B-field(T) at (0,0,0)(cm): " << bField000 << std::endl;      
00153     
00154   //  Initialize the calorimeter geometry
00155   if ( myCalorimetry ) {
00156     edm::ESHandle<CaloGeometry> pG;
00157     es.get<CaloGeometryRecord>().get(pG);   
00158     myCalorimetry->getCalorimeter()->setupGeometry(*pG);
00159 
00160     edm::ESHandle<CaloTopology> theCaloTopology;
00161     es.get<CaloTopologyRecord>().get(theCaloTopology);     
00162     myCalorimetry->getCalorimeter()->setupTopology(*theCaloTopology);
00163     myCalorimetry->getCalorimeter()->initialize(bField000);
00164   }
00165 
00166   m_pRunNumber = run.run();
00167 
00168 }

FSimEvent* FamosManager::simEvent (  )  const [inline]

The generated event.

The simulated event

Definition at line 46 of file FamosManager.h.

References mySimEvent.

Referenced by FamosProducer::produce().

00046 { return mySimEvent; }

TrajectoryManager* FamosManager::trackerManager (  )  const [inline]

The tracker.

Definition at line 54 of file FamosManager.h.

References myTrajectoryManager.

Referenced by FamosProducer::produce().

00054 {return myTrajectoryManager;}


Member Data Documentation

int FamosManager::iEvent [private]

Definition at line 62 of file FamosManager.h.

Referenced by reconstruct().

bool FamosManager::m_Alignment [private]

Definition at line 74 of file FamosManager.h.

Referenced by setupGeometryAndField().

bool FamosManager::m_Calorimetry [private]

Definition at line 73 of file FamosManager.h.

Referenced by FamosManager().

int FamosManager::m_pRunNumber [private]

Definition at line 76 of file FamosManager.h.

Referenced by reconstruct(), and setupGeometryAndField().

bool FamosManager::m_pUseMagneticField [private]

Definition at line 71 of file FamosManager.h.

Referenced by setupGeometryAndField().

int FamosManager::m_pVerbose [private]

Definition at line 77 of file FamosManager.h.

bool FamosManager::m_Tracking [private]

Definition at line 72 of file FamosManager.h.

Referenced by setupGeometryAndField().

CalorimetryManager* FamosManager::myCalorimetry [private]

Definition at line 67 of file FamosManager.h.

Referenced by calorimetryManager(), FamosManager(), reconstruct(), setupGeometryAndField(), and ~FamosManager().

PileUpSimulator* FamosManager::myPileUpSimulator [private]

Definition at line 66 of file FamosManager.h.

Referenced by FamosManager(), reconstruct(), and ~FamosManager().

FSimEvent* FamosManager::mySimEvent [private]

Definition at line 64 of file FamosManager.h.

Referenced by FamosManager(), reconstruct(), setupGeometryAndField(), simEvent(), and ~FamosManager().

TrajectoryManager* FamosManager::myTrajectoryManager [private]

Definition at line 65 of file FamosManager.h.

Referenced by FamosManager(), reconstruct(), setupGeometryAndField(), trackerManager(), and ~FamosManager().

const RandomEngine* FamosManager::random [private]

Definition at line 81 of file FamosManager.h.

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

double FamosManager::weight_ [private]

Definition at line 75 of file FamosManager.h.


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