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();
151 ,
m_minTrackP(cfg.getParameter<double>(
"minTrackP"))
152 ,
m_maxTrackP(cfg.getParameter<double>(
"maxTrackP"))
153 ,
m_maxDxy(cfg.getParameter<double>(
"maxDxy"))
169 m_cscnt = fs->
make<TTree>(
"mualNtuple",
"mualNtuple");
180 assert(num>=0 && num <100);
182 sprintf(tmp,
"%02d", num);
199 if (
m_doDT)
for (
int sector = 1; sector <= 14; sector++)
220 if (
endcap == 1) s_endcap =
"p";
276 for (ConstTrajTrackPairCollection::const_iterator trajtrack = trajtracks.begin(); trajtrack != trajtracks.end(); ++trajtrack)
300 for (reco::MuonCollection::const_iterator
muon = muons->begin();
muon != muons->end(); ++
muon)
302 if ( !(
muon->isTrackerMuon() &&
muon->innerTrack().isNonnull() ) )
continue;
329 std::vector<DetId> chamberIds = mrft.
chamberIds();
330 for (
unsigned ch=0; ch < chamberIds.size(); ch++)
if (chamberIds[ch].det() ==
DetId::Muon) nMuChambers++;
339 for (std::vector<DetId>::const_iterator chamberId = chamberIds.begin(); chamberId != chamberIds.end(); ++chamberId)
363 double phi = atan2(gpos.
y(), gpos.
x());
366 assert(1 <=
id.sector() &&
id.sector() <= 14);
382 phi = atan2(gpos.
y(), gpos.
x());
385 assert(1 <=
id.sector() &&
id.sector() <= 14);
405 double phi = atan2(gpos.
y(), gpos.
x());
408 assert(1 <=
id.sector() &&
id.sector() <= 14);
422 int ring =
id.ring();
423 if (
id.
ring()==4) ring = 1;
439 double phi = atan2(gpos.
y(), gpos.
x());
441 if (phi<-
M_PI/180.*5.) phi += 2.*
M_PI;
444 int chamber =
id.chamber() - 1;
445 if (
id.
station() > 1 && ring == 1) chamber *= 2;
447 assert(1 <=
id.
endcap() &&
id.
endcap() <= 2 && 0 <= chamber && chamber <= 35);
453 m_CSCvsphi_me[
id.endcap()-1][
id.station()-1][ring-1]->
fill_x(charge, phi, residual, chi2, dof);
481 std::cout <<
"AlignmentMonitorMuonSystemMap1D counters:"<<std::endl;
496 : m_name(name), m_bins(bins), m_xy(xy), m_1d(add_1d)
499 std::stringstream name_x_2d, name_y_2d, name_dxdz_2d, name_dydz_2d;
500 name_x_2d <<
m_name <<
"_x_2d";
501 name_y_2d << m_name <<
"_y_2d";
502 name_dxdz_2d << m_name <<
"_dxdz_2d";
503 name_dydz_2d << m_name <<
"_dydz_2d";
505 const int nbins = 200;
506 const double window = 100.;
515 std::stringstream name_x_1d;
516 name_x_1d << m_name <<
"_x_1d";
524 if (
m_1d && chi2 > 0.) {
526 double residual = residx * 1000.;
535 double residual = residx * 10.;
537 m_x_2d->Fill(abscissa, residual);
544 if (
m_xy && chi2 > 0.) {
545 double residual = residy * 10.;
547 m_y_2d->Fill(abscissa, residual);
555 double residual = slopex * 1000.;
564 if (
m_xy && chi2 > 0.) {
565 double residual = slopey * 1000.;
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)
static const double slope[3]
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]
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.
void afterAlignment() override
double pt() const
track transverse momentum
const reco::Track * getTrack()
long m_counter_trackmoment
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
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
~AlignmentMonitorMuonSystemMap1D() override
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)
const Point & position() const
position
void processMuonResidualsFromTrack(MuonResidualsFromTrack &mrft, const edm::Event &iEvent)
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)