16 using namespace L1TMuon;
17 using namespace L1TwinMux;
21 : _resol(res), _muonGeom(muonGeom),
22 _bx(-3), _radialAngle(4096), _bendingAngle(-520), _bendingResol(520),
23 _dtHI(0), _dtHO(0), _rpcIn(0), _rpcOut(0)
31 switch ( qualityCode ) {
36 <<
"This module can combine only HI to HO (quality2/3), provided : "
37 << qualityCode << std::endl;
47 <<
"DT primitive with quality HI already provided"
58 <<
"DT primitive with quality HO already provided"
83 std::vector<localResult> localResults;
119 localResults.push_back( local );
134 double weightSum = 0;
138 std::vector<localResult>::const_iterator it = localResults.begin();
139 std::vector<localResult>::const_iterator itend = localResults.end();
141 for ( ; it != itend; ++it ) {
146 weightSum += 1.0/(( it->bendingResol)*(it->bendingResol));
147 _bendingAngle += double(it->bendingAngle)/((it->bendingResol) * (it->bendingResol));
198 point2.
x(), point2.
z() )
205 point2.
x(), point2.
z() )
211 point1.
z(), point2.
z() );
249 point2.
x(), point2.
z() )
256 point2.
x(), point2.
z() )
262 point1.
z(), point2.
z() );
277 int radialAngle2 = 0;
282 if ( sector == 1) radialAngle = int( phiGlobal*4096 );
284 if ( phiGlobal >= 0) radialAngle = int( (phiGlobal-(sector-1)*
Geom::pi()/6)*4096 );
285 else radialAngle = int( (phiGlobal+(13-sector)*
Geom::pi()/6)*4096 );
319 !( sector==0 || sector==3 || sector==4 || sector==7 || sector==8 || sector==11 ) ) )
const L1TMuon::TriggerPrimitive * _dtHO
const DTData getDTData() 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
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
void combine()
do combine the primitives
void addDtHO(const L1TMuon::TriggerPrimitive &prim)
const double getCMSGlobalPhi() const
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)
const GlobalPoint getCMSGlobalPoint() const
float phiBCombinedResol(const float &resol_xDt, const float &resol_xRpc, const float &zDt, const float &zRpc)
FIXME END.
const L1TMuon::TriggerPrimitive * _rpcOut
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