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 > DQMGlobalEDAnalyzerBase< dtsegment2dsl::Histograms, Args... > 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 >
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &, dtsegment2dsl::Histograms const &) const
 
void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup) const final
 
- Public Member Functions inherited from DQMGlobalEDAnalyzerBase< dtsegment2dsl::Histograms, Args... >
void accumulate (edm::StreamID id, edm::Event const &event, edm::EventSetup const &setup) const final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &, dtsegment2dsl::Histograms &) const
 
 DQMGlobalEDAnalyzerBase ()
 
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
 
- Public Member Functions inherited from edm::global::EDProducer< edm::RunCache< dtsegment2dsl::Histograms >, edm::EndRunProducer, edm::Accumulator, Args... >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const noexcept final
 
bool wantsGlobalRuns () const noexcept final
 
bool wantsInputProcessBlocks () const noexcept final
 
bool wantsProcessBlocks () const noexcept final
 
bool wantsStreamLuminosityBlocks () const noexcept final
 
bool wantsStreamRuns () const noexcept 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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices 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::ESGetToken< DTGeometry, MuonGeometryRecordmuonGeomToken_
 
edm::InputTag segment4DLabel_
 
edm::EDGetTokenT< DTRecSegment4DCollectionsegment4DToken_
 
double sigmaResAngle_
 
double sigmaResPos_
 
edm::InputTag simHitLabel_
 
edm::EDGetTokenT< edm::PSimHitContainersimHitToken_
 

Additional Inherited Members

- Public Types inherited from DQMGlobalEDAnalyzerBase< dtsegment2dsl::Histograms, Args... >
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
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
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 DQMGlobalEDAnalyzerBase< dtsegment2dsl::Histograms, Args... >
uint64_t meId (edm::Run const &run) const
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
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)
 
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 ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, 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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 
- Protected Attributes inherited from DQMGlobalEDAnalyzerBase< dtsegment2dsl::Histograms, Args... >
DQMStoredqmstore_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

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 33 of file DTSegment2DSLPhiQuality.h.

Constructor & Destructor Documentation

◆ DTSegment2DSLPhiQuality()

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

Constructor.

Definition at line 37 of file DTSegment2DSLPhiQuality.cc.

References DTHitQualityUtils::debug, debug_, doall_, local_, muonDTDigis_cfi::pset, segment4DLabel_, segment4DToken_, sigmaResAngle_, sigmaResPos_, simHitLabel_, and simHitToken_.

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

Member Function Documentation

◆ bookHistograms()

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

Book the DQM plots.

Implements DQMGlobalEDAnalyzerBase< dtsegment2dsl::Histograms, Args... >.

Definition at line 57 of file DTSegment2DSLPhiQuality.cc.

References doall_, and local_.

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

◆ dqmAnalyze()

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

Perform the real analysis.

Implements DQMGlobalEDAnalyzerBase< dtsegment2dsl::Histograms, Args... >.

Definition at line 69 of file DTSegment2DSLPhiQuality.cc.

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

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

Member Data Documentation

◆ debug_

bool DTSegment2DSLPhiQuality::debug_
private

Definition at line 68 of file DTSegment2DSLPhiQuality.h.

Referenced by dqmAnalyze(), and DTSegment2DSLPhiQuality().

◆ doall_

bool DTSegment2DSLPhiQuality::doall_
private

Definition at line 64 of file DTSegment2DSLPhiQuality.h.

Referenced by bookHistograms(), dqmAnalyze(), and DTSegment2DSLPhiQuality().

◆ local_

bool DTSegment2DSLPhiQuality::local_
private

Definition at line 65 of file DTSegment2DSLPhiQuality.h.

Referenced by bookHistograms(), and DTSegment2DSLPhiQuality().

◆ muonGeomToken_

edm::ESGetToken<DTGeometry, MuonGeometryRecord> DTSegment2DSLPhiQuality::muonGeomToken_
private

Definition at line 56 of file DTSegment2DSLPhiQuality.h.

Referenced by dqmAnalyze().

◆ segment4DLabel_

edm::InputTag DTSegment2DSLPhiQuality::segment4DLabel_
private

Definition at line 51 of file DTSegment2DSLPhiQuality.h.

Referenced by dqmAnalyze(), and DTSegment2DSLPhiQuality().

◆ segment4DToken_

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

Definition at line 53 of file DTSegment2DSLPhiQuality.h.

Referenced by dqmAnalyze(), and DTSegment2DSLPhiQuality().

◆ sigmaResAngle_

double DTSegment2DSLPhiQuality::sigmaResAngle_
private

Definition at line 62 of file DTSegment2DSLPhiQuality.h.

Referenced by dqmAnalyze(), and DTSegment2DSLPhiQuality().

◆ sigmaResPos_

double DTSegment2DSLPhiQuality::sigmaResPos_
private

Definition at line 59 of file DTSegment2DSLPhiQuality.h.

Referenced by dqmAnalyze(), and DTSegment2DSLPhiQuality().

◆ simHitLabel_

edm::InputTag DTSegment2DSLPhiQuality::simHitLabel_
private

Definition at line 50 of file DTSegment2DSLPhiQuality.h.

Referenced by DTSegment2DSLPhiQuality().

◆ simHitToken_

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

Definition at line 52 of file DTSegment2DSLPhiQuality.h.

Referenced by dqmAnalyze(), and DTSegment2DSLPhiQuality().