87 void fill_x(
char charge,
double abscissa,
double residx,
double chi2,
int dof);
88 void fill_y(
char charge,
double abscissa,
double residy,
double chi2,
int dof);
89 void fill_dxdz(
char charge,
double abscissa,
double slopex,
double chi2,
int dof);
90 void fill_dydz(
char charge,
double abscissa,
double slopey,
double chi2,
int dof);
121 t =
id.iChamberType();
148 , m_muonCollectionTag(cfg.getParameter<edm::
InputTag>(
"muonCollectionTag"))
149 , m_minTrackPt(cfg.getParameter<double>(
"minTrackPt"))
150 , m_maxTrackPt(cfg.getParameter<double>(
"maxTrackPt"))
151 , m_minTrackP(cfg.getParameter<double>(
"minTrackP"))
152 , m_maxTrackP(cfg.getParameter<double>(
"maxTrackP"))
153 , m_maxDxy(cfg.getParameter<double>(
"maxDxy"))
154 , m_minTrackerHits(cfg.getParameter<int>(
"minTrackerHits"))
155 , m_maxTrackerRedChi2(cfg.getParameter<double>(
"maxTrackerRedChi2"))
156 , m_allowTIDTEC(cfg.getParameter<bool>(
"allowTIDTEC"))
157 , m_minNCrossedChambers(cfg.getParameter<int>(
"minNCrossedChambers"))
158 , m_minDT13Hits(cfg.getParameter<int>(
"minDT13Hits"))
159 , m_minDT2Hits(cfg.getParameter<int>(
"minDT2Hits"))
160 , m_minCSCHits(cfg.getParameter<int>(
"minCSCHits"))
161 , m_doDT(cfg.getParameter<bool>(
"doDT"))
162 , m_doCSC(cfg.getParameter<bool>(
"doCSC"))
163 , m_useStubPosition(cfg.getParameter<bool>(
"useStubPosition"))
164 , m_createNtuple(cfg.getParameter<bool>(
"createNtuple"))
169 m_cscnt = fs->
make<TTree>(
"mualNtuple",
"mualNtuple");
180 assert(num>=0 && num <100);
182 sprintf(tmp,
"%02d", num);
194 sprintf(c_station,
"%d",
station);
201 if (
m_doDT)
for (
int sector = 1; sector <= 14; sector++)
211 if (
m_doDT)
for (
int wheel = -2; wheel <= 2; wheel++)
222 if (
endcap == 1) s_endcap =
"p";
224 for (
int chamber = 1; chamber <= 36; chamber++)
234 sprintf(c_ring,
"%d",
ring);
280 for (ConstTrajTrackPairCollection::const_iterator trajtrack = trajtracks.begin(); trajtrack != trajtracks.end(); ++trajtrack)
289 if ( fabs(track->
dxy(beamSpot->position())) <
m_maxDxy )
304 for (reco::MuonCollection::const_iterator
muon = muons->begin();
muon != muons->end(); ++
muon)
306 if ( !(
muon->isTrackerMuon() &&
muon->innerTrack().isNonnull() ) )
continue;
313 if (fabs(
muon->innerTrack()->dxy(beamSpot->position())) <
m_maxDxy)
333 std::vector<DetId> chamberIds = mrft.
chamberIds();
334 for (
unsigned ch=0; ch < chamberIds.size(); ch++)
if (chamberIds[ch].det() ==
DetId::Muon) nMuChambers++;
343 for (std::vector<DetId>::const_iterator chamberId = chamberIds.begin(); chamberId != chamberIds.end(); ++chamberId)
362 int dof = dt13->
ndof();
367 double phi = atan2(gpos.
y(), gpos.
x());
370 assert(1 <=
id.sector() &&
id.sector() <= 14);
386 phi = atan2(gpos.
y(), gpos.
x());
389 assert(1 <=
id.sector() &&
id.sector() <= 14);
404 int dof = dt13->
ndof();
409 double phi = atan2(gpos.
y(), gpos.
x());
412 assert(1 <=
id.sector() &&
id.sector() <= 14);
426 int ring =
id.ring();
427 if (
id.
ring()==4) ring = 1;
438 int dof = csc->
ndof();
443 double phi = atan2(gpos.
y(), gpos.
x());
445 if (phi<-
M_PI/180.*5.) phi += 2.*
M_PI;
448 int chamber =
id.chamber() - 1;
449 if (
id.
station() > 1 && ring == 1) chamber *= 2;
455 m_CSCvsr_me[
id.endcap()-1][
id.station()-1][chamber]->
fill_x(charge, R, residual, chi2, dof);
457 m_CSCvsphi_me[
id.endcap()-1][
id.station()-1][ring-1]->
fill_x(charge, phi, residual, chi2, dof);
485 std::cout <<
"AlignmentMonitorMuonSystemMap1D counters:"<<std::endl;
500 : m_name(name), m_bins(bins), m_xy(xy), m_1d(add_1d)
503 std::stringstream name_x_2d, name_y_2d, name_dxdz_2d, name_dydz_2d;
504 name_x_2d <<
m_name <<
"_x_2d";
505 name_y_2d << m_name <<
"_y_2d";
506 name_dxdz_2d << m_name <<
"_dxdz_2d";
507 name_dydz_2d << m_name <<
"_dydz_2d";
509 const int nbins = 200;
510 const double window = 100.;
519 std::stringstream name_x_1d;
520 name_x_1d << m_name <<
"_x_1d";
528 if (m_1d && chi2 > 0.) {
530 double residual = residx * 1000.;
531 m_x_1d->Fill(residual);
539 double residual = residx * 10.;
541 m_x_2d->Fill(abscissa, residual);
548 if (m_xy && chi2 > 0.) {
549 double residual = residy * 10.;
551 m_y_2d->Fill(abscissa, residual);
559 double residual = slopex * 1000.;
561 m_dxdz_2d->Fill(abscissa, residual);
568 if (m_xy && chi2 > 0.) {
569 double residual = slopey * 1000.;
571 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)
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)
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
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]
virtual ~AlignmentMonitorMuonSystemMap1D()
double global_residual() const
const std::vector< DetId > chamberIds() 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.
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)
edm::InputTag m_muonCollectionTag
MuonSystemMapPlot1D * m_DTvsz_station[4][14]
align::GlobalPoint global_stubpos()
std::vector< MuonSystemMapPlot1D * > m_plots
std::vector< std::vector< double > > tmp
MuonSystemMapPlot1D(std::string name, AlignmentMonitorMuonSystemMap1D *module, int bins, double low, double high, bool xy, bool add_1d)
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)
void afterAlignment(const edm::EventSetup &iSetup) override
int m_minNCrossedChambers
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Power< A, B >::type pow(const A &a, const B &b)
AlignmentMonitorMuonSystemMap1D(const edm::ParameterSet &cfg)
MuonSystemMapPlot1D * m_DTvsphi_station[4][5]
bool contains_TIDTEC() const
MuonChamberResidual * chamberResidual(DetId chamberId, int type)