|
|
Go to the documentation of this file.
14 theNRecHitsPlot = iBooker.
book1D(
"CSCRecHitsPerSegment",
"Number of CSC rec hits per segment", 8, 0, 7);
16 iBooker.
book1D(
"CSCSegmentsPerChamberType",
"Number of CSC segments per chamber type", 11, 0, 10);
29 for (
int i = 0;
i < 10; ++
i) {
30 char title1[200], title2[200], title3[200], title4[200], title5[200], title6[200], title7[200], title8[200];
31 sprintf(title1,
"CSCSegmentRdPhiResolution%d",
i + 1);
32 sprintf(title2,
"CSCSegmentRdPhiPull%d",
i + 1);
33 sprintf(title3,
"CSCSegmentThetaResolution%d",
i + 1);
34 sprintf(title4,
"CSCSegmentThetaPull%d",
i + 1);
35 sprintf(title5,
"CSCSegmentdXdZResolution%d",
i + 1);
36 sprintf(title6,
"CSCSegmentdXdZPull%d",
i + 1);
37 sprintf(title7,
"CSCSegmentdYdZResolution%d",
i + 1);
38 sprintf(title8,
"CSCSegmentdYdZPull%d",
i + 1);
58 unsigned nPerEvent = 0;
62 int detId = segmentItr->geographicalId().rawId();
88 int chamberId = mapItr->first;
89 int nHitsInChamber = mapItr->second.size();
94 std::vector<int>
v = mapItr->second;
95 std::sort(
v.begin(),
v.end());
98 int nLayersHit =
v.size();
100 if (nLayersHit == 4) {
114 if (nLayersHit == 5) {
128 if (nLayersHit == 6) {
162 double dphi = segmentPos.
phi() - simHitPos.
phi();
163 double rdphi = segmentPos.
perp() * dphi;
164 double dtheta = segmentPos.
theta() - simHitPos.
theta();
169 double ddxdz = segmentDir.
x() / segmentDir.
z() - simHitDir.
x() / simHitDir.
z();
170 double ddydz = segmentDir.
y() / segmentDir.
z() - simHitDir.
y() / simHitDir.
z();
188 for (std::vector<int>::const_iterator layerItr = layersHit.begin(), layersHitEnd = layersHit.end();
189 layerItr != layersHitEnd;
207 int layerId = chamberId + 3;
210 if (!layerHits.empty()) {
212 edm::PSimHitContainer::const_iterator hitItr =
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * theTypePlot5HitsNoShowerSeg
void fillEfficiencyPlots()
T const * product() const
void plotResolution(const PSimHit &simHit, const CSCSegment &recHit, const CSCLayer *layer, int chamberType)
void bookHistograms(DQMStore::IBooker &)
MonitorElement * theTypePlot6HitsNoShowerSeg
Geom::Theta< T > theta() const
const PSimHit * keyHit(int chamberId) const
MonitorElement * theTypePlot5HitsShower
MonitorElement * thedYdZResolutionPlots[10]
MonitorElement * theRdPhiPullPlots[10]
MonitorElement * theNPerChamberTypePlot
~CSCSegmentValidation() override
edm::EDGetTokenT< CSCSegmentCollection > segments_Token_
MonitorElement * theRdPhiResolutionPlots[10]
ChamberHitMap theLayerHitsPerChamber
CSCSegmentValidation(const edm::InputTag &inputTag, edm::ConsumesCollector &&iC)
MonitorElement * theTypePlot5HitsNoShower
bool hasSegment(int chamberId) const
MonitorElement * theTypePlot4HitsShower
const CSCLayer * findLayer(int detId) const
MonitorElement * theNPerEventPlot
MonitorElement * theNRecHitsPlot
MonitorElement * theTypePlot4HitsNoShower
const PSimHitMap * theSimHitMap
MonitorElement * theTypePlot6HitsNoShower
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
std::vector< int > detsWithHits() const
C::const_iterator const_iterator
constant access iterator type
MonitorElement * theThetaPullPlots[10]
LocalVector localDirection() const override
Local direction.
LocalError localDirectionError() const override
Error on the local direction.
static int whatChamberType(int detId)
MonitorElement * theTypePlot6HitsShower
void fillLayerHitsPerChamber()
MonitorElement * thedXdZPullPlots[10]
CSCDetId chamberId() const
MonitorElement * theTypePlot4HitsNoShowerSeg
static int whatChamberType(int istation, int iring)
constexpr uint32_t rawId() const
get the raw id
MonitorElement * theTypePlot5HitsShowerSeg
def unique(seq, keepstr=True)
ChamberSegmentMap theChamberSegmentMap
const edm::PSimHitContainer & hits(int detId) const
bool SimHitPabsLessThan(const PSimHit &p1, const PSimHit &p2)
std::vector< PSimHit > PSimHitContainer
MonitorElement * thedXdZResolutionPlots[10]
MonitorElement * thedYdZPullPlots[10]
MonitorElement * theTypePlot4HitsShowerSeg
LocalPoint localPosition() const override
MonitorElement * theThetaResolutionPlots[10]
Geom::Phi< T > phi() const
LocalError localPositionError() const override
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
MonitorElement * theTypePlot6HitsShowerSeg