CMS 3D CMS Logo

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

#include <Alignment/TrackerAlignment/plugins/MCMisalignmentScaler.cc>

Inheritance diagram for MCMisalignmentScaler:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 MCMisalignmentScaler (const edm::ParameterSet &)
 
 ~MCMisalignmentScaler () override=default
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const *> const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &)
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Types

using ScalerMap = std::unordered_map< unsigned int, std::unordered_map< int, double > >
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
ScalerMap decodeSubDetectors (const edm::VParameterSet &)
 

Private Attributes

const edm::ESGetToken< Alignments, TrackerAlignmentRcdaliToken_
 
bool firstEvent_ {true}
 
const edm::ESGetToken< GeometricDet, IdealGeometryRecordgeomDetToken_
 
const double outlierPullToIdealCut_
 
const edm::ESGetToken< SiPixelQuality, SiPixelQualityRcdpixelQualityToken_
 
const edm::ESGetToken< PTrackerAdditionalParametersPerDet, PTrackerAdditionalParametersPerDetRcdptitpToken_
 
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcdptpToken_
 
const bool pullBadModulesToIdeal_
 
const ScalerMap scalers_
 
const edm::ESGetToken< SiStripQuality, SiStripQualityRcdstripQualityToken_
 
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtopoToken_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Detailed Description

Description: Plugin to rescale misalignment wrt. ideal geometry

Implementation:

The plugin takes the ideal geometry and the alignment object and rescales the position difference by the scaling factor provided by the user.

Definition at line 62 of file MCMisalignmentScaler.cc.

Member Typedef Documentation

◆ ScalerMap

using MCMisalignmentScaler::ScalerMap = std::unordered_map<unsigned int, std::unordered_map<int, double> >
private

Definition at line 77 of file MCMisalignmentScaler.cc.

Constructor & Destructor Documentation

◆ MCMisalignmentScaler()

MCMisalignmentScaler::MCMisalignmentScaler ( const edm::ParameterSet iConfig)
explicit

Definition at line 92 of file MCMisalignmentScaler.cc.

References decodeSubDetectors(), and edm::ParameterSet::getParameter().

101  pullBadModulesToIdeal_{iConfig.getUntrackedParameter<bool>("pullBadModulesToIdeal")},
102  outlierPullToIdealCut_{iConfig.getUntrackedParameter<double>("outlierPullToIdealCut")} {}
const edm::ESGetToken< PTrackerAdditionalParametersPerDet, PTrackerAdditionalParametersPerDetRcd > ptitpToken_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::ESGetToken< Alignments, TrackerAlignmentRcd > aliToken_
const edm::ESGetToken< SiPixelQuality, SiPixelQualityRcd > pixelQualityToken_
std::vector< ParameterSet > VParameterSet
Definition: ParameterSet.h:34
const edm::ESGetToken< GeometricDet, IdealGeometryRecord > geomDetToken_
const double outlierPullToIdealCut_
T getUntrackedParameter(std::string const &, T const &) const
ScalerMap decodeSubDetectors(const edm::VParameterSet &)
const edm::ESGetToken< SiStripQuality, SiStripQualityRcd > stripQualityToken_
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcd > ptpToken_

◆ ~MCMisalignmentScaler()

MCMisalignmentScaler::~MCMisalignmentScaler ( )
overridedefault

Member Function Documentation

◆ analyze()

