CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
ShallowTrackClustersProducer Class Reference

#include <ShallowTrackClustersProducer.h>

Inheritance diagram for ShallowTrackClustersProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 ShallowTrackClustersProducer (const edm::ParameterSet &)
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) 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
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

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

Private Attributes

const edm::EDGetTokenT< TrajTrackAssociationCollectionassociation_token_
 
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusters_token_
 
std::string Prefix
 
std::string Suffix
 
const edm::EDGetTokenT< edm::View< reco::Track > > tracks_token_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
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<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)
 

Detailed Description

Definition at line 12 of file ShallowTrackClustersProducer.h.

Constructor & Destructor Documentation

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

Definition at line 26 of file ShallowTrackClustersProducer.cc.

References Prefix, and Suffix.

28  association_token_(consumes<TrajTrackAssociationCollection>(iConfig.getParameter<edm::InputTag>("Tracks"))),
30  Suffix(iConfig.getParameter<std::string>("Suffix")),
31  Prefix(iConfig.getParameter<std::string>("Prefix")) {
32  produces<std::vector<int>>(Prefix + "clusterIdx" + Suffix); //link: on trk cluster --> general cluster info
33  produces<std::vector<int>>(Prefix + "onTrkClusterIdx" + Suffix); //link: general cluster info --> on track cluster
34  produces<std::vector<int>>(Prefix + "onTrkClustersBegin" + Suffix); //link: track --> onTrkInfo (range)
35  produces<std::vector<int>>(Prefix + "onTrkClustersEnd" + Suffix); //link: track --> onTrkInfo (range)
36  produces<std::vector<int>>(Prefix + "trackindex" + Suffix); //link: on trk cluster --> track index
37 
38  produces<std::vector<unsigned int>>(Prefix + "trackmulti" + Suffix);
39  produces<std::vector<float>>(Prefix + "localtheta" + Suffix);
40  produces<std::vector<float>>(Prefix + "localphi" + Suffix);
41  produces<std::vector<float>>(Prefix + "localpitch" + Suffix);
42  produces<std::vector<float>>(Prefix + "localx" + Suffix);
43  produces<std::vector<float>>(Prefix + "localy" + Suffix);
44  produces<std::vector<float>>(Prefix + "localz" + Suffix);
45  produces<std::vector<float>>(Prefix + "strip" + Suffix);
46  produces<std::vector<float>>(Prefix + "globaltheta" + Suffix);
47  produces<std::vector<float>>(Prefix + "globalphi" + Suffix);
48  produces<std::vector<float>>(Prefix + "globalx" + Suffix);
49  produces<std::vector<float>>(Prefix + "globaly" + Suffix);
50  produces<std::vector<float>>(Prefix + "globalz" + Suffix);
51  produces<std::vector<float>>(Prefix + "insidistance" + Suffix);
52  produces<std::vector<float>>(Prefix + "covered" + Suffix);
53  produces<std::vector<float>>(Prefix + "projwidth" + Suffix);
54  produces<std::vector<float>>(Prefix + "BdotY" + Suffix);
55 
56  produces<std::vector<float>>(Prefix + "rhlocalx" + Suffix);
57  produces<std::vector<float>>(Prefix + "rhlocaly" + Suffix);
58  produces<std::vector<float>>(Prefix + "rhlocalxerr" + Suffix);
59  produces<std::vector<float>>(Prefix + "rhlocalyerr" + Suffix);
60  produces<std::vector<float>>(Prefix + "rhglobalx" + Suffix);
61  produces<std::vector<float>>(Prefix + "rhglobaly" + Suffix);
62  produces<std::vector<float>>(Prefix + "rhglobalz" + Suffix);
63  produces<std::vector<float>>(Prefix + "rhstrip" + Suffix);
64  produces<std::vector<float>>(Prefix + "rhmerr" + Suffix);
65 
66  produces<std::vector<float>>(Prefix + "ubstrip" + Suffix);
67  produces<std::vector<float>>(Prefix + "ubmerr" + Suffix);
68 
69  produces<std::vector<float>>(Prefix + "driftx" + Suffix);
70  produces<std::vector<float>>(Prefix + "drifty" + Suffix);
71  produces<std::vector<float>>(Prefix + "driftz" + Suffix);
72  produces<std::vector<float>>(Prefix + "globalZofunitlocalY" + Suffix);
73 }
T getParameter(std::string const &) const
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusters_token_
const edm::EDGetTokenT< edm::View< reco::Track > > tracks_token_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
const edm::EDGetTokenT< TrajTrackAssociationCollection > association_token_

