CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
AlignmentMonitorMuonSystemMap1D Class Reference
Inheritance diagram for AlignmentMonitorMuonSystemMap1D:
AlignmentMonitorBase

Classes

class  MuonSystemMapPlot1D
 
struct  MyCSCDetId
 
struct  MyResidual
 
struct  MyTrack
 

Public Member Functions

void afterAlignment () override
 
 AlignmentMonitorMuonSystemMap1D (const edm::ParameterSet &cfg)
 
void book () override
 Book or retrieve histograms; MUST be reimplemented. More...
 
void event (const edm::Event &iEvent, const edm::EventSetup &iSetup, const ConstTrajTrackPairCollection &iTrajTracks) override
 Called for each event (by "run()"): may be reimplemented. More...
 
void processMuonResidualsFromTrack (MuonResidualsFromTrack &mrft, const edm::Event &iEvent)
 
virtual ~AlignmentMonitorMuonSystemMap1D ()
 
- Public Member Functions inherited from AlignmentMonitorBase
 AlignmentMonitorBase (const edm::ParameterSet &cfg, std::string name)
 Constructor. More...
 
void beginOfJob (AlignableTracker *pTracker, AlignableMuon *pMuon, AlignmentParameterStore *pStore)
 Called at beginning of job: don't reimplement. More...
 
void duringLoop (const edm::Event &iEvent, const edm::EventSetup &iSetup, const ConstTrajTrackPairCollection &iTrajTracks)
 Called for each event: don't reimplement. More...
 
void endOfJob ()
 Called at end of processing: don't implement. More...
 
void endOfLoop ()
 Called at end of loop: don't reimplement. More...
 
void startingNewLoop ()
 Called at beginning of loop: don't reimplement. More...
 
virtual ~AlignmentMonitorBase ()
 Destructor. More...
 

Private Member Functions

std::string num02d (int num)
 

Private Attributes

bool m_allowTIDTEC
 
long m_counter_13numhits
 
long m_counter_2numhits
 
long m_counter_csc
 
long m_counter_cscnumhits
 
long m_counter_dt
 
long m_counter_event
 
long m_counter_track
 
long m_counter_trackdxy
 
long m_counter_trackmoment
 
long m_counter_trackokay
 
bool m_createNtuple
 
TTree * m_cscnt
 
MuonSystemMapPlot1Dm_CSCvsphi_me [2][4][3]
 
MuonSystemMapPlot1Dm_CSCvsr_me [2][4][36]
 
bool m_doCSC
 
bool m_doDT
 
MuonSystemMapPlot1Dm_DTvsphi_station [4][5]
 
MuonSystemMapPlot1Dm_DTvsz_station [4][14]
 
MyCSCDetId m_id
 
double m_maxDxy
 
double m_maxTrackerRedChi2
 
double m_maxTrackP
 
double m_maxTrackPt
 
int m_minCSCHits
 
int m_minDT13Hits
 
int m_minDT2Hits
 
int m_minNCrossedChambers
 
int m_minTrackerHits
 
double m_minTrackP
 
double m_minTrackPt
 
edm::InputTag m_muonCollectionTag
 
std::vector< MuonSystemMapPlot1D * > m_plots
 
MyResidual m_re
 
UInt_t m_run
 
MyTrack m_tr
 
bool m_useStubPosition
 

Additional Inherited Members

- Public Types inherited from AlignmentMonitorBase
typedef std::pair< const Trajectory *, const reco::Track * > ConstTrajTrackPair
 
typedef std::vector< ConstTrajTrackPairConstTrajTrackPairCollection
 
- Protected Member Functions inherited from AlignmentMonitorBase
TH1F * book1D (std::string dir, std::string name, std::string title, int nchX, double lowX, double highX)
 
