CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
DTSegment2DQuality Class Reference

#include <DTSegment2DQuality.h>

Inheritance diagram for DTSegment2DQuality:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &eventSetup)
 Perform the real analysis. More...
 
virtual void beginRun (const edm::Run &iRun, const edm::EventSetup &setup)
 
 DTSegment2DQuality (const edm::ParameterSet &pset)
 Constructor. More...
 
void endJob ()
 
virtual ~DTSegment2DQuality ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Attributes

DQMStoredbe_
 
bool debug
 
HEff2DHith2DHitEff_RPhi
 
HEff2DHith2DHitEff_RZ
 
HEff2DHith2DHitEff_RZ_W0
 
HEff2DHith2DHitEff_RZ_W1
 
HEff2DHith2DHitEff_RZ_W2
 
HRes2DHith2DHitRPhi
 
HRes2DHith2DHitRZ
 
HRes2DHith2DHitRZ_W0
 
HRes2DHith2DHitRZ_W1
 
HRes2DHith2DHitRZ_W2
 
std::string rootFileName
 
edm::InputTag segment2DLabel
 
edm::EDGetTokenT
< DTRecSegment2DCollection
segment2DToken_
 
double sigmaResAngle
 
double sigmaResPos
 
edm::InputTag simHitLabel
 
edm::EDGetTokenT
< edm::PSimHitContainer
simHitToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
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 ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
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)
 

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 ( const edm::ParameterSet pset)

Constructor.

Definition at line 37 of file DTSegment2DQuality.cc.

References gather_cfg::cout, debug, DTHitQualityUtils::debug, edm::ParameterSet::getParameter(), and edm::ParameterSet::getUntrackedParameter().

