CMS 3D CMS Logo

DTRecSegment2DProducer.cc
Go to the documentation of this file.
1 
7 /* This Class Header */
9 
10 /* Collaborating Class Header */
15 using namespace edm;
16 
20 
26 
28 
29 /* C++ Headers */
30 #include <string>
31 using namespace std;
32 
33 /* ====================================================================== */
34 
37  // Set verbose output
38  debug = pset.getUntrackedParameter<bool>("debug");
39 
40  // the name of the 1D rec hits collection
41  recHits1DToken_ = consumes<DTRecHitCollection>(pset.getParameter<InputTag>("recHits1DLabel"));
42 
43  if(debug)
44  cout << "[DTRecSegment2DProducer] Constructor called" << endl;
45 
46  produces<DTRecSegment2DCollection>();
47 
48  // Get the concrete reconstruction algo from the factory
49  string theAlgoName = pset.getParameter<string>("Reco2DAlgoName");
50  if(debug) cout << "the Reco2D AlgoName is " << theAlgoName << endl;
51  theAlgo = DTRecSegment2DAlgoFactory::get()->create(theAlgoName,
52  pset.getParameter<ParameterSet>("Reco2DAlgoConfig"));
53 }
54 
57  if(debug)
58  cout << "[DTRecSegment2DProducer] Destructor called" << endl;
59  delete theAlgo;
60 }
61 
62 /* Operations */
65  if(debug)
66  cout << "[DTRecSegment2DProducer] produce called" << endl;
67  // Get the DT Geometry
68  ESHandle<DTGeometry> dtGeom;
69  setup.get<MuonGeometryRecord>().get(dtGeom);
70 
71  theAlgo->setES(setup);
72 
73  // Get the 1D rechits from the event
75  event.getByToken(recHits1DToken_, allHits);
76 
77  // Create the pointer to the collection which will store the rechits
78  auto segments = std::make_unique<DTRecSegment2DCollection>();
79 
80  // Iterate through all hit collections ordered by LayerId
81  DTRecHitCollection::id_iterator dtLayerIt;
82  DTSuperLayerId oldSlId;
83  for (dtLayerIt = allHits->id_begin(); dtLayerIt != allHits->id_end(); ++dtLayerIt){
84  // The layerId
85  DTLayerId layerId = (*dtLayerIt);
86  const DTSuperLayerId SLId = layerId.superlayerId();
87  if (SLId==oldSlId) continue; // I'm on the same SL as before
88  oldSlId = SLId;
89 
90  if(debug) cout <<"Reconstructing the 2D segments in "<< SLId << endl;
91 
92  const DTSuperLayer* sl = dtGeom->superLayer(SLId);
93 
94  // Get all the rec hit in the same superLayer in which layerId relies
96  allHits->get(DTRangeMapAccessor::layersBySuperLayer(SLId));
97 
98  // Fill the vector with the 1D RecHit
99  vector<DTRecHit1DPair> pairs(range.first,range.second);
100 
101  if(debug) cout << "Number of 1D-RecHit pairs " << pairs.size() << endl;
102 
103  if(debug) cout << "Start the 2D-segments Reco "<< endl;
104  OwnVector<DTSLRecSegment2D> segs = theAlgo->reconstruct(sl, pairs);
105  if(debug) cout << "Number of Reconstructed segments: " << segs.size() << endl;
106 
107  if (!segs.empty() )
108  segments->put(SLId, segs.begin(),segs.end());
109  }
110  event.put(std::move(segments));
111 }
112 
113 
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::pair< const_iterator, const_iterator > range
iterator range
Definition: RangeMap.h:50
void produce(edm::Event &event, const edm::EventSetup &setup) override
The method which produces the 2D-segments.
static std::pair< DTLayerId, DTSuperLayerIdComparator > layersBySuperLayer(DTSuperLayerId slId)
Access by SL objects written into a RangeMap by layer.
size_type size() const
Definition: OwnVector.h:264
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:1
DTSuperLayerId superlayerId() const
Return the corresponding SuperLayerId.
Definition: DTLayerId.h:59
iterator begin()
Definition: OwnVector.h:244
bool empty() const
Definition: OwnVector.h:269
iterator end()
Definition: OwnVector.h:249
#define debug
Definition: HDRShower.cc:19
const T & get() const
Definition: EventSetup.h:59
HLT enums.
DTRecSegment2DProducer(const edm::ParameterSet &)
Constructor.
~DTRecSegment2DProducer() override
Destructor.
def move(src, dest)
Definition: eostools.py:510
T get(const Candidate &c)
Definition: component.h:55
Definition: event.py:1
const DTSuperLayer * superLayer(const DTSuperLayerId &id) const
Return a DTSuperLayer given its id.
Definition: DTGeometry.cc:104