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::one::EDAnalyzer< edm::one::SharedResources > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 HitEff (const edm::ParameterSet &conf)
 
 ~HitEff () override=default
 
- Public Member Functions inherited from edm::one::EDAnalyzer< edm::one::SharedResources >
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::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
 
const edm::ESGetToken< Chi2MeasurementEstimatorBase, TrackingComponentsRecordchi2MeasurementEstimatorToken_
 
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_
 
const edm::ESGetToken< StripClusterParameterEstimator, TkStripCPERecordcpeToken_
 
bool cutOnTracks_
 
bool DEBUG
 
const edm::EDGetTokenT< DetIdCollectiondigis_token_
 
unsigned int event
 
int events
 
int EventTrackCKF
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordgeomToken_
 
bool highPurity
 
unsigned int Id
 
float instLumi
 
unsigned int layers
 
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecordmagFieldToken_
 
const edm::ESGetToken< MeasurementTracker, CkfComponentsRecordmeasurementTkToken_
 
const edm::EDGetTokenT< OnlineLuminosityRecordmetaDataToken_
 
unsigned int ModIsBad
 
int nHits
 
const edm::ESGetToken< Propagator, TrackingComponentsRecordpropagatorToken_
 
float pT
 
float PU
 
float ResX
 
float ResXSig
 
unsigned int run
 
const edm::EDGetTokenT< LumiScalersCollectionscalerToken_
 
SiStripClusterInfo siStripClusterInfo_
 
unsigned int SiStripQualBad
 
const edm::ESGetToken< SiStripQuality, SiStripQualityRcdsiStripQualityToken_
 
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtopoToken_
 
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::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename 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)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Definition at line 52 of file HitEff.h.

Constructor & Destructor Documentation

◆ HitEff()

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

Definition at line 73 of file HitEff.cc.

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

74  : scalerToken_(consumes<LumiScalersCollection>(conf.getParameter<edm::InputTag>("lumiScalers"))),
75  metaDataToken_(consumes<OnlineLuminosityRecord>(conf.getParameter<edm::InputTag>("metadata"))),
79  consumes<reco::TrackCollection>(conf.getParameter<edm::InputTag>("combinatorialTracks"))),
80  trajectories_token_(consumes<std::vector<Trajectory> >(conf.getParameter<edm::InputTag>("trajectories"))),
81  trajTrackAsso_token_(consumes<TrajTrackAssociationCollection>(conf.getParameter<edm::InputTag>("trajectories"))),
84  digis_token_(consumes<DetIdCollection>(conf.getParameter<edm::InputTag>("siStripDigis"))),
85  trackerEvent_token_(consumes<MeasurementTrackerEvent>(conf.getParameter<edm::InputTag>("trackerEvent"))),
88  cpeToken_(esConsumes(edm::ESInputTag("", "StripCPEfromTrackAngle"))),
93  propagatorToken_(esConsumes(edm::ESInputTag("", "PropagatorWithMaterial"))),
94  conf_(conf) {
95  usesResource(TFileService::kSharedResource);
96  compSettings = conf_.getUntrackedParameter<int>("CompressionSettings", -1);
97  layers = conf_.getParameter<int>("Layer");
98  DEBUG = conf_.getParameter<bool>("Debug");
99  addLumi_ = conf_.getUntrackedParameter<bool>("addLumi", false);
100  addCommonMode_ = conf_.getUntrackedParameter<bool>("addCommonMode", false);
101  cutOnTracks_ = conf_.getUntrackedParameter<bool>("cutOnTracks", false);
102  trackMultiplicityCut_ = conf.getUntrackedParameter<unsigned int>("trackMultiplicity", 100);
103  useFirstMeas_ = conf_.getUntrackedParameter<bool>("useFirstMeas", false);
104  useLastMeas_ = conf_.getUntrackedParameter<bool>("useLastMeas", false);
106  conf_.getUntrackedParameter<bool>("useAllHitsFromTracksWithMissingHits", false);
107 }
static const std::string kSharedResource
Definition: TFileService.h:76
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magFieldToken_
Definition: HitEff.h:91
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::EDGetTokenT< OnlineLuminosityRecord > metaDataToken_
Definition: HitEff.h:65
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
Definition: HitEff.h:87
bool useAllHitsFromTracksWithMissingHits_
Definition: HitEff.h:76
int compSettings
Definition: HitEff.h:101
const edm::EDGetTokenT< std::vector< Trajectory > > trajectories_token_
Definition: HitEff.h:79
SiStripClusterInfo siStripClusterInfo_
Definition: HitEff.h:68
const edm::ESGetToken< SiStripQuality, SiStripQualityRcd > siStripQualityToken_
Definition: HitEff.h:90
bool DEBUG
Definition: HitEff.h:103
const edm::EDGetTokenT< MeasurementTrackerEvent > trackerEvent_token_
Definition: HitEff.h:83
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
Definition: HitEff.h:88
T getUntrackedParameter(std::string const &, T const &) const
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusters_token_
Definition: HitEff.h:81
const edm::EDGetTokenT< reco::TrackCollection > combinatorialTracks_token_
Definition: HitEff.h:78
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
const edm::ESGetToken< Propagator, TrackingComponentsRecord > propagatorToken_
Definition: HitEff.h:94
const edm::EDGetTokenT< DetIdCollection > digis_token_
Definition: HitEff.h:82
const edm::ESGetToken< MeasurementTracker, CkfComponentsRecord > measurementTkToken_
Definition: HitEff.h:92
const edm::ESGetToken< Chi2MeasurementEstimatorBase, TrackingComponentsRecord > chi2MeasurementEstimatorToken_
Definition: HitEff.h:93
bool useLastMeas_
Definition: HitEff.h:75
const edm::ESGetToken< StripClusterParameterEstimator, TkStripCPERecord > cpeToken_
Definition: HitEff.h:89
unsigned int trackMultiplicityCut_
Definition: HitEff.h:73
unsigned int layers
Definition: HitEff.h:102
bool addLumi_
Definition: HitEff.h:70
bool addCommonMode_
Definition: HitEff.h:71
const edm::EDGetTokenT< TrajTrackAssociationCollection > trajTrackAsso_token_
Definition: HitEff.h:80
bool cutOnTracks_
Definition: HitEff.h:72
bool useFirstMeas_
Definition: HitEff.h:74
const edm::EDGetTokenT< LumiScalersCollection > scalerToken_
Definition: HitEff.h:64
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
const edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > commonModeToken_
Definition: HitEff.h:66
edm::ParameterSet conf_
Definition: HitEff.h:96

