CMS 3D CMS Logo

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

#include <CalibTracker/SiStripHitResolution/plugins/SiStripCPEAnalyzer.cc>

Inheritance diagram for SiStripCPEAnalyzer:
edm::one::EDAnalyzer< edm::one::SharedResources > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 SiStripCPEAnalyzer (const edm::ParameterSet &)
 
 ~SiStripCPEAnalyzer () 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)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 

Static Private Member Functions

static bool goodMeasurement (TrajectoryMeasurement const &m)
 

Private Attributes

ClusterBranch cluster1Branches_
 
ClusterBranch cluster2Branches_
 
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusToken_
 
const edm::ESInputTag cpeTag_
 
const edm::ESGetToken< StripClusterParameterEstimator, TkStripCPERecordcpeToken_
 
GeometryBranch geom1Branches_
 
GeometryBranch geom2Branches_
 
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordgeomToken_
 
const StripClusterParameterEstimatorparameterestimator_
 
const edm::EDGetTokenT< TrajTrackAssociationCollectiontjTagToken_
 
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtopoToken_
 
TrackBranch trackBranches_
 
const edm::EDGetTokenT< TrackCollection > tracksToken_
 
const edm::EDGetTokenT< TrajectoryCollectiontrajsToken_
 
TTree * tree_
 
CPEBranch treeBranches_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- 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

Description: CPE analysis (resolution param, etc.)

Implementation: Used for Strip Tracker DPG studies

Definition at line 80 of file SiStripCPEAnalyzer.cc.

Constructor & Destructor Documentation

◆ SiStripCPEAnalyzer()

SiStripCPEAnalyzer::SiStripCPEAnalyzer ( const edm::ParameterSet iConfig)
explicit

Definition at line 121 of file SiStripCPEAnalyzer.cc.

References cluster1Branches_, cluster2Branches_, compareTotals::fs, geom1Branches_, geom2Branches_, trackBranches_, tree_, and treeBranches_.