TH2F * book2D (std::string dir, std::string name, std::string title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
 
TProfile * bookProfile (std::string dir, std::string name, std::string title, int nchX, double lowX, double highX, int nchY=1, double lowY=0., double highY=0., const char *option="s")
 
TFileDirectorydirectory (std::string dir)
 
int iteration ()
 
AlignableMuonpMuon ()
 
AlignableNavigatorpNavigator ()
 
AlignmentParameterStorepStore ()
 
AlignableTrackerpTracker ()
 
- Protected Attributes inherited from AlignmentMonitorBase
const edm::InputTag m_beamSpotTag
 

Detailed Description

Definition at line 34 of file AlignmentMonitorMuonSystemMap1D.cc.

Constructor & Destructor Documentation

AlignmentMonitorMuonSystemMap1D::AlignmentMonitorMuonSystemMap1D ( const edm::ParameterSet cfg)

Definition at line 146 of file AlignmentMonitorMuonSystemMap1D.cc.

References AlignmentMonitorMuonSystemMap1D::MyCSCDetId::e, m_createNtuple, m_cscnt, m_id, m_re, m_run, m_tr, TFileService::make(), AlignmentMonitorMuonSystemMap1D::MyTrack::q, and AlignmentMonitorMuonSystemMap1D::MyResidual::res.

147  : AlignmentMonitorBase(cfg, "AlignmentMonitorMuonSystemMap1D")
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"))
165 {
166  if (m_createNtuple)
167  {
169  m_cscnt = fs->make<TTree>("mualNtuple", "mualNtuple");
170  m_cscnt->Branch("id", &m_id.e,"e/S:s:r:c:t");
171  m_cscnt->Branch("tr", &m_tr.q,"q/I:pt/F:pz");
172  m_cscnt->Branch("re", &m_re.res, "res/F:slope:rho:phi:z");
173  m_cscnt->Branch("run", &m_run, "run/i");
174  }
175 }
T getParameter(std::string const &) const
AlignmentMonitorBase(const edm::ParameterSet &cfg, std::string name)
Constructor.
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
virtual AlignmentMonitorMuonSystemMap1D::~AlignmentMonitorMuonSystemMap1D ( )
inlinevirtual

Member Function Documentation

void AlignmentMonitorMuonSystemMap1D::afterAlignment ( )
overridevirtual

Called after updating AlignableTracker and AlignableMuon (by "endOfLoop()"): may be reimplemented

Reimplemented from AlignmentMonitorBase.

Definition at line 483 of file AlignmentMonitorMuonSystemMap1D.cc.

References gather_cfg::cout, m_counter_13numhits, m_counter_2numhits, m_counter_csc, m_counter_cscnumhits, m_counter_dt, m_counter_event, m_counter_track, m_counter_trackdxy, m_counter_trackmoment, and m_counter_trackokay.

Referenced by ~AlignmentMonitorMuonSystemMap1D().

484 {
485  std::cout << "AlignmentMonitorMuonSystemMap1D counters:"<<std::endl;
486  std::cout << " monitor m_counter_event = " << m_counter_event << std::endl;
487  std::cout << " monitor m_counter_track = " << m_counter_track << std::endl;
488  std::cout << " monitor m_counter_trackppt = " << m_counter_trackmoment << std::endl;
489  std::cout << " monitor m_counter_trackdxy = " << m_counter_trackdxy << std::endl;
490  std::cout << " monitor m_counter_trackokay = " << m_counter_trackokay << std::endl;
491  std::cout << " monitor m_counter_dt = " << m_counter_dt << std::endl;
492  std::cout << " monitor m_counter_13numhits = " << m_counter_13numhits << std::endl;
493  std::cout << " monitor m_counter_2numhits = " << m_counter_2numhits << std::endl;
494  std::cout << " monitor m_counter_csc = " << m_counter_csc << std::endl;
495  std::cout << " monitor m_counter_cscnumhits = " << m_counter_cscnumhits << std::endl;
496 }
void AlignmentMonitorMuonSystemMap1D::book ( )
overridevirtual

Book or retrieve histograms; MUST be reimplemented.

Implements AlignmentMonitorBase.

Definition at line 187 of file AlignmentMonitorMuonSystemMap1D.cc.

References relativeConstraints::chamber, makeMuonMisalignmentScenario::endcap, m_counter_13numhits, m_counter_2numhits, m_counter_csc, m_counter_cscnumhits, m_counter_dt, m_counter_event, m_counter_track, m_counter_trackdxy, m_counter_trackmoment, m_counter_trackokay, m_CSCvsphi_me, m_CSCvsr_me, m_doCSC, m_doDT, m_DTvsphi_station, m_DTvsz_station, M_PI, m_plots, num02d(), relativeConstraints::ring, relativeConstraints::station, AlCaHLTBitMon_QueryRunRegistry::string, and makeMuonMisalignmentScenario::wheel.

Referenced by ~AlignmentMonitorMuonSystemMap1D().

188 {
189  std::string wheel_label[5]={"A","B","C","D","E"};
190 
191  for (int station = 1; station<=4; station++)
192  {
193  char c_station[4];
194  sprintf(c_station, "%d", station);
195  std::string s_station(c_station);
196 
197  bool do_y = true;
198  if (station==4) do_y = false;
199 
200  // *** DT ***
201  if (m_doDT) for (int sector = 1; sector <= 14; sector++)
202  {
203  if ((station<4 && sector <= 12) || station==4)
204  {
205  m_DTvsz_station[station-1][sector-1] =
206  new MuonSystemMapPlot1D("DTvsz_st" + s_station + "sec" + num02d(sector), this, 60, -660., 660., do_y,false);
207  m_plots.push_back(m_DTvsz_station[station-1][sector-1]);
208  }
209  }
210 
211  if (m_doDT) for (int wheel = -2; wheel <= 2; wheel++)
212  {
214  new MuonSystemMapPlot1D("DTvsphi_st" + s_station + "wh" + wheel_label[wheel+2], this, 180, -M_PI, M_PI, do_y, false);
215  m_plots.push_back(m_DTvsphi_station[station-1][wheel+2]);
216  }
217 
218  // *** CSC ***
219  if (m_doCSC) for (int endcap = 1; endcap <= 2; endcap++)
220  {
221  std::string s_endcap("m");
222  if (endcap == 1) s_endcap = "p";
223 
224  for (int chamber = 1; chamber <= 36; chamber++)
225  {
226  m_CSCvsr_me[endcap-1][station-1][chamber-1] =
227  new MuonSystemMapPlot1D("CSCvsr_me" + s_endcap + s_station +"ch" + num02d(chamber), this, 60, 100., 700., false, false);
228  m_plots.push_back(m_CSCvsr_me[endcap-1][station-1][chamber-1]);
229  }
230 
231  for (int ring = 1; ring <= 3; ring++) // the ME1/a (ring4) is not independent from ME1/b (ring1)
232  {
233  char c_ring[4];
234  sprintf(c_ring, "%d", ring);
235  std::string s_ring(c_ring);
236  if ( (station>1 && ring<=2) || station==1)
237  {
238  m_CSCvsphi_me[endcap-1][station-1][ring-1] =
239  new MuonSystemMapPlot1D("CSCvsphi_me" + s_endcap + s_station + s_ring, this, 180, -M_PI/180.*5., M_PI*(2.-5./180.), false, true);
240  m_plots.push_back(m_CSCvsphi_me[endcap-1][station-1][ring-1]);
241  }
242  }
243  } // endcaps
244  } // stations
245 
246  m_counter_event = 0;
247  m_counter_track = 0;
249  m_counter_trackdxy = 0;
251  m_counter_dt = 0;
253  m_counter_2numhits = 0;
254  m_counter_csc = 0;
256 }
MuonSystemMapPlot1D * m_CSCvsr_me[2][4][36]
MuonSystemMapPlot1D * m_CSCvsphi_me[2][4][3]
#define M_PI
std::vector< MuonSystemMapPlot1D * > m_plots
void AlignmentMonitorMuonSystemMap1D::event ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const ConstTrajTrackPairCollection iTrajTracks 
)
overridevirtual

