00001 #ifndef MuonReco_MuonSegmentMatch_h 00002 #define MuonReco_MuonSegmentMatch_h 00003 00004 #include <cmath> 00005 00006 #include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h" 00007 #include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h" 00008 00009 namespace reco { 00010 class MuonSegmentMatch { 00011 public: 00013 static const unsigned int Arbitrated = 1<<8; // is arbitrated (multiple muons) 00014 static const unsigned int BestInChamberByDX = 1<<9; // best delta x in single muon chamber 00015 static const unsigned int BestInChamberByDR = 1<<10; // best delta r in single muon chamber 00016 static const unsigned int BestInChamberByDXSlope = 1<<11; // best delta dx/dz in single muon chamber 00017 static const unsigned int BestInChamberByDRSlope = 1<<12; // best delta dy/dz in single muon chamber 00018 static const unsigned int BestInStationByDX = 1<<13; // best delta x in single muon station 00019 static const unsigned int BestInStationByDR = 1<<14; // best delta r in single muon station 00020 static const unsigned int BestInStationByDXSlope = 1<<15; // best delta dx/dz in single muon station 00021 static const unsigned int BestInStationByDRSlope = 1<<16; // best delta dy/dz in single muon station 00022 static const unsigned int BelongsToTrackByDX = 1<<17; // best delta x of multiple muons 00023 static const unsigned int BelongsToTrackByDR = 1<<18; // best delta r of multiple muons 00024 static const unsigned int BelongsToTrackByDXSlope = 1<<19; // best delta dx/dz of multiple muons 00025 static const unsigned int BelongsToTrackByDRSlope = 1<<20; // best delta dy/dz of multiple muons 00026 static const unsigned int BelongsToTrackByME1aClean = 1<<21; // won ME1a segment sharing cleaning 00027 static const unsigned int BelongsToTrackByOvlClean = 1<<22; // won chamber overlap segment sharing cleaning 00028 static const unsigned int BelongsToTrackByClusClean = 1<<23; // won cluster sharing cleaning 00029 static const unsigned int BelongsToTrackByCleaning = 1<<24; // won any arbitration cleaning type, including defaults 00030 00031 float x; // X position of the matched segment 00032 float y; // Y position of the matched segment 00033 float xErr; // uncertainty in X 00034 float yErr; // uncertainty in Y 00035 float dXdZ; // dX/dZ of the matched segment 00036 float dYdZ; // dY/dZ of the matched segment 00037 float dXdZErr; // uncertainty in dX/dZ 00038 float dYdZErr; // uncertainty in dY/dZ 00039 unsigned int mask; // arbitration mask 00040 bool hasZed_; // contains local y information (only relevant for segments in DT) 00041 bool hasPhi_; // contains local x information (only relevant for segments in DT) 00042 00043 bool isMask( unsigned int flag = Arbitrated ) const { return (mask & flag) == flag; } 00044 void setMask( unsigned int flag ) { mask |= flag; } 00045 float t0; 00046 00047 DTRecSegment4DRef dtSegmentRef; 00048 CSCSegmentRef cscSegmentRef; 00049 00050 MuonSegmentMatch():x(0),y(0),xErr(0),yErr(0),dXdZ(0),dYdZ(0), 00051 dXdZErr(0),dYdZErr(0) {} 00052 00053 bool hasZed() const { return hasZed_; } 00054 bool hasPhi() const { return hasPhi_; } 00055 }; 00056 } 00057 00058 #endif