CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_8_patch3/src/DataFormats/ParticleFlowReco/interface/PFNuclearInteraction.h

Go to the documentation of this file.
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