CMS 3D CMS Logo

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

#include <DTSegment2DQuality.h>

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

Public Member Functions

 DTSegment2DQuality (const edm::ParameterSet &pset)
 Constructor. More...
 
- Public Member Functions inherited from DQMGlobalEDAnalyzer< dtsegment2d::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 &, dtsegment2d::Histograms &) const=0
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &, dtsegment2d::Histograms &) const
 
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &, dtsegment2d::Histograms const &) const
 
 DQMGlobalEDAnalyzer ()
 
std::shared_ptr< dtsegment2d::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< dtsegment2d::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 &, dtsegment2d::Histograms &) const override
 Book the DQM plots. More...
 
void dqmAnalyze (edm::Event const &, edm::EventSetup const &, dtsegment2d::Histograms const &) const override
 Perform the real analysis. More...
 

Private Attributes

bool debug_
 
edm::InputTag segment2DLabel_
 
edm::EDGetTokenT< DTRecSegment2DCollectionsegment2DToken_
 
double sigmaResAngle_
 
double sigmaResPos_
 
edm::InputTag simHitLabel_
 
edm::EDGetTokenT< edm::PSimHitContainersimHitToken_
 

Additional Inherited Members

- Public Types inherited from DQMGlobalEDAnalyzer< dtsegment2d::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 and plot resolution comparing reconstructed and simulated quantities

Author
S. Bolognesi and G. Cerminara - INFN Torino

Definition at line 32 of file DTSegment2DQuality.h.

Constructor & Destructor Documentation

◆ DTSegment2DQuality()

DTSegment2DQuality::DTSegment2DQuality ( const edm::ParameterSet pset)

Constructor.

Definition at line 47 of file DTSegment2DQuality.cc.

47  {
48  // get the debug parameter for verbose output
49  debug_ = pset.getUntrackedParameter<bool>("debug");
51  // the name of the simhit collection
52  simHitLabel_ = pset.getUntrackedParameter<InputTag>("simHitLabel");
53  simHitToken_ = consumes<PSimHitContainer>(pset.getUntrackedParameter<InputTag>("simHitLabel"));
54  // the name of the 2D rec hit collection
55  segment2DLabel_ = pset.getUntrackedParameter<InputTag>("segment2DLabel");
56  segment2DToken_ = consumes<DTRecSegment2DCollection>(pset.getUntrackedParameter<InputTag>("segment2DLabel"));
57 
58  // sigma resolution on position
59  sigmaResPos_ = pset.getParameter<double>("sigmaResPos");
60  // sigma resolution on angle
61  sigmaResAngle_ = pset.getParameter<double>("sigmaResAngle");
62 
63  if (debug_) {
64  cout << "[DTSegment2DQuality] Constructor called " << endl;
65  }
66 }

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

Member Function Documentation

◆ bookHistograms()

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

Book the DQM plots.

Definition at line 68 of file DTSegment2DQuality.cc.

71  {
72  histograms.h2DHitRPhi = std::make_unique<HRes2DHit>("RPhi", booker, true, true);
73  histograms.h2DHitRZ = std::make_unique<HRes2DHit>("RZ", booker, true, true);
74  histograms.h2DHitRZ_W0 = std::make_unique<HRes2DHit>("RZ_W0", booker, true, true);
75  histograms.h2DHitRZ_W1 = std::make_unique<HRes2DHit>("RZ_W1", booker, true, true);
76  histograms.h2DHitRZ_W2 = std::make_unique<HRes2DHit>("RZ_W2", booker, true, true);
77 
78  histograms.h2DHitEff_RPhi = std::make_unique<HEff2DHit>("RPhi", booker);
79  histograms.h2DHitEff_RZ = std::make_unique<HEff2DHit>("RZ", booker);
80  histograms.h2DHitEff_RZ_W0 = std::make_unique<HEff2DHit>("RZ_W0", booker);
81  histograms.h2DHitEff_RZ_W1 = std::make_unique<HEff2DHit>("RZ_W1", booker);
82  histograms.h2DHitEff_RZ_W2 = std::make_unique<HEff2DHit>("RZ_W2", booker);
83  if (debug_) {
84  cout << "[DTSegment2DQuality] hitsos created " << endl;
85  }
86 }

References gather_cfg::cout.

◆ dqmAnalyze()

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

Perform the real analysis.

Implements DQMGlobalEDAnalyzer< dtsegment2d::Histograms >.

Definition at line 89 of file DTSegment2DQuality.cc.

