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 Member Functions | Private Attributes
DTRecHitQuality Class Reference

#include <DTRecHitQuality.h>

Inheritance diagram for DTRecHitQuality:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &eventSetup)
 Perform the real analysis. More...
 
 DTRecHitQuality (const edm::ParameterSet &pset)
 Constructor. More...
 
void endJob ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
 
virtual ~DTRecHitQuality ()
 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
 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
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

template<typename type >
void compute (const DTGeometry *dtGeom, const std::map< DTWireId, std::vector< PSimHit > > &simHitsPerWire, const std::map< DTWireId, std::vector< type > > &recHitsPerWire, int step)
 
template<typename type >
const typefindBestRecHit (const DTLayer *layer, DTWireId wireId, const std::vector< type > &recHits, const float simHitDist)
 
std::map< DTWireId,
std::vector< DTRecHit1DPair > > 
map1DRecHitsPerWire (const DTRecHitCollection *dt1DRecHitPairs)
 
std::map< DTWireId,
std::vector< DTRecHit1D > > 
map1DRecHitsPerWire (const DTRecSegment2DCollection *segment2Ds)
 
std::map< DTWireId,
std::vector< DTRecHit1D > > 
map1DRecHitsPerWire (const DTRecSegment4DCollection *segment4Ds)
 
float recHitDistFromWire (const DTRecHit1DPair &hitPair, const DTLayer *layer)
 
float recHitDistFromWire (const DTRecHit1D &recHit, const DTLayer *layer)
 
float recHitPositionError (const DTRecHit1DPair &recHit)
 
float recHitPositionError (const DTRecHit1D &recHit)
 
float simHitDistFromFE (const DTLayer *layer, DTWireId wireId, const PSimHit &hit)
 
float simHitDistFromWire (const DTLayer *layer, DTWireId wireId, const PSimHit &hit)
 
float simHitImpactAngle (const DTLayer *layer, DTWireId wireId, const PSimHit &hit)
 

Private Attributes

DQMStoredbe_
 
bool debug
 
bool doall
 
bool doStep1
 
bool doStep2
 
bool doStep3
 
HEff1DHithEff_S1RPhi
 
HEff1DHithEff_S1RPhiWS [3][4]
 
HEff1DHithEff_S1RZ
 
HEff1DHithEff_S1RZ_W0
 
HEff1DHithEff_S1RZ_W1
 
HEff1DHithEff_S1RZ_W2
 
HEff1DHithEff_S1RZWS [3][4]
 
HEff1DHithEff_S2RPhi
 
HEff1DHithEff_S2RZ
 
HEff1DHithEff_S2RZ_W0
 
HEff1DHithEff_S2RZ_W1
 
HEff1DHithEff_S2RZ_W2
 
HEff1DHithEff_S3RPhi
 
HEff1DHithEff_S3RPhiWS [3][4]
 
HEff1DHithEff_S3RZ
 
HEff1DHithEff_S3RZ_W0
 
HEff1DHithEff_S3RZ_W1
 
HEff1DHithEff_S3RZ_W2
 
HEff1DHithEff_S3RZWS [3][4]
 
HRes1DHithRes_S1RPhi
 
HRes1DHithRes_S1RPhi_W0
 
HRes1DHithRes_S1RPhi_W1
 
HRes1DHithRes_S1RPhi_W2
 
HRes1DHithRes_S1RZ
 
HRes1DHithRes_S1RZ_W0
 
HRes1DHithRes_S1RZ_W1
 
HRes1DHithRes_S1RZ_W2
 
HRes1DHithRes_S2RPhi
 
HRes1DHithRes_S2RPhi_W0
 
HRes1DHithRes_S2RPhi_W1
 
HRes1DHithRes_S2RPhi_W2
 
HRes1DHithRes_S2RZ
 
HRes1DHithRes_S2RZ_W0
 
HRes1DHithRes_S2RZ_W1
 
HRes1DHithRes_S2RZ_W2
 
HRes1DHithRes_S3RPhi
 
HRes1DHithRes_S3RPhi_W0
 
HRes1DHithRes_S3RPhi_W1
 
HRes1DHithRes_S3RPhi_W2
 
HRes1DHithRes_S3RPhiWS [3][4]
 
HRes1DHithRes_S3RZ
 
HRes1DHithRes_S3RZ_W0
 
HRes1DHithRes_S3RZ_W1
 
HRes1DHithRes_S3RZ_W2
 
HRes1DHithRes_S3RZWS [3][4]
 
bool local
 
edm::InputTag recHitLabel
 
std::string rootFileName
 
edm::InputTag segment2DLabel
 
edm::InputTag segment4DLabel
 
edm::InputTag simHitLabel
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- 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 1D DTRecHits and plot resolution comparing reconstructed and simulated quantities

Residual/pull plots are filled for the rechit with distance from wire closer to that of the muon simhit.

Efficiencies are defined as the fraction of muon simhits with a rechit in the same cell, for the given reconstruction step. Hence, for S2 and S3 the definition incorporate the segment reconstruction efficiency.

Author
G. Cerminara - INFN Torino

Definition at line 49 of file DTRecHitQuality.h.

Constructor & Destructor Documentation

DTRecHitQuality::DTRecHitQuality ( const edm::ParameterSet pset)

Constructor.

Definition at line 37 of file DTRecHitQuality.cc.

References dbe_, debug, edm::ParameterSet::getUntrackedParameter(), cppFunctionSkipper::operator, alignCSCRings::s, and w().

