CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Attributes | Static Private Attributes
AlignmentMonitorGeneric Class Reference

#include <AlignmentMonitorGeneric.h>

Inheritance diagram for AlignmentMonitorGeneric:
AlignmentMonitorBase

Public Member Functions

 AlignmentMonitorGeneric (const edm::ParameterSet &, edm::ConsumesCollector iC)
 
void book () override
 Book or retrieve histograms; MUST be reimplemented. More...
 
void event (const edm::Event &, const edm::EventSetup &, const ConstTrajTrackPairCollection &) override
 Called for each event (by "run()"): may be reimplemented. More...
 
- Public Member Functions inherited from AlignmentMonitorBase
virtual void afterAlignment ()
 
 AlignmentMonitorBase (const edm::ParameterSet &cfg, const edm::ConsumesCollector &iC, std::string name)
 Constructor. More...
 
 AlignmentMonitorBase (const AlignmentMonitorBase &)=delete
 
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...
 
const AlignmentMonitorBaseoperator= (const AlignmentMonitorBase &)=delete
 
void startingNewLoop ()
 Called at beginning of loop: don't reimplement. More...
 
virtual ~AlignmentMonitorBase ()
 Destructor. More...
 

Private Types

typedef std::vector< TH1F * > Hist1Ds
 

Private Attributes

std::map< const Alignable *, Hist1Dsm_resHists
 
Hist1Ds m_trkHists
 

Static Private Attributes

static const unsigned int nBin_ = 50
 

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 28 of file AlignmentMonitorGeneric.h.

Member Typedef Documentation

◆ Hist1Ds

typedef std::vector<TH1F*> AlignmentMonitorGeneric::Hist1Ds
private

Definition at line 29 of file AlignmentMonitorGeneric.h.

Constructor & Destructor Documentation

◆ AlignmentMonitorGeneric()

AlignmentMonitorGeneric::AlignmentMonitorGeneric ( const edm::ParameterSet cfg,
edm::ConsumesCollector  iC 
)

Definition at line 11 of file AlignmentMonitorGeneric.cc.

12  : AlignmentMonitorBase(cfg, iC, "AlignmentMonitorGeneric") {}
AlignmentMonitorBase(const edm::ParameterSet &cfg, const edm::ConsumesCollector &iC, std::string name)
Constructor.

Member Function Documentation

◆ book()

void AlignmentMonitorGeneric::book ( )
overridevirtual

Book or retrieve histograms; MUST be reimplemented.

Implements AlignmentMonitorBase.

Definition at line 14 of file AlignmentMonitorGeneric.cc.

References Alignable::alignableObjectId(), AlignmentParameterStore::alignables(), AlignmentMonitorBase::book1D(), AlignableObjectId::commonObjectIdProvider(), compare::hists, B2GTnPMonitor_cfi::histTitle, mps_fire::i, l1ctLayer2EG_cff::id, Alignable::id(), M_PI, m_resHists, m_trkHists, dqmiodumpmetadata::n, Skims_PA_cff::name, nBin_, AlignmentMonitorBase::pMuon(), AlignmentMonitorBase::pStore(), AlignmentMonitorBase::pTracker(), AlCaHLTBitMon_QueryRunRegistry::string, and DetId::subdetId().

14  {
15  std::vector<std::string> residNames; // names of residual histograms
16 
17  residNames.push_back("x hit residuals pos track");
18  residNames.push_back("x hit residuals neg track");
19  residNames.push_back("y hit residuals pos track");
20  residNames.push_back("y hit residuals neg track");
21 
22  auto alignableObjectId = AlignableObjectId::commonObjectIdProvider(pTracker(), pMuon());
23 
24  const auto& alignables = pStore()->alignables();
25 
26  unsigned int nAlignable = alignables.size();
27  unsigned int nResidName = residNames.size();
28 
29  for (unsigned int i = 0; i < nAlignable; ++i) {
30  const Alignable* ali = alignables[i];
31 
32  Hist1Ds& hists = m_resHists[ali];
33 
34  hists.resize(nResidName, nullptr);
35 
36  align::ID id = ali->id();
38 
39  for (unsigned int n = 0; n < nResidName; ++n) {
40  const std::string& name = residNames[n];
41 
42  TString histName(name.c_str());
43  histName += Form("_%s_%d", alignableObjectId.idToString(type), id);
44  histName.ReplaceAll(" ", "");
45 
46  TString histTitle(name.c_str());
47  histTitle += Form(" for %s with ID %d (subdet %d)", alignableObjectId.idToString(type), id, DetId(id).subdetId());
48 
49  hists[n] = book1D(std::string("/iterN/") + std::string(name) + std::string("/"),
50  std::string(histName.Data()),
51  std::string(histTitle.Data()),
52  nBin_,
53  -5.,
54  5.);
55  }
56  }
57 
58  m_trkHists.resize(6, nullptr);
59 
60  m_trkHists[0] = book1D("/iterN/", "pt", "track p_{t} (GeV)", nBin_, 0.0, 100.0);
61  m_trkHists[1] = book1D("/iterN/", "eta", "track #eta", nBin_, -3.0, 3.0);
62  m_trkHists[2] = book1D("/iterN/", "phi", "track #phi", nBin_, -M_PI, M_PI);
63  m_trkHists[3] = book1D("/iterN/", "d0", "track d0 (cm)", nBin_, -0.02, 0.02);
64  m_trkHists[4] = book1D("/iterN/", "dz", "track dz (cm)", nBin_, -20.0, 20.0);
65  m_trkHists[5] = book1D("/iterN/", "chi2", "track #chi^{2}/dof", nBin_, 0.0, 20.0);
66 }
AlignmentParameterStore * pStore()
std::map< const Alignable *, Hist1Ds > m_resHists
static AlignableObjectId commonObjectIdProvider(const AlignableObjectId &, const AlignableObjectId &)
uint32_t ID
Definition: Definitions.h:24
const align::Alignables & alignables(void) const
get all alignables
AlignableTracker * pTracker()
std::vector< TH1F * > Hist1Ds
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
TH1F * book1D(std::string dir, std::string name, std::string title, int nchX, double lowX, double highX)
#define M_PI
Definition: DetId.h:17
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
static const unsigned int nBin_

