CMS 3D CMS Logo

TrackingTruthProducer.h

Go to the documentation of this file.
00001 #ifndef TrackingAnalysis_TrackingTruthProducer_h
00002 #define TrackingAnalysis_TrackingTruthProducer_h
00003 
00004 #include <map>
00005 
00006 #include "FWCore/Framework/interface/EDProducer.h"
00007 #include "FWCore/Framework/interface/Event.h"
00008 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00009 
00010 #include "DataFormats/Common/interface/Handle.h"
00011 #include "SimDataFormats/CrossingFrame/interface/CrossingFrame.h"
00012 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h"
00013 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h"
00014 #include "SimDataFormats/Track/interface/SimTrack.h"
00015 #include "SimDataFormats/Vertex/interface/SimVertex.h"
00016 #include "SimDataFormats/TrackingAnalysis/interface/TrackingParticleFwd.h"
00017 #include "SimDataFormats/TrackingAnalysis/interface/TrackingVertexContainer.h"
00018 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
00019 
00020 #include "SimGeneral/TrackingAnalysis/interface/EncodedTruthId.h"
00021 
00022 #include "Utilities/Timing/interface/TimingReport.h"
00023 #include "Utilities/Timing/interface/TimerStack.h"
00024 
00025 using namespace edm;
00026 using namespace std;
00027 
00028 class TrackingTruthProducer : public edm::EDProducer {
00029 
00030 public:
00031   explicit TrackingTruthProducer( const edm::ParameterSet & );
00032 //  ~TrackingTruthProducer() { TimingReport::current()->dump(std::cout); }
00033 
00034 private:
00035 
00036   void produce( edm::Event &, const edm::EventSetup & );
00037 
00038   int LayerFromDetid(const unsigned int&);
00039 
00040   edm::ParameterSet conf_;
00041 
00042   double                   distanceCut_;
00043   std::vector<std::string> dataLabels_;
00044   std::vector<std::string> hitLabelsVector_;
00045   double                   volumeRadius_;
00046   double                   volumeZ_;
00047   bool                     discardOutVolume_;
00048   bool                                     mergedBremsstrahlung_;  
00049   bool                     discardHitsFromDeltas_;
00050   std::string              simHitLabel_;
00051 
00052   std::string MessageCategory_;
00053 
00054   // Related to production
00055 
00056   // Encoded SimTrack to encoded source vertex
00057   map<EncodedTruthId,EncodedTruthId> simTrack_sourceV; 
00058 
00059   // Encoded SimTrack to PSimHit
00060   multimap<EncodedTruthId,PSimHit> simTrack_hit;
00061 
00062   // Encoded SimTrack to TrackingParticle index
00063   map<EncodedTruthId,int> simTrack_tP;
00064 
00066   void simTrackHitsAssociator(
00067     std::auto_ptr<MixCollection<PSimHit> > &
00068   );
00069 
00071   void trackingParticleAssembler(
00072     auto_ptr<TrackingParticleCollection> &,
00073     auto_ptr<MixCollection<SimTrack> > &,
00074     Handle<edm::HepMCProduct> const &
00075   );
00076 
00078   void trackingVertexAssembler(
00079     auto_ptr<TrackingParticleCollection> &,
00080     auto_ptr<TrackingVertexCollection> &,
00081     auto_ptr<MixCollection<SimTrack> > &,  
00082     auto_ptr<MixCollection<SimVertex> > &,
00083     TrackingParticleRefProd &,
00084     TrackingVertexRefProd &,
00085     Handle<edm::HepMCProduct> const &
00086   );
00087 
00089   void mergeBremsstrahlung(
00090     auto_ptr<TrackingParticleCollection> &,
00091     auto_ptr<TrackingVertexCollection>   &,
00092     auto_ptr<TrackingParticleCollection> &,
00093     auto_ptr<TrackingVertexCollection>   &,
00094     TrackingParticleRefProd &,
00095     TrackingVertexRefProd &
00096   );
00097 
00098 
00099 
00101   bool isBremsstrahlungVertex(
00102     TrackingVertex const &,
00103     auto_ptr<TrackingParticleCollection> &
00104   );
00105 
00106 };
00107 
00108 #endif

Generated on Tue Jun 9 17:47:28 2009 for CMSSW by  doxygen 1.5.4