#include <AlignmentMonitorGeneric.h>
Public Member Functions | |
virtual void | afterAlignment (const edm::EventSetup &) |
AlignmentMonitorGeneric (const edm::ParameterSet &) | |
virtual void | book () |
Book or retrieve histograms; MUST be reimplemented. | |
virtual void | event (const edm::Event &, const edm::EventSetup &, const ConstTrajTrackPairCollection &) |
Called for each event (by "run()"): may be reimplemented. | |
Private Types | |
typedef std::vector< TH1F * > | Hist1Ds |
Private Attributes | |
std::map< const Alignable *, Hist1Ds > | m_resHists |
Hist1Ds | m_trkHists |
Static Private Attributes | |
static const unsigned int | nBin_ = 50 |
Definition at line 28 of file AlignmentMonitorGeneric.h.
typedef std::vector<TH1F*> AlignmentMonitorGeneric::Hist1Ds [private] |
Definition at line 31 of file AlignmentMonitorGeneric.h.
AlignmentMonitorGeneric::AlignmentMonitorGeneric | ( | const edm::ParameterSet & | cfg | ) |
Definition at line 10 of file AlignmentMonitorGeneric.cc.
: AlignmentMonitorBase(cfg, "AlignmentMonitorGeneric") { }
virtual void AlignmentMonitorGeneric::afterAlignment | ( | const edm::EventSetup & | iSetup | ) | [inline, virtual] |
Called after updating AlignableTracker and AlignableMuon (by "endOfLoop()"): may be reimplemented
Reimplemented from AlignmentMonitorBase.
Definition at line 46 of file AlignmentMonitorGeneric.h.
{}
void AlignmentMonitorGeneric::book | ( | ) | [virtual] |
Book or retrieve histograms; MUST be reimplemented.
Implements AlignmentMonitorBase.
Definition at line 15 of file AlignmentMonitorGeneric.cc.
References Alignable::alignableObjectId(), AlignmentParameterStore::alignables(), AlignmentMonitorBase::book1D(), i, Alignable::id(), M_PI, m_resHists, m_trkHists, n, mergeVDriftHistosByStation::name, nBin_, AlignmentMonitorBase::pStore(), DetId::subdetId(), and AlignableObjectId::typeToName().
{ static AlignableObjectId idMap; std::vector<std::string> residNames; // names of residual histograms residNames.push_back("x hit residuals pos track"); residNames.push_back("x hit residuals neg track"); residNames.push_back("y hit residuals pos track"); residNames.push_back("y hit residuals neg track"); const std::vector<Alignable*>& alignables = pStore()->alignables(); unsigned int nAlignable = alignables.size(); unsigned int nResidName = residNames.size(); for (unsigned int i = 0; i < nAlignable; ++i) { const Alignable* ali = alignables[i]; Hist1Ds& hists = m_resHists[ali]; hists.resize(nResidName, 0); align::ID id = ali->id(); align::StructureType type = ali->alignableObjectId(); for (unsigned int n = 0; n < nResidName; ++n) { const std::string& name = residNames[n]; TString histName(name.c_str()); histName += Form("_%s_%d", idMap.typeToName(type).c_str(), id); histName.ReplaceAll(" ", ""); TString histTitle(name.c_str()); histTitle += Form(" for %s with ID %d (subdet %d)", idMap.typeToName(type).c_str(), id, DetId(id).subdetId()); hists[n] = book1D(std::string("/iterN/") + std::string(name) + std::string("/"), std::string(histName), std::string(histTitle), nBin_, -5., 5.); } } m_trkHists.resize(6, 0); m_trkHists[0] = book1D("/iterN/", "pt" , "track p_{t} (GeV)" , nBin_, 0.0,100.0); m_trkHists[1] = book1D("/iterN/", "eta" , "track #eta" , nBin_, - 3.0, 3.0); m_trkHists[2] = book1D("/iterN/", "phi" , "track #phi" , nBin_, -M_PI, M_PI); m_trkHists[3] = book1D("/iterN/", "d0" , "track d0 (cm)" , nBin_, -0.02, 0.02); m_trkHists[4] = book1D("/iterN/", "dz" , "track dz (cm)" , nBin_, -20.0, 20.0); m_trkHists[5] = book1D("/iterN/", "chi2", "track #chi^{2}/dof", nBin_, 0.0, 20.0); }
void AlignmentMonitorGeneric::event | ( | const edm::Event & | iEvent, |
const edm::EventSetup & | iSetup, | ||
const ConstTrajTrackPairCollection & | iTrajTracks | ||
) | [virtual] |
Called for each event (by "run()"): may be reimplemented.
Reimplemented from AlignmentMonitorBase.
Definition at line 70 of file AlignmentMonitorGeneric.cc.
References AlignableNavigator::alignableFromDetId(), TrajectoryMeasurement::backwardPredictedState(), DeDxDiscriminatorTools::charge(), reco::TrackBase::d0(), reco::TrackBase::dz(), reco::TrackBase::eta(), TrajectoryMeasurement::forwardPredictedState(), TrackingRecHit::geographicalId(), h, TrackingRecHit::isValid(), TrajectoryStateOnSurface::localError(), TrackingRecHit::localPosition(), TrajectoryStateOnSurface::localPosition(), TrackingRecHit::localPositionError(), m, m_resHists, m_trkHists, Alignable::mother(), reco::TrackBase::normalizedChi2(), reco::TrackBase::phi(), AlignmentMonitorBase::pNavigator(), LocalTrajectoryError::positionError(), reco::TrackBase::pt(), TrajectoryMeasurement::recHit(), mathSSE::sqrt(), matplotRender::t, LocalError::xx(), and LocalError::yy().
{ static TrajectoryStateCombiner tsoscomb; for (unsigned int t = 0; t < tracks.size(); ++t) { const reco::Track* track = tracks[t].second; float charge = tracks[t].second->charge(); const std::vector<TrajectoryMeasurement>& meass = tracks[t].first->measurements(); for (unsigned int m = 0; m < meass.size(); ++m) { const TrajectoryMeasurement& meas = meass[m]; const TransientTrackingRecHit& hit = *meas.recHit(); if ( hit.isValid() ) { const Alignable* ali = pNavigator()->alignableFromDetId( hit.geographicalId() ); while (ali) { std::map<const Alignable*, Hist1Ds>::iterator h = m_resHists.find(ali); if ( h != m_resHists.end() ) { TrajectoryStateOnSurface tsos = tsoscomb( meas.forwardPredictedState(), meas.backwardPredictedState() ); align::LocalVector res = tsos.localPosition() - hit.localPosition(); LocalError err1 = tsos.localError().positionError(); LocalError err2 = hit.localPositionError(); float errX = std::sqrt( err1.xx() + err2.xx() ); float errY = std::sqrt( err1.yy() + err2.yy() ); h->second[charge > 0 ? 0 : 1]->Fill(res.x() / errX); h->second[charge > 0 ? 2 : 3]->Fill(res.y() / errY); } ali = ali->mother(); } } } m_trkHists[0]->Fill( track->pt() ); m_trkHists[1]->Fill( track->eta() ); m_trkHists[2]->Fill( track->phi() ); m_trkHists[3]->Fill( track->d0() ); m_trkHists[4]->Fill( track->dz() ); m_trkHists[5]->Fill( track->normalizedChi2() ); } }
std::map<const Alignable*, Hist1Ds> AlignmentMonitorGeneric::m_resHists [private] |
Definition at line 56 of file AlignmentMonitorGeneric.h.
Hist1Ds AlignmentMonitorGeneric::m_trkHists [private] |
Definition at line 54 of file AlignmentMonitorGeneric.h.
const unsigned int AlignmentMonitorGeneric::nBin_ = 50 [static, private] |
Definition at line 52 of file AlignmentMonitorGeneric.h.
Referenced by book().