1 #ifndef L1Trigger_L1IntegratedMuonTrigger_PrimitiveCombiner_h_ 2 #define L1Trigger_L1IntegratedMuonTrigger_PrimitiveCombiner_h_ 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;
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);
95 else if (
_rpcOut ) qualityCode = 4;
96 else if (
_rpcIn ) qualityCode = 4;
100 else if (
_rpcOut ) qualityCode = 3;
101 else if (
_rpcIn ) qualityCode = 3;
102 else qualityCode = 1;
105 else if (
_rpcOut ) qualityCode = -1;
106 else if (
_rpcIn ) qualityCode = -1;
116 else qualityCode = 11;
117 }
else if (
_dtHO ) {
119 else if (
_rpcOut ) qualityCode = 8;
120 else if (
_rpcIn ) qualityCode = 6;
121 else qualityCode = 4;
122 }
else if (
_dtHI ) {
124 else if (
_rpcOut ) qualityCode = 7;
125 else if (
_rpcIn ) qualityCode = 5;
126 else qualityCode = 3;
129 else if (
_rpcOut ) qualityCode = 1;
130 else if (
_rpcIn ) qualityCode = 0;
142 results() : radialAngle(0), bendingAngle(0), bendingResol(0) {};
const L1TMuon::TriggerPrimitive * _dtHO
int getUncorrelatedQuality7() const
FIXME END.
int getUncorrelatedQuality16() const
a struct useful for resulution info sharing
const L1TMuon::TriggerPrimitive * _rpcIn
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)
void combine()
do combine the primitives
void addDtHO(const L1TMuon::TriggerPrimitive &prim)
results combineRpcRpc(const L1TMuon::TriggerPrimitive *rpc1, const L1TMuon::TriggerPrimitive *rpc2)
Calculates new phiBending, check how to use weights.
const L1TMuon::TriggerPrimitive * _dtHI
float phiBCombined(const float &xDt, const float &zDt, const float &xRpc, const float &zRpc)
FIXME : Calculates new phiBending, check how to use.
a struct for internal usage: store results
results combineDt(const L1TMuon::TriggerPrimitive *dt, const L1TMuon::TriggerPrimitive *rpc)
Calculates new phiBending, check how to use weights.
results dummyCombineDt(const L1TMuon::TriggerPrimitive *dt)
int radialAngleFromGlobalPhi(const L1TMuon::TriggerPrimitive *rpc)
void addRpcOut(const L1TMuon::TriggerPrimitive &prim)
void addRpcIn(const L1TMuon::TriggerPrimitive &prim)
void addDtHI(const L1TMuon::TriggerPrimitive &prim)
PrimitiveCombiner(const resolutions &res, edm::ESHandle< DTGeometry > &muonGeom)
float phiBCombinedResol(const float &resol_xDt, const float &resol_xRpc, const float &zDt, const float &zRpc)
FIXME END.
const L1TMuon::TriggerPrimitive * _rpcOut
int bx() const
output result variables
void addDt(const L1TMuon::TriggerPrimitive &prim)
feed the combiner with the available primitives
results combineDtRpc(const L1TMuon::TriggerPrimitive *dt, const L1TMuon::TriggerPrimitive *rpc)
Calculates new phiBending, check how to use weights.
edm::ESHandle< DTGeometry > _muonGeom