#include <RecoMuon/MeasurementDet/interface/MuonDetLayerMeasurements.h>
Public Member Functions | |
MeasurementContainer | fastMeasurements (const DetLayer *layer, const TrajectoryStateOnSurface &theStateOnDet, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const |
faster version in case the TrajectoryState on the surface of the GeomDet is already available | |
MeasurementContainer | fastMeasurements (const DetLayer *layer, const TrajectoryStateOnSurface &theStateOnDet, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, const edm::Event &iEvent) const |
faster version in case the TrajectoryState on the surface of the GeomDet is already available | |
std::vector < TrajectoryMeasurementGroup > | groupedMeasurements (const DetLayer *layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const |
std::vector < TrajectoryMeasurementGroup > | groupedMeasurements (const DetLayer *layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, const edm::Event &iEvent) const |
MeasurementContainer | measurements (const DetLayer *layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const |
returns TMeasurements in a DetLayer compatible with the TSOS. | |
MeasurementContainer | measurements (const DetLayer *layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, const edm::Event &iEvent) const |
returns TMeasurements in a DetLayer compatible with the TSOS. | |
MeasurementContainer | measurements (const DetLayer *layer, const GeomDet *det, const TrajectoryStateOnSurface &stateOnDet, const MeasurementEstimator &est, const edm::Event &iEvent) const |
MuonDetLayerMeasurements (edm::InputTag dtlabel, edm::InputTag csclabel, edm::InputTag rpclabel, bool enableDT=true, bool enableCSC=true, bool enableRPC=true) | |
MuonTransientTrackingRecHit::MuonRecHitContainer | recHits (const DetLayer *layer) const |
returns the rechits which are onto the layer | |
MuonTransientTrackingRecHit::MuonRecHitContainer | recHits (const DetLayer *layer, const edm::Event &iEvent) const |
returns the rechits which are onto the layer | |
void | setEvent (const edm::Event &) |
set event | |
virtual | ~MuonDetLayerMeasurements () |
Private Member Functions | |
void | checkEvent () const |
check that the event is set, and throw otherwise | |
MuonTransientTrackingRecHit::MuonRecHitContainer | recHits (const GeomDet *, const edm::Event &iEvent) const |
obtain TrackingRecHits from a DetLayer | |
Private Attributes | |
bool | enableCSCMeasurement |
bool | enableDTMeasurement |
bool | enableRPCMeasurement |
edm::InputTag | theCSCRecHitLabel |
edm::InputTag | theDTRecHitLabel |
const edm::Event * | theEvent |
edm::InputTag | theRPCRecHitLabel |
Definition at line 35 of file MuonDetLayerMeasurements.h.
MuonDetLayerMeasurements::MuonDetLayerMeasurements | ( | edm::InputTag | dtlabel, | |
edm::InputTag | csclabel, | |||
edm::InputTag | rpclabel, | |||
bool | enableDT = true , |
|||
bool | enableCSC = true , |
|||
bool | enableRPC = true | |||
) |
Definition at line 26 of file MuonDetLayerMeasurements.cc.
00029 : 00030 theDTRecHitLabel(dtlabel), 00031 theCSCRecHitLabel(csclabel), 00032 theRPCRecHitLabel(rpclabel), 00033 enableDTMeasurement(enableDT), 00034 enableCSCMeasurement(enableCSC), 00035 enableRPCMeasurement(enableRPC), 00036 theEvent(0){}
MuonDetLayerMeasurements::~MuonDetLayerMeasurements | ( | ) | [virtual] |
void MuonDetLayerMeasurements::checkEvent | ( | ) | const [private] |
check that the event is set, and throw otherwise
Definition at line 263 of file MuonDetLayerMeasurements.cc.
References Exception, and theEvent.
Referenced by fastMeasurements(), groupedMeasurements(), and measurements().
00263 { 00264 if(!theEvent) 00265 throw cms::Exception("MuonDetLayerMeasurements") << "The event has not been set"; 00266 }
MeasurementContainer MuonDetLayerMeasurements::fastMeasurements | ( | const DetLayer * | layer, | |
const TrajectoryStateOnSurface & | theStateOnDet, | |||
const TrajectoryStateOnSurface & | startingState, | |||
const Propagator & | prop, | |||
const MeasurementEstimator & | est | |||
) | const |
faster version in case the TrajectoryState on the surface of the GeomDet is already available
fastMeasurements method if already got the Event
Definition at line 205 of file MuonDetLayerMeasurements.cc.
References checkEvent(), fastMeasurements(), and theEvent.
00209 { 00210 checkEvent(); 00211 return fastMeasurements(layer, theStateOnDet, startingState, prop, est, *theEvent); 00212 }
MeasurementContainer MuonDetLayerMeasurements::fastMeasurements | ( | const DetLayer * | layer, | |
const TrajectoryStateOnSurface & | theStateOnDet, | |||
const TrajectoryStateOnSurface & | startingState, | |||
const Propagator & | prop, | |||
const MeasurementEstimator & | est, | |||
const edm::Event & | iEvent | |||
) | const |
faster version in case the TrajectoryState on the surface of the GeomDet is already available
Definition at line 179 of file MuonDetLayerMeasurements.cc.
References MeasurementEstimator::estimate(), recHits(), HLT_VtxMuL3::result, and python::multivaluedict::sort().
Referenced by fastMeasurements().
00184 { 00185 MeasurementContainer result; 00186 MuonRecHitContainer rhs = recHits(layer, iEvent); 00187 for (MuonRecHitContainer::const_iterator irh = rhs.begin(); irh!=rhs.end(); irh++) { 00188 MeasurementEstimator::HitReturnType estimate = est.estimate(theStateOnDet, (**irh)); 00189 if (estimate.first) 00190 { 00191 result.push_back(TrajectoryMeasurement(theStateOnDet,(*irh).get(), 00192 estimate.second,layer)); 00193 } 00194 } 00195 00196 if (!result.empty()) { 00197 sort( result.begin(), result.end(), TrajMeasLessEstim()); 00198 } 00199 00200 return result; 00201 }
std::vector< TrajectoryMeasurementGroup > MuonDetLayerMeasurements::groupedMeasurements | ( | const DetLayer * | layer, | |
const TrajectoryStateOnSurface & | startingState, | |||
const Propagator & | prop, | |||
const MeasurementEstimator & | est | |||
) | const |
Definition at line 216 of file MuonDetLayerMeasurements.cc.
References checkEvent(), groupedMeasurements(), and theEvent.
00219 { 00220 checkEvent(); 00221 return groupedMeasurements(layer, startingState, prop, est, *theEvent); 00222 }
std::vector< TrajectoryMeasurementGroup > MuonDetLayerMeasurements::groupedMeasurements | ( | const DetLayer * | layer, | |
const TrajectoryStateOnSurface & | startingState, | |||
const Propagator & | prop, | |||
const MeasurementEstimator & | est, | |||
const edm::Event & | iEvent | |||
) | const |
Definition at line 226 of file MuonDetLayerMeasurements.cc.
References GeometricSearchDet::groupedCompatibleDets(), measurements(), HLT_VtxMuL3::result, and python::multivaluedict::sort().
Referenced by StandAloneMuonFilter::findBestMeasurements(), CosmicMuonTrajectoryBuilder::findBestMeasurements(), and groupedMeasurements().
00230 { 00231 00232 std::vector<TrajectoryMeasurementGroup> result; 00233 // if we want to use the concept of InvalidRecHits, 00234 // we can reuse LayerMeasurements from TrackingTools/MeasurementDet 00235 std::vector<DetGroup> groups(layer->groupedCompatibleDets(startingState, prop, est)); 00236 00237 for (std::vector<DetGroup>::const_iterator grp=groups.begin(); grp!=groups.end(); ++grp) { 00238 00239 std::vector<TrajectoryMeasurement> groupMeasurements; 00240 for (DetGroup::const_iterator detAndStateItr=grp->begin(); 00241 detAndStateItr !=grp->end(); ++detAndStateItr) { 00242 00243 std::vector<TrajectoryMeasurement> detMeasurements 00244 = measurements(layer, detAndStateItr->det(), detAndStateItr->trajectoryState(), est, iEvent); 00245 groupMeasurements.insert(groupMeasurements.end(), detMeasurements.begin(), detMeasurements.end()); 00246 } 00247 00248 if (!groupMeasurements.empty()) 00249 std::sort( groupMeasurements.begin(), groupMeasurements.end(), TrajMeasLessEstim()); 00250 00251 result.push_back(TrajectoryMeasurementGroup(groupMeasurements, *grp)); 00252 } 00253 00254 return result; 00255 }
MeasurementContainer MuonDetLayerMeasurements::measurements | ( | const DetLayer * | layer, | |
const TrajectoryStateOnSurface & | startingState, | |||
const Propagator & | prop, | |||
const MeasurementEstimator & | est | |||
) | const |
returns TMeasurements in a DetLayer compatible with the TSOS.
measurements method if already got the Event
Definition at line 113 of file MuonDetLayerMeasurements.cc.
References checkEvent(), measurements(), and theEvent.
00116 { 00117 checkEvent(); 00118 return measurements(layer, startingState, prop, est, *theEvent); 00119 }
MeasurementContainer MuonDetLayerMeasurements::measurements | ( | const DetLayer * | layer, | |
const TrajectoryStateOnSurface & | startingState, | |||
const Propagator & | prop, | |||
const MeasurementEstimator & | est, | |||
const edm::Event & | iEvent | |||
) | const |
returns TMeasurements in a DetLayer compatible with the TSOS.
Definition at line 123 of file MuonDetLayerMeasurements.cc.
References GeometricSearchDet::compatibleDets(), lat::endl(), LogTrace, measurements(), HLT_VtxMuL3::result, and python::multivaluedict::sort().
00127 { 00128 00129 MeasurementContainer result; 00130 00131 std::vector<DetWithState> dss = layer->compatibleDets(startingState, prop, est); 00132 LogTrace("RecoMuon")<<"compatibleDets: "<<dss.size()<<std::endl; 00133 00134 for(std::vector<DetWithState>::const_iterator detWithStateItr = dss.begin(); 00135 detWithStateItr != dss.end(); ++detWithStateItr){ 00136 00137 MeasurementContainer detMeasurements 00138 = measurements(layer, detWithStateItr->first, 00139 detWithStateItr->second, est, iEvent); 00140 result.insert(result.end(), detMeasurements.begin(), detMeasurements.end()); 00141 } 00142 00143 if (!result.empty()) sort( result.begin(), result.end(), TrajMeasLessEstim()); 00144 00145 return result; 00146 }
MeasurementContainer MuonDetLayerMeasurements::measurements | ( | const DetLayer * | layer, | |
const GeomDet * | det, | |||
const TrajectoryStateOnSurface & | stateOnDet, | |||
const MeasurementEstimator & | est, | |||
const edm::Event & | iEvent | |||
) | const |
Definition at line 150 of file MuonDetLayerMeasurements.cc.
References lat::endl(), MeasurementEstimator::estimate(), LogTrace, recHits(), HLT_VtxMuL3::result, and python::multivaluedict::sort().
Referenced by DTChamberEfficiency::analyze(), StandAloneMuonFilter::findBestMeasurements(), CosmicMuonTrajectoryBuilder::findBestMeasurements(), groupedMeasurements(), and measurements().
00154 { 00155 MeasurementContainer result; 00156 00157 // Get the Segments which relies on the GeomDet given by compatibleDets 00158 MuonRecHitContainer muonRecHits = recHits(det, iEvent); 00159 00160 // Create the Trajectory Measurement 00161 for(MuonRecHitContainer::const_iterator rechit = muonRecHits.begin(); 00162 rechit != muonRecHits.end(); ++rechit) { 00163 00164 MeasurementEstimator::HitReturnType estimate = est.estimate(stateOnDet,**rechit); 00165 LogTrace("RecoMuon")<<"Dimension: "<<(*rechit)->dimension() 00166 <<" Chi2: "<<estimate.second<<std::endl; 00167 result.push_back(TrajectoryMeasurement(stateOnDet, rechit->get(), 00168 estimate.second,layer)); 00169 } 00170 00171 if (!result.empty()) sort( result.begin(), result.end(), TrajMeasLessEstim()); 00172 00173 return result; 00174 }
MuonTransientTrackingRecHit::MuonRecHitContainer MuonDetLayerMeasurements::recHits | ( | const GeomDet * | geomDet, | |
const edm::Event & | iEvent | |||
) | const [private] |
obtain TrackingRecHits from a DetLayer
Definition at line 40 of file MuonDetLayerMeasurements.cc.
References MuonSubdetId::CSC, cscSegments_cfi::cscSegments, MuonSubdetId::DT, enableCSCMeasurement, enableDTMeasurement, enableRPCMeasurement, lat::endl(), GeomDet::geographicalId(), edm::Event::getByLabel(), LogTrace, range, DetId::rawId(), MuonSubdetId::RPC, python::rpcRecHits_cfi::rpcRecHits, MuonTransientTrackingRecHit::specificBuild(), DetId::subdetId(), theCSCRecHitLabel, theDTRecHitLabel, and theRPCRecHitLabel.
00041 { 00042 00043 MuonRecHitContainer muonRecHits; 00044 00045 DetId geoId = geomDet->geographicalId(); 00046 00047 if (geoId.subdetId() == MuonSubdetId::DT ) { 00048 if(!enableDTMeasurement) return muonRecHits; 00049 00050 // Get the DT-Segment collection from the Event 00051 edm::Handle<DTRecSegment4DCollection> dtRecHits; 00052 iEvent.getByLabel(theDTRecHitLabel, dtRecHits); 00053 00054 // Create the ChamberId 00055 DTChamberId chamberId(geoId.rawId()); 00056 LogTrace("Muon|RecoMuon|MuonDetLayerMeasurements") << "(DT): "<<chamberId<<std::endl; 00057 00058 // Get the DT-Segment which relies on this chamber 00059 DTRecSegment4DCollection::range range = dtRecHits->get(chamberId); 00060 00061 // Create the MuonTransientTrackingRechit 00062 for (DTRecSegment4DCollection::const_iterator rechit = range.first; rechit!=range.second;++rechit) 00063 muonRecHits.push_back(MuonTransientTrackingRecHit::specificBuild(geomDet,&*rechit)); 00064 } 00065 00066 else if (geoId.subdetId() == MuonSubdetId::CSC) { 00067 if(!enableCSCMeasurement) return muonRecHits; 00068 00069 // Get the CSC-Segment collection from the event 00070 edm::Handle<CSCSegmentCollection> cscSegments; 00071 iEvent.getByLabel(theCSCRecHitLabel, cscSegments); 00072 00073 // Create the chamber Id 00074 CSCDetId chamberId(geoId.rawId()); 00075 LogTrace("Muon|RecoMuon|MuonDetLayerMeasurements") << "(CSC): "<<chamberId<<std::endl; 00076 00077 // Get the CSC-Segment which relies on this chamber 00078 CSCSegmentCollection::range range = cscSegments->get(chamberId); 00079 00080 // Create the MuonTransientTrackingRecHit 00081 for (CSCSegmentCollection::const_iterator rechit = range.first; rechit!=range.second; ++rechit) 00082 muonRecHits.push_back(MuonTransientTrackingRecHit::specificBuild(geomDet,&*rechit)); 00083 } 00084 00085 else if (geoId.subdetId() == MuonSubdetId::RPC ) { 00086 if(!enableRPCMeasurement) return muonRecHits; 00087 00088 // Get the CSC-Segment collection from the event 00089 edm::Handle<RPCRecHitCollection> rpcRecHits; 00090 iEvent.getByLabel(theRPCRecHitLabel, rpcRecHits); 00091 00092 // Create the chamber Id 00093 RPCDetId chamberId(geoId.rawId()); 00094 LogTrace("Muon|RecoMuon|MuonDetLayerMeasurements") << "(RPC): "<<chamberId<<std::endl; 00095 00096 // Get the RPC-Segment which relies on this chamber 00097 RPCRecHitCollection::range range = rpcRecHits->get(chamberId); 00098 00099 // Create the MuonTransientTrackingRecHit 00100 for (RPCRecHitCollection::const_iterator rechit = range.first; rechit!=range.second; ++rechit) 00101 muonRecHits.push_back(MuonTransientTrackingRecHit::specificBuild(geomDet,&*rechit)); 00102 } 00103 else { 00104 // wrong type 00105 edm::LogWarning("MuonDetLayerMeasurements")<<"The DetLayer is not a valid Muon DetLayer. "; 00106 } 00107 00108 return muonRecHits; 00109 }
MuonRecHitContainer MuonDetLayerMeasurements::recHits | ( | const DetLayer * | layer | ) | const |
returns the rechits which are onto the layer
Definition at line 282 of file MuonDetLayerMeasurements.cc.
References recHits(), HLT_VtxMuL3::result, and theEvent.
00282 { 00283 00284 MuonRecHitContainer result; 00285 if (theEvent) return recHits(layer, *theEvent); 00286 else return result; 00287 }
MuonRecHitContainer MuonDetLayerMeasurements::recHits | ( | const DetLayer * | layer, | |
const edm::Event & | iEvent | |||
) | const |
returns the rechits which are onto the layer
Definition at line 268 of file MuonDetLayerMeasurements.cc.
References GeometricSearchDet::basicComponents().
Referenced by MuonSeedBuilder::build(), GlobalTrajectoryBuilderBase::checkMuonHits(), GlobalMuonRefitter::checkMuonHits(), fastMeasurements(), measurements(), RPCSeedGenerator::produce(), CosmicMuonSeedGenerator::produce(), recHits(), and CosmicMuonTrajectoryBuilder::unusedHits().
00269 { 00270 MuonRecHitContainer rhs; 00271 00272 std::vector <const GeomDet*> gds = layer->basicComponents(); 00273 00274 for (std::vector<const GeomDet*>::const_iterator igd = gds.begin(); 00275 igd != gds.end(); igd++) { 00276 MuonRecHitContainer detHits = recHits(*igd, iEvent); 00277 rhs.insert(rhs.end(), detHits.begin(), detHits.end()); 00278 } 00279 return rhs; 00280 }
void MuonDetLayerMeasurements::setEvent | ( | const edm::Event & | event | ) |
set event
Definition at line 258 of file MuonDetLayerMeasurements.cc.
References theEvent.
Referenced by DTChamberEfficiency::analyze(), CosmicMuonSeedGenerator::produce(), GlobalMuonRefitter::setEvent(), StandAloneMuonFilter::setEvent(), CosmicMuonTrajectoryBuilder::setEvent(), and GlobalTrajectoryBuilderBase::setEvent().
00258 { 00259 theEvent = &event; 00260 }
const edm::Event* MuonDetLayerMeasurements::theEvent [private] |
Definition at line 129 of file MuonDetLayerMeasurements.h.
Referenced by checkEvent(), fastMeasurements(), groupedMeasurements(), measurements(), recHits(), and setEvent().