21 for (
int i = 1;
i <= 10; ++
i) {
32 t1, cn +
" CLCT Position Resolution (1/2-strip prec.); Strip_{L1T} - Strip_{SIM}; Entries", 50, -1, 1);
34 t2, cn +
" CLCT Position Resolution (1/4-strip prec.); Strip_{L1T} - Strip_{SIM}; Entries", 50, -1, 1);
36 t3, cn +
" CLCT Position Resolution (1/8-strip prec.); Strip_{L1T} - Strip_{SIM}; Entries", 50, -1, 1);
42 iBooker.
book1D(t4, cn +
" CLCT Bend Resolution; Slope_{L1T} - Slope_{SIM}; Entries", 50, -0.5, 0.5);
63 for (
const auto&
t : sim_track) {
66 sim_track_selected.push_back(
t);
70 if (sim_track_selected.empty())
74 for (
const auto&
t : sim_track_selected) {
75 std::vector<bool> hitCLCT(10);
77 std::vector<float> delta_fhs_clct(10);
78 std::vector<float> delta_fqs_clct(10);
79 std::vector<float> delta_fes_clct(10);
81 std::vector<float> dslope_clct(10);
91 for (
auto& [
id, container] : clcts) {
100 const bool isME11(cscId.
station() == 1 and (cscId.
ring() == 4
or cscId.
ring() == 1));
108 auto id2 = cscId2.
rawId();
117 const float fhs_clct = clct.getFractionalStrip(2);
118 const float fqs_clct = clct.getFractionalStrip(4);
119 const float fes_clct = clct.getFractionalStrip(8);
122 const float slopeHalfStrip(clct.getFractionalSlope());
123 const float slopeStrip(slopeHalfStrip / 2.);
126 float stripIntercept, stripSlope;
127 cscStubMatcher_->cscDigiMatcher()->muonSimHitMatcher()->fitHitsInChamber(id2, stripIntercept, stripSlope);
131 stripIntercept -= 0.25;
134 const float strip_csc_sh = stripIntercept;
135 const float bend_csc_sh = stripSlope;
137 const unsigned chamberType(cscId2.iChamberType());
138 hitCLCT[chamberType - 1] =
true;
140 delta_fhs_clct[chamberType - 1] = fhs_clct - deltaStrip - strip_csc_sh;
141 delta_fqs_clct[chamberType - 1] = fqs_clct - deltaStrip - strip_csc_sh;
142 delta_fes_clct[chamberType - 1] = fes_clct - deltaStrip - strip_csc_sh;
144 dslope_clct[chamberType - 1] = slopeStrip - bend_csc_sh;
147 for (
int i = 0;
i < 10;
i++) {
CSCStubResolutionValidation(const edm::ParameterSet &pset, edm::ConsumesCollector &&iC)
void bookHistograms(DQMStore::IBooker &)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
virtual void setCurrentFolder(std::string const &fullpath)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
~CSCStubResolutionValidation() override
constexpr uint32_t rawId() const
get the raw id
bool isSimTrackGood(const SimTrack &t) const
MonitorElement * posresCLCT_qs[10]
MonitorElement * posresCLCT_hs[10]
edm::EDGetTokenT< edm::SimVertexContainer > simVertexInput_
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * posresCLCT_es[10]
std::string chamberName() const
edm::EDGetTokenT< edm::SimTrackContainer > simTrackInput_
T const * product() const
std::vector< SimVertex > SimVertexContainer
T getParameter(std::string const &) const
std::unique_ptr< CSCStubMatcher > cscStubMatcher_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
std::vector< SimTrack > SimTrackContainer
MonitorElement * bendresCLCT[10]