37  {
38  // Get the debug parameter for verbose output
39  debug = pset.getUntrackedParameter<bool>("debug");
40  // the name of the simhit collection
41  simHitLabel = pset.getUntrackedParameter<InputTag>("simHitLabel");
42  // the name of the 1D rec hit collection
43  recHitLabel = pset.getUntrackedParameter<InputTag>("recHitLabel");
44  // the name of the 2D rec hit collection
45  segment2DLabel = pset.getUntrackedParameter<InputTag>("segment2DLabel");
46  // the name of the 4D rec hit collection
47  segment4DLabel = pset.getUntrackedParameter<InputTag>("segment4DLabel");
48 
49  // Switches for analysis at various steps
50  doStep1 = pset.getUntrackedParameter<bool>("doStep1", false);
51  doStep2 = pset.getUntrackedParameter<bool>("doStep2", false);
52  doStep3 = pset.getUntrackedParameter<bool>("doStep3", false);
53  doall = pset.getUntrackedParameter<bool>("doall", false);
54  local = pset.getUntrackedParameter<bool>("local", true);
55  // if(doall) doStep1
56  // Create the root file
57  //theFile = new TFile(rootFileName.c_str(), "RECREATE");
58  //theFile->cd();
59 
60 
61  // ----------------------
62  // get hold of back-end interface
63  dbe_ = 0;
64  dbe_ = Service<DQMStore>().operator->();
65  /*if ( dbe_ ) {
66  if (debug) {
67  dbe_->setVerbose(1);
68  } else {
69  dbe_->setVerbose(0);
70  }
71  }*/
72  dbe_->setVerbose(0);
73  /*if ( dbe_ ) {
74  if ( debug ) dbe_->showDirStructure();
75  }*/
76  if(doall && doStep1){
77  hRes_S1RPhi= new HRes1DHit("S1RPhi",dbe_,true,local); // RecHits, 1. step, RPhi
78  hRes_S1RPhi_W0= new HRes1DHit("S1RPhi_W0",dbe_,true,local); // RecHits, 1. step, RZ, wheel 0
79  hRes_S1RPhi_W1= new HRes1DHit("S1RPhi_W1",dbe_,true,local); // RecHits, 1. step, RZ, wheel +-1
80  hRes_S1RPhi_W2= new HRes1DHit("S1RPhi_W2",dbe_,true,local); // RecHits, 1. step, RZ, wheel +-2
81  hRes_S1RZ= new HRes1DHit("S1RZ",dbe_,true,local); // RecHits, 1. step, RZ
82  hRes_S1RZ_W0= new HRes1DHit("S1RZ_W0",dbe_,true,local); // RecHits, 1. step, RZ, wheel 0
83  hRes_S1RZ_W1= new HRes1DHit("S1RZ_W1",dbe_,true,local); // RecHits, 1. step, RZ, wheel +-1
84  hRes_S1RZ_W2= new HRes1DHit("S1RZ_W2",dbe_,true,local); // RecHits, 1. step, RZ, wheel +-2
85  hEff_S1RPhi= new HEff1DHit("S1RPhi",dbe_); // RecHits, 1. step, RPhi
86  hEff_S1RZ= new HEff1DHit("S1RZ",dbe_); // RecHits, 1. step, RZ
87  hEff_S1RZ_W0= new HEff1DHit("S1RZ_W0",dbe_); // RecHits, 1. step, RZ, wheel 0
88  hEff_S1RZ_W1= new HEff1DHit("S1RZ_W1",dbe_); // RecHits, 1. step, RZ, wheel +-1
89  hEff_S1RZ_W2= new HEff1DHit("S1RZ_W2",dbe_); // RecHits, 1. step, RZ, wheel +-2
90  }
91  if(doall && doStep2){
92  hRes_S2RPhi= new HRes1DHit("S2RPhi",dbe_,true,local); // RecHits, 2. step, RPhi
93  hRes_S2RPhi_W0= new HRes1DHit("S2RPhi_W0",dbe_,true,local); // RecHits, 2. step, RPhi, wheel 0
94  hRes_S2RPhi_W1= new HRes1DHit("S2RPhi_W1",dbe_,true,local); // RecHits, 2. step, RPhi, wheel +-1
95  hRes_S2RPhi_W2= new HRes1DHit("S2RPhi_W2",dbe_,true,local); // RecHits, 2. step, RPhi, wheel +-2
96  hRes_S2RZ= new HRes1DHit("S2RZ",dbe_,true,local); // RecHits, 2. step, RZ
97  hRes_S2RZ_W0= new HRes1DHit("S2RZ_W0",dbe_,true,local); // RecHits, 2. step, RZ, wheel 0
98  hRes_S2RZ_W1= new HRes1DHit("S2RZ_W1",dbe_,true,local); // RecHits, 2. step, RZ, wheel +-1
99  hRes_S2RZ_W2= new HRes1DHit("S2RZ_W2",dbe_,true,local); // RecHits, 2. step, RZ, wheel +-2
100  hEff_S2RPhi= new HEff1DHit("S2RPhi",dbe_); // RecHits, 2. step, RPhi
101  hEff_S2RZ_W0= new HEff1DHit("S2RZ_W0",dbe_); // RecHits, 2. step, RZ, wheel 0
102  hEff_S2RZ_W1= new HEff1DHit("S2RZ_W1",dbe_); // RecHits, 2. step, RZ, wheel +-1
103  hEff_S2RZ_W2= new HEff1DHit("S2RZ_W2",dbe_); // RecHits, 2. step, RZ, wheel +-2
104  hEff_S2RZ= new HEff1DHit("S2RZ",dbe_); // RecHits, 2. step, RZ
105  }
106  if(doStep3){
107  hRes_S3RPhi= new HRes1DHit("S3RPhi",dbe_,doall,local); // RecHits, 3. step, RPhi
108  hRes_S3RPhi_W0= new HRes1DHit("S3RPhi_W0",dbe_,doall,local); // RecHits, 3. step, RPhi, wheel 0
109  hRes_S3RPhi_W1= new HRes1DHit("S3RPhi_W1",dbe_,doall,local); // RecHits, 3. step, RPhi, wheel +-1
110  hRes_S3RPhi_W2= new HRes1DHit("S3RPhi_W2",dbe_,doall,local); // RecHits, 3. step, RPhi, wheel +-2
111  hRes_S3RZ= new HRes1DHit("S3RZ",dbe_,doall,local); // RecHits, 3. step, RZ
112  hRes_S3RZ_W0= new HRes1DHit("S3RZ_W0",dbe_,doall,local); // RecHits, 3. step, RZ, wheel 0
113  hRes_S3RZ_W1= new HRes1DHit("S3RZ_W1",dbe_,doall,local); // RecHits, 3. step, RZ, wheel +-1
114  hRes_S3RZ_W2= new HRes1DHit("S3RZ_W2",dbe_,doall,local); // RecHits, 3. step, RZ, wheel +-2
115 
116  if (local) {
117  // Plots with finer granularity, not to be included in DQM
118  TString name1="RPhi_W";
119  TString name2="RZ_W";
120  for (long w=0;w<=2;++w) {
121  for (long s=1;s<=4;++s){
122  hRes_S3RPhiWS[w][s-1] = new HRes1DHit(("S3"+name1+w+"_St"+s).Data(),dbe_,doall,local);
123  hEff_S1RPhiWS[w][s-1] = new HEff1DHit(("S1"+name1+w+"_St"+s).Data(),dbe_);
124  hEff_S3RPhiWS[w][s-1] = new HEff1DHit(("S3"+name1+w+"_St"+s).Data(),dbe_);
125  if (s!=4) {
126  hRes_S3RZWS[w][s-1] = new HRes1DHit(("S3"+name2+w+"_St"+s).Data(),dbe_,doall,local);
127  hEff_S1RZWS[w][s-1] = new HEff1DHit(("S1"+name2+w+"_St"+s).Data(),dbe_);
128  hEff_S3RZWS[w][s-1] = new HEff1DHit(("S3"+name2+w+"_St"+s).Data(),dbe_);
129  }
130  }
131  }
132  }
133 
134 
135  if(doall){
136  hEff_S3RPhi= new HEff1DHit("S3RPhi",dbe_); // RecHits, 3. step, RPhi
137  hEff_S3RZ= new HEff1DHit("S3RZ",dbe_); // RecHits, 3. step, RZ
138  hEff_S3RZ_W0= new HEff1DHit("S3RZ_W0",dbe_); // RecHits, 3. step, RZ, wheel 0
139  hEff_S3RZ_W1= new HEff1DHit("S3RZ_W1",dbe_); // RecHits, 3. step, RZ, wheel +-1
140  hEff_S3RZ_W2= new HEff1DHit("S3RZ_W2",dbe_); // RecHits, 3. step, RZ, wheel +-2
141  }
142  }
143 }
edm::InputTag simHitLabel
edm::InputTag recHitLabel
T getUntrackedParameter(std::string const &, T const &) const
HEff1DHit * hEff_S3RZ
HEff1DHit * hEff_S2RZ_W0
HRes1DHit * hRes_S3RPhi_W0
HEff1DHit * hEff_S2RZ
HEff1DHit * hEff_S3RPhi
HRes1DHit * hRes_S1RPhi_W1
HEff1DHit * hEff_S1RZWS[3][4]
HRes1DHit * hRes_S1RPhi_W0
HRes1DHit * hRes_S1RZ
HRes1DHit * hRes_S3RZ_W2
HEff1DHit * hEff_S1RZ_W2
HEff1DHit * hEff_S3RZ_W1
HRes1DHit * hRes_S3RZWS[3][4]
HRes1DHit * hRes_S1RZ_W2
HRes1DHit * hRes_S2RPhi_W0
HRes1DHit * hRes_S1RPhi
HRes1DHit * hRes_S2RPhi_W1
HEff1DHit * hEff_S3RPhiWS[3][4]
void setVerbose(unsigned level)
Definition: DQMStore.cc:548
HRes1DHit * hRes_S2RZ_W1
A set of histograms of residuals and pulls for 1D RecHits.
Definition: Histograms.h:26
HEff1DHit * hEff_S3RZ_W2
HEff1DHit * hEff_S1RZ_W0
HRes1DHit * hRes_S2RZ_W0
HRes1DHit * hRes_S2RPhi_W2
HEff1DHit * hEff_S2RZ_W1
HRes1DHit * hRes_S1RPhi_W2
HRes1DHit * hRes_S1RZ_W1
HEff1DHit * hEff_S3RZ_W0
HEff1DHit * hEff_S2RZ_W2
HRes1DHit * hRes_S2RPhi
HRes1DHit * hRes_S3RPhi_W2
HEff1DHit * hEff_S1RPhi
HEff1DHit * hEff_S1RZ
HEff1DHit * hEff_S3RZWS[3][4]
HRes1DHit * hRes_S3RPhi
HEff1DHit * hEff_S2RPhi
HEff1DHit * hEff_S1RZ_W1
edm::InputTag segment4DLabel
HRes1DHit * hRes_S3RZ_W0
HRes1DHit * hRes_S3RZ_W1
HEff1DHit * hEff_S1RPhiWS[3][4]
HRes1DHit * hRes_S3RZ
HRes1DHit * hRes_S2RZ
T w() const
edm::InputTag segment2DLabel
HRes1DHit * hRes_S2RZ_W2
HRes1DHit * hRes_S3RPhi_W1
HRes1DHit * hRes_S3RPhiWS[3][4]
HRes1DHit * hRes_S1RZ_W0
DTRecHitQuality::~DTRecHitQuality ( )
virtual

