CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EcalTimeDigiProducer.cc
Go to the documentation of this file.
4 
6 
11 
14 
20 
21 
22 //#define ecal_time_debug 1
23 
26  m_EBdigiCollection ( params.getParameter<std::string>("EBtimeDigiCollection") ) ,
27  m_EEdigiCollection ( params.getParameter<std::string>("EEtimeDigiCollection") ) ,
28  m_hitsProducerTagEB ( params.getParameter<edm::InputTag>("hitsProducerEB" ) ) ,
29  m_hitsProducerTagEE ( params.getParameter<edm::InputTag>("hitsProducerEE" ) ) ,
30  m_hitsProducerTokenEB ( sumes.consumes<std::vector<PCaloHit> >( m_hitsProducerTagEB) ) ,
31  m_hitsProducerTokenEE ( sumes.consumes<std::vector<PCaloHit> >( m_hitsProducerTagEE) ) ,
32  m_timeLayerEB ( params.getParameter<int> ("timeLayerBarrel") ),
33  m_timeLayerEE ( params.getParameter<int> ("timeLayerEndcap") ),
34  m_Geometry ( 0 )
35 {
38 
41 
42 #ifdef ecal_time_debug
43  std::cout << "[EcalTimeDigiProducer]::Create EB " << m_EBdigiCollection << " and EE " << m_EEdigiCollection << " collections and digitizers" << std::endl;
44 #endif
45 
46  m_BarrelDigitizer->setTimeLayerId(m_timeLayerEB);
48 }
49 
51 {
52 }
53 
54 void
56  checkGeometry( eventSetup );
57  // checkCalibrations( event, eventSetup );
58  // here the methods to clean the maps
61 }
62 
63 void
64 EcalTimeDigiProducer::accumulateCaloHits(HitsHandle const& ebHandle, HitsHandle const& eeHandle, int bunchCrossing) {
65  // accumulate the simHits and do the averages in a given layer per bunch crossing
66  if(ebHandle.isValid()) {
67  m_BarrelDigitizer->add(*ebHandle.product(), bunchCrossing);
68  }
69 
70  if(eeHandle.isValid()) {
71  m_EndcapDigitizer->add(*eeHandle.product(), bunchCrossing);
72  }
73 
74 }
75 
76 void
78  // Step A: Get Inputs
80  e.getByToken(m_hitsProducerTokenEB, ebHandle);
81 
83  e.getByToken(m_hitsProducerTokenEE, eeHandle);
84 
85 #ifdef ecal_time_debug
86  std::cout << "[EcalTimeDigiProducer]::Accumulate Hits HS event" << std::endl;
87 #endif
88 
89  accumulateCaloHits(ebHandle, eeHandle, 0);
90 }
91 
92 void
95  e.getByLabel(m_hitsProducerTagEB, ebHandle);
96 
98  e.getByLabel(m_hitsProducerTagEE, eeHandle);
99 
100 #ifdef ecal_time_debug
101  std::cout << "[EcalTimeDigiProducer]::Accumulate Hits for BC " << e.bunchCrossing() << std::endl;
102 #endif
103  accumulateCaloHits(ebHandle, eeHandle, e.bunchCrossing());
104 }
105 
106 void
108  std::unique_ptr<EcalTimeDigiCollection> barrelResult ( new EcalTimeDigiCollection() ) ;
109  std::unique_ptr<EcalTimeDigiCollection> endcapResult ( new EcalTimeDigiCollection() ) ;
110 
111 #ifdef ecal_time_debug
112  std::cout << "[EcalTimeDigiProducer]::finalizeEvent" << std::endl;
113 #endif
114 
115  // here basically just put everything in the final collections
116  m_BarrelDigitizer->run( *barrelResult ) ;
117 
118 #ifdef ecal_time_debug
119  std::cout << "[EcalTimeDigiProducer]::EB Digi size " << barrelResult->size() << std::endl;
120 #endif
121 
122  edm::LogInfo("TimeDigiInfo") << "EB time Digis: " << barrelResult->size() ;
123 
124  m_EndcapDigitizer->run( *endcapResult ) ;
125 
126 #ifdef ecal_time_debug
127  std::cout << "[EcalTimeDigiProducer]::EE Digi size " << endcapResult->size() << std::endl;
128 #endif
129 
130  edm::LogInfo("TimeDigiInfo") << "EE Digis: " << endcapResult->size() ;
131 
132 #ifdef ecal_time_debug
133  std::cout << "[EcalTimeDigiProducer]::putting collections into the event " << std::endl;
134 #endif
135 
136  event.put( std::move(barrelResult), m_EBdigiCollection ) ;
137  event.put( std::move(endcapResult), m_EEdigiCollection ) ;
138 }
139 
140 void
142 {
143  // TODO find a way to avoid doing this every event
144  edm::ESHandle<CaloGeometry> hGeometry ;
145  eventSetup.get<CaloGeometryRecord>().get( hGeometry ) ;
146 
147  const CaloGeometry* pGeometry = &*hGeometry;
148 
149  if( pGeometry != m_Geometry )
150  {
151  m_Geometry = pGeometry;
152  updateGeometry();
153  }
154 }
155 
156 void
158 {
163 }
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:45
EcalTimeMapDigitizer * m_EndcapDigitizer
const edm::EDGetTokenT< std::vector< PCaloHit > > m_hitsProducerTokenEE
void run(EcalTimeDigiCollection &output)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
virtual void finalizeEvent(edm::Event &e, edm::EventSetup const &c)
EcalTimeDigiProducer(const edm::ParameterSet &params, edm::stream::EDProducerBase &mixMod, edm::ConsumesCollector &)
void setGeometry(const CaloSubdetectorGeometry *geometry)
void accumulateCaloHits(HitsHandle const &ebHandle, HitsHandle const &eeHandle, int bunchCrossing)
void setTimeLayerId(const int &layerId)
const edm::EDGetTokenT< std::vector< PCaloHit > > m_hitsProducerTokenEB
const edm::InputTag m_hitsProducerTagEB
const std::string m_EEdigiCollection
def move
Definition: eostools.py:510
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
bool isValid() const
Definition: HandleBase.h:75
edm::SortedCollection< EcalTimeDigi > EcalTimeDigiCollection
virtual void accumulate(edm::Event const &e, edm::EventSetup const &c)
T const * product() const
Definition: Handle.h:81
EcalTimeMapDigitizer * m_BarrelDigitizer
const T & get() const
Definition: EventSetup.h:56
void add(const std::vector< PCaloHit > &hits, int bunchCrossing)
bool getByLabel(edm::InputTag const &tag, edm::Handle< T > &result) const
const CaloGeometry * m_Geometry
tuple cout
Definition: gather_cfg.py:145
const edm::InputTag m_hitsProducerTagEE
void checkGeometry(const edm::EventSetup &eventSetup)
virtual void initializeEvent(edm::Event const &e, edm::EventSetup const &c)
const std::string m_EBdigiCollection