CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DTRecSegment4DProducer.cc
Go to the documentation of this file.
1 
8 
14 
17 
20 
22 
23 using namespace edm;
24 using namespace std;
25 
27  : // Get the concrete 4D-segments reconstruction algo from the factory
28  the4DAlgo{DTRecSegment4DAlgoFactory::get()->create(pset.getParameter<string>("Reco4DAlgoName"),
29  pset.getParameter<ParameterSet>("Reco4DAlgoConfig"),
30  consumesCollector())} {
31  produces<DTRecSegment4DCollection>();
32 
33  // debug parameter
34  debug = pset.getUntrackedParameter<bool>("debug", false);
35 
36  if (debug)
37  cout << "[DTRecSegment4DProducer] Constructor called" << endl;
38 
39  // the name of the 1D rec hits collection
40  recHits1DToken_ = consumes<DTRecHitCollection>(pset.getParameter<InputTag>("recHits1DLabel"));
41 
42  // the name of the 2D rec hits collection
43  recHits2DToken_ = consumes<DTRecSegment2DCollection>(pset.getParameter<InputTag>("recHits2DLabel"));
44 
45  if (debug)
46  cout << "the Reco4D AlgoName is " << pset.getParameter<string>("Reco4DAlgoName") << endl;
47 }
48 
51  if (debug)
52  cout << "[DTRecSegment4DProducer] Destructor called" << endl;
53 }
54 
56  // Get the 1D rechits from the event
58  event.getByToken(recHits1DToken_, all1DHits);
59 
60  // Get the 2D rechits from the event
62  if (the4DAlgo->wants2DSegments())
63  event.getByToken(recHits2DToken_, all2DSegments);
64 
65  // Create the pointer to the collection which will store the rechits
66  auto segments4DCollection = std::make_unique<DTRecSegment4DCollection>();
67 
68  // Percolate the setup
69  the4DAlgo->setES(setup);
70 
71  // Iterate over all hit collections ordered by layerId
73 
74  DTChamberId oldChId;
75 
76  for (dtLayerIt = all1DHits->id_begin(); dtLayerIt != all1DHits->id_end(); ++dtLayerIt) {
77  // Check the DTChamberId
78  const DTChamberId chId = (*dtLayerIt).chamberId();
79  if (chId == oldChId)
80  continue; // I'm on the same Chamber as before
81  oldChId = chId;
82  if (debug)
83  cout << "ChamberId: " << chId << endl;
84  the4DAlgo->setChamber(chId);
85 
86  if (debug)
87  cout << "Take the DTRecHits1D and set them in the reconstructor" << endl;
88 
89  the4DAlgo->setDTRecHit1DContainer(all1DHits);
90 
91  if (debug)
92  cout << "Take the DTRecSegments2D and set them in the reconstructor" << endl;
93 
94  the4DAlgo->setDTRecSegment2DContainer(all2DSegments);
95 
96  if (debug)
97  cout << "Start 4D-Segments Reco " << endl;
98 
99  OwnVector<DTRecSegment4D> segments4D = the4DAlgo->reconstruct();
100 
101  if (debug) {
102  cout << "Number of reconstructed 4D-segments " << segments4D.size() << endl;
103  copy(segments4D.begin(), segments4D.end(), ostream_iterator<DTRecSegment4D>(cout, "\n"));
104  }
105 
106  if (!segments4D.empty())
107  // convert the OwnVector into a Collection
108  segments4DCollection->put(chId, segments4D.begin(), segments4D.end());
109  }
110  // Load the output in the Event
111  event.put(std::move(segments4DCollection));
112 }
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
size_type size() const
Definition: OwnVector.h:300
std::unique_ptr< DTRecSegment4DBaseAlgo > the4DAlgo
identifier iterator
Definition: RangeMap.h:130
iterator begin()
Definition: OwnVector.h:280
DTRecSegment4DProducer(const edm::ParameterSet &)
Constructor.
bool empty() const
Definition: OwnVector.h:305
def move
Definition: eostools.py:511
edm::EDGetTokenT< DTRecSegment2DCollection > recHits2DToken_
~DTRecSegment4DProducer() override
Destructor.
iterator end()
Definition: OwnVector.h:285
#define debug
Definition: HDRShower.cc:19
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< DTRecHitCollection > recHits1DToken_
tuple cout
Definition: gather_cfg.py:144
void produce(edm::Event &event, const edm::EventSetup &setup) override
The method which produces the 4D rec segments.
#define get