CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
TrackingTruthAccumulator.h
Go to the documentation of this file.
1 #ifndef TrackingAnalysis_TrackingTruthAccumulator_h
2 #define TrackingAnalysis_TrackingTruthAccumulator_h
3 
12 #include <memory> // required for std::unique_ptr
13 
14 // Forward declarations
16 class PSimHit;
17 
86 public:
90 
91 private:
92  void initializeEvent(const edm::Event &event, const edm::EventSetup &setup) override;
93  void accumulate(const edm::Event &event, const edm::EventSetup &setup) override;
94  void accumulate(const PileUpEventPrincipal &event, const edm::EventSetup &setup, edm::StreamID const &) override;
95  void finalizeEvent(edm::Event &event, const edm::EventSetup &setup) override;
96 
98  template <class T>
99  void accumulateEvent(const T &event,
100  const edm::EventSetup &setup,
101  const edm::Handle<edm::HepMCProduct> &hepMCproduct);
102 
105  template <class T>
106  void fillSimHits(std::vector<const PSimHit *> &returnValue, const T &event, const edm::EventSetup &setup);
107 
109 
111  const double volumeRadius_;
112  const double volumeZ_;
114  const double vertexDistanceCut_;
116 
121  const unsigned int maximumPreviousBunchCrossing_;
136  const bool addAncestors_;
137 
139  const bool removeDeadModules_;
142  std::vector<edm::InputTag> collectionTags_;
147 
156 
168 
169 public:
170  // These always go hand in hand, and I need to pass them around in the
171  // internal functions, so I might as well package them up in a struct.
173  std::unique_ptr<TrackingParticleCollection> pTrackingParticles;
174  std::unique_ptr<TrackingVertexCollection> pTrackingVertices;
177  };
178 
179 private:
182  std::unique_ptr<TrackingVertexCollection> pInitialVertices_;
183 };
184 
185 #endif // end of "#ifndef TrackingAnalysis_TrackingTruthAccumulator_h"
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
std::unique_ptr< TrackingParticleCollection > pTrackingParticles
std::unique_ptr< TrackingVertexCollection > pInitialVertices_
std::unique_ptr< TrackingVertexCollection > pTrackingVertices
const bool removeDeadModules_
As of 11/Feb/2013 this option hasn&#39;t been implemented yet.
const double vertexDistanceCut_
maximum distance for HepMC::GenVertex to be added to SimVertex
void fillSimHits(std::vector< const PSimHit * > &returnValue, const T &event, const edm::EventSetup &setup)
Fills the supplied vector with pointers to the SimHits, checking for bad modules if required...
const unsigned int maximumSubsequentBunchCrossing_
void accumulateEvent(const T &event, const edm::EventSetup &setup, const edm::Handle< edm::HepMCProduct > &hepMCproduct)
Both forms of accumulate() delegate to this templated method.
void finalizeEvent(edm::Event &event, const edm::EventSetup &setup) override
void initializeEvent(const edm::Event &event, const edm::EventSetup &setup) override
bool allowDifferentProcessTypeForDifferentDetectors_
When counting hits, allows hits in different detectors to have a different process type...
const unsigned int maximumPreviousBunchCrossing_
tuple config
parse the configuration file
TrackingParticleSelector selector_
void accumulate(const edm::Event &event, const edm::EventSetup &setup) override
Replacement for TrackingTruthProducer in the new pileup mixing setup.
long double T
TrackingTruthAccumulator(const edm::ParameterSet &config, edm::ProducesCollector, edm::ConsumesCollector &iC)
edm::InputTag hepMCproductLabel_
Needed to add HepMC::GenVertex to SimVertex.
std::vector< edm::InputTag > collectionTags_