CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
DTSegment2DSLPhiQuality Class Reference

#include <DTSegment2DSLPhiQuality.h>

Inheritance diagram for DTSegment2DSLPhiQuality:
DQMGlobalEDAnalyzer< dtsegment2dsl::Histograms > edm::global::EDProducer< edm::RunCache< dtsegment2dsl::Histograms >, edm::EndRunProducer, edm::Accumulator, Args... > edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 DTSegment2DSLPhiQuality (const edm::ParameterSet &pset)
 Constructor. More...
 
- Public Member Functions inherited from DQMGlobalEDAnalyzer< dtsegment2dsl::Histograms >
void accumulate (edm::StreamID id, edm::Event const &event, edm::EventSetup const &setup) const final
 
virtual void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &, dtsegment2dsl::Histograms &) const=0
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &, dtsegment2dsl::Histograms &) const
 
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &, dtsegment2dsl::Histograms const &) const
 
 DQMGlobalEDAnalyzer ()
 
std::shared_ptr< dtsegment2dsl::HistogramsglobalBeginRun (edm::Run const &run, edm::EventSetup const &setup) const final
 
void globalEndRun (edm::Run const &, edm::EventSetup const &) const final
 
void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup) const final
 
- Public Member Functions inherited from edm::global::EDProducer< edm::RunCache< dtsegment2dsl::Histograms >, edm::EndRunProducer, edm::Accumulator, Args... >
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &, dtsegment2dsl::Histograms &) const override
 Book the DQM plots. More...
 
void dqmAnalyze (edm::Event const &, edm::EventSetup const &, dtsegment2dsl::Histograms const &) const override
 Perform the real analysis. More...
 

Private Attributes

bool debug_
 
bool doall_
 
bool local_
 
edm::InputTag segment4DLabel_
 
edm::EDGetTokenT< DTRecSegment4DCollectionsegment4DToken_
 
double sigmaResAngle_
 
double sigmaResPos_
 
edm::InputTag simHitLabel_
 
edm::EDGetTokenT< edm::PSimHitContainersimHitToken_
 

Additional Inherited Members

- Public Types inherited from DQMGlobalEDAnalyzer< dtsegment2dsl::Histograms >
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::global::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Detailed Description

Basic analyzer class which accesses 2D DTSegments reconstructed with both SL Phi and plot resolution comparing reconstructed and simulated quantities

Author
S. Bolognesi and G. Cerminara - INFN Torino

Definition at line 32 of file DTSegment2DSLPhiQuality.h.

Constructor & Destructor Documentation

◆ DTSegment2DSLPhiQuality()

DTSegment2DSLPhiQuality::DTSegment2DSLPhiQuality ( const edm::ParameterSet pset)

Constructor.

Definition at line 38 of file DTSegment2DSLPhiQuality.cc.

38  {
39  // Get the debug parameter for verbose output
40  debug_ = pset.getUntrackedParameter<bool>("debug");
42 
43  // the name of the simhit collection
44  simHitLabel_ = pset.getUntrackedParameter<InputTag>("simHitLabel");
45  simHitToken_ = consumes<PSimHitContainer>(pset.getUntrackedParameter<InputTag>("simHitLabel"));
46  // the name of the 2D rec hit collection
47  segment4DLabel_ = pset.getUntrackedParameter<InputTag>("segment4DLabel");
48  segment4DToken_ = consumes<DTRecSegment4DCollection>(pset.getUntrackedParameter<InputTag>("segment4DLabel"));
49 
50  // sigma resolution on position
51  sigmaResPos_ = pset.getParameter<double>("sigmaResPos");
52  // sigma resolution on angle
53  sigmaResAngle_ = pset.getParameter<double>("sigmaResAngle");
54  doall_ = pset.getUntrackedParameter<bool>("doall", false);
55  local_ = pset.getUntrackedParameter<bool>("local", false);
56 }

References DTHitQualityUtils::debug, and muonDTDigis_cfi::pset.

Member Function Documentation

◆ bookHistograms()

void DTSegment2DSLPhiQuality::bookHistograms ( DQMStore::IBooker booker,
edm::Run const &  run,
edm::EventSetup const &  setup,
dtsegment2dsl::Histograms histograms 
) const
overrideprivate