37  {
38  // Get the debug parameter for verbose output
39  debug = pset.getUntrackedParameter<bool>("debug");
41  // the name of the simhit collection
42  simHitLabel = pset.getUntrackedParameter<InputTag>("simHitLabel");
43  simHitToken_ = consumes<PSimHitContainer>(pset.getUntrackedParameter<InputTag>("simHitLabel"));
44  // the name of the 2D rec hit collection
45  segment2DLabel = pset.getUntrackedParameter<InputTag>("segment2DLabel");
46  segment2DToken_ = consumes<DTRecSegment2DCollection>(pset.getUntrackedParameter<InputTag>("segment2DLabel"));
47 
48  //sigma resolution on position
49  sigmaResPos = pset.getParameter<double>("sigmaResPos");
50  //sigma resolution on angle
51  sigmaResAngle = pset.getParameter<double>("sigmaResAngle");
52 
53  if(debug)
54  cout << "[DTSegment2DQuality] Constructor called " << endl;
55 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::PSimHitContainer > simHitToken_
edm::InputTag simHitLabel
edm::EDGetTokenT< DTRecSegment2DCollection > segment2DToken_
edm::InputTag segment2DLabel
tuple cout
Definition: gather_cfg.py:121
DTSegment2DQuality::~DTSegment2DQuality ( )
virtual

Destructor.

Definition at line 90 of file DTSegment2DQuality.cc.

90  {
91 
92 }

Member Function Documentation

void DTSegment2DQuality::analyze ( const edm::Event event,
const edm::EventSetup eventSetup 
)
virtual

Perform the real analysis.

Implements edm::EDAnalyzer.

Definition at line 121 of file DTSegment2DQuality.cc.

References funct::abs(), gather_cfg::cout, debug, HLT_25ns14e33_v1_cff::distance, PV3DBase< T, PVType, FrameType >::eta(), HRes2DHit::Fill(), HEff2DHit::Fill(), DTHitQualityUtils::findMuSimSegment(), DTHitQualityUtils::findMuSimSegmentDirAndPos(), DTHitQualityUtils::findSegmentAlphaAndBeta(), edm::EventSetup::get(), edm::HandleBase::isValid(), DTRecSegment2D::localDirection(), DTRecSegment2D::localDirectionError(), DTRecSegment2D::localPosition(), DTRecSegment2D::localPositionError(), DTHitQualityUtils::mapMuSimHitsPerWire(), DTHitQualityUtils::mapSimHitsPerWire(), PV3DBase< T, PVType, FrameType >::phi(), trackerHits::simHits, mathSSE::sqrt(), GeomDet::toGlobal(), PV3DBase< T, PVType, FrameType >::x(), and LocalError::xx().

121  {
122  //theFile->cd();
123 
124  // Get the DT Geometry
125  ESHandle<DTGeometry> dtGeom;
126  eventSetup.get<MuonGeometryRecord>().get(dtGeom);
127 
128  // Get the SimHit collection from the event
130  event.getByToken(simHitToken_, simHits); //FIXME: second string to be removed
131 
132  //Map simHits by sl
133  map<DTSuperLayerId, PSimHitContainer > simHitsPerSl;
134  for(PSimHitContainer::const_iterator simHit = simHits->begin();
135  simHit != simHits->end(); simHit++){
136  // Create the id of the sl (the simHits in the DT known their wireId)
137  DTSuperLayerId slId = ((DTWireId(simHit->detUnitId())).layerId()).superlayerId();
138  // Fill the map
139  simHitsPerSl[slId].push_back(*simHit);
140  }
141 
142  // Get the 2D rechits from the event
144  event.getByToken(segment2DToken_, segment2Ds);
145 
146  if(!segment2Ds.isValid()) {
147  if(debug) cout << "[DTSegment2DQuality]**Warning: no 2DSegments with label: " << segment2DLabel
148  << " in this event, skipping!" << endl;
149  return;
150  }
151 
152  // Loop over all superlayers containing a segment
153  DTRecSegment2DCollection::id_iterator slId;
154  for (slId = segment2Ds->id_begin();
155  slId != segment2Ds->id_end();
156  ++slId){
157 
158  //------------------------- simHits ---------------------------//
159  //Get simHits of each superlayer
160  PSimHitContainer simHits = simHitsPerSl[(*slId)];
161 
162  // Map simhits per wire
163  map<DTWireId, PSimHitContainer > simHitsPerWire = DTHitQualityUtils::mapSimHitsPerWire(simHits);
164  map<DTWireId, const PSimHit*> muSimHitPerWire = DTHitQualityUtils::mapMuSimHitsPerWire(simHitsPerWire);
165  int nMuSimHit = muSimHitPerWire.size();
166  if(nMuSimHit == 0 || nMuSimHit == 1) {
167  if(debug && nMuSimHit == 1)
168  cout << "[DTSegment2DQuality] Only " << nMuSimHit << " mu SimHit in this SL, skipping!" << endl;
169  continue; // If no or only one mu SimHit is found skip this SL
170  }
171  if(debug)
172  cout << "=== SL " << (*slId) << " has " << nMuSimHit << " SimHits" << endl;
173 
174  //Find outer and inner mu SimHit to build a segment
175  pair<const PSimHit*, const PSimHit*> inAndOutSimHit = DTHitQualityUtils::findMuSimSegment(muSimHitPerWire);
176  //Check that outermost and innermost SimHit are not the same
177  if(inAndOutSimHit.first ==inAndOutSimHit.second ) {
178  cout << "[DTHitQualityUtils]***Warning: outermost and innermost SimHit are the same!" << endl;
179  continue;
180  }
181 
182  //Find direction and position of the sim Segment in SL RF
183  pair<LocalVector, LocalPoint> dirAndPosSimSegm = DTHitQualityUtils::findMuSimSegmentDirAndPos(inAndOutSimHit,
184  (*slId),&(*dtGeom));
185 
186  LocalVector simSegmLocalDir = dirAndPosSimSegm.first;
187  LocalPoint simSegmLocalPos = dirAndPosSimSegm.second;
188  if(debug)
189  cout<<" Simulated segment: local direction "<<simSegmLocalDir<<endl
190  <<" local position "<<simSegmLocalPos<<endl;
191  const DTSuperLayer* superLayer = dtGeom->superLayer(*slId);
192  GlobalPoint simSegmGlobalPos = superLayer->toGlobal(simSegmLocalPos);
193 
194  //Atan(x/z) angle and x position in SL RF
195  float angleSimSeg = DTHitQualityUtils::findSegmentAlphaAndBeta(simSegmLocalDir).first;
196  float posSimSeg = simSegmLocalPos.x();
197  //Position (in eta,phi coordinates) in the global RF
198  float etaSimSeg = simSegmGlobalPos.eta();
199  float phiSimSeg = simSegmGlobalPos.phi();
200 
201 
202  //---------------------------- recHits --------------------------//
203  // Get the range of rechit for the corresponding slId
204  bool recHitFound = false;
205  DTRecSegment2DCollection::range range = segment2Ds->get(*slId);
206  int nsegm = distance(range.first, range.second);
207  if(debug)
208  cout << " Sl: " << *slId << " has " << nsegm
209  << " 2D segments" << endl;
210 
211  if (nsegm!=0) {
212  // Find the best RecHit: look for the 2D RecHit with the angle closest
213  // to that of segment made of SimHits.
214  // RecHits must have delta alpha and delta position within 5 sigma of
215  // the residual distribution (we are looking for residuals of segments
216  // usefull to the track fit) for efficency purpose
217  const DTRecSegment2D* bestRecHit = 0;
218  bool bestRecHitFound = false;
219  double deltaAlpha = 99999;
220 
221  // Loop over the recHits of this slId
222  for (DTRecSegment2DCollection::const_iterator segment2D = range.first;
223  segment2D!=range.second;
224  ++segment2D){
225  // Check the dimension
226  if((*segment2D).dimension() != 2) {
227  if(debug) cout << "[DTSegment2DQuality]***Error: This is not 2D segment!!!" << endl;
228  abort();
229  }
230  // Segment Local Direction and position (in SL RF)
231  LocalVector recSegDirection = (*segment2D).localDirection();
232  LocalPoint recSegPosition = (*segment2D).localPosition();
233 
234  float recSegAlpha = DTHitQualityUtils::findSegmentAlphaAndBeta(recSegDirection).first;
235  if(debug)
236  cout << " RecSegment direction: " << recSegDirection << endl
237  << " position : " << recSegPosition << endl
238  << " alpha : " << recSegAlpha << endl;
239 
240  if(fabs(recSegAlpha - angleSimSeg) < deltaAlpha) {
241  deltaAlpha = fabs(recSegAlpha - angleSimSeg);
242  bestRecHit = &(*segment2D);
243  bestRecHitFound = true;
244  }
245  } // End of Loop over all 2D RecHits
246 
247  if(bestRecHitFound) {
248  // Best rechit direction and position in SL RF
249  LocalPoint bestRecHitLocalPos = bestRecHit->localPosition();
250  LocalVector bestRecHitLocalDir = bestRecHit->localDirection();
251 
252  LocalError bestRecHitLocalPosErr = bestRecHit->localPositionError();
253  LocalError bestRecHitLocalDirErr = bestRecHit->localDirectionError();
254 
255  float angleBestRHit = DTHitQualityUtils::findSegmentAlphaAndBeta(bestRecHitLocalDir).first;
256 
257  if(fabs(angleBestRHit - angleSimSeg) < 5*sigmaResAngle &&
258  fabs(bestRecHitLocalPos.x() - posSimSeg) < 5*sigmaResPos) {
259  recHitFound = true;
260  }
261 
262  // Fill Residual histos
263  HRes2DHit *hRes = 0;
264  if((*slId).superlayer() == 1 || (*slId).superlayer() == 3) { //RPhi SL
265  hRes = h2DHitRPhi;
266  } else if((*slId).superlayer() == 2) { //RZ SL
267  h2DHitRZ->Fill(angleSimSeg,
268  angleBestRHit,
269  posSimSeg,
270  bestRecHitLocalPos.x(),
271  etaSimSeg,
272  phiSimSeg,
273  sqrt(bestRecHitLocalPosErr.xx()),
274  sqrt(bestRecHitLocalDirErr.xx())
275  );
276  if(abs((*slId).wheel()) == 0)
277  hRes = h2DHitRZ_W0;
278  else if(abs((*slId).wheel()) == 1)
279  hRes = h2DHitRZ_W1;
280  else if(abs((*slId).wheel()) == 2)
281  hRes = h2DHitRZ_W2;
282  }
283  hRes->Fill(angleSimSeg,
284  angleBestRHit,
285  posSimSeg,
286  bestRecHitLocalPos.x(),
287  etaSimSeg,
288  phiSimSeg,
289  sqrt(bestRecHitLocalPosErr.xx()),
290  sqrt(bestRecHitLocalDirErr.xx())
291  );
292  }
293  } //end of if(nsegm!=0)
294 
295  // Fill Efficiency plot
296  HEff2DHit *hEff = 0;
297  if((*slId).superlayer() == 1 || (*slId).superlayer() == 3) { //RPhi SL
298  hEff = h2DHitEff_RPhi;
299  } else if((*slId).superlayer() == 2) { //RZ SL
300  h2DHitEff_RZ->Fill(etaSimSeg, phiSimSeg, posSimSeg, angleSimSeg, recHitFound);
301  if(abs((*slId).wheel()) == 0)
302  hEff = h2DHitEff_RZ_W0;
303  else if(abs((*slId).wheel()) == 1)
304  hEff = h2DHitEff_RZ_W1;
305  else if(abs((*slId).wheel()) == 2)
306  hEff = h2DHitEff_RZ_W2;
307  }
308  hEff->Fill(etaSimSeg, phiSimSeg, posSimSeg, angleSimSeg, recHitFound);
309  } // End of loop over superlayers
310 }
virtual LocalError localPositionError() const
local position error in SL frame
float xx() const
Definition: LocalError.h:24
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:50
edm::EDGetTokenT< edm::PSimHitContainer > simHitToken_
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:52
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
virtual LocalError localDirectionError() const
the local direction error (xx,xy,yy) in SL frame: only xx is not 0.
static std::map< DTWireId, const PSimHit * > mapMuSimHitsPerWire(const std::map< DTWireId, edm::PSimHitContainer > &simHitWireMap)
Create a map between the Mu SimHits and corresponding MuBarWireId ;.
static std::pair< const PSimHit *, const PSimHit * > findMuSimSegment(const std::map< DTWireId, const PSimHit * > &mapWireAndMuSimHit)
Find Innermost and outermost SimHit from Mu in a SL (they identify a simulated segment) ...
T sqrt(T t)
Definition: SSEVec.h:48
void Fill(float angleSimSegment, float angleRecSegment, float posSimSegment, float posRecSegment, float etaSimSegment, float phiSimSegment, float sigmaPos, float sigmaAngle)
Definition: Histograms.h:388
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HEff2DHit * h2DHitEff_RZ_W0
edm::EDGetTokenT< DTRecSegment2DCollection > segment2DToken_
bool isValid() const
Definition: HandleBase.h:75
static std::pair< double, double > findSegmentAlphaAndBeta(const LocalVector &direction)
virtual LocalPoint localPosition() const
local position in SL frame
static std::pair< LocalVector, LocalPoint > findMuSimSegmentDirAndPos(const std::pair< const PSimHit *, const PSimHit * > &inAndOutSimHit, const DetId detId, const DTGeometry *muonGeom)
Find direction and position of a segment (in local RF) from outer and inner mu SimHit in the RF of ob...
HEff2DHit * h2DHitEff_RZ_W1
HEff2DHit * h2DHitEff_RPhi
void Fill(float etaSimSegm, float phiSimSegm, float posSimSegm, float angleSimSegm, bool fillRecHit)
Definition: Histograms.h:529
const T & get() const
Definition: EventSetup.h:56
tuple simHits
Definition: trackerHits.py:16
T eta() const
Definition: PV3DBase.h:76
edm::InputTag segment2DLabel
virtual LocalVector localDirection() const
the local direction in SL frame
tuple cout
Definition: gather_cfg.py:121
std::vector< PSimHit > PSimHitContainer
static std::map< DTWireId, edm::PSimHitContainer > mapSimHitsPerWire(const edm::PSimHitContainer &simhits)
T x() const
Definition: PV3DBase.h:62
HEff2DHit * h2DHitEff_RZ_W2
void DTSegment2DQuality::beginRun ( const edm::Run iRun,
const edm::EventSetup setup 
)
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 57 of file DTSegment2DQuality.cc.

References gather_cfg::cout, dbe_, debug, and cppFunctionSkipper::operator.

57  {
58 
59  // ----------------------
60  // get hold of back-end interface
61  dbe_ = 0;
63  if ( dbe_ ) {
64  if (debug) {
65  dbe_->setVerbose(1);
66  } else {
67  dbe_->setVerbose(0);
68  }
69  }
70  if ( dbe_ ) {
71  if ( debug ) dbe_->showDirStructure();
72  }
73 
74  h2DHitRPhi = new HRes2DHit ("RPhi",dbe_,true,true);
75  h2DHitRZ= new HRes2DHit ("RZ",dbe_,true,true);
76  h2DHitRZ_W0= new HRes2DHit ("RZ_W0",dbe_,true,true);
77  h2DHitRZ_W1= new HRes2DHit ("RZ_W1",dbe_,true,true);
78  h2DHitRZ_W2= new HRes2DHit ("RZ_W2",dbe_,true,true);
79 
80  h2DHitEff_RPhi= new HEff2DHit ("RPhi",dbe_);
81  h2DHitEff_RZ= new HEff2DHit ("RZ",dbe_);
82  h2DHitEff_RZ_W0= new HEff2DHit ("RZ_W0",dbe_);
83  h2DHitEff_RZ_W1= new HEff2DHit ("RZ_W1",dbe_);
84  h2DHitEff_RZ_W2= new HEff2DHit ("RZ_W2",dbe_);
85  if(debug)
86  cout << "[DTSegment2DQuality] hitsos created " << endl;
87 }
HEff2DHit * h2DHitEff_RZ_W0
HEff2DHit * h2DHitEff_RZ_W1
HEff2DHit * h2DHitEff_RPhi
tuple cout
Definition: gather_cfg.py:121
HEff2DHit * h2DHitEff_RZ_W2
void DTSegment2DQuality::endJob ( void  )
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 94 of file DTSegment2DQuality.cc.

94  {
95  // Write the histos to file
96  //theFile->cd();
97 
98  //h2DHitRPhi->Write();
99  //h2DHitRZ->Write();
100  //h2DHitRZ_W0->Write();
101  //h2DHitRZ_W1->Write();
102  //h2DHitRZ_W2->Write();
103 
109 
110  //h2DHitEff_RPhi->Write();
111  //h2DHitEff_RZ->Write();
112  //h2DHitEff_RZ_W0->Write();
113  //h2DHitEff_RZ_W1->Write();
114  //h2DHitEff_RZ_W2->Write();
115  //if ( rootFileName.size() != 0 && dbe_ ) dbe_->save(rootFileName);
116 
117  //theFile->Close();
118 }
void ComputeEfficiency()
Definition: Histograms.h:549
HEff2DHit * h2DHitEff_RZ_W0
HEff2DHit * h2DHitEff_RZ_W1
HEff2DHit * h2DHitEff_RPhi
HEff2DHit * h2DHitEff_RZ_W2

Member Data Documentation

DQMStore* DTSegment2DQuality::dbe_
private

Definition at line 82 of file DTSegment2DQuality.h.

bool DTSegment2DQuality::debug
private

Definition at line 57 of file DTSegment2DQuality.h.

HEff2DHit* DTSegment2DQuality::h2DHitEff_RPhi
private

Definition at line 77 of file DTSegment2DQuality.h.

HEff2DHit* DTSegment2DQuality::h2DHitEff_RZ
private

Definition at line 78 of file DTSegment2DQuality.h.

HEff2DHit* DTSegment2DQuality::h2DHitEff_RZ_W0
private

Definition at line 79 of file DTSegment2DQuality.h.

HEff2DHit* DTSegment2DQuality::h2DHitEff_RZ_W1
private

Definition at line 80 of file DTSegment2DQuality.h.

HEff2DHit* DTSegment2DQuality::h2DHitEff_RZ_W2
private

Definition at line 81 of file DTSegment2DQuality.h.

HRes2DHit* DTSegment2DQuality::h2DHitRPhi
private

Definition at line 71 of file DTSegment2DQuality.h.

HRes2DHit* DTSegment2DQuality::h2DHitRZ
private

Definition at line 72 of file DTSegment2DQuality.h.

HRes2DHit* DTSegment2DQuality::h2DHitRZ_W0
private

Definition at line 73 of file DTSegment2DQuality.h.

HRes2DHit* DTSegment2DQuality::h2DHitRZ_W1
private

Definition at line 74 of file DTSegment2DQuality.h.

HRes2DHit* DTSegment2DQuality::h2DHitRZ_W2
private

Definition at line 75 of file DTSegment2DQuality.h.

std::string DTSegment2DQuality::rootFileName
private

Definition at line 59 of file DTSegment2DQuality.h.

edm::InputTag DTSegment2DQuality::segment2DLabel
private

Definition at line 62 of file DTSegment2DQuality.h.

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

Definition at line 64 of file DTSegment2DQuality.h.

double DTSegment2DQuality::sigmaResAngle
private

Definition at line 69 of file DTSegment2DQuality.h.

double DTSegment2DQuality::sigmaResPos
private

Definition at line 67 of file DTSegment2DQuality.h.

edm::InputTag DTSegment2DQuality::simHitLabel
private

Definition at line 61 of file DTSegment2DQuality.h.

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

Definition at line 63 of file DTSegment2DQuality.h.