CMS 3D CMS Logo

MTDTrackingRecHitProducer.cc
Go to the documentation of this file.
6 
9 
16 
19 
21 
22 //#define DEBUG_ENABLED
23 #ifdef DEBUG_ENABLED
24 #define DEBUG(x) \
25  do { \
26  std::cout << x << std::endl; \
27  } while (0)
28 #else
29 #define DEBUG(x)
30 #endif
31 
33 public:
34  explicit MTDTrackingRecHitProducer(const edm::ParameterSet& ps);
35  ~MTDTrackingRecHitProducer() override = default;
36  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
37 
38  void produce(edm::Event& evt, const edm::EventSetup& es) override;
40 
41 private:
42  const edm::EDGetTokenT<FTLClusterCollection> ftlbClusters_; // collection of barrel digis
43  const edm::EDGetTokenT<FTLClusterCollection> ftleClusters_; // collection of endcap digis
44 
49 };
50 
52  : ftlbClusters_(consumes<FTLClusterCollection>(ps.getParameter<edm::InputTag>("barrelClusters"))),
53  ftleClusters_(consumes<FTLClusterCollection>(ps.getParameter<edm::InputTag>("endcapClusters"))) {
54  produces<MTDTrackingDetSetVector>();
55  mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
56  cpeToken_ = esConsumes<MTDClusterParameterEstimator, MTDCPERecord>(edm::ESInputTag("", "MTDCPEBase"));
57 }
58 
59 // Configuration descriptions
62  desc.add<edm::InputTag>("barrelClusters", edm::InputTag("mtdClusters:FTLBarrel"));
63  desc.add<edm::InputTag>("endcapClusters", edm::InputTag("mtdClusters:FTLEndcap"));
64  descriptions.add("mtdTrackingRecHitProducer", desc);
65 }
66 
69  geom_ = geom.product();
70 
71  auto cpe = es.getTransientHandle(cpeToken_);
72  cpe_ = cpe.product();
73 
75  evt.getByToken(ftlbClusters_, inputBarrel);
76 
78  evt.getByToken(ftleClusters_, inputEndcap);
79 
80  auto outputhits = std::make_unique<MTDTrackingDetSetVector>();
81  auto& theoutputhits = *outputhits;
82 
83  run(inputBarrel, theoutputhits);
84  run(inputEndcap, theoutputhits);
85 
86  evt.put(std::move(outputhits));
87 }
88 
89 //---------------------------------------------------------------------------
92 //---------------------------------------------------------------------------
94  const edmNew::DetSetVector<FTLCluster>& input = *inputHandle;
96 
97  DEBUG("inputCollection " << input.size());
98  for (; DSViter != input.end(); DSViter++) {
99  unsigned int detid = DSViter->detId();
100  DetId detIdObject(detid);
101  const auto genericDet = geom_->idToDetUnit(detIdObject);
102  if (genericDet == nullptr) {
103  throw cms::Exception("MTDTrackingRecHitProducer")
104  << "GeographicalID: " << std::hex << detid << " is invalid!" << std::dec << std::endl;
105  }
106 
107  MTDTrackingDetSetVector::FastFiller recHitsOnDet(output, detid);
108 
109  edmNew::DetSet<FTLCluster>::const_iterator clustIt = DSViter->begin(), clustEnd = DSViter->end();
110 
111  for (; clustIt != clustEnd; clustIt++) {
112  DEBUG("Cluster: size " << clustIt->size() << " " << clustIt->x() << "," << clustIt->y() << " "
113  << clustIt->energy() << " " << clustIt->time());
114  MTDClusterParameterEstimator::ReturnType tuple = cpe_->getParameters(*clustIt, *genericDet);
115  LocalPoint lp(std::get<0>(tuple));
116  LocalError le(std::get<1>(tuple));
117 
118  // Create a persistent edm::Ref to the cluster
120  // Make a RecHit and add it to the DetSet
121  MTDTrackingRecHit hit(lp, le, *genericDet, cluster);
122  DEBUG("MTD_TRH: " << hit.localPosition().x() << "," << hit.localPosition().y() << " : "
123  << hit.localPositionError().xx() << "," << hit.localPositionError().yy() << " : " << hit.time()
124  << " : " << hit.timeError());
125  // Now save it =================
126  recHitsOnDet.push_back(hit);
127  } // <-- End loop on Clusters
128  } // <-- End loop on DetUnits
129  DEBUG("outputCollection " << output.size());
130 }
131 
ConfigurationDescriptions.h
MTDTrackingRecHitProducer
Definition: MTDTrackingRecHitProducer.cc:32
MTDTrackingRecHitProducer::cpeToken_
edm::ESGetToken< MTDClusterParameterEstimator, MTDCPERecord > cpeToken_
Definition: MTDTrackingRecHitProducer.cc:48
MTDTrackingRecHitProducer::geom_
const MTDGeometry * geom_
Definition: MTDTrackingRecHitProducer.cc:45
Handle.h
DEBUG
#define DEBUG(x)
Definition: MTDTrackingRecHitProducer.cc:29
edm::ESInputTag
Definition: ESInputTag.h:87
input
static const std::string input
Definition: EdmProvDump.cc:48
MessageLogger.h
MTDClusterParameterEstimator::ReturnType
std::tuple< LocalPoint, LocalError, TimeValue, TimeValueError > ReturnType
Definition: MTDClusterParameterEstimator.h:25
hit::y
double y
Definition: SiStripHitEffFromCalibTree.cc:90
MTDCPERecord.h
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
edm::EDGetTokenT
Definition: EDGetToken.h:33
FTLCluster
Definition: FTLCluster.h:21
edm
HLT enums.
Definition: AlignableModifier.h:19
MTDTrackingRecHitProducer::~MTDTrackingRecHitProducer
~MTDTrackingRecHitProducer() override=default
MTDTrackingRecHitProducer::ftleClusters_
const edm::EDGetTokenT< FTLClusterCollection > ftleClusters_
Definition: MTDTrackingRecHitProducer.cc:43
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89281
edmNew::makeRefTo
edm::Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(const HandleT &iHandle, typename HandleT::element_type::value_type::const_iterator itIter)
Definition: DetSetVectorNew.h:689
MTDGeometry.h
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
MeasurementError.h
edmNew::DetSetVector::const_iterator
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
Definition: DetSetVectorNew.h:197
MTDDigiGeometryRecord.h
EDProducer.h
edmNew::DetSetVector::begin
const_iterator begin(bool update=false) const
Definition: DetSetVectorNew.h:530
MTDTrackingRecHitProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: MTDTrackingRecHitProducer.cc:60
edmNew::DetSetVector::FastFiller::push_back
void push_back(data_type const &d)
Definition: DetSetVectorNew.h:274
edm::Handle
Definition: AssociativeIterator.h:50
MTDTrackingRecHitProducer::mtdgeoToken_
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
Definition: MTDTrackingRecHitProducer.cc:47
MTDGeometry::idToDetUnit
const MTDGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
Definition: MTDGeometry.cc:163
edm::Ref
Definition: AssociativeIterator.h:58
edmNew::DetSet::size
size_type size() const
Definition: DetSetNew.h:68
hit::x
double x
Definition: SiStripHitEffFromCalibTree.cc:89
MTDClusterParameterEstimator
Definition: MTDClusterParameterEstimator.h:15
DetId
Definition: DetId.h:17
MakerMacros.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
MTDTrackingRecHitProducer::produce
void produce(edm::Event &evt, const edm::EventSetup &es) override
Definition: MTDTrackingRecHitProducer.cc:67
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:535
Point3DBase< float, LocalTag >
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
MTDTrackingRecHit.h
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
LocalError
Definition: LocalError.h:12
MTDTrackingRecHit
A 2D TrackerRecHit with time and time error information.
Definition: MTDTrackingRecHit.h:10
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
MeasurementPoint.h
MTDTrackingRecHitProducer::ftlbClusters_
const edm::EDGetTokenT< FTLClusterCollection > ftlbClusters_
Definition: MTDTrackingRecHitProducer.cc:42
edm::stream::EDProducer
Definition: EDProducer.h:38
edm::EventSetup
Definition: EventSetup.h:58
edm::EventSetup::getTransientHandle
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:166
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord >
MTDGeometry
Definition: MTDGeometry.h:14
edmNew::DetSetVector
Definition: DetSetNew.h:13
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
MTDTrackingRecHitProducer::cpe_
const MTDClusterParameterEstimator * cpe_
Definition: MTDTrackingRecHitProducer.cc:46
MTDClusterParameterEstimator::getParameters
virtual ReturnType getParameters(const FTLCluster &cl, const GeomDetUnit &det) const =0
edmNew::DetSetVector::end
const_iterator end(bool update=false) const
Definition: DetSetVectorNew.h:535
Exception
Definition: hltDiff.cc:245
EventSetup.h
MTDClusterParameterEstimator.h
MTDTrackingRecHitProducer::run
void run(edm::Handle< edmNew::DetSetVector< FTLCluster > > inputHandle, MTDTrackingDetSetVector &output)
Definition: MTDTrackingRecHitProducer.cc:93
edmNew::DetSetVector::FastFiller
Definition: DetSetVectorNew.h:202
ParameterSet.h
edm::Event
Definition: Event.h:73
FTLClusterCollections.h
Topology.h
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
edm::InputTag
Definition: InputTag.h:15
hit
Definition: SiStripHitEffFromCalibTree.cc:88
MTDTrackingRecHitProducer::MTDTrackingRecHitProducer
MTDTrackingRecHitProducer(const edm::ParameterSet &ps)
Definition: MTDTrackingRecHitProducer.cc:51
edmNew::DetSet::const_iterator
const data_type * const_iterator
Definition: DetSetNew.h:31