◆ ~HitEff()

HitEff::~HitEff ( )
overridedefault

Member Function Documentation

◆ analyze()

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

Implements edm::one::EDAnalyzerBase.

Definition at line 168 of file HitEff.cc.

References funct::abs(), addCommonMode_, addLumi_, AnalyticalPropagator_cfi::AnalyticalPropagator, anyDirection, OnlineLuminosityRecord::avgPileUp(), edm::AssociationMap< Tag >::begin(), Surface::bounds(), bunchx, hltPixelTracks_cff::chi2, chi2MeasurementEstimatorToken_, ClusterLocErrX, ClusterLocErrY, ClusterLocX, ClusterLocY, clusters_token_, ClusterStoN, combinatorialTracks_token_, commonMode, commonModeToken_, edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator, cpeToken_, cutOnTracks_, digis_token_, MillePedeFileConverter_cfg::e, edm::AssociationMap< Tag >::end(), events, EventTrackCKF, geomToken_, SiStripQuality::getBadApvs(), edm::EventSetup::getData(), edm::EventSetup::getHandle(), highPurity, muons_cff::highPurity, mps_fire::i, Id, TrackerGeometry::idToDetUnit(), cuy::ii, SiStripClusterInfo::initEvent(), input, OnlineLuminosityRecord::instLumi(), instLumi, sistrip::SpyUtilities::isValid(), edm::HandleBase::isValid(), edm::Ref< C, T, F >::key(), layers, StripClusterParameterEstimator::localParameters(), LogDebug, V0Monitor_cfi::lumiScalers, magFieldToken_, measurementTkToken_, HLT_2023v12_cff::measurementTrackerEvent, metaDataToken_, combine::missing, ModIsBad, heavyionUCCDQM_cfi::nClusters, reco::MuonTime::nDof, nHits, StripTopology::nstrips(), AlCaHLTBitMon_ParallelJobs::p, TrapezoidalPlaneBounds::parameters(), edm::Handle< T >::product(), TrackCandidateProducer_cfi::propagator, propagatorToken_, pT, PU, rpcPointValidation_cfi::recHit, TrajectoryMeasurement::recHit(), ResX, ResXSig, run, scalerToken_, SiStripClusterInfo::setCluster(), SiStripClusterInfo::signalOverNoise(), siStripClusterInfo_, SiStripQualBad, siStripQualityToken_, 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, topoToken_, 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.

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

◆ beginJob()

void HitEff::beginJob ( )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 109 of file HitEff.cc.

References addCommonMode_, addLumi_, bunchx, hltPixelTracks_cff::chi2, ClusterLocErrX, ClusterLocErrY, ClusterLocX, ClusterLocY, ClusterStoN, commonMode, compSettings, events, EventTrackCKF, compareTotals::fs, highPurity, Id, instLumi, 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.

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

◆ endJob()

void HitEff::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 869 of file HitEff.cc.

References events, EventTrackCKF, LogDebug, and traj.

