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 hitCLCT[chamberType - 1] =
true;
109 const float fhs_clct = clct.getFractionalStrip(2);
110 const float fqs_clct = clct.getFractionalStrip(4);
111 const float fes_clct = clct.getFractionalStrip(8);
114 const float slopeHalfStrip(clct.getFractionalSlope());
115 const float slopeStrip(slopeHalfStrip / 2.);
118 float stripIntercept, stripSlope;
119 cscStubMatcher_->cscDigiMatcher()->muonSimHitMatcher()->fitHitsInChamber(
id, stripIntercept, stripSlope);
122 const bool isME11(cscId.
station() == 1 and (cscId.
ring() == 4
or cscId.
ring() == 1));
124 stripIntercept -= 0.25;
127 const float strip_csc_sh = stripIntercept;
128 const float bend_csc_sh = stripSlope;
130 delta_fhs_clct[chamberType - 1] = fhs_clct - deltaStrip - strip_csc_sh;
131 delta_fqs_clct[chamberType - 1] = fqs_clct - deltaStrip - strip_csc_sh;
132 delta_fes_clct[chamberType - 1] = fes_clct - deltaStrip - strip_csc_sh;
134 dslope_clct[chamberType - 1] = slopeStrip - bend_csc_sh;
137 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
bool isSimTrackGood(const SimTrack &t) const
MonitorElement * posresCLCT_qs[10]
MonitorElement * posresCLCT_hs[10]
edm::EDGetTokenT< edm::SimVertexContainer > simVertexInput_
unsigned short iChamberType() const
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]