CMS 3D CMS Logo

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

#include <CosmicTrackingParticleSelector.h>

Public Types

typedef TrackingParticleCollection collection
 
typedef container::const_iterator const_iterator
 
typedef std::vector< const TrackingParticle * > container
 

Public Member Functions

const_iterator begin () const
 
 CosmicTrackingParticleSelector ()
 
 CosmicTrackingParticleSelector (const edm::ParameterSet &cfg, edm::ConsumesCollector &&iC)
 
 CosmicTrackingParticleSelector (double ptMin, double minRapidity, double maxRapidity, double tip, double lip, int minHit, bool chargedOnly, const std::vector< int > &pdgId=std::vector< int >())
 
const_iterator end () const
 
void initEvent (edm::Handle< SimHitTPAssociationProducer::SimHitTPAssociationList > simHitsTPAssocToSet) const
 
bool operator() (const TrackingParticleRef tpr, const reco::BeamSpot *bs, const edm::Event &iEvent, const edm::EventSetup &iSetup) const
 
void select (const edm::Handle< collection > &c, const edm::Event &event, const edm::EventSetup &setup)
 
size_t size () const
 

Private Attributes

edm::EDGetTokenT< reco::BeamSpotbeamSpotToken_
 
bool chargedOnly_
 
edm::ESGetToken< GlobalTrackingGeometry, GlobalTrackingGeometryRecordglobalTrackingGeomToken_
 
double lip_
 
double maxRapidity_
 
int minHit_
 
double minRapidity_
 
std::vector< int > pdgId_
 
double ptMin_
 
container selected_
 
edm::Handle< SimHitTPAssociationProducer::SimHitTPAssociationListsimHitsTPAssoc
 
edm::ESGetToken< MagneticField, IdealMagneticFieldRecordtheMFToken_
 
double tip_
 

Detailed Description

Definition at line 39 of file CosmicTrackingParticleSelector.h.

Member Typedef Documentation

◆ collection

Definition at line 41 of file CosmicTrackingParticleSelector.h.

◆ const_iterator

typedef container::const_iterator CosmicTrackingParticleSelector::const_iterator

Definition at line 43 of file CosmicTrackingParticleSelector.h.

◆ container

Definition at line 42 of file CosmicTrackingParticleSelector.h.

Constructor & Destructor Documentation

◆ CosmicTrackingParticleSelector() [1/3]

CosmicTrackingParticleSelector::CosmicTrackingParticleSelector ( )
inline

Definition at line 45 of file CosmicTrackingParticleSelector.h.

45 {}

◆ CosmicTrackingParticleSelector() [2/3]

CosmicTrackingParticleSelector::CosmicTrackingParticleSelector ( double  ptMin,
double  minRapidity,
double  maxRapidity,
double  tip,
double  lip,
int  minHit,
bool  chargedOnly,
const std::vector< int > &  pdgId = std::vector<int>() 
)
inline

Definition at line 47 of file CosmicTrackingParticleSelector.h.

◆ CosmicTrackingParticleSelector() [3/3]

CosmicTrackingParticleSelector::CosmicTrackingParticleSelector ( const edm::ParameterSet cfg,
edm::ConsumesCollector &&  iC 
)
inline

Definition at line 64 of file CosmicTrackingParticleSelector.h.

65  : ptMin_(cfg.getParameter<double>("ptMin")),
66  minRapidity_(cfg.getParameter<double>("minRapidity")),
67  maxRapidity_(cfg.getParameter<double>("maxRapidity")),
68  tip_(cfg.getParameter<double>("tip")),
69  lip_(cfg.getParameter<double>("lip")),
70  minHit_(cfg.getParameter<int>("minHit")),
71  chargedOnly_(cfg.getParameter<bool>("chargedOnly")),
72  pdgId_(cfg.getParameter<std::vector<int> >("pdgId")),
73  beamSpotToken_(iC.consumes<reco::BeamSpot>(edm::InputTag("offlineBeamSpot"))),
75  theMFToken_(iC.esConsumes()) {}

Member Function Documentation

◆ begin()

const_iterator CosmicTrackingParticleSelector::begin ( void  ) const
inline