Referenced by o2olib.O2ORunMgr::executeJob().

869  {
870  traj->GetDirectory()->cd();
871  traj->Write();
872 
873  LogDebug("SiStripHitEfficiency:HitEff") << " Events Analysed " << events << endl;
874  LogDebug("SiStripHitEfficiency:HitEff") << " Number Of Tracked events " << EventTrackCKF << endl;
875 }
int events
Definition: HitEff.h:99
TTree * traj
Definition: HitEff.h:98
int EventTrackCKF
Definition: HitEff.h:99
#define LogDebug(id)

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 128 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ chi2MeasurementEstimatorToken_

const edm::ESGetToken<Chi2MeasurementEstimatorBase, TrackingComponentsRecord> HitEff::chi2MeasurementEstimatorToken_
private

Definition at line 93 of file HitEff.h.

Referenced by analyze().

◆ ClusterLocErrX

float HitEff::ClusterLocErrX
private

Definition at line 119 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ ClusterLocErrY

float HitEff::ClusterLocErrY
private

Definition at line 119 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ ClusterLocX

float HitEff::ClusterLocX
private

Definition at line 119 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ ClusterLocY

float HitEff::ClusterLocY
private

Definition at line 119 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 119 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 131 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 101 of file HitEff.h.

Referenced by beginJob(), and HitEff().

◆ conf_

edm::ParameterSet HitEff::conf_
private

Definition at line 96 of file HitEff.h.

Referenced by HitEff().

◆ cpeToken_

Definition at line 89 of file HitEff.h.

Referenced by analyze().

◆ 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 103 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 99 of file HitEff.h.

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

◆ geomToken_

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> HitEff::geomToken_
private

Definition at line 88 of file HitEff.h.

Referenced by analyze().

◆ highPurity

bool HitEff::highPurity
private

Definition at line 125 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ Id

unsigned int HitEff::Id
private

Definition at line 122 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ instLumi

float HitEff::instLumi
private

Definition at line 130 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ layers

unsigned int HitEff::layers
private

Definition at line 102 of file HitEff.h.

Referenced by analyze(), and HitEff().

◆ magFieldToken_

const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> HitEff::magFieldToken_
private

Definition at line 91 of file HitEff.h.

Referenced by analyze().

◆ measurementTkToken_

const edm::ESGetToken<MeasurementTracker, CkfComponentsRecord> HitEff::measurementTkToken_
private

Definition at line 92 of file HitEff.h.

Referenced by analyze().

◆ metaDataToken_

const edm::EDGetTokenT<OnlineLuminosityRecord> HitEff::metaDataToken_
private

Definition at line 65 of file HitEff.h.

Referenced by analyze().

◆ ModIsBad

unsigned int HitEff::ModIsBad
private

Definition at line 121 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ nHits

int HitEff::nHits
private

Definition at line 126 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ propagatorToken_

const edm::ESGetToken<Propagator, TrackingComponentsRecord> HitEff::propagatorToken_
private

Definition at line 94 of file HitEff.h.

Referenced by analyze().

◆ pT

float HitEff::pT
private

Definition at line 127 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ PU

float HitEff::PU
private

◆ ResX

float HitEff::ResX
private

Definition at line 120 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ ResXSig

float HitEff::ResXSig
private

Definition at line 120 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 64 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 123 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ siStripQualityToken_

const edm::ESGetToken<SiStripQuality, SiStripQualityRcd> HitEff::siStripQualityToken_
private

Definition at line 90 of file HitEff.h.

Referenced by analyze().

◆ topoToken_

const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> HitEff::topoToken_
private

Definition at line 87 of file HitEff.h.

Referenced by analyze().

◆ tquality

int HitEff::tquality
private

Definition at line 129 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 98 of file HitEff.h.

Referenced by analyze(), beginJob(), 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 116 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajGlbY

float HitEff::TrajGlbY
private

Definition at line 116 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajGlbZ

float HitEff::TrajGlbZ
private

Definition at line 116 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ trajHitValid

unsigned int HitEff::trajHitValid
private

Definition at line 128 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocAngleX

float HitEff::TrajLocAngleX
private

Definition at line 117 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocAngleY

float HitEff::TrajLocAngleY
private

Definition at line 117 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocErrX

float HitEff::TrajLocErrX
private

Definition at line 118 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocErrY

float HitEff::TrajLocErrY
private

Definition at line 118 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocX

float HitEff::TrajLocX
private

Definition at line 117 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ TrajLocY

float HitEff::TrajLocY
private

Definition at line 117 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 104 of file HitEff.h.

Referenced by analyze(), and beginJob().

◆ withinAcceptance

bool HitEff::withinAcceptance
private

Definition at line 124 of file HitEff.h.

Referenced by analyze(), and beginJob().