Destructor.

Definition at line 147 of file DTRecHitQuality.cc.

147  {
148 }

Member Function Documentation

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

Perform the real analysis.

Implements edm::EDAnalyzer.

Definition at line 184 of file DTRecHitQuality.cc.

References bookConverter::compute(), gather_cfg::cout, debug, edm::EventSetup::get(), edm::HandleBase::isValid(), DTHitQualityUtils::mapSimHitsPerWire(), edm::Handle< T >::product(), edm::ESHandle< class >::product(), and trackerHits::simHits.

184  {
185  if(debug)
186  cout << "--- [DTRecHitQuality] Analysing Event: #Run: " << event.id().run()
187  << " #Event: " << event.id().event() << endl;
188  //theFile->cd();
189  // Get the DT Geometry
190  ESHandle<DTGeometry> dtGeom;
191  eventSetup.get<MuonGeometryRecord>().get(dtGeom);
192 
193  // Get the SimHit collection from the event
195  event.getByLabel(simHitLabel, simHits);
196 
197  // Map simhits per wire
198  map<DTWireId, PSimHitContainer > simHitsPerWire =
200 
201 
202 
203  //=======================================================================================
204  // RecHit analysis at Step 1
205  if(doStep1 && doall) {
206  if(debug)
207  cout << " -- DTRecHit S1: begin analysis:" << endl;
208  // Get the rechit collection from the event
209  Handle<DTRecHitCollection> dtRecHits;
210  event.getByLabel(recHitLabel, dtRecHits);
211 
212  if(!dtRecHits.isValid()) {
213  if(debug) cout << "[DTRecHitQuality]**Warning: no 1DRechits with label: " << recHitLabel << " in this event, skipping!" << endl;
214  return;
215  }
216 
217  // Map rechits per wire
218  map<DTWireId,vector<DTRecHit1DPair> > recHitsPerWire =
219  map1DRecHitsPerWire(dtRecHits.product());
220 
221  compute(dtGeom.product(), simHitsPerWire, recHitsPerWire, 1);
222  }
223 
224 
225  //=======================================================================================
226  // RecHit analysis at Step 2
227  if(doStep2 && doall) {
228  if(debug)
229  cout << " -- DTRecHit S2: begin analysis:" << endl;
230 
231  // Get the 2D rechits from the event
233  event.getByLabel(segment2DLabel, segment2Ds);
234 
235  if(!segment2Ds.isValid()) {
236  if(debug) cout << "[DTRecHitQuality]**Warning: no 2DSegments with label: " << segment2DLabel
237  << " in this event, skipping!" << endl;
238 
239  }
240  else{
241  // Map rechits per wire
242  map<DTWireId,vector<DTRecHit1D> > recHitsPerWire =
243  map1DRecHitsPerWire(segment2Ds.product());
244 
245  compute(dtGeom.product(), simHitsPerWire, recHitsPerWire, 2);
246  }
247  }
248 
249  //=======================================================================================
250  // RecHit analysis at Step 3
251  if(doStep3) {
252  if(debug)
253  cout << " -- DTRecHit S3: begin analysis:" << endl;
254 
255  // Get the 4D rechits from the event
257  event.getByLabel(segment4DLabel, segment4Ds);
258 
259  if(!segment4Ds.isValid()) {
260  if(debug) cout << "[DTRecHitQuality]**Warning: no 4D Segments with label: " << segment4DLabel
261  << " in this event, skipping!" << endl;
262  return;
263  }
264 
265  // Map rechits per wire
266  map<DTWireId,vector<DTRecHit1D> > recHitsPerWire =
267  map1DRecHitsPerWire(segment4Ds.product());
268 
269  compute(dtGeom.product(), simHitsPerWire, recHitsPerWire, 3);
270  }
271 
272  }
edm::InputTag simHitLabel
edm::InputTag recHitLabel
void compute(const DTGeometry *dtGeom, const std::map< DTWireId, std::vector< PSimHit > > &simHitsPerWire, const std::map< DTWireId, std::vector< type > > &recHitsPerWire, int step)
std::map< DTWireId, std::vector< DTRecHit1DPair > > map1DRecHitsPerWire(const DTRecHitCollection *dt1DRecHitPairs)
bool isValid() const
Definition: HandleBase.h:76
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
tuple simHits
Definition: trackerHits.py:16
T const * product() const
Definition: Handle.h:81
edm::InputTag segment4DLabel
tuple cout
Definition: gather_cfg.py:121
edm::InputTag segment2DLabel
static std::map< DTWireId, edm::PSimHitContainer > mapSimHitsPerWire(const edm::PSimHitContainer &simhits)
template<typename type >
void DTRecHitQuality::compute ( const DTGeometry dtGeom,
const std::map< DTWireId, std::vector< PSimHit > > &  simHitsPerWire,
const std::map< DTWireId, std::vector< type > > &  recHitsPerWire,
int  step 
)
private

