1 #ifndef L1Trigger_L1IntegratedMuonTrigger_PrimitiveCombiner_h_
2 #define L1Trigger_L1IntegratedMuonTrigger_PrimitiveCombiner_h_
19 using namespace L1TMuon;
34 resolutions(
const double & xDtResol,
const double & xRpcResol,
35 const double & phibDtCorrResol,
const double & phibDtUnCorrResol )
36 : xDt( xDtResol ), xRpc( xRpcResol ),
37 phibDtCorr( phibDtCorrResol ), phibDtUnCorr( phibDtUnCorrResol ) {};
54 inline int bx()
const {
return _bx;};
61 int ret = _dtHI ? 1 : 0;
63 ret += _rpcIn ? 2 : 0;
64 ret += _rpcOut ? 2 : 0;
70 const float & xRpc,
const float & zRpc )
72 return (xRpc - xDt) / (zRpc - zDt);
78 const float & resol_xRpc,
83 return std::sqrt( resol_xRpc*resol_xRpc + resol_xDt*resol_xDt )/std::fabs(zDt-zRpc);
90 if ( _dtHI && _dtHO ) {
91 if ( _rpcIn && _rpcOut ) qualityCode = 5;
94 if ( _rpcIn && _rpcOut ) qualityCode = 4;
95 else if ( _rpcOut ) qualityCode = 4;
96 else if ( _rpcIn ) qualityCode = 4;
99 if ( _rpcIn && _rpcOut ) qualityCode = 3;
100 else if ( _rpcOut ) qualityCode = 3;
101 else if ( _rpcIn ) qualityCode = 3;
102 else qualityCode = 1;
104 if ( _rpcIn && _rpcOut ) qualityCode = 0;
105 else if ( _rpcOut ) qualityCode = -1;
106 else if ( _rpcIn ) qualityCode = -1;
114 if ( _dtHI && _dtHO ) {
115 if ( _rpcIn && _rpcOut ) qualityCode = 12;
116 else qualityCode = 11;
117 }
else if ( _dtHO ) {
118 if ( _rpcIn && _rpcOut ) qualityCode = 10;
119 else if ( _rpcOut ) qualityCode = 8;
120 else if ( _rpcIn ) qualityCode = 6;
121 else qualityCode = 4;
122 }
else if ( _dtHI ) {
123 if ( _rpcIn && _rpcOut ) qualityCode = 9;
124 else if ( _rpcOut ) qualityCode = 7;
125 else if ( _rpcIn ) qualityCode = 5;
126 else qualityCode = 3;
128 if ( _rpcIn && _rpcOut ) qualityCode = 2;
129 else if ( _rpcOut ) qualityCode = 1;
130 else if ( _rpcIn ) qualityCode = 0;
142 results() : radialAngle(0), bendingAngle(0), bendingResol(0) {};
tuple ret
prodAgent to be discontinued
int getUncorrelatedQuality7() const
FIXME END.
int getUncorrelatedQuality16() const
const TriggerPrimitive * _rpcOut
a struct useful for resulution info sharing
bool isValid() const
valid if we have at least: 1 rpc; 1 dt + 1 any
resolutions(const double &xDtResol, const double &xRpcResol, const double &phibDtCorrResol, const double &phibDtUnCorrResol)
const TriggerPrimitive * _dtHI
float phiBCombined(const float &xDt, const float &zDt, const float &xRpc, const float &zRpc)
FIXME : Calculates new phiBending, check how to use.
const TriggerPrimitive * _rpcIn
a struct for internal usage: store results
static type combine(const A &_1, const B &_2)
float phiBCombinedResol(const float &resol_xDt, const float &resol_xRpc, const float &zDt, const float &zRpc)
FIXME END.
int bx() const
output result variables
const TriggerPrimitive * _dtHO
edm::ESHandle< DTGeometry > _muonGeom