CMS 3D CMS Logo

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

#include <HitEff.h>

Inheritance diagram for HitEff:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

bool check2DPartner (unsigned int iidd, const std::vector< TrajectoryMeasurement > &traj)
 
double checkConsistency (const StripClusterParameterEstimator::LocalValues &parameters, double xx, double xerr)
 
unsigned int checkLayer (unsigned int iidd, const TrackerTopology *tTopo)
 
 HitEff (const edm::ParameterSet &conf)
 
bool isDoubleSided (unsigned int iidd, const TrackerTopology *tTopo) const
 
 ~HitEff () override
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
 ~EDAnalyzer () 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 analyze (const edm::Event &e, const edm::EventSetup &c) override
 
void beginJob () override
 
void endJob () override
 

Private Attributes

bool addCommonMode_
 
bool addLumi_
 
unsigned int bunchx
 
float ClusterLocErrX
 
float ClusterLocErrY
 
float ClusterLocX
 
float ClusterLocY
 
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusters_token_
 
float ClusterStoN
 
const edm::EDGetTokenT< reco::TrackCollectioncombinatorialTracks_token_
 
float commonMode
 
const edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > commonModeToken_
 
int compSettings
 
edm::ParameterSet conf_
 
bool cutOnTracks_
 
bool DEBUG
 
const edm::EDGetTokenT< DetIdCollectiondigis_token_
 
unsigned int event
 
int events
 
int EventTrackCKF
 
bool highPurity
 
unsigned int Id
 
float instLumi
 
unsigned int layers
 
unsigned int ModIsBad
 
int nHits
 
float pT
 
float PU
 
float ResX
 
float ResXSig
 
unsigned int run
 
const edm::EDGetTokenT< LumiScalersCollectionscalerToken_
 
SiStripClusterInfo siStripClusterInfo_
 
unsigned int SiStripQualBad
 
int tquality
 
const edm::EDGetTokenT< MeasurementTrackerEventtrackerEvent_token_
 
unsigned int trackMultiplicityCut_
 
TTree * traj
 
const edm::EDGetTokenT< std::vector< Trajectory > > trajectories_token_
 
float TrajGlbX
 
float TrajGlbY
 
float TrajGlbZ
 
unsigned int trajHitValid
 
float TrajLocAngleX
 
float TrajLocAngleY
 
float TrajLocErrX
 
float TrajLocErrY
 
float TrajLocX
 
float TrajLocY
 
const edm::EDGetTokenT< TrajTrackAssociationCollectiontrajTrackAsso_token_
 
bool useAllHitsFromTracksWithMissingHits_
 
bool useFirstMeas_
 
bool useLastMeas_
 
unsigned int whatlayer
 
bool withinAcceptance
 

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 &)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- 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

Definition at line 49 of file HitEff.h.

Constructor & Destructor Documentation

◆ HitEff()

HitEff::HitEff ( const edm::ParameterSet conf)
explicit

Definition at line 72 of file HitEff.cc.

73  : scalerToken_(consumes<LumiScalersCollection>(conf.getParameter<edm::InputTag>("lumiScalers"))),
77  consumes<reco::TrackCollection>(conf.getParameter<edm::InputTag>("combinatorialTracks"))),
78  trajectories_token_(consumes<std::vector<Trajectory> >(conf.getParameter<edm::InputTag>("trajectories"))),
79  trajTrackAsso_token_(consumes<TrajTrackAssociationCollection>(conf.getParameter<edm::InputTag>("trajectories"))),
82  digis_token_(consumes<DetIdCollection>(conf.getParameter<edm::InputTag>("siStripDigis"))),
83  trackerEvent_token_(consumes<MeasurementTrackerEvent>(conf.getParameter<edm::InputTag>("trackerEvent"))),
84  conf_(conf) {
85  compSettings = conf_.getUntrackedParameter<int>("CompressionSettings", -1);
86  layers = conf_.getParameter<int>("Layer");
87  DEBUG = conf_.getParameter<bool>("Debug");
88  addLumi_ = conf_.getUntrackedParameter<bool>("addLumi", false);
89  addCommonMode_ = conf_.getUntrackedParameter<bool>("addCommonMode", false);
90  cutOnTracks_ = conf_.getUntrackedParameter<bool>("cutOnTracks", false);
91  trackMultiplicityCut_ = conf.getUntrackedParameter<unsigned int>("trackMultiplicity", 100);
92  useFirstMeas_ = conf_.getUntrackedParameter<bool>("useFirstMeas", false);
93  useLastMeas_ = conf_.getUntrackedParameter<bool>("useLastMeas", false);
95  conf_.getUntrackedParameter<bool>("useAllHitsFromTracksWithMissingHits", false);
96 }

References addCommonMode_, addLumi_, compSettings, conf_, cutOnTracks_, DEBUG, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), layers, trackMultiplicityCut_, useAllHitsFromTracksWithMissingHits_, useFirstMeas_, and useLastMeas_.

◆ ~HitEff()

HitEff::~HitEff ( )
override

Definition at line 99 of file HitEff.cc.

99 {}

Member Function Documentation

◆ analyze()

void HitEff::analyze ( const edm::Event e,
const edm::EventSetup c 
)
overrideprivatevirtual

Implements edm::EDAnalyzer.

Definition at line 160 of file HitEff.cc.