Called for each event (by "run()"): may be reimplemented.

Reimplemented from AlignmentMonitorBase.

Definition at line 259 of file AlignmentMonitorMuonSystemMap1D.cc.

References ecalDrivenElectronSeedsParameters_cff::beamSpot, reco::TrackBase::dxy(), edm::EventSetup::get(), edm::Event::getByLabel(), edm::InputTag::label(), AlignmentMonitorBase::m_beamSpotTag, m_counter_event, m_counter_track, m_counter_trackdxy, m_counter_trackmoment, m_maxDxy, m_maxTrackP, m_maxTrackPt, m_minTrackP, m_muonCollectionTag, seedCreatorFromRegionConsecutiveHitsEDProducer_cff::magneticField, metsig::muon, electronCleaner_cfi::muons, reco::TrackBase::p(), AlignmentMonitorBase::pNavigator(), reco::BeamSpot::position(), processMuonResidualsFromTrack(), EnergyCorrector::pt, reco::TrackBase::pt(), and HiIsolationCommonParameters_cff::track.

Referenced by Types.EventID::cppID(), and ~AlignmentMonitorMuonSystemMap1D().

260 {
261  m_counter_event++;
262 
264  iSetup.get<GlobalTrackingGeometryRecord>().get(globalGeometry);
265 
267  iEvent.getByLabel(m_beamSpotTag, beamSpot);
268 
269  edm::ESHandle<DetIdAssociator> muonDetIdAssociator_;
270  iSetup.get<DetIdAssociatorRecord>().get("MuonDetIdAssociator", muonDetIdAssociator_);
271 
273  iSetup.get<TrackingComponentsRecord>().get("SteppingHelixPropagatorAny",prop);
274 
276  iSetup.get<IdealMagneticFieldRecord>().get(magneticField);
277 
278  if (m_muonCollectionTag.label().empty()) // use trajectories
279  {
280  for (ConstTrajTrackPairCollection::const_iterator trajtrack = trajtracks.begin(); trajtrack != trajtracks.end(); ++trajtrack)
281  {
282  m_counter_track++;
283  const Trajectory* traj = (*trajtrack).first;
284  const reco::Track* track = (*trajtrack).second;
285 
286  if (m_minTrackPt < track->pt() && track->pt() < m_maxTrackPt && m_minTrackP < track->p() && track->p() < m_maxTrackP)
287  {
289  if ( fabs(track->dxy(beamSpot->position())) < m_maxDxy )
290  {
292 
293  MuonResidualsFromTrack muonResidualsFromTrack(iSetup, magneticField, globalGeometry, muonDetIdAssociator_, prop, traj, track, pNavigator(), 1000.);
294  processMuonResidualsFromTrack(muonResidualsFromTrack, iEvent);
295  }
296  } // end if track has acceptable momentum
297  } // end loop over tracks
298  }
299  else
300  {
302  iEvent.getByLabel(m_muonCollectionTag, muons);
303 
304  for (reco::MuonCollection::const_iterator muon = muons->begin(); muon != muons->end(); ++muon)
305  {
306  if ( !(muon->isTrackerMuon() && muon->innerTrack().isNonnull() ) ) continue;
307 
308  m_counter_track++;
309 
310  if (m_minTrackPt < muon->pt() && muon->pt() < m_maxTrackPt && m_minTrackP < muon->p() && muon->p() < m_maxTrackP )
311  {
313  if (fabs(muon->innerTrack()->dxy(beamSpot->position())) < m_maxDxy)
314  {
316 
317  MuonResidualsFromTrack muonResidualsFromTrack(globalGeometry, &(*muon), pNavigator(), 100.);
318  processMuonResidualsFromTrack(muonResidualsFromTrack, iEvent);
319  }
320  }
321  }
322  }
323 }
double p() const
momentum vector magnitude
Definition: TrackBase.h:610
AlignableNavigator * pNavigator()
double pt() const
track transverse momentum
Definition: TrackBase.h:616
const edm::InputTag m_beamSpotTag
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:416
const T & get() const
Definition: EventSetup.h:56
std::string const & label() const
Definition: InputTag.h:36
const Point & position() const
position
Definition: BeamSpot.h:62
void processMuonResidualsFromTrack(MuonResidualsFromTrack &mrft, const edm::Event &iEvent)
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:586
std::string AlignmentMonitorMuonSystemMap1D::num02d ( int  num)
private