122  : tracksToken_(consumes<TrackCollection>(iConfig.getUntrackedParameter<edm::InputTag>("tracks"))),
123  trajsToken_(consumes<TrajectoryCollection>(iConfig.getUntrackedParameter<edm::InputTag>("trajectories"))),
124  tjTagToken_(
125  consumes<TrajTrackAssociationCollection>(iConfig.getUntrackedParameter<edm::InputTag>("association"))),
126  clusToken_(
128  cpeTag_(iConfig.getParameter<edm::ESInputTag>("StripCPE")),
132  //now do what ever initialization is needed
133  usesResource("TFileService");
135  //histo = fs->make<TH1I>("charge" , "Charges" , 3 , -1 , 2 );
136  tree_ = fs->make<TTree>("CPEanalysis", "CPE analysis tree");
137  tree_->Branch(
138  "Overlaps", &treeBranches_, "x:y:z:distance:mdistance:shift:offsetA:offsetB:angle:x1r:x2r:x1m:x2m:y1m:y2m");
139  tree_->Branch("Tracks", &trackBranches_, "px:py:pz:pt:eta:phi:charge");
140  tree_->Branch("Cluster1", &cluster1Branches_, "strips[11]/I:size/I:firstStrip/I:barycenter/F");
141  tree_->Branch("Cluster2", &cluster2Branches_, "strips[11]/I:size/I:firstStrip/I:barycenter/F");
142  tree_->Branch("Geom1", &geom1Branches_, "subdet/I:moduleGeometry/I:stereo/I:layer/I:side/I:ring/I:pitch/F:detid/I");
143  tree_->Branch("Geom2", &geom2Branches_, "subdet/I:moduleGeometry/I:stereo/I:layer/I:side/I:ring/I:pitch/F:detid/I");
144 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
ClusterBranch cluster2Branches_
const edm::EDGetTokenT< TrajectoryCollection > trajsToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getUntrackedParameter(std::string const &, T const &) const
const edm::ESGetToken< StripClusterParameterEstimator, TkStripCPERecord > cpeToken_
const edm::EDGetTokenT< TrajTrackAssociationCollection > tjTagToken_
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusToken_
GeometryBranch geom2Branches_
const edm::ESInputTag cpeTag_
GeometryBranch geom1Branches_
const edm::EDGetTokenT< TrackCollection > tracksToken_
ClusterBranch cluster1Branches_

◆ ~SiStripCPEAnalyzer()

SiStripCPEAnalyzer::~SiStripCPEAnalyzer ( )
overridedefault

Member Function Documentation

◆ analyze()

void SiStripCPEAnalyzer::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 150 of file SiStripCPEAnalyzer.cc.

References CPEBranch::angle, ClusterBranch::barycenter, TrackBranch::charge, GetRecoTauVFromDQM_MC_cff::cl2, cluster1Branches_, cluster2Branches_, bsc_activity_cfg::clusters, clusToken_, cpeToken_, GeometryBranch::detid, CPEBranch::distance, TrackBranch::eta, ClusterBranch::firstStrip, geom1Branches_, geom2Branches_, geomToken_, edm::EventSetup::getData(), goodMeasurement(), mps_fire::i, iEvent, TrackerTopology::isStereo(), GeometryBranch::layer, TrackerTopology::layer(), StripClusterParameterEstimator::localParameters(), StripTopology::localPitch(), visualization-live-secondInstance_cfg::m, CPEBranch::mdistance, hltrates_dqm_sourceclient-live_cfg::offset, CPEBranch::offsetA, CPEBranch::offsetB, parameterestimator_, TrackBranch::phi, GeometryBranch::pitch, TrackBranch::pt, TrackBranch::px, TrackBranch::py, TrackBranch::pz, DetId::rawId(), GeometryBranch::ring, alignCSCRings::s, CPEBranch::shift, GeometryBranch::side, TrackerTopology::side(), ClusterBranch::size, StripGeomDetUnit::specificTopology(), GeometryBranch::stereo, ClusterBranch::strips, GeometryBranch::subdet, DetId::subdetId(), StripSubdetector::TEC, TrackerTopology::tecRing(), StripSubdetector::TID, TrackerTopology::tidRing(), tjTagToken_, topoToken_, HLT_2022v15_cff::track, trackBranches_, PbPb_ZMuSkimMuonDPG_cff::tracker, tree_, treeBranches_, CPEBranch::x, CPEBranch::x1m, CPEBranch::x1r, CPEBranch::x2m, CPEBranch::x2r, CPEBranch::y, CPEBranch::y1m, CPEBranch::y2m, and CPEBranch::z.

150  {
151  using namespace edm;
152 
153  // load the CPE, geometry and topology
154  parameterestimator_ = &iSetup.getData(cpeToken_); //CPE
155  const TrackerGeometry* tracker = &iSetup.getData(geomToken_);
156  const TrackerTopology* const tTopo = &iSetup.getData(topoToken_);
157 
158  // prepare the output
159  std::vector<SiStripOverlapHit> hitpairs;
160 
161  // loop on trajectories and tracks
162  //for(const auto& tt : iEvent.get(tjTagToken_) ) {
163  edm::Handle<TrajTrackAssociationCollection> trajTrackAssociations;
164  iEvent.getByToken(tjTagToken_, trajTrackAssociations);
165  for (const auto& tt : *trajTrackAssociations) {
166  auto& traj = *(tt.key);
167  auto& track = *(tt.val);
168  // track quantities
169  trackBranches_.px = track.px();
170  trackBranches_.py = track.py();
171  trackBranches_.pz = track.pz();
172  trackBranches_.pt = track.pt();
173  trackBranches_.eta = track.eta();
174  trackBranches_.phi = track.phi();
175  trackBranches_.charge = track.charge();
176  // loop on measurements
177  for (auto it = traj.measurements().begin(); it != traj.measurements().end(); ++it) {
178  auto& meas = *it;
179 
180  // only OT measurements on valid hits (not glued det)
181  if (!goodMeasurement(meas))
182  continue;
183 
184  // restrict the search for compatible hits in the same layer (measurements are sorted by layer)
185  auto layerRangeEnd = it + 1;
186  for (; layerRangeEnd < traj.measurements().end(); ++layerRangeEnd) {
187  if (layerRangeEnd->layer()->seqNum() != meas.layer()->seqNum())
188  break;
189  }
190 
191  // now look for a matching hit in that range.
192  auto meas2it = std::find_if(it + 1, layerRangeEnd, [meas](const TrajectoryMeasurement& m) -> bool {
193  return goodMeasurement(m) && (m.recHit()->rawId() & 0x3) == (meas.recHit()->rawId() & 0x3);
194  });
195 
196  // check if we found something, build a pair object and add to vector
197  if (meas2it != layerRangeEnd) {
198  auto& meas2 = *meas2it;
199  hitpairs.push_back(SiStripOverlapHit(meas, meas2));
200  }
201  }
202  }
203 
204  // load clusters
206  iEvent.getByToken(clusToken_, clusters);
207 
208  // At this stage we will have a vector of pairs of measurement. Fill a ntuple and some histograms.
209  for (const auto& pair : hitpairs) {
210  //TODO basically everything below is done twice. -> can be factorized.
211 
212  // store generic information about the pair
213  treeBranches_.x = pair.position().x();
214  treeBranches_.y = pair.position().y();
215  treeBranches_.z = pair.position().z();
216  treeBranches_.distance = pair.distance(false);
217  treeBranches_.mdistance = pair.distance(true);
218  treeBranches_.shift = pair.shift();
219  treeBranches_.offsetA = pair.offset(0);
220  treeBranches_.offsetB = pair.offset(1);
221  treeBranches_.angle = pair.getTrackLocalAngle(0);
222  treeBranches_.x1r = pair.hitA()->localPosition().x();
223  treeBranches_.x1m = pair.trajectoryStateOnSurface(0, false).localPosition().x();
224  treeBranches_.y1m = pair.trajectoryStateOnSurface(0, false).localPosition().y();
225  treeBranches_.x2r = pair.hitB()->localPosition().x();
226  treeBranches_.x2m = pair.trajectoryStateOnSurface(1, false).localPosition().x();
227  treeBranches_.y2m = pair.trajectoryStateOnSurface(1, false).localPosition().y();
228 
229  // load the clusters for the detectors
230  auto detset1 = (*clusters)[pair.hitA()->rawId()];
231  auto detset2 = (*clusters)[pair.hitB()->rawId()];
232 
233  // look for the proper cluster
234  const GeomDetUnit* du;
235  du = tracker->idToDetUnit(pair.hitA()->rawId());
236  auto cluster1 = std::min_element(
237  detset1.begin(), detset1.end(), [du, this](SiStripCluster const& cl1, SiStripCluster const& cl2) {
238  return (fabs(parameterestimator_->localParameters(cl1, *du).first.x() - treeBranches_.x1r) <
239  fabs(parameterestimator_->localParameters(cl2, *du).first.x() - treeBranches_.x1r));
240  });
241  du = tracker->idToDetUnit(pair.hitB()->rawId());
242  auto cluster2 = std::min_element(
243  detset2.begin(), detset2.end(), [du, this](SiStripCluster const& cl1, SiStripCluster const& cl2) {
244  return (fabs(parameterestimator_->localParameters(cl1, *du).first.x() - treeBranches_.x2r) <
245  fabs(parameterestimator_->localParameters(cl2, *du).first.x() - treeBranches_.x2r));
246  });
247 
248  // store the amplitudes centered around the maximum
249  auto amplitudes1 = cluster1->amplitudes();
250  auto amplitudes2 = cluster2->amplitudes();
251  auto max1 = std::max_element(amplitudes1.begin(), amplitudes1.end());
252  auto max2 = std::max_element(amplitudes2.begin(), amplitudes2.end());
253  for (unsigned int i = 0; i < 11; ++i) {
254  cluster1Branches_.strips[i] = 0.;
255  cluster2Branches_.strips[i] = 0.;
256  }
257  cluster1Branches_.size = amplitudes1.size();
258  cluster2Branches_.size = amplitudes2.size();
259  cluster1Branches_.firstStrip = cluster1->firstStrip();
260  cluster1Branches_.barycenter = cluster1->barycenter();
261  cluster2Branches_.firstStrip = cluster2->firstStrip();
262  cluster2Branches_.barycenter = cluster2->barycenter();
263 
264  int cnt = 0;
265  int offset = 5 - (max1 - amplitudes1.begin());
266  for (auto& s : amplitudes1) {
267  if ((offset + cnt) >= 0 && (offset + cnt) < 11) {
268  cluster1Branches_.strips[offset + cnt] = s;
269  }
270  cnt++;
271  }
272  cnt = 0;
273  offset = 5 - (max2 - amplitudes2.begin());
274  for (auto& s : amplitudes2) {
275  if ((offset + cnt) >= 0 && (offset + cnt) < 11) {
276  cluster2Branches_.strips[offset + cnt] = s;
277  }
278  cnt++;
279  }
280 
281  // store information about the geometry (for both sensors)
282  DetId detid1 = pair.hitA()->geographicalId();
283  DetId detid2 = pair.hitB()->geographicalId();
284  geom1Branches_.detid = detid1.rawId();
285  geom2Branches_.detid = detid2.rawId();
286  geom1Branches_.subdet = detid1.subdetId();
287  geom2Branches_.subdet = detid2.subdetId();
288  //geom1Branches_.moduleGeometry = tTopo->moduleGeometry(detid1);
289  //geom2Branches_.moduleGeometry = tTopo->moduleGeometry(detid2);
290  geom1Branches_.stereo = tTopo->isStereo(detid1);
291  geom2Branches_.stereo = tTopo->isStereo(detid2);
292  geom1Branches_.layer = tTopo->layer(detid1);
293  geom2Branches_.layer = tTopo->layer(detid2);
294  geom1Branches_.side = tTopo->side(detid1);
295  geom2Branches_.side = tTopo->side(detid2);
297  geom1Branches_.ring = tTopo->tidRing(detid1);
299  geom1Branches_.ring = tTopo->tecRing(detid1);
300  } else {
301  geom1Branches_.ring = 0;
302  }
304  geom2Branches_.ring = tTopo->tidRing(detid2);
306  geom2Branches_.ring = tTopo->tecRing(detid2);
307  } else {
308  geom2Branches_.ring = 0;
309  }
310 
311  const StripGeomDetUnit* theStripDet;
312  theStripDet = dynamic_cast<const StripGeomDetUnit*>(tracker->idToDetUnit(pair.hitA()->rawId()));
314  theStripDet->specificTopology().localPitch(pair.trajectoryStateOnSurface(0, false).localPosition());
315  theStripDet = dynamic_cast<const StripGeomDetUnit*>(tracker->idToDetUnit(pair.hitB()->rawId()));
317  theStripDet->specificTopology().localPitch(pair.trajectoryStateOnSurface(1, false).localPosition());
318 
319  //fill the tree.
320  tree_->Fill(); // we fill one entry per overlap, to track info is multiplicated
321  }
322 }
static constexpr auto TEC
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
virtual void localParameters(AClusters const &clusters, ALocalValues &retValues, const GeomDetUnit &gd, const LocalTrajectoryParameters &ltp) const
ClusterBranch cluster2Branches_
bool isStereo(const DetId &id) const
unsigned int side(const DetId &id) const
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
unsigned int tecRing(const DetId &id) const
ring id
unsigned int layer(const DetId &id) const
virtual float localPitch(const LocalPoint &) const =0
const edm::ESGetToken< StripClusterParameterEstimator, TkStripCPERecord > cpeToken_
int iEvent
Definition: GenABIO.cc:224
Definition: TTTypes.h:54
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
static bool goodMeasurement(TrajectoryMeasurement const &m)
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
const edm::EDGetTokenT< TrajTrackAssociationCollection > tjTagToken_
Definition: DetId.h:17
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusToken_
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
GeometryBranch geom2Branches_
GeometryBranch geom1Branches_
HLT enums.
unsigned int tidRing(const DetId &id) const
static constexpr auto TID
const StripClusterParameterEstimator * parameterestimator_
ClusterBranch cluster1Branches_

