00001 #ifndef _PFNuclarInteraction_H 00002 #define _PFNuclarInteraction_H 00003 00004 // class which contains the secondary PFRecTracks 00005 // this dataformat will be used to create PFBlockElementNuclTrack 00006 00007 // \author vincent roberfroid 00008 00009 #include "DataFormats/VertexReco/interface/NuclearInteraction.h" 00010 #include "DataFormats/VertexReco/interface/NuclearInteractionFwd.h" 00011 #include "DataFormats/ParticleFlowReco/interface/PFRecTrack.h" 00012 #include "DataFormats/ParticleFlowReco/interface/PFRecTrackFwd.h" 00013 00014 namespace reco { 00015 class PFNuclearInteraction { 00016 00017 public : 00018 typedef NuclearInteraction::trackRef_iterator trackRef_iterator; 00019 typedef PFRecTrackRefVector::const_iterator pfTrackref_iterator; 00020 00021 public : 00022 00023 PFNuclearInteraction() {} 00024 PFNuclearInteraction( const NuclearInteractionRef& nuclref, const PFRecTrackRefVector& pfSeconds) : nuclInterRef_(nuclref), pfSecTracks_(pfSeconds) {} 00025 00027 const edm::RefToBase<reco::Track>& primaryTrack() const { return nuclInterRef_->primaryTrack(); } 00028 00030 trackRef_iterator secondaryTracks_begin() const { return nuclInterRef_->secondaryTracks_begin(); } 00031 00033 trackRef_iterator secondaryTracks_end() const { return nuclInterRef_->secondaryTracks_end(); } 00034 00036 pfTrackref_iterator secPFRecTracks_begin() const { return pfSecTracks_.begin(); } 00037 00039 pfTrackref_iterator secPFRecTracks_end() const { return pfSecTracks_.end(); } 00040 00042 double likelihood() const { return nuclInterRef_->likelihood(); } 00043 00045 const NuclearInteractionRef& nuclInterRef() const { return nuclInterRef_; } 00046 00047 int secondaryTracksSize() const { return nuclInterRef_->secondaryTracksSize(); } 00048 private : 00049 // Reference to the initial NuclearInteraction 00050 NuclearInteractionRef nuclInterRef_; 00051 00052 // Collection of the secondary PFRecTracks 00053 PFRecTrackRefVector pfSecTracks_; 00054 00055 }; 00056 00058 typedef std::vector<PFNuclearInteraction> PFNuclearInteractionCollection; 00060 typedef edm::Ref<PFNuclearInteractionCollection> PFNuclearInteractionRef; 00062 typedef edm::RefVector<PFNuclearInteractionCollection> PFNuclearInteractionRefVector; 00063 } 00064 #endif