CMS 3D CMS Logo

FakeTrackProducers.cc
Go to the documentation of this file.
1 
2 //
3 //
4 
18 
37 
38 template <class T>
40 public:
41  explicit FakeTrackProducer(const edm::ParameterSet &iConfig);
42  ~FakeTrackProducer() override {}
43 
44  void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override;
45 
46 private:
52 
54  //StringCutObjectSelector<T> selector_;
55 
56  const PTrajectoryStateOnDet &getState(const TrajectorySeed &seed) const { return seed.startingState(); }
57  const PTrajectoryStateOnDet &getState(const TrackCandidate &seed) const { return seed.trajectoryStateOnDet(); }
58 };
59 
60 template <typename T>
62  : src_(consumes<std::vector<T>>(iConfig.getParameter<edm::InputTag>("src"))),
63  geometryToken_(esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>()),
64  magFieldToken_(esConsumes<MagneticField, IdealMagneticFieldRecord>()),
65  trackerTopoToken_(esConsumes<TrackerTopology, TrackerTopologyRcd>())
66 //,selector_(iConfig.existsAs<std::string>("cut") ? iConfig.getParameter<std::string>("cut") : "", true)
67 {
68  produces<std::vector<reco::Track>>();
69  produces<std::vector<reco::TrackExtra>>();
70  produces<edm::OwnVector<TrackingRecHit>>();
71 }
72 
73 template <typename T>
75  using namespace edm;
76  using namespace std;
77 
78  edm::ESHandle<TrackerGeometry> theGeometry = iSetup.getHandle(geometryToken_);
79  edm::ESHandle<MagneticField> theMagField = iSetup.getHandle(magFieldToken_);
80  edm::ESHandle<TrackerTopology> httopo = iSetup.getHandle(trackerTopoToken_);
81  const TrackerTopology &ttopo = *httopo;
82 
84  iEvent.getByToken(src_, src);
85 
86  unique_ptr<vector<reco::Track>> out(new vector<reco::Track>());
87  out->reserve(src->size());
88  unique_ptr<vector<reco::TrackExtra>> outEx(new vector<reco::TrackExtra>());
89  outEx->reserve(src->size());
90  unique_ptr<OwnVector<TrackingRecHit>> outHits(new OwnVector<TrackingRecHit>());
91 
92  TrackingRecHitRefProd rHits = iEvent.getRefBeforePut<TrackingRecHitCollection>();
93  reco::TrackExtraRefProd rTrackExtras = iEvent.getRefBeforePut<reco::TrackExtraCollection>();
94  for (typename vector<T>::const_iterator it = src->begin(), ed = src->end(); it != ed; ++it) {
95  const T &mu = *it;
96  //if (!selector_(mu)) continue;
97  const PTrajectoryStateOnDet &pstate = getState(mu);
98  const GeomDet *det = theGeometry->idToDet(DetId(pstate.detId()));
99  if (det == nullptr) {
100  std::cerr << "ERROR: bogus detid " << pstate.detId() << std::endl;
101  continue;
102  }
104  GlobalPoint gx = state.globalPosition();
105  GlobalVector gp = state.globalMomentum();
106  reco::Track::Point x(gx.x(), gx.y(), gx.z());
107  reco::Track::Vector p(gp.x(), gp.y(), gp.z());
108  int charge = state.localParameters().charge();
109  out->push_back(reco::Track(1.0, 1.0, x, p, charge, reco::Track::CovarianceMatrix()));
110  auto hits = mu.recHits();
111  out->back().appendHits(hits.begin(), hits.end(), ttopo);
112  // Now Track Extra
113  const TrackingRecHit *hit0 = &*hits.begin();
114  const TrackingRecHit *hit1 = &*(hits.end() - 1);
115  const GeomDet *det0 = theGeometry->idToDet(hit0->geographicalId());
116  const GeomDet *det1 = theGeometry->idToDet(hit1->geographicalId());
117  if (det0 == nullptr || det1 == nullptr) {
118  std::cerr << "ERROR: bogus detids at beginning or end of range" << std::endl;
119  continue;
120  }
121  GlobalPoint gx0 = det0->toGlobal(hit0->localPosition());
122  GlobalPoint gx1 = det1->toGlobal(hit1->localPosition());
123  reco::Track::Point x0(gx0.x(), gx0.y(), gx0.z());
124  reco::Track::Point x1(gx1.x(), gx1.y(), gx1.z());
125  if (x0.R() > x1.R())
126  std::swap(x0, x1);
127  outEx->push_back(reco::TrackExtra(x1,
128  p,
129  true,
130  x0,
131  p,
132  true,
134  hit0->geographicalId().rawId(),
136  hit1->geographicalId().rawId(),
137  alongMomentum));
138  out->back().setExtra(reco::TrackExtraRef(rTrackExtras, outEx->size() - 1));
139  reco::TrackExtra &ex = outEx->back();
140  auto const firstHitIndex = outHits->size();
141  for (auto const &it2 : hits) {
142  outHits->push_back(it2);
143  }
144  ex.setHits(rHits, firstHitIndex, outHits->size() - firstHitIndex);
145  }
146 
147  iEvent.put(std::move(out));
148  iEvent.put(std::move(outEx));
149  iEvent.put(std::move(outHits));
150 }
151 
Vector3DBase
Definition: Vector3DBase.h:8
edm::RefProd< TrackingRecHitCollection >
TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
TrackExtra.h
TrajectoryStateOnSurface.h
TrackerGeometry.h
GeomDet
Definition: GeomDet.h:27
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
ESHandle.h
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
amptDefaultParameters_cff.mu
mu
Definition: amptDefaultParameters_cff.py:16
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackerTopology
Definition: TrackerTopology.h:16
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
EDProducer.h
edm::Handle
Definition: AssociativeIterator.h:50
TrackingRecHit::localPosition
virtual LocalPoint localPosition() const =0
ESGetToken.h
TrackingRecHit::geographicalId
DetId geographicalId() const
Definition: TrackingRecHit.h:120
FakeTrackProducer::src_
edm::EDGetTokenT< std::vector< T > > src_
Labels for input collections.
Definition: FakeTrackProducers.cc:48
edm::Ref< TrackExtraCollection >
FakeTrackProducerFromSeed
FakeTrackProducer< TrajectorySeed > FakeTrackProducerFromSeed
Definition: FakeTrackProducers.cc:152
FakeTrackProducer::~FakeTrackProducer
~FakeTrackProducer() override
Definition: FakeTrackProducers.cc:42
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
fileCollector.seed
seed
Definition: fileCollector.py:127
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
DetId
Definition: DetId.h:17
reco::TrackExtra
Definition: TrackExtra.h:26
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
MakerMacros.h
TrackerTopology.h
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
TrackingRecHit.h
PTrajectoryStateOnDet::detId
unsigned int detId() const
Definition: PTrajectoryStateOnDet.h:65
TrackerTopologyRcd.h
Track.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
FakeTrackProducer::produce
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: FakeTrackProducers.cc:74
std::swap
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
Definition: DataFrameContainer.h:209
FakeTrackProducer
Definition: FakeTrackProducers.cc:39
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
reco::Track
Definition: Track.h:27
IdealMagneticFieldRecord.h
edm::ESHandle< TrackerGeometry >
reco::TrackExtraCollection
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:10
FakeTrackProducer::getState
const PTrajectoryStateOnDet & getState(const TrackCandidate &seed) const
Definition: FakeTrackProducers.cc:57
Point3DBase< float, GlobalTag >
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
runTauDisplay.gp
gp
Definition: runTauDisplay.py:431
TrackerDigiGeometryRecord.h
FakeTrackProducer
Matcher of reconstructed objects to other reconstructed objects using the tracks inside them.
GeomDet::toGlobal
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
edm::ParameterSet
Definition: ParameterSet.h:47
TrackRefitter_38T_cff.src
src
Definition: TrackRefitter_38T_cff.py:24
Event.h
TrackCandidate
Definition: TrackCandidate.h:24
FakeTrackProducer::trackerTopoToken_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > trackerTopoToken_
Definition: FakeTrackProducers.cc:51
FakeTrackProducer::magFieldToken_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magFieldToken_
Definition: FakeTrackProducers.cc:50
FakeTrackProducer::FakeTrackProducer
FakeTrackProducer(const edm::ParameterSet &iConfig)
Definition: FakeTrackProducers.cc:61
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
iEvent
int iEvent
Definition: GenABIO.cc:224
trajectoryStateTransform::transientState
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
Definition: TrajectoryStateTransform.cc:35
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:148
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
edm::stream::EDProducer
Definition: EDProducer.h:38
MagneticField.h
TrackTransformer.h
edm::EventSetup
Definition: EventSetup.h:57
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord >
InputTag.h
reco::TrackExtraBase::setHits
void setHits(TrackingRecHitRefProd const &prod, unsigned firstH, unsigned int nH)
Definition: TrackExtraBase.h:30
TrackingRecHit
Definition: TrackingRecHit.h:21
reco::TrackBase::Point
math::XYZPoint Point
point in the space
Definition: TrackBase.h:80
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
StringCutObjectSelector.h
FakeTrackProducerFromCandidate
FakeTrackProducer< TrackCandidate > FakeTrackProducerFromCandidate
Definition: FakeTrackProducers.cc:153
RunInfoPI::state
state
Definition: RunInfoPayloadInspectoHelper.h:16
T
long double T
Definition: Basic3DVectorLD.h:48
TrajectorySeed
Definition: TrajectorySeed.h:18
EventSetup.h
TrajectoryStateTransform.h
FakeTrackProducer::geometryToken_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geometryToken_
Definition: FakeTrackProducers.cc:49
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
PTrajectoryStateOnDet
Definition: PTrajectoryStateOnDet.h:10
ParameterSet.h
FakeTrackProducer::getState
const PTrajectoryStateOnDet & getState(const TrajectorySeed &seed) const
Muon selection.
Definition: FakeTrackProducers.cc:56
TrackCandidate.h
reco::TrackBase::CovarianceMatrix
math::Error< dimension >::type CovarianceMatrix
5 parameter covariance matrix
Definition: TrackBase.h:74
edm::Event
Definition: Event.h:73
MagneticField
Definition: MagneticField.h:19
EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.cerr
cerr
Definition: EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.py:8
edm::OwnVector::size
size_type size() const
Definition: OwnVector.h:300
alongMomentum
Definition: PropagationDirection.h:4
edm::OwnVector< TrackingRecHit >
reco::TrackBase::Vector
math::XYZVector Vector
spatial vector
Definition: TrackBase.h:77
TrackerGeometry
Definition: TrackerGeometry.h:14