CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
SiStripRecHitsValid Class Reference

#include <SiStripRecHitsValid.h>

Inheritance diagram for SiStripRecHitsValid:
DQMEDAnalyzer edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > > edm::stream::EDAnalyzerBase edm::EDConsumerBase

Classes

struct  LayerMEs
 
struct  RecHitProperties
 
struct  StereoAndMatchedMEs
 
struct  SubDetMEs
 
struct  TotalMEs
 

Public Member Functions

 SiStripRecHitsValid (const edm::ParameterSet &conf)
 
 ~SiStripRecHitsValid () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void beginRun (edm::Run const &, edm::EventSetup const &) final
 
void beginStream (edm::StreamID id) final
 
virtual void bookHistograms (DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &)=0
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
void endLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
void endRunSummary (edm::Run const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
uint32_t streamId () const
 
- Public Member Functions inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c) override
 
void beginJob (const edm::EventSetup &es)
 
void bookHistograms (DQMStore::IBooker &ibooker, const edm::Run &run, const edm::EventSetup &es) override
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Private Member Functions

MonitorElementbookME1D (DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName, const char *HistoTitle)
 
void createLayerMEs (DQMStore::IBooker &ibooker, std::string label)
 
void createMEs (DQMStore::IBooker &ibooker, const edm::EventSetup &es)
 
void createStereoAndMatchedMEs (DQMStore::IBooker &ibooker, std::string label)
 
void createSubDetMEs (DQMStore::IBooker &ibooker, std::string label)
 
void createTotalMEs (DQMStore::IBooker &ibooker)
 
void fillME (MonitorElement *ME, float value1)
 
void fillME (MonitorElement *ME, float value1, float value2)
 
void fillME (MonitorElement *ME, float value1, float value2, float value3)
 
void fillME (MonitorElement *ME, float value1, float value2, float value3, float value4)
 
std::pair< LocalPoint, LocalVectorprojectHit (const PSimHit &hit, const StripGeomDetUnit *stripDet, const BoundPlane &plane)
 
void rechitanalysis (SiStripRecHit2D const rechit, const StripTopology &topol, TrackerHitAssociator &associate)
 
void rechitanalysis_matched (SiStripMatchedRecHit2D const rechit, const GluedGeomDet *gluedDet, TrackerHitAssociator &associate)
 

Private Attributes

edm::ParameterSet conf_
 
std::map< std::string, std::vector< uint32_t > > LayerDetMap
 
std::map< std::string, LayerMEsLayerMEsMap
 
unsigned long long m_cacheID_
 
edm::EDGetTokenT< SiStripMatchedRecHit2DCollectionmatchedRecHitsToken_
 
RecHitProperties rechitpro
 
edm::EDGetTokenT< SiStripRecHit2DCollectionrphiRecHitsToken_
 
edm::ESHandle< SiStripDetCablingSiStripDetCabling_
 
std::map< std::string, std::vector< uint32_t > > StereoAndMatchedDetMap
 
std::map< std::string, StereoAndMatchedMEsStereoAndMatchedMEsMap
 
edm::EDGetTokenT< SiStripRecHit2DCollectionstereoRecHitsToken_
 
std::vector< std::string > SubDetList_
 
std::map< std::string, SubDetMEsSubDetMEsMap
 
bool switchAdcrphi
 
bool switchAdcStereo
 
bool switchBunchMatched
 
bool switchBunchrphi
 
bool switchBunchStereo
 
bool switchChi2Matched
 
bool switchChi2rphi
 
bool switchChi2Stereo
 
bool switchEventMatched
 
bool switchEventrphi
 
bool switchEventStereo
 
bool switchNsimHitMatched
 
bool switchNsimHitrphi
 
bool switchNsimHitStereo
 
bool switchNumMatched
 
bool switchNumrphi
 
bool switchNumStereo
 
bool switchNumTotMatched
 
bool switchNumTotrphi
 
bool switchNumTotStereo
 
bool switchPosxMatched
 
bool switchPosxrphi
 
bool switchPosxStereo
 
bool switchPosyMatched
 
bool switchPullLFrphi
 
bool switchPullLFStereo
 
bool switchPullMFrphi
 
bool switchPullMFStereo
 
bool switchResolxMatched
 
bool switchResolxrphi
 
bool switchResolxStereo
 
bool switchResolyMatched
 
bool switchResrphi
 
bool switchResStereo
 
bool switchResxMatched
 
bool switchResyMatched
 
bool switchWclusrphi
 
bool switchWclusStereo
 
std::string topFolderName_
 
TotalMEs totalMEs
 
TrackerHitAssociator::Config trackerHitAssociatorConfig_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
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
 
- Public Types inherited from edm::stream::EDAnalyzerBase
typedef EDAnalyzerAdaptorBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static std::shared_ptr< dqmDetails::NoCacheglobalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
 
static std::shared_ptr< dqmDetails::NoCacheglobalBeginRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *)
 
static void globalEndLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *, dqmDetails::NoCache *)
 
static void globalEndRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *, dqmDetails::NoCache *)
 
- Static Public Member Functions inherited from edm::stream::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Detailed Description

Definition at line 48 of file SiStripRecHitsValid.h.

Constructor & Destructor Documentation

SiStripRecHitsValid::SiStripRecHitsValid ( const edm::ParameterSet conf)

Definition at line 29 of file SiStripRecHitsValid.cc.

References conf_, edm::ParameterSet::getParameter(), matchedRecHitsToken_, rphiRecHitsToken_, stereoRecHitsToken_, AlCaHLTBitMon_QueryRunRegistry::string, SubDetList_, switchAdcrphi, switchAdcStereo, switchBunchMatched, switchBunchrphi, switchBunchStereo, switchChi2Matched, switchChi2rphi, switchChi2Stereo, switchEventMatched, switchEventrphi, switchEventStereo, switchNsimHitMatched, switchNsimHitrphi, switchNsimHitStereo, switchNumMatched, switchNumrphi, switchNumStereo, switchNumTotMatched, switchNumTotrphi, switchNumTotStereo, switchPosxMatched, switchPosxrphi, switchPosxStereo, switchPosyMatched, switchPullLFrphi, switchPullLFStereo, switchPullMFrphi, switchPullMFStereo, switchResolxMatched, switchResolxrphi, switchResolxStereo, switchResolyMatched, switchResrphi, switchResStereo, switchResxMatched, switchResyMatched, switchWclusrphi, switchWclusStereo, and topFolderName_.