Definition at line 87 of file CosmicTrackingParticleSelector.h.

87 { return selected_.begin(); }

References selected_.

◆ end()

const_iterator CosmicTrackingParticleSelector::end ( void  ) const
inline

Definition at line 88 of file CosmicTrackingParticleSelector.h.

88 { return selected_.end(); }

References selected_.

Referenced by Types.LuminosityBlockRange::cppID(), and Types.EventRange::cppID().

◆ initEvent()

void CosmicTrackingParticleSelector::initEvent ( edm::Handle< SimHitTPAssociationProducer::SimHitTPAssociationList simHitsTPAssocToSet) const
inline

Definition at line 90 of file CosmicTrackingParticleSelector.h.

90  {
91  simHitsTPAssoc = simHitsTPAssocToSet;
92  }

References simHitsTPAssoc.

◆ operator()()

bool CosmicTrackingParticleSelector::operator() ( const TrackingParticleRef  tpr,
const reco::BeamSpot bs,
const edm::Event iEvent,
const edm::EventSetup iSetup 
) const
inline

Definition at line 95 of file CosmicTrackingParticleSelector.h.

98  {
99  if (chargedOnly_ && tpr->charge() == 0)
100  return false; //select only if charge!=0
101  //bool testId = false;
102  //unsigned int idSize = pdgId_.size();
103  //if (idSize==0) testId = true;
104  //else for (unsigned int it=0;it!=idSize;++it){
105  //if (tpr->pdgId()==pdgId_[it]) testId = true;
106  //}
107 
109 
110  GlobalVector finalGV(0, 0, 0);
111  GlobalPoint finalGP(0, 0, 0);
112  GlobalVector momentum(0, 0, 0); //At the PCA
113  GlobalPoint vertex(0, 0, 0); //At the PCA
114  double radius(9999);
115  bool found(false);
116 
117  int ii = 0;
118  DetId::Detector det;
119  int subdet;
120 
121  edm::LogVerbatim("CosmicTrackingParticleSelector")
122  << "TOT Number of PSimHits = " << tpr->numberOfHits()
123  << ", Number of Tracker PSimHits = " << tpr->numberOfTrackerHits() << "\n";
124 
125  if (simHitsTPAssoc.isValid() == 0) {
126  edm::LogError("CosmicTrackingParticleSelector") << "Invalid handle!";
127  return false;
128  }
129  std::pair<TrackingParticleRef, TrackPSimHitRef> clusterTPpairWithDummyTP(
130  tpr, TrackPSimHitRef()); //SimHit is dummy: for simHitTPAssociationListGreater
131  // sorting only the cluster is needed
132  auto range = std::equal_range(simHitsTPAssoc->begin(),
133  simHitsTPAssoc->end(),
134  clusterTPpairWithDummyTP,
136  for (auto ip = range.first; ip != range.second; ++ip) {
137  TrackPSimHitRef it = ip->second;
138  ++ii;
139  const GeomDet* tmpDet = theGeometry->idToDet(DetId(it->detUnitId()));
140  if (!tmpDet) {
141  edm::LogVerbatim("CosmicTrackingParticleSelector")
142  << "***WARNING: PSimHit " << ii << ", no GeomDet for: " << it->detUnitId() << ". Skipping it.";
143  continue;
144  } else {
145  det = DetId(it->detUnitId()).det();
146  subdet = DetId(it->detUnitId()).subdetId();
147  }
148 
149  LocalVector lv = it->momentumAtEntry();
150  Local3DPoint lp = it->localPosition();
151  GlobalVector gv = tmpDet->surface().toGlobal(lv);
152  GlobalPoint gp = tmpDet->surface().toGlobal(lp);
153  edm::LogVerbatim("CosmicTrackingParticleSelector")
154  << "PSimHit " << ii << ", Detector = " << det << ", subdet = " << subdet << "\t Radius = " << gp.perp()
155  << ", z = " << gp.z() << "\t pt = " << gv.perp() << ", pz = " << gv.z();
156  edm::LogVerbatim("CosmicTrackingParticleSelector")
157  << "\t trackId = " << it->trackId() << ", particleType = " << it->particleType()
158  << ", processType = " << it->processType();
159 
160  // discard hits related to low energy debris from the primary particle
161  if (it->processType() != 0)
162  continue;
163 
164  if (gp.perp() < radius) {
165  found = true;
166  radius = gp.perp();
167  finalGV = gv;
168  finalGP = gp;
169  }
170  }
171  edm::LogVerbatim("CosmicTrackingParticleSelector")
172  << "\n"
173  << "FINAL State at InnerMost Hit: Radius = " << finalGP.perp() << ", z = " << finalGP.z()
174  << ", pt = " << finalGV.perp() << ", pz = " << finalGV.z();
175 
176  if (!found)
177  return false;
178  else {
179  FreeTrajectoryState ftsAtProduction(finalGP, finalGV, TrackCharge(tpr->charge()), &iSetup.getData(theMFToken_));
180  TSCBLBuilderNoMaterial tscblBuilder;
181  //as in TrackProducerAlgorithm
182  TrajectoryStateClosestToBeamLine tsAtClosestApproach = tscblBuilder(ftsAtProduction, *bs);
183  if (!tsAtClosestApproach.isValid()) {
184  edm::LogVerbatim("CosmicTrackingParticleSelector")
185  << "*** WARNING in CosmicTrackingParticleSelector: tsAtClosestApproach is not valid."
186  << "\n";
187  return false;
188  } else {
189  momentum = tsAtClosestApproach.trackStateAtPCA().momentum();
190  vertex = tsAtClosestApproach.trackStateAtPCA().position();
191 
192  edm::LogVerbatim("CosmicTrackingParticleSelector")
193  << "FINAL State extrapolated at PCA: Radius = " << vertex.perp() << ", z = " << vertex.z()
194  << ", pt = " << momentum.perp() << ", pz = " << momentum.z() << "\n";
195 
196  return (tpr->numberOfTrackerLayers() >= minHit_ && sqrt(momentum.perp2()) >= ptMin_ &&
197  momentum.eta() >= minRapidity_ && momentum.eta() <= maxRapidity_ && sqrt(vertex.perp2()) <= tip_ &&
198  fabs(vertex.z()) <= lip_);
199  }
200  }
201  }

References cms::cuda::bs, chargedOnly_, PV3DBase< T, PVType, FrameType >::eta(), newFWLiteAna::found, edm::EventSetup::getData(), edm::EventSetup::getHandle(), globalTrackingGeomToken_, runTauDisplay::gp, GlobalTrackingGeometry::idToDet(), cuy::ii, TrajectoryStateClosestToBeamLine::isValid(), edm::HandleBase::isValid(), lip_, maxRapidity_, minHit_, minRapidity_, FreeTrajectoryState::momentum(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::perp2(), FreeTrajectoryState::position(), ptMin_, CosmicsPD_Skims::radius, FastTimerService_cff::range, simHitsTPAssoc, SimHitTPAssociationProducer::simHitTPAssociationListGreater(), mathSSE::sqrt(), GeomDet::surface(), theMFToken_, tip_, Surface::toGlobal(), TrajectoryStateClosestToBeamLine::trackStateAtPCA(), bphysicsOniaDQM_cfi::vertex, and PV3DBase< T, PVType, FrameType >::z().

◆ select()

void CosmicTrackingParticleSelector::select ( const edm::Handle< collection > &  c,
const edm::Event event,
const edm::EventSetup setup 
)
inline

Definition at line 77 of file CosmicTrackingParticleSelector.h.

77  {
78  selected_.clear();
80  event.getByToken(beamSpotToken_, beamSpot);
81  for (TrackingParticleCollection::const_iterator itp = c->begin(); itp != c->end(); ++itp)
82  if (operator()(TrackingParticleRef(c, itp - c->begin()), beamSpot.product(), event, setup)) {
83  selected_.push_back(&*itp);
84  }
85  }

References pwdgSkimBPark_cfi::beamSpot, beamSpotToken_, c, edmPickEvents::event, selected_, and singleTopDQM_cfi::setup.

◆ size()

size_t CosmicTrackingParticleSelector::size ( void  ) const
inline

Definition at line 203 of file CosmicTrackingParticleSelector.h.

203 { return selected_.size(); }

References selected_.

Referenced by ntupleDataFormat._Collection::__iter__(), and ntupleDataFormat._Collection::__len__().

Member Data Documentation

◆ beamSpotToken_

edm::EDGetTokenT<reco::BeamSpot> CosmicTrackingParticleSelector::beamSpotToken_
private

Definition at line 215 of file CosmicTrackingParticleSelector.h.

Referenced by select().

◆ chargedOnly_

bool CosmicTrackingParticleSelector::chargedOnly_
private

Definition at line 212 of file CosmicTrackingParticleSelector.h.

Referenced by operator()().

◆ globalTrackingGeomToken_

edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> CosmicTrackingParticleSelector::globalTrackingGeomToken_
private

Definition at line 216 of file CosmicTrackingParticleSelector.h.

Referenced by operator()().

◆ lip_

double CosmicTrackingParticleSelector::lip_
private

Definition at line 210 of file CosmicTrackingParticleSelector.h.

Referenced by operator()().

◆ maxRapidity_

double CosmicTrackingParticleSelector::maxRapidity_
private

Definition at line 208 of file CosmicTrackingParticleSelector.h.

Referenced by operator()().

◆ minHit_

int CosmicTrackingParticleSelector::minHit_
private

Definition at line 211 of file CosmicTrackingParticleSelector.h.

Referenced by operator()().

◆ minRapidity_

double CosmicTrackingParticleSelector::minRapidity_
private

Definition at line 207 of file CosmicTrackingParticleSelector.h.

Referenced by operator()().

◆ pdgId_

std::vector<int> CosmicTrackingParticleSelector::pdgId_
private

Definition at line 213 of file CosmicTrackingParticleSelector.h.

◆ ptMin_

double CosmicTrackingParticleSelector::ptMin_
private

Definition at line 206 of file CosmicTrackingParticleSelector.h.

Referenced by operator()().

◆ selected_

container CosmicTrackingParticleSelector::selected_
private

Definition at line 214 of file CosmicTrackingParticleSelector.h.

Referenced by begin(), end(), select(), and size().

◆ simHitsTPAssoc

edm::Handle<SimHitTPAssociationProducer::SimHitTPAssociationList> CosmicTrackingParticleSelector::simHitsTPAssoc
mutableprivate

Definition at line 219 of file CosmicTrackingParticleSelector.h.

Referenced by initEvent(), and operator()().

◆ theMFToken_

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> CosmicTrackingParticleSelector::theMFToken_
private

Definition at line 217 of file CosmicTrackingParticleSelector.h.

Referenced by operator()().

◆ tip_

double CosmicTrackingParticleSelector::tip_
private

Definition at line 209 of file CosmicTrackingParticleSelector.h.

Referenced by operator()().

Vector3DBase
Definition: Vector3DBase.h:8
FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition: FreeTrajectoryState.h:68
TrajectoryStateClosestToBeamLine
Definition: TrajectoryStateClosestToBeamLine.h:15
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
CosmicTrackingParticleSelector::maxRapidity_
double maxRapidity_
Definition: CosmicTrackingParticleSelector.h:208
CosmicTrackingParticleSelector::pdgId_
std::vector< int > pdgId_
Definition: CosmicTrackingParticleSelector.h:213
pwdgSkimBPark_cfi.beamSpot
beamSpot
Definition: pwdgSkimBPark_cfi.py:5
CosmicTrackingParticleSelector::simHitsTPAssoc
edm::Handle< SimHitTPAssociationProducer::SimHitTPAssociationList > simHitsTPAssoc
Definition: CosmicTrackingParticleSelector.h:219
CosmicTrackingParticleSelector::lip_
double lip_
Definition: CosmicTrackingParticleSelector.h:210
TrackCharge
int TrackCharge
Definition: TrackCharge.h:4
GeomDet
Definition: GeomDet.h:27
qcdUeDQM_cfi.minRapidity
minRapidity
Definition: qcdUeDQM_cfi.py:24
qcdUeDQM_cfi.maxRapidity
maxRapidity
Definition: qcdUeDQM_cfi.py:27
CosmicTrackingParticleSelector::tip_
double tip_
Definition: CosmicTrackingParticleSelector.h:209
ptMin
constexpr float ptMin
Definition: PhotonIDValueMapProducer.cc:155
CosmicTrackingParticleSelector::minRapidity_
double minRapidity_
Definition: CosmicTrackingParticleSelector.h:207
CosmicTrackingParticleSelector::theMFToken_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > theMFToken_
Definition: CosmicTrackingParticleSelector.h:217
FreeTrajectoryState::position
GlobalPoint position() const
Definition: FreeTrajectoryState.h:67
CosmicTrackingParticleSelector::chargedOnly_
bool chargedOnly_
Definition: CosmicTrackingParticleSelector.h:212
edm::ConsumesCollector::esConsumes
auto esConsumes()
Definition: ConsumesCollector.h:97
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
edm::Handle< reco::BeamSpot >
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
edm::Ref
Definition: AssociativeIterator.h:58
qcdUeDQM_cfi.lip
lip
Definition: qcdUeDQM_cfi.py:25
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
DetId
Definition: DetId.h:17
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
cms::cuda::bs
bs
Definition: HistoContainer.h:76
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
reco::BeamSpot
Definition: BeamSpot.h:21
edm::ESHandle< GlobalTrackingGeometry >
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:55
CosmicTrackingParticleSelector::selected_
container selected_
Definition: CosmicTrackingParticleSelector.h:214
Point3DBase< float, GlobalTag >
qcdUeDQM_cfi.tip
tip
Definition: qcdUeDQM_cfi.py:23
runTauDisplay.gp
gp
Definition: runTauDisplay.py:431
bphysicsOniaDQM_cfi.vertex
vertex
Definition: bphysicsOniaDQM_cfi.py:7
edmPickEvents.event
event
Definition: edmPickEvents.py:273
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:155
EgammaValidation_cff.pdgId
pdgId
Definition: EgammaValidation_cff.py:117
DetId::Detector
Detector
Definition: DetId.h:24
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
qcdUeDQM_cfi.minHit
minHit
Definition: qcdUeDQM_cfi.py:33
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
looper.cfg
cfg
Definition: looper.py:296
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
TSCBLBuilderNoMaterial
Definition: TSCBLBuilderNoMaterial.h:13
GlobalTrackingGeometry::idToDet
const GeomDet * idToDet(DetId) const override
Definition: GlobalTrackingGeometry.cc:44
CosmicTrackingParticleSelector::beamSpotToken_
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
Definition: CosmicTrackingParticleSelector.h:215
CosmicsPD_Skims.radius
radius
Definition: CosmicsPD_Skims.py:135
CosmicTrackingParticleSelector::minHit_
int minHit_
Definition: CosmicTrackingParticleSelector.h:211
TrackPSimHitRef
edm::Ref< edm::PSimHitContainer > TrackPSimHitRef
Definition: PSimHitContainer.h:14
cosmictrackingParticleSelector_cfi.chargedOnly
chargedOnly
Definition: cosmictrackingParticleSelector_cfi.py:5
CosmicTrackingParticleSelector::ptMin_
double ptMin_
Definition: CosmicTrackingParticleSelector.h:206
TrajectoryStateClosestToBeamLine::isValid
bool isValid() const
Definition: TrajectoryStateClosestToBeamLine.h:50
TrackingParticleRef
edm::Ref< TrackingParticleCollection > TrackingParticleRef
Definition: TrackingParticleFwd.h:12
TrajectoryStateClosestToBeamLine::trackStateAtPCA
FTS const & trackStateAtPCA() const
Definition: TrajectoryStateClosestToBeamLine.h:32
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:56
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
cuy.ii
ii
Definition: cuy.py:589
edm::InputTag
Definition: InputTag.h:15
CosmicTrackingParticleSelector::globalTrackingGeomToken_
edm::ESGetToken< GlobalTrackingGeometry, GlobalTrackingGeometryRecord > globalTrackingGeomToken_
Definition: CosmicTrackingParticleSelector.h:216
SimHitTPAssociationProducer::simHitTPAssociationListGreater
static bool simHitTPAssociationListGreater(SimHitTPPair i, SimHitTPPair j)
Definition: SimHitTPAssociationProducer.h:23