Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:04:07

0001 //--------------------------------------------------------------------------------------------------
0002 //
0003 // ConversionTrack
0004 //
0005 // Wrapper class holding a pointer to reco::Track plus some various arbitration flags used to
0006 // keep track of overlaps in photon conversion reconstruction.  This class is intended to be used
0007 // to build mixed collections of Track and GsfTracks from different sources and reconstruction
0008 // algorithms to be used for inclusive conversion reconstruction.
0009 //
0010 // Authors: J.Bendavid
0011 //--------------------------------------------------------------------------------------------------
0012 
0013 #ifndef EgammaReco_ConversionTrack_h
0014 #define EgammaReco_ConversionTrack_h
0015 
0016 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0017 class Trajectory;
0018 namespace reco {
0019   class ConversionTrack {
0020   public:
0021     ConversionTrack()
0022         : isTrackerOnly_(false),
0023           isGsfTrackOpen_(false),
0024           isArbitratedEcalSeeded_(false),
0025           isArbitratedMerged_(false),
0026           isArbitratedMergedEcalGeneral_(false) {}
0027     ConversionTrack(const TrackBaseRef &trk)
0028         : track_(trk),
0029           isTrackerOnly_(false),
0030           isGsfTrackOpen_(false),
0031           isArbitratedEcalSeeded_(false),
0032           isArbitratedMerged_(false),
0033           isArbitratedMergedEcalGeneral_(false) {}
0034     virtual ~ConversionTrack() {}
0035 
0036     const reco::Track *track() const { return track_.get(); }
0037     const TrackBaseRef &trackRef() const { return track_; }
0038     const edm::Ref<std::vector<Trajectory> > &trajRef() const { return traj_; }
0039     void setTrajRef(edm::Ref<std::vector<Trajectory> > tr) { traj_ = tr; }
0040     void setIsTrackerOnly(bool b) { isTrackerOnly_ = b; }
0041     void setIsGsfTrackOpen(bool b) { isGsfTrackOpen_ = b; }
0042     void setIsArbitratedEcalSeeded(bool b) { isArbitratedEcalSeeded_ = b; }
0043     void setIsArbitratedMerged(bool b) { isArbitratedMerged_ = b; }
0044     void setIsArbitratedMergedEcalGeneral(bool b) { isArbitratedMergedEcalGeneral_ = b; }
0045     bool isTrackerOnly() const { return isTrackerOnly_; }
0046     bool isArbitratedEcalSeeded() const { return isArbitratedEcalSeeded_; }
0047     bool isArbitratedMerged() const { return isArbitratedMerged_; }
0048     bool isArbitratedMergedEcalGeneral() const { return isArbitratedMergedEcalGeneral_; }
0049     bool isGsfTrackOpen() const { return isGsfTrackOpen_; }
0050 
0051   private:
0052     TrackBaseRef track_;                       //ptr to track
0053     edm::Ref<std::vector<Trajectory> > traj_;  //reference to a trajectory
0054     bool isTrackerOnly_;                       //from general tracks collection
0055     bool isGsfTrackOpen_;                      //from gsf track open sequence for low pt electrons for B
0056     bool isArbitratedEcalSeeded_;              //from in out or out-in ecal-seeded collections (arbitrated)
0057     bool isArbitratedMerged_;                  //is arbitrated among all input collections
0058     bool isArbitratedMergedEcalGeneral_;       //is arbitrated among ecal-seeded and generalTracks
0059   };
0060 }  // namespace reco
0061 #endif