Definition at line 416 of file DTRecHitQuality.cc.

References funct::abs(), gather_cfg::cout, debug, PV3DBase< T, PVType, FrameType >::eta(), HRes1DHit::Fill(), HEff1DHit::Fill(), DTHitQualityUtils::findMuSimHit(), DTGeometry::layer(), PSimHit::localPosition(), python.multivaluedict::map(), PV3DBase< T, PVType, FrameType >::phi(), DTChamberId::station(), DTSuperLayerId::superLayer(), DTSuperLayerId::superlayer(), GeomDet::toGlobal(), and DTChamberId::wheel().

419  {
420  // Loop over cells with a muon SimHit
421  for(map<DTWireId, vector<PSimHit> >::const_iterator wireAndSHits = simHitsPerWire.begin();
422  wireAndSHits != simHitsPerWire.end();
423  wireAndSHits++) {
424  DTWireId wireId = (*wireAndSHits).first;
425  vector<PSimHit> simHitsInCell = (*wireAndSHits).second;
426 
427  // Get the layer
428  const DTLayer* layer = dtGeom->layer(wireId);
429 
430  // Look for a mu hit in the cell
431  const PSimHit* muSimHit = DTHitQualityUtils::findMuSimHit(simHitsInCell);
432  if (muSimHit==0) {
433  if (debug)
434  cout << " No mu SimHit in channel: " << wireId << ", skipping! " << endl;
435  continue; // Skip this cell
436  }
437 
438  // Find the distance of the simhit from the wire
439  float simHitWireDist = simHitDistFromWire(layer, wireId, *muSimHit);
440  // Skip simhits out of the cell
441  if(simHitWireDist>2.1) {
442  if(debug)
443  cout << " [DTRecHitQuality]###Warning: The mu SimHit in out of the cell, skipping!" << endl;
444  continue; // Skip this cell
445  }
446  GlobalPoint simHitGlobalPos = layer->toGlobal(muSimHit->localPosition());
447 
448  // find SH impact angle
449  float simHitTheta = simHitImpactAngle(layer, wireId, *muSimHit);
450 
451  // find SH distance from FE
452  float simHitFEDist = simHitDistFromFE(layer, wireId, *muSimHit);
453 
454  bool recHitReconstructed = false;
455 
456  // Look for RecHits in the same cell
457  if(recHitsPerWire.find(wireId) == recHitsPerWire.end()) {
458  // No RecHit found in this cell
459  if(debug)
460  cout << " No RecHit found at Step: " << step << " in cell: " << wireId << endl;
461  } else {
462  recHitReconstructed = true;
463  // vector<type> recHits = (*wireAndRecHits).second;
464  vector<type> recHits = recHitsPerWire.at(wireId);
465  if(debug)
466  cout << " " << recHits.size() << " RecHits, Step " << step << " in channel: " << wireId << endl;
467 
468  // Find the best RecHit
469  const type* theBestRecHit = findBestRecHit(layer, wireId, recHits, simHitWireDist);
470 
471 
472  float recHitWireDist = recHitDistFromWire(*theBestRecHit, layer);
473  if(debug)
474  cout << " SimHit distance from wire: " << simHitWireDist << endl
475  << " SimHit distance from FE: " << simHitFEDist << endl
476  << " SimHit distance angle " << simHitTheta << endl
477  << " RecHit distance from wire: " << recHitWireDist << endl;
478  float recHitErr = recHitPositionError(*theBestRecHit);
479  HRes1DHit *hRes = 0;
480  HRes1DHit *hResTot = 0;
481 
482  // Fill residuals and pulls
483  // Select the histo to be filled
484  if(step == 1) {
485  // Step 1
486  if(wireId.superLayer() != 2) {
487  hResTot = hRes_S1RPhi;
488  if(wireId.wheel() == 0)
489  hRes = hRes_S1RPhi_W0;
490  if(abs(wireId.wheel()) == 1)
491  hRes = hRes_S1RPhi_W1;
492  if(abs(wireId.wheel()) == 2)
493  hRes = hRes_S1RPhi_W2;
494  } else {
495  hResTot = hRes_S1RZ;
496  if(wireId.wheel() == 0)
497  hRes = hRes_S1RZ_W0;
498  if(abs(wireId.wheel()) == 1)
499  hRes = hRes_S1RZ_W1;
500  if(abs(wireId.wheel()) == 2)
501  hRes = hRes_S1RZ_W2;
502  }
503 
504  } else if(step == 2) {
505  // Step 2
506  if(wireId.superlayer() != 2) {
507  hRes = hRes_S2RPhi;
508  if(wireId.wheel() == 0)
509  hRes = hRes_S2RPhi_W0;
510  if(abs(wireId.wheel()) == 1)
511  hRes = hRes_S2RPhi_W1;
512  if(abs(wireId.wheel()) == 2)
513  hRes = hRes_S2RPhi_W2;
514  } else {
515  hResTot = hRes_S2RZ;
516  if(wireId.wheel() == 0)
517  hRes = hRes_S2RZ_W0;
518  if(abs(wireId.wheel()) == 1)
519  hRes = hRes_S2RZ_W1;
520  if(abs(wireId.wheel()) == 2)
521  hRes = hRes_S2RZ_W2;
522  }
523 
524  } else if(step == 3) {
525  // Step 3
526  if(wireId.superlayer() != 2) {
527  hResTot = hRes_S3RPhi;
528  if(wireId.wheel() == 0)
529  hRes = hRes_S3RPhi_W0;
530  if(abs(wireId.wheel()) == 1)
531  hRes = hRes_S3RPhi_W1;
532  if(abs(wireId.wheel()) == 2)
533  hRes = hRes_S3RPhi_W2;
534  if (local) hRes_S3RPhiWS[abs(wireId.wheel())][wireId.station()-1]->Fill(simHitWireDist, simHitTheta, simHitFEDist, recHitWireDist, simHitGlobalPos.eta(),simHitGlobalPos.phi(),recHitErr,wireId.station());
535 
536  } else {
537  hResTot = hRes_S3RZ;
538  if(wireId.wheel() == 0)
539  hRes = hRes_S3RZ_W0;
540  if(abs(wireId.wheel()) == 1)
541  hRes = hRes_S3RZ_W1;
542  if(abs(wireId.wheel()) == 2)
543  hRes = hRes_S3RZ_W2;
544 
545  if (local) hRes_S3RZWS[abs(wireId.wheel())][wireId.station()-1]->Fill(simHitWireDist, simHitTheta, simHitFEDist, recHitWireDist, simHitGlobalPos.eta(),simHitGlobalPos.phi(),recHitErr,wireId.station());
546  }
547  }
548  // Fill
549  hRes->Fill(simHitWireDist, simHitTheta, simHitFEDist, recHitWireDist, simHitGlobalPos.eta(),
550  simHitGlobalPos.phi(),recHitErr,wireId.station());
551  if(hResTot != 0)
552  hResTot->Fill(simHitWireDist, simHitTheta, simHitFEDist, recHitWireDist, simHitGlobalPos.eta(),
553  simHitGlobalPos.phi(),recHitErr,wireId.station());
554  }
555 
556  // Fill Efficiencies
557  if(doall){
558  HEff1DHit *hEff = 0;
559  HEff1DHit *hEffTot = 0;
560  if(step == 1) {
561  // Step 1
562  if(wireId.superlayer() != 2) {
563  hEff = hEff_S1RPhi;
564  if (local) hEff_S1RPhiWS[abs(wireId.wheel())][wireId.station()-1]->Fill(simHitWireDist, simHitGlobalPos.eta(), simHitGlobalPos.phi(), recHitReconstructed);
565  } else {
566  hEffTot = hEff_S1RZ;
567  if(wireId.wheel() == 0)
568  hEff = hEff_S1RZ_W0;
569  if(abs(wireId.wheel()) == 1)
570  hEff = hEff_S1RZ_W1;
571  if(abs(wireId.wheel()) == 2)
572  hEff = hEff_S1RZ_W2;
573  if (local) hEff_S1RZWS[abs(wireId.wheel())][wireId.station()-1]->Fill(simHitWireDist, simHitGlobalPos.eta(), simHitGlobalPos.phi(), recHitReconstructed);
574  }
575 
576  } else if(step == 2) {
577  // Step 2
578  if(wireId.superlayer() != 2) {
579  hEff = hEff_S2RPhi;
580  } else {
581  hEffTot = hEff_S2RZ;
582  if(wireId.wheel() == 0)
583  hEff = hEff_S2RZ_W0;
584  if(abs(wireId.wheel()) == 1)
585  hEff = hEff_S2RZ_W1;
586  if(abs(wireId.wheel()) == 2)
587  hEff = hEff_S2RZ_W2;
588  }
589 
590  } else if(step == 3) {
591  // Step 3
592  if(wireId.superlayer() != 2) {
593  hEff = hEff_S3RPhi;
594  if (local) hEff_S3RPhiWS[abs(wireId.wheel())][wireId.station()-1]->Fill(simHitWireDist, simHitGlobalPos.eta(), simHitGlobalPos.phi(), recHitReconstructed);
595  } else {
596  hEffTot = hEff_S3RZ;
597  if(wireId.wheel() == 0)
598  hEff = hEff_S3RZ_W0;
599  if(abs(wireId.wheel()) == 1)
600  hEff = hEff_S3RZ_W1;
601  if(abs(wireId.wheel()) == 2)
602  hEff = hEff_S3RZ_W2;
603  if (local) hEff_S3RZWS[abs(wireId.wheel())][wireId.station()-1]->Fill(simHitWireDist, simHitGlobalPos.eta(), simHitGlobalPos.phi(), recHitReconstructed);
604  }
605 
606  }
607  // Fill
608  hEff->Fill(simHitWireDist, simHitGlobalPos.eta(), simHitGlobalPos.phi(), recHitReconstructed);
609  if(hEffTot != 0)
610  hEffTot->Fill(simHitWireDist, simHitGlobalPos.eta(), simHitGlobalPos.phi(), recHitReconstructed);
611  }
612  }
613 }
type
Definition: HCALResponse.h:21
void Fill(float distSimHit, float etaSimHit, float phiSimHit, bool fillRecHit)
Definition: Histograms.h:217
HEff1DHit * hEff_S3RZ
HEff1DHit * hEff_S2RZ_W0
HRes1DHit * hRes_S3RPhi_W0
HEff1DHit * hEff_S2RZ
HEff1DHit * hEff_S3RPhi
HRes1DHit * hRes_S1RPhi_W1
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:47
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
void Fill(float distSimHit, float thetaSimHit, float distFESimHit, float distRecHit, float etaSimHit, float phiSimHit, float errRecHit, int station)
Definition: Histograms.h:95
static const PSimHit * findMuSimHit(const edm::PSimHitContainer &hits)
Select the SimHit from a muon in a vector of SimHits.
const type * findBestRecHit(const DTLayer *layer, DTWireId wireId, const std::vector< type > &recHits, const float simHitDist)
HEff1DHit * hEff_S1RZWS[3][4]
HRes1DHit * hRes_S1RPhi_W0
HRes1DHit * hRes_S1RZ
float recHitPositionError(const DTRecHit1DPair &recHit)
const DTLayer * layer(DTLayerId id) const
Return a layer given its id.
Definition: DTGeometry.cc:110
HRes1DHit * hRes_S3RZ_W2
float simHitDistFromWire(const DTLayer *layer, DTWireId wireId, const PSimHit &hit)
HEff1DHit * hEff_S1RZ_W2
Local3DPoint localPosition() const
Definition: PSimHit.h:44
HEff1DHit * hEff_S3RZ_W1
HRes1DHit * hRes_S3RZWS[3][4]
HRes1DHit * hRes_S1RZ_W2
HRes1DHit * hRes_S2RPhi_W0
float recHitDistFromWire(const DTRecHit1DPair &hitPair, const DTLayer *layer)
HRes1DHit * hRes_S1RPhi
HRes1DHit * hRes_S2RPhi_W1
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int superLayer() const
Return the superlayer number.
HEff1DHit * hEff_S3RPhiWS[3][4]
HRes1DHit * hRes_S2RZ_W1
A set of histograms of residuals and pulls for 1D RecHits.
Definition: Histograms.h:26
float simHitImpactAngle(const DTLayer *layer, DTWireId wireId, const PSimHit &hit)
HEff1DHit * hEff_S3RZ_W2
HEff1DHit * hEff_S1RZ_W0
HRes1DHit * hRes_S2RZ_W0
HRes1DHit * hRes_S2RPhi_W2
HEff1DHit * hEff_S2RZ_W1
HRes1DHit * hRes_S1RPhi_W2
int superlayer() const
Return the superlayer number (deprecated method name)
HRes1DHit * hRes_S1RZ_W1
HEff1DHit * hEff_S3RZ_W0
HEff1DHit * hEff_S2RZ_W2
HRes1DHit * hRes_S2RPhi
HRes1DHit * hRes_S3RPhi_W2
HEff1DHit * hEff_S1RPhi
float simHitDistFromFE(const DTLayer *layer, DTWireId wireId, const PSimHit &hit)
HEff1DHit * hEff_S1RZ
HEff1DHit * hEff_S3RZWS[3][4]
HRes1DHit * hRes_S3RPhi
HEff1DHit * hEff_S2RPhi
T eta() const
Definition: PV3DBase.h:76
HEff1DHit * hEff_S1RZ_W1
HRes1DHit * hRes_S3RZ_W0
HRes1DHit * hRes_S3RZ_W1
HEff1DHit * hEff_S1RPhiWS[3][4]
HRes1DHit * hRes_S3RZ
HRes1DHit * hRes_S2RZ
tuple cout
Definition: gather_cfg.py:121
HRes1DHit * hRes_S2RZ_W2
HRes1DHit * hRes_S3RPhi_W1
int station() const
Return the station number.
Definition: DTChamberId.h:51
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:45
HRes1DHit * hRes_S3RPhiWS[3][4]
HRes1DHit * hRes_S1RZ_W0
void DTRecHitQuality::endJob ( void  )
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 156 of file DTRecHitQuality.cc.

