35 std::pair<typename T::DetSet::const_iterator, typename T::DetSet::const_iterator>
37 typedef std::pair<typename T::DetSet::const_iterator, typename T::DetSet::const_iterator> return_type;
38 typename T::const_iterator
match = detset.find(
id);
39 if (match == detset.end())
return return_type();
40 typename T::DetSet hits = *
match;
41 return return_type(hits.begin(), hits.end());
75 switchNumrphi = ParametersNumrphi.getParameter<
bool>(
"switchon");
105 switchAdcrphi = ParametersAdcrphi.getParameter<
bool>(
"switchon");
108 switchPosxrphi = ParametersPosxrphi.getParameter<
bool>(
"switchon");
114 switchResrphi = ParametersResrphi.getParameter<
bool>(
"switchon");
123 switchChi2rphi = ParametersChi2rphi.getParameter<
bool>(
"switchon");
190 edm::LogInfo(
"SiStripRecHitsValid") <<
"SiStripRecHitsValid::beginRun: "
191 <<
" Creating MEs for new Cabling ";
218 int numrechitrphi =0;
219 int numrechitstereo =0;
220 int numrechitmatched=0;
223 std::map<std::string, std::vector<int> > totnumrechitrphi;
224 std::map<std::string, std::vector<int> > totnumrechitstereo;
225 std::map<std::string, std::vector<int> > totnumrechitmatched;
226 totnumrechitrphi.clear();
227 totnumrechitstereo.clear();
228 totnumrechitmatched.clear();
229 int totrechitrphi =0;
230 int totrechitstereo =0;
231 int totrechitmatched =0;
239 std::vector<DetId> IDs;
240 IDs.reserve(rechitsrphi->size() + rechitsmatched->size() + rechitsstereo->size());
246 for(std::vector<DetId>::const_iterator it = IDs.begin(); it != IDs.end(); ++it ){
247 uint32_t myid=((*it).rawId());
256 std::pair<SiStripRecHit2DCollection::DetSet::const_iterator,SiStripRecHit2DCollection::DetSet::const_iterator> rechitrphiRange =
helper::getRange(*rechitsrphi, detid);
261 numrechitrphi = rechitrphiRangeIteratorEnd - rechitrphiRangeIteratorBegin;
263 if(numrechitrphi > 0 ){
264 totrechitrphi+=numrechitrphi;
265 for(iterrphi=rechitrphiRangeIteratorBegin; iterrphi!=rechitrphiRangeIteratorEnd;++iterrphi){
279 std::pair<SiStripRecHit2DCollection::DetSet::const_iterator,SiStripRecHit2DCollection::DetSet::const_iterator> rechitstereoRange =
helper::getRange(*rechitsstereo, detid);
283 numrechitstereo = rechitstereoRangeIteratorEnd - rechitstereoRangeIteratorBegin;
284 if(numrechitstereo > 0){
285 totrechitstereo+=numrechitstereo;
286 for(iterstereo=rechitstereoRangeIteratorBegin; iterstereo!=rechitstereoRangeIteratorEnd;++iterstereo){
300 std::pair<SiStripMatchedRecHit2DCollection::DetSet::const_iterator,SiStripMatchedRecHit2DCollection::DetSet::const_iterator> rechitmatchedRange =
helper::getRange(*rechitsmatched, detid);
304 numrechitmatched = rechitmatchedRangeIteratorEnd - rechitmatchedRangeIteratorBegin;
305 if(numrechitmatched > 0){
306 totrechitmatched +=numrechitmatched;
308 for(itermatched=rechitmatchedRangeIteratorBegin; itermatched!=rechitmatchedRangeIteratorEnd;++itermatched){
319 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
320 std::map<std::string, StereoAndMatchedMEs>::iterator iStereoAndMatchedME =
StereoAndMatchedMEsMap.find(label);
323 std::pair<std::string,int32_t> det_lay_pair = fold_organ.
GetSubDetAndLayer(myid,tTopo,
true);
325 if(numrechitrphi>0 || numrechitstereo>0 || numrechitmatched){
327 totnumrechitrphi[det_lay_pair.first].push_back(numrechitrphi);
328 totnumrechitstereo[det_lay_pair.first].push_back(numrechitstereo);
329 totnumrechitmatched[det_lay_pair.first].push_back(numrechitmatched);
331 for (std::vector<RecHitProperties>::iterator irh=
rechitrphi.begin(); irh!=
rechitrphi.end(); ++irh) {
333 fillME(iLayerME->second.meWclusrphi,(*irh).clusiz);
334 fillME(iLayerME->second.meAdcrphi,(*irh).cluchg);
335 fillME(iLayerME->second.mePosxrphi,(*irh).x);
336 fillME(iLayerME->second.meResolxrphi,(*irh).resolxx);
337 fillME(iLayerME->second.meNsimHitrphi,(*irh).NsimHit);
338 if ((*irh).NsimHit > 0) {
339 std::map<std::string, SubDetMEs>::iterator iSubDetME =
SubDetMEsMap.find(det_lay_pair.first);
340 fillME(iSubDetME->second.meBunchrphi, (*irh).bunch);
341 if ((*irh).bunch == 0)
fillME(iSubDetME->second.meEventrphi, (*irh).event);
343 if ( (*irh).resx != -999999. || (*irh).pullMF != -999999. || (*irh).chi2 != -999999. ){
344 fillME(iLayerME->second.meResrphi,(*irh).resx);
345 fillME(iLayerME->second.mePullLFrphi,(*irh).resx/
sqrt((*irh).resolxx));
346 fillME(iLayerME->second.mePullMFrphi,(*irh).pullMF);
347 fillME(iLayerME->second.meChi2rphi,(*irh).chi2);
355 fillME(iStereoAndMatchedME->second.meWclusStereo,(*irh).clusiz);
356 fillME(iStereoAndMatchedME->second.meAdcStereo,(*irh).cluchg);
357 fillME(iStereoAndMatchedME->second.mePosxStereo,(*irh).x);
358 fillME(iStereoAndMatchedME->second.meResolxStereo,
sqrt((*irh).resolxx));
359 fillME(iStereoAndMatchedME->second.meNsimHitStereo,(*irh).NsimHit);
360 if ((*irh).NsimHit > 0) {
361 std::map<std::string, SubDetMEs>::iterator iSubDetME =
SubDetMEsMap.find(det_lay_pair.first);
362 fillME(iSubDetME->second.meBunchStereo, (*irh).bunch);
363 if ((*irh).bunch == 0)
fillME(iSubDetME->second.meEventStereo, (*irh).event);
365 if ( (*irh).resx != -999999. || (*irh).pullMF != -999999. || (*irh).chi2 != -999999. ){
366 fillME(iStereoAndMatchedME->second.meResStereo,(*irh).resx);
367 fillME(iStereoAndMatchedME->second.mePullLFStereo,(*irh).resx/
sqrt((*irh).resolxx));
368 fillME(iStereoAndMatchedME->second.mePullMFStereo,(*irh).pullMF);
369 fillME(iStereoAndMatchedME->second.meChi2Stereo,(*irh).chi2);
376 fillME(iStereoAndMatchedME->second.mePosxMatched,(*irh).x);
377 fillME(iStereoAndMatchedME->second.mePosyMatched,(*irh).y);
378 fillME(iStereoAndMatchedME->second.meResolxMatched,
sqrt((*irh).resolxx));
379 fillME(iStereoAndMatchedME->second.meResolyMatched,
sqrt((*irh).resolyy));
380 fillME(iStereoAndMatchedME->second.meNsimHitMatched,(*irh).NsimHit);
381 if ((*irh).NsimHit > 0) {
382 std::map<std::string, SubDetMEs>::iterator iSubDetME =
SubDetMEsMap.find(det_lay_pair.first);
383 fillME(iSubDetME->second.meBunchMatched, (*irh).bunch);
384 if ((*irh).bunch == 0)
fillME(iSubDetME->second.meEventMatched, (*irh).event);
386 if ( (*irh).resx != -999999. || (*irh).resy != -999999. || (*irh).chi2 != -999999. ){
387 fillME(iStereoAndMatchedME->second.meResxMatched,(*irh).resx);
388 fillME(iStereoAndMatchedME->second.meResyMatched,(*irh).resy);
389 fillME(iStereoAndMatchedME->second.meChi2Matched,(*irh).chi2);
400 for (std::vector<std::string>::iterator iSubdet =
SubDetList_.begin(); iSubdet !=
SubDetList_.end(); iSubdet++){
401 std::map<std::string, SubDetMEs>::iterator iSubDetME =
SubDetMEsMap.find((*iSubdet));
402 fillME(iSubDetME->second.meNumrphi,std::accumulate(totnumrechitrphi[(*iSubdet)].rbegin(), totnumrechitrphi[(*iSubdet)].rend(), 0));
403 fillME(iSubDetME->second.meNumStereo,std::accumulate(totnumrechitstereo[(*iSubdet)].rbegin(), totnumrechitstereo[(*iSubdet)].rend(), 0));
404 fillME(iSubDetME->second.meNumMatched,std::accumulate(totnumrechitmatched[(*iSubdet)].rbegin(), totnumrechitmatched[(*iSubdet)].rend(), 0));
423 LocalPoint localHit = plane.toLocal(globalpos);
430 double scale = -localHit.
z() / dir.
z();
442 return std::pair<LocalPoint,LocalVector>( projectedPos, localStripDir);
461 clusiz = clust->amplitudes().size();
462 const auto & amplitudes=clust->amplitudes();
463 for(
size_t ia=0; ia<amplitudes.size();ia++){
464 totcharge+=amplitudes[ia];
480 double mindist = 999999;
481 double dist = 999999;
487 dist = fabs(
rechitpro.
x - (*m).localPosition().x());
501 rhparameters[0] = position.
x();
502 rhparameters[1] = position.
y();
508 R[0][0] = error.
xx();
509 R[0][1] = error.
xy();
510 R[1][1] = error.
yy();
513 double est = R.similarity(r);
548 double mindist = 999999;
549 double dist = 999999;
550 double distx = 999999;
551 double disty = 999999;
553 std::pair<LocalPoint,LocalVector> closestPair;
558 std::pair<LocalPoint,LocalVector> hitPair;
563 if (hitDetId.stereo()) {
566 distx = fabs(
rechitpro.
x - hitPair.first.x());
567 disty = fabs(
rechitpro.
y - hitPair.first.y());
568 dist =
sqrt(distx*distx+disty*disty);
573 closestPair = hitPair;
588 rhparameters[0] = position.
x();
589 rhparameters[1] = position.
y();
592 shparameters[0] = sh.
x();
593 shparameters[1] = sh.
y();
596 R[0][0] = error.
xx();
597 R[0][1] = error.
xy();
598 R[1][1] = error.
yy();
601 double est = R.similarity(r);
626 std::vector<uint32_t> activeDets;
642 edm::LogInfo(
"SiStripTkRecHits|SiStripRecHitsValid")<<
"nr. of activeDets: "<<activeDets.size();
643 for(std::vector<uint32_t>::iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){
644 uint32_t
detid = (*detid_iterator);
647 activeDets.erase(detid_iterator);
652 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.
GetSubDetAndLayer(detid,tTopo,
true);
657 std::map<std::string, LayerMEs>::iterator iLayerME =
LayerMEsMap.find(label);
662 int32_t lnumber = det_layer_pair.second;
663 std::vector<uint32_t> layerDetIds;
664 if (det_layer_pair.first ==
"TIB") {
666 }
else if (det_layer_pair.first ==
"TOB") {
668 }
else if (det_layer_pair.first ==
"TID" && lnumber > 0) {
670 }
else if (det_layer_pair.first ==
"TID" && lnumber < 0) {
672 }
else if (det_layer_pair.first ==
"TEC" && lnumber > 0) {
674 }
else if (det_layer_pair.first ==
"TEC" && lnumber < 0) {
680 folder_organizer.
setLayerFolder(detid,tTopo,det_layer_pair.second,
true);
694 std::map<std::string, StereoAndMatchedMEs>::iterator iStereoAndMatchedME =
StereoAndMatchedMEsMap.find(label);
698 bool isStereo =
false;
700 int32_t stereolnumber = det_layer_pair.second;
701 std::vector<uint32_t> stereoandmatchedDetIds;
702 if ( (det_layer_pair.first ==
"TIB") && (tTopo->
tibIsStereo(detid) == 1) ) {
703 substructure.
getTIBDetectors(activeDets,stereoandmatchedDetIds,stereolnumber,0,0,0);
705 }
else if ( (det_layer_pair.first ==
"TOB") && (tTopo->
tobIsStereo(detid) == 1) ) {
706 substructure.
getTOBDetectors(activeDets,stereoandmatchedDetIds,stereolnumber,0,0);
708 }
else if ( (det_layer_pair.first ==
"TID") && (stereolnumber > 0) && (tTopo->
tidIsStereo(detid) == 1) ) {
709 substructure.
getTIDDetectors(activeDets,stereoandmatchedDetIds,2,0,
abs(stereolnumber),1);
711 }
else if ( (det_layer_pair.first ==
"TID") && (stereolnumber < 0) && (tTopo->
tidIsStereo(detid) == 1) ) {
712 substructure.
getTIDDetectors(activeDets,stereoandmatchedDetIds,1,0,
abs(stereolnumber),1);
714 }
else if ( (det_layer_pair.first ==
"TEC") && (stereolnumber > 0) && (tTopo->
tecIsStereo(detid) == 1) ) {
715 substructure.
getTECDetectors(activeDets,stereoandmatchedDetIds,2,0,0,0,
abs(stereolnumber),1);
717 }
else if ( (det_layer_pair.first ==
"TEC") && (stereolnumber < 0) && (tTopo->
tecIsStereo(detid) == 1) ) {
718 substructure.
getTECDetectors(activeDets,stereoandmatchedDetIds,1,0,0,0,
abs(stereolnumber),1);
725 folder_organizer.
setLayerFolder(detid,tTopo,det_layer_pair.second,
true);
779 layerMEs.
meWclusrphi =
bookME1D(ibooker,
"TH1Wclusrphi", hidmanager.
createHistoLayer(
"Wclus_rphi",
"layer",label,
"").c_str() ,
"Cluster Width - Number of strips that belong to the RecHit cluster");
852 stereoandmatchedMEs.
meWclusStereo =
bookME1D(ibooker,
"TH1WclusStereo", hidmanager.
createHistoLayer(
"Wclus_stereo",
"layer",label,
"").c_str() ,
"Cluster Width - Number of strips that belong to the RecHit cluster");
863 stereoandmatchedMEs.
mePosxStereo->
setAxisTitle((
"x RecHit coord. (local frame) in stereo modules in " + label).c_str());
868 stereoandmatchedMEs.
meResolxStereo->
setAxisTitle((
"resol(x) RecHit coord. (local frame) in stereo modules in " + label).c_str());
872 stereoandmatchedMEs.
meResStereo =
bookME1D(ibooker,
"TH1ResStereo", hidmanager.
createHistoLayer(
"Res_stereo",
"layer",label,
"").c_str() ,
"Residuals of the hit x coordinate");
883 stereoandmatchedMEs.
mePullMFStereo->
setAxisTitle((
"Pull distribution (measurement frame) in stereo modules in " + label).c_str());
956 HistoName =
"TH1Numrphi__" +
label;
957 subdetMEs.
meNumrphi =
bookME1D(ibooker,
"TH1Numrphi",HistoName.c_str(),
"Num of RecHits");
962 HistoName =
"TH1Bunchrphi__" +
label;
963 subdetMEs.
meBunchrphi =
bookME1D(ibooker,
"TH1Bunchrphi",HistoName.c_str(),
"Bunch Crossing");
968 HistoName =
"TH1Eventrphi__" +
label;
969 subdetMEs.
meEventrphi =
bookME1D(ibooker,
"TH1Eventrphi",HistoName.c_str(),
"Event (in-time bunch)");
974 HistoName =
"TH1NumStereo__" +
label;
975 subdetMEs.
meNumStereo =
bookME1D(ibooker,
"TH1NumStereo",HistoName.c_str(),
"Num of RecHits in stereo modules");
980 HistoName =
"TH1BunchStereo__" +
label;
986 HistoName =
"TH1EventStereo__" +
label;
987 subdetMEs.
meEventStereo =
bookME1D(ibooker,
"TH1EventStereo",HistoName.c_str(),
"Event (in-time bunch)");
992 HistoName =
"TH1NumMatched__" +
label;
993 subdetMEs.
meNumMatched =
bookME1D(ibooker,
"TH1NumMatched",HistoName.c_str(),
"Num of matched RecHits" );
998 HistoName =
"TH1BunchMatched__" +
label;
1004 HistoName =
"TH1EventMatched__" +
label;
1005 subdetMEs.
meEventMatched =
bookME1D(ibooker,
"TH1EventMatched",HistoName.c_str(),
"Event (in-time bunch)");
1015 return ibooker.
book1D(HistoName,HistoTitle,
RecHitProperties rechitpro
MonitorElement * meAdcStereo
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
T getParameter(std::string const &) const
EventNumber_t event() const
MonitorElement * meEventMatched
std::vector< std::string > SubDetList_
virtual const TrackerGeomDet * idToDetUnit(DetId) const
Return the pointer to the GeomDetUnit corresponding to a given DetId.
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
MonitorElement * meEventStereo
void rechitanalysis_matched(SiStripMatchedRecHit2D const rechit, const GluedGeomDet *gluedDet, TrackerHitAssociator &associate)
edm::ParameterSet Parameters
void createStereoAndMatchedMEs(DQMStore::IBooker &ibooker, std::string label)
int event() const
get the contents of the subdetector field (should be protected?)
void setSiStripFolderName(std::string name)
MonitorElement * meNumMatched
virtual float stripAngle(float strip) const =0
std::pair< const std::string, const char * > getSubDetFolderAndTag(const uint32_t &detid, const TrackerTopology *tTopo)
bool tobIsStereo(const DetId &id) const
std::map< std::string, std::vector< uint32_t > > LayerDetMap
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void createSubDetMEs(DQMStore::IBooker &ibooker, std::string label)
#define DEFINE_FWK_MODULE(type)
std::vector< PSimHit > matched
MonitorElement * meNumTotStereo
std::map< std::string, SubDetMEs > SubDetMEsMap
void rechitanalysis(SiStripRecHit2D const rechit, const StripTopology &topol, TrackerHitAssociator &associate)
Sin< T >::type sin(const T &t)
MonitorElement * mePullLFStereo
std::map< std::string, StereoAndMatchedMEs > StereoAndMatchedMEsMap
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=0)
std::vector< RecHitProperties > rechitstereo
MonitorElement * meNsimHitrphi
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
MonitorElement * mePullLFrphi
const Plane & surface() const
The nominal surface of the GeomDet.
MonitorElement * meResolxMatched
MonitorElement * mePullMFStereo
bool tidIsStereo(const DetId &id) const
virtual float strip(const LocalPoint &) const =0
edm::EDGetTokenT< SiStripRecHit2DCollection > stereoRecHitsToken_
MonitorElement * mePosxStereo
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
bool tecIsStereo(const DetId &id) const
virtual LocalError localPositionError() const
MonitorElement * meChi2Stereo
std::vector< RecHitProperties > rechitmatched
MonitorElement * meResxMatched
MonitorElement * meResolxrphi
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const =0
MonitorElement * meBunchStereo
void getTOBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tobDetRawIds, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t rod=0) const
Local3DPoint localPosition() const
MonitorElement * meBunchrphi
int bunchCrossing() const
get the detector field from this detid
MonitorElement * meWclusrphi
Cos< T >::type cos(const T &t)
std::string topFolderName_
MonitorElement * book1D(Args &&...args)
Abs< T >::type abs(const T &t)
virtual const Topology & topology() const override
Returns a reference to the strip proxy topology.
MonitorElement * mePosyMatched
ClusterRef cluster() const
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
void createMEs(DQMStore::IBooker &ibooker, const edm::EventSetup &es)
EncodedEventId eventId() const
edm::EDGetTokenT< SiStripRecHit2DCollection > rphiRecHitsToken_
MonitorElement * meNsimHitStereo
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
MonitorElement * meChi2rphi
MonitorElement * mePosxMatched
std::pair< typename T::DetSet::const_iterator, typename T::DetSet::const_iterator > getRange(const T &detset, const DetId &id)
bool switchNsimHitMatched
MonitorElement * meNumTotMatched
MonitorElement * bookME1D(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName, const char *HistoTitle)
LocalVector localDirection() const
Obsolete. Same as momentumAtEntry().unit(), for backward compatibility.
SiStripRecHitsValid(const edm::ParameterSet &conf)
Detector identifier class for the strip tracker.
std::map< std::string, LayerMEs > LayerMEsMap
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
CLHEP::HepVector AlgebraicVector
void setLayerFolder(uint32_t rawdetid, const TrackerTopology *tTopo, int32_t layer=0, bool ring_flag=0)
MonitorElement * meChi2Matched
void setCurrentFolder(const std::string &fullpath)
std::map< std::string, std::vector< uint32_t > > StereoAndMatchedDetMap
bool tibIsStereo(const DetId &id) const
T const * product() const
MonitorElement * meBunchMatched
MonitorElement * meAdcrphi
MonitorElement * meWclusStereo
MonitorElement * meResyMatched
std::pair< LocalPoint, LocalVector > projectHit(const PSimHit &hit, const StripGeomDetUnit *stripDet, const BoundPlane &plane)
MonitorElement * meResolyMatched
MonitorElement * meResolxStereo
MonitorElement * meResStereo
void getTECDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tecDetRawIds, uint32_t side=0, uint32_t wheel=0, uint32_t petal_bkw_frw=0, uint32_t petal=0, uint32_t ring=0, uint32_t ster=0) const
void createTotalMEs(DQMStore::IBooker &ibooker)
edm::EDGetTokenT< SiStripMatchedRecHit2DCollection > matchedRecHitsToken_
static int position[264][3]
void beginJob(const edm::EventSetup &es)
void getTIBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tibDetRawIds, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t int_ext=0, uint32_t string=0) const
CLHEP::HepSymMatrix AlgebraicSymMatrix
void createLayerMEs(DQMStore::IBooker &ibooker, std::string label)
void fillME(MonitorElement *ME, float value1)
std::vector< PSimHit > associateHit(const TrackingRecHit &thit) const
MonitorElement * meNumStereo
MonitorElement * meNsimHitMatched
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
void getTIDDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tidDetRawIds, uint32_t side=0, uint32_t wheel=0, uint32_t ring=0, uint32_t ster=0) const
MonitorElement * meEventrphi
DetId geographicalId() const
unsigned long long m_cacheID_
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
MonitorElement * mePosxrphi
MonitorElement * meResrphi
virtual LocalPoint localPosition() const
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
DetId operator()(const X &x)
MonitorElement * mePullMFrphi
MonitorElement * meNumrphi
const GeomDetUnit * stereoDet() const
MonitorElement * meNumTotrphi
virtual const TrackerGeomDet * idToDet(DetId) const
void bookHistograms(DQMStore::IBooker &ibooker, const edm::Run &run, const edm::EventSetup &es)
std::vector< RecHitProperties > rechitrphi