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;
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 &)
virtual void setCurrentFolder(std::string const &fullpath)
T const * product() const
~CSCStubResolutionValidation() override
MonitorElement * posresCLCT_qs[10]
MonitorElement * posresCLCT_hs[10]
bool isSimTrackGood(const SimTrack &t) const
std::string chamberName() const
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::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
edm::EDGetTokenT< edm::SimVertexContainer > simVertexInput_
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * posresCLCT_es[10]
static constexpr int NUM_STRIPS_ME1B
edm::EDGetTokenT< edm::SimTrackContainer > simTrackInput_
std::vector< SimVertex > SimVertexContainer
static constexpr int MAX_HALF_STRIP_ME1B
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]