29  :
30  conf_(ps),
32  m_cacheID_(0)
33  // matchedRecHits_( ps.getParameter<edm::InputTag>("matchedRecHits") ),
34  // rphiRecHits_( ps.getParameter<edm::InputTag>("rphiRecHits") ),
35  // stereoRecHits_( ps.getParameter<edm::InputTag>("stereoRecHits") )
36 {
37  matchedRecHitsToken_ = consumes<SiStripMatchedRecHit2DCollection>( ps.getParameter<edm::InputTag>("matchedRecHits") );
38 
39  rphiRecHitsToken_ = consumes<SiStripRecHit2DCollection>( ps.getParameter<edm::InputTag>("rphiRecHits") );
40 
41  stereoRecHitsToken_ = consumes<SiStripRecHit2DCollection>( ps.getParameter<edm::InputTag>("stereoRecHits") );
42 
43  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
44 
45  SubDetList_ = conf_.getParameter<std::vector<std::string> >("SubDetList");
46 
47  edm::ParameterSet ParametersNumTotrphi = conf_.getParameter<edm::ParameterSet>("TH1NumTotrphi");
48  switchNumTotrphi = ParametersNumTotrphi.getParameter<bool>("switchon");
49 
50  edm::ParameterSet ParametersNumTotStereo = conf_.getParameter<edm::ParameterSet>("TH1NumTotStereo");
51  switchNumTotStereo = ParametersNumTotStereo.getParameter<bool>("switchon");
52 
53  edm::ParameterSet ParametersNumTotMatched = conf_.getParameter<edm::ParameterSet>("TH1NumTotMatched");
54  switchNumTotMatched = ParametersNumTotMatched.getParameter<bool>("switchon");
55 
56  edm::ParameterSet ParametersNumrphi = conf_.getParameter<edm::ParameterSet>("TH1Numrphi");
57  switchNumrphi = ParametersNumrphi.getParameter<bool>("switchon");
58 
59  edm::ParameterSet ParametersBunchrphi = conf_.getParameter<edm::ParameterSet>("TH1Bunchrphi");
60  switchBunchrphi = ParametersBunchrphi.getParameter<bool>("switchon");
61 
62  edm::ParameterSet ParametersEventrphi = conf_.getParameter<edm::ParameterSet>("TH1Eventrphi");
63  switchEventrphi = ParametersEventrphi.getParameter<bool>("switchon");
64 
65  edm::ParameterSet ParametersNumStereo = conf_.getParameter<edm::ParameterSet>("TH1NumStereo");
66  switchNumStereo = ParametersNumStereo.getParameter<bool>("switchon");
67 
68  edm::ParameterSet ParametersBunchStereo = conf_.getParameter<edm::ParameterSet>("TH1BunchStereo");
69  switchBunchStereo = ParametersBunchStereo.getParameter<bool>("switchon");
70 
71  edm::ParameterSet ParametersEventStereo = conf_.getParameter<edm::ParameterSet>("TH1EventStereo");
72  switchEventStereo = ParametersEventStereo.getParameter<bool>("switchon");
73 
74  edm::ParameterSet ParametersNumMatched = conf_.getParameter<edm::ParameterSet>("TH1NumMatched");
75  switchNumMatched = ParametersNumMatched.getParameter<bool>("switchon");
76 
77  edm::ParameterSet ParametersBunchMatched = conf_.getParameter<edm::ParameterSet>("TH1BunchMatched");
78  switchBunchMatched = ParametersBunchMatched.getParameter<bool>("switchon");
79 
80  edm::ParameterSet ParametersEventMatched = conf_.getParameter<edm::ParameterSet>("TH1EventMatched");
81  switchEventMatched = ParametersEventMatched.getParameter<bool>("switchon");
82 
83  edm::ParameterSet ParametersWclusrphi = conf_.getParameter<edm::ParameterSet>("TH1Wclusrphi");
84  switchWclusrphi = ParametersWclusrphi.getParameter<bool>("switchon");
85 
86  edm::ParameterSet ParametersAdcrphi = conf_.getParameter<edm::ParameterSet>("TH1Adcrphi");
87  switchAdcrphi = ParametersAdcrphi.getParameter<bool>("switchon");
88 
89  edm::ParameterSet ParametersPosxrphi = conf_.getParameter<edm::ParameterSet>("TH1Posxrphi");
90  switchPosxrphi = ParametersPosxrphi.getParameter<bool>("switchon");
91 
92  edm::ParameterSet ParametersResolxrphi = conf_.getParameter<edm::ParameterSet>("TH1Resolxrphi");
93  switchResolxrphi = ParametersResolxrphi.getParameter<bool>("switchon");
94 
95  edm::ParameterSet ParametersResrphi = conf_.getParameter<edm::ParameterSet>("TH1Resrphi");
96  switchResrphi = ParametersResrphi.getParameter<bool>("switchon");
97 
98  edm::ParameterSet ParametersPullLFrphi = conf_.getParameter<edm::ParameterSet>("TH1PullLFrphi");
99  switchPullLFrphi = ParametersPullLFrphi.getParameter<bool>("switchon");
100 
101  edm::ParameterSet ParametersPullMFrphi = conf_.getParameter<edm::ParameterSet>("TH1PullMFrphi");
102  switchPullMFrphi = ParametersPullMFrphi.getParameter<bool>("switchon");
103 
104  edm::ParameterSet ParametersChi2rphi = conf_.getParameter<edm::ParameterSet>("TH1Chi2rphi");
105  switchChi2rphi = ParametersChi2rphi.getParameter<bool>("switchon");
106 
107  edm::ParameterSet ParametersNsimHitrphi = conf_.getParameter<edm::ParameterSet>("TH1NsimHitrphi");
108  switchNsimHitrphi = ParametersNsimHitrphi.getParameter<bool>("switchon");
109 
110  edm::ParameterSet ParametersWclusStereo = conf_.getParameter<edm::ParameterSet>("TH1WclusStereo");
111  switchWclusStereo = ParametersWclusStereo.getParameter<bool>("switchon");
112 
113  edm::ParameterSet ParametersAdcStereo = conf_.getParameter<edm::ParameterSet>("TH1AdcStereo");
114  switchAdcStereo = ParametersAdcStereo.getParameter<bool>("switchon");
115 
116  edm::ParameterSet ParametersPosxStereo = conf_.getParameter<edm::ParameterSet>("TH1PosxStereo");
117  switchPosxStereo = ParametersPosxStereo.getParameter<bool>("switchon");
118 
119  edm::ParameterSet ParametersResolxStereo = conf_.getParameter<edm::ParameterSet>("TH1ResolxStereo");
120  switchResolxStereo = ParametersResolxStereo.getParameter<bool>("switchon");
121 
122  edm::ParameterSet ParametersResStereo = conf_.getParameter<edm::ParameterSet>("TH1ResStereo");
123  switchResStereo = ParametersResStereo.getParameter<bool>("switchon");
124 
125  edm::ParameterSet ParametersPullLFStereo = conf_.getParameter<edm::ParameterSet>("TH1PullLFStereo");
126  switchPullLFStereo = ParametersPullLFStereo.getParameter<bool>("switchon");
127 
128  edm::ParameterSet ParametersPullMFStereo = conf_.getParameter<edm::ParameterSet>("TH1PullMFStereo");
129  switchPullMFStereo = ParametersPullMFStereo.getParameter<bool>("switchon");
130 
131  edm::ParameterSet ParametersChi2Stereo = conf_.getParameter<edm::ParameterSet>("TH1Chi2Stereo");
132  switchChi2Stereo = ParametersChi2Stereo.getParameter<bool>("switchon");
133 
134  edm::ParameterSet ParametersNsimHitStereo = conf_.getParameter<edm::ParameterSet>("TH1NsimHitStereo");
135  switchNsimHitStereo = ParametersNsimHitStereo.getParameter<bool>("switchon");
136 
137  edm::ParameterSet ParametersPosxMatched = conf_.getParameter<edm::ParameterSet>("TH1PosxMatched");
138  switchPosxMatched = ParametersPosxMatched.getParameter<bool>("switchon");
139 
140  edm::ParameterSet ParametersPosyMatched = conf_.getParameter<edm::ParameterSet>("TH1PosyMatched");
141  switchPosyMatched = ParametersPosyMatched.getParameter<bool>("switchon");
142 
143  edm::ParameterSet ParametersResolxMatched = conf_.getParameter<edm::ParameterSet>("TH1ResolxMatched");
144  switchResolxMatched = ParametersResolxMatched.getParameter<bool>("switchon");
145 
146  edm::ParameterSet ParametersResolyMatched = conf_.getParameter<edm::ParameterSet>("TH1ResolyMatched");
147  switchResolyMatched = ParametersResolyMatched.getParameter<bool>("switchon");
148 
149  edm::ParameterSet ParametersResxMatched = conf_.getParameter<edm::ParameterSet>("TH1ResxMatched");
150  switchResxMatched = ParametersResxMatched.getParameter<bool>("switchon");
151 
152  edm::ParameterSet ParametersResyMatched = conf_.getParameter<edm::ParameterSet>("TH1ResyMatched");
153  switchResyMatched = ParametersResyMatched.getParameter<bool>("switchon");
154 
155  edm::ParameterSet ParametersChi2Matched = conf_.getParameter<edm::ParameterSet>("TH1Chi2Matched");
156  switchChi2Matched = ParametersChi2Matched.getParameter<bool>("switchon");
157 
158  edm::ParameterSet ParametersNsimHitMatched = conf_.getParameter<edm::ParameterSet>("TH1NsimHitMatched");
159  switchNsimHitMatched = ParametersNsimHitMatched.getParameter<bool>("switchon");
160 }
T getParameter(std::string const &) const
std::vector< std::string > SubDetList_
TrackerHitAssociator::Config trackerHitAssociatorConfig_
edm::EDGetTokenT< SiStripRecHit2DCollection > stereoRecHitsToken_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
edm::EDGetTokenT< SiStripRecHit2DCollection > rphiRecHitsToken_
edm::ParameterSet conf_
edm::EDGetTokenT< SiStripMatchedRecHit2DCollection > matchedRecHitsToken_
unsigned long long m_cacheID_
SiStripRecHitsValid::~SiStripRecHitsValid ( )
override

Definition at line 162 of file SiStripRecHitsValid.cc.

162  {
163 }

Member Function Documentation

void SiStripRecHitsValid::analyze ( const edm::Event e,
const edm::EventSetup c 
)
overrideprotected

Definition at line 181 of file SiStripRecHitsValid.cc.

References SiStripRecHitsValid::RecHitProperties::bunch, SiStripRecHitsValid::RecHitProperties::chi2, SiStripRecHitsValid::RecHitProperties::cluchg, SiStripRecHitsValid::RecHitProperties::clusiz, edm::EventID::event(), SiStripRecHitsValid::RecHitProperties::event, fillME(), edm::EventSetup::get(), edm::Event::getByToken(), SiStripFolderOrganizer::GetSubDetAndLayer(), SiStripHistoId::getSubdetid(), edm::EventBase::id(), TrackerGeometry::idToDet(), TrackerGeometry::idToDetUnit(), diffTwoXMLs::label, LayerMEsMap, matchedRecHitsToken_, SiStripRecHitsValid::TotalMEs::meNumTotMatched, SiStripRecHitsValid::TotalMEs::meNumTotrphi, SiStripRecHitsValid::TotalMEs::meNumTotStereo, SiStripRecHitsValid::RecHitProperties::NsimHit, edm::ESHandle< T >::product(), SiStripRecHitsValid::RecHitProperties::pullMF, DetId::rawId(), rechitanalysis(), rechitanalysis_matched(), rechitpro, SiStripRecHitsValid::RecHitProperties::resolxx, SiStripRecHitsValid::RecHitProperties::resolyy, SiStripRecHitsValid::RecHitProperties::resx, SiStripRecHitsValid::RecHitProperties::resy, rphiRecHitsToken_, edm::EventID::run(), mathSSE::sqrt(), StereoAndMatchedMEsMap, stereoRecHitsToken_, AlCaHLTBitMon_QueryRunRegistry::string, SubDetList_, SubDetMEsMap, StripGeomDetUnit::topology(), totalMEs, mixOne_simraw_on_sim_cfi::tracker, trackerHitAssociatorConfig_, SiStripRecHitsValid::RecHitProperties::x, and SiStripRecHitsValid::RecHitProperties::y.