Book the DQM plots.

Definition at line 58 of file DTSegment2DSLPhiQuality.cc.

61  {
62  // Book the histos
63  histograms.h2DHitSuperPhi = std::make_unique<HRes2DHit>("SuperPhi", booker, doall_, local_);
64  if (doall_) {
65  histograms.h2DHitEff_SuperPhi = std::make_unique<HEff2DHit>("SuperPhi", booker);
66  }
67 }

◆ dqmAnalyze()

void DTSegment2DSLPhiQuality::dqmAnalyze ( edm::Event const &  event,
edm::EventSetup const &  setup,
dtsegment2dsl::Histograms const &  histograms 
) const
overrideprivatevirtual

Perform the real analysis.

Implements DQMGlobalEDAnalyzer< dtsegment2dsl::Histograms >.

Definition at line 70 of file DTSegment2DSLPhiQuality.cc.

72  {
73  // Get the DT Geometry
74  ESHandle<DTGeometry> dtGeom;
75  setup.get<MuonGeometryRecord>().get(dtGeom);
76 
77  // Get the SimHit collection from the event
79  event.getByToken(simHitToken_, simHits); // FIXME: second string to be removed
80 
81  // Map simHits by chamber
82  map<DTChamberId, PSimHitContainer> simHitsPerCh;
83  for (const auto &simHit : *simHits) {
84  // Create the id of the chamber (the simHits in the DT known their wireId)
85  DTChamberId chamberId = (((DTWireId(simHit.detUnitId())).layerId()).superlayerId()).chamberId();
86  // Fill the map
87  simHitsPerCh[chamberId].push_back(simHit);
88  }
89 
90  // Get the 4D rechits from the event
92  event.getByToken(segment4DToken_, segment4Ds);
93 
94  if (!segment4Ds.isValid()) {
95  if (debug_) {
96  cout << "[DTSegment2DSLPhiQuality]**Warning: no 4D Segments with label: " << segment4DLabel_
97  << " in this event, skipping!" << endl;
98  }
99  return;
100  }
101 
102  // Loop over all chambers containing a segment
104  for (chamberId = segment4Ds->id_begin(); chamberId != segment4Ds->id_end(); ++chamberId) {
105  //------------------------- simHits ---------------------------//
106  // Get simHits of each chamber
107  PSimHitContainer simHits = simHitsPerCh[(*chamberId)];
108 
109  // Map simhits per wire
110  map<DTWireId, PSimHitContainer> simHitsPerWire = DTHitQualityUtils::mapSimHitsPerWire(simHits);
111  map<DTWireId, const PSimHit *> muSimHitPerWire = DTHitQualityUtils::mapMuSimHitsPerWire(simHitsPerWire);
112  int nMuSimHit = muSimHitPerWire.size();
113  if (nMuSimHit == 0 || nMuSimHit == 1) {
114  if (debug_ && nMuSimHit == 1) {
115  cout << "[DTSegment2DSLPhiQuality] Only " << nMuSimHit << " mu SimHit in this chamber, skipping!" << endl;
116  }
117  continue; // If no or only one mu SimHit is found skip this chamber
118  }
119  if (debug_) {
120  cout << "=== Chamber " << (*chamberId) << " has " << nMuSimHit << " SimHits" << endl;
121  }
122 
123  // Find outer and inner mu SimHit to build a segment
124  pair<const PSimHit *, const PSimHit *> inAndOutSimHit = DTHitQualityUtils::findMuSimSegment(muSimHitPerWire);
125 
126  // Find direction and position of the sim Segment in Chamber RF
127  pair<LocalVector, LocalPoint> dirAndPosSimSegm =
128  DTHitQualityUtils::findMuSimSegmentDirAndPos(inAndOutSimHit, (*chamberId), &(*dtGeom));
129 
130  LocalVector simSegmLocalDir = dirAndPosSimSegm.first;
131  LocalPoint simSegmLocalPos = dirAndPosSimSegm.second;
132  const DTChamber *chamber = dtGeom->chamber(*chamberId);
133  GlobalPoint simSegmGlobalPos = chamber->toGlobal(simSegmLocalPos);
134 
135  // Atan(x/z) angle and x position in SL RF
136  float angleSimSeg = DTHitQualityUtils::findSegmentAlphaAndBeta(simSegmLocalDir).first;
137  float posSimSeg = simSegmLocalPos.x();
138  // Position (in eta, phi coordinates) in lobal RF
139  float etaSimSeg = simSegmGlobalPos.eta();
140  float phiSimSeg = simSegmGlobalPos.phi();
141 
142  if (debug_) {
143  cout << " Simulated segment: local direction " << simSegmLocalDir << endl
144  << " local position " << simSegmLocalPos << endl
145  << " angle " << angleSimSeg << endl;
146  }
147 
148  //---------------------------- recHits --------------------------//
149  // Get the range of rechit for the corresponding chamberId
150  bool recHitFound = false;
151  DTRecSegment4DCollection::range range = segment4Ds->get(*chamberId);
152  int nsegm = distance(range.first, range.second);
153  if (debug_) {
154  cout << " Chamber: " << *chamberId << " has " << nsegm << " 4D segments" << endl;
155  }
156 
157  if (nsegm != 0) {
158  // Find the best RecHit: look for the 4D RecHit with the phi angle closest
159  // to that of segment made of SimHits.
160  // RecHits must have delta alpha and delta position within 5 sigma of
161  // the residual distribution (we are looking for residuals of segments
162  // usefull to the track fit) for efficency purpose
163  const DTRecSegment2D *bestRecHit = nullptr;
164  bool bestRecHitFound = false;
165  double deltaAlpha = 99999;
166 
167  // Loop over the recHits of this chamberId
168  for (DTRecSegment4DCollection::const_iterator segment4D = range.first; segment4D != range.second; ++segment4D) {
169  // Check the dimension
170  if ((*segment4D).dimension() != 4) {
171  if (debug_) {
172  cout << "[DTSegment2DSLPhiQuality]***Error: This is not 4D "
173  "segment!!!"
174  << endl;
175  }
176  continue;
177  }
178 
179  // Get 2D superPhi segments from 4D segments
180  const DTChamberRecSegment2D *phiSegment2D = (*segment4D).phiSegment();
181  if ((*phiSegment2D).dimension() != 2) {
182  if (debug_) {
183  cout << "[DTSegment2DQuality]***Error: This is not 2D segment!!!" << endl;
184  }
185  abort();
186  }
187 
188  // Segment Local Direction and position (in Chamber RF)
189  LocalVector recSegDirection = (*phiSegment2D).localDirection();
190 
191  float recSegAlpha = DTHitQualityUtils::findSegmentAlphaAndBeta(recSegDirection).first;
192  if (debug_) {
193  cout << " RecSegment direction: " << recSegDirection << endl
194  << " position : " << (*phiSegment2D).localPosition() << endl
195  << " alpha : " << recSegAlpha << endl;
196  }
197 
198  if (fabs(recSegAlpha - angleSimSeg) < deltaAlpha) {
199  deltaAlpha = fabs(recSegAlpha - angleSimSeg);
200  bestRecHit = &(*phiSegment2D);
201  bestRecHitFound = true;
202  }
203  } // End of Loop over all 4D RecHits of this chambers
204 
205  if (bestRecHitFound) {
206  // Best rechit direction and position in Chamber RF
207  LocalPoint bestRecHitLocalPos = bestRecHit->localPosition();
208  LocalVector bestRecHitLocalDir = bestRecHit->localDirection();
209 
210  LocalError bestRecHitLocalPosErr = bestRecHit->localPositionError();
211  LocalError bestRecHitLocalDirErr = bestRecHit->localDirectionError();
212 
213  float angleBestRHit = DTHitQualityUtils::findSegmentAlphaAndBeta(bestRecHitLocalDir).first;
214  if (fabs(angleBestRHit - angleSimSeg) < 5 * sigmaResAngle_ &&
215  fabs(bestRecHitLocalPos.x() - posSimSeg) < 5 * sigmaResPos_) {
216  recHitFound = true;
217  }
218 
219  // Fill Residual histos
220  histograms.h2DHitSuperPhi->fill(angleSimSeg,
221  angleBestRHit,
222  posSimSeg,
223  bestRecHitLocalPos.x(),
224  etaSimSeg,
225  phiSimSeg,
226  sqrt(bestRecHitLocalPosErr.xx()),
227  sqrt(bestRecHitLocalDirErr.xx()));
228  }
229  } // end of if (nsegm!= 0)
230 
231  // Fill Efficiency plot
232  if (doall_) {
233  histograms.h2DHitEff_SuperPhi->fill(etaSimSeg, phiSimSeg, posSimSeg, angleSimSeg, recHitFound);
234  }
235  } // End of loop over chambers
236 }