160  {
161  //Retrieve tracker topology from geometry
162  edm::ESHandle<TrackerTopology> tTopoHandle;
163  es.get<TrackerTopologyRcd>().get(tTopoHandle);
164  const TrackerTopology* const tTopo = tTopoHandle.product();
165 
167 
168  // bool DEBUG = false;
169 
170  LogDebug("SiStripHitEfficiency:HitEff") << "beginning analyze from HitEff" << endl;
171 
172  using namespace edm;
173  using namespace reco;
174  // Step A: Get Inputs
175 
176  int run_nr = e.id().run();
177  int ev_nr = e.id().event();
178  int bunch_nr = e.bunchCrossing();
179 
180  // Luminosity informations
182  instLumi = 0;
183  PU = 0;
184  if (addLumi_) {
185  e.getByToken(scalerToken_, lumiScalers);
186  if (lumiScalers->begin() != lumiScalers->end()) {
187  instLumi = lumiScalers->begin()->instantLumi();
188  PU = lumiScalers->begin()->pileup();
189  }
190  }
191 
192  // CM
194  if (addCommonMode_)
195  e.getByToken(commonModeToken_, commonModeDigis);
196 
197  //CombinatoriaTrack
198  edm::Handle<reco::TrackCollection> trackCollectionCKF;
199  //edm::InputTag TkTagCKF = conf_.getParameter<edm::InputTag>("combinatorialTracks");
200  e.getByToken(combinatorialTracks_token_, trackCollectionCKF);
201 
202  edm::Handle<std::vector<Trajectory> > TrajectoryCollectionCKF;
203  //edm::InputTag TkTrajCKF = conf_.getParameter<edm::InputTag>("trajectories");
204  e.getByToken(trajectories_token_, TrajectoryCollectionCKF);
205 
206  edm::Handle<TrajTrackAssociationCollection> trajTrackAssociationHandle;
207  e.getByToken(trajTrackAsso_token_, trajTrackAssociationHandle);
208 
209  // Clusters
210  // get the SiStripClusters from the event
212  //e.getByLabel("siStripClusters", theClusters);
213  e.getByToken(clusters_token_, theClusters);
214 
215  //get tracker geometry
218  const TrackerGeometry* tkgeom = &(*tracker);
219 
220  //get Cluster Parameter Estimator
221  //std::string cpe = conf_.getParameter<std::string>("StripCPE");
223  es.get<TkStripCPERecord>().get("StripCPEfromTrackAngle", parameterestimator);
224  const StripClusterParameterEstimator& stripcpe(*parameterestimator);
225 
226  // get the SiStripQuality records
227  edm::ESHandle<SiStripQuality> SiStripQuality_;
228  //LQ commenting the try/catch that causes problem in 74X calibTree production
229  // try {
230  // es.get<SiStripQualityRcd>().get("forCluster",SiStripQuality_);
231  // }
232  // catch (...) {
233  es.get<SiStripQualityRcd>().get(SiStripQuality_);
234  // }
235 
236  edm::ESHandle<MagneticField> magFieldHandle;
237  es.get<IdealMagneticFieldRecord>().get(magFieldHandle);
238  const MagneticField* magField_ = magFieldHandle.product();
239 
240  // get the list of module IDs with FED-detected errors
241  edm::Handle<DetIdCollection> fedErrorIds;
242  //e.getByLabel("siStripDigis", fedErrorIds );
243  e.getByToken(digis_token_, fedErrorIds);
244 
245  ESHandle<MeasurementTracker> measurementTrackerHandle;
246  es.get<CkfComponentsRecord>().get(measurementTrackerHandle);
247 
249  //e.getByLabel("MeasurementTrackerEvent", measurementTrackerEvent);
251 
253  es.get<TrackingComponentsRecord>().get("Chi2", est);
254 
256  es.get<TrackingComponentsRecord>().get("PropagatorWithMaterial", prop);
257  const Propagator* thePropagator = prop.product();
258 
259  events++;
260 
261  // *************** SiStripCluster Collection
262  const edmNew::DetSetVector<SiStripCluster>& input = *theClusters;
263 
264  //go through clusters to write out global position of good clusters for the layer understudy for comparison
265  // Loop through clusters just to print out locations
266  // Commented out to avoid discussion, should really be deleted.
267  /*
268  for (edmNew::DetSetVector<SiStripCluster>::const_iterator DSViter = input.begin(); DSViter != input.end(); DSViter++) {
269  // DSViter is a vector of SiStripClusters located on a single module
270  unsigned int ClusterId = DSViter->id();
271  DetId ClusterDetId(ClusterId);
272  const StripGeomDetUnit * stripdet=(const StripGeomDetUnit*)tkgeom->idToDetUnit(ClusterDetId);
273 
274  edmNew::DetSet<SiStripCluster>::const_iterator begin=DSViter->begin();
275  edmNew::DetSet<SiStripCluster>::const_iterator end =DSViter->end();
276  for(edmNew::DetSet<SiStripCluster>::const_iterator iter=begin;iter!=end;++iter) {
277  //iter is a single SiStripCluster
278  StripClusterParameterEstimator::LocalValues parameters=stripcpe.localParameters(*iter,*stripdet);
279 
280  const Surface* surface;
281  surface = &(tracker->idToDet(ClusterDetId)->surface());
282  LocalPoint lp = parameters.first;
283  GlobalPoint gp = surface->toGlobal(lp);
284  unsigned int layer = checkLayer(ClusterId, tTopo);
285  if(DEBUG) cout << "Found hit in cluster collection layer = " << layer << " with id = " << ClusterId << " local X position = " << lp.x() << " +- " << sqrt(parameters.second.xx()) << " matched/stereo/rphi = " << ((ClusterId & 0x3)==0) << "/" << ((ClusterId & 0x3)==1) << "/" << ((ClusterId & 0x3)==2) << endl;
286  }
287  }
288  */
289 
290  // Tracking
291  const reco::TrackCollection* tracksCKF = trackCollectionCKF.product();
292  LogDebug("SiStripHitEfficiency:HitEff") << "number ckf tracks found = " << tracksCKF->size() << endl;
293  //if (tracksCKF->size() == 1 ){
294  if (!tracksCKF->empty()) {
295  if (cutOnTracks_ && (tracksCKF->size() >= trackMultiplicityCut_))
296  return;
297  if (cutOnTracks_)
298  LogDebug("SiStripHitEfficiency:HitEff")
299  << "starting checking good event with < " << trackMultiplicityCut_ << " tracks" << endl;
300 
301  EventTrackCKF++;
302 
303 #ifdef ExtendedCALIBTree
304  //get dEdx info if available
305  Handle<ValueMap<DeDxData> > dEdxUncalibHandle;
306  if (e.getByLabel("dedxMedianCTF", dEdxUncalibHandle)) {
307  const ValueMap<DeDxData> dEdxTrackUncalib = *dEdxUncalibHandle.product();
308 
309  reco::TrackRef itTrack = reco::TrackRef(trackCollectionCKF, 0);
310  dedx = dEdxTrackUncalib[itTrack].dEdx();
311  dedxNOM = dEdxTrackUncalib[itTrack].numberOfMeasurements();
312  } else {
313  dedx = -999.0;
314  dedxNOM = -999;
315  }
316 
317  //get muon and ecal timing info if available
319  if (e.getByLabel("muonsWitht0Correction", muH)) {
320  const MuonCollection& muonsT0 = *muH.product();
321  if (!muonsT0.empty()) {
322  MuonTime mt0 = muonsT0[0].time();
323  timeDT = mt0.timeAtIpInOut;
324  timeDTErr = mt0.timeAtIpInOutErr;
325  timeDTDOF = mt0.nDof;
326 
327  bool hasCaloEnergyInfo = muonsT0[0].isEnergyValid();
328  if (hasCaloEnergyInfo)
329  timeECAL = muonsT0[0].calEnergy().ecal_time;
330  }
331  } else {
332  timeDT = -999.0;
333  timeDTErr = -999.0;
334  timeDTDOF = -999;
335  timeECAL = -999.0;
336  }
337 
338 #endif
339  // actually should do a loop over all the tracks in the event here
340 
341  // Looping over traj-track associations to be able to get traj & track informations
342  for (TrajTrackAssociationCollection::const_iterator it = trajTrackAssociationHandle->begin();
343  it != trajTrackAssociationHandle->end();
344  it++) {
346  reco::TrackRef itrack = it->val;
347 
348  // for each track, fill some variables such as number of hits and momentum
349  nHits = itraj->foundHits();
350 #ifdef ExtendedCALIBTree
351  nLostHits = itraj->lostHits();
352  chi2 = (itraj->chiSquared() / itraj->ndof());
353  p = itraj->lastMeasurement().updatedState().globalMomentum().mag();
354 #endif
355  pT = sqrt((itraj->lastMeasurement().updatedState().globalMomentum().x() *
356  itraj->lastMeasurement().updatedState().globalMomentum().x()) +
357  (itraj->lastMeasurement().updatedState().globalMomentum().y() *
358  itraj->lastMeasurement().updatedState().globalMomentum().y()));
359 
360  // track quality
362 
363  std::vector<TrajectoryMeasurement> TMeas = itraj->measurements();
364  vector<TrajectoryMeasurement>::iterator itm;
365  double xloc = 0.;
366  double yloc = 0.;
367  double xErr = 0.;
368  double yErr = 0.;
369  double angleX = -999.;
370  double angleY = -999.;
371  double xglob, yglob, zglob;
372 
373  // Check whether the trajectory has some missing hits
374  bool hasMissingHits = false;
375  for (itm = TMeas.begin(); itm != TMeas.end(); itm++) {
376  auto theHit = (*itm).recHit();
377  if (theHit->getType() == TrackingRecHit::Type::missing)
378  hasMissingHits = true;
379  }
380 
381  // Loop on each measurement and take it into consideration
382  //--------------------------------------------------------
383 
384  for (itm = TMeas.begin(); itm != TMeas.end(); itm++) {
385  auto theInHit = (*itm).recHit();
386 
387  LogDebug("SiStripHitEfficiency:HitEff") << "theInHit is valid = " << theInHit->isValid() << endl;
388 
389  unsigned int iidd = theInHit->geographicalId().rawId();
390 
391  unsigned int TKlayers = checkLayer(iidd, tTopo);
392  LogDebug("SiStripHitEfficiency:HitEff") << "TKlayer from trajectory: " << TKlayers << " from module = " << iidd
393  << " matched/stereo/rphi = " << ((iidd & 0x3) == 0) << "/"
394  << ((iidd & 0x3) == 1) << "/" << ((iidd & 0x3) == 2) << endl;
395 
396  // Test first and last points of the trajectory
397  // the list of measurements starts from outer layers !!! This could change -> should add a check
398  bool isFirstMeas = (itm == (TMeas.end() - 1));
399  bool isLastMeas = (itm == (TMeas.begin()));
400 
401  if (!useFirstMeas_ && isFirstMeas)
402  continue;
403  if (!useLastMeas_ && isLastMeas)
404  continue;
405 
406  // In case of missing hit in the track, check whether to use the other hits or not.
407  if (hasMissingHits && theInHit->getType() != TrackingRecHit::Type::missing &&
409  continue;
410 
411  // If Trajectory measurement from TOB 6 or TEC 9, skip it because it's always valid they are filled later
412  if (TKlayers == 10 || TKlayers == 22) {
413  LogDebug("SiStripHitEfficiency:HitEff") << "skipping original TM for TOB 6 or TEC 9" << endl;
414  continue;
415  }
416 
417  // Make vector of TrajectoryAtInvalidHits to hold the trajectories
418  std::vector<TrajectoryAtInvalidHit> TMs;
419 
420  // Make AnalyticalPropagator to use in TAVH constructor
422 
423  // for double sided layers check both sensors--if no hit was found on either sensor surface,
424  // the trajectory measurements only have one invalid hit entry on the matched surface
425  // so get the TrajectoryAtInvalidHit for both surfaces and include them in the study
426  if (isDoubleSided(iidd, tTopo) && ((iidd & 0x3) == 0)) {
427  // do hit eff check twice--once for each sensor
428  //add a TM for each surface
429  TMs.push_back(TrajectoryAtInvalidHit(*itm, tTopo, tkgeom, propagator, 1));
430  TMs.push_back(TrajectoryAtInvalidHit(*itm, tTopo, tkgeom, propagator, 2));
431  } else if (isDoubleSided(iidd, tTopo) && (!check2DPartner(iidd, TMeas))) {
432  // if only one hit was found the trajectory measurement is on that sensor surface, and the other surface from
433  // the matched layer should be added to the study as well
434  TMs.push_back(TrajectoryAtInvalidHit(*itm, tTopo, tkgeom, propagator, 1));
435  TMs.push_back(TrajectoryAtInvalidHit(*itm, tTopo, tkgeom, propagator, 2));
436  LogDebug("SiStripHitEfficiency:HitEff") << " found a hit with a missing partner" << endl;
437  } else {
438  //only add one TM for the single surface and the other will be added in the next iteration
439  TMs.push_back(TrajectoryAtInvalidHit(*itm, tTopo, tkgeom, propagator));
440  }
441 
443  //Now check for tracks at TOB6 and TEC9
444 
445  // to make sure we only propagate on the last TOB5 hit check the next entry isn't also in TOB5
446  // to avoid bias, make sure the TOB5 hit is valid (an invalid hit on TOB5 could only exist with a valid hit on TOB6)
447 
448  bool isValid = theInHit->isValid();
449  bool isLast = (itm == (TMeas.end() - 1));
450  bool isLastTOB5 = true;
451  if (!isLast) {
452  if (checkLayer((++itm)->recHit()->geographicalId().rawId(), tTopo) == 9)
453  isLastTOB5 = false;
454  else
455  isLastTOB5 = true;
456  --itm;
457  }
458 
459  if (TKlayers == 9 && isValid && isLastTOB5) {
460  // if ( TKlayers==9 && itm==TMeas.rbegin()) {
461  // if ( TKlayers==9 && (itm==TMeas.back()) ) { // to check for only the last entry in the trajectory for propagation
462  std::vector<BarrelDetLayer const*> barrelTOBLayers =
463  measurementTrackerHandle->geometricSearchTracker()->tobLayers();
464  const DetLayer* tob6 = barrelTOBLayers[barrelTOBLayers.size() - 1];
465  const MeasurementEstimator* estimator = est.product();
466  const LayerMeasurements* theLayerMeasurements =
467  new LayerMeasurements(*measurementTrackerHandle, *measurementTrackerEvent);
468  const TrajectoryStateOnSurface tsosTOB5 = itm->updatedState();
469  vector<TrajectoryMeasurement> tmp =
470  theLayerMeasurements->measurements(*tob6, tsosTOB5, *thePropagator, *estimator);
471 
472  if (!tmp.empty()) {
473  LogDebug("SiStripHitEfficiency:HitEff") << "size of TM from propagation = " << tmp.size() << endl;
474 
475  // take the last of the TMs, which is always an invalid hit
476  // if no detId is available, ie detId==0, then no compatible layer was crossed
477  // otherwise, use that TM for the efficiency measurement
478  TrajectoryMeasurement tob6TM(tmp.back());
479  const auto& tob6Hit = tob6TM.recHit();
480 
481  if (tob6Hit->geographicalId().rawId() != 0) {
482  LogDebug("SiStripHitEfficiency:HitEff") << "tob6 hit actually being added to TM vector" << endl;
483  TMs.push_back(TrajectoryAtInvalidHit(tob6TM, tTopo, tkgeom, propagator));
484  }
485  }
486  }
487 
488  bool isLastTEC8 = true;
489  if (!isLast) {
490  if (checkLayer((++itm)->recHit()->geographicalId().rawId(), tTopo) == 21)
491  isLastTEC8 = false;
492  else
493  isLastTEC8 = true;
494  --itm;
495  }
496 
497  if (TKlayers == 21 && isValid && isLastTEC8) {
498  std::vector<const ForwardDetLayer*> posTecLayers =
499  measurementTrackerHandle->geometricSearchTracker()->posTecLayers();
500  const DetLayer* tec9pos = posTecLayers[posTecLayers.size() - 1];
501  std::vector<const ForwardDetLayer*> negTecLayers =
502  measurementTrackerHandle->geometricSearchTracker()->negTecLayers();
503  const DetLayer* tec9neg = negTecLayers[negTecLayers.size() - 1];
504 
505  const MeasurementEstimator* estimator = est.product();
506  const LayerMeasurements* theLayerMeasurements =
507  new LayerMeasurements(*measurementTrackerHandle, *measurementTrackerEvent);
508  const TrajectoryStateOnSurface tsosTEC9 = itm->updatedState();
509 
510  // check if track on positive or negative z
511  if (!(iidd == StripSubdetector::TEC))
512  LogDebug("SiStripHitEfficiency:HitEff") << "there is a problem with TEC 9 extrapolation" << endl;
513 
514  //cout << " tec9 id = " << iidd << " and side = " << tTopo->tecSide(iidd) << endl;
515  vector<TrajectoryMeasurement> tmp;
516  if (tTopo->tecSide(iidd) == 1) {
517  tmp = theLayerMeasurements->measurements(*tec9neg, tsosTEC9, *thePropagator, *estimator);
518  //cout << "on negative side" << endl;
519  }
520  if (tTopo->tecSide(iidd) == 2) {
521  tmp = theLayerMeasurements->measurements(*tec9pos, tsosTEC9, *thePropagator, *estimator);
522  //cout << "on positive side" << endl;
523  }
524 
525  if (!tmp.empty()) {
526  // take the last of the TMs, which is always an invalid hit
527  // if no detId is available, ie detId==0, then no compatible layer was crossed
528  // otherwise, use that TM for the efficiency measurement
529  TrajectoryMeasurement tec9TM(tmp.back());
530  const auto& tec9Hit = tec9TM.recHit();
531 
532  unsigned int tec9id = tec9Hit->geographicalId().rawId();
533  LogDebug("SiStripHitEfficiency:HitEff")
534  << "tec9id = " << tec9id << " is Double sided = " << isDoubleSided(tec9id, tTopo)
535  << " and 0x3 = " << (tec9id & 0x3) << endl;
536 
537  if (tec9Hit->geographicalId().rawId() != 0) {
538  LogDebug("SiStripHitEfficiency:HitEff") << "tec9 hit actually being added to TM vector" << endl;
539  // in tec the hit can be single or doubled sided. whenever the invalid hit at the end of vector of TMs is
540  // double sided it is always on the matched surface, so we need to split it into the true sensor surfaces
541  if (isDoubleSided(tec9id, tTopo)) {
542  TMs.push_back(TrajectoryAtInvalidHit(tec9TM, tTopo, tkgeom, propagator, 1));
543  TMs.push_back(TrajectoryAtInvalidHit(tec9TM, tTopo, tkgeom, propagator, 2));
544  } else
545  TMs.push_back(TrajectoryAtInvalidHit(tec9TM, tTopo, tkgeom, propagator));
546  }
547  } //else cout << "tec9 tmp empty" << endl;
548  }
549 
551 
552  // Modules Constraints
553 
554  for (std::vector<TrajectoryAtInvalidHit>::const_iterator TM = TMs.begin(); TM != TMs.end(); ++TM) {
555  // --> Get trajectory from combinatedState
556  iidd = TM->monodet_id();
557  LogDebug("SiStripHitEfficiency:HitEff") << "setting iidd = " << iidd << " before checking efficiency and ";
558 
559  xloc = TM->localX();
560  yloc = TM->localY();
561 
562  angleX = atan(TM->localDxDz());
563  angleY = atan(TM->localDyDz());
564 
565  TrajLocErrX = 0.0;
566  TrajLocErrY = 0.0;
567 
568  xglob = TM->globalX();
569  yglob = TM->globalY();
570  zglob = TM->globalZ();
571  xErr = TM->localErrorX();
572  yErr = TM->localErrorY();
573 
574  TrajGlbX = 0.0;
575  TrajGlbY = 0.0;
576  TrajGlbZ = 0.0;
577  withinAcceptance = TM->withinAcceptance();
578 
579  trajHitValid = TM->validHit();
580  int TrajStrip = -1;
581 
582  // reget layer from iidd here, to account for TOB 6 and TEC 9 TKlayers being off
583  TKlayers = checkLayer(iidd, tTopo);
584 
585  if ((layers == TKlayers) || (layers == 0)) { // Look at the layer not used to reconstruct the track
586  whatlayer = TKlayers;
587  LogDebug("SiStripHitEfficiency:HitEff") << "Looking at layer under study" << endl;
588  ModIsBad = 2;
589  Id = 0;
590  SiStripQualBad = 0;
591  run = 0;
592  event = 0;
593  TrajLocX = 0.0;
594  TrajLocY = 0.0;
595  TrajLocAngleX = -999.0;
596  TrajLocAngleY = -999.0;
597  ResX = 0.0;
598  ResXSig = 0.0;
599  ClusterLocX = 0.0;
600  ClusterLocY = 0.0;
601  ClusterLocErrX = 0.0;
602  ClusterLocErrY = 0.0;
603  ClusterStoN = 0.0;
604  bunchx = 0;
605  commonMode = -100;
606 
607  // RPhi RecHit Efficiency
608 
609  if (!input.empty()) {
610  LogDebug("SiStripHitEfficiency:HitEff") << "Checking clusters with size = " << input.size() << endl;
611  int nClusters = 0;
612  std::vector<std::vector<float> >
613  VCluster_info; //fill with X residual, X residual pull, local X, sig(X), local Y, sig(Y), StoN
614  for (edmNew::DetSetVector<SiStripCluster>::const_iterator DSViter = input.begin(); DSViter != input.end();
615  DSViter++) {
616  // DSViter is a vector of SiStripClusters located on a single module
617  //if (DEBUG) cout << "the ID from the DSViter = " << DSViter->id() << endl;
618  unsigned int ClusterId = DSViter->id();
619  if (ClusterId == iidd) {
620  LogDebug("SiStripHitEfficiency:HitEff")
621  << "found (ClusterId == iidd) with ClusterId = " << ClusterId << " and iidd = " << iidd << endl;
622  DetId ClusterDetId(ClusterId);
623  const StripGeomDetUnit* stripdet = (const StripGeomDetUnit*)tkgeom->idToDetUnit(ClusterDetId);
624  const StripTopology& Topo = stripdet->specificTopology();
625 
626  float hbedge = 0.0;
627  float htedge = 0.0;
628  float hapoth = 0.0;
629  float uylfac = 0.0;
630  float uxlden = 0.0;
631  if (TKlayers >= 11) {
632  const BoundPlane& plane = stripdet->surface();
633  const TrapezoidalPlaneBounds* trapezoidalBounds(
634  dynamic_cast<const TrapezoidalPlaneBounds*>(&(plane.bounds())));
635  std::array<const float, 4> const& parameterTrap =
636  (*trapezoidalBounds).parameters(); // el bueno aqui
637  hbedge = parameterTrap[0];
638  htedge = parameterTrap[1];
639  hapoth = parameterTrap[3];
640  uylfac = (htedge - hbedge) / (htedge + hbedge) / hapoth;
641  uxlden = 1 + yloc * uylfac;
642  }
643 
644  // Need to know position of trajectory in strip number for selecting the right APV later
645  if (TrajStrip == -1) {
646  int nstrips = Topo.nstrips();
647  float pitch = stripdet->surface().bounds().width() / nstrips;
648  TrajStrip = xloc / pitch + nstrips / 2.0;
649  // Need additionnal corrections for endcap
650  if (TKlayers >= 11) {
651  float TrajLocXMid = xloc / (1 + (htedge - hbedge) * yloc / (htedge + hbedge) /
652  hapoth); // radialy extrapolated x loc position at middle
653  TrajStrip = TrajLocXMid / pitch + nstrips / 2.0;
654  }
655  //cout<<" Layer "<<TKlayers<<" TrajStrip: "<<nstrips<<" "<<pitch<<" "<<TrajStrip<<endl;
656  }
657 
658  for (edmNew::DetSet<SiStripCluster>::const_iterator iter = DSViter->begin(); iter != DSViter->end();
659  ++iter) {
660  //iter is a single SiStripCluster
661  StripClusterParameterEstimator::LocalValues parameters = stripcpe.localParameters(*iter, *stripdet);
662  float res = (parameters.first.x() - xloc);
663  float sigma = checkConsistency(parameters, xloc, xErr);
664  // The consistency is probably more accurately measured with the Chi2MeasurementEstimator. To use it
665  // you need a TransientTrackingRecHit instead of the cluster
666  //theEstimator= new Chi2MeasurementEstimator(30);
667  //const Chi2MeasurementEstimator *theEstimator(100);
668  //theEstimator->estimate(TM->tsos(), TransientTrackingRecHit);
669 
670  if (TKlayers >= 11) {
671  res = parameters.first.x() - xloc / uxlden; // radialy extrapolated x loc position at middle
672  sigma = abs(res) /
673  sqrt(parameters.second.xx() + xErr * xErr / uxlden / uxlden +
674  yErr * yErr * xloc * xloc * uylfac * uylfac / uxlden / uxlden / uxlden / uxlden);
675  }
676 
677  siStripClusterInfo_.setCluster(*iter, ClusterId);
678  // signal to noise from SiStripClusterInfo not working in 225. I'll fix this after the interface
679  // redesign in 300 -ku
680  //float cluster_info[7] = {res, sigma, parameters.first.x(), sqrt(parameters.second.xx()), parameters.first.y(), sqrt(parameters.second.yy()), signal_to_noise};
681  std::vector<float> cluster_info;
682  cluster_info.push_back(res);
683  cluster_info.push_back(sigma);
684  cluster_info.push_back(parameters.first.x());
685  cluster_info.push_back(sqrt(parameters.second.xx()));
686  cluster_info.push_back(parameters.first.y());
687  cluster_info.push_back(sqrt(parameters.second.yy()));
688  cluster_info.push_back(siStripClusterInfo_.signalOverNoise());
689  VCluster_info.push_back(cluster_info);
690  nClusters++;
691  LogDebug("SiStripHitEfficiency:HitEff") << "Have ID match. residual = " << VCluster_info.back()[0]
692  << " res sigma = " << VCluster_info.back()[1] << endl;
693  LogDebug("SiStripHitEfficiency:HitEff")
694  << "trajectory measurement compatability estimate = " << (*itm).estimate() << endl;
695  LogDebug("SiStripHitEfficiency:HitEff")
696  << "hit position = " << parameters.first.x() << " hit error = " << sqrt(parameters.second.xx())
697  << " trajectory position = " << xloc << " traj error = " << xErr << endl;
698  }
699  }
700  }
701  float FinalResSig = 1000.0;
702  float FinalCluster[7] = {1000.0, 1000.0, 0.0, 0.0, 0.0, 0.0, 0.0};
703  if (nClusters > 0) {
704  LogDebug("SiStripHitEfficiency:HitEff") << "found clusters > 0" << endl;
705  if (nClusters > 1) {
706  //get the smallest one
707  vector<vector<float> >::iterator ires;
708  for (ires = VCluster_info.begin(); ires != VCluster_info.end(); ires++) {
709  if (abs((*ires)[1]) < abs(FinalResSig)) {
710  FinalResSig = (*ires)[1];
711  for (unsigned int i = 0; i < ires->size(); i++) {
712  LogDebug("SiStripHitEfficiency:HitEff")
713  << "filling final cluster. i = " << i << " before fill FinalCluster[i]=" << FinalCluster[i]
714  << " and (*ires)[i] =" << (*ires)[i] << endl;
715  FinalCluster[i] = (*ires)[i];
716  LogDebug("SiStripHitEfficiency:HitEff")
717  << "filling final cluster. i = " << i << " after fill FinalCluster[i]=" << FinalCluster[i]
718  << " and (*ires)[i] =" << (*ires)[i] << endl;
719  }
720  }
721  LogDebug("SiStripHitEfficiency:HitEff")
722  << "iresidual = " << (*ires)[0] << " isigma = " << (*ires)[1]
723  << " and FinalRes = " << FinalCluster[0] << endl;
724  }
725  } else {
726  FinalResSig = VCluster_info.at(0)[1];
727  for (unsigned int i = 0; i < VCluster_info.at(0).size(); i++) {
728  FinalCluster[i] = VCluster_info.at(0)[i];
729  }
730  }
731  nClusters = 0;
732  VCluster_info.clear();
733  }
734 
735  LogDebug("SiStripHitEfficiency:HitEff")
736  << "Final residual in X = " << FinalCluster[0] << "+-" << (FinalCluster[0] / FinalResSig) << endl;
737  LogDebug("SiStripHitEfficiency:HitEff") << "Checking location of trajectory: abs(yloc) = " << abs(yloc)
738  << " abs(xloc) = " << abs(xloc) << endl;
739  LogDebug("SiStripHitEfficiency:HitEff")
740  << "Checking location of cluster hit: yloc = " << FinalCluster[4] << "+-" << FinalCluster[5]
741  << " xloc = " << FinalCluster[2] << "+-" << FinalCluster[3] << endl;
742  LogDebug("SiStripHitEfficiency:HitEff") << "Final cluster signal to noise = " << FinalCluster[6] << endl;
743 
744  float exclusionWidth = 0.4;
745  float TOBexclusion = 0.0;
746  float TECexRing5 = -0.89;
747  float TECexRing6 = -0.56;
748  float TECexRing7 = 0.60;
749  //Added by Chris Edelmaier to do TEC bonding exclusion
750  int subdetector = ((iidd >> 25) & 0x7);
751  int ringnumber = ((iidd >> 5) & 0x7);
752 
753  //New TOB and TEC bonding region exclusion zone
754  if ((TKlayers >= 5 && TKlayers < 11) ||
755  ((subdetector == 6) && ((ringnumber >= 5) && (ringnumber <= 7)))) {
756  //There are only 2 cases that we need to exclude for
757  float highzone = 0.0;
758  float lowzone = 0.0;
759  float higherr = yloc + 5.0 * yErr;
760  float lowerr = yloc - 5.0 * yErr;
761  if (TKlayers >= 5 && TKlayers < 11) {
762  //TOB zone
763  highzone = TOBexclusion + exclusionWidth;
764  lowzone = TOBexclusion - exclusionWidth;
765  } else if (ringnumber == 5) {
766  //TEC ring 5
767  highzone = TECexRing5 + exclusionWidth;
768  lowzone = TECexRing5 - exclusionWidth;
769  } else if (ringnumber == 6) {
770  //TEC ring 6
771  highzone = TECexRing6 + exclusionWidth;
772  lowzone = TECexRing6 - exclusionWidth;
773  } else if (ringnumber == 7) {
774  //TEC ring 7
775  highzone = TECexRing7 + exclusionWidth;
776  lowzone = TECexRing7 - exclusionWidth;
777  }
778  //Now that we have our exclusion region, we just have to properly identify it
779  if ((highzone <= higherr) && (highzone >= lowerr))
780  withinAcceptance = false;
781  if ((lowzone >= lowerr) && (lowzone <= higherr))
782  withinAcceptance = false;
783  if ((higherr <= highzone) && (higherr >= lowzone))
784  withinAcceptance = false;
785  if ((lowerr >= lowzone) && (lowerr <= highzone))
786  withinAcceptance = false;
787  }
788 
789  // fill ntuple varibles
790  //get global position from module id number iidd
791  TrajGlbX = xglob;
792  TrajGlbY = yglob;
793  TrajGlbZ = zglob;
794 
795  TrajLocErrX = xErr;
796  TrajLocErrY = yErr;
797 
798  Id = iidd;
799  run = run_nr;
800  event = ev_nr;
801  bunchx = bunch_nr;
802  //if ( SiStripQuality_->IsModuleBad(iidd) ) {
803  if (SiStripQuality_->getBadApvs(iidd) != 0) {
804  SiStripQualBad = 1;
805  LogDebug("SiStripHitEfficiency:HitEff") << "strip is bad from SiStripQuality" << endl;
806  } else {
807  SiStripQualBad = 0;
808  LogDebug("SiStripHitEfficiency:HitEff") << "strip is good from SiStripQuality" << endl;
809  }
810 
811  //check for FED-detected errors and include those in SiStripQualBad
812  for (unsigned int ii = 0; ii < fedErrorIds->size(); ii++) {
813  if (iidd == (*fedErrorIds)[ii].rawId())
814  SiStripQualBad = 1;
815  }
816 
817  TrajLocX = xloc;
818  TrajLocY = yloc;
819  TrajLocAngleX = angleX;
820  TrajLocAngleY = angleY;
821  ResX = FinalCluster[0];
822  ResXSig = FinalResSig;
823  if (FinalResSig != FinalCluster[1])
824  LogDebug("SiStripHitEfficiency:HitEff")
825  << "Problem with best cluster selection because FinalResSig = " << FinalResSig
826  << " and FinalCluster[1] = " << FinalCluster[1] << endl;
827  ClusterLocX = FinalCluster[2];
828  ClusterLocY = FinalCluster[4];
829  ClusterLocErrX = FinalCluster[3];
830  ClusterLocErrY = FinalCluster[5];
831  ClusterStoN = FinalCluster[6];
832 
833  // CM of APV crossed by traj
834  if (addCommonMode_)
835  if (commonModeDigis.isValid() && TrajStrip >= 0 && TrajStrip <= 768) {
836  edm::DetSetVector<SiStripRawDigi>::const_iterator digiframe = commonModeDigis->find(iidd);
837  if (digiframe != commonModeDigis->end())
838  if ((unsigned)TrajStrip / 128 < digiframe->data.size())
839  commonMode = digiframe->data.at(TrajStrip / 128).adc();
840  }
841 
842  LogDebug("SiStripHitEfficiency:HitEff") << "before check good" << endl;
843 
844  if (FinalResSig < 999.0) { //could make requirement on track/hit consistency, but for
845  //now take anything with a hit on the module
846  LogDebug("SiStripHitEfficiency:HitEff")
847  << "hit being counted as good " << FinalCluster[0] << " FinalRecHit " << iidd << " TKlayers "
848  << TKlayers << " xloc " << xloc << " yloc " << yloc << " module " << iidd
849  << " matched/stereo/rphi = " << ((iidd & 0x3) == 0) << "/" << ((iidd & 0x3) == 1) << "/"
850  << ((iidd & 0x3) == 2) << endl;
851  ModIsBad = 0;
852  traj->Fill();
853  } else {
854  LogDebug("SiStripHitEfficiency:HitEff")
855  << "hit being counted as bad ######### Invalid RPhi FinalResX " << FinalCluster[0]
856  << " FinalRecHit " << iidd << " TKlayers " << TKlayers << " xloc " << xloc << " yloc " << yloc
857  << " module " << iidd << " matched/stereo/rphi = " << ((iidd & 0x3) == 0) << "/"
858  << ((iidd & 0x3) == 1) << "/" << ((iidd & 0x3) == 2) << endl;
859  ModIsBad = 1;
860  traj->Fill();
861 
862  LogDebug("SiStripHitEfficiency:HitEff") << " RPhi Error " << sqrt(xErr * xErr + yErr * yErr)
863  << " ErrorX " << xErr << " yErr " << yErr << endl;
864  }
865  LogDebug("SiStripHitEfficiency:HitEff") << "after good location check" << endl;
866  }
867  LogDebug("SiStripHitEfficiency:HitEff") << "after list of clusters" << endl;
868  }
869  LogDebug("SiStripHitEfficiency:HitEff") << "After layers=TKLayers if" << endl;
870  }
871  LogDebug("SiStripHitEfficiency:HitEff") << "After looping over TrajAtValidHit list" << endl;
872  }
873  LogDebug("SiStripHitEfficiency:HitEff") << "end TMeasurement loop" << endl;
874  }
875  LogDebug("SiStripHitEfficiency:HitEff") << "end of trajectories loop" << endl;
876  }
877 }

References funct::abs(), addCommonMode_, addLumi_, AnalyticalPropagator_cfi::AnalyticalPropagator, anyDirection, edm::AssociationMap< Tag >::begin(), Surface::bounds(), bunchx, check2DPartner(), checkConsistency(), checkLayer(), hltPixelTracks_cff::chi2, ClusterLocErrX, ClusterLocErrY, ClusterLocX, ClusterLocY, clusters_token_, ClusterStoN, combinatorialTracks_token_, commonMode, commonModeToken_, edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator, cutOnTracks_, digis_token_, MillePedeFileConverter_cfg::e, edm::AssociationMap< Tag >::end(), events, EventTrackCKF, edm::EventSetup::get(), get, SiStripQuality::getBadApvs(), highPurity, muons_cff::highPurity, mps_fire::i, Id, TrackerGeometry::idToDetUnit(), cuy::ii, SiStripClusterInfo::initEvent(), input, instLumi, ires, isDoubleSided(), edm::HandleBase::isValid(), edm::Ref< C, T, F >::key(), layers, StripClusterParameterEstimator::localParameters(), LogDebug, V0Monitor_cfi::lumiScalers, LayerMeasurements::measurements(), HLT_2018_cff::measurementTrackerEvent, combine::missing, ModIsBad, heavyionUCCDQM_cfi::nClusters, reco::MuonTime::nDof, nHits, StripTopology::nstrips(), AlCaHLTBitMon_ParallelJobs::p, TrapezoidalPlaneBounds::parameters(), edm::Handle< T >::product(), edm::ESHandle< T >::product(), TrackCandidateProducer_cfi::propagator, pT, PU, rpcPointValidation_cfi::recHit, TrajectoryMeasurement::recHit(), ResX, ResXSig, run, scalerToken_, SiStripClusterInfo::setCluster(), SiStripClusterInfo::signalOverNoise(), siStripClusterInfo_, SiStripQualBad, edm::EDCollection< T >::size(), edm::DetSetVector< T >::size(), StripGeomDetUnit::specificTopology(), mathSSE::sqrt(), subdetector, GeomDet::surface(), StripSubdetector::TEC, TrackerTopology::tecSide(), reco::MuonTime::timeAtIpInOut, reco::MuonTime::timeAtIpInOutErr, createJobs::tmp, PbPb_ZMuSkimMuonDPG_cff::tracker, trackerEvent_token_, trackMultiplicityCut_, traj, trajectories_token_, TrajGlbX, TrajGlbY, TrajGlbZ, trajHitValid, TrajLocAngleX, TrajLocAngleY, TrajLocErrX, TrajLocErrY, TrajLocX, TrajLocY, trajTrackAsso_token_, useAllHitsFromTracksWithMissingHits_, useFirstMeas_, useLastMeas_, whatlayer, Bounds::width(), and withinAcceptance.

◆ beginJob()

void HitEff::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 101 of file HitEff.cc.

101  {
103  if (compSettings > 0) {
104  edm::LogInfo("SiStripHitEfficiency:HitEff") << "the compressions settings are:" << compSettings << std::endl;
105  fs->file().SetCompressionSettings(compSettings);
106  }
107 
108  traj = fs->make<TTree>("traj", "tree of trajectory positions");
109 #ifdef ExtendedCALIBTree
110  traj->Branch("timeDT", &timeDT, "timeDT/F");
111  traj->Branch("timeDTErr", &timeDTErr, "timeDTErr/F");
112  traj->Branch("timeDTDOF", &timeDTDOF, "timeDTDOF/I");
113  traj->Branch("timeECAL", &timeECAL, "timeECAL/F");
114  traj->Branch("dedx", &dedx, "dedx/F");
115  traj->Branch("dedxNOM", &dedxNOM, "dedxNOM/I");
116  traj->Branch("nLostHits", &nLostHits, "nLostHits/I");
117  traj->Branch("chi2", &chi2, "chi2/F");
118  traj->Branch("p", &p, "p/F");
119 #endif
120  traj->Branch("TrajGlbX", &TrajGlbX, "TrajGlbX/F");
121  traj->Branch("TrajGlbY", &TrajGlbY, "TrajGlbY/F");
122  traj->Branch("TrajGlbZ", &TrajGlbZ, "TrajGlbZ/F");
123  traj->Branch("TrajLocX", &TrajLocX, "TrajLocX/F");
124  traj->Branch("TrajLocY", &TrajLocY, "TrajLocY/F");
125  traj->Branch("TrajLocAngleX", &TrajLocAngleX, "TrajLocAngleX/F");
126  traj->Branch("TrajLocAngleY", &TrajLocAngleY, "TrajLocAngleY/F");
127  traj->Branch("TrajLocErrX", &TrajLocErrX, "TrajLocErrX/F");
128  traj->Branch("TrajLocErrY", &TrajLocErrY, "TrajLocErrY/F");
129  traj->Branch("ClusterLocX", &ClusterLocX, "ClusterLocX/F");
130  traj->Branch("ClusterLocY", &ClusterLocY, "ClusterLocY/F");
131  traj->Branch("ClusterLocErrX", &ClusterLocErrX, "ClusterLocErrX/F");
132  traj->Branch("ClusterLocErrY", &ClusterLocErrY, "ClusterLocErrY/F");
133  traj->Branch("ClusterStoN", &ClusterStoN, "ClusterStoN/F");
134  traj->Branch("ResX", &ResX, "ResX/F");
135  traj->Branch("ResXSig", &ResXSig, "ResXSig/F");
136  traj->Branch("ModIsBad", &ModIsBad, "ModIsBad/i");
137  traj->Branch("SiStripQualBad", &SiStripQualBad, "SiStripQualBad/i");
138  traj->Branch("withinAcceptance", &withinAcceptance, "withinAcceptance/O");
139  traj->Branch("nHits", &nHits, "nHits/I");
140  traj->Branch("pT", &pT, "pT/F");
141  traj->Branch("highPurity", &highPurity, "highPurity/O");
142  traj->Branch("trajHitValid", &trajHitValid, "trajHitValid/i");
143  traj->Branch("Id", &Id, "Id/i");
144  traj->Branch("run", &run, "run/i");
145  traj->Branch("event", &event, "event/i");
146  traj->Branch("layer", &whatlayer, "layer/i");
147  traj->Branch("tquality", &tquality, "tquality/I");
148  traj->Branch("bunchx", &bunchx, "bunchx/I");
149  if (addLumi_) {
150  traj->Branch("instLumi", &instLumi, "instLumi/F");
151  traj->Branch("PU", &PU, "PU/F");
152  }
153  if (addCommonMode_)
154  traj->Branch("commonMode", &commonMode, "commonMode/F");
155 
156  events = 0;
157  EventTrackCKF = 0;
158 }

References addCommonMode_, addLumi_, bunchx, hltPixelTracks_cff::chi2, ClusterLocErrX, ClusterLocErrY, ClusterLocX, ClusterLocY, ClusterStoN, commonMode, compSettings, events, EventTrackCKF, TFileService::file(), highPurity, Id, instLumi, TFileService::make(), ModIsBad, nHits, AlCaHLTBitMon_ParallelJobs::p, pT, PU, ResX, ResXSig, run, SiStripQualBad, tquality, traj, TrajGlbX, TrajGlbY, TrajGlbZ, trajHitValid, TrajLocAngleX, TrajLocAngleY, TrajLocErrX, TrajLocErrY, TrajLocX, TrajLocY, whatlayer, and withinAcceptance.

◆ check2DPartner()

bool HitEff::check2DPartner ( unsigned int  iidd,
const std::vector< TrajectoryMeasurement > &  traj 
)

Definition at line 926 of file HitEff.cc.

926  {
927  unsigned int partner_iidd = 0;
928  bool found2DPartner = false;
929  // first get the id of the other detector
930  if ((iidd & 0x3) == 1)
931  partner_iidd = iidd + 1;
932  if ((iidd & 0x3) == 2)
933  partner_iidd = iidd - 1;
934  // next look in the trajectory measurements for a measurement from that detector
935  // loop through trajectory measurements to find the partner_iidd
936  for (std::vector<TrajectoryMeasurement>::const_iterator iTM = traj.begin(); iTM != traj.end(); ++iTM) {
937  if (iTM->recHit()->geographicalId().rawId() == partner_iidd) {
938  found2DPartner = true;
939  }
940  }
941  return found2DPartner;
942 }

References traj.

Referenced by analyze().

◆ checkConsistency()

double HitEff::checkConsistency ( const StripClusterParameterEstimator::LocalValues parameters,
double  xx,
double  xerr 
)

Definition at line 887 of file HitEff.cc.

887  {
888  double error = sqrt(parameters.second.xx() + xerr * xerr);
889  double separation = abs(parameters.first.x() - xx);
890  double consistency = separation / error;
891  return consistency;
892 }

References funct::abs(), relativeConstraints::error, mathSSE::sqrt(), and geometryCSVtoXML::xx.

Referenced by analyze().

◆ checkLayer()

unsigned int HitEff::checkLayer ( unsigned int  iidd,
const TrackerTopology tTopo 
)

Definition at line 944 of file HitEff.cc.

944  {
946  unsigned int subid = strip.subdetId();
947  if (subid == StripSubdetector::TIB) {
948  return tTopo->tibLayer(iidd);
949  }
950  if (subid == StripSubdetector::TOB) {
951  return tTopo->tobLayer(iidd) + 4;
952  }
953  if (subid == StripSubdetector::TID) {
954  return tTopo->tidWheel(iidd) + 10;
955  }
956  if (subid == StripSubdetector::TEC) {
957  return tTopo->tecWheel(iidd) + 13;
958  }
959  return 0;
960 }

References digitizers_cfi::strip, StripSubdetector::TEC, TrackerTopology::tecWheel(), StripSubdetector::TIB, TrackerTopology::tibLayer(), StripSubdetector::TID, TrackerTopology::tidWheel(), StripSubdetector::TOB, and TrackerTopology::tobLayer().

Referenced by analyze().

◆ endJob()

void HitEff::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 879 of file HitEff.cc.

879  {
880  traj->GetDirectory()->cd();
881  traj->Write();
882 
883  LogDebug("SiStripHitEfficiency:HitEff") << " Events Analysed " << events << endl;
884  LogDebug("SiStripHitEfficiency:HitEff") << " Number Of Tracked events " << EventTrackCKF << endl;
885 }

References events, EventTrackCKF, LogDebug, and traj.

Referenced by o2olib.O2ORunMgr::executeJob().

◆ isDoubleSided()

bool HitEff::isDoubleSided ( unsigned int  iidd,
const TrackerTopology tTopo 
) const

Definition at line 894 of file HitEff.cc.

894  {
896  unsigned int subid = strip.subdetId();
897  unsigned int layer = 0;
898  if (subid == StripSubdetector::TIB) {
899  layer = tTopo->tibLayer(iidd);
900  if (layer == 1 || layer == 2)
901  return true;
902  else
903  return false;
904  } else if (subid == StripSubdetector::TOB) {
905  layer = tTopo->tobLayer(iidd) + 4;
906  if (layer == 5 || layer == 6)
907  return true;
908  else
909  return false;
910  } else if (subid == StripSubdetector::TID) {
911  layer = tTopo->tidRing(iidd) + 10;
912  if (layer == 11 || layer == 12)
913  return true;
914  else
915  return false;
916  } else if (subid == StripSubdetector::TEC) {
917  layer = tTopo->tecRing(iidd) + 13;
918  if (layer == 14 || layer == 15 || layer == 18)
919  return true;
920  else
921  return false;
922  } else
923  return false;
924 }

References digitizers_cfi::strip, StripSubdetector::TEC, TrackerTopology::tecRing(), StripSubdetector::TIB, TrackerTopology::tibLayer(), StripSubdetector::TID, TrackerTopology::tidRing(), StripSubdetector::TOB, and TrackerTopology::tobLayer().

Referenced by analyze().

Member Data Documentation

◆ addCommonMode_

bool HitEff::addCommonMode_
private

Definition at line 71 of file HitEff.h.

Referenced by analyze(), beginJob(), and HitEff().

◆ addLumi_

bool HitEff::addLumi_
private

Definition at line 70 of file HitEff.h.

Referenced by analyze(), beginJob(), and HitEff().

◆ bunchx

unsigned int HitEff::bunchx
private

Definition at line 117 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ ClusterLocErrX

float HitEff::ClusterLocErrX
private

Definition at line 108 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ ClusterLocErrY

float HitEff::ClusterLocErrY
private

Definition at line 108 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ ClusterLocX

float HitEff::ClusterLocX
private

Definition at line 108 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ ClusterLocY

float HitEff::ClusterLocY
private

Definition at line 108 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ clusters_token_

const edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > HitEff::clusters_token_
private

Definition at line 81 of file HitEff.h.

Referenced by analyze().

◆ ClusterStoN

float HitEff::ClusterStoN
private

Definition at line 108 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ combinatorialTracks_token_

const edm::EDGetTokenT<reco::TrackCollection> HitEff::combinatorialTracks_token_
private

Definition at line 78 of file HitEff.h.

Referenced by analyze().

◆ commonMode

float HitEff::commonMode
private

Definition at line 120 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ commonModeToken_

const edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > HitEff::commonModeToken_
private

Definition at line 66 of file HitEff.h.

Referenced by analyze().

◆ compSettings

int HitEff::compSettings
private

Definition at line 90 of file HitEff.h.

Referenced by beginJob(), and HitEff().

◆ conf_

edm::ParameterSet HitEff::conf_
private

Definition at line 85 of file HitEff.h.

Referenced by HitEff().

◆ cutOnTracks_

bool HitEff::cutOnTracks_
private

Definition at line 72 of file HitEff.h.

Referenced by analyze(), and HitEff().

◆ DEBUG

bool HitEff::DEBUG
private

Definition at line 92 of file HitEff.h.

Referenced by HitEff().

◆ digis_token_

const edm::EDGetTokenT<DetIdCollection> HitEff::digis_token_
private

Definition at line 82 of file HitEff.h.

Referenced by analyze().

◆ event

unsigned int HitEff::event
private

◆ events

int HitEff::events
private

◆ EventTrackCKF

int HitEff::EventTrackCKF
private

Definition at line 88 of file HitEff.h.

Referenced by analyze(), beginJob(), and endJob().

◆ highPurity

bool HitEff::highPurity
private

Definition at line 114 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ Id

unsigned int HitEff::Id
private

Definition at line 111 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ instLumi

float HitEff::instLumi
private

Definition at line 119 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ layers

unsigned int HitEff::layers
private

Definition at line 91 of file HitEff.h.

Referenced by analyze(), and HitEff().

◆ ModIsBad

unsigned int HitEff::ModIsBad
private

Definition at line 110 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ nHits

int HitEff::nHits
private

Definition at line 115 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ pT

float HitEff::pT
private

Definition at line 116 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ PU

float HitEff::PU
private

Definition at line 119 of file HitEff.h.

Referenced by analyze(), beginJob(), and upgradeWorkflowComponents.UpgradeWorkflow::init().

◆ ResX

float HitEff::ResX
private

Definition at line 109 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ ResXSig

float HitEff::ResXSig
private

Definition at line 109 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ run

unsigned int HitEff::run
private

◆ scalerToken_

const edm::EDGetTokenT<LumiScalersCollection> HitEff::scalerToken_
private

Definition at line 65 of file HitEff.h.

Referenced by analyze().

◆ siStripClusterInfo_

SiStripClusterInfo HitEff::siStripClusterInfo_
private

Definition at line 68 of file HitEff.h.

Referenced by analyze().

◆ SiStripQualBad

unsigned int HitEff::SiStripQualBad
private

Definition at line 112 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ tquality

int HitEff::tquality
private

Definition at line 118 of file HitEff.h.

Referenced by beginJob().

◆ trackerEvent_token_

const edm::EDGetTokenT<MeasurementTrackerEvent> HitEff::trackerEvent_token_
private

Definition at line 83 of file HitEff.h.

Referenced by analyze().

◆ trackMultiplicityCut_

unsigned int HitEff::trackMultiplicityCut_
private

Definition at line 73 of file HitEff.h.

Referenced by analyze(), and HitEff().

◆ traj

TTree* HitEff::traj
private

Definition at line 87 of file HitEff.h.

Referenced by analyze(), beginJob(), check2DPartner(), and endJob().

◆ trajectories_token_

const edm::EDGetTokenT<std::vector<Trajectory> > HitEff::trajectories_token_
private

Definition at line 79 of file HitEff.h.

Referenced by analyze().

◆ TrajGlbX

float HitEff::TrajGlbX
private

Definition at line 105 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajGlbY

float HitEff::TrajGlbY
private

Definition at line 105 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajGlbZ

float HitEff::TrajGlbZ
private

Definition at line 105 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ trajHitValid

unsigned int HitEff::trajHitValid
private

Definition at line 117 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocAngleX

float HitEff::TrajLocAngleX
private

Definition at line 106 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocAngleY

float HitEff::TrajLocAngleY
private

Definition at line 106 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocErrX

float HitEff::TrajLocErrX
private

Definition at line 107 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocErrY

float HitEff::TrajLocErrY
private

Definition at line 107 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocX

float HitEff::TrajLocX
private

Definition at line 106 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocY

float HitEff::TrajLocY
private

Definition at line 106 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ trajTrackAsso_token_

const edm::EDGetTokenT<TrajTrackAssociationCollection> HitEff::trajTrackAsso_token_
private

Definition at line 80 of file HitEff.h.

Referenced by analyze().

◆ useAllHitsFromTracksWithMissingHits_

bool HitEff::useAllHitsFromTracksWithMissingHits_
private

Definition at line 76 of file HitEff.h.

Referenced by analyze(), and HitEff().

◆ useFirstMeas_

bool HitEff::useFirstMeas_
private

Definition at line 74 of file HitEff.h.

Referenced by analyze(), and HitEff().

◆ useLastMeas_

bool HitEff::useLastMeas_
private

Definition at line 75 of file HitEff.h.

Referenced by analyze(), and HitEff().

◆ whatlayer

unsigned int HitEff::whatlayer
private

Definition at line 93 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ withinAcceptance

bool HitEff::withinAcceptance
private

Definition at line 113 of file HitEff.h.

Referenced by analyze(), and beginJob().

SiStripQuality::getBadApvs
short getBadApvs(const uint32_t &detid) const
Definition: SiStripQuality.cc:672
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
edm::DetSetVector< SiStripRawDigi >
heavyionUCCDQM_cfi.nClusters
nClusters
Definition: heavyionUCCDQM_cfi.py:9
MeasurementEstimator
Definition: MeasurementEstimator.h:19
HitEff::ModIsBad
unsigned int ModIsBad
Definition: HitEff.h:110
LayerMeasurements::measurements
std::vector< TrajectoryMeasurement > measurements(const DetLayer &layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
Definition: LayerMeasurements.cc:122
mps_fire.i
i
Definition: mps_fire.py:355
anyDirection
Definition: PropagationDirection.h:4
HitEff::TrajLocErrY
float TrajLocErrY
Definition: HitEff.h:107
HitEff::TrajLocAngleX
float TrajLocAngleX
Definition: HitEff.h:106
input
static const std::string input
Definition: EdmProvDump.cc:48
Bounds::width
virtual float width() const =0
HitEff::scalerToken_
const edm::EDGetTokenT< LumiScalersCollection > scalerToken_
Definition: HitEff.h:65
edm::Handle::product
T const * product() const
Definition: Handle.h:70
DetLayer
Definition: DetLayer.h:21
TrajectoryAtInvalidHit
Definition: TrajectoryAtInvalidHit.h:21
HitEff::withinAcceptance
bool withinAcceptance
Definition: HitEff.h:113
HitEff::TrajLocErrX
float TrajLocErrX
Definition: HitEff.h:107
HitEff::pT
float pT
Definition: HitEff.h:116
HitEff::run
unsigned int run
Definition: HitEff.h:117
HitEff::checkConsistency
double checkConsistency(const StripClusterParameterEstimator::LocalValues &parameters, double xx, double xerr)
Definition: HitEff.cc:887
HitEff::ClusterLocX
float ClusterLocX
Definition: HitEff.h:108
edm
HLT enums.
Definition: AlignableModifier.h:19
HitEff::TrajGlbZ
float TrajGlbZ
Definition: HitEff.h:105
TrackerTopology
Definition: TrackerTopology.h:16
digitizers_cfi.strip
strip
Definition: digitizers_cfi.py:19
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
TkStripCPERecord
Definition: TkStripCPERecord.h:13
V0Monitor_cfi.lumiScalers
lumiScalers
Definition: V0Monitor_cfi.py:9
TFileService::file
TFile & file() const
return opened TFile
Definition: TFileService.h:37
HitEff::whatlayer
unsigned int whatlayer
Definition: HitEff.h:93
StripSubdetector
Definition: StripSubdetector.h:12
edm::LogInfo
Definition: MessageLogger.h:254
edmNew::DetSetVector::const_iterator
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
Definition: DetSetVectorNew.h:231
edm::EDConsumerBase::consumesCollector
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
Definition: EDConsumerBase.cc:71
HitEff::highPurity
bool highPurity
Definition: HitEff.h:114
HitEff::SiStripQualBad
unsigned int SiStripQualBad
Definition: HitEff.h:112
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
HitEff::ResXSig
float ResXSig
Definition: HitEff.h:109
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
hltPixelTracks_cff.chi2
chi2
Definition: hltPixelTracks_cff.py:25
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
edm::Handle
Definition: AssociativeIterator.h:50
relativeConstraints.error
error
Definition: relativeConstraints.py:53
HitEff::addLumi_
bool addLumi_
Definition: HitEff.h:70
HitEff::checkLayer
unsigned int checkLayer(unsigned int iidd, const TrackerTopology *tTopo)
Definition: HitEff.cc:944
rpcPointValidation_cfi.recHit
recHit
Definition: rpcPointValidation_cfi.py:7
TrackerTopology::tidRing
unsigned int tidRing(const DetId &id) const
Definition: TrackerTopology.h:218
edm::Ref< TrackCollection >
TrackerTopology::tidWheel
unsigned int tidWheel(const DetId &id) const
Definition: TrackerTopology.h:201
reco::MuonTime
Definition: MuonTime.h:5
parameters
parameters
Definition: BeamSpot_PayloadInspector.cc:14
HitEff::ClusterLocErrX
float ClusterLocErrX
Definition: HitEff.h:108
TrackerGeometry::idToDetUnit
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
Definition: TrackerGeometry.cc:183
HitEff::compSettings
int compSettings
Definition: HitEff.h:90
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
Propagator
Definition: Propagator.h:44
DetId
Definition: DetId.h:17
StripClusterParameterEstimator
Definition: StripClusterParameterEstimator.h:25
edm::AssociationMap::end
const_iterator end() const
last iterator over the map (read only)
Definition: AssociationMap.h:171
ires
int ires[2]
Definition: CascadeWrapper.h:19
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
HitEff::PU
float PU
Definition: HitEff.h:119
HitEff::traj
TTree * traj
Definition: HitEff.h:87
LayerMeasurements
Definition: LayerMeasurements.h:18
PVValHelper::estimator
estimator
Definition: PVValidationHelpers.h:44
HitEff::EventTrackCKF
int EventTrackCKF
Definition: HitEff.h:88
TrackCandidateProducer_cfi.propagator
propagator
Definition: TrackCandidateProducer_cfi.py:17
CkfComponentsRecord
Definition: CkfComponentsRecord.h:22
HitEff::cutOnTracks_
bool cutOnTracks_
Definition: HitEff.h:72
HitEff::TrajLocY
float TrajLocY
Definition: HitEff.h:106
TrapezoidalPlaneBounds::parameters
virtual const std::array< const float, 4 > parameters() const
Definition: TrapezoidalPlaneBounds.cc:49
reco::MuonCollection
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
HitEff::ClusterLocY
float ClusterLocY
Definition: HitEff.h:108
SiStripQualityRcd
Definition: SiStripDependentRecords.h:56
HitEff::siStripClusterInfo_
SiStripClusterInfo siStripClusterInfo_
Definition: HitEff.h:68
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
HitEff::conf_
edm::ParameterSet conf_
Definition: HitEff.h:85
edm::EDConsumerBase::mayConsume
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
Definition: EDConsumerBase.h:141
HitEff::useLastMeas_
bool useLastMeas_
Definition: HitEff.h:75
edm::ESHandle< TrackerTopology >
HitEff::DEBUG
bool DEBUG
Definition: HitEff.h:92
HitEff::isDoubleSided
bool isDoubleSided(unsigned int iidd, const TrackerTopology *tTopo) const
Definition: HitEff.cc:894
HitEff::trackMultiplicityCut_
unsigned int trackMultiplicityCut_
Definition: HitEff.h:73
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
HitEff::commonModeToken_
const edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > commonModeToken_
Definition: HitEff.h:66
edm::DetSetVector::size
size_type size() const
Return the number of contained DetSets.
Definition: DetSetVector.h:259
HitEff::events
int events
Definition: HitEff.h:88
HitEff::layers
unsigned int layers
Definition: HitEff.h:91
reco::MuonTime::nDof
int nDof
number of muon stations used
Definition: MuonTime.h:9
HitEff::bunchx
unsigned int bunchx
Definition: HitEff.h:117
reco::TrackRef
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:20
AnalyticalPropagator_cfi.AnalyticalPropagator
AnalyticalPropagator
Definition: AnalyticalPropagator_cfi.py:3
PbPb_ZMuSkimMuonDPG_cff.tracker
tracker
Definition: PbPb_ZMuSkimMuonDPG_cff.py:60
SiStripClusterInfo::setCluster
void setCluster(const SiStripCluster &cluster, int detId)
Definition: SiStripClusterInfo.cc:16
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator
friend struct const_iterator
Definition: AssociationMap.h:274
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
reco::MuonTime::timeAtIpInOutErr
float timeAtIpInOutErr
Definition: MuonTime.h:14
HitEff::useAllHitsFromTracksWithMissingHits_
bool useAllHitsFromTracksWithMissingHits_
Definition: HitEff.h:76
edm::DetSetVector::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
edm::Service< TFileService >
TrackerTopology::tecRing
unsigned int tecRing(const DetId &id) const
ring id
Definition: TrackerTopology.h:217
HitEff::trajTrackAsso_token_
const edm::EDGetTokenT< TrajTrackAssociationCollection > trajTrackAsso_token_
Definition: HitEff.h:80
HitEff::clusters_token_
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusters_token_
Definition: HitEff.h:81
HLT_2018_cff.measurementTrackerEvent
measurementTrackerEvent
Definition: HLT_2018_cff.py:13788
HitEff::check2DPartner
bool check2DPartner(unsigned int iidd, const std::vector< TrajectoryMeasurement > &traj)
Definition: HitEff.cc:926
TrapezoidalPlaneBounds
Definition: TrapezoidalPlaneBounds.h:15
get
#define get
res
Definition: Electron.h:6
HitEff::ClusterLocErrY
float ClusterLocErrY
Definition: HitEff.h:108
StripTopology::nstrips
virtual int nstrips() const =0
HitEff::digis_token_
const edm::EDGetTokenT< DetIdCollection > digis_token_
Definition: HitEff.h:82
HitEff::tquality
int tquality
Definition: HitEff.h:118
HitEff::TrajGlbY
float TrajGlbY
Definition: HitEff.h:105
HitEff::trajectories_token_
const edm::EDGetTokenT< std::vector< Trajectory > > trajectories_token_
Definition: HitEff.h:79
HitEff::trackerEvent_token_
const edm::EDGetTokenT< MeasurementTrackerEvent > trackerEvent_token_
Definition: HitEff.h:83
TrajectoryMeasurement::recHit
ConstRecHitPointer const & recHit() const
Definition: TrajectoryMeasurement.h:190
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
HitEff::TrajLocX
float TrajLocX
Definition: HitEff.h:106
edmNew::DetSetVector
Definition: DetSetNew.h:13
TrackerTopology::tobLayer
unsigned int tobLayer(const DetId &id) const
Definition: TrackerTopology.h:147
SiStripClusterInfo::initEvent
void initEvent(const edm::EventSetup &iSetup)
Definition: SiStripClusterInfo.cc:10
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
HitEff::commonMode
float commonMode
Definition: HitEff.h:120
HitEff::useFirstMeas_
bool useFirstMeas_
Definition: HitEff.h:74
edm::ValueMap
Definition: ValueMap.h:107
edm::EDCollection::size
size_type size() const
Definition: EDCollection.h:82
edm::AssociationMap::begin
const_iterator begin() const
first iterator over the map (read only)
Definition: AssociationMap.h:169
BoundPlane
HitEff::TrajGlbX
float TrajGlbX
Definition: HitEff.h:105
muons_cff.highPurity
highPurity
Definition: muons_cff.py:140
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
edm::Ref::key
key_type key() const
Accessor for product key.
Definition: Ref.h:250
StripGeomDetUnit::specificTopology
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
Definition: StripGeomDetUnit.cc:17
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
StripClusterParameterEstimator::LocalValues
std::pair< LocalPoint, LocalError > LocalValues
Definition: StripClusterParameterEstimator.h:27
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
reco::MuonTime::timeAtIpInOut
float timeAtIpInOut
Definition: MuonTime.h:13
combine.missing
missing
Definition: combine.py:5
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:126
HitEff::TrajLocAngleY
float TrajLocAngleY
Definition: HitEff.h:106
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
HitEff::Id
unsigned int Id
Definition: HitEff.h:111
MagneticField
Definition: MagneticField.h:19
SiStripClusterInfo::signalOverNoise
float signalOverNoise() const
Definition: SiStripClusterInfo.h:53
HitEff::instLumi
float instLumi
Definition: HitEff.h:119
TrackerTopology::tecWheel
unsigned int tecWheel(const DetId &id) const
Definition: TrackerTopology.h:198
TrajectoryMeasurement
Definition: TrajectoryMeasurement.h:25
StripTopology
Definition: StripTopology.h:11
cuy.ii
ii
Definition: cuy.py:590
edm::InputTag
Definition: InputTag.h:15
HitEff::trajHitValid
unsigned int trajHitValid
Definition: HitEff.h:117
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
HitEff::ResX
float ResX
Definition: HitEff.h:109
geometryCSVtoXML.xx
xx
Definition: geometryCSVtoXML.py:19
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
HitEff::nHits
int nHits
Definition: HitEff.h:115
TFileService::make
T * make(const Args &... args) const
make new ROOT object
Definition: TFileService.h:64
HitEff::combinatorialTracks_token_
const edm::EDGetTokenT< reco::TrackCollection > combinatorialTracks_token_
Definition: HitEff.h:78
HitEff::addCommonMode_
bool addCommonMode_
Definition: HitEff.h:71
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
StripGeomDetUnit
Definition: StripGeomDetUnit.h:15
TrackerTopology::tibLayer
unsigned int tibLayer(const DetId &id) const
Definition: TrackerTopology.h:150
TrackerGeometry
Definition: TrackerGeometry.h:14
edmNew::DetSet::const_iterator
const data_type * const_iterator
Definition: DetSetNew.h:31
TrackingComponentsRecord
Definition: TrackingComponentsRecord.h:12
HitEff::ClusterStoN
float ClusterStoN
Definition: HitEff.h:108
TrackerTopology::tecSide
unsigned int tecSide(const DetId &id) const
Definition: TrackerTopology.h:184
subdetector
TString subdetector
Definition: trackSplitPlot.h:54