Definition at line 178 of file AlignmentMonitorMuonSystemMap1D.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and tmp.

Referenced by book().

179 {
180  assert(num>=0 && num <100);
181  char tmp[4];
182  sprintf(tmp, "%02d", num);
183  return std::string(tmp);
184 }
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
void AlignmentMonitorMuonSystemMap1D::processMuonResidualsFromTrack ( MuonResidualsFromTrack mrft,
const edm::Event iEvent 
)

Definition at line 326 of file AlignmentMonitorMuonSystemMap1D.cc.

References relativeConstraints::chamber, MuonResidualsFromTrack::chamberIds(), MuonResidualsFromTrack::chamberResidual(), ALCARECOTkAlJpsiMuMu_cff::charge, reco::TrackBase::charge(), HiEvtPlane_cfi::chi2, MuonChamberResidual::chi2(), MuonResidualsFromTrack::contains_TIDTEC(), MuonSubdetId::CSC, MuonSubdetId::DT, makeMuonMisalignmentScenario::endcap, AlignmentMonitorMuonSystemMap1D::MuonSystemMapPlot1D::fill_dxdz(), AlignmentMonitorMuonSystemMap1D::MuonSystemMapPlot1D::fill_dydz(), AlignmentMonitorMuonSystemMap1D::MuonSystemMapPlot1D::fill_x(), AlignmentMonitorMuonSystemMap1D::MuonSystemMapPlot1D::fill_x_1d(), AlignmentMonitorMuonSystemMap1D::MuonSystemMapPlot1D::fill_y(), MuonResidualsFromTrack::getTrack(), MuonChamberResidual::global_residual(), MuonChamberResidual::global_resslope(), MuonChamberResidual::global_stubpos(), MuonChamberResidual::global_trackpos(), hcalTTPDigis_cfi::id, edm::EventBase::id(), AlignmentMonitorMuonSystemMap1D::MyCSCDetId::init(), MuonChamberResidual::kCSC, MuonChamberResidual::kDT13, MuonChamberResidual::kDT2, m_allowTIDTEC, m_counter_13numhits, m_counter_2numhits, m_counter_csc, m_counter_cscnumhits, m_counter_dt, m_counter_trackokay, m_createNtuple, m_cscnt, m_CSCvsphi_me, m_CSCvsr_me, m_doCSC, m_doDT, m_DTvsphi_station, m_DTvsz_station, m_id, m_maxTrackerRedChi2, m_minCSCHits, m_minDT13Hits, m_minDT2Hits, m_minNCrossedChambers, m_minTrackerHits, M_PI, m_re, m_run, m_tr, m_useStubPosition, DetId::Muon, MuonChamberResidual::ndof(), MuonResidualsFromTrack::normalizedChi2(), NULL, MuonChamberResidual::numHits(), phi, AlignmentMonitorMuonSystemMap1D::MyResidual::phi, funct::pow(), AlignmentMonitorMuonSystemMap1D::MyTrack::pt, reco::TrackBase::pt(), AlignmentMonitorMuonSystemMap1D::MyTrack::pz, reco::TrackBase::pz(), AlignmentMonitorMuonSystemMap1D::MyTrack::q, dttmaxenums::R, AlignmentMonitorMuonSystemMap1D::MyResidual::res, AlignmentMonitorMuonSystemMap1D::MyResidual::rho, relativeConstraints::ring, edm::EventID::run(), AlignmentMonitorMuonSystemMap1D::MyResidual::slope, mathSSE::sqrt(), relativeConstraints::station, MuonResidualsFromTrack::trackerNumHits(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), z, PV3DBase< T, PVType, FrameType >::z(), and AlignmentMonitorMuonSystemMap1D::MyResidual::z.