References relativeConstraints::chamber, DTGeometry::chamber(), gather_cfg::cout, HLT_2018_cff::distance, PV3DBase< T, PVType, FrameType >::eta(), DTHitQualityUtils::findMuSimSegment(), DTHitQualityUtils::findMuSimSegmentDirAndPos(), DTHitQualityUtils::findSegmentAlphaAndBeta(), get, edm::HandleBase::isValid(), DTRecSegment2D::localDirection(), DTRecSegment2D::localDirectionError(), DTRecSegment2D::localPosition(), DTRecSegment2D::localPositionError(), DTHitQualityUtils::mapMuSimHitsPerWire(), DTHitQualityUtils::mapSimHitsPerWire(), PV3DBase< T, PVType, FrameType >::phi(), FastTimerService_cff::range, singleTopDQM_cfi::setup, rpcPointValidation_cfi::simHit, FastTrackerRecHitCombiner_cfi::simHits, mathSSE::sqrt(), PV3DBase< T, PVType, FrameType >::x(), and LocalError::xx().

Member Data Documentation

◆ debug_

bool DTSegment2DSLPhiQuality::debug_
private

Definition at line 64 of file DTSegment2DSLPhiQuality.h.

◆ doall_

bool DTSegment2DSLPhiQuality::doall_
private