91  {
92  // Get the DT Geometry
93  ESHandle<DTGeometry> dtGeom;
94  setup.get<MuonGeometryRecord>().get(dtGeom);
95 
96  // Get the SimHit collection from the event
98  event.getByToken(simHitToken_, simHits); // FIXME: second string to be removed
99 
100  // Map simHits by sl
101  map<DTSuperLayerId, PSimHitContainer> simHitsPerSl;
102  for (const auto &simHit : *simHits) {
103  // Create the id of the sl (the simHits in the DT known their wireId)
104  DTSuperLayerId slId = ((DTWireId(simHit.detUnitId())).layerId()).superlayerId();
105  // Fill the map
106  simHitsPerSl[slId].push_back(simHit);
107  }
108 
109  // Get the 2D rechits from the event
111  event.getByToken(segment2DToken_, segment2Ds);
112 
113  if (not segment2Ds.isValid()) {
114  if (debug_) {
115  cout << "[DTSegment2DQuality]**Warning: no 2DSegments with label: " << segment2DLabel_
116  << " in this event, skipping !" << endl;
117  }
118  return;
119  }
120 
121  // Loop over all superlayers containing a segment
123  for (slId = segment2Ds->id_begin(); slId != segment2Ds->id_end(); ++slId) {
124  //------------------------- simHits ---------------------------//
125  // Get simHits of each superlayer
126  PSimHitContainer simHits = simHitsPerSl[(*slId)];
127 
128  // Map simhits per wire
129  map<DTWireId, PSimHitContainer> simHitsPerWire = DTHitQualityUtils::mapSimHitsPerWire(simHits);
130  map<DTWireId, const PSimHit *> muSimHitPerWire = DTHitQualityUtils::mapMuSimHitsPerWire(simHitsPerWire);
131  int nMuSimHit = muSimHitPerWire.size();
132  if (nMuSimHit == 0 or nMuSimHit == 1) {
133  if (debug_ and nMuSimHit == 1) {
134  cout << "[DTSegment2DQuality] Only " << nMuSimHit << " mu SimHit in this SL, skipping !" << endl;
135  }
136  continue; // If no or only one mu SimHit is found skip this SL
137  }
138  if (debug_) {
139  cout << "=== SL " << (*slId) << " has " << nMuSimHit << " SimHits" << endl;
140  }
141 
142  // Find outer and inner mu SimHit to build a segment
143  pair<const PSimHit *, const PSimHit *> inAndOutSimHit = DTHitQualityUtils::findMuSimSegment(muSimHitPerWire);
144  // Check that outermost and innermost SimHit are not the same
145  if (inAndOutSimHit.first == inAndOutSimHit.second) {
146  cout << "[DTHitQualityUtils]***Warning: outermost and innermost SimHit "
147  "are the same !"
148  << endl;
149  continue;
150  }
151 
152  // Find direction and position of the sim Segment in SL RF
153  pair<LocalVector, LocalPoint> dirAndPosSimSegm =
154  DTHitQualityUtils::findMuSimSegmentDirAndPos(inAndOutSimHit, (*slId), &(*dtGeom));
155 
156  LocalVector simSegmLocalDir = dirAndPosSimSegm.first;
157  LocalPoint simSegmLocalPos = dirAndPosSimSegm.second;
158  if (debug_) {
159  cout << " Simulated segment: local direction " << simSegmLocalDir << endl
160  << " local position " << simSegmLocalPos << endl;
161  }
162  const DTSuperLayer *superLayer = dtGeom->superLayer(*slId);
163  GlobalPoint simSegmGlobalPos = superLayer->toGlobal(simSegmLocalPos);
164 
165  // Atan(x/z) angle and x position in SL RF
166  float angleSimSeg = DTHitQualityUtils::findSegmentAlphaAndBeta(simSegmLocalDir).first;
167  float posSimSeg = simSegmLocalPos.x();
168  // Position (in eta, phi coordinates) in the global RF
169  float etaSimSeg = simSegmGlobalPos.eta();
170  float phiSimSeg = simSegmGlobalPos.phi();
171 
172  //---------------------------- recHits --------------------------//
173  // Get the range of rechit for the corresponding slId
174  bool recHitFound = false;
175  DTRecSegment2DCollection::range range = segment2Ds->get(*slId);
176  int nsegm = distance(range.first, range.second);
177  if (debug_) {
178  cout << " Sl: " << *slId << " has " << nsegm << " 2D segments" << endl;
179  }
180 
181  if (nsegm != 0) {
182  // Find the best RecHit: look for the 2D RecHit with the angle closest
183  // to that of segment made of SimHits.
184  // RecHits must have delta alpha and delta position within 5 sigma of
185  // the residual distribution (we are looking for residuals of segments
186  // usefull to the track fit) for efficency purpose
187  const DTRecSegment2D *bestRecHit = nullptr;
188  bool bestRecHitFound = false;
189  double deltaAlpha = 99999;
190 
191  // Loop over the recHits of this slId
192  for (DTRecSegment2DCollection::const_iterator segment2D = range.first; segment2D != range.second; ++segment2D) {
193  // Check the dimension
194  if ((*segment2D).dimension() != 2) {
195  if (debug_) {
196  cout << "[DTSegment2DQuality]***Error: This is not 2D segment !!!" << endl;
197  }
198  abort();
199  }
200  // Segment Local Direction and position (in SL RF)
201  LocalVector recSegDirection = (*segment2D).localDirection();
202  LocalPoint recSegPosition = (*segment2D).localPosition();
203 
204  float recSegAlpha = DTHitQualityUtils::findSegmentAlphaAndBeta(recSegDirection).first;
205  if (debug_) {
206  cout << " RecSegment direction: " << recSegDirection << endl
207  << " position : " << recSegPosition << endl
208  << " alpha : " << recSegAlpha << endl;
209  }
210 
211  if (fabs(recSegAlpha - angleSimSeg) < deltaAlpha) {
212  deltaAlpha = fabs(recSegAlpha - angleSimSeg);
213  bestRecHit = &(*segment2D);
214  bestRecHitFound = true;
215  }
216  } // End of Loop over all 2D RecHits
217 
218  if (bestRecHitFound) {
219  // Best rechit direction and position in SL RF
220  LocalPoint bestRecHitLocalPos = bestRecHit->localPosition();
221  LocalVector bestRecHitLocalDir = bestRecHit->localDirection();
222 
223  LocalError bestRecHitLocalPosErr = bestRecHit->localPositionError();
224  LocalError bestRecHitLocalDirErr = bestRecHit->localDirectionError();
225 
226  float angleBestRHit = DTHitQualityUtils::findSegmentAlphaAndBeta(bestRecHitLocalDir).first;
227 
228  if (fabs(angleBestRHit - angleSimSeg) < 5 * sigmaResAngle_ and
229  fabs(bestRecHitLocalPos.x() - posSimSeg) < 5 * sigmaResPos_) {
230  recHitFound = true;
231  }
232 
233  // Fill Residual histos
234  HRes2DHit *hRes = nullptr;
235  if ((*slId).superlayer() == 1 or (*slId).superlayer() == 3) { // RPhi SL
236  hRes = histograms.h2DHitRPhi.get();
237  } else if ((*slId).superlayer() == 2) { // RZ SL
238  histograms.h2DHitRZ->fill(angleSimSeg,
239  angleBestRHit,
240  posSimSeg,
241  bestRecHitLocalPos.x(),
242  etaSimSeg,
243  phiSimSeg,
244  sqrt(bestRecHitLocalPosErr.xx()),
245  sqrt(bestRecHitLocalDirErr.xx()));
246  if (abs((*slId).wheel()) == 0) {
247  hRes = histograms.h2DHitRZ_W0.get();
248  } else if (abs((*slId).wheel()) == 1) {
249  hRes = histograms.h2DHitRZ_W1.get();
250  } else if (abs((*slId).wheel()) == 2) {
251  hRes = histograms.h2DHitRZ_W2.get();
252  }
253  }
254  hRes->fill(angleSimSeg,
255  angleBestRHit,
256  posSimSeg,
257  bestRecHitLocalPos.x(),
258  etaSimSeg,
259  phiSimSeg,
260  sqrt(bestRecHitLocalPosErr.xx()),
261  sqrt(bestRecHitLocalDirErr.xx()));
262  }
263  } // end of if (nsegm != 0)
264 
265  // Fill Efficiency plot
266  HEff2DHit *hEff = nullptr;
267  if ((*slId).superlayer() == 1 or (*slId).superlayer() == 3) { // RPhi SL
268  hEff = histograms.h2DHitEff_RPhi.get();
269  } else if ((*slId).superlayer() == 2) { // RZ SL
270  histograms.h2DHitEff_RZ->fill(etaSimSeg, phiSimSeg, posSimSeg, angleSimSeg, recHitFound);
271  if (abs((*slId).wheel()) == 0) {
272  hEff = histograms.h2DHitEff_RZ_W0.get();
273  } else if (abs((*slId).wheel()) == 1) {
274  hEff = histograms.h2DHitEff_RZ_W1.get();
275  } else if (abs((*slId).wheel()) == 2) {
276  hEff = histograms.h2DHitEff_RZ_W2.get();
277  }
278  }
279  hEff->fill(etaSimSeg, phiSimSeg, posSimSeg, angleSimSeg, recHitFound);
280  } // End of loop over superlayers
281 }

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