Referenced by event(), and ~AlignmentMonitorMuonSystemMap1D().

327 {
328  if (mrft.trackerNumHits() < m_minTrackerHits) return;
329  if (!m_allowTIDTEC && mrft.contains_TIDTEC()) return;
330  if (mrft.normalizedChi2() > m_maxTrackerRedChi2) return;
331 
332  int nMuChambers = 0;
333  std::vector<DetId> chamberIds = mrft.chamberIds();
334  for (unsigned ch=0; ch < chamberIds.size(); ch++) if (chamberIds[ch].det() == DetId::Muon) nMuChambers++;
335  if (nMuChambers < m_minNCrossedChambers ) return;
336 
337  char charge = (mrft.getTrack()->charge() > 0 ? 1 : -1);
338  // double qoverpt = track->charge() / track->pt();
339  // double qoverpz = track->charge() / track->pz();
340 
342 
343  for (std::vector<DetId>::const_iterator chamberId = chamberIds.begin(); chamberId != chamberIds.end(); ++chamberId)
344  {
345  if (chamberId->det() != DetId::Muon ) continue;
346 
347  if (m_doDT && chamberId->subdetId() == MuonSubdetId::DT)
348  {
351  DTChamberId id(chamberId->rawId());
352 
353  m_counter_dt++;
354 
355  if (id.station() < 4 && dt13 != NULL && dt13->numHits() >= m_minDT13Hits && dt2 != NULL && dt2->numHits() >= m_minDT2Hits && (dt2->chi2() / double(dt2->ndof())) < 2.0)
356  {
358 
359  double residual = dt13->global_residual();
360  double resslope = dt13->global_resslope();
361  double chi2 = dt13->chi2();
362  int dof = dt13->ndof();
363 
364  align::GlobalPoint gpos;
365  if (m_useStubPosition) gpos = dt13->global_stubpos();
366  else gpos = dt13->global_trackpos();
367  double phi = atan2(gpos.y(), gpos.x());
368  double z = gpos.z();
369 
370  assert(1 <= id.sector() && id.sector() <= 14);
371 
372  m_DTvsz_station[id.station()-1][id.sector()-1]->fill_x(charge, z, residual, chi2, dof);
373  m_DTvsz_station[id.station()-1][id.sector()-1]->fill_dxdz(charge, z, resslope, chi2, dof);
374  m_DTvsphi_station[id.station()-1][id.wheel()+2]->fill_x(charge, phi, residual, chi2, dof);
375  m_DTvsphi_station[id.station()-1][id.wheel()+2]->fill_dxdz(charge, phi, resslope, chi2, dof);
376 
378 
379  residual = dt2->global_residual();
380  resslope = dt2->global_resslope();
381  chi2 = dt2->chi2();
382  dof = dt2->ndof();
383 
384  if (m_useStubPosition) gpos = dt2->global_stubpos();
385  else gpos = dt2->global_trackpos();
386  phi = atan2(gpos.y(), gpos.x());
387  z = gpos.z();
388 
389  assert(1 <= id.sector() && id.sector() <= 14);
390 
391  m_DTvsz_station[id.station()-1][id.sector()-1]->fill_y(charge, z, residual, chi2, dof);
392  m_DTvsz_station[id.station()-1][id.sector()-1]->fill_dydz(charge, z, resslope, chi2, dof);
393  m_DTvsphi_station[id.station()-1][id.wheel()+2]->fill_y(charge, phi, residual, chi2, dof);
394  m_DTvsphi_station[id.station()-1][id.wheel()+2]->fill_dydz(charge, phi, resslope, chi2, dof);
395  }
396 
397  if (id.station() == 4 && dt13 != NULL && dt13->numHits() >= m_minDT13Hits)
398  {
400 
401  double residual = dt13->global_residual();
402  double resslope = dt13->global_resslope();
403  double chi2 = dt13->chi2();
404  int dof = dt13->ndof();
405 
406  align::GlobalPoint gpos;
407  if (m_useStubPosition) gpos = dt13->global_stubpos();
408  else gpos = dt13->global_trackpos();
409  double phi = atan2(gpos.y(), gpos.x());
410  double z = gpos.z();
411 
412  assert(1 <= id.sector() && id.sector() <= 14);
413 
414  m_DTvsz_station[id.station()-1][id.sector()-1]->fill_x(charge, z, residual, chi2, dof);
415  m_DTvsz_station[id.station()-1][id.sector()-1]->fill_dxdz(charge, z, resslope, chi2, dof);
416  m_DTvsphi_station[id.station()-1][id.wheel()+2]->fill_x(charge, phi, residual, chi2, dof);
417  m_DTvsphi_station[id.station()-1][id.wheel()+2]->fill_dxdz(charge, phi, resslope, chi2, dof);
418  }
419  }
420 
421  else if (m_doCSC && chamberId->subdetId() == MuonSubdetId::CSC)
422  {
424  CSCDetId id(chamberId->rawId());
425 
426  int ring = id.ring();
427  if (id.ring()==4) ring = 1; // combine ME1/a + ME1/b
428 
429  m_counter_csc++;
430 
431  if (csc != NULL && csc->numHits() >= m_minCSCHits)
432  {
434 
435  double residual = csc->global_residual();
436  double resslope = csc->global_resslope();
437  double chi2 = csc->chi2();
438  int dof = csc->ndof();
439 
440  align::GlobalPoint gpos;
441  if (m_useStubPosition) gpos = csc->global_stubpos();
442  else gpos = csc->global_trackpos();
443  double phi = atan2(gpos.y(), gpos.x());
444  // start phi from -5deg
445  if (phi<-M_PI/180.*5.) phi += 2.*M_PI;
446  double R = sqrt(pow(gpos.x(), 2) + pow(gpos.y(), 2));
447 
448  int chamber = id.chamber() - 1;
449  if (id.station() > 1 && ring == 1) chamber *= 2;
450 
451  assert(1 <= id.endcap() && id.endcap() <= 2 && 0 <= chamber && chamber <= 35);
452 
453  if (R>0.) m_CSCvsphi_me[id.endcap()-1][id.station()-1][ring-1]->fill_x_1d(residual/R, chi2, dof);
454 
455  m_CSCvsr_me[id.endcap()-1][id.station()-1][chamber]->fill_x(charge, R, residual, chi2, dof);
456  m_CSCvsr_me[id.endcap()-1][id.station()-1][chamber]->fill_dxdz(charge, R, resslope, chi2, dof);
457  m_CSCvsphi_me[id.endcap()-1][id.station()-1][ring-1]->fill_x(charge, phi, residual, chi2, dof);
458  m_CSCvsphi_me[id.endcap()-1][id.station()-1][ring-1]->fill_dxdz(charge, phi, resslope, chi2, dof);
459 
460  if (m_createNtuple && chi2 > 0.)// && TMath::Prob(chi2, dof) < 0.95)
461  {
462  m_id.init(id);
463  m_tr.q = charge;
464  m_tr.pt = mrft.getTrack()->pt();
465  m_tr.pz = mrft.getTrack()->pz();
466  m_re.res = residual;
467  m_re.slope = resslope;
468  m_re.rho = R;
469  m_re.phi = phi;
470  m_re.z = gpos.z();
471  m_run = iEvent.id().run();
472  m_cscnt->Fill();
473  }
474 
475  }
476  }
477 
478  //else { assert(false); }
479  } // end loop over chambers
480 }
RunNumber_t run() const
Definition: EventID.h:39
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()
T y() const
Definition: PV3DBase.h:63
#define NULL
Definition: scimark2.h:8
MuonSystemMapPlot1D * m_CSCvsr_me[2][4][36]
MuonSystemMapPlot1D * m_CSCvsphi_me[2][4][3]
double global_residual() const
const std::vector< DetId > chamberIds() const
static const int CSC
Definition: MuonSubdetId.h:13
T sqrt(T t)
Definition: SSEVec.h:18
double pt() const
track transverse momentum
Definition: TrackBase.h:616
T z() const
Definition: PV3DBase.h:64
const reco::Track * getTrack()
Definition: L1Track.h:19
#define M_PI
double pz() const
z coordinate of momentum vector
Definition: TrackBase.h:634
void fill_dxdz(char charge, double abscissa, double slopex, double chi2, int dof)
align::GlobalPoint global_stubpos()
edm::EventID id() const
Definition: EventBase.h:60
double global_resslope() const
int charge() const
track electric charge
Definition: TrackBase.h:562
static const int DT
Definition: MuonSubdetId.h:12
T x() const
Definition: PV3DBase.h:62
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
MuonChamberResidual * chamberResidual(DetId chamberId, int type)

