42 #include "CLHEP/Units/GlobalPhysicalConstants.h"
43 #include "CLHEP/Units/GlobalSystemOfUnits.h"
90 if ( pEBRecHits.isValid() ) {
93 LogDebug(
"EcalRecHitDebug") <<
"total # EB rechits to be re-calibrated: " <<
EBRecHits->size();
98 if ( pEERecHits.isValid() ) {
101 LogDebug(
"EcalRecHitDebug") <<
"total # EE uncalibrated rechits to be re-calibrated: " <<
EERecHits->size();
113 if ( pEBTimeDigis.isValid() ) {
114 ebTimeDigis = pEBTimeDigis.product();
115 edm::LogInfo(
"EcalDetailedTimeRecHitInfo") <<
"total # ebTimeDigis: " << ebTimeDigis->size() ;
120 if ( pEETimeDigis.isValid() ) {
121 eeTimeDigis = pEETimeDigis.product();
122 edm::LogInfo(
"EcalDetailedTimeRecHitInfo") <<
"total # eeTimeDigis: " << eeTimeDigis->size() ;
125 std::unique_ptr< EBRecHitCollection > EBDetailedTimeRecHits(
new EBRecHitCollection );
126 std::unique_ptr< EERecHitCollection > EEDetailedTimeRecHits(
new EERecHitCollection );
128 std::unique_ptr<GlobalPoint> vertex;
142 if ((*VertexHandle).size()>0)
145 vertex.reset(
new GlobalPoint(myVertex->
x(),myVertex->
y(),myVertex->
z()) );
157 if ((*VertexHandle).size()>0)
159 assert ((*VertexHandle)[0].vertexId() == 0);
160 const SimVertex* myVertex= &(*VertexHandle)[0];
173 if (timeDigi!=ebTimeDigis->end())
175 if (timeDigi->sampleOfInterest()>=0)
177 float myTime=(*timeDigi)[timeDigi->sampleOfInterest()];
189 EBDetailedTimeRecHits->push_back( aHit );
201 if (timeDigi!=eeTimeDigis->end())
203 if (timeDigi->sampleOfInterest()>=0)
205 float myTime=(*timeDigi)[timeDigi->sampleOfInterest()];
216 EEDetailedTimeRecHits->push_back( aHit );
220 LogInfo(
"EcalDetailedTimeRecHitInfo") <<
"total # EB rechits: " << EBDetailedTimeRecHits->size();
221 LogInfo(
"EcalDetailedTimeRecHitInfo") <<
"total # EE rechits: " << EEDetailedTimeRecHits->size();
231 assert( 0 != cellGeometry ) ;
234 return (layerPos.
mag()*cm-tofVector.
mag()*cm)/(
float)c_light ;
T getParameter(std::string const &) const
~EcalDetailedTimeRecHitProducer()
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
double y() const
y coordinate
edm::EDGetTokenT< EcalTimeDigiCollection > eeTimeDigiCollection_
Global3DPoint GlobalPoint
std::vector< EcalRecHit >::const_iterator const_iterator
edm::EDGetTokenT< EcalTimeDigiCollection > ebTimeDigiCollection_
edm::EDGetTokenT< reco::VertexCollection > recoVertex_
double z() const
z coordinate
const math::XYZTLorentzVectorD & position() const
EcalDetailedTimeRecHitProducer(const edm::ParameterSet &ps)
double x() const
x coordinate
bool correctForVertexZPosition_
A base class to handle the particular shape of Ecal Xtals. Taken from ORCA Calorimetry Code...
std::string EEDetailedTimeRecHitCollection_
edm::EDGetTokenT< EBRecHitCollection > EBRecHitCollection_
double deltaTimeOfFlight(GlobalPoint &vertex, const DetId &detId, int layer) const
const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id.
const CaloGeometry * m_geometry
std::string EBDetailedTimeRecHitCollection_
edm::EDGetTokenT< edm::SimVertexContainer > simVertex_
edm::EDGetTokenT< EERecHitCollection > EERecHitCollection_
virtual void produce(edm::Event &evt, const edm::EventSetup &es)