181  {
182 
183  LogInfo("EventInfo") << " Run = " << e.id().run() << " Event = " << e.id().event();
184 
185  //Retrieve tracker topology from geometry
186  edm::ESHandle<TrackerTopology> tTopoHandle;
187  es.get<TrackerTopologyRcd>().get(tTopoHandle);
188  const TrackerTopology* const tTopo = tTopoHandle.product();
189 
190  // Step A: Get Inputs
194  e.getByToken(matchedRecHitsToken_, rechitsmatched);
195  e.getByToken(rphiRecHitsToken_, rechitsrphi);
196  e.getByToken(stereoRecHitsToken_, rechitsstereo);
197 
198  //Variables in order to count total num of rechitrphi,rechitstereo, rechitmatched in subdetectors
199  std::map<std::string, int > totnumrechitrphi;
200  std::map<std::string, int > totnumrechitstereo;
201  std::map<std::string, int > totnumrechitmatched;
202  int totrechitrphi =0;
203  int totrechitstereo =0;
204  int totrechitmatched =0;
205 
207 
209  es.get<TrackerDigiGeometryRecord> ().get (pDD);
210  const TrackerGeometry &tracker(*pDD);
211 
212  SiStripHistoId hidmanager;
213  SiStripFolderOrganizer fold_organ;
214  for (auto const& theDetSet : *rechitsrphi) {
215  DetId detid = theDetSet.detId();
216  uint32_t myid = detid.rawId();
217  totrechitrphi += theDetSet.size();
218 
219  std::string label = hidmanager.getSubdetid(myid,tTopo,true);
220  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(label);
221  std::pair<std::string,int32_t> det_lay_pair = fold_organ.GetSubDetAndLayer(myid,tTopo,true);
222 
223  totnumrechitrphi[det_lay_pair.first] = totnumrechitrphi[det_lay_pair.first] + theDetSet.size();
224  //loop over rechits-rphi in the same subdetector
225  if(iLayerME != LayerMEsMap.end()){
226  for(auto const& rechit : theDetSet){
227  const GeomDetUnit * det = tracker.idToDetUnit(detid);
228  const StripGeomDetUnit * stripdet=(const StripGeomDetUnit*)(det);
229  const StripTopology &topol=(StripTopology&)stripdet->topology();
230  //analyze RecHits
231  rechitanalysis(rechit,topol,associate);
232  // fill the result in a histogram
233  fillME(iLayerME->second.meWclusrphi,rechitpro.clusiz);
234  fillME(iLayerME->second.meAdcrphi,rechitpro.cluchg);
235  fillME(iLayerME->second.mePosxrphi,rechitpro.x);
236  fillME(iLayerME->second.meResolxrphi,rechitpro.resolxx);
237  fillME(iLayerME->second.meNsimHitrphi,rechitpro.NsimHit);
238  if (rechitpro.NsimHit > 0) {
239  std::map<std::string, SubDetMEs>::iterator iSubDetME = SubDetMEsMap.find(det_lay_pair.first);
240  fillME(iSubDetME->second.meBunchrphi, rechitpro.bunch);
241  if (rechitpro.bunch == 0) fillME(iSubDetME->second.meEventrphi, rechitpro.event);
242  }
243  if ( rechitpro.resx != -999999. || rechitpro.pullMF != -999999. || rechitpro.chi2 != -999999. ){
244  fillME(iLayerME->second.meResrphi,rechitpro.resx);
245  fillME(iLayerME->second.mePullLFrphi,rechitpro.resx/sqrt(rechitpro.resolxx));
246  fillME(iLayerME->second.mePullMFrphi,rechitpro.pullMF);
247  fillME(iLayerME->second.meChi2rphi,rechitpro.chi2);
248  }
249  }
250  }
251  }
252 
253  // start loops over detectors with detected rechitsstereo
254  for (auto const& theDetSet : *rechitsstereo) {
255  DetId detid = theDetSet.detId();
256  uint32_t myid= detid.rawId();
257  totrechitstereo += theDetSet.size();
258 
259  std::string label = hidmanager.getSubdetid(myid,tTopo,true);
260  std::map<std::string, StereoAndMatchedMEs>::iterator iStereoAndMatchedME = StereoAndMatchedMEsMap.find(label);
261  std::pair<std::string,int32_t> det_lay_pair = fold_organ.GetSubDetAndLayer(myid,tTopo,true);
262 
263  totnumrechitstereo[det_lay_pair.first] = totnumrechitstereo[det_lay_pair.first] + theDetSet.size();
264  //loop over rechits-stereo in the same subdetector
265  if(iStereoAndMatchedME != StereoAndMatchedMEsMap.end()){
266  for (auto const& rechit : theDetSet) {
267  const GeomDetUnit * det = tracker.idToDetUnit(detid);
268  const StripGeomDetUnit * stripdet=(const StripGeomDetUnit*)(det);
269  const StripTopology &topol=(StripTopology&)stripdet->topology();
270  //analyze RecHits
271  rechitanalysis(rechit,topol,associate);
272  // fill the result in a histogram
273  fillME(iStereoAndMatchedME->second.meWclusStereo,rechitpro.clusiz);
274  fillME(iStereoAndMatchedME->second.meAdcStereo,rechitpro.cluchg);
275  fillME(iStereoAndMatchedME->second.mePosxStereo,rechitpro.x);
276  fillME(iStereoAndMatchedME->second.meResolxStereo,sqrt(rechitpro.resolxx));
277  fillME(iStereoAndMatchedME->second.meNsimHitStereo,rechitpro.NsimHit);
278  if (rechitpro.NsimHit > 0) {
279  std::map<std::string, SubDetMEs>::iterator iSubDetME = SubDetMEsMap.find(det_lay_pair.first);
280  fillME(iSubDetME->second.meBunchStereo, rechitpro.bunch);
281  if (rechitpro.bunch == 0) fillME(iSubDetME->second.meEventStereo, rechitpro.event);
282  }
283  if ( rechitpro.resx != -999999. || rechitpro.pullMF != -999999. || rechitpro.chi2 != -999999. ){
284  fillME(iStereoAndMatchedME->second.meResStereo,rechitpro.resx);
285  fillME(iStereoAndMatchedME->second.mePullLFStereo,rechitpro.resx/sqrt(rechitpro.resolxx));
286  fillME(iStereoAndMatchedME->second.mePullMFStereo,rechitpro.pullMF);
287  fillME(iStereoAndMatchedME->second.meChi2Stereo,rechitpro.chi2);
288  }
289  }
290  }
291  }
292 
293  // start loops over detectors with detected rechitmatched
294  for (auto const & theDetSet : *rechitsmatched) {
295  DetId detid = theDetSet.detId();
296  uint32_t myid = detid.rawId();
297  totrechitmatched += theDetSet.size();
298 
299  std::string label = hidmanager.getSubdetid(myid,tTopo,true);
300  std::map<std::string, StereoAndMatchedMEs>::iterator iStereoAndMatchedME = StereoAndMatchedMEsMap.find(label);
301  std::pair<std::string,int32_t> det_lay_pair = fold_organ.GetSubDetAndLayer(myid,tTopo,true);
302 
303  totnumrechitmatched[det_lay_pair.first] = totnumrechitmatched[det_lay_pair.first] + theDetSet.size();
304  //loop over rechits-matched in the same subdetector
305  if(iStereoAndMatchedME != StereoAndMatchedMEsMap.end()){
306  for (auto const& rechit : theDetSet) {
307  const GluedGeomDet* gluedDet = (const GluedGeomDet*)tracker.idToDet(rechit.geographicalId());
308  //analyze RecHits
309  rechitanalysis_matched(rechit, gluedDet, associate);
310  // fill the result in a histogram
311  fillME(iStereoAndMatchedME->second.mePosxMatched,rechitpro.x);
312  fillME(iStereoAndMatchedME->second.mePosyMatched,rechitpro.y);
313  fillME(iStereoAndMatchedME->second.meResolxMatched,sqrt(rechitpro.resolxx));
314  fillME(iStereoAndMatchedME->second.meResolyMatched,sqrt(rechitpro.resolyy));
315  fillME(iStereoAndMatchedME->second.meNsimHitMatched,rechitpro.NsimHit);
316  if (rechitpro.NsimHit > 0) {
317  std::map<std::string, SubDetMEs>::iterator iSubDetME = SubDetMEsMap.find(det_lay_pair.first);
318  fillME(iSubDetME->second.meBunchMatched, rechitpro.bunch);
319  if (rechitpro.bunch == 0) fillME(iSubDetME->second.meEventMatched, rechitpro.event);
320  }
321  if ( rechitpro.resx != -999999. || rechitpro.resy != -999999. || rechitpro.chi2 != -999999. ){
322  fillME(iStereoAndMatchedME->second.meResxMatched,rechitpro.resx);
323  fillME(iStereoAndMatchedME->second.meResyMatched,rechitpro.resy);
324  fillME(iStereoAndMatchedME->second.meChi2Matched,rechitpro.chi2);
325  }
326  }
327  }
328  }//End of loops over detectors
329 
330  //now fill the cumulative histograms of the hits
331  for (std::vector<std::string>::iterator iSubdet = SubDetList_.begin(); iSubdet != SubDetList_.end(); ++iSubdet){
332  std::map<std::string, SubDetMEs>::iterator iSubDetME = SubDetMEsMap.find((*iSubdet));
333  fillME(iSubDetME->second.meNumrphi,totnumrechitrphi[(*iSubdet)]);
334  fillME(iSubDetME->second.meNumStereo,totnumrechitstereo[(*iSubdet)]);
335  fillME(iSubDetME->second.meNumMatched,totnumrechitmatched[(*iSubdet)]);
336  }
337 
338  fillME(totalMEs.meNumTotrphi,totrechitrphi);
339  fillME(totalMEs.meNumTotStereo,totrechitstereo);
340  fillME(totalMEs.meNumTotMatched,totrechitmatched);
341 }
RunNumber_t run() const
Definition: EventID.h:39
RecHitProperties rechitpro
EventNumber_t event() const
Definition: EventID.h:41
std::vector< std::string > SubDetList_
void rechitanalysis_matched(SiStripMatchedRecHit2D const rechit, const GluedGeomDet *gluedDet, TrackerHitAssociator &associate)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
TrackerHitAssociator::Config trackerHitAssociatorConfig_
std::map< std::string, SubDetMEs > SubDetMEsMap
void rechitanalysis(SiStripRecHit2D const rechit, const StripTopology &topol, TrackerHitAssociator &associate)
std::map< std::string, StereoAndMatchedMEs > StereoAndMatchedMEsMap
edm::EDGetTokenT< SiStripRecHit2DCollection > stereoRecHitsToken_
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
T sqrt(T t)
Definition: SSEVec.h:18
edm::EDGetTokenT< SiStripRecHit2DCollection > rphiRecHitsToken_
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
const Topology & topology() const override
Returns a reference to the strip proxy topology.
Definition: DetId.h:18
std::map< std::string, LayerMEs > LayerMEsMap
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=false)
edm::EventID id() const
Definition: EventBase.h:60
edm::EDGetTokenT< SiStripMatchedRecHit2DCollection > matchedRecHitsToken_
void fillME(MonitorElement *ME, float value1)
T const * product() const
Definition: ESHandle.h:86
void SiStripRecHitsValid::beginJob ( const edm::EventSetup es)
protected

Definition at line 178 of file SiStripRecHitsValid.cc.

178  {
179 }
void SiStripRecHitsValid::bookHistograms ( DQMStore::IBooker ibooker,
const edm::Run run,
const edm::EventSetup es 
)
overrideprotected

Definition at line 166 of file SiStripRecHitsValid.cc.

References createMEs(), edm::EventSetup::get(), and m_cacheID_.

166  {
167 
168  unsigned long long cacheID = es.get<SiStripDetCablingRcd>().cacheIdentifier();
169  if (m_cacheID_ != cacheID) {
170  m_cacheID_ = cacheID;
171  edm::LogInfo("SiStripRecHitsValid") <<"SiStripRecHitsValid::beginRun: "
172  << " Creating MEs for new Cabling ";
173 
174  createMEs(ibooker,es);
175  }
176 }
void createMEs(DQMStore::IBooker &ibooker, const edm::EventSetup &es)
const T & get() const
Definition: EventSetup.h:58
unsigned long long m_cacheID_
MonitorElement * SiStripRecHitsValid::bookME1D ( DQMStore::IBooker ibooker,
const char *  ParameterSetLabel,
const char *  HistoName,
const char *  HistoTitle 
)
inlineprivate

Definition at line 909 of file SiStripRecHitsValid.cc.

References DQMStore::IBooker::book1D(), conf_, DEFINE_FWK_MODULE, and edm::ParameterSet::getParameter().

Referenced by createLayerMEs(), createStereoAndMatchedMEs(), createSubDetMEs(), and createTotalMEs().

910 {
912  return ibooker.book1D(HistoName,HistoTitle,
913  parameters.getParameter<int32_t>("Nbinx"),
914  parameters.getParameter<double>("xmin"),
915  parameters.getParameter<double>("xmax")
916  );
917 }
T getParameter(std::string const &) const
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
std::string HistoName
edm::ParameterSet conf_
void SiStripRecHitsValid::createLayerMEs ( DQMStore::IBooker ibooker,
std::string  label 
)
private

Definition at line 659 of file SiStripRecHitsValid.cc.