156  {
157  // Write the histos to file
158  if(doall){
159  if(doStep1){
165  }
166  if(doStep2){
172  }
173  if(doStep3){
179  }
180  }
181 }
HEff1DHit * hEff_S3RZ
HEff1DHit * hEff_S2RZ_W0
HEff1DHit * hEff_S2RZ
HEff1DHit * hEff_S3RPhi
void ComputeEfficiency()
Definition: Histograms.h:234
HEff1DHit * hEff_S1RZ_W2
HEff1DHit * hEff_S3RZ_W1
HEff1DHit * hEff_S3RZ_W2
HEff1DHit * hEff_S1RZ_W0
HEff1DHit * hEff_S2RZ_W1
HEff1DHit * hEff_S3RZ_W0
HEff1DHit * hEff_S2RZ_W2
HEff1DHit * hEff_S1RPhi
HEff1DHit * hEff_S1RZ
HEff1DHit * hEff_S2RPhi
HEff1DHit * hEff_S1RZ_W1
void DTRecHitQuality::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
)
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 151 of file DTRecHitQuality.cc.

152  {
153 
154 }
template<typename type >
const type * DTRecHitQuality::findBestRecHit ( const DTLayer layer,
DTWireId  wireId,
const std::vector< type > &  recHits,
const float  simHitDist 
)
private