◆ fillDescriptions()

void SiStripCPEAnalyzer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 325 of file SiStripCPEAnalyzer.cc.

References edm::ConfigurationDescriptions::addWithDefaultLabel(), submitPVResolutionJobs::desc, and HLT_2022v15_cff::InputTag.

325  {
327  desc.addUntracked<edm::InputTag>("tracks", edm::InputTag("generalTracks"));
328  desc.addUntracked<edm::InputTag>("trajectories", edm::InputTag("generalTracks"));
329  desc.addUntracked<edm::InputTag>("association", edm::InputTag("generalTracks"));
330  desc.addUntracked<edm::InputTag>("clusters", edm::InputTag("siStripClusters"));
331  desc.add<edm::ESInputTag>("StripCPE", edm::ESInputTag("StripCPEfromTrackAngleESProducer", "StripCPEfromTrackAngle"));
332  descriptions.addWithDefaultLabel(desc);
333 }
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)

◆ goodMeasurement()

bool SiStripCPEAnalyzer::goodMeasurement ( TrajectoryMeasurement const &  m)
staticprivate

Definition at line 335 of file SiStripCPEAnalyzer.cc.

References visualization-live-secondInstance_cfg::m.

Referenced by analyze().

335  {
336  return m.recHit()->isValid() && // valid
337  m.recHit()->geographicalId().subdetId() > 2 && // not IT
338  (m.recHit()->rawId() & 0x3) != 0 && // not glued DetLayer
339  m.recHit()->getType() == 0; // only valid hits (redundant?)
340 }

