![]() |
![]() |
00001 #ifndef MuonReco_MuonSegmentMatch_h 00002 #define MuonReco_MuonSegmentMatch_h 00003 00004 #include <cmath> 00005 00006 namespace reco { 00007 class MuonSegmentMatch { 00008 public: 00010 static const unsigned int Arbitrated = 1<<8; // is arbitrated (multiple muons) 00011 static const unsigned int BestInChamberByDX = 1<<9; // best delta x in single muon chamber 00012 static const unsigned int BestInChamberByDR = 1<<10; // best delta r in single muon chamber 00013 static const unsigned int BestInChamberByDXSlope = 1<<11; // best delta dx/dz in single muon chamber 00014 static const unsigned int BestInChamberByDRSlope = 1<<12; // best delta dy/dz in single muon chamber 00015 static const unsigned int BestInStationByDX = 1<<13; // best delta x in single muon station 00016 static const unsigned int BestInStationByDR = 1<<14; // best delta r in single muon station 00017 static const unsigned int BestInStationByDXSlope = 1<<15; // best delta dx/dz in single muon station 00018 static const unsigned int BestInStationByDRSlope = 1<<16; // best delta dy/dz in single muon station 00019 static const unsigned int BelongsToTrackByDX = 1<<17; // best delta x of multiple muons 00020 static const unsigned int BelongsToTrackByDR = 1<<18; // best delta r of multiple muons 00021 static const unsigned int BelongsToTrackByDXSlope = 1<<19; // best delta dx/dz of multiple muons 00022 static const unsigned int BelongsToTrackByDRSlope = 1<<20; // best delta dy/dz of multiple muons 00023 00024 float x; // X position of the matched segment 00025 float y; // Y position of the matched segment 00026 float xErr; // uncertainty in X 00027 float yErr; // uncertainty in Y 00028 float dXdZ; // dX/dZ of the matched segment 00029 float dYdZ; // dY/dZ of the matched segment 00030 float dXdZErr; // uncertainty in dX/dZ 00031 float dYdZErr; // uncertainty in dY/dZ 00032 unsigned int mask; // arbitration mask 00033 00034 bool isMask( unsigned int flag = Arbitrated ) const { return mask & flag; } 00035 void setMask( unsigned int flag ) { if(!(mask & flag)) mask += flag; } 00036 float t0; 00037 MuonSegmentMatch():x(0),y(0),xErr(0),yErr(0),dXdZ(0),dYdZ(0), 00038 dXdZErr(0),dYdZErr(0) {} 00039 00040 bool hasZed() const { return ! (fabs(y)<1E-6&&fabs(yErr)<1E-6); } 00041 bool hasPhi() const { return ! (fabs(x)<1E-6&&fabs(xErr)<1E-6); } 00042 }; 00043 } 00044 00045 #endif