Definition at line 377 of file DTRecHitQuality.cc.

380  {
381  float res = 99999;
382  const type* theBestRecHit = 0;
383  // Loop over RecHits within the cell
384  for(typename vector<type>::const_iterator recHit = recHits.begin();
385  recHit != recHits.end();
386  recHit++) {
387  float distTmp = recHitDistFromWire(*recHit, layer);
388  if(fabs(distTmp-simHitDist) < res) {
389  res = fabs(distTmp-simHitDist);
390  theBestRecHit = &(*recHit);
391  }
392  } // End of loop over RecHits within the cell
393 
394  return theBestRecHit;
395 }
type
Definition: HCALResponse.h:21
float recHitDistFromWire(const DTRecHit1DPair &hitPair, const DTLayer *layer)
map< DTWireId, vector< DTRecHit1DPair > > DTRecHitQuality::map1DRecHitsPerWire ( const DTRecHitCollection dt1DRecHitPairs)
private

Definition at line 278 of file DTRecHitQuality.cc.

References run_regression::ret.

278  {
279  map<DTWireId, vector<DTRecHit1DPair> > ret;
280 
281  for(DTRecHitCollection::const_iterator rechit = dt1DRecHitPairs->begin();
282  rechit != dt1DRecHitPairs->end(); rechit++) {
283  ret[(*rechit).wireId()].push_back(*rechit);
284  }
285 
286  return ret;
287 }
map< DTWireId, vector< DTRecHit1D > > DTRecHitQuality::map1DRecHitsPerWire ( const DTRecSegment2DCollection segment2Ds)
private

