CMS 3D CMS Logo

TrackingTruthAccumulator.h
Go to the documentation of this file.
1 #ifndef TrackingAnalysis_TrackingTruthAccumulator_h
2 #define TrackingAnalysis_TrackingTruthAccumulator_h
3 
6 #include <memory> // required for std::unique_ptr
9 
10 
11 // Forward declarations
12 namespace edm
13 {
14  class ParameterSet;
15  class ConsumesCollector;
16  namespace stream {
17  class EDProducerBase;
18  }
19  class Event;
20  class EventSetup;
21  class StreamID;
22 }
24 class PSimHit;
25 
26 
27 
76 {
77 public:
79 private:
80  virtual void initializeEvent( const edm::Event& event, const edm::EventSetup& setup );
81  virtual void accumulate( const edm::Event& event, const edm::EventSetup& setup );
82  virtual void accumulate( const PileUpEventPrincipal& event, const edm::EventSetup& setup, edm::StreamID const& );
83  virtual void finalizeEvent( edm::Event& event, const edm::EventSetup& setup );
84 
86  template<class T> void accumulateEvent( const T& event, const edm::EventSetup& setup, const edm::Handle< edm::HepMCProduct >& hepMCproduct );
87 
89  template<class T> void fillSimHits( std::vector<const PSimHit*>& returnValue, const T& event, const edm::EventSetup& setup );
90 
92 
93  const double volumeRadius_;
94  const double volumeZ_;
96  const double vertexDistanceCut_;
98 
101  const unsigned int maximumPreviousBunchCrossing_;
111  const bool addAncestors_;
112 
114  const bool removeDeadModules_;
117  std::vector<edm::InputTag> collectionTags_;
121 
128 
137 public:
138  // These always go hand in hand, and I need to pass them around in the internal
139  // functions, so I might as well package them up in a struct.
141  {
142  std::unique_ptr<TrackingParticleCollection> pTrackingParticles;
143  std::unique_ptr<TrackingVertexCollection> pTrackingVertices;
146  };
147 private:
150  std::unique_ptr<TrackingVertexCollection> pInitialVertices_;
151 };
152 
153 #endif // end of "#ifndef TrackingAnalysis_TrackingTruthAccumulator_h"
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 bool addAncestors_
Whether or not to add the full parentage of any TrackingParticle that is inserted in the collection...
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:1
const double vertexDistanceCut_
maximum distance for HepMC::GenVertex to be added to SimVertex
Definition: config.py:1
bool signalOnly_
Uses the same config as selector_, but can be used to drop out early since selector_ requires the Tra...
const unsigned int maximumSubsequentBunchCrossing_
const std::string messageCategory_
The message category used to send messages to MessageLogger.
bool allowDifferentProcessTypeForDifferentDetectors_
When counting hits, allows hits in different detectors to have a different process type...
const bool createInitialVertexCollection_
Whether or not to create a separate collection for just the initial interaction vertices.
const unsigned int maximumPreviousBunchCrossing_
HLT enums.
bool chargedOnly_
Uses the same config as selector_, but can be used to drop out early since selector_ requires the Tra...
const bool createUnmergedCollection_
If bremsstrahlung merging, whether to also add the unmerged collection to the event or not...
TrackingParticleSelector selector_
Replacement for TrackingTruthProducer in the new pileup mixing setup.
long double T
edm::InputTag hepMCproductLabel_
Needed to add HepMC::GenVertex to SimVertex.
Definition: event.py:1
std::vector< edm::InputTag > collectionTags_