◆ event()

void AlignmentMonitorGeneric::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 68 of file AlignmentMonitorGeneric.cc.

References AlignableNavigator::alignableFromDetId(), TrajectoryMeasurement::backwardPredictedState(), ALCARECOTkAlJpsiMuMu_cff::charge, fftjetvertexadder_cfi::errX, fftjetvertexadder_cfi::errY, TrajectoryMeasurement::forwardPredictedState(), h, TrackerGeomDet::localAlignmentError(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localPosition(), visualization-live-secondInstance_cfg::m, m_resHists, m_trkHists, Alignable::mother(), AlignmentMonitorBase::pNavigator(), LocalTrajectoryError::positionError(), TrajectoryMeasurement::recHit(), mathSSE::sqrt(), submitPVValidationJobs::t, HLT_2022v15_cff::track, tracks, LocalError::xx(), LocalError::xy(), and LocalError::yy().

Referenced by Types.EventID::cppID().

70  {
71  TrajectoryStateCombiner tsoscomb;
72 
73  for (unsigned int t = 0; t < tracks.size(); ++t) {
74  const reco::Track* track = tracks[t].second;
75 
76  float charge = tracks[t].second->charge();
77 
78  const std::vector<TrajectoryMeasurement>& meass = tracks[t].first->measurements();
79 
80  for (unsigned int m = 0; m < meass.size(); ++m) {
81  const TrajectoryMeasurement& meas = meass[m];
82  const TransientTrackingRecHit& hit = *meas.recHit();
83 
84  if (hit.isValid()) {
85  const Alignable* ali = pNavigator()->alignableFromDetId(hit.geographicalId());
86 
87  while (ali) {
88  std::map<const Alignable*, Hist1Ds>::iterator h = m_resHists.find(ali);
89  if (h != m_resHists.end()) {
91 
92  align::LocalVector res = tsos.localPosition() - hit.localPosition();
93  LocalError err1 = tsos.localError().positionError();
94  LocalError err2 = hit.localPositionError(); // CPE+APE
95 
96  // subtract APEs from err2 (if existing) from covariance matrix
97  auto det = static_cast<const TrackerGeomDet*>(hit.det());
98  const auto localAPE = det->localAlignmentError();
99  if (localAPE.valid()) {
100  err2 = LocalError(err2.xx() - localAPE.xx(), err2.xy() - localAPE.xy(), err2.yy() - localAPE.yy());
101  }
102 
103  float errX = std::sqrt(err1.xx() + err2.xx());
104  float errY = std::sqrt(err1.yy() + err2.yy());
105 
106  h->second[charge > 0 ? 0 : 1]->Fill(res.x() / errX);
107  h->second[charge > 0 ? 2 : 3]->Fill(res.y() / errY);
108  }
109  ali = ali->mother();
110  }
111  }
112  }
113 
114  m_trkHists[0]->Fill(track->pt());
115  m_trkHists[1]->Fill(track->eta());
116  m_trkHists[2]->Fill(track->phi());
117  m_trkHists[3]->Fill(track->d0());
118  m_trkHists[4]->Fill(track->dz());
119  m_trkHists[5]->Fill(track->normalizedChi2());
120  }
121 }
AlignableNavigator * pNavigator()
Alignable * mother() const
Return pointer to container alignable (if any)
Definition: Alignable.h:91
const LocalTrajectoryError & localError() const
std::map< const Alignable *, Hist1Ds > m_resHists
TrajectoryStateOnSurface const & forwardPredictedState() const
Access to forward predicted state (from fitter or builder)
LocalError positionError() const
Definition: Electron.h:6
float yy() const
Definition: LocalError.h:24
T sqrt(T t)
Definition: SSEVec.h:19
TrajectoryStateOnSurface const & backwardPredictedState() const
Access to backward predicted state (from smoother)
float xy() const
Definition: LocalError.h:23
auto const & tracks
cannot be loose
LocalError const & localAlignmentError() const
Return local alligment error.
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
AlignableDetOrUnitPtr alignableFromDetId(const DetId &detid)
Returns AlignableDetOrUnitPtr corresponding to given DetId.
float xx() const
Definition: LocalError.h:22
ConstRecHitPointer const & recHit() const

Member Data Documentation

◆ m_resHists

std::map<const Alignable*, Hist1Ds> AlignmentMonitorGeneric::m_resHists
private

Definition at line 43 of file AlignmentMonitorGeneric.h.

Referenced by book(), and event().

◆ m_trkHists

Hist1Ds AlignmentMonitorGeneric::m_trkHists
private

Definition at line 41 of file AlignmentMonitorGeneric.h.

Referenced by book(), and event().

◆ nBin_

const unsigned int AlignmentMonitorGeneric::nBin_ = 50
staticprivate

Definition at line 39 of file AlignmentMonitorGeneric.h.

Referenced by book().