Definition at line 60 of file DTSegment2DSLPhiQuality.h.

◆ local_

bool DTSegment2DSLPhiQuality::local_
private

Definition at line 61 of file DTSegment2DSLPhiQuality.h.

◆ segment4DLabel_

edm::InputTag DTSegment2DSLPhiQuality::segment4DLabel_
private

Definition at line 50 of file DTSegment2DSLPhiQuality.h.

◆ segment4DToken_

edm::EDGetTokenT<DTRecSegment4DCollection> DTSegment2DSLPhiQuality::segment4DToken_
private

Definition at line 52 of file DTSegment2DSLPhiQuality.h.

◆ sigmaResAngle_

double DTSegment2DSLPhiQuality::sigmaResAngle_
private

Definition at line 58 of file DTSegment2DSLPhiQuality.h.

◆ sigmaResPos_

double DTSegment2DSLPhiQuality::sigmaResPos_
private

Definition at line 55 of file DTSegment2DSLPhiQuality.h.

◆ simHitLabel_

edm::InputTag DTSegment2DSLPhiQuality::simHitLabel_
private

Definition at line 49 of file DTSegment2DSLPhiQuality.h.

◆ simHitToken_

edm::EDGetTokenT<edm::PSimHitContainer> DTSegment2DSLPhiQuality::simHitToken_
private

Definition at line 51 of file DTSegment2DSLPhiQuality.h.

