CMS 3D CMS Logo

MuonDetLayerMeasurements Class Reference

The class to access recHits and TrajectoryMeasurements from DetLayer. More...

#include <RecoMuon/MeasurementDet/interface/MuonDetLayerMeasurements.h>

List of all members.

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::EventtheEvent
edm::InputTag theRPCRecHitLabel


Detailed Description

The class to access recHits and TrajectoryMeasurements from DetLayer.

Date
2008/02/19 18:03:27
Revision
1.16
Author:
C. Liu, R. Bellan, N. Amapane
Date
2008/02/19 18:03:34
Revision
1.24
Author:
C. Liu, R. Bellan, N. Amapane

Definition at line 35 of file MuonDetLayerMeasurements.h.


Constructor & Destructor Documentation

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]

Definition at line 38 of file MuonDetLayerMeasurements.cc.

00038 {}


Member Function Documentation

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 }


Member Data Documentation

bool MuonDetLayerMeasurements::enableCSCMeasurement [private]

Definition at line 125 of file MuonDetLayerMeasurements.h.

Referenced by recHits().

bool MuonDetLayerMeasurements::enableDTMeasurement [private]

Definition at line 124 of file MuonDetLayerMeasurements.h.

Referenced by recHits().

bool MuonDetLayerMeasurements::enableRPCMeasurement [private]

Definition at line 126 of file MuonDetLayerMeasurements.h.

Referenced by recHits().

edm::InputTag MuonDetLayerMeasurements::theCSCRecHitLabel [private]

Definition at line 121 of file MuonDetLayerMeasurements.h.

Referenced by recHits().

edm::InputTag MuonDetLayerMeasurements::theDTRecHitLabel [private]

Definition at line 120 of file MuonDetLayerMeasurements.h.

Referenced by recHits().

const edm::Event* MuonDetLayerMeasurements::theEvent [private]

Definition at line 129 of file MuonDetLayerMeasurements.h.

Referenced by checkEvent(), fastMeasurements(), groupedMeasurements(), measurements(), recHits(), and setEvent().

edm::InputTag MuonDetLayerMeasurements::theRPCRecHitLabel [private]

Definition at line 122 of file MuonDetLayerMeasurements.h.

Referenced by recHits().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:28:42 2009 for CMSSW by  doxygen 1.5.4