Member Data Documentation

◆ cluster1Branches_

ClusterBranch SiStripCPEAnalyzer::cluster1Branches_
private

Definition at line 114 of file SiStripCPEAnalyzer.cc.

Referenced by analyze(), and SiStripCPEAnalyzer().

◆ cluster2Branches_

ClusterBranch SiStripCPEAnalyzer::cluster2Branches_
private

Definition at line 115 of file SiStripCPEAnalyzer.cc.

Referenced by analyze(), and SiStripCPEAnalyzer().

◆ clusToken_

const edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > SiStripCPEAnalyzer::clusToken_
private

Definition at line 98 of file SiStripCPEAnalyzer.cc.

Referenced by analyze().

◆ cpeTag_

const edm::ESInputTag SiStripCPEAnalyzer::cpeTag_
private

Definition at line 101 of file SiStripCPEAnalyzer.cc.

◆ cpeToken_

const edm::ESGetToken<StripClusterParameterEstimator, TkStripCPERecord> SiStripCPEAnalyzer::cpeToken_
private

Definition at line 102 of file SiStripCPEAnalyzer.cc.

Referenced by analyze().

◆ geom1Branches_

GeometryBranch SiStripCPEAnalyzer::geom1Branches_
private

Definition at line 112 of file SiStripCPEAnalyzer.cc.