Vector3DBase< float, LocalTag >
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
DTSegment2DSLPhiQuality::simHitToken_
edm::EDGetTokenT< edm::PSimHitContainer > simHitToken_
Definition: DTSegment2DSLPhiQuality.h:51
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
DTHitQualityUtils::mapMuSimHitsPerWire
std::map< DTWireId, const PSimHit * > mapMuSimHitsPerWire(const std::map< DTWireId, edm::PSimHitContainer > &simHitWireMap)
Create a map between the Mu SimHits and corresponding MuBarWireId ;.
DTHitQualityUtils::debug
std::atomic< bool > debug
Definition: DTHitQualityUtils.h:50
gather_cfg.cout
cout
Definition: gather_cfg.py:144
DTChamber
Definition: DTChamber.h:24
HLT_2018_cff.distance
distance
Definition: HLT_2018_cff.py:6417
DTRecSegment2D::localDirectionError
LocalError localDirectionError() const override
the local direction error (xx,xy,yy) in SL frame: only xx is not 0.
Definition: DTRecSegment2D.cc:76
FastTrackerRecHitCombiner_cfi.simHits
simHits
Definition: FastTrackerRecHitCombiner_cfi.py:5
DTHitQualityUtils::findSegmentAlphaAndBeta
std::pair< double, double > findSegmentAlphaAndBeta(const LocalVector &direction)
DTRecSegment2D::localPositionError
LocalError localPositionError() const override
local position error in SL frame
Definition: DTRecSegment2D.cc:74
edm::Handle
Definition: AssociativeIterator.h:50
edm::RangeMap::id_iterator
identifier iterator
Definition: RangeMap.h:130
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
DTSegment2DSLPhiQuality::doall_
bool doall_
Definition: DTSegment2DSLPhiQuality.h:60
DTGeometry::chamber
const DTChamber * chamber(const DTChamberId &id) const
Return a DTChamber given its id.
Definition: DTGeometry.cc:90
DTSegment2DSLPhiQuality::simHitLabel_
edm::InputTag simHitLabel_
Definition: DTSegment2DSLPhiQuality.h:49
DTHitQualityUtils::findMuSimSegment
std::pair< const PSimHit *, const PSimHit * > findMuSimSegment(const std::map< DTWireId, const PSimHit * > &mapWireAndMuSimHit)
DTWireId
Definition: DTWireId.h:12
LocalError::xx
float xx() const
Definition: LocalError.h:22
DTSegment2DSLPhiQuality::debug_
bool debug_
Definition: DTSegment2DSLPhiQuality.h:64
rpcPointValidation_cfi.simHit
simHit
Definition: rpcPointValidation_cfi.py:24
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
DTSegment2DSLPhiQuality::segment4DToken_
edm::EDGetTokenT< DTRecSegment4DCollection > segment4DToken_
Definition: DTSegment2DSLPhiQuality.h:52
edm::ESHandle< DTGeometry >
Point3DBase< float, LocalTag >
DTHitQualityUtils::findMuSimSegmentDirAndPos
std::pair< LocalVector, LocalPoint > findMuSimSegmentDirAndPos(const std::pair< const PSimHit *, const PSimHit * > &inAndOutSimHit, const DetId detId, const DTGeometry *muonGeom)
DTHitQualityUtils::mapSimHitsPerWire
std::map< DTWireId, edm::PSimHitContainer > mapSimHitsPerWire(const edm::PSimHitContainer &simhits)
DTRecSegment2D
Definition: DTRecSegment2D.h:45
LocalError
Definition: LocalError.h:12
edm::RangeMap::const_iterator
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:43
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
DTRecSegment2D::localPosition
LocalPoint localPosition() const override
local position in SL frame
Definition: DTRecSegment2D.h:84
DTChamberRecSegment2D
Definition: DTChamberRecSegment2D.h:31
DTSegment2DSLPhiQuality::segment4DLabel_
edm::InputTag segment4DLabel_
Definition: DTSegment2DSLPhiQuality.h:50
histograms
Definition: histograms.py:1
get
#define get
edm::RangeMap::range
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:50
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
DTSegment2DSLPhiQuality::sigmaResPos_
double sigmaResPos_
Definition: DTSegment2DSLPhiQuality.h:55
DTSegment2DSLPhiQuality::sigmaResAngle_
double sigmaResAngle_
Definition: DTSegment2DSLPhiQuality.h:58
DTRecSegment2D::localDirection
LocalVector localDirection() const override
the local direction in SL frame
Definition: DTRecSegment2D.h:90
DTChamberId
Definition: DTChamberId.h:14
edm::PSimHitContainer
std::vector< PSimHit > PSimHitContainer
Definition: PSimHitContainer.h:11
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
edm::InputTag
Definition: InputTag.h:15
DTSegment2DSLPhiQuality::local_
bool local_
Definition: DTSegment2DSLPhiQuality.h:61
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27