Definition at line 292 of file DTRecHitQuality.cc.

References run_regression::ret.

292  {
293  map<DTWireId, vector<DTRecHit1D> > ret;
294 
295  // Loop over all 2D segments
296  for(DTRecSegment2DCollection::const_iterator segment = segment2Ds->begin();
297  segment != segment2Ds->end();
298  segment++) {
299  vector<DTRecHit1D> component1DHits= (*segment).specificRecHits();
300  // Loop over all component 1D hits
301  for(vector<DTRecHit1D>::const_iterator hit = component1DHits.begin();
302  hit != component1DHits.end();
303  hit++) {
304  ret[(*hit).wireId()].push_back(*hit);
305  }
306  }
307  return ret;
308 }
map< DTWireId, std::vector< DTRecHit1D > > DTRecHitQuality::map1DRecHitsPerWire ( const DTRecSegment4DCollection segment4Ds)
private

Definition at line 314 of file DTRecHitQuality.cc.

References run_regression::ret, and DTRecHit1D::wireId().

314  {
315  map<DTWireId, vector<DTRecHit1D> > ret;
316  // Loop over all 4D segments
317  for(DTRecSegment4DCollection::const_iterator segment = segment4Ds->begin();
318  segment != segment4Ds->end();
319  segment++) {
320  // Get component 2D segments
321  vector<const TrackingRecHit*> segment2Ds = (*segment).recHits();
322  // Loop over 2D segments:
323  for(vector<const TrackingRecHit*>::const_iterator segment2D = segment2Ds.begin();
324  segment2D != segment2Ds.end();
325  segment2D++) {
326  // Get 1D component rechits
327  vector<const TrackingRecHit*> hits = (*segment2D)->recHits();
328  // Loop over them
329  for(vector<const TrackingRecHit*>::const_iterator hit = hits.begin();
330  hit != hits.end(); hit++) {
331  const DTRecHit1D* hit1D = dynamic_cast<const DTRecHit1D*>(*hit);
332  ret[hit1D->wireId()].push_back(*hit1D);
333  }
334  }
335  }
336 
337  return ret;
338 }
DTWireId wireId() const
Return the wireId.
Definition: DTRecHit1D.h:107
float DTRecHitQuality::recHitDistFromWire ( const DTRecHit1DPair hitPair,
const DTLayer layer 
)
private

Definition at line 400 of file DTRecHitQuality.cc.

References DTEnums::Left, DTRecHit1DPair::localPosition(), DTEnums::Right, and PV3DBase< T, PVType, FrameType >::x().

400  {
401  // Compute the rechit distance from wire
402  return fabs(hitPair.localPosition(DTEnums::Left).x() -
403  hitPair.localPosition(DTEnums::Right).x())/2.;
404 }
T x() const
Definition: PV3DBase.h:62
virtual LocalPoint localPosition() const
float DTRecHitQuality::recHitDistFromWire ( const DTRecHit1D recHit,
const DTLayer layer 
)
private

Definition at line 410 of file DTRecHitQuality.cc.

References DTRecHit1D::localPosition(), DTLayer::specificTopology(), DTWireId::wire(), DTRecHit1D::wireId(), DTTopology::wirePosition(), and PV3DBase< T, PVType, FrameType >::x().

410  {
411  return fabs(recHit.localPosition().x() - layer->specificTopology().wirePosition(recHit.wireId().wire()));
412 }
float wirePosition(int wireNumber) const
Returns the x position in the layer of a given wire number.
Definition: DTTopology.cc:86
const DTTopology & specificTopology() const
Definition: DTLayer.cc:42
virtual LocalPoint localPosition() const
Return the 3-dimensional local position.
Definition: DTRecHit1D.h:60
int wire() const
Return the wire number.
Definition: DTWireId.h:56
T x() const
Definition: PV3DBase.h:62
DTWireId wireId() const
Return the wireId.
Definition: DTRecHit1D.h:107
float DTRecHitQuality::recHitPositionError ( const DTRecHit1DPair recHit)
private

Definition at line 616 of file DTRecHitQuality.cc.

References DTEnums::Left, DTRecHit1DPair::localPositionError(), mathSSE::sqrt(), and LocalError::xx().

616  {
617  return sqrt(recHit.localPositionError(DTEnums::Left).xx());
618 }
float xx() const
Definition: LocalError.h:24
virtual LocalError localPositionError() const
T sqrt(T t)
Definition: SSEVec.h:48
float DTRecHitQuality::recHitPositionError ( const DTRecHit1D recHit)
private

Definition at line 621 of file DTRecHitQuality.cc.

References DTRecHit1D::localPositionError(), mathSSE::sqrt(), and LocalError::xx().

621  {
622  return sqrt(recHit.localPositionError().xx());
623 }
float xx() const
Definition: LocalError.h:24
T sqrt(T t)
Definition: SSEVec.h:48
virtual LocalError localPositionError() const
Return the 3-dimensional error on the local position.
Definition: DTRecHit1D.h:66
float DTRecHitQuality::simHitDistFromFE ( const DTLayer layer,
DTWireId  wireId,
const PSimHit hit 
)
private

Definition at line 364 of file DTRecHitQuality.cc.

References DTTopology::cellLenght(), PSimHit::entryPoint(), PSimHit::exitPoint(), DTLayer::specificTopology(), and PV3DBase< T, PVType, FrameType >::y().