Referenced by analyze(), and SiStripCPEAnalyzer().

◆ geom2Branches_

GeometryBranch SiStripCPEAnalyzer::geom2Branches_
private

Definition at line 113 of file SiStripCPEAnalyzer.cc.

Referenced by analyze(), and SiStripCPEAnalyzer().

◆ geomToken_

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

Definition at line 104 of file SiStripCPEAnalyzer.cc.

Referenced by analyze().

◆ parameterestimator_

const StripClusterParameterEstimator* SiStripCPEAnalyzer::parameterestimator_
private

Definition at line 106 of file SiStripCPEAnalyzer.cc.

Referenced by analyze().

◆ tjTagToken_

const edm::EDGetTokenT<TrajTrackAssociationCollection> SiStripCPEAnalyzer::tjTagToken_
private

Definition at line 97 of file SiStripCPEAnalyzer.cc.

Referenced by analyze().

◆ topoToken_

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

Definition at line 103 of file SiStripCPEAnalyzer.cc.

Referenced by analyze().

◆ trackBranches_

TrackBranch SiStripCPEAnalyzer::trackBranches_
private

Definition at line 111 of file SiStripCPEAnalyzer.cc.

Referenced by analyze(), and SiStripCPEAnalyzer().

◆ tracksToken_

const edm::EDGetTokenT<TrackCollection> SiStripCPEAnalyzer::tracksToken_
private

Definition at line 94 of file SiStripCPEAnalyzer.cc.

◆ trajsToken_

const edm::EDGetTokenT<TrajectoryCollection> SiStripCPEAnalyzer::trajsToken_
private

Definition at line 96 of file SiStripCPEAnalyzer.cc.

◆ tree_

TTree* SiStripCPEAnalyzer::tree_
private

Definition at line 109 of file SiStripCPEAnalyzer.cc.

Referenced by analyze(), and SiStripCPEAnalyzer().

◆ treeBranches_

CPEBranch SiStripCPEAnalyzer::treeBranches_
private

Definition at line 110 of file SiStripCPEAnalyzer.cc.

Referenced by analyze(), and SiStripCPEAnalyzer().