References bookME1D(), SiStripHistoId::createHistoLayer(), diffTwoXMLs::label, LayerMEsMap, SiStripRecHitsValid::LayerMEs::meAdcrphi, SiStripRecHitsValid::LayerMEs::meChi2rphi, SiStripRecHitsValid::LayerMEs::meNsimHitrphi, SiStripRecHitsValid::LayerMEs::mePosxrphi, SiStripRecHitsValid::LayerMEs::mePullLFrphi, SiStripRecHitsValid::LayerMEs::mePullMFrphi, SiStripRecHitsValid::LayerMEs::meResolxrphi, SiStripRecHitsValid::LayerMEs::meResrphi, SiStripRecHitsValid::LayerMEs::meWclusrphi, MonitorElement::setAxisTitle(), switchAdcrphi, switchChi2rphi, switchNsimHitrphi, switchPosxrphi, switchPullLFrphi, switchPullMFrphi, switchResolxrphi, switchResrphi, and switchWclusrphi.

Referenced by createMEs().

660 {
661  SiStripHistoId hidmanager;
662  LayerMEs layerMEs;
663 
664  layerMEs.meWclusrphi = nullptr;
665  layerMEs.meAdcrphi = nullptr;
666  layerMEs.mePosxrphi = nullptr;
667  layerMEs.meResolxrphi = nullptr;
668  layerMEs.meResrphi = nullptr;
669  layerMEs.mePullLFrphi = nullptr;
670  layerMEs.mePullMFrphi = nullptr;
671  layerMEs.meChi2rphi = nullptr;
672  layerMEs.meNsimHitrphi = nullptr;
673 
674  //Wclusrphi
675  if(switchWclusrphi) {
676  layerMEs.meWclusrphi = bookME1D(ibooker,"TH1Wclusrphi", hidmanager.createHistoLayer("Wclus_rphi","layer",label,"").c_str() ,"Cluster Width - Number of strips that belong to the RecHit cluster");
677  layerMEs.meWclusrphi->setAxisTitle("Cluster Width [nr strips] in "+ label);
678  }
679  //Adcrphi
680  if(switchAdcrphi) {
681  layerMEs.meAdcrphi = bookME1D(ibooker,"TH1Adcrphi", hidmanager.createHistoLayer("Adc_rphi","layer",label,"").c_str() ,"RecHit Cluster Charge");
682  layerMEs.meAdcrphi->setAxisTitle("cluster charge [ADC] in " + label);
683  }
684  //Posxrphi
685  if(switchPosxrphi) {
686  layerMEs.mePosxrphi = bookME1D(ibooker,"TH1Posxrphi", hidmanager.createHistoLayer("Posx_rphi","layer",label,"").c_str() ,"RecHit x coord.");
687  layerMEs.mePosxrphi->setAxisTitle("x RecHit coord. (local frame) in " + label);
688  }
689  //Resolxrphi
690  if(switchResolxrphi) {
691  layerMEs.meResolxrphi = bookME1D(ibooker,"TH1Resolxrphi", hidmanager.createHistoLayer("Resolx_rphi","layer",label,"").c_str() ,"RecHit resol(x) coord."); //<resolor>~20micron
692  layerMEs.meResolxrphi->setAxisTitle("resol(x) RecHit coord. (local frame) in " + label);
693  }
694  //Resrphi
695  if(switchResrphi) {
696  layerMEs.meResrphi = bookME1D(ibooker,"TH1Resrphi", hidmanager.createHistoLayer("Res_rphi","layer",label,"").c_str() ,"Residuals of the hit x coordinate");
697  layerMEs.meResrphi->setAxisTitle("RecHit Res(x) in " + label);
698  }
699  //PullLFrphi
700  if(switchPullLFrphi) {
701  layerMEs.mePullLFrphi = bookME1D(ibooker,"TH1PullLFrphi", hidmanager.createHistoLayer("Pull_LF_rphi","layer",label,"").c_str() ,"Pull distribution");
702  layerMEs.mePullLFrphi->setAxisTitle("Pull distribution (local frame) in " + label);
703  }
704  //PullMFrphi
705  if(switchPullMFrphi) {
706  layerMEs.mePullMFrphi = bookME1D(ibooker,"TH1PullMFrphi", hidmanager.createHistoLayer("Pull_MF_rphi","layer",label,"").c_str() ,"Pull distribution");
707  layerMEs.mePullMFrphi->setAxisTitle("Pull distribution (measurement frame) in " + label);
708  }
709  //Chi2rphi
710  if(switchChi2rphi) {
711  layerMEs.meChi2rphi = bookME1D(ibooker,"TH1Chi2rphi", hidmanager.createHistoLayer("Chi2_rphi","layer",label,"").c_str() ,"RecHit Chi2 test");
712  layerMEs.meChi2rphi->setAxisTitle("RecHit Chi2 test in " + label);
713  }
714  //NsimHitrphi
715  if(switchNsimHitrphi) {
716  layerMEs.meNsimHitrphi = bookME1D(ibooker,"TH1NsimHitrphi", hidmanager.createHistoLayer("NsimHit_rphi","layer",label,"").c_str() ,"No. of assoc. simHits");
717  layerMEs.meNsimHitrphi->setAxisTitle("Number of assoc. simHits in " + label);
718  }
719 
720  LayerMEsMap[label]=layerMEs;
721 
722 }
MonitorElement * bookME1D(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName, const char *HistoTitle)
std::map< std::string, LayerMEs > LayerMEsMap
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void SiStripRecHitsValid::createMEs ( DQMStore::IBooker ibooker,
const edm::EventSetup es 
)
private

Definition at line 517 of file SiStripRecHitsValid.cc.

References funct::abs(), SiStripDetCabling::addActiveDetectorsRawIds(), createLayerMEs(), createStereoAndMatchedMEs(), createSubDetMEs(), createTotalMEs(), edm::EventSetup::get(), SiStripFolderOrganizer::GetSubDetAndLayer(), SiStripFolderOrganizer::getSubDetFolderAndTag(), SiStripHistoId::getSubdetid(), SiStripSubStructure::getTECDetectors(), SiStripSubStructure::getTIBDetectors(), SiStripSubStructure::getTIDDetectors(), SiStripSubStructure::getTOBDetectors(), diffTwoXMLs::label, LayerDetMap, LayerMEsMap, edm::ESHandle< T >::product(), DQMStore::IBooker::setCurrentFolder(), SiStripFolderOrganizer::setLayerFolder(), SiStripFolderOrganizer::setSiStripFolder(), SiStripFolderOrganizer::setSiStripFolderName(), SiStripDetCabling_, StereoAndMatchedDetMap, StereoAndMatchedMEsMap, AlCaHLTBitMon_QueryRunRegistry::string, SubDetMEsMap, TrackerTopology::tecIsStereo(), TrackerTopology::tibIsStereo(), TrackerTopology::tidIsStereo(), TrackerTopology::tobIsStereo(), and topFolderName_.

Referenced by bookHistograms().

517  {
518 
519  //Retrieve tracker topology from geometry
520  edm::ESHandle<TrackerTopology> tTopoHandle;
521  es.get<TrackerTopologyRcd>().get(tTopoHandle);
522  const TrackerTopology* const tTopo = tTopoHandle.product();
523 
524  // take from eventSetup the SiStripDetCabling object - here will use SiStripDetControl later on
526 
527  // get list of active detectors from SiStripDetCabling
528  std::vector<uint32_t> activeDets;
530 
531  SiStripFolderOrganizer folder_organizer;
532  // folder_organizer.setSiStripFolderName(topFolderName_);
533  std::string curfold = topFolderName_;
534  folder_organizer.setSiStripFolderName(curfold);
535  folder_organizer.setSiStripFolder();
536 
537  createTotalMEs(ibooker);
538  // loop over detectors and book MEs
539  edm::LogInfo("SiStripTkRecHits|SiStripRecHitsValid")<<"nr. of activeDets: "<<activeDets.size();
540  const std::string& tec = "TEC", tid = "TID", tob = "TOB", tib = "TIB";
541  for(auto detid_iterator=activeDets.begin(), detid_end=activeDets.end(); detid_iterator!=detid_end; ++detid_iterator){
542  uint32_t detid = (*detid_iterator);
543  // remove any eventual zero elements - there should be none, but just in case
544  if(detid == 0) {
545  activeDets.erase(detid_iterator);
546  continue;
547  }
548 
549  // Create Layer Level MEs
550  std::pair<std::string,int32_t> det_layer_pair = folder_organizer.GetSubDetAndLayer(detid,tTopo,true);
551  SiStripHistoId hidmanager;
552  std::string label = hidmanager.getSubdetid(detid,tTopo,true);
553 
554  if(LayerMEsMap.find(label)==LayerMEsMap.end()) {
555 
556  // get detids for the layer
557  // Keep in mind that when we are on the TID or TEC we deal with rings not wheel
558  int32_t lnumber = det_layer_pair.second;
559  const std::string& lname = det_layer_pair.first;
560  std::vector<uint32_t> layerDetIds;
561  if (lname == tec) {
562  if (lnumber > 0) {
563  SiStripSubStructure::getTECDetectors(activeDets,layerDetIds,tTopo,2,0,0,0,abs(lnumber),0);
564  } else if (lnumber < 0) {
565  SiStripSubStructure::getTECDetectors(activeDets,layerDetIds,tTopo,1,0,0,0,abs(lnumber),0);
566  }
567  } else if (lname == tid) {
568  if (lnumber > 0) {
569  SiStripSubStructure::getTIDDetectors(activeDets,layerDetIds,tTopo,2,0,abs(lnumber),0);
570  } else if (lnumber < 0) {
571  SiStripSubStructure::getTIDDetectors(activeDets,layerDetIds,tTopo,1,0,abs(lnumber),0);
572  }
573  } else if (lname == tob) {
574  SiStripSubStructure::getTOBDetectors(activeDets,layerDetIds,tTopo,lnumber,0,0);
575  } else if (lname == tib) {
576  SiStripSubStructure::getTIBDetectors(activeDets,layerDetIds,tTopo,lnumber,0,0,0);
577  }
578  LayerDetMap[label] = layerDetIds;
579 
580  // book Layer MEs
581  folder_organizer.setLayerFolder(detid,tTopo,det_layer_pair.second,true);
582  createLayerMEs(ibooker,label);
583  }
584  // book sub-detector plots
585  if (SubDetMEsMap.find(det_layer_pair.first) == SubDetMEsMap.end()){
586  auto sdet_pair = folder_organizer.getSubDetFolderAndTag(detid, tTopo);
587  ibooker.setCurrentFolder(sdet_pair.first);
588  createSubDetMEs(ibooker,det_layer_pair.first);
589  }
590  //Create StereoAndMatchedMEs
591  if(StereoAndMatchedMEsMap.find(label)==StereoAndMatchedMEsMap.end()) {
592 
593  // get detids for the stereo and matched layer. We are going to need a bool for these layers
594  bool isStereo = false;
595  // Keep in mind that when we are on the TID or TEC we deal with rings not wheel
596  std::vector<uint32_t> stereoandmatchedDetIds;
597  int32_t stereolnumber = det_layer_pair.second;
598  const std::string& stereolname = det_layer_pair.first;
599  if ( stereolname == tec && (tTopo->tecIsStereo(detid)) ) {
600  if ( stereolnumber > 0 ) {
601  SiStripSubStructure::getTECDetectors(activeDets,stereoandmatchedDetIds,tTopo,2,0,0,0,abs(stereolnumber),1);
602  isStereo = true;
603  } else if ( stereolnumber < 0 ) {
604  SiStripSubStructure::getTECDetectors(activeDets,stereoandmatchedDetIds,tTopo,1,0,0,0,abs(stereolnumber),1);
605  isStereo = true;
606  }
607  } else if ( stereolname == tid && (tTopo->tidIsStereo(detid)) ) {
608  if ( stereolnumber > 0 ) {
609  SiStripSubStructure::getTIDDetectors(activeDets,stereoandmatchedDetIds,tTopo,2,0,abs(stereolnumber),1);
610  isStereo = true;
611  } else if ( stereolnumber < 0 ) {
612  SiStripSubStructure::getTIDDetectors(activeDets,stereoandmatchedDetIds,tTopo,1,0,abs(stereolnumber),1);
613  isStereo = true;
614  }
615  } else if ( stereolname == tob && (tTopo->tobIsStereo(detid)) ) {
616  SiStripSubStructure::getTOBDetectors(activeDets,stereoandmatchedDetIds,tTopo,stereolnumber,0,0);
617  isStereo = true;
618  } else if ( stereolname == tib && (tTopo->tibIsStereo(detid)) ) {
619  SiStripSubStructure::getTIBDetectors(activeDets,stereoandmatchedDetIds,tTopo,stereolnumber,0,0,0);
620  isStereo = true;
621  }
622 
623  StereoAndMatchedDetMap[label] = stereoandmatchedDetIds;
624 
625  if(isStereo){
626  //book StereoAndMatched MEs
627  folder_organizer.setLayerFolder(detid,tTopo,det_layer_pair.second,true);
628  //Create the Monitor Elements only when we have a stereo module
629  createStereoAndMatchedMEs(ibooker,label);
630  }
631  }
632  }//end of loop over detectors
633 }
void getTIBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tibDetRawIds, const TrackerTopology *trackerTopology, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t int_ext=0, uint32_t string=0)
void createStereoAndMatchedMEs(DQMStore::IBooker &ibooker, std::string label)
void addActiveDetectorsRawIds(std::vector< uint32_t > &) const
void setSiStripFolderName(std::string name)
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
void createSubDetMEs(DQMStore::IBooker &ibooker, std::string label)
std::map< std::string, SubDetMEs > SubDetMEsMap
std::map< std::string, StereoAndMatchedMEs > StereoAndMatchedMEsMap
void getTIDDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tidDetRawIds, const TrackerTopology *trackerTopology, uint32_t side=0, uint32_t wheel=0, uint32_t ring=0, uint32_t ster=0)
void setLayerFolder(uint32_t rawdetid, const TrackerTopology *tTopo, int32_t layer=0, bool ring_flag=false)
void getTECDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tecDetRawIds, const TrackerTopology *trackerTopology, 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)
bool tidIsStereo(const DetId &id) const
bool tecIsStereo(const DetId &id) const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
std::map< std::string, LayerMEs > LayerMEsMap
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
std::map< std::string, std::vector< uint32_t > > StereoAndMatchedDetMap
const T & get() const
Definition: EventSetup.h:58
bool tibIsStereo(const DetId &id) const
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=false)
void createTotalMEs(DQMStore::IBooker &ibooker)
void createLayerMEs(DQMStore::IBooker &ibooker, std::string label)
void getTOBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tobDetRawIds, const TrackerTopology *trackerTopology, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t rod=0)
T const * product() const
Definition: ESHandle.h:86
void SiStripRecHitsValid::createStereoAndMatchedMEs ( DQMStore::IBooker ibooker,
std::string  label 
)
private