366  {
367  LocalPoint entryP = hit.entryPoint();
368  LocalPoint exitP = hit.exitPoint();
369  float wireLenght=layer->specificTopology().cellLenght();
370  return (entryP.y()+exitP.y())/2.+wireLenght;
371 }
T y() const
Definition: PV3DBase.h:63
const DTTopology & specificTopology() const
Definition: DTLayer.cc:42
Local3DPoint exitPoint() const
Exit point in the local Det frame.
Definition: PSimHit.h:38
float cellLenght() const
Definition: DTTopology.h:73
Local3DPoint entryPoint() const
Entry point in the local Det frame.
Definition: PSimHit.h:35
float DTRecHitQuality::simHitDistFromWire ( const DTLayer layer,
DTWireId  wireId,
const PSimHit hit 
)
private

Definition at line 341 of file DTRecHitQuality.cc.

References PSimHit::entryPoint(), PSimHit::exitPoint(), DTLayer::specificTopology(), DTWireId::wire(), DTTopology::wirePosition(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::z().

343  {
344  float xwire = layer->specificTopology().wirePosition(wireId.wire());
345  LocalPoint entryP = hit.entryPoint();
346  LocalPoint exitP = hit.exitPoint();
347  float xEntry = entryP.x()-xwire;
348  float xExit = exitP.x()-xwire;
349 
350  return fabs(xEntry - (entryP.z()*(xExit-xEntry))/(exitP.z()-entryP.z()));//FIXME: check...
351 }
float wirePosition(int wireNumber) const
Returns the x position in the layer of a given wire number.
Definition: DTTopology.cc:86
const DTTopology & specificTopology() const
Definition: DTLayer.cc:42
Local3DPoint exitPoint() const
Exit point in the local Det frame.
Definition: PSimHit.h:38
T z() const
Definition: PV3DBase.h:64
int wire() const
Return the wire number.
Definition: DTWireId.h:56
T x() const
Definition: PV3DBase.h:62
Local3DPoint entryPoint() const
Entry point in the local Det frame.
Definition: PSimHit.h:35
float DTRecHitQuality::simHitImpactAngle ( const DTLayer layer,
DTWireId  wireId,
const PSimHit hit 
)
private

Definition at line 354 of file DTRecHitQuality.cc.

References PSimHit::entryPoint(), PSimHit::exitPoint(), theta(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::z().

356  {
357  LocalPoint entryP = hit.entryPoint();
358  LocalPoint exitP = hit.exitPoint();
359  float theta=(exitP.x()-entryP.x())/(exitP.z()-entryP.z());
360  return atan(theta);
361 }
Geom::Theta< T > theta() const
Local3DPoint exitPoint() const
Exit point in the local Det frame.
Definition: PSimHit.h:38
T z() const
Definition: PV3DBase.h:64
T x() const
Definition: PV3DBase.h:62
Local3DPoint entryPoint() const
Entry point in the local Det frame.
Definition: PSimHit.h:35

Member Data Documentation

DQMStore* DTRecHitQuality::dbe_
private

Definition at line 208 of file DTRecHitQuality.h.

bool DTRecHitQuality::debug
private

Definition at line 75 of file DTRecHitQuality.h.

bool DTRecHitQuality::doall
private

Definition at line 209 of file DTRecHitQuality.h.

bool DTRecHitQuality::doStep1
private

Definition at line 84 of file DTRecHitQuality.h.

bool DTRecHitQuality::doStep2
private

Definition at line 85 of file DTRecHitQuality.h.

bool DTRecHitQuality::doStep3
private

Definition at line 86 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S1RPhi
private

Definition at line 183 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S1RPhiWS[3][4]
private

Definition at line 203 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S1RZ
private

Definition at line 187 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S1RZ_W0
private

Definition at line 191 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S1RZ_W1
private

Definition at line 195 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S1RZ_W2
private

Definition at line 199 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S1RZWS[3][4]
private

Definition at line 205 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S2RPhi
private

Definition at line 184 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S2RZ
private

Definition at line 188 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S2RZ_W0
private

Definition at line 192 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S2RZ_W1
private

Definition at line 196 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S2RZ_W2
private

Definition at line 200 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S3RPhi
private

Definition at line 185 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S3RPhiWS[3][4]
private

Definition at line 204 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S3RZ
private

Definition at line 189 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S3RZ_W0
private

Definition at line 193 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S3RZ_W1
private

Definition at line 197 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S3RZ_W2
private

Definition at line 201 of file DTRecHitQuality.h.

HEff1DHit* DTRecHitQuality::hEff_S3RZWS[3][4]
private

Definition at line 206 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S1RPhi
private

Definition at line 148 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S1RPhi_W0
private

Definition at line 168 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S1RPhi_W1
private

Definition at line 172 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S1RPhi_W2
private

Definition at line 176 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S1RZ
private

Definition at line 152 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S1RZ_W0
private

Definition at line 156 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S1RZ_W1
private

Definition at line 160 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S1RZ_W2
private

Definition at line 164 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S2RPhi
private

Definition at line 149 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S2RPhi_W0
private

Definition at line 169 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S2RPhi_W1
private

Definition at line 173 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S2RPhi_W2
private

Definition at line 177 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S2RZ
private

Definition at line 153 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S2RZ_W0
private

Definition at line 157 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S2RZ_W1
private

Definition at line 161 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S2RZ_W2
private

Definition at line 165 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RPhi
private

Definition at line 150 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RPhi_W0
private

Definition at line 170 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RPhi_W1
private

Definition at line 174 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RPhi_W2
private

Definition at line 178 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RPhiWS[3][4]
private

Definition at line 180 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RZ
private

Definition at line 154 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RZ_W0
private

Definition at line 158 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RZ_W1
private

Definition at line 162 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RZ_W2
private

Definition at line 166 of file DTRecHitQuality.h.

HRes1DHit* DTRecHitQuality::hRes_S3RZWS[3][4]
private

Definition at line 181 of file DTRecHitQuality.h.

bool DTRecHitQuality::local
private

Definition at line 87 of file DTRecHitQuality.h.

edm::InputTag DTRecHitQuality::recHitLabel
private

Definition at line 79 of file DTRecHitQuality.h.

std::string DTRecHitQuality::rootFileName
private

Definition at line 77 of file DTRecHitQuality.h.

edm::InputTag DTRecHitQuality::segment2DLabel
private

Definition at line 80 of file DTRecHitQuality.h.

edm::InputTag DTRecHitQuality::segment4DLabel
private

Definition at line 81 of file DTRecHitQuality.h.

edm::InputTag DTRecHitQuality::simHitLabel
private

Definition at line 78 of file DTRecHitQuality.h.