Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-06-29 07:05:31

0001 // SPDX-License-Identifier: LGPL-3.0-or-later
0002 // Copyright (C) 2022 Whitney Armstrong, Sylvester Joosten, Chao Peng
0003 
0004 // Gaudi
0005 #include "GaudiAlg/GaudiAlgorithm.h"
0006 #include "Gaudi/Property.h"
0007 #include "GaudiAlg/GaudiTool.h"
0008 #include "GaudiAlg/Transformer.h"
0009 
0010 #include "JugBase/DataHandle.h"
0011 
0012 // Event Model related classes
0013 #include "edm4eic/TrackerHitCollection.h"
0014 
0015 namespace Jug::Reco {
0016 
0017     /** Collect the tracking hits into a single collection.
0018      *
0019      * \ingroup reco
0020      */
0021     class TrackingHitsCollector : public GaudiAlgorithm {
0022     private:
0023       DataHandle<edm4eic::TrackerHitCollection> m_trackerBarrelHits{"trackerBarrelHits", Gaudi::DataHandle::Reader, this};
0024       DataHandle<edm4eic::TrackerHitCollection> m_trackerEndcapHits{"trackerEndcapHits", Gaudi::DataHandle::Reader, this};
0025       DataHandle<edm4eic::TrackerHitCollection> m_vertexBarrelHits {"vertexBarrelHits" , Gaudi::DataHandle::Reader, this};
0026       DataHandle<edm4eic::TrackerHitCollection> m_vertexEndcapHits {"vertexEndcapHits" , Gaudi::DataHandle::Reader, this};
0027       DataHandle<edm4eic::TrackerHitCollection> m_gemEndcapHits {"gemEndcapHits" , Gaudi::DataHandle::Reader, this};
0028       DataHandle<edm4eic::TrackerHitCollection> m_outputHitCollection{"outputHitCollection", Gaudi::DataHandle::Writer, this};
0029 
0030     public:
0031       TrackingHitsCollector(const std::string& name, ISvcLocator* svcLoc)
0032           : GaudiAlgorithm(name, svcLoc)
0033       {
0034         declareProperty("trackerBarrelHits", m_trackerBarrelHits, "");
0035         declareProperty("trackerEndcapHits", m_trackerEndcapHits, "");
0036         declareProperty("vertexBarrelHits" , m_vertexBarrelHits , "");
0037         declareProperty("vertexEndcapHits" , m_vertexEndcapHits , "");
0038         declareProperty("gemEndcapHits" , m_gemEndcapHits , "");
0039         declareProperty("outputHitCollection", m_outputHitCollection, "");
0040       }
0041 
0042       StatusCode initialize() override
0043       {
0044         warning() << "DEPRECATED, use TrackingHitsCollector2 instead" << endmsg;
0045         return StatusCode::SUCCESS;
0046       }
0047 
0048       StatusCode execute() override
0049       {
0050         const edm4eic::TrackerHitCollection* trkBarrelHits = m_trackerBarrelHits.get();
0051         const edm4eic::TrackerHitCollection* trkEndcapHits = m_trackerEndcapHits.get();
0052         const edm4eic::TrackerHitCollection* vtxBarrelHits = m_vertexBarrelHits .get();
0053         const edm4eic::TrackerHitCollection* vtxEndcapHits = m_vertexEndcapHits .get();
0054         const edm4eic::TrackerHitCollection* gemEndcapHits = m_gemEndcapHits .get();
0055         auto* outputHits = m_outputHitCollection.createAndPut();
0056 
0057         for (const auto* hits : {trkBarrelHits, trkEndcapHits, vtxBarrelHits, vtxEndcapHits, gemEndcapHits}) {
0058           if (hits != nullptr) {
0059             for (const auto& ahit : *hits) {
0060               auto new_hit = ahit.clone();
0061               outputHits->push_back(ahit.clone());
0062             }
0063           }
0064         }
0065 
0066         return StatusCode::SUCCESS;
0067       }
0068     };
0069     // NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
0070     DECLARE_COMPONENT(TrackingHitsCollector)
0071 
0072 } // namespace Jug::Reco