00001 //-------------------------------------------------------------------------------------------------- 00002 // $Id: ConversionTrack.h,v 1.6 2010/11/22 01:54:46 bendavid Exp $ 00003 // 00004 // ConversionTrack 00005 // 00006 // Wrapper class holding a pointer to reco::Track plus some various arbitration flags used to 00007 // keep track of overlaps in photon conversion reconstruction. This class is intended to be used 00008 // to build mixed collections of Track and GsfTracks from different sources and reconstruction 00009 // algorithms to be used for inclusive conversion reconstruction. 00010 // 00011 // Authors: J.Bendavid 00012 //-------------------------------------------------------------------------------------------------- 00013 00014 #ifndef EgammaReco_ConversionTrack_h 00015 #define EgammaReco_ConversionTrack_h 00016 00017 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00018 00019 class Trajectory; 00020 namespace reco 00021 { 00022 class ConversionTrack 00023 { 00024 public: 00025 ConversionTrack() : isTrackerOnly_(false), isArbitratedEcalSeeded_(false), isArbitratedMerged_(false), 00026 isArbitratedMergedEcalGeneral_(false) {} 00027 ConversionTrack(const TrackBaseRef &trk) : 00028 track_(trk), isTrackerOnly_(false), isArbitratedEcalSeeded_(false), isArbitratedMerged_(false), 00029 isArbitratedMergedEcalGeneral_(false) {} 00030 virtual ~ConversionTrack() {} 00031 00032 const reco::Track *track() const { return track_.get(); } 00033 const TrackBaseRef &trackRef() const { return track_; } 00034 const edm::Ref<std::vector<Trajectory> > &trajRef() const { return traj_; } 00035 void setTrajRef(edm::Ref<std::vector<Trajectory> > tr) { traj_ = tr; } 00036 void setIsTrackerOnly(bool b) { isTrackerOnly_ = b; } 00037 void setIsArbitratedEcalSeeded(bool b) { isArbitratedEcalSeeded_ = b; } 00038 void setIsArbitratedMerged(bool b) { isArbitratedMerged_ = b; } 00039 void setIsArbitratedMergedEcalGeneral(bool b) { isArbitratedMergedEcalGeneral_ = b; } 00040 bool isTrackerOnly() const { return isTrackerOnly_;} 00041 bool isArbitratedEcalSeeded() const { return isArbitratedEcalSeeded_;} 00042 bool isArbitratedMerged() const { return isArbitratedMerged_;} 00043 bool isArbitratedMergedEcalGeneral() const { return isArbitratedMergedEcalGeneral_;} 00044 00045 00046 00047 00048 private: 00049 TrackBaseRef track_; //ptr to track 00050 edm::Ref<std::vector<Trajectory> > traj_; //reference to a trajectory 00051 bool isTrackerOnly_; //from general tracks collection 00052 bool isArbitratedEcalSeeded_; //from in out or out-in ecal-seeded collections (arbitrated) 00053 bool isArbitratedMerged_; //is arbitrated among all input collections 00054 bool isArbitratedMergedEcalGeneral_; //is arbitrated among ecal-seeded and generalTracks 00055 }; 00056 } 00057 #endif