00001 #ifndef DATAFORMAT_NUCLEARINTERACTION_ 00002 #define DATAFORMAT_NUCLEARINTERACTION_ 00003 00004 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00005 #include "DataFormats/TrackReco/interface/Track.h" 00006 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" 00007 #include "DataFormats/VertexReco/interface/Vertex.h" 00008 00009 namespace reco { 00010 00011 class NuclearInteraction { 00012 00013 public : 00014 00015 typedef edm::RefVector<TrajectorySeedCollection> TrajectorySeedRefVector; 00016 typedef edm::Ref<TrajectorySeedCollection> TrajectorySeedRef; 00017 typedef reco::Vertex::trackRef_iterator trackRef_iterator; 00018 typedef TrajectorySeedRefVector::iterator seedRef_iterator; 00019 00020 NuclearInteraction() {} 00021 00022 NuclearInteraction( const TrajectorySeedRefVector& tseeds, const reco::Vertex& vtx, double lkh) { 00023 seeds_ = tseeds; 00024 vertex_ = vtx; 00025 likelihood_ = lkh; 00026 } 00027 00029 const edm::RefToBase<reco::Track>& primaryTrack() const { return *(vertex_.tracks_begin()); } 00030 00032 int secondaryTracksSize() const { return vertex_.tracksSize()-1; } 00033 00035 trackRef_iterator secondaryTracks_begin() const { return vertex_.tracks_begin()+1; } 00036 00038 trackRef_iterator secondaryTracks_end() const { return vertex_.tracks_end(); } 00039 00041 int seedsSize() const { return seeds_.size(); } 00042 00044 const TrajectorySeedRefVector& seeds() { return seeds_; } 00045 00047 seedRef_iterator seeds_begin() const { return seeds_.begin(); } 00048 00050 seedRef_iterator seeds_end() const { return seeds_.end(); } 00051 00053 const reco::Vertex& vertex() const { return vertex_; } 00054 00056 double likelihood() const { return likelihood_; } 00057 00058 private : 00059 00061 //reco::Track refittedPrimaryTrack_; // to be included in a futur version 00062 00064 TrajectorySeedRefVector seeds_; 00065 00067 reco::Vertex vertex_; 00068 00070 double likelihood_; 00071 }; 00072 } 00073 #endif