#include <DirectMuonNavigation.h>
Definition at line 22 of file DirectMuonNavigation.h.
DirectMuonNavigation::DirectMuonNavigation | ( | const edm::ESHandle< MuonDetLayerGeometry > & | muonLayout | ) |
Definition at line 21 of file DirectMuonNavigation.cc.
Referenced by clone().
: theMuonDetLayerGeometry(muonLayout), epsilon_(100.), theEndcapFlag(true), theBarrelFlag(true) { }
DirectMuonNavigation::DirectMuonNavigation | ( | const edm::ESHandle< MuonDetLayerGeometry > & | muonLayout, |
const edm::ParameterSet & | par | ||
) |
Definition at line 24 of file DirectMuonNavigation.cc.
: theMuonDetLayerGeometry(muonLayout), epsilon_(100.), theEndcapFlag(par.getParameter<bool>("Endcap")), theBarrelFlag(par.getParameter<bool>("Barrel")) { }
DirectMuonNavigation::~DirectMuonNavigation | ( | ) | [inline] |
Definition at line 36 of file DirectMuonNavigation.h.
{}
bool DirectMuonNavigation::checkCompatible | ( | const FreeTrajectoryState & | fts, |
const BarrelDetLayer * | dl | ||
) | const [private] |
Definition at line 206 of file DirectMuonNavigation.cc.
References epsilon_, FreeTrajectoryState::momentum(), outward(), PV3DBase< T, PVType, FrameType >::perp(), FreeTrajectoryState::position(), CosmicsPD_Skims::radius, submit::rm, slope, BarrelDetLayer::specificSurface(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by inOutBackward(), inOutBarrel(), inOutForward(), outInBackward(), outInBarrel(), and outInForward().
{ float z0 = fts.position().z(); float r0 = fts.position().perp(); float zm = fts.momentum().z(); float rm = fts.momentum().perp(); float slope = zm/rm; if (!outward(fts) ) slope = -slope; const BoundCylinder bc = dl->specificSurface(); float radius = bc.radius(); float length = bc.bounds().length()/2.; float z1 = slope*(radius - r0) + z0; return ( fabs(z1) <= fabs(length)+epsilon_ ); }
bool DirectMuonNavigation::checkCompatible | ( | const FreeTrajectoryState & | fts, |
const ForwardDetLayer * | dl | ||
) | const [private] |
Definition at line 223 of file DirectMuonNavigation.cc.
References epsilon_, FreeTrajectoryState::momentum(), outward(), PV3DBase< T, PVType, FrameType >::perp(), FreeTrajectoryState::position(), diffTwoXMLs::r1, submit::rm, slope, ForwardDetLayer::specificSurface(), PV3DBase< T, PVType, FrameType >::z(), and z.
{ float z0 = fts.position().z(); float r0 = fts.position().perp(); float zm = fts.momentum().z(); float rm = fts.momentum().perp(); float slope = rm/zm; if (!outward(fts) ) slope = -slope; const BoundDisk bd = dl->specificSurface(); float outRadius = bd.outerRadius(); float inRadius = bd.innerRadius(); float z = bd.position().z(); float r1 = slope*(z - z0) + r0; return (r1 >= inRadius-epsilon_ && r1 <= outRadius+epsilon_); }
DirectMuonNavigation* DirectMuonNavigation::clone | ( | void | ) | const [inline] |
Definition at line 31 of file DirectMuonNavigation.h.
References DirectMuonNavigation().
{ return new DirectMuonNavigation(*this); }
vector< const DetLayer * > DirectMuonNavigation::compatibleEndcapLayers | ( | const FreeTrajectoryState & | fts, |
PropagationDirection | timeDirection | ||
) | const |
Definition at line 83 of file DirectMuonNavigation.cc.
References alongMomentum, inOutForward(), FreeTrajectoryState::momentum(), oppositeToMomentum, outInBackward(), convertSQLitetoXML_cfg::output, and PV3DBase< T, PVType, FrameType >::z().
Referenced by CosmicMuonTrajectoryBuilder::build(), and CosmicMuonTrajectoryBuilder::trajectories().
{ float zm = fts.momentum().z(); vector<const DetLayer*> output; // collect all endcap layers on 2 sides outInBackward(fts,output); inOutForward(fts,output); // check direction FTS to get a correct order of DetLayers if ( ( zm > 0 && dir == oppositeToMomentum ) || ( zm < 0 && dir == alongMomentum ) ) std::reverse(output.begin(),output.end()); return output; }
vector< const DetLayer * > DirectMuonNavigation::compatibleLayers | ( | const FreeTrajectoryState & | fts, |
PropagationDirection | timeDirection | ||
) | const |
Definition at line 31 of file DirectMuonNavigation.cc.
References inOutBackward(), inOutBarrel(), inOutForward(), FreeTrajectoryState::momentum(), oppositeToMomentum, outInBackward(), outInBarrel(), outInForward(), convertSQLitetoXML_cfg::output, outward(), FreeTrajectoryState::position(), theBarrelFlag, theEndcapFlag, and PV3DBase< T, PVType, FrameType >::z().
Referenced by CosmicMuonTrajectoryBuilder::build(), GeometricSearchDet::compatibleDets(), DTChamberEfficiency::compatibleLayers(), and CosmicMuonTrajectoryBuilder::trajectories().
{ float z0 = fts.position().z(); float zm = fts.momentum().z(); bool inOut = outward(fts); vector<const DetLayer*> output; // check direction and position of FTS to get a correct order of DetLayers if (inOut) { if ((zm * z0) >= 0) { if (theBarrelFlag) inOutBarrel(fts,output); if (theEndcapFlag) { if ( z0 >= 0 ) inOutForward(fts,output); else inOutBackward(fts,output); } } else { if (theEndcapFlag) { if ( z0 >= 0 ) outInForward(fts,output); else outInBackward(fts,output); } if (theBarrelFlag) inOutBarrel(fts,output); } } else { if ((zm * z0) >= 0) { if (theBarrelFlag) outInBarrel(fts,output); if (theEndcapFlag) { if ( z0 >= 0 ) inOutForward(fts,output); else inOutBackward(fts,output); } } else { if (theEndcapFlag) { if ( z0 >= 0 ) outInForward(fts,output); else outInBackward(fts,output); } if (theBarrelFlag) outInBarrel(fts,output); } } if ( dir == oppositeToMomentum ) std::reverse(output.begin(),output.end()); return output; }
void DirectMuonNavigation::inOutBackward | ( | const FreeTrajectoryState & | , |
std::vector< const DetLayer * > & | |||
) | const [private] |
Definition at line 171 of file DirectMuonNavigation.cc.
References checkCompatible(), cont, and theMuonDetLayerGeometry.
Referenced by compatibleLayers().
{ bool cont = false; const vector<DetLayer*>& backward = theMuonDetLayerGeometry->allBackwardLayers(); for (vector<DetLayer*>::const_iterator iter_E = backward.begin(); iter_E != backward.end(); iter_E++){ if( cont ) output.push_back((*iter_E)); else if ( checkCompatible(fts,dynamic_cast<ForwardDetLayer*>(*iter_E))) { output.push_back((*iter_E)); cont = true; } } }
void DirectMuonNavigation::inOutBarrel | ( | const FreeTrajectoryState & | , |
std::vector< const DetLayer * > & | |||
) | const [private] |
Definition at line 102 of file DirectMuonNavigation.cc.
References Reference_intrackfit_cff::barrel, checkCompatible(), cont, and theMuonDetLayerGeometry.
Referenced by compatibleLayers().
{ bool cont = false; const vector<DetLayer*>& barrel = theMuonDetLayerGeometry->allBarrelLayers(); for (vector<DetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++){ if( cont ) output.push_back((*iter_B)); else if ( checkCompatible(fts,dynamic_cast<const BarrelDetLayer*>(*iter_B))) { output.push_back((*iter_B)); cont = true; } } }
void DirectMuonNavigation::inOutForward | ( | const FreeTrajectoryState & | , |
std::vector< const DetLayer * > & | |||
) | const [private] |
Definition at line 138 of file DirectMuonNavigation.cc.
References checkCompatible(), cont, and theMuonDetLayerGeometry.
Referenced by compatibleEndcapLayers(), and compatibleLayers().
{ const vector<DetLayer*>& forward = theMuonDetLayerGeometry->allForwardLayers(); bool cont = false; for (vector<DetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++){ if( cont ) output.push_back((*iter_E)); else if ( checkCompatible(fts,dynamic_cast<ForwardDetLayer*>(*iter_E))) { output.push_back((*iter_E)); cont = true; } } }
void DirectMuonNavigation::outInBackward | ( | const FreeTrajectoryState & | , |
std::vector< const DetLayer * > & | |||
) | const [private] |
Definition at line 185 of file DirectMuonNavigation.cc.
References checkCompatible(), cont, and theMuonDetLayerGeometry.
Referenced by compatibleEndcapLayers(), and compatibleLayers().
{ bool cont = false; const vector<DetLayer*>& backward = theMuonDetLayerGeometry->allBackwardLayers(); vector<DetLayer*>::const_iterator rbegin = backward.end(); rbegin--; vector<DetLayer*>::const_iterator rend = backward.begin(); rend--; for (vector<DetLayer*>::const_iterator iter_E = rbegin; iter_E != rend; iter_E--){ if( cont ) output.push_back((*iter_E)); else if ( checkCompatible(fts,dynamic_cast<ForwardDetLayer*>(*iter_E))) { output.push_back((*iter_E)); cont = true; } } }
void DirectMuonNavigation::outInBarrel | ( | const FreeTrajectoryState & | , |
std::vector< const DetLayer * > & | |||
) | const [private] |
Definition at line 118 of file DirectMuonNavigation.cc.
References Reference_intrackfit_cff::barrel, checkCompatible(), cont, and theMuonDetLayerGeometry.
Referenced by compatibleLayers().
{ // default barrel layers are in out, reverse order const vector<DetLayer*>& barrel = theMuonDetLayerGeometry->allBarrelLayers(); bool cont = false; vector<DetLayer*>::const_iterator rbegin = barrel.end(); rbegin--; vector<DetLayer*>::const_iterator rend = barrel.begin(); rend--; for (vector<DetLayer*>::const_iterator iter_B = rbegin; iter_B != rend; iter_B--){ if( cont ) output.push_back((*iter_B)); else if ( checkCompatible(fts,dynamic_cast<BarrelDetLayer*>(*iter_B))) { output.push_back((*iter_B)); cont = true; } } }
void DirectMuonNavigation::outInForward | ( | const FreeTrajectoryState & | , |
std::vector< const DetLayer * > & | |||
) | const [private] |
Definition at line 152 of file DirectMuonNavigation.cc.
References checkCompatible(), cont, and theMuonDetLayerGeometry.
Referenced by compatibleLayers().
{ // default forward layers are in out, reverse order bool cont = false; const vector<DetLayer*>& forward = theMuonDetLayerGeometry->allForwardLayers(); vector<DetLayer*>::const_iterator rbegin = forward.end(); rbegin--; vector<DetLayer*>::const_iterator rend = forward.begin(); rend--; for (vector<DetLayer*>::const_iterator iter_E = rbegin; iter_E != rend; iter_E--){ if( cont ) output.push_back((*iter_E)); else if ( checkCompatible(fts,dynamic_cast<ForwardDetLayer*>(*iter_E))) { output.push_back((*iter_E)); cont = true; } } }
bool DirectMuonNavigation::outward | ( | const FreeTrajectoryState & | fts | ) | const [private] |
Definition at line 244 of file DirectMuonNavigation.cc.
References FreeTrajectoryState::momentum(), FreeTrajectoryState::position(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
Referenced by checkCompatible(), and compatibleLayers().
float DirectMuonNavigation::epsilon_ [private] |
Definition at line 63 of file DirectMuonNavigation.h.
Referenced by checkCompatible().
bool DirectMuonNavigation::theBarrelFlag [private] |
Definition at line 65 of file DirectMuonNavigation.h.
Referenced by compatibleLayers().
bool DirectMuonNavigation::theEndcapFlag [private] |
Definition at line 64 of file DirectMuonNavigation.h.
Referenced by compatibleLayers().
Definition at line 62 of file DirectMuonNavigation.h.
Referenced by inOutBackward(), inOutBarrel(), inOutForward(), outInBackward(), outInBarrel(), and outInForward().