Member Function Documentation

void ShallowTrackClustersProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 75 of file ShallowTrackClustersProducer.cc.

References TrackValidation_cff::association, association_token_, genericTrackCandidates_cff::associations, edm::AssociationMap< Tag >::begin(), SiStripRecHit1D::cluster(), SiStripRecHit2D::cluster(), clusters_token_, heavyFlavorValidationHarvestingSequence_cff::combiner, edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator, funct::cos(), shallow::drift(), edm::AssociationMap< Tag >::end(), shallow::findTrackIndex(), SiStripCluster::firstStrip(), edm::EventSetup::get(), edm::Event::getByToken(), TrajectoryStateOnSurface::globalDirection(), TrajectoryStateOnSurface::globalPosition(), h, mps_fire::i, TrackerGeometry::idToDet(), training_settings::idx, MagneticField::inTesla(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localPosition(), volumeBasedMagneticField_1103l_cfi::magfield, shallow::make_cluster_map(), taus_updatedMVAIds_cff::mapping, Topology::measurementError(), Trajectory::measurements(), SiStripMatchedRecHit2D::monoCluster(), eostools::move(), PV3DBase< T, PVType, FrameType >::phi(), GloballyPositioned< T >::position(), LocalTrajectoryError::positionError(), Prefix, edm::Event::put(), trackerHitRTTI::single, findQualityFiles::size, StripGeomDetUnit::specificTopology(), mathSSE::sqrt(), SiStripMatchedRecHit2D::stereoCluster(), digitizers_cfi::strip, StripTopology::strip(), Suffix, GeomDet::surface(), funct::tan(), PV3DBase< T, PVType, FrameType >::theta(), GeomDet::toGlobal(), GeomDet::toLocal(), toLocal(), HLT_2018_cff::track, PDWG_EXOHSCP_cff::tracks, tracks_token_, x, PV3DBase< T, PVType, FrameType >::x(), y, PV3DBase< T, PVType, FrameType >::y(), z, and PV3DBase< T, PVType, FrameType >::z().

Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().

75  {
78  iEvent.getByToken(tracks_token_, tracks);
79 
80  int size = clustermap.size();
81 
82  //links
83  auto clusterIdx = std::make_unique<std::vector<int>>(); //link: on trk cluster --> general cluster info
84  auto onTrkClusterIdx =
85  std::make_unique<std::vector<int>>(size, -1); //link: general cluster info --> on track cluster
86  auto onTrkClustersBegin = std::make_unique<std::vector<int>>(tracks->size(), -1); //link: track --> on trk cluster
87  auto onTrkClustersEnd = std::make_unique<std::vector<int>>(tracks->size(), -1); //link: track --> on trk cluster
88  auto trackindex = std::make_unique<std::vector<int>>(); //link: on track cluster --> track
89  clusterIdx->reserve(size);
90  trackindex->reserve(size);
91 
92  auto trackmulti = std::make_unique<std::vector<unsigned int>>();
93  trackmulti->reserve(size);
94  auto localtheta = std::make_unique<std::vector<float>>();
95  localtheta->reserve(size);
96  auto localphi = std::make_unique<std::vector<float>>();
97  localphi->reserve(size);
98  auto localpitch = std::make_unique<std::vector<float>>();
99  localpitch->reserve(size);
100  auto localx = std::make_unique<std::vector<float>>();
101  localx->reserve(size);
102  auto localy = std::make_unique<std::vector<float>>();
103  localy->reserve(size);
104  auto localz = std::make_unique<std::vector<float>>();
105  localz->reserve(size);
106  auto strip = std::make_unique<std::vector<float>>();
107  strip->reserve(size);
108  auto globaltheta = std::make_unique<std::vector<float>>();
109  globaltheta->reserve(size);
110  auto globalphi = std::make_unique<std::vector<float>>();
111  globalphi->reserve(size);
112  auto globalx = std::make_unique<std::vector<float>>();
113  globalx->reserve(size);
114  auto globaly = std::make_unique<std::vector<float>>();
115  globaly->reserve(size);
116  auto globalz = std::make_unique<std::vector<float>>();
117  globalz->reserve(size);
118  auto insidistance = std::make_unique<std::vector<float>>();
119  insidistance->reserve(size);
120  auto projwidth = std::make_unique<std::vector<float>>();
121  projwidth->reserve(size);
122  auto BdotY = std::make_unique<std::vector<float>>();
123  BdotY->reserve(size);
124  auto covered = std::make_unique<std::vector<float>>();
125  covered->reserve(size);
126  auto rhlocalx = std::make_unique<std::vector<float>>();
127  rhlocalx->reserve(size);
128  auto rhlocaly = std::make_unique<std::vector<float>>();
129  rhlocaly->reserve(size);
130  auto rhlocalxerr = std::make_unique<std::vector<float>>();
131  rhlocalxerr->reserve(size);
132  auto rhlocalyerr = std::make_unique<std::vector<float>>();
133  rhlocalyerr->reserve(size);
134  auto rhglobalx = std::make_unique<std::vector<float>>();
135  rhglobalx->reserve(size);
136  auto rhglobaly = std::make_unique<std::vector<float>>();
137  rhglobaly->reserve(size);
138  auto rhglobalz = std::make_unique<std::vector<float>>();
139  rhglobalz->reserve(size);
140  auto rhstrip = std::make_unique<std::vector<float>>();
141  rhstrip->reserve(size);
142  auto rhmerr = std::make_unique<std::vector<float>>();
143  rhmerr->reserve(size);
144  auto ubstrip = std::make_unique<std::vector<float>>();
145  ubstrip->reserve(size);
146  auto ubmerr = std::make_unique<std::vector<float>>();
147  ubmerr->reserve(size);
148  auto driftx = std::make_unique<std::vector<float>>();
149  driftx->reserve(size);
150  auto drifty = std::make_unique<std::vector<float>>();
151  drifty->reserve(size);
152  auto driftz = std::make_unique<std::vector<float>>();
153  driftz->reserve(size);
154  auto globalZofunitlocalY = std::make_unique<std::vector<float>>();
155  globalZofunitlocalY->reserve(size);
156 
157  edm::ESHandle<TrackerGeometry> theTrackerGeometry;
158  iSetup.get<TrackerDigiGeometryRecord>().get(theTrackerGeometry);
160  iSetup.get<IdealMagneticFieldRecord>().get(magfield);
162  iSetup.get<SiStripLorentzAngleDepRcd>().get(SiStripLorentzAngle);
163 
165  iEvent.getByToken(association_token_, associations);
166 
168 
169  size_t ontrk_cluster_idx = 0;
170  std::map<size_t, std::vector<size_t>> mapping; //cluster idx --> on trk cluster idx (multiple)
171 
173  association != associations->end();
174  association++) {
175  const Trajectory* traj = association->key.get();
176  const reco::Track* track = association->val.get();
177  int trk_idx = shallow::findTrackIndex(tracks, track);
178  size_t trk_strt_idx = ontrk_cluster_idx;
179 
180  for (auto const& measurement : traj->measurements()) {
181  const TrajectoryStateOnSurface& tsos = measurement.updatedState();
182  const TrajectoryStateOnSurface unbiased =
183  combiner(measurement.forwardPredictedState(), measurement.backwardPredictedState());
184 
185  const TrackingRecHit* hit = measurement.recHit()->hit();
186  const SiStripRecHit1D* hit1D = dynamic_cast<const SiStripRecHit1D*>(hit);
187  const SiStripRecHit2D* hit2D = dynamic_cast<const SiStripRecHit2D*>(hit);
188  const SiStripMatchedRecHit2D* matchedhit = dynamic_cast<const SiStripMatchedRecHit2D*>(hit);
189 
190  for (unsigned h = 0; h < 2; h++) { //loop over possible Hit options (1D, 2D)
191  const SiStripCluster* cluster_ptr;
192  if (!matchedhit && h == 1)
193  continue;
194  else if (matchedhit && h == 0)
195  cluster_ptr = &matchedhit->monoCluster();
196  else if (matchedhit && h == 1)
197  cluster_ptr = &matchedhit->stereoCluster();
198  else if (hit2D)
199  cluster_ptr = (hit2D->cluster()).get();
200  else if (hit1D)
201  cluster_ptr = (hit1D->cluster()).get();
202  else
203  continue;
204 
205  shallow::CLUSTERMAP::const_iterator cluster =
206  clustermap.find(std::make_pair(hit->geographicalId().rawId(), cluster_ptr->firstStrip()));
207  if (cluster == clustermap.end())
208  throw cms::Exception("Logic Error") << "Cluster not found: this could be a configuration error" << std::endl;
209 
210  unsigned i = cluster->second;
211 
212  //find if cluster was already assigned to a previous track
213  auto already_visited = mapping.find(i);
214  int nassociations = 1;
215  if (already_visited != mapping.end()) {
216  nassociations += already_visited->second.size();
217  for (size_t idx : already_visited->second) {
218  trackmulti->at(idx)++;
219  }
220  already_visited->second.push_back(ontrk_cluster_idx);
221  } else { //otherwise store this
222  std::vector<size_t> single = {ontrk_cluster_idx};
223  mapping.insert(std::make_pair(i, single));
224  }
225 
226  const StripGeomDetUnit* theStripDet =
227  dynamic_cast<const StripGeomDetUnit*>(theTrackerGeometry->idToDet(hit->geographicalId()));
228  LocalVector drift = shallow::drift(theStripDet, *magfield, *SiStripLorentzAngle);
229 
230  if (nassociations == 1)
231  onTrkClusterIdx->at(i) = ontrk_cluster_idx; //link: general cluster info --> on track cluster
232  clusterIdx->push_back(i); //link: on trk cluster --> general cluster info
233  trackmulti->push_back(nassociations);
234  trackindex->push_back(trk_idx);
235  localtheta->push_back((theStripDet->toLocal(tsos.globalDirection())).theta());
236  localphi->push_back((theStripDet->toLocal(tsos.globalDirection())).phi());
237  localpitch->push_back(
238  (theStripDet->specificTopology()).localPitch(theStripDet->toLocal(tsos.globalPosition())));
239  localx->push_back((theStripDet->toLocal(tsos.globalPosition())).x());
240  localy->push_back((theStripDet->toLocal(tsos.globalPosition())).y());
241  localz->push_back((theStripDet->toLocal(tsos.globalPosition())).z());
242  strip->push_back((theStripDet->specificTopology()).strip(theStripDet->toLocal(tsos.globalPosition())));
243  globaltheta->push_back(tsos.globalDirection().theta());
244  globalphi->push_back(tsos.globalDirection().phi());
245  globalx->push_back(tsos.globalPosition().x());
246  globaly->push_back(tsos.globalPosition().y());
247  globalz->push_back(tsos.globalPosition().z());
248  insidistance->push_back(1. / fabs(cos(localtheta->at(ontrk_cluster_idx))));
249  projwidth->push_back(tan(localtheta->at(ontrk_cluster_idx)) * cos(localphi->at(ontrk_cluster_idx)));
250  BdotY->push_back((theStripDet->surface()).toLocal(magfield->inTesla(theStripDet->surface().position())).y());
251  covered->push_back(drift.z() / localpitch->at(ontrk_cluster_idx) *
252  fabs(projwidth->at(ontrk_cluster_idx) - drift.x() / drift.z()));
253  rhlocalx->push_back(hit->localPosition().x());
254  rhlocaly->push_back(hit->localPosition().y());
255  rhlocalxerr->push_back(sqrt(hit->localPositionError().xx()));
256  rhlocalyerr->push_back(sqrt(hit->localPositionError().yy()));
257  rhglobalx->push_back(theStripDet->toGlobal(hit->localPosition()).x());
258  rhglobaly->push_back(theStripDet->toGlobal(hit->localPosition()).y());
259  rhglobalz->push_back(theStripDet->toGlobal(hit->localPosition()).z());
260  rhstrip->push_back(theStripDet->specificTopology().strip(hit->localPosition()));
261  rhmerr->push_back(sqrt(
262  theStripDet->specificTopology().measurementError(hit->localPosition(), hit->localPositionError()).uu()));
263  ubstrip->push_back(theStripDet->specificTopology().strip(unbiased.localPosition()));
264  ubmerr->push_back(sqrt(theStripDet->specificTopology()
265  .measurementError(unbiased.localPosition(), unbiased.localError().positionError())
266  .uu()));
267  driftx->push_back(drift.x());
268  drifty->push_back(drift.y());
269  driftz->push_back(drift.z());
270  globalZofunitlocalY->push_back((theStripDet->toGlobal(LocalVector(0, 1, 0))).z());
271 
272  ontrk_cluster_idx++;
273  } //for(unsigned h=0; h<2; h++) { //loop over possible Hit options (1D, 2D)
274  } //for(auto const& measurement : traj->measurements() )
275 
276  onTrkClustersBegin->at(trk_idx) = trk_strt_idx;
277  onTrkClustersEnd->at(trk_idx) = ontrk_cluster_idx;
278 
279  } //for(TrajTrackAssociationCollection::const_iterator association = associations->begin();
280 
281  iEvent.put(std::move(clusterIdx), Prefix + "clusterIdx" + Suffix);
282  iEvent.put(std::move(onTrkClusterIdx), Prefix + "onTrkClusterIdx" + Suffix);
283  iEvent.put(std::move(onTrkClustersBegin), Prefix + "onTrkClustersBegin" + Suffix);
284  iEvent.put(std::move(onTrkClustersEnd), Prefix + "onTrkClustersEnd" + Suffix);
285  iEvent.put(std::move(trackindex), Prefix + "trackindex" + Suffix);
286 
287  iEvent.put(std::move(trackmulti), Prefix + "trackmulti" + Suffix);
288  iEvent.put(std::move(localtheta), Prefix + "localtheta" + Suffix);
289  iEvent.put(std::move(localphi), Prefix + "localphi" + Suffix);
290  iEvent.put(std::move(localpitch), Prefix + "localpitch" + Suffix);
291  iEvent.put(std::move(localx), Prefix + "localx" + Suffix);
292  iEvent.put(std::move(localy), Prefix + "localy" + Suffix);
293  iEvent.put(std::move(localz), Prefix + "localz" + Suffix);
294  iEvent.put(std::move(strip), Prefix + "strip" + Suffix);
295  iEvent.put(std::move(globaltheta), Prefix + "globaltheta" + Suffix);
296  iEvent.put(std::move(globalphi), Prefix + "globalphi" + Suffix);
297  iEvent.put(std::move(globalx), Prefix + "globalx" + Suffix);
298  iEvent.put(std::move(globaly), Prefix + "globaly" + Suffix);
299  iEvent.put(std::move(globalz), Prefix + "globalz" + Suffix);
300  iEvent.put(std::move(insidistance), Prefix + "insidistance" + Suffix);
301  iEvent.put(std::move(covered), Prefix + "covered" + Suffix);
302  iEvent.put(std::move(projwidth), Prefix + "projwidth" + Suffix);
303  iEvent.put(std::move(BdotY), Prefix + "BdotY" + Suffix);
304  iEvent.put(std::move(rhlocalx), Prefix + "rhlocalx" + Suffix);
305  iEvent.put(std::move(rhlocaly), Prefix + "rhlocaly" + Suffix);
306  iEvent.put(std::move(rhlocalxerr), Prefix + "rhlocalxerr" + Suffix);
307  iEvent.put(std::move(rhlocalyerr), Prefix + "rhlocalyerr" + Suffix);
308  iEvent.put(std::move(rhglobalx), Prefix + "rhglobalx" + Suffix);
309  iEvent.put(std::move(rhglobaly), Prefix + "rhglobaly" + Suffix);
310  iEvent.put(std::move(rhglobalz), Prefix + "rhglobalz" + Suffix);
311  iEvent.put(std::move(rhstrip), Prefix + "rhstrip" + Suffix);
312  iEvent.put(std::move(rhmerr), Prefix + "rhmerr" + Suffix);
313  iEvent.put(std::move(ubstrip), Prefix + "ubstrip" + Suffix);
314  iEvent.put(std::move(ubmerr), Prefix + "ubmerr" + Suffix);
315  iEvent.put(std::move(driftx), Prefix + "driftx" + Suffix);
316  iEvent.put(std::move(drifty), Prefix + "drifty" + Suffix);
317  iEvent.put(std::move(driftz), Prefix + "driftz" + Suffix);
318  iEvent.put(std::move(globalZofunitlocalY), Prefix + "globalZofunitlocalY" + Suffix);
319 }
ClusterRef cluster() const
size
Write out results.
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusters_token_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
const_iterator end() const
last iterator over the map (read only)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
int findTrackIndex(const edm::Handle< edm::View< reco::Track > > &h, const reco::Track *t)
Definition: ShallowTools.cc:25
SiStripCluster const & monoCluster() const
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
LocalVector drift(const StripGeomDetUnit *, const MagneticField &, const SiStripLorentzAngle &)
Definition: ShallowTools.cc:36
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
T y() const
Definition: PV3DBase.h:60
virtual float strip(const LocalPoint &) const =0
GlobalPoint globalPosition() const
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:58
uint16_t firstStrip() const
const edm::EDGetTokenT< edm::View< reco::Track > > tracks_token_
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
LocalError positionError() const
Geom::Theta< T > theta() const
Definition: PV3DBase.h:72
DataContainer const & measurements() const
Definition: Trajectory.h:178
T sqrt(T t)
Definition: SSEVec.h:19
T z() const
Definition: PV3DBase.h:61
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
ClusterRef cluster() const
const LocalTrajectoryError & localError() const
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
const edm::EDGetTokenT< TrajTrackAssociationCollection > association_token_
CLUSTERMAP make_cluster_map(const edm::Event &, const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > &)
Definition: ShallowTools.cc:12
SiStripCluster const & stereoCluster() const
std::map< std::pair< uint32_t, uint16_t >, unsigned int > CLUSTERMAP
Definition: ShallowTools.h:21
T get() const
Definition: EventSetup.h:73
const TrackerGeomDet * idToDet(DetId) const override
const_iterator begin() const
first iterator over the map (read only)
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const =0
T x() const
Definition: PV3DBase.h:59
const PositionType & position() const
def move(src, dest)
Definition: eostools.py:511
GlobalVector globalDirection() const

Member Data Documentation

const edm::EDGetTokenT<TrajTrackAssociationCollection> ShallowTrackClustersProducer::association_token_
private

Definition at line 18 of file ShallowTrackClustersProducer.h.

Referenced by produce().

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

Definition at line 19 of file ShallowTrackClustersProducer.h.

Referenced by produce().

std::string ShallowTrackClustersProducer::Prefix
private

Definition at line 21 of file ShallowTrackClustersProducer.h.

Referenced by produce(), and ShallowTrackClustersProducer().

std::string ShallowTrackClustersProducer::Suffix
private

Definition at line 20 of file ShallowTrackClustersProducer.h.

Referenced by produce(), and ShallowTrackClustersProducer().

const edm::EDGetTokenT<edm::View<reco::Track> > ShallowTrackClustersProducer::tracks_token_
private

Definition at line 17 of file ShallowTrackClustersProducer.h.

Referenced by produce().