Member Data Documentation

bool AlignmentMonitorMuonSystemMap1D::m_allowTIDTEC
private

Definition at line 58 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by processMuonResidualsFromTrack().

long AlignmentMonitorMuonSystemMap1D::m_counter_13numhits
private
long AlignmentMonitorMuonSystemMap1D::m_counter_2numhits
private
long AlignmentMonitorMuonSystemMap1D::m_counter_csc
private
long AlignmentMonitorMuonSystemMap1D::m_counter_cscnumhits
private
long AlignmentMonitorMuonSystemMap1D::m_counter_dt
private
long AlignmentMonitorMuonSystemMap1D::m_counter_event
private

Definition at line 69 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by afterAlignment(), book(), and event().

long AlignmentMonitorMuonSystemMap1D::m_counter_track
private

Definition at line 70 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by afterAlignment(), book(), and event().

long AlignmentMonitorMuonSystemMap1D::m_counter_trackdxy
private

Definition at line 72 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by afterAlignment(), book(), and event().

long AlignmentMonitorMuonSystemMap1D::m_counter_trackmoment
private

Definition at line 71 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by afterAlignment(), book(), and event().

long AlignmentMonitorMuonSystemMap1D::m_counter_trackokay
private
bool AlignmentMonitorMuonSystemMap1D::m_createNtuple
private
TTree* AlignmentMonitorMuonSystemMap1D::m_cscnt
private
MuonSystemMapPlot1D* AlignmentMonitorMuonSystemMap1D::m_CSCvsphi_me[2][4][3]
private

