99 void fill_x(
char charge,
double abscissa,
double residx,
double chi2,
int dof);
100 void fill_y(
char charge,
double abscissa,
double residy,
double chi2,
int dof);
101 void fill_dxdz(
char charge,
double abscissa,
double slopex,
double chi2,
int dof);
102 void fill_dydz(
char charge,
double abscissa,
double slopey,
double chi2,
int dof);
131 t =
id.iChamberType();
160 m_muonCollectionTag(cfg.getParameter<edm::
InputTag>(
"muonCollectionTag")),
161 m_minTrackPt(cfg.getParameter<double>(
"minTrackPt")),
162 m_maxTrackPt(cfg.getParameter<double>(
"maxTrackPt")),
163 m_minTrackP(cfg.getParameter<double>(
"minTrackP")),
164 m_maxTrackP(cfg.getParameter<double>(
"maxTrackP")),
165 m_maxDxy(cfg.getParameter<double>(
"maxDxy")),
166 m_minTrackerHits(cfg.getParameter<int>(
"minTrackerHits")),
167 m_maxTrackerRedChi2(cfg.getParameter<double>(
"maxTrackerRedChi2")),
168 m_allowTIDTEC(cfg.getParameter<bool>(
"allowTIDTEC")),
169 m_minNCrossedChambers(cfg.getParameter<int>(
"minNCrossedChambers")),
170 m_minDT13Hits(cfg.getParameter<int>(
"minDT13Hits")),
171 m_minDT2Hits(cfg.getParameter<int>(
"minDT2Hits")),
172 m_minCSCHits(cfg.getParameter<int>(
"minCSCHits")),
173 m_doDT(cfg.getParameter<bool>(
"doDT")),
174 m_doCSC(cfg.getParameter<bool>(
"doCSC")),
175 m_useStubPosition(cfg.getParameter<bool>(
"useStubPosition")),
176 m_createNtuple(cfg.getParameter<bool>(
"createNtuple")) {
179 m_cscnt = fs->
make<TTree>(
"mualNtuple",
"mualNtuple");
188 assert(num >= 0 && num < 100);
190 sprintf(tmp,
"%02d", num);
195 std::string wheel_label[5] = {
"A",
"B",
"C",
"D",
"E"};
206 for (
int sector = 1; sector <= 14; sector++) {
209 "DTvsz_st" + s_station +
"sec" +
num02d(sector),
this, 60, -660., 660., do_y,
false);
215 for (
int wheel = -2; wheel <= 2; wheel++) {
217 "DTvsphi_st" + s_station +
"wh" + wheel_label[wheel + 2],
this, 180, -
M_PI,
M_PI, do_y,
false);
228 for (
int chamber = 1; chamber <= 36; chamber++) {
230 "CSCvsr_me" + s_endcap + s_station +
"ch" +
num02d(chamber),
this, 60, 100., 700.,
false,
false);
243 M_PI * (2. - 5. / 180.),
280 for (ConstTrajTrackPairCollection::const_iterator trajtrack = trajtracks.begin(); trajtrack != trajtracks.end();
289 if (fabs(track->
dxy(beamSpot->position())) <
m_maxDxy) {
293 builder, magneticField, globalGeometry, muonDetIdAssociator_, prop, traj, track,
pNavigator(), 1000.);
302 for (reco::MuonCollection::const_iterator
muon = muons->begin();
muon != muons->end(); ++
muon) {
303 if (!(
muon->isTrackerMuon() &&
muon->innerTrack().isNonnull()))
311 if (fabs(
muon->innerTrack()->dxy(beamSpot->position())) <
m_maxDxy) {
332 std::vector<DetId> chamberIds = mrft.
chamberIds();
333 for (
unsigned ch = 0; ch < chamberIds.size(); ch++)
345 for (std::vector<DetId>::const_iterator chamberId = chamberIds.begin(); chamberId != chamberIds.end(); ++chamberId) {
370 double phi = atan2(gpos.
y(), gpos.
x());
373 assert(1 <=
id.sector() &&
id.sector() <= 14);
391 phi = atan2(gpos.
y(), gpos.
x());
394 assert(1 <=
id.sector() &&
id.sector() <= 14);
415 double phi = atan2(gpos.
y(), gpos.
x());
418 assert(1 <=
id.sector() &&
id.sector() <= 14);
431 int ring =
id.ring();
450 double phi = atan2(gpos.
y(), gpos.
x());
452 if (phi < -
M_PI / 180. * 5.)
456 int chamber =
id.chamber() - 1;
457 if (
id.
station() > 1 && ring == 1)
465 m_CSCvsr_me[
id.endcap() - 1][
id.station() - 1][chamber]->
fill_x(charge, R, residual, chi2, dof);
466 m_CSCvsr_me[
id.endcap() - 1][
id.station() - 1][chamber]->
fill_dxdz(charge, R, resslope, chi2, dof);
467 m_CSCvsphi_me[
id.endcap() - 1][
id.station() - 1][ring - 1]->
fill_x(charge, phi, residual, chi2, dof);
492 std::cout <<
"AlignmentMonitorMuonSystemMap1D counters:" << std::endl;
507 : m_name(name), m_bins(bins), m_xy(xy), m_1d(add_1d) {
509 std::stringstream name_x_2d, name_y_2d, name_dxdz_2d, name_dydz_2d;
510 name_x_2d <<
m_name <<
"_x_2d";
511 name_y_2d << m_name <<
"_y_2d";
512 name_dxdz_2d << m_name <<
"_dxdz_2d";
513 name_dydz_2d << m_name <<
"_dydz_2d";
515 const int nbins = 200;
516 const double window = 100.;
527 std::stringstream name_x_1d;
528 name_x_1d << m_name <<
"_x_1d";
534 if (m_1d && chi2 > 0.) {
536 double residual = residx * 1000.;
537 m_x_1d->Fill(residual);
542 char charge,
double abscissa,
double residx,
double chi2,
int dof) {
544 double residual = residx * 10.;
546 m_x_2d->Fill(abscissa, residual);
551 char charge,
double abscissa,
double residy,
double chi2,
int dof) {
552 if (m_xy && chi2 > 0.) {
553 double residual = residy * 10.;
555 m_y_2d->Fill(abscissa, residual);
560 char charge,
double abscissa,
double slopex,
double chi2,
int dof) {
562 double residual = slopex * 1000.;
564 m_dxdz_2d->Fill(abscissa, residual);
569 char charge,
double abscissa,
double slopey,
double chi2,
int dof) {
570 if (m_xy && chi2 > 0.) {
571 double residual = slopey * 1000.;
573 m_dydz_2d->Fill(abscissa, residual);
double p() const
momentum vector magnitude
double m_maxTrackerRedChi2
AlignableNavigator * pNavigator()
void fill_x(char charge, double abscissa, double residx, double chi2, int dof)
uint16_t *__restrict__ id
void fill_dydz(char charge, double abscissa, double slopey, double chi2, int dof)
void fill_y(char charge, double abscissa, double residy, double chi2, int dof)
const edm::ESGetToken< GlobalTrackingGeometry, GlobalTrackingGeometryRecord > m_esTokenGBTGeom
align::GlobalPoint global_trackpos()
TH2F * book2D(std::string dir, std::string name, std::string title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
std::string num02d(int num)
int trackerNumHits() const
AlignmentMonitorMuonSystemMap1D(const edm::ParameterSet &cfg, edm::ConsumesCollector iC)
void fill_x_1d(double residx, double chi2, int dof)
T * make(const Args &...args) const
make new ROOT object
MuonSystemMapPlot1D * m_CSCvsr_me[2][4][36]
MuonSystemMapPlot1D * m_CSCvsphi_me[2][4][3]
const edm::ESGetToken< Propagator, TrackingComponentsRecord > m_esTokenProp
double global_residual() const
const std::vector< DetId > chamberIds() const
bool getData(T &iHolder) const
void book() override
Book or retrieve histograms; MUST be reimplemented.
void event(const edm::Event &iEvent, const edm::EventSetup &iSetup, const ConstTrajTrackPairCollection &iTrajTracks) override
Called for each event (by "run()"): may be reimplemented.
void afterAlignment() override
double pt() const
track transverse momentum
const reco::Track * getTrack()
long m_counter_trackmoment
std::vector< ConstTrajTrackPair > ConstTrajTrackPairCollection
const edm::InputTag m_beamSpotTag
TH1F * book1D(std::string dir, std::string name, std::string title, int nchX, double lowX, double highX)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
double pz() const
z coordinate of momentum vector
double normalizedChi2() const
void fill_dxdz(char charge, double abscissa, double slopex, double chi2, int dof)
Basic2DVector< T > xy() const
std::vector< MuonSystemMapPlot1D * > m_plots
const MuonResidualsFromTrack::BuilderToken m_esTokenBuilder
edm::InputTag m_muonCollectionTag
MuonSystemMapPlot1D * m_DTvsz_station[4][14]
align::GlobalPoint global_stubpos()
~AlignmentMonitorMuonSystemMap1D() override
MuonSystemMapPlot1D(std::string name, AlignmentMonitorMuonSystemMap1D *module, int bins, double low, double high, bool xy, bool add_1d)
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > m_esTokenMF
long m_counter_cscnumhits
double global_resslope() const
int charge() const
track electric charge
#define DEFINE_EDM_PLUGIN(factory, type, name)
void processMuonResidualsFromTrack(MuonResidualsFromTrack &mrft, const edm::Event &iEvent)
int m_minNCrossedChambers
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
const edm::ESGetToken< DetIdAssociator, DetIdAssociatorRecord > m_esTokenDetId
Power< A, B >::type pow(const A &a, const B &b)
MuonSystemMapPlot1D * m_DTvsphi_station[4][5]
bool contains_TIDTEC() const
MuonChamberResidual * chamberResidual(DetId chamberId, int type)