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"))
161 ,
m_doDT(cfg.getParameter<bool>(
"doDT"))
162 ,
m_doCSC(cfg.getParameter<bool>(
"doCSC"))
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++)
222 if (
endcap == 1) s_endcap =
"p";
234 sprintf(c_ring,
"%d",
ring);
280 for (ConstTrajTrackPairCollection::const_iterator trajtrack = trajtracks.begin(); trajtrack != trajtracks.end(); ++trajtrack)
304 for (reco::MuonCollection::const_iterator
muon = muons->begin();
muon != muons->end(); ++
muon)
306 if ( !(
muon->isTrackerMuon() &&
muon->innerTrack().isNonnull() ) )
continue;
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)
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);
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;
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;
451 assert(1 <=
id.
endcap() &&
id.
endcap() <= 2 && 0 <= chamber && chamber <= 35);
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.;
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.;
568 if (
m_xy && chi2 > 0.) {
569 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]
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.
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
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)