Definition at line 104 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by book(), and processMuonResidualsFromTrack().

MuonSystemMapPlot1D* AlignmentMonitorMuonSystemMap1D::m_CSCvsr_me[2][4][36]
private

Definition at line 102 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by book(), and processMuonResidualsFromTrack().

bool AlignmentMonitorMuonSystemMap1D::m_doCSC
private

Definition at line 64 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by book(), and processMuonResidualsFromTrack().

bool AlignmentMonitorMuonSystemMap1D::m_doDT
private

Definition at line 63 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by book(), and processMuonResidualsFromTrack().

MuonSystemMapPlot1D* AlignmentMonitorMuonSystemMap1D::m_DTvsphi_station[4][5]
private

Definition at line 103 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by book(), and processMuonResidualsFromTrack().

MuonSystemMapPlot1D* AlignmentMonitorMuonSystemMap1D::m_DTvsz_station[4][14]
private

Definition at line 101 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by book(), and processMuonResidualsFromTrack().

MyCSCDetId AlignmentMonitorMuonSystemMap1D::m_id
private
double AlignmentMonitorMuonSystemMap1D::m_maxDxy
private

Definition at line 55 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by event().

double AlignmentMonitorMuonSystemMap1D::m_maxTrackerRedChi2
private

Definition at line 57 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by processMuonResidualsFromTrack().