Member Data Documentation

◆ debug_

bool DTSegment2DQuality::debug_
private

Definition at line 61 of file DTSegment2DQuality.h.

◆ segment2DLabel_

edm::InputTag DTSegment2DQuality::segment2DLabel_
private

Definition at line 50 of file DTSegment2DQuality.h.

◆ segment2DToken_

edm::EDGetTokenT<DTRecSegment2DCollection> DTSegment2DQuality::segment2DToken_
private

Definition at line 52 of file DTSegment2DQuality.h.

◆ sigmaResAngle_

double DTSegment2DQuality::sigmaResAngle_
private

Definition at line 58 of file DTSegment2DQuality.h.

◆ sigmaResPos_

double DTSegment2DQuality::sigmaResPos_
private

Definition at line 55 of file DTSegment2DQuality.h.

◆ simHitLabel_

edm::InputTag DTSegment2DQuality::simHitLabel_
private

Definition at line 49 of file DTSegment2DQuality.h.

◆ simHitToken_

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

Definition at line 51 of file DTSegment2DQuality.h.

DTSegment2DQuality::sigmaResAngle_
double sigmaResAngle_
Definition: DTSegment2DQuality.h:58
Vector3DBase< float, LocalTag >
DTSuperLayerId
Definition: DTSuperLayerId.h:12
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
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
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
DTSuperLayer
Definition: DTSuperLayer.h:24
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
HEff2DHit::fill
void fill(float etaSimSegm, float phiSimSegm, float posSimSegm, float angleSimSegm, bool fillRecHit)
Definition: Histograms.h:354
DTHitQualityUtils::findMuSimSegment
std::pair< const PSimHit *, const PSimHit * > findMuSimSegment(const std::map< DTWireId, const PSimHit * > &mapWireAndMuSimHit)
HEff2DHit
Definition: Histograms.h:331
PixelMapPlotter.hRes
hRes
Definition: PixelMapPlotter.py:31
DTWireId
Definition: DTWireId.h:12
LocalError::xx
float xx() const
Definition: LocalError.h:22
rpcPointValidation_cfi.simHit
simHit
Definition: rpcPointValidation_cfi.py:24
DTSegment2DQuality::segment2DLabel_
edm::InputTag segment2DLabel_
Definition: DTSegment2DQuality.h:50
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
edm::ESHandle< DTGeometry >
DTSegment2DQuality::segment2DToken_
edm::EDGetTokenT< DTRecSegment2DCollection > segment2DToken_
Definition: DTSegment2DQuality.h:52
Point3DBase< float, LocalTag >
DTHitQualityUtils::findMuSimSegmentDirAndPos
std::pair< LocalVector, LocalPoint > findMuSimSegmentDirAndPos(const std::pair< const PSimHit *, const PSimHit * > &inAndOutSimHit, const DetId detId, const DTGeometry *muonGeom)
DTSegment2DQuality::sigmaResPos_
double sigmaResPos_
Definition: DTSegment2DQuality.h:55
GeomDet::toGlobal
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
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
DTSegment2DQuality::simHitToken_
edm::EDGetTokenT< edm::PSimHitContainer > simHitToken_
Definition: DTSegment2DQuality.h:51
histograms
Definition: histograms.py:1
get
#define get
edm::RangeMap::range
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:50
HRes2DHit
Definition: Histograms.h:217
DTSegment2DQuality::debug_
bool debug_
Definition: DTSegment2DQuality.h:61
or
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
DTGeometry::superLayer
const DTSuperLayer * superLayer(const DTSuperLayerId &id) const
Return a DTSuperLayer given its id.
Definition: DTGeometry.cc:92
DTRecSegment2D::localDirection
LocalVector localDirection() const override
the local direction in SL frame
Definition: DTRecSegment2D.h:90
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
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
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
DTSegment2DQuality::simHitLabel_
edm::InputTag simHitLabel_
Definition: DTSegment2DQuality.h:49
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27