CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
TBHodoActiveVolumeRawInfoProducer Class Reference

#include <TBHodoActiveVolumeRawInfoProducer.h>

Inheritance diagram for TBHodoActiveVolumeRawInfoProducer:
edm::stream::EDProducer<>

Public Member Functions

void produce (edm::Event &event, const edm::EventSetup &eventSetup) override
 Produce digis out of raw data. More...
 
 TBHodoActiveVolumeRawInfoProducer (const edm::ParameterSet &ps)
 Constructor. More...
 
 ~TBHodoActiveVolumeRawInfoProducer () override
 Destructor. More...
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Attributes

edm::EDGetTokenT< edm::PCaloHitContainerm_EcalToken
 
double myThreshold
 
EcalTBHodoscopeGeometrytheTBHodoGeom_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 26 of file TBHodoActiveVolumeRawInfoProducer.h.

Constructor & Destructor Documentation

TBHodoActiveVolumeRawInfoProducer::TBHodoActiveVolumeRawInfoProducer ( const edm::ParameterSet ps)
explicit

Constructor.

Definition at line 14 of file TBHodoActiveVolumeRawInfoProducer.cc.

References HLT_2018_cff::InputTag.

14  {
15  m_EcalToken = consumes<edm::PCaloHitContainer>(edm::InputTag("g4SimHits", "EcalTBH4BeamHits"));
16  produces<EcalTBHodoscopeRawInfo>();
17 
19 
20  myThreshold = 0.05E-3;
21 }
edm::EDGetTokenT< edm::PCaloHitContainer > m_EcalToken
TBHodoActiveVolumeRawInfoProducer::~TBHodoActiveVolumeRawInfoProducer ( )
override

Destructor.

Definition at line 23 of file TBHodoActiveVolumeRawInfoProducer.cc.

23 { delete theTBHodoGeom_; }

Member Function Documentation

void TBHodoActiveVolumeRawInfoProducer::produce ( edm::Event event,
const edm::EventSetup eventSetup 
)
override

Produce digis out of raw data.

Definition at line 25 of file TBHodoActiveVolumeRawInfoProducer.cc.

References HodoscopeDetId::fibrId(), edm::HandleBase::isValid(), LogDebug, eostools::move(), HodoscopeDetId::planeId(), edm::Handle< T >::product(), and EcalTBHodoscopePlaneRawHits::setHit().

25  {
26  unique_ptr<EcalTBHodoscopeRawInfo> product(new EcalTBHodoscopeRawInfo());
27 
28  // caloHit container
30  const edm::PCaloHitContainer *caloHits = nullptr;
31  event.getByToken(m_EcalToken, pCaloHit);
32  if (pCaloHit.isValid()) {
33  caloHits = pCaloHit.product();
34  LogDebug("EcalTBHodo") << "total # caloHits: " << caloHits->size();
35  } else {
36  edm::LogError("EcalTBHodo") << "Error! can't get the caloHitContainer ";
37  }
38  if (!caloHits) {
39  return;
40  }
41 
42  // detid - energy_sum map
43  std::map<unsigned int, double> energyMap;
44 
45  for (auto &&aHit : *caloHits) {
46  double thisHitEne = aHit.energy();
47 
48  std::map<unsigned int, double>::iterator itmap = energyMap.find(aHit.id());
49  if (itmap == energyMap.end())
50  energyMap.insert(pair<unsigned int, double>(aHit.id(), thisHitEne));
51  else {
52  (*itmap).second += thisHitEne;
53  }
54  }
55 
56  // planes and fibers
57  int nPlanes = theTBHodoGeom_->getNPlanes();
58  int nFibers = theTBHodoGeom_->getNFibres();
59  product->setPlanes(nPlanes);
60 
61  bool firedChannels[4][64];
62  for (int iPlane = 0; iPlane < nPlanes; ++iPlane) {
63  for (int iFiber = 0; iFiber < nFibers; ++iFiber) {
64  firedChannels[iPlane][iFiber] = 0.;
65  }
66  }
67  for (std::map<unsigned int, double>::const_iterator itmap = energyMap.begin(); itmap != energyMap.end(); ++itmap) {
68  if ((*itmap).second > myThreshold) {
69  HodoscopeDetId myHodoDetId = HodoscopeDetId((*itmap).first);
70  firedChannels[myHodoDetId.planeId()][myHodoDetId.fibrId()] = true;
71  }
72  }
73  for (int iPlane = 0; iPlane < nPlanes; ++iPlane) {
74  EcalTBHodoscopePlaneRawHits planeHit(nFibers);
75 
76  for (int iFiber = 0; iFiber < nFibers; ++iFiber) {
77  planeHit.setHit(iFiber, firedChannels[iPlane][iFiber]);
78  }
79  product->setPlane((unsigned int)iPlane, planeHit);
80  }
81 
82  LogDebug("EcalTBHodo") << (*product);
83 
84  event.put(std::move(product));
85 }
#define LogDebug(id)
std::vector< PCaloHit > PCaloHitContainer
bool isValid() const
Definition: HandleBase.h:70
int fibrId() const
T const * product() const
Definition: Handle.h:69
int planeId() const
def move(src, dest)
Definition: eostools.py:511
edm::EDGetTokenT< edm::PCaloHitContainer > m_EcalToken

Member Data Documentation

edm::EDGetTokenT<edm::PCaloHitContainer> TBHodoActiveVolumeRawInfoProducer::m_EcalToken
private

Definition at line 40 of file TBHodoActiveVolumeRawInfoProducer.h.

double TBHodoActiveVolumeRawInfoProducer::myThreshold
private

Definition at line 38 of file TBHodoActiveVolumeRawInfoProducer.h.

EcalTBHodoscopeGeometry* TBHodoActiveVolumeRawInfoProducer::theTBHodoGeom_
private

Definition at line 41 of file TBHodoActiveVolumeRawInfoProducer.h.