Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:00:44

0001 #ifndef FastSimulation_Event_FSimEvent_H
0002 #define FastSimulation_Event_FSimEvent_H
0003 
0004 // CMSSW Headers
0005 #include "DataFormats/Provenance/interface/EventID.h"
0006 #include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h"
0007 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
0008 #include "SimDataFormats/Vertex/interface/SimVertexContainer.h"
0009 
0010 // FAMOS Headers
0011 #include "FastSimulation/Event/interface/FBaseSimEvent.h"
0012 
0013 /** The FAMOS SimEvent: inherits from FBaseSimEvent,
0014  *  where the latter provides FAMOS-specific event features (splitting
0015  *  proposed by Maya STAVRIANAKOU)
0016  *
0017  * An FSimEvent contains, at filling time, only particles from the 
0018  * GenEvent it is being filled with. Material Effects then 
0019  * update its content, so that it resembles the output of Geant
0020  * at the end of the material effect processing.
0021  *
0022  * Important : All distances are in mm 
0023  *
0024  * \author Patrick Janot, CERN
0025  * \date: 9-Dec-2003
0026  *
0027  */
0028 
0029 class FSimEvent : public FBaseSimEvent {
0030 public:
0031   /// Default constructor
0032   FSimEvent(const edm::ParameterSet& kine);
0033 
0034   ///  usual virtual destructor
0035   virtual ~FSimEvent();
0036 
0037   /// fill the FBaseSimEvent from the current HepMC::GenEvent
0038   void fill(const HepMC::GenEvent& hev, edm::EventID& Id);
0039 
0040   /// fill the FBaseSimEvent from the SimTrack's and SimVert'ices
0041   void fill(const std::vector<SimTrack>& simTracks, const std::vector<SimVertex>& simVertices);
0042 
0043   ///Method to return the EventId
0044   edm::EventID id() const;
0045 
0046   ///Method to return the event weight
0047   float weight() const;
0048 
0049   /// Number of tracks
0050   unsigned int nTracks() const;
0051   /// Number of vertices
0052   unsigned int nVertices() const;
0053   /// Number of MC particles
0054   unsigned int nGenParts() const;
0055 
0056   /// Load containers of tracks (and muons) and vertices for the edm::Event
0057   void load(edm::SimTrackContainer& c, edm::SimTrackContainer& m) const;
0058   void load(edm::SimVertexContainer& c) const;
0059   void load(FSimVertexTypeCollection& c) const;
0060 
0061 private:
0062   edm::EventID id_;
0063   double weight_;
0064 };
0065 
0066 #endif  // FSIMEVENT_H