void MCMisalignmentScaler::analyze ( const edm::Event ,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 109 of file MCMisalignmentScaler.cc.

References a, aliToken_, b, cond::TimeTypeSpecs::beginValue, TrackerGeomBuilderFromGeometricDet::build(), Exception, firstEvent_, geomDetToken_, edm::EventSetup::getData(), edm::Service< T >::isAvailable(), SiStripQuality::IsModuleBad(), SiPixelQuality::IsModuleBad(), Alignments::m_align, outlierPullToIdealCut_, PixelSubdetector::PixelBarrel, pixelQualityToken_, ptitpToken_, ptpToken_, pullBadModulesToIdeal_, AlignTransform::rawId(), cond::runnumber, scaleFactor, scalers_, TrackerTopology::side(), SiStripBadComponentsDQMServiceTemplate_cfg::since, jetUpdater_cfi::sort, stripQualityToken_, GeomDetEnumerators::subDetId, StripSubdetector::TIB, TrackerTopology::tibSide(), cond::timeTypeSpecs, StripSubdetector::TOB, TrackerTopology::tobSide(), topoToken_, PbPb_ZMuSkimMuonDPG_cff::tracker, and cond::service::PoolDBOutputService::writeOneIOV().

109  {
110  if (!firstEvent_)
111  return;
112  firstEvent_ = false;
113 
114  // get handle on bad modules
115  const SiPixelQuality* pixelModules = &iSetup.getData(pixelQualityToken_);
116  const SiStripQuality* stripModules = &iSetup.getData(stripQualityToken_);
117 
118  // get the tracker geometry
119  const GeometricDet* geometricDet = &iSetup.getData(geomDetToken_);
120  const PTrackerParameters& ptp = iSetup.getData(ptpToken_);
122  const TrackerTopology* topology = &iSetup.getData(topoToken_);
123 
124  TrackerGeomBuilderFromGeometricDet trackerBuilder;
125  auto tracker = std::unique_ptr<TrackerGeometry>{trackerBuilder.build(geometricDet, ptitp, ptp, topology)};
126 
127  auto dets = tracker->dets();
128  std::sort(dets.begin(), dets.end(), [](const auto& a, const auto& b) {
129  return a->geographicalId().rawId() < b->geographicalId().rawId();
130  });
131 
132  // get the input alignment
133  const Alignments* alignments = &iSetup.getData(aliToken_);
134 
135  if (dets.size() != alignments->m_align.size()) {
136  throw cms::Exception("GeometryMismatch") << "Size mismatch between alignments (size=" << alignments->m_align.size()
137  << ") and ideal geometry (size=" << dets.size() << ")";
138  }
139 
140  Alignments rescaledAlignments{};
141  {
142  auto outlierCounter{0};
143  auto ideal = dets.cbegin();
144  const auto& ideal_end = dets.cend();
145  auto misaligned = alignments->m_align.cbegin();
146  for (; ideal != ideal_end; ++ideal, ++misaligned) {
147  if ((*ideal)->geographicalId().rawId() != misaligned->rawId()) {
148  throw cms::Exception("GeometryMismatch") << "Order differs between Dets in alignments ideal geometry.";
149  }
150 
151  // determine scale factor
152  const auto& subDetId = (*ideal)->geographicalId().subdetId();
153  auto side = topology->side((*ideal)->geographicalId());
154  if (side == 0) {
155  switch (subDetId) {
157  side = 1; // both sides are treated identical -> pick one of them
158  break;
160  side = topology->tibSide((*ideal)->geographicalId());
161  break;
163  side = topology->tobSide((*ideal)->geographicalId());
164  break;
165  default:
166  break;
167  }
168  }
169  auto scaleFactor = scalers_.find(subDetId)->second.find(side)->second;
170 
172  (pixelModules->IsModuleBad(misaligned->rawId()) || stripModules->IsModuleBad(misaligned->rawId()))) {
173  scaleFactor = 0.0;
174  }
175 
176  auto x_diff = misaligned->translation().x() - (*ideal)->position().x();
177  auto y_diff = misaligned->translation().y() - (*ideal)->position().y();
178  auto z_diff = misaligned->translation().z() - (*ideal)->position().z();
179 
180  auto xx_diff = misaligned->rotation().xx() - (*ideal)->rotation().xx();
181  auto xy_diff = misaligned->rotation().xy() - (*ideal)->rotation().xy();
182  auto xz_diff = misaligned->rotation().xz() - (*ideal)->rotation().xz();
183  auto yx_diff = misaligned->rotation().yx() - (*ideal)->rotation().yx();
184  auto yy_diff = misaligned->rotation().yy() - (*ideal)->rotation().yy();
185  auto yz_diff = misaligned->rotation().yz() - (*ideal)->rotation().yz();
186  auto zx_diff = misaligned->rotation().zx() - (*ideal)->rotation().zx();
187  auto zy_diff = misaligned->rotation().zy() - (*ideal)->rotation().zy();
188  auto zz_diff = misaligned->rotation().zz() - (*ideal)->rotation().zz();
189 
190  if (outlierPullToIdealCut_ > 0.0 &&
191  (x_diff * x_diff + y_diff * y_diff + z_diff * z_diff) > outlierPullToIdealCut_ * outlierPullToIdealCut_) {
192  ++outlierCounter;
193  edm::LogInfo("Alignment") << outlierCounter << ") Outlier found in subdetector " << subDetId
194  << ": delta x: " << x_diff << ", delta y: " << y_diff << ", delta z: " << z_diff
195  << ", delta xx: " << xx_diff << ", delta xy: " << xy_diff
196  << ", delta xz: " << xz_diff << ", delta yx: " << yx_diff
197  << ", delta yx: " << yy_diff << ", delta yy: " << yz_diff
198  << ", delta zz: " << zx_diff << ", delta zy: " << zy_diff
199  << ", delta zz: " << zz_diff << "\n";
200  scaleFactor = 0.0;
201  }
202 
203  const AlignTransform::Translation rescaledTranslation{(*ideal)->position().x() + scaleFactor * x_diff,
204  (*ideal)->position().y() + scaleFactor * y_diff,
205  (*ideal)->position().z() + scaleFactor * z_diff};
206 
207  const AlignTransform::Rotation rescaledRotation{
208  CLHEP::HepRep3x3{(*ideal)->rotation().xx() + scaleFactor * xx_diff,
209  (*ideal)->rotation().xy() + scaleFactor * xy_diff,
210  (*ideal)->rotation().xz() + scaleFactor * xz_diff,
211  (*ideal)->rotation().yx() + scaleFactor * yx_diff,
212  (*ideal)->rotation().yy() + scaleFactor * yy_diff,
213  (*ideal)->rotation().yz() + scaleFactor * yz_diff,
214  (*ideal)->rotation().zx() + scaleFactor * zx_diff,
215  (*ideal)->rotation().zy() + scaleFactor * zy_diff,
216  (*ideal)->rotation().zz() + scaleFactor * zz_diff}};
217 
218  const AlignTransform rescaledTransform{rescaledTranslation, rescaledRotation, misaligned->rawId()};
219  rescaledAlignments.m_align.emplace_back(rescaledTransform);
220  }
221  }
222 
224  if (!poolDb.isAvailable()) {
225  throw cms::Exception("NotAvailable") << "PoolDBOutputService not available";
226  }
227  edm::LogInfo("Alignment") << "Writing rescaled tracker-alignment record.";
229  poolDb->writeOneIOV(rescaledAlignments, since, "TrackerAlignmentRcd");
230 }
const edm::ESGetToken< PTrackerAdditionalParametersPerDet, PTrackerAdditionalParametersPerDetRcd > ptitpToken_
const TimeTypeSpecs timeTypeSpecs[]
Definition: Time.cc:16
unsigned int tibSide(const DetId &id) const
align::ID rawId() const
Do not expose Euler angles since we may change its type later.
const edm::ESGetToken< Alignments, TrackerAlignmentRcd > aliToken_
unsigned int tobSide(const DetId &id) const
Time_t beginValue
Definition: Time.h:41
const edm::ESGetToken< SiPixelQuality, SiPixelQualityRcd > pixelQualityToken_
TrackerGeometry * build(const GeometricDet *gd, const PTrackerAdditionalParametersPerDet *ptitp, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
constexpr unsigned int subDetId[21]
CLHEP::Hep3Vector Translation
bool IsModuleBad(uint32_t detid) const
bool IsModuleBad(const uint32_t &detid) const
unsigned int side(const DetId &id) const
std::vector< AlignTransform > m_align
Definition: Alignments.h:19
const edm::ESGetToken< GeometricDet, IdealGeometryRecord > geomDetToken_
const double outlierPullToIdealCut_
Hash writeOneIOV(const T &payload, Time_t time, const std::string &recordName)
constexpr G4double scaleFactor
bool getData(T &iHolder) const
Definition: EventSetup.h:122
static constexpr auto TOB
Log< level::Info, false > LogInfo
static constexpr auto TIB
double b
Definition: hdecay.h:118
const edm::ESGetToken< SiStripQuality, SiStripQualityRcd > stripQualityToken_
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
double a
Definition: hdecay.h:119
bool isAvailable() const
Definition: Service.h:40
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcd > ptpToken_
CLHEP::HepRotation Rotation

◆ decodeSubDetectors()

MCMisalignmentScaler::ScalerMap MCMisalignmentScaler::decodeSubDetectors ( const edm::VParameterSet psets)
private

Definition at line 232 of file MCMisalignmentScaler.cc.

References funct::abs(), Exception, DQMScaleToClient_cfi::factor, Skims_PA_cff::name, PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, muonDTDigis_cfi::pset, AlCaHLTBitMon_QueryRunRegistry::string, GeomDetEnumerators::subDetId, StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, and StripSubdetector::TOB.

Referenced by MCMisalignmentScaler().

232  {
233  // initialize scaler map
234  ScalerMap subDetMap;
235  for (unsigned int subDetId = 1; subDetId <= 6; ++subDetId) {
236  subDetMap[subDetId][1] = 1.0;
237  subDetMap[subDetId][2] = 1.0;
238  }
239 
240  // apply scale factors from configuration
241  for (const auto& pset : psets) {
242  const auto& name = pset.getUntrackedParameter<std::string>("subDetector");
243  const auto& factor = pset.getUntrackedParameter<double>("factor");
244 
245  std::vector<int> sides;
246  if (name.find('-') != std::string::npos)
247  sides.push_back(1);
248  if (name.find('+') != std::string::npos)
249  sides.push_back(2);
250  if (sides.empty()) { // -> use both sides
251  sides.push_back(1);
252  sides.push_back(2);
253  }
254 
255  if (name.find("Tracker") != std::string::npos) {
256  for (unsigned int subDetId = 1; subDetId <= 6; ++subDetId) {
257  for (const auto& side : sides)
258  subDetMap[subDetId][side] *= factor;
259  }
260  if (sides.size() == 1) {
261  // if only one side to be scaled
262  // -> scale also the other side for PXB (subdetid = 1)
263  subDetMap[PixelSubdetector::PixelBarrel][std::abs(sides[0] - 2) + 1] *= factor;
264  }
265  } else if (name.find("PXB") != std::string::npos) {
266  // ignore sides for PXB
267  subDetMap[PixelSubdetector::PixelBarrel][1] *= factor;
268  subDetMap[PixelSubdetector::PixelBarrel][2] *= factor;
269  } else if (name.find("PXF") != std::string::npos) {
270  for (const auto& side : sides)
271  subDetMap[PixelSubdetector::PixelEndcap][side] *= factor;
272  } else if (name.find("TIB") != std::string::npos) {
273  for (const auto& side : sides)
274  subDetMap[StripSubdetector::TIB][side] *= factor;
275  } else if (name.find("TOB") != std::string::npos) {
276  for (const auto& side : sides)
277  subDetMap[StripSubdetector::TOB][side] *= factor;
278  } else if (name.find("TID") != std::string::npos) {
279  for (const auto& side : sides)
280  subDetMap[StripSubdetector::TID][side] *= factor;
281  } else if (name.find("TEC") != std::string::npos) {
282  for (const auto& side : sides)
283  subDetMap[StripSubdetector::TEC][side] *= factor;
284  } else {
285  throw cms::Exception("BadConfig") << "@SUB=MCMisalignmentScaler::decodeSubDetectors\n"
286  << "Unknown tracker subdetector: " << name
287  << "\nSupported options: Tracker, PXB, PXF, TIB, TOB, TID, TEC "
288  << "(possibly decorated with '+' or '-')";
289  }
290  }
291 
292  std::stringstream logInfo;
293  logInfo << "MC misalignment scale factors:\n";
294  for (const auto& subdet : subDetMap) {
295  logInfo << " Subdet " << subdet.first << "\n";
296  for (const auto& side : subdet.second) {
297  logInfo << " side " << side.first << ": " << side.second << "\n";
298  }
299  logInfo << "\n";
300  }
301  edm::LogInfo("Alignment") << logInfo.str();
302 
303  return subDetMap;
304 }
static constexpr auto TEC
constexpr unsigned int subDetId[21]
std::unordered_map< unsigned int, std::unordered_map< int, double > > ScalerMap
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr auto TOB
Log< level::Info, false > LogInfo
static constexpr auto TIB
static constexpr auto TID

◆ fillDescriptions()

void MCMisalignmentScaler::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 307 of file MCMisalignmentScaler.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::addUntracked(), submitPVResolutionJobs::desc, edm::ParameterSetDescription::setComment(), and AlCaHLTBitMon_QueryRunRegistry::string.

307  {
309  desc.setComment(
310  "Creates rescaled MC misalignment scenario. "
311  "PoolDBOutputService must be set up for 'TrackerAlignmentRcd'.");
312  edm::ParameterSetDescription descScaler;
313  descScaler.setComment(
314  "ParameterSet specifying the tracker part to be scaled "
315  "by a given factor.");
316  descScaler.addUntracked<std::string>("subDetector", "Tracker");
317  descScaler.addUntracked<double>("factor", 1.0);
318  desc.addVPSet("scalers", descScaler, std::vector<edm::ParameterSet>(1));
319  desc.addUntracked<bool>("pullBadModulesToIdeal", false);
320  desc.addUntracked<double>("outlierPullToIdealCut", -1.0);
321  descriptions.add("mcMisalignmentScaler", desc);
322 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void setComment(std::string const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

◆ aliToken_

const edm::ESGetToken<Alignments, TrackerAlignmentRcd> MCMisalignmentScaler::aliToken_
private

Definition at line 76 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ firstEvent_

bool MCMisalignmentScaler::firstEvent_ {true}
private

Definition at line 86 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ geomDetToken_

const edm::ESGetToken<GeometricDet, IdealGeometryRecord> MCMisalignmentScaler::geomDetToken_
private

Definition at line 72 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ outlierPullToIdealCut_

const double MCMisalignmentScaler::outlierPullToIdealCut_
private

Definition at line 85 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ pixelQualityToken_

const edm::ESGetToken<SiPixelQuality, SiPixelQualityRcd> MCMisalignmentScaler::pixelQualityToken_
private

Definition at line 70 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ ptitpToken_

Definition at line 74 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ ptpToken_

const edm::ESGetToken<PTrackerParameters, PTrackerParametersRcd> MCMisalignmentScaler::ptpToken_
private

Definition at line 73 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ pullBadModulesToIdeal_

const bool MCMisalignmentScaler::pullBadModulesToIdeal_
private

Definition at line 84 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ scalers_

const ScalerMap MCMisalignmentScaler::scalers_
private

Definition at line 83 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ stripQualityToken_

const edm::ESGetToken<SiStripQuality, SiStripQualityRcd> MCMisalignmentScaler::stripQualityToken_
private

Definition at line 71 of file MCMisalignmentScaler.cc.

Referenced by analyze().

◆ topoToken_

const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> MCMisalignmentScaler::topoToken_
private

Definition at line 75 of file MCMisalignmentScaler.cc.

Referenced by analyze().