Definition at line 724 of file SiStripRecHitsValid.cc.

References bookME1D(), SiStripHistoId::createHistoLayer(), diffTwoXMLs::label, SiStripRecHitsValid::StereoAndMatchedMEs::meAdcStereo, SiStripRecHitsValid::StereoAndMatchedMEs::meChi2Matched, SiStripRecHitsValid::StereoAndMatchedMEs::meChi2Stereo, SiStripRecHitsValid::StereoAndMatchedMEs::meNsimHitMatched, SiStripRecHitsValid::StereoAndMatchedMEs::meNsimHitStereo, SiStripRecHitsValid::StereoAndMatchedMEs::mePosxMatched, SiStripRecHitsValid::StereoAndMatchedMEs::mePosxStereo, SiStripRecHitsValid::StereoAndMatchedMEs::mePosyMatched, SiStripRecHitsValid::StereoAndMatchedMEs::mePullLFStereo, SiStripRecHitsValid::StereoAndMatchedMEs::mePullMFStereo, SiStripRecHitsValid::StereoAndMatchedMEs::meResolxMatched, SiStripRecHitsValid::StereoAndMatchedMEs::meResolxStereo, SiStripRecHitsValid::StereoAndMatchedMEs::meResolyMatched, SiStripRecHitsValid::StereoAndMatchedMEs::meResStereo, SiStripRecHitsValid::StereoAndMatchedMEs::meResxMatched, SiStripRecHitsValid::StereoAndMatchedMEs::meResyMatched, SiStripRecHitsValid::StereoAndMatchedMEs::meWclusStereo, MonitorElement::setAxisTitle(), StereoAndMatchedMEsMap, switchAdcStereo, switchChi2Matched, switchChi2Stereo, switchNsimHitMatched, switchNsimHitStereo, switchPosxMatched, switchPosxStereo, switchPosyMatched, switchPullLFStereo, switchPullMFStereo, switchResolxMatched, switchResolxStereo, switchResolyMatched, switchResStereo, switchResxMatched, switchResyMatched, and switchWclusStereo.

Referenced by createMEs().

725 {
726  SiStripHistoId hidmanager;
727  StereoAndMatchedMEs stereoandmatchedMEs;
728 
729  stereoandmatchedMEs.meWclusStereo = nullptr;
730  stereoandmatchedMEs.meAdcStereo = nullptr;
731  stereoandmatchedMEs.mePosxStereo = nullptr;
732  stereoandmatchedMEs.meResolxStereo = nullptr;
733  stereoandmatchedMEs.meResStereo = nullptr;
734  stereoandmatchedMEs.mePullLFStereo = nullptr;
735  stereoandmatchedMEs.mePullMFStereo = nullptr;
736  stereoandmatchedMEs.meChi2Stereo = nullptr;
737  stereoandmatchedMEs.meNsimHitStereo = nullptr;
738  stereoandmatchedMEs.mePosxMatched = nullptr;
739  stereoandmatchedMEs.mePosyMatched = nullptr;
740  stereoandmatchedMEs.meResolxMatched = nullptr;
741  stereoandmatchedMEs.meResolyMatched = nullptr;
742  stereoandmatchedMEs.meResxMatched = nullptr;
743  stereoandmatchedMEs.meResyMatched = nullptr;
744  stereoandmatchedMEs.meChi2Matched = nullptr;
745  stereoandmatchedMEs.meNsimHitMatched = nullptr;
746 
747  //WclusStereo
748  if(switchWclusStereo) {
749  stereoandmatchedMEs.meWclusStereo = bookME1D(ibooker,"TH1WclusStereo", hidmanager.createHistoLayer("Wclus_stereo","layer",label,"").c_str() ,"Cluster Width - Number of strips that belong to the RecHit cluster");
750  stereoandmatchedMEs.meWclusStereo->setAxisTitle("Cluster Width [nr strips] in stereo modules in "+ label);
751  }
752  //AdcStereo
753  if(switchAdcStereo) {
754  stereoandmatchedMEs.meAdcStereo = bookME1D(ibooker,"TH1AdcStereo", hidmanager.createHistoLayer("Adc_stereo","layer",label,"").c_str() ,"RecHit Cluster Charge");
755  stereoandmatchedMEs.meAdcStereo->setAxisTitle("cluster charge [ADC] in stereo modules in " + label);
756  }
757  //PosxStereo
758  if(switchPosxStereo) {
759  stereoandmatchedMEs.mePosxStereo = bookME1D(ibooker,"TH1PosxStereo", hidmanager.createHistoLayer("Posx_stereo","layer",label,"").c_str() ,"RecHit x coord.");
760  stereoandmatchedMEs.mePosxStereo->setAxisTitle("x RecHit coord. (local frame) in stereo modules in " + label);
761  }
762  //ResolxStereo
763  if(switchResolxStereo) {
764  stereoandmatchedMEs.meResolxStereo = bookME1D(ibooker,"TH1ResolxStereo", hidmanager.createHistoLayer("Resolx_stereo","layer",label,"").c_str() ,"RecHit resol(x) coord.");
765  stereoandmatchedMEs.meResolxStereo->setAxisTitle("resol(x) RecHit coord. (local frame) in stereo modules in " + label);
766  }
767  //ResStereo
768  if(switchResStereo) {
769  stereoandmatchedMEs.meResStereo = bookME1D(ibooker,"TH1ResStereo", hidmanager.createHistoLayer("Res_stereo","layer",label,"").c_str() ,"Residuals of the hit x coordinate");
770  stereoandmatchedMEs.meResStereo->setAxisTitle("RecHit Res(x) in stereo modules in " + label);
771  }
772  //PullLFStereo
773  if(switchPullLFStereo) {
774  stereoandmatchedMEs.mePullLFStereo = bookME1D(ibooker,"TH1PullLFStereo", hidmanager.createHistoLayer("Pull_LF_stereo","layer",label,"").c_str() ,"Pull distribution");
775  stereoandmatchedMEs.mePullLFStereo->setAxisTitle("Pull distribution (local frame) in stereo modules in " + label);
776  }
777  //PullMFStereo
778  if(switchPullMFStereo) {
779  stereoandmatchedMEs.mePullMFStereo = bookME1D(ibooker,"TH1PullMFStereo", hidmanager.createHistoLayer("Pull_MF_stereo","layer",label,"").c_str() ,"Pull distribution");
780  stereoandmatchedMEs.mePullMFStereo->setAxisTitle("Pull distribution (measurement frame) in stereo modules in " + label);
781  }
782  //Chi2Stereo
783  if(switchChi2Stereo) {
784  stereoandmatchedMEs.meChi2Stereo = bookME1D(ibooker,"TH1Chi2Stereo", hidmanager.createHistoLayer("Chi2_stereo","layer",label,"").c_str() ,"RecHit Chi2 test");
785  stereoandmatchedMEs.meChi2Stereo->setAxisTitle("RecHit Chi2 test in stereo modules in " + label);
786  }
787  //NsimHitStereo
788  if(switchNsimHitStereo) {
789  stereoandmatchedMEs.meNsimHitStereo = bookME1D(ibooker,"TH1NsimHitStereo", hidmanager.createHistoLayer("NsimHit_stereo","layer",label,"").c_str() ,"No. of assoc. simHits");
790  stereoandmatchedMEs.meNsimHitStereo->setAxisTitle("Number of assoc. simHits in stereo modules in " + label);
791  }
792  //PosxMatched
793  if(switchPosxMatched) {
794  stereoandmatchedMEs.mePosxMatched = bookME1D(ibooker,"TH1PosxMatched", hidmanager.createHistoLayer("Posx_matched","layer",label,"").c_str() ,"RecHit x coord.");
795  stereoandmatchedMEs.mePosxMatched->setAxisTitle("x coord. matched RecHit (local frame) in " + label);
796  }
797  //PosyMatched
798  if(switchPosyMatched) {
799  stereoandmatchedMEs.mePosyMatched = bookME1D(ibooker,"TH1PosyMatched", hidmanager.createHistoLayer("Posy_matched","layer",label,"").c_str() ,"RecHit y coord.");
800  stereoandmatchedMEs.mePosyMatched->setAxisTitle("y coord. matched RecHit (local frame) in " + label);
801  }
802  //ResolxMatched
803  if(switchResolxMatched) {
804  stereoandmatchedMEs.meResolxMatched = bookME1D(ibooker,"TH1ResolxMatched", hidmanager.createHistoLayer("Resolx_matched","layer",label,"").c_str() ,"RecHit resol(x) coord.");
805  stereoandmatchedMEs.meResolxMatched->setAxisTitle("resol(x) coord. matched RecHit (local frame) in " + label);
806  }
807  //ResolyMatched
808  if(switchResolyMatched) {
809  stereoandmatchedMEs.meResolyMatched = bookME1D(ibooker,"TH1ResolyMatched", hidmanager.createHistoLayer("Resoly_matched","layer",label,"").c_str() ,"RecHit resol(y) coord.");
810  stereoandmatchedMEs.meResolyMatched->setAxisTitle("resol(y) coord. matched RecHit (local frame) in " + label);
811  }
812  //ResxMatched
813  if(switchResxMatched) {
814  stereoandmatchedMEs.meResxMatched = bookME1D(ibooker,"TH1ResxMatched", hidmanager.createHistoLayer("Resx_matched","layer",label,"").c_str() ,"Residuals of the hit x coord.");
815  stereoandmatchedMEs.meResxMatched->setAxisTitle("Res(x) in matched RecHit in " + label);
816  }
817  //ResyMatched
818  if(switchResyMatched) {
819  stereoandmatchedMEs.meResyMatched = bookME1D(ibooker,"TH1ResyMatched", hidmanager.createHistoLayer("Resy_matched","layer",label,"").c_str() ,"Residuals of the hit y coord.");
820  stereoandmatchedMEs.meResyMatched->setAxisTitle("Res(y) in matched RecHit in " + label);
821  }
822  //Chi2Matched
823  if(switchChi2Matched) {
824  stereoandmatchedMEs.meChi2Matched = bookME1D(ibooker,"TH1Chi2Matched", hidmanager.createHistoLayer("Chi2_matched","layer",label,"").c_str() ,"RecHit Chi2 test");
825  stereoandmatchedMEs.meChi2Matched->setAxisTitle("Matched RecHit Chi2 test in " + label);
826  }
827  //NsimHitMatched
829  stereoandmatchedMEs.meNsimHitMatched = bookME1D(ibooker,"TH1NsimHitMatched", hidmanager.createHistoLayer("NsimHit_matched","layer",label,"").c_str() ,"No. of assoc. simHits");
830  stereoandmatchedMEs.meNsimHitMatched->setAxisTitle("Number of assoc. simHits in " + label);
831  }
832 
833  StereoAndMatchedMEsMap[label]=stereoandmatchedMEs;
834 
835 }
std::map< std::string, StereoAndMatchedMEs > StereoAndMatchedMEsMap
MonitorElement * bookME1D(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName, const char *HistoTitle)
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void SiStripRecHitsValid::createSubDetMEs ( DQMStore::IBooker ibooker,
std::string  label 
)
private