double AlignmentMonitorMuonSystemMap1D::m_maxTrackP
private

Definition at line 54 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by event().

double AlignmentMonitorMuonSystemMap1D::m_maxTrackPt
private

Definition at line 52 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by event().

int AlignmentMonitorMuonSystemMap1D::m_minCSCHits
private

Definition at line 62 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by processMuonResidualsFromTrack().

int AlignmentMonitorMuonSystemMap1D::m_minDT13Hits
private

Definition at line 60 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by processMuonResidualsFromTrack().

int AlignmentMonitorMuonSystemMap1D::m_minDT2Hits
private

Definition at line 61 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by processMuonResidualsFromTrack().

int AlignmentMonitorMuonSystemMap1D::m_minNCrossedChambers
private

Definition at line 59 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by processMuonResidualsFromTrack().

int AlignmentMonitorMuonSystemMap1D::m_minTrackerHits
private

Definition at line 56 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by processMuonResidualsFromTrack().

double AlignmentMonitorMuonSystemMap1D::m_minTrackP
private

Definition at line 53 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by event().

double AlignmentMonitorMuonSystemMap1D::m_minTrackPt
private

Definition at line 51 of file AlignmentMonitorMuonSystemMap1D.cc.

edm::InputTag AlignmentMonitorMuonSystemMap1D::m_muonCollectionTag
private

Definition at line 50 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by event().

std::vector<MuonSystemMapPlot1D*> AlignmentMonitorMuonSystemMap1D::m_plots
private

Definition at line 106 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by book().

MyResidual AlignmentMonitorMuonSystemMap1D::m_re
private
UInt_t AlignmentMonitorMuonSystemMap1D::m_run
private
MyTrack AlignmentMonitorMuonSystemMap1D::m_tr
private
bool AlignmentMonitorMuonSystemMap1D::m_useStubPosition
private

Definition at line 65 of file AlignmentMonitorMuonSystemMap1D.cc.

Referenced by processMuonResidualsFromTrack().