CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/DataFormats/MuonReco/interface/MuonSegmentMatch.h

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