Definition at line 837 of file SiStripRecHitsValid.cc.

References bookME1D(), diffTwoXMLs::label, SiStripRecHitsValid::SubDetMEs::meBunchMatched, SiStripRecHitsValid::SubDetMEs::meBunchrphi, SiStripRecHitsValid::SubDetMEs::meBunchStereo, SiStripRecHitsValid::SubDetMEs::meEventMatched, SiStripRecHitsValid::SubDetMEs::meEventrphi, SiStripRecHitsValid::SubDetMEs::meEventStereo, SiStripRecHitsValid::SubDetMEs::meNumMatched, SiStripRecHitsValid::SubDetMEs::meNumrphi, SiStripRecHitsValid::SubDetMEs::meNumStereo, MonitorElement::setAxisTitle(), AlCaHLTBitMon_QueryRunRegistry::string, SubDetMEsMap, switchBunchMatched, switchBunchrphi, switchBunchStereo, switchEventMatched, switchEventrphi, switchEventStereo, switchNumMatched, switchNumrphi, and switchNumStereo.

Referenced by createMEs().

837  {
838 
839  SubDetMEs subdetMEs;
840  subdetMEs.meNumrphi = nullptr;
841  subdetMEs.meBunchrphi = nullptr;
842  subdetMEs.meEventrphi = nullptr;
843  subdetMEs.meNumStereo = nullptr;
844  subdetMEs.meBunchStereo = nullptr;
845  subdetMEs.meEventStereo = nullptr;
846  subdetMEs.meNumMatched = nullptr;
847  subdetMEs.meBunchMatched = nullptr;
848  subdetMEs.meEventMatched = nullptr;
849 
851  //Numrphi
852  if (switchNumrphi){
853  HistoName = "TH1Numrphi__" + label;
854  subdetMEs.meNumrphi = bookME1D(ibooker,"TH1Numrphi",HistoName.c_str(),"Num of RecHits");
855  subdetMEs.meNumrphi->setAxisTitle("Total number of RecHits in "+ label);
856  }
857  //Bunchrphi
858  if(switchBunchrphi) {
859  HistoName = "TH1Bunchrphi__" + label;
860  subdetMEs.meBunchrphi = bookME1D(ibooker,"TH1Bunchrphi",HistoName.c_str(),"Bunch Crossing");
861  subdetMEs.meBunchrphi->setAxisTitle("Bunch crossing in " + label);
862  }
863  //Eventrphi
864  if(switchEventrphi) {
865  HistoName = "TH1Eventrphi__" + label;
866  subdetMEs.meEventrphi = bookME1D(ibooker,"TH1Eventrphi",HistoName.c_str(),"Event (in-time bunch)");
867  subdetMEs.meEventrphi->setAxisTitle("Event (in-time bunch) in " + label);
868  }
869  //NumStereo
870  if (switchNumStereo){
871  HistoName = "TH1NumStereo__" + label;
872  subdetMEs.meNumStereo = bookME1D(ibooker,"TH1NumStereo",HistoName.c_str(),"Num of RecHits in stereo modules");
873  subdetMEs.meNumStereo->setAxisTitle("Total number of RecHits, stereo modules in "+ label);
874  }
875  //BunchStereo
876  if(switchBunchStereo) {
877  HistoName = "TH1BunchStereo__" + label;
878  subdetMEs.meBunchStereo = bookME1D(ibooker,"TH1BunchStereo",HistoName.c_str(),"Bunch Crossing");
879  subdetMEs.meBunchStereo->setAxisTitle("Bunch crossing, stereo modules in " + label);
880  }
881  //EventStereo
882  if(switchEventStereo) {
883  HistoName = "TH1EventStereo__" + label;
884  subdetMEs.meEventStereo = bookME1D(ibooker,"TH1EventStereo",HistoName.c_str(),"Event (in-time bunch)");
885  subdetMEs.meEventStereo->setAxisTitle("Event (in-time bunch), stereo modules in " + label);
886  }
887  //NumMatched
888  if (switchNumMatched){
889  HistoName = "TH1NumMatched__" + label;
890  subdetMEs.meNumMatched = bookME1D(ibooker,"TH1NumMatched",HistoName.c_str(),"Num of matched RecHits" );
891  subdetMEs.meNumMatched->setAxisTitle("Total number of matched RecHits in "+ label);
892  }
893  //BunchMatched
894  if(switchBunchMatched) {
895  HistoName = "TH1BunchMatched__" + label;
896  subdetMEs.meBunchMatched = bookME1D(ibooker,"TH1BunchMatched",HistoName.c_str(),"Bunch Crossing");
897  subdetMEs.meBunchMatched->setAxisTitle("Bunch crossing, matched RecHits in " + label);
898  }
899  //EventMatched
900  if(switchEventMatched) {
901  HistoName = "TH1EventMatched__" + label;
902  subdetMEs.meEventMatched = bookME1D(ibooker,"TH1EventMatched",HistoName.c_str(),"Event (in-time bunch)");
903  subdetMEs.meEventMatched->setAxisTitle("Event (in-time bunch), matched RecHits in " + label);
904  }
905 
906  SubDetMEsMap[label]=subdetMEs;
907 }
std::map< std::string, SubDetMEs > SubDetMEsMap
MonitorElement * bookME1D(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName, const char *HistoTitle)
std::string HistoName
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void SiStripRecHitsValid::createTotalMEs ( DQMStore::IBooker ibooker)
private

Definition at line 635 of file SiStripRecHitsValid.cc.

References bookME1D(), SiStripRecHitsValid::TotalMEs::meNumTotMatched, SiStripRecHitsValid::TotalMEs::meNumTotrphi, SiStripRecHitsValid::TotalMEs::meNumTotStereo, MonitorElement::setAxisTitle(), switchNumTotMatched, switchNumTotrphi, switchNumTotStereo, and totalMEs.

Referenced by createMEs().

636 {
637  totalMEs.meNumTotrphi = nullptr;
638  totalMEs.meNumTotStereo = nullptr;
639  totalMEs.meNumTotMatched = nullptr;
640 
641  //NumTotrphi
642  if(switchNumTotrphi) {
643  totalMEs.meNumTotrphi = bookME1D(ibooker,"TH1NumTotrphi", "TH1NumTotrphi" ,"Num of RecHits rphi");
644  totalMEs.meNumTotrphi->setAxisTitle("Total number of RecHits");
645  }
646  //NumTotStereo
647  if(switchNumTotStereo) {
648  totalMEs.meNumTotStereo = bookME1D(ibooker,"TH1NumTotStereo", "TH1NumTotStereo","Num of RecHits stereo");
649  totalMEs.meNumTotStereo ->setAxisTitle("Total number of RecHits (stereo)");
650  }
651  //NumTotMatched
652  if(switchNumTotMatched) {
653  totalMEs.meNumTotMatched = bookME1D(ibooker,"TH1NumTotMatched","TH1NumTotMatched","Num of RecHits matched");
654  totalMEs.meNumTotMatched->setAxisTitle("Total number of matched RecHits");
655  }
656 
657 }
MonitorElement * bookME1D(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName, const char *HistoTitle)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void SiStripRecHitsValid::fillME ( MonitorElement ME,
float  value1 
)
inlineprivate

Definition at line 201 of file SiStripRecHitsValid.h.

References MonitorElement::Fill().

Referenced by analyze().

201 {if (ME!=nullptr)ME->Fill(value1);}
void Fill(long long x)
void SiStripRecHitsValid::fillME ( MonitorElement ME,
float  value1,
float  value2 
)
inlineprivate

Definition at line 202 of file SiStripRecHitsValid.h.

References MonitorElement::Fill().

void SiStripRecHitsValid::fillME ( MonitorElement ME,
float  value1,
float  value2,
float  value3 
)
inlineprivate

Definition at line 203 of file SiStripRecHitsValid.h.

References MonitorElement::Fill().

void SiStripRecHitsValid::fillME ( MonitorElement ME,
float  value1,
float  value2,
float  value3,
float  value4 
)
inlineprivate

Definition at line 204 of file SiStripRecHitsValid.h.

References MonitorElement::Fill().

204 {if (ME!=nullptr)ME->Fill(value1,value2,value3,value4);}
void Fill(long long x)
std::pair< LocalPoint, LocalVector > SiStripRecHitsValid::projectHit ( const PSimHit hit,
const StripGeomDetUnit stripDet,
const BoundPlane plane 
)
private

Definition at line 345 of file SiStripRecHitsValid.cc.

References funct::cos(), dir, PSimHit::localDirection(), PSimHit::localPosition(), Scenarios_cff::scale, funct::sin(), StripGeomDetUnit::specificTopology(), StripTopology::strip(), StripTopology::stripAngle(), GeomDet::surface(), Surface::toGlobal(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by rechitanalysis_matched().

347 {
348  // const StripGeomDetUnit* stripDet = dynamic_cast<const StripGeomDetUnit*>(hit.det());
349  //if (stripDet == nullptr) throw MeasurementDetException("HitMatcher hit is not on StripGeomDetUnit");
350 
351  const StripTopology& topol = stripDet->specificTopology();
352  GlobalPoint globalpos= stripDet->surface().toGlobal(hit.localPosition());
353  LocalPoint localHit = plane.toLocal(globalpos);
354  //track direction
355  LocalVector locdir=hit.localDirection();
356  //rotate track in new frame
357 
358  GlobalVector globaldir= stripDet->surface().toGlobal(locdir);
359  LocalVector dir=plane.toLocal(globaldir);
360  double scale = -localHit.z() / dir.z();
361 
362  LocalPoint projectedPos = localHit + scale*dir;
363 
364  double selfAngle = topol.stripAngle( topol.strip( hit.localPosition()));
365 
366  LocalVector stripDir( sin(selfAngle), cos(selfAngle), 0); // vector along strip in hit frame
367 
368  LocalVector localStripDir( plane.toLocal(stripDet->surface().toGlobal( stripDir)));
369 
370  return std::pair<LocalPoint,LocalVector>( projectedPos, localStripDir);
371 }
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:106
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
virtual float strip(const LocalPoint &) const =0
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
Local3DPoint localPosition() const
Definition: PSimHit.h:44
virtual float stripAngle(float strip) const =0
T z() const
Definition: PV3DBase.h:64
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
LocalVector localDirection() const
Obsolete. Same as momentumAtEntry().unit(), for backward compatibility.
Definition: PSimHit.h:52
dbl *** dir
Definition: mlp_gen.cc:35
void SiStripRecHitsValid::rechitanalysis ( SiStripRecHit2D const  rechit,
const StripTopology topol,
TrackerHitAssociator associate 
)
private

Definition at line 373 of file SiStripRecHitsValid.cc.

References TrackerHitAssociator::associateHit(), SiStripRecHitsValid::RecHitProperties::bunch, EncodedEventId::bunchCrossing(), SiStripRecHitsValid::RecHitProperties::chi2, SiStripRecHitsValid::RecHitProperties::cluchg, SiStripRecHitsValid::RecHitProperties::clusiz, SiStripRecHit2D::cluster(), relativeConstraints::error, EncodedEventId::event(), SiStripRecHitsValid::RecHitProperties::event, PSimHit::eventId(), PSimHit::localPosition(), BaseTrackerRecHit::localPosition(), BaseTrackerRecHit::localPositionError(), funct::m, electrons_cff::matched, SiStripPI::max, Topology::measurementError(), Topology::measurementPosition(), SiStripRecHitsValid::RecHitProperties::NsimHit, position, SiStripRecHitsValid::RecHitProperties::pullMF, dttmaxenums::R, alignCSCRings::r, rechitpro, SiStripRecHitsValid::RecHitProperties::resolxx, SiStripRecHitsValid::RecHitProperties::resolyy, SiStripRecHitsValid::RecHitProperties::resx, SiStripRecHitsValid::RecHitProperties::resy, mathSSE::sqrt(), MeasurementError::uu(), PV2DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::x(), SiStripRecHitsValid::RecHitProperties::x, LocalError::xx(), LocalError::xy(), PV3DBase< T, PVType, FrameType >::y(), SiStripRecHitsValid::RecHitProperties::y, and LocalError::yy().

Referenced by analyze().

373  {
374 
375  rechitpro.resx = -999999.; rechitpro.resy = -999999.; rechitpro.pullMF = -999999.;
376  rechitpro.chi2 = -999999.; rechitpro.bunch = -999999.; rechitpro.event = -999999.;
377 
378  LocalPoint position=rechit.localPosition();
379  LocalError error=rechit.localPositionError();
380  MeasurementPoint Mposition = topol.measurementPosition(position);
381  MeasurementError Merror = topol.measurementError(position,error);
382  const auto & amplitudes=(rechit.cluster())->amplitudes();
383  int totcharge=0;
384  for(auto ia : amplitudes){
385  totcharge += ia;
386  }
387  rechitpro.x = position.x();
388  rechitpro.y = position.y();
389  //rechitpro.z = position.z();
390  rechitpro.resolxx = error.xx();
391  //rechitpro.resolxy = error.xy();
392  rechitpro.resolyy = error.yy();
393  rechitpro.clusiz = amplitudes.size();
394  rechitpro.cluchg = totcharge;
395 
396  auto const & matched = associate.associateHit(rechit);
397  rechitpro.NsimHit = matched.size();
398 
399  if(!matched.empty()){
400 
401  float mindist = std::numeric_limits<float>::max();
402  float dist = std::numeric_limits<float>::max();
403  PSimHit const * closest = nullptr;
404 
405  for(auto const &m : matched){
406  dist = fabs(rechitpro.x - m.localPosition().x());
407  if(dist<mindist){
408  mindist = dist;
409  closest = &m;
410  }
411  }
412  rechitpro.bunch = closest->eventId().bunchCrossing();
413  rechitpro.event = closest->eventId().event();
414  rechitpro.resx = rechitpro.x - closest->localPosition().x();
415  rechitpro.pullMF = (Mposition.x() - (topol.measurementPosition(closest->localPosition())).x())/sqrt(Merror.uu());
416 
417  //chi2test compare rechit errors with the simhit position ( using null matrix for the simhit).
418  //Can spot problems in the geometry better than a simple residual. (thanks to BorisM)
419  AlgebraicVector rhparameters(2);//= rechit.parameters();
420  rhparameters[0] = position.x();
421  rhparameters[1] = position.y();
422  AlgebraicVector shparameters(2);
423  shparameters[0] = closest->localPosition().x();
424  shparameters[1] = closest->localPosition().y();
425  AlgebraicVector r(rhparameters - shparameters);
426  AlgebraicSymMatrix R(2);// = rechit.parametersError();
427  R[0][0] = error.xx();
428  R[0][1] = error.xy();
429  R[1][1] = error.yy();
430  int ierr;
431  R.invert(ierr); // if (ierr != 0) throw exception;
432  float est = R.similarity(r);
433  rechitpro.chi2 = est;
434  }
435 
436 }
RecHitProperties rechitpro
float xx() const
Definition: LocalError.h:24
int event() const
get the contents of the subdetector field (should be protected?)
T y() const
Definition: PV3DBase.h:63
float xy() const
Definition: LocalError.h:25
float yy() const
Definition: LocalError.h:26
Local3DPoint localPosition() const
Definition: PSimHit.h:44
T sqrt(T t)
Definition: SSEVec.h:18
int bunchCrossing() const
get the detector field from this detid
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
float uu() const
EncodedEventId eventId() const
Definition: PSimHit.h:105
CLHEP::HepVector AlgebraicVector
static int position[264][3]
Definition: ReadPGInfo.cc:509
CLHEP::HepSymMatrix AlgebraicSymMatrix
std::vector< PSimHit > associateHit(const TrackingRecHit &thit) const
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const =0
T x() const
Definition: PV2DBase.h:45
T x() const
Definition: PV3DBase.h:62
void SiStripRecHitsValid::rechitanalysis_matched ( SiStripMatchedRecHit2D const  rechit,
const GluedGeomDet gluedDet,
TrackerHitAssociator associate 
)
private

Definition at line 440 of file SiStripRecHitsValid.cc.

References TrackerHitAssociator::associateHit(), SiStripRecHitsValid::RecHitProperties::bunch, EncodedEventId::bunchCrossing(), SiStripRecHitsValid::RecHitProperties::chi2, SiStripRecHitsValid::RecHitProperties::cluchg, SiStripRecHitsValid::RecHitProperties::clusiz, relativeConstraints::error, EncodedEventId::event(), SiStripRecHitsValid::RecHitProperties::event, PSimHit::eventId(), BaseTrackerRecHit::localPosition(), BaseTrackerRecHit::localPositionError(), funct::m, electrons_cff::matched, SiStripPI::max, SiStripRecHitsValid::RecHitProperties::NsimHit, position, projectHit(), SiStripRecHitsValid::RecHitProperties::pullMF, dttmaxenums::R, alignCSCRings::r, rechitpro, SiStripRecHitsValid::RecHitProperties::resolxx, SiStripRecHitsValid::RecHitProperties::resolyy, SiStripRecHitsValid::RecHitProperties::resx, SiStripRecHitsValid::RecHitProperties::resy, mathSSE::sqrt(), GluedGeomDet::stereoDet(), GeomDet::surface(), PV3DBase< T, PVType, FrameType >::x(), SiStripRecHitsValid::RecHitProperties::x, LocalError::xx(), LocalError::xy(), PV3DBase< T, PVType, FrameType >::y(), SiStripRecHitsValid::RecHitProperties::y, and LocalError::yy().

Referenced by analyze().

440  {
441 
442  rechitpro.resx = -999999.; rechitpro.resy = -999999.; rechitpro.pullMF = -999999.;
443  rechitpro.chi2 = -999999.; rechitpro.bunch = -999999.; rechitpro.event = -999999.;
444  rechitpro.clusiz = -999999.; rechitpro.cluchg = -999999.;
445 
446  LocalPoint position=rechit.localPosition();
447  LocalError error=rechit.localPositionError();
448 
449  rechitpro.x = position.x();
450  rechitpro.y = position.y();
451  //rechitpro.z = position.z();
452  rechitpro.resolxx = error.xx();
453  //rechitpro.resolxy = error.xy();
454  rechitpro.resolyy = error.yy();
455 
456  auto const & matched = associate.associateHit(rechit);
457  rechitpro.NsimHit = matched.size();
458 
459  if(matched.empty()) return;
460  float mindist = std::numeric_limits<float>::max();
461  float dist = std::numeric_limits<float>::max();
462  float dist2 = std::numeric_limits<float>::max();
463  float distx = std::numeric_limits<float>::max();
464  float disty = std::numeric_limits<float>::max();
465  PSimHit const * closest = nullptr;
466  std::pair<LocalPoint,LocalVector> closestPair;
467 
468  const StripGeomDetUnit* partnerstripdet =(StripGeomDetUnit*) gluedDet->stereoDet();
469  std::pair<LocalPoint,LocalVector> hitPair;
470 
471  for(auto const &m : matched){
472  SiStripDetId hitDetId(m.detUnitId());
473  if (hitDetId.stereo()) { // project from the stereo sensor
474  //project simhit;
475  hitPair= projectHit(m,partnerstripdet,gluedDet->surface());
476  distx = rechitpro.x - hitPair.first.x();
477  disty = rechitpro.y - hitPair.first.y();
478  dist2 = distx*distx+disty*disty;
479  dist = sqrt(dist2);
480  if(dist<mindist){
481  mindist = dist;
482  closestPair = hitPair;
483  closest = &m;
484  }
485  }
486  }
487  if (!closest) return;
488  rechitpro.bunch = closest->eventId().bunchCrossing();
489  rechitpro.event = closest->eventId().event();
490  rechitpro.resx = rechitpro.x - closestPair.first.x();
491  rechitpro.resy = rechitpro.y - closestPair.first.y();
492 
493  //chi2test compare rechit errors with the simhit position ( using null matrix for the simhit).
494  //Can spot problems in the geometry better than a simple residual. (thanks to BorisM)
495  AlgebraicVector rhparameters(2);//= rechit.parameters();
496  rhparameters[0] = position.x();
497  rhparameters[1] = position.y();
498  LocalPoint sh = closestPair.first;
499  AlgebraicVector shparameters(2);
500  shparameters[0] = sh.x();
501  shparameters[1] = sh.y();
502  AlgebraicVector r(rhparameters - shparameters);
503  AlgebraicSymMatrix R(2);// = rechit.parametersError();
504  R[0][0] = error.xx();
505  R[0][1] = error.xy();
506  R[1][1] = error.yy();
507  int ierr;
508  R.invert(ierr); // if (ierr != 0) throw exception;
509  float est = R.similarity(r);
510  rechitpro.chi2 = est;
511 
512 
513 
514 }
RecHitProperties rechitpro
float xx() const
Definition: LocalError.h:24
int event() const
get the contents of the subdetector field (should be protected?)
T y() const
Definition: PV3DBase.h:63
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
float xy() const
Definition: LocalError.h:25
float yy() const
Definition: LocalError.h:26
T sqrt(T t)
Definition: SSEVec.h:18
int bunchCrossing() const
get the detector field from this detid
EncodedEventId eventId() const
Definition: PSimHit.h:105
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:17
CLHEP::HepVector AlgebraicVector
std::pair< LocalPoint, LocalVector > projectHit(const PSimHit &hit, const StripGeomDetUnit *stripDet, const BoundPlane &plane)
static int position[264][3]
Definition: ReadPGInfo.cc:509
CLHEP::HepSymMatrix AlgebraicSymMatrix
std::vector< PSimHit > associateHit(const TrackingRecHit &thit) const
T x() const
Definition: PV3DBase.h:62
const GeomDetUnit * stereoDet() const
Definition: GluedGeomDet.h:21

Member Data Documentation

edm::ParameterSet SiStripRecHitsValid::conf_
private

Definition at line 206 of file SiStripRecHitsValid.h.

Referenced by bookME1D(), and SiStripRecHitsValid().

std::map<std::string, std::vector< uint32_t > > SiStripRecHitsValid::LayerDetMap
private

Definition at line 186 of file SiStripRecHitsValid.h.

Referenced by createMEs().

std::map<std::string, LayerMEs> SiStripRecHitsValid::LayerMEsMap
private

Definition at line 183 of file SiStripRecHitsValid.h.

Referenced by analyze(), createLayerMEs(), and createMEs().

unsigned long long SiStripRecHitsValid::m_cacheID_
private

Definition at line 208 of file SiStripRecHitsValid.h.

Referenced by bookHistograms().

edm::EDGetTokenT<SiStripMatchedRecHit2DCollection> SiStripRecHitsValid::matchedRecHitsToken_
private

Definition at line 221 of file SiStripRecHitsValid.h.

Referenced by analyze(), and SiStripRecHitsValid().

RecHitProperties SiStripRecHitsValid::rechitpro
private

Definition at line 216 of file SiStripRecHitsValid.h.

Referenced by analyze(), rechitanalysis(), and rechitanalysis_matched().

edm::EDGetTokenT<SiStripRecHit2DCollection> SiStripRecHitsValid::rphiRecHitsToken_
private

Definition at line 222 of file SiStripRecHitsValid.h.

Referenced by analyze(), and SiStripRecHitsValid().

edm::ESHandle<SiStripDetCabling> SiStripRecHitsValid::SiStripDetCabling_
private

Definition at line 189 of file SiStripRecHitsValid.h.

Referenced by createMEs().

std::map<std::string, std::vector< uint32_t > > SiStripRecHitsValid::StereoAndMatchedDetMap
private

Definition at line 187 of file SiStripRecHitsValid.h.

Referenced by createMEs().

std::map<std::string, StereoAndMatchedMEs> SiStripRecHitsValid::StereoAndMatchedMEsMap
private

Definition at line 184 of file SiStripRecHitsValid.h.

Referenced by analyze(), createMEs(), and createStereoAndMatchedMEs().

edm::EDGetTokenT<SiStripRecHit2DCollection> SiStripRecHitsValid::stereoRecHitsToken_
private

Definition at line 223 of file SiStripRecHitsValid.h.

Referenced by analyze(), and SiStripRecHitsValid().

std::vector<std::string> SiStripRecHitsValid::SubDetList_
private

Definition at line 181 of file SiStripRecHitsValid.h.

Referenced by analyze(), and SiStripRecHitsValid().

std::map<std::string, SubDetMEs> SiStripRecHitsValid::SubDetMEsMap
private

Definition at line 185 of file SiStripRecHitsValid.h.

Referenced by analyze(), createMEs(), and createSubDetMEs().

bool SiStripRecHitsValid::switchAdcrphi
private

Definition at line 154 of file SiStripRecHitsValid.h.

Referenced by createLayerMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchAdcStereo
private

Definition at line 163 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchBunchMatched
private

Definition at line 149 of file SiStripRecHitsValid.h.

Referenced by createSubDetMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchBunchrphi
private

Definition at line 143 of file SiStripRecHitsValid.h.

Referenced by createSubDetMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchBunchStereo
private

Definition at line 146 of file SiStripRecHitsValid.h.

Referenced by createSubDetMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchChi2Matched
private

Definition at line 177 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchChi2rphi
private

Definition at line 160 of file SiStripRecHitsValid.h.

Referenced by createLayerMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchChi2Stereo
private

Definition at line 169 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchEventMatched
private

Definition at line 150 of file SiStripRecHitsValid.h.

Referenced by createSubDetMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchEventrphi
private

Definition at line 144 of file SiStripRecHitsValid.h.

Referenced by createSubDetMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchEventStereo
private

Definition at line 147 of file SiStripRecHitsValid.h.

Referenced by createSubDetMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchNsimHitMatched
private

Definition at line 178 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchNsimHitrphi
private

Definition at line 161 of file SiStripRecHitsValid.h.

Referenced by createLayerMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchNsimHitStereo
private

Definition at line 170 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchNumMatched
private

Definition at line 148 of file SiStripRecHitsValid.h.

Referenced by createSubDetMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchNumrphi
private

Definition at line 142 of file SiStripRecHitsValid.h.

Referenced by createSubDetMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchNumStereo
private

Definition at line 145 of file SiStripRecHitsValid.h.

Referenced by createSubDetMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchNumTotMatched
private

Definition at line 139 of file SiStripRecHitsValid.h.

Referenced by createTotalMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchNumTotrphi
private

Definition at line 137 of file SiStripRecHitsValid.h.

Referenced by createTotalMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchNumTotStereo
private

Definition at line 138 of file SiStripRecHitsValid.h.

Referenced by createTotalMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchPosxMatched
private

Definition at line 171 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchPosxrphi
private

Definition at line 155 of file SiStripRecHitsValid.h.

Referenced by createLayerMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchPosxStereo
private

Definition at line 164 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchPosyMatched
private

Definition at line 172 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchPullLFrphi
private

Definition at line 158 of file SiStripRecHitsValid.h.

Referenced by createLayerMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchPullLFStereo
private

Definition at line 167 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchPullMFrphi
private

Definition at line 159 of file SiStripRecHitsValid.h.

Referenced by createLayerMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchPullMFStereo
private

Definition at line 168 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchResolxMatched
private

Definition at line 173 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchResolxrphi
private

Definition at line 156 of file SiStripRecHitsValid.h.

Referenced by createLayerMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchResolxStereo
private

Definition at line 165 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchResolyMatched
private

Definition at line 174 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchResrphi
private

Definition at line 157 of file SiStripRecHitsValid.h.

Referenced by createLayerMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchResStereo
private

Definition at line 166 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchResxMatched
private

Definition at line 175 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchResyMatched
private

Definition at line 176 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchWclusrphi
private

Definition at line 153 of file SiStripRecHitsValid.h.

Referenced by createLayerMEs(), and SiStripRecHitsValid().

bool SiStripRecHitsValid::switchWclusStereo
private

Definition at line 162 of file SiStripRecHitsValid.h.

Referenced by createStereoAndMatchedMEs(), and SiStripRecHitsValid().

std::string SiStripRecHitsValid::topFolderName_
private

Definition at line 180 of file SiStripRecHitsValid.h.

Referenced by createMEs(), and SiStripRecHitsValid().

TotalMEs SiStripRecHitsValid::totalMEs
private

Definition at line 135 of file SiStripRecHitsValid.h.

Referenced by analyze(), and createTotalMEs().

TrackerHitAssociator::Config SiStripRecHitsValid::trackerHitAssociatorConfig_
private

Definition at line 207 of file SiStripRecHitsValid.h.

Referenced by analyze().