CMS 3D CMS Logo

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

#include <MillePedeFileReader.h>

Public Types

enum  { SIZE_LG_STRUCTS = 6, SIZE_HG_STRUCTS = 820 }
 

Public Member Functions

const int binariesAmount () const
 
const mpPCLresults getResults () const
 
const std::map< std::string, std::array< bool, 6 > > & getResultsHG () const
 
const AlignPCLThresholdsHG::threshold_map getThresholdMap () const
 
const std::array< double, SIZE_LG_STRUCTS > & getTXobs () const
 
const std::array< double, SIZE_HG_STRUCTS > & getTXobs_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getTXobsErr () const
 
const std::array< double, SIZE_HG_STRUCTS > & getTXobsErr_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getTYobs () const
 
const std::array< double, SIZE_HG_STRUCTS > & getTYobs_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getTYobsErr () const
 
const std::array< double, SIZE_HG_STRUCTS > & getTYobsErr_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getTZobs () const
 
const std::array< double, SIZE_HG_STRUCTS > & getTZobs_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getTZobsErr () const
 
const std::array< double, SIZE_HG_STRUCTS > & getTZobsErr_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getXobs () const
 
const std::array< double, SIZE_HG_STRUCTS > & getXobs_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getXobsErr () const
 
const std::array< double, SIZE_HG_STRUCTS > & getXobsErr_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getYobs () const
 
const std::array< double, SIZE_HG_STRUCTS > & getYobs_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getYobsErr () const
 
const std::array< double, SIZE_HG_STRUCTS > & getYobsErr_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getZobs () const
 
const std::array< double, SIZE_HG_STRUCTS > & getZobs_HG () const
 
const std::array< double, SIZE_LG_STRUCTS > & getZobsErr () const
 
const std::array< double, SIZE_HG_STRUCTS > & getZobsErr_HG () const
 
 MillePedeFileReader (const edm::ParameterSet &, const std::shared_ptr< const PedeLabelerBase > &, const std::shared_ptr< const AlignPCLThresholdsHG > &, const std::shared_ptr< const PixelTopologyMap > &, const std::shared_ptr< const SiPixelQuality > &)
 
void read ()
 
bool storeAlignments ()
 
virtual ~MillePedeFileReader ()=default
 

Static Public Member Functions

static void fillPSetDescription (edm::ParameterSetDescription &desc)
 

Private Types

enum  PclHLS : int {
  PclHLS::NotInPCL = -1, PclHLS::TPEHalfCylinderXplusZminus = 0, PclHLS::TPEHalfCylinderXminusZminus = 1, PclHLS::TPBHalfBarrelXplus = 2,
  PclHLS::TPBHalfBarrelXminus = 3, PclHLS::TPEHalfCylinderXplusZplus = 4, PclHLS::TPEHalfCylinderXminusZplus = 5, PclHLS::TPBLadderLayer1 = 6,
  PclHLS::TPBLadderLayer2 = 7, PclHLS::TPBLadderLayer3 = 8, PclHLS::TPBLadderLayer4 = 9, PclHLS::TPEPanelDisk1 = 10,
  PclHLS::TPEPanelDisk2 = 11, PclHLS::TPEPanelDisk3 = 12, PclHLS::TPEPanelDiskM1 = 13, PclHLS::TPEPanelDiskM2 = 14,
  PclHLS::TPEPanelDiskM3 = 15
}
 

Private Member Functions

PclHLS getHLS (const Alignable *)
 
int getIndexForHG (align::ID id, PclHLS HLS)
 
std::string getStringFromHLS (PclHLS HLS)
 
void initializeIndexHelper ()
 
bool isAlignableActive (const Alignable *alignable, const std::shared_ptr< const SiPixelQuality > &pixelQual)
 
void readMillePedeEndFile ()
 
void readMillePedeLogFile ()
 
void readMillePedeResultFile ()
 

Private Attributes

int binariesAmount_ {0}
 
std::string dirName_
 
int exitCode_ {-1}
 
std::string exitMessage_ {""}
 
std::map< std::string, std::array< bool, 6 > > fractionExceeded_
 
const bool ignoreInactiveAlignables_
 
std::unordered_map< PclHLS, std::pair< int, int > > indexHelper
 
const bool isHG_
 
const std::string millePedeEndFile_
 
const std::string millePedeLogFile_
 
const std::string millePedeResFile_
 
int Nrec_ {0}
 
const std::shared_ptr< const PedeLabelerBasepedeLabeler_
 
const std::shared_ptr< const PixelTopologyMappixelTopologyMap_
 
const std::shared_ptr< const SiPixelQualityquality_
 
const std::shared_ptr< const AlignPCLThresholdsHGtheThresholds_
 
std::array< double, SIZE_LG_STRUCTStXobs_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTStXobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTStXobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTStXobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTStYobs_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTStYobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTStYobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTStYobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTStZobs_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTStZobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTStZobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTStZobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::bitset< 4 > updateBits_
 
bool updateDB_ {false}
 
bool vetoUpdateDB_ {false}
 
std::array< double, SIZE_LG_STRUCTSXobs_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTSXobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTSXobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTSXobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTSYobs_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTSYobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTSYobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTSYobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTSZobs_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTSZobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 
std::array< double, SIZE_LG_STRUCTSZobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
 
std::array< double, SIZE_HG_STRUCTSZobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
 

Static Private Attributes

static constexpr std::array< double, 6 > multiplier_
 

Detailed Description

Definition at line 66 of file MillePedeFileReader.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
SIZE_LG_STRUCTS 
SIZE_HG_STRUCTS 

Definition at line 82 of file MillePedeFileReader.h.

◆ PclHLS

enum MillePedeFileReader::PclHLS : int
strongprivate
Enumerator
NotInPCL 
TPEHalfCylinderXplusZminus 
TPEHalfCylinderXminusZminus 
TPBHalfBarrelXplus 
TPBHalfBarrelXminus 
TPEHalfCylinderXplusZplus 
TPEHalfCylinderXminusZplus 
TPBLadderLayer1 
TPBLadderLayer2 
TPBLadderLayer3 
TPBLadderLayer4 
TPEPanelDisk1 
TPEPanelDisk2 
TPEPanelDisk3 
TPEPanelDiskM1 
TPEPanelDiskM2 
TPEPanelDiskM3 

Definition at line 128 of file MillePedeFileReader.h.

128  : int {
129  NotInPCL = -1,
130  TPEHalfCylinderXplusZminus = 0,
131  TPEHalfCylinderXminusZminus = 1,
132  TPBHalfBarrelXplus = 2,
133  TPBHalfBarrelXminus = 3,
134  TPEHalfCylinderXplusZplus = 4,
135  TPEHalfCylinderXminusZplus = 5,
136  TPBLadderLayer1 = 6,
137  TPBLadderLayer2 = 7,
138  TPBLadderLayer3 = 8,
139  TPBLadderLayer4 = 9,
140  TPEPanelDisk1 = 10,
141  TPEPanelDisk2 = 11,
142  TPEPanelDisk3 = 12,
143  TPEPanelDiskM1 = 13,
144  TPEPanelDiskM2 = 14,
145  TPEPanelDiskM3 = 15,
146  };

Constructor & Destructor Documentation

◆ MillePedeFileReader()

MillePedeFileReader::MillePedeFileReader ( const edm::ParameterSet config,
const std::shared_ptr< const PedeLabelerBase > &  pedeLabeler,
const std::shared_ptr< const AlignPCLThresholdsHG > &  theThresholds,
const std::shared_ptr< const PixelTopologyMap > &  pixelTopologyMap,
const std::shared_ptr< const SiPixelQuality > &  pixelQualityMap 
)
explicit

Definition at line 17 of file MillePedeFileReader.cc.

References dirName_.

23  theThresholds_(theThresholds),
24  pixelTopologyMap_(pixelTopologyMap),
25  ignoreInactiveAlignables_(config.getParameter<bool>("ignoreInactiveAlignables")),
26  quality_(pixelQualityMap),
27  dirName_(config.getParameter<std::string>("fileDir")),
28  millePedeEndFile_(config.getParameter<std::string>("millePedeEndFile")),
29  millePedeLogFile_(config.getParameter<std::string>("millePedeLogFile")),
30  millePedeResFile_(config.getParameter<std::string>("millePedeResFile")),
31  isHG_(config.getParameter<bool>("isHG")) {
32  if (!dirName_.empty() && dirName_.find_last_of('/') != dirName_.size() - 1)
33  dirName_ += '/'; // may need '/'
34 }
const std::shared_ptr< const AlignPCLThresholdsHG > theThresholds_
const std::shared_ptr< const PixelTopologyMap > pixelTopologyMap_
const std::shared_ptr< const SiPixelQuality > quality_
Definition: config.py:1
const std::string millePedeLogFile_
const std::string millePedeResFile_
const bool ignoreInactiveAlignables_
const std::shared_ptr< const PedeLabelerBase > pedeLabeler_
const std::string millePedeEndFile_

◆ ~MillePedeFileReader()

virtual MillePedeFileReader::~MillePedeFileReader ( )
virtualdefault

Member Function Documentation

◆ binariesAmount()

const int MillePedeFileReader::binariesAmount ( ) const
inline

Definition at line 116 of file MillePedeFileReader.h.

References binariesAmount_.

◆ fillPSetDescription()

void MillePedeFileReader::fillPSetDescription ( edm::ParameterSetDescription desc)
static

Definition at line 628 of file MillePedeFileReader.cc.

References submitPVResolutionJobs::desc, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by MillePedeDQMModule::fillDescriptions().

628  {
629  desc.add<std::string>("fileDir", std::string());
630  desc.add<bool>("ignoreInactiveAlignables", true);
631  desc.add<std::string>("millePedeEndFile", "millepede.end");
632  desc.add<std::string>("millePedeLogFile", "millepede.log");
633  desc.add<std::string>("millePedeResFile", "millepede.res");
634  desc.add<bool>("isHG", false);
635 }

◆ getHLS()

MillePedeFileReader::PclHLS MillePedeFileReader::getHLS ( const Alignable alignable)
private

Definition at line 416 of file MillePedeFileReader.cc.

References Alignable::alignableObjectId(), Exception, Alignable::id(), NotInPCL, pedeLabeler_, align::TPBHalfBarrel, TPBHalfBarrelXminus, TPBHalfBarrelXplus, align::TPBLadder, TPBLadderLayer1, TPBLadderLayer2, TPBLadderLayer3, TPBLadderLayer4, align::TPEHalfCylinder, TPEHalfCylinderXminusZminus, TPEHalfCylinderXminusZplus, TPEHalfCylinderXplusZminus, TPEHalfCylinderXplusZplus, align::TPEPanel, TPEPanelDisk1, TPEPanelDisk2, TPEPanelDisk3, TPEPanelDiskM1, TPEPanelDiskM2, and TPEPanelDiskM3.

Referenced by isAlignableActive(), and readMillePedeResultFile().

416  {
417  if (!alignable)
418  return PclHLS::NotInPCL;
419 
420  const auto& tns = pedeLabeler_->alignableTracker()->trackerNameSpace();
421  const align::ID id = alignable->id();
422 
423  switch (alignable->alignableObjectId()) {
425  switch (tns.tpb().halfBarrelNumber(id)) {
426  case 1:
428  case 2:
430  default:
431  throw cms::Exception("LogicError")
432  << "@SUB=MillePedeFileReader::getHLS\n"
433  << "Found a pixel half-barrel number that should not exist: " << tns.tpb().halfBarrelNumber(id);
434  }
436  switch (tns.tpe().endcapNumber(id)) {
437  case 1:
438  switch (tns.tpe().halfCylinderNumber(id)) {
439  case 1:
441  case 2:
443  default:
444  throw cms::Exception("LogicError")
445  << "@SUB=MillePedeFileReader::getHLS\n"
446  << "Found a pixel half-cylinder number that should not exist: " << tns.tpe().halfCylinderNumber(id);
447  }
448  case 2:
449  switch (tns.tpe().halfCylinderNumber(id)) {
450  case 1:
452  case 2:
454  default:
455  throw cms::Exception("LogicError")
456  << "@SUB=MillePedeFileReader::getHLS\n"
457  << "Found a pixel half-cylinder number that should not exist: " << tns.tpe().halfCylinderNumber(id);
458  }
459  default:
460  throw cms::Exception("LogicError")
461  << "@SUB=MillePedeFileReader::getHLS\n"
462  << "Found a pixel endcap number that should not exist: " << tns.tpe().endcapNumber(id);
463  }
464  case align::TPBLadder:
465  switch (tns.tpb().layerNumber(id)) {
466  case 1:
468  case 2:
470  case 3:
472  case 4:
474  default:
475  throw cms::Exception("LogicError")
476  << "@SUB=MillePedeFileReader::getHLS\n"
477  << "Found a pixel layer number that should not exist: " << tns.tpb().layerNumber(id);
478  }
479  case align::TPEPanel:
480  switch (static_cast<signed int>((tns.tpe().endcapNumber(id) == 1) ? -1 * tns.tpe().halfDiskNumber(id)
481  : tns.tpe().halfDiskNumber(id))) {
482  case -3:
483  return PclHLS::TPEPanelDiskM3;
484  case -2:
485  return PclHLS::TPEPanelDiskM2;
486  case -1:
487  return PclHLS::TPEPanelDiskM1;
488  case 3:
489  return PclHLS::TPEPanelDisk3;
490  case 2:
491  return PclHLS::TPEPanelDisk2;
492  case 1:
493  return PclHLS::TPEPanelDisk1;
494  default:
495  throw cms::Exception("LogicError")
496  << "@SUB=MillePedeFileReader::getHLS\n"
497  << "Found a pixel disk number that should not exist: "
498  << static_cast<signed int>((tns.tpe().endcapNumber(id) == 1) ? -1 * tns.tpe().halfDiskNumber(id)
499  : tns.tpe().halfDiskNumber(id));
500  }
501  default:
502  return PclHLS::NotInPCL;
503  }
504 }
uint32_t ID
Definition: Definitions.h:24
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
const std::shared_ptr< const PedeLabelerBase > pedeLabeler_

◆ getIndexForHG()

int MillePedeFileReader::getIndexForHG ( align::ID  id,
PclHLS  HLS 
)
private

Definition at line 578 of file MillePedeFileReader.cc.

References indexHelper, pedeLabeler_, TPBLadderLayer1, TPBLadderLayer2, TPBLadderLayer3, TPBLadderLayer4, TPEPanelDisk1, TPEPanelDisk2, TPEPanelDisk3, TPEPanelDiskM1, TPEPanelDiskM2, and TPEPanelDiskM3.

Referenced by readMillePedeResultFile().

578  {
579  const auto& tns = pedeLabeler_->alignableTracker()->trackerNameSpace();
580 
581  switch (HLS) {
583  return (tns.tpb().halfBarrelNumber(id) == 1) ? tns.tpb().ladderNumber(id) + indexHelper[HLS].first
584  : tns.tpb().ladderNumber(id) + indexHelper[HLS].second;
586  return (tns.tpb().halfBarrelNumber(id) == 1) ? tns.tpb().ladderNumber(id) + indexHelper[HLS].first
587  : tns.tpb().ladderNumber(id) + indexHelper[HLS].second;
589  return (tns.tpb().halfBarrelNumber(id) == 1) ? tns.tpb().ladderNumber(id) + indexHelper[HLS].first
590  : tns.tpb().ladderNumber(id) + indexHelper[HLS].second;
592  return (tns.tpb().halfBarrelNumber(id) == 1) ? tns.tpb().ladderNumber(id) + indexHelper[HLS].first
593  : tns.tpb().ladderNumber(id) + indexHelper[HLS].second;
595  return (tns.tpe().halfCylinderNumber(id) == 1)
596  ? (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].first
597  : (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].second;
599  return (tns.tpe().halfCylinderNumber(id) == 1)
600  ? (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].first
601  : (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].second;
603  return (tns.tpe().halfCylinderNumber(id) == 1)
604  ? (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].first
605  : (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].second;
607  return (tns.tpe().halfCylinderNumber(id) == 1)
608  ? (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].first
609  : (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].second;
611  return (tns.tpe().halfCylinderNumber(id) == 1)
612  ? (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].first
613  : (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].second;
615  return (tns.tpe().halfCylinderNumber(id) == 1)
616  ? (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].first
617  : (tns.tpe().bladeNumber(id) * 2 - (tns.tpe().panelNumber(id) % 2)) + indexHelper[HLS].second;
618  default:
619  return -200;
620  }
621 }
std::unordered_map< PclHLS, std::pair< int, int > > indexHelper
const std::shared_ptr< const PedeLabelerBase > pedeLabeler_

◆ getResults()

const mpPCLresults MillePedeFileReader::getResults ( ) const
inline

◆ getResultsHG()

const std::map<std::string, std::array<bool, 6> >& MillePedeFileReader::getResultsHG ( ) const
inline

Definition at line 122 of file MillePedeFileReader.h.

References fractionExceeded_.

122 { return fractionExceeded_; }
std::map< std::string, std::array< bool, 6 > > fractionExceeded_

◆ getStringFromHLS()

std::string MillePedeFileReader::getStringFromHLS ( MillePedeFileReader::PclHLS  HLS)
private

Definition at line 506 of file MillePedeFileReader.cc.

References Exception, TPBHalfBarrelXminus, TPBHalfBarrelXplus, TPBLadderLayer1, TPBLadderLayer2, TPBLadderLayer3, TPBLadderLayer4, TPEHalfCylinderXminusZminus, TPEHalfCylinderXminusZplus, TPEHalfCylinderXplusZminus, TPEHalfCylinderXplusZplus, TPEPanelDisk1, TPEPanelDisk2, TPEPanelDisk3, TPEPanelDiskM1, TPEPanelDiskM2, and TPEPanelDiskM3.

Referenced by isAlignableActive(), and readMillePedeResultFile().

506  {
507  switch (HLS) {
509  return "TPBHalfBarrelXminus";
511  return "TPBHalfBarrelXplus";
513  return "TPEHalfCylinderXminusZminus";
515  return "TPEHalfCylinderXplusZminus";
517  return "TPEHalfCylinderXminusZplus";
519  return "TPEHalfCylinderXplusZplus";
521  return "TPBLadderLayer1";
523  return "TPBLadderLayer2";
525  return "TPBLadderLayer3";
527  return "TPBLadderLayer4";
529  return "TPEPanelDisk1";
531  return "TPEPanelDisk2";
533  return "TPEPanelDisk3";
535  return "TPEPanelDiskM1";
537  return "TPEPanelDiskM2";
539  return "TPEPanelDiskM3";
540  default:
541  //return "NotInPCL";
542  throw cms::Exception("LogicError")
543  << "@SUB=MillePedeFileReader::getStringFromHLS\n"
544  << "Found an alignable structure not possible to map in the default AlignPCLThresholdsHG partitions";
545  }
546 }

◆ getThresholdMap()

const AlignPCLThresholdsHG::threshold_map MillePedeFileReader::getThresholdMap ( ) const
inline

Definition at line 114 of file MillePedeFileReader.h.

References theThresholds_.

114 { return theThresholds_.get()->getThreshold_Map(); }
const std::shared_ptr< const AlignPCLThresholdsHG > theThresholds_

◆ getTXobs()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getTXobs ( ) const
inline

Definition at line 86 of file MillePedeFileReader.h.

References tXobs_.

86 { return tXobs_; }
std::array< double, SIZE_LG_STRUCTS > tXobs_

◆ getTXobs_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getTXobs_HG ( ) const
inline

Definition at line 101 of file MillePedeFileReader.h.

References tXobs_HG_.

101 { return tXobs_HG_; }
std::array< double, SIZE_HG_STRUCTS > tXobs_HG_

◆ getTXobsErr()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getTXobsErr ( ) const
inline

Definition at line 87 of file MillePedeFileReader.h.

References tXobsErr_.

87 { return tXobsErr_; }
std::array< double, SIZE_LG_STRUCTS > tXobsErr_

◆ getTXobsErr_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getTXobsErr_HG ( ) const
inline

Definition at line 102 of file MillePedeFileReader.h.

References tXobsErr_HG_.

102 { return tXobsErr_HG_; }
std::array< double, SIZE_HG_STRUCTS > tXobsErr_HG_

◆ getTYobs()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getTYobs ( ) const
inline

Definition at line 91 of file MillePedeFileReader.h.

References tYobs_.

91 { return tYobs_; }
std::array< double, SIZE_LG_STRUCTS > tYobs_

◆ getTYobs_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getTYobs_HG ( ) const
inline

Definition at line 106 of file MillePedeFileReader.h.

References tYobs_HG_.

106 { return tYobs_HG_; }
std::array< double, SIZE_HG_STRUCTS > tYobs_HG_

◆ getTYobsErr()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getTYobsErr ( ) const
inline

Definition at line 92 of file MillePedeFileReader.h.

References tYobsErr_.

92 { return tYobsErr_; }
std::array< double, SIZE_LG_STRUCTS > tYobsErr_

◆ getTYobsErr_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getTYobsErr_HG ( ) const
inline

Definition at line 107 of file MillePedeFileReader.h.

References tYobsErr_HG_.

107 { return tYobsErr_HG_; }
std::array< double, SIZE_HG_STRUCTS > tYobsErr_HG_

◆ getTZobs()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getTZobs ( ) const
inline

Definition at line 96 of file MillePedeFileReader.h.

References tZobs_.

96 { return tZobs_; }
std::array< double, SIZE_LG_STRUCTS > tZobs_

◆ getTZobs_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getTZobs_HG ( ) const
inline

Definition at line 111 of file MillePedeFileReader.h.

References tZobs_HG_.

111 { return tZobs_HG_; }
std::array< double, SIZE_HG_STRUCTS > tZobs_HG_

◆ getTZobsErr()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getTZobsErr ( ) const
inline

Definition at line 97 of file MillePedeFileReader.h.

References tZobsErr_.

97 { return tZobsErr_; }
std::array< double, SIZE_LG_STRUCTS > tZobsErr_

◆ getTZobsErr_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getTZobsErr_HG ( ) const
inline

Definition at line 112 of file MillePedeFileReader.h.

References tZobsErr_HG_.

112 { return tZobsErr_HG_; }
std::array< double, SIZE_HG_STRUCTS > tZobsErr_HG_

◆ getXobs()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getXobs ( ) const
inline

Definition at line 84 of file MillePedeFileReader.h.

References Xobs_.

84 { return Xobs_; }
std::array< double, SIZE_LG_STRUCTS > Xobs_

◆ getXobs_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getXobs_HG ( ) const
inline

Definition at line 99 of file MillePedeFileReader.h.

References Xobs_HG_.

99 { return Xobs_HG_; }
std::array< double, SIZE_HG_STRUCTS > Xobs_HG_

◆ getXobsErr()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getXobsErr ( ) const
inline

Definition at line 85 of file MillePedeFileReader.h.

References XobsErr_.

85 { return XobsErr_; }
std::array< double, SIZE_LG_STRUCTS > XobsErr_

◆ getXobsErr_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getXobsErr_HG ( ) const
inline

Definition at line 100 of file MillePedeFileReader.h.

References XobsErr_HG_.

100 { return XobsErr_HG_; }
std::array< double, SIZE_HG_STRUCTS > XobsErr_HG_

◆ getYobs()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getYobs ( ) const
inline

Definition at line 89 of file MillePedeFileReader.h.

References Yobs_.

89 { return Yobs_; }
std::array< double, SIZE_LG_STRUCTS > Yobs_

◆ getYobs_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getYobs_HG ( ) const
inline

Definition at line 104 of file MillePedeFileReader.h.

References Yobs_HG_.

104 { return Yobs_HG_; }
std::array< double, SIZE_HG_STRUCTS > Yobs_HG_

◆ getYobsErr()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getYobsErr ( ) const
inline

Definition at line 90 of file MillePedeFileReader.h.

References YobsErr_.

90 { return YobsErr_; }
std::array< double, SIZE_LG_STRUCTS > YobsErr_

◆ getYobsErr_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getYobsErr_HG ( ) const
inline

Definition at line 105 of file MillePedeFileReader.h.

References YobsErr_HG_.

105 { return YobsErr_HG_; }
std::array< double, SIZE_HG_STRUCTS > YobsErr_HG_

◆ getZobs()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getZobs ( ) const
inline

Definition at line 94 of file MillePedeFileReader.h.

References Zobs_.

94 { return Zobs_; }
std::array< double, SIZE_LG_STRUCTS > Zobs_

◆ getZobs_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getZobs_HG ( ) const
inline

Definition at line 109 of file MillePedeFileReader.h.

References Zobs_HG_.

109 { return Zobs_HG_; }
std::array< double, SIZE_HG_STRUCTS > Zobs_HG_

◆ getZobsErr()

const std::array<double, SIZE_LG_STRUCTS>& MillePedeFileReader::getZobsErr ( ) const
inline

Definition at line 95 of file MillePedeFileReader.h.

References ZobsErr_.

95 { return ZobsErr_; }
std::array< double, SIZE_LG_STRUCTS > ZobsErr_

◆ getZobsErr_HG()

const std::array<double, SIZE_HG_STRUCTS>& MillePedeFileReader::getZobsErr_HG ( ) const
inline

Definition at line 110 of file MillePedeFileReader.h.

References ZobsErr_HG_.

110 { return ZobsErr_HG_; }
std::array< double, SIZE_HG_STRUCTS > ZobsErr_HG_

◆ initializeIndexHelper()

void MillePedeFileReader::initializeIndexHelper ( )
private

Definition at line 548 of file MillePedeFileReader.cc.

References indexHelper, pixelTopologyMap_, TPBLadderLayer1, TPBLadderLayer2, TPBLadderLayer3, TPBLadderLayer4, TPEPanelDisk1, TPEPanelDisk2, TPEPanelDisk3, TPEPanelDiskM1, TPEPanelDiskM2, and TPEPanelDiskM3.

Referenced by read().

548  {
549  int currentSum = 0;
550 
552  std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXBLadders(1) / 2);
553  currentSum += pixelTopologyMap_->getPXBLadders(1);
555  std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXBLadders(2) / 2);
556  currentSum += pixelTopologyMap_->getPXBLadders(2);
558  std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXBLadders(3) / 2);
559  currentSum += pixelTopologyMap_->getPXBLadders(3);
561  std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXBLadders(4) / 2);
562  currentSum += pixelTopologyMap_->getPXBLadders(4);
563 
564  indexHelper[PclHLS::TPEPanelDiskM3] = std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXFBlades(-3));
565  currentSum += pixelTopologyMap_->getPXFBlades(-3) * 2;
566  indexHelper[PclHLS::TPEPanelDiskM2] = std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXFBlades(-2));
567  currentSum += pixelTopologyMap_->getPXFBlades(-2) * 2;
568  indexHelper[PclHLS::TPEPanelDiskM1] = std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXFBlades(-1));
569  currentSum += pixelTopologyMap_->getPXFBlades(-1) * 2;
570 
571  indexHelper[PclHLS::TPEPanelDisk1] = std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXFBlades(1));
572  currentSum += pixelTopologyMap_->getPXFBlades(1) * 2;
573  indexHelper[PclHLS::TPEPanelDisk2] = std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXFBlades(2));
574  currentSum += pixelTopologyMap_->getPXFBlades(2) * 2;
575  indexHelper[PclHLS::TPEPanelDisk3] = std::make_pair(currentSum, currentSum + pixelTopologyMap_->getPXFBlades(3));
576 }
const std::shared_ptr< const PixelTopologyMap > pixelTopologyMap_
std::unordered_map< PclHLS, std::pair< int, int > > indexHelper

◆ isAlignableActive()

bool MillePedeFileReader::isAlignableActive ( const Alignable alignable,
const std::shared_ptr< const SiPixelQuality > &  pixelQual 
)
private

Definition at line 354 of file MillePedeFileReader.cc.

References Alignable::deepComponents(), hcalRecHitTable_cff::detId, spr::find(), getHLS(), getStringFromHLS(), RecoTauValidation_cfi::header, mod(), and MillePedeFileConverter_cfg::out.

Referenced by readMillePedeResultFile().

355  {
356  std::vector<DetId> detIds;
357 
358  // Get the list of deep components (lowest daughters) of the Alignable
359  const auto& deepComponents = alignable->deepComponents();
360 
361  // Iterate through the deep components to retrieve their DetIds
362  for (const auto& component : deepComponents) {
363  DetId detId = component->geomDetId();
364  if (detId != DetId(0)) {
365  detIds.push_back(detId);
366  }
367  }
368 
369  // Counter for bad modules
370  int badModuleCount = 0;
371  int totalDetIds = detIds.size();
372 
373  const auto& theDisabledModules = pixelQual->getBadComponentList();
374  std::vector<SiPixelQuality::disabledModuleType> theDisabledModuleInAlignable;
375  for (const auto& mod : theDisabledModules) {
376  if (std::find(detIds.begin(), detIds.end(), mod.DetID) != detIds.end()) {
377  theDisabledModuleInAlignable.push_back(mod);
378  }
379  }
380 
381  // nothing left to do
382  if (theDisabledModuleInAlignable.empty()) {
383  return true;
384  }
385 
386  bool header{false};
387 
388  std::stringstream out;
389  for (const auto& mod : theDisabledModuleInAlignable) {
390  if (!header)
391  out << " Alignable = " << getStringFromHLS(getHLS(alignable));
392  header = true;
393  bool isBad = pixelQual->IsModuleBad(mod.DetID);
394  std::bitset<16> bad_rocs(mod.BadRocs);
395  if (isBad || bad_rocs.all()) {
396  badModuleCount++;
397  }
398  out << " " << mod.DetID << " (" << (isBad || bad_rocs.all()) << ") , " << bad_rocs;
399  }
400  out << std::endl;
401 
402  if (badModuleCount > 0) {
403  out << " " << badModuleCount << " modules are bad out of " << totalDetIds << std::endl;
404  edm::LogPrint("MillePedeFileReader") << out.str();
405  }
406 
407  // Return false if at least half of the detIds are bad
408  if (badModuleCount >= (totalDetIds + 1) / 2) {
409  return false;
410  }
411 
412  // If less than half are bad, return true
413  return true;
414 }
PclHLS getHLS(const Alignable *)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
const Alignables & deepComponents() const
Definition: Alignable.h:72
Log< level::Warning, true > LogPrint
std::string getStringFromHLS(PclHLS HLS)
Definition: DetId.h:17
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4

◆ read()

void MillePedeFileReader::read ( )

◆ readMillePedeEndFile()

void MillePedeFileReader::readMillePedeEndFile ( )
private

Definition at line 50 of file MillePedeFileReader.cc.

References dirName_, exitCode_, exitMessage_, mps_splice::line, millePedeEndFile_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by read().

50  {
51  std::ifstream endFile;
52  endFile.open((dirName_ + millePedeEndFile_).c_str());
53 
54  if (endFile.is_open()) {
55  edm::LogInfo("MillePedeFileReader") << "Reading millepede end-file";
57  getline(endFile, line);
58  std::string trash;
59  if (line.find("-1") != std::string::npos) {
60  getline(endFile, line);
62  std::istringstream iss(line);
63  iss >> exitCode_ >> trash;
64  edm::LogInfo("MillePedeFileReader")
65  << " Pede exit code is: " << exitCode_ << " (" << exitMessage_ << ")" << std::endl;
66  } else {
68  std::istringstream iss(line);
69  iss >> exitCode_ >> trash;
70  edm::LogInfo("MillePedeFileReader")
71  << " Pede exit code is: " << exitCode_ << " (" << exitMessage_ << ")" << std::endl;
72  }
73  } else {
74  edm::LogError("MillePedeFileReader") << "Could not read millepede end-file.";
75  exitMessage_ = "no exit code found";
76  }
77 }
Log< level::Error, false > LogError
Log< level::Info, false > LogInfo
const std::string millePedeEndFile_

◆ readMillePedeLogFile()

void MillePedeFileReader::readMillePedeLogFile ( )
private

Definition at line 79 of file MillePedeFileReader.cc.

References binariesAmount_, dirName_, mps_splice::line, heppy_check::logFile, millePedeLogFile_, Nrec_, AlCaHLTBitMon_QueryRunRegistry::string, theThresholds_, and updateDB_.

Referenced by read().

79  {
80  std::ifstream logFile;
81  logFile.open((dirName_ + millePedeLogFile_).c_str());
82 
83  if (logFile.is_open()) {
84  edm::LogInfo("MillePedeFileReader") << "Reading millepede log-file";
86 
87  while (getline(logFile, line)) {
88  std::string Nrec_string = "NREC =";
89  std::string Binaries_string = "C_binary";
90 
91  if (line.find(Nrec_string) != std::string::npos) {
92  std::istringstream iss(line);
93  std::string trash;
94  iss >> trash >> trash >> Nrec_;
95 
96  if (Nrec_ < theThresholds_->getNrecords()) {
97  edm::LogInfo("MillePedeFileReader")
98  << "Number of records used " << theThresholds_->getNrecords() << std::endl;
99  updateDB_ = false;
100  }
101  }
102 
103  if (line.find(Binaries_string) != std::string::npos) {
104  binariesAmount_ += 1;
105  }
106  }
107  } else {
108  edm::LogError("MillePedeFileReader") << "Could not read millepede log-file.";
109 
110  updateDB_ = false;
111  Nrec_ = 0;
112  }
113 }
const std::shared_ptr< const AlignPCLThresholdsHG > theThresholds_
Log< level::Error, false > LogError
const std::string millePedeLogFile_
Log< level::Info, false > LogInfo

◆ readMillePedeResultFile()

void MillePedeFileReader::readMillePedeResultFile ( )
private

Definition at line 115 of file MillePedeFileReader.cc.

References funct::abs(), clustersummarymultiplicityprod_cfi::detLabel, dirName_, fractionExceeded_, AlignableObjectId::General, getHLS(), getIndexForHG(), getStringFromHLS(), mps_fire::i, EcalPhiSymFlatTableProducers_cfi::id, ignoreInactiveAlignables_, isAlignableActive(), isHG_, mps_splice::line, millePedeResFile_, multiplier_, NotInPCL, Nrec_, pedeLabeler_, quality_, contentValuesCheck::ss, AlCaHLTBitMon_QueryRunRegistry::string, DetId::subdetId(), AlignPCLThresholds::theta_X, AlignPCLThresholds::theta_Y, AlignPCLThresholds::theta_Z, theThresholds_, unpackBuffers-CaloStage2::token, align::TPBLadder, align::TPEPanel, tXobs_, tXobs_HG_, tXobsErr_, tXobsErr_HG_, tYobs_, tYobs_HG_, tYobsErr_, tYobsErr_HG_, tZobs_, tZobs_HG_, tZobsErr_, tZobsErr_HG_, updateBits_, updateDB_, vetoUpdateDB_, AlignPCLThresholds::X, Xobs_, Xobs_HG_, XobsErr_, XobsErr_HG_, AlignPCLThresholds::Y, Yobs_, Yobs_HG_, YobsErr_, YobsErr_HG_, AlignPCLThresholds::Z, Zobs_, Zobs_HG_, ZobsErr_, and ZobsErr_HG_.

Referenced by read().

115  {
116  // cutoffs by coordinate and by alignable
117  std::map<std::string, std::array<float, 6> > cutoffs_;
118  std::map<std::string, std::array<float, 6> > significances_;
119  std::map<std::string, std::array<float, 6> > thresholds_;
120  std::map<std::string, std::array<float, 6> > errors_;
121  std::map<std::string, std::array<float, 6> > fractions_;
122 
123  std::map<std::string, std::array<int, 6> > countsAbove_;
124  std::map<std::string, std::array<int, 6> > countsTotal_;
125 
127 
128  std::vector<std::string> alignables_ = theThresholds_->getAlignableList();
129  for (auto& ali : alignables_) {
130  cutoffs_[ali] = theThresholds_->getCut(ali);
131  significances_[ali] = theThresholds_->getSigCut(ali);
132  thresholds_[ali] = theThresholds_->getMaxMoveCut(ali);
133  errors_[ali] = theThresholds_->getMaxErrorCut(ali);
134 
135  if (theThresholds_->hasFloatMap(ali)) {
136  fractions_[ali] = theThresholds_->getFractionCut(ali);
137  countsAbove_[ali] = {{0, 0, 0, 0, 0, 0}};
138  countsTotal_[ali] = {{0, 0, 0, 0, 0, 0}};
139  }
140  }
141 
142  updateDB_ = false;
143  vetoUpdateDB_ = false;
144  std::ifstream resFile;
145  resFile.open((dirName_ + millePedeResFile_).c_str());
146 
147  if (resFile.is_open()) {
148  edm::LogInfo("MillePedeFileReader") << "Reading millepede result-file";
149 
151  getline(resFile, line); // drop first line
152 
153  while (getline(resFile, line)) {
154  std::istringstream iss(line);
155 
156  std::vector<std::string> tokens;
158  while (iss >> token) {
159  tokens.push_back(token);
160  }
161 
162  auto alignableLabel = std::stoul(tokens[0]);
163  const auto alignable = pedeLabeler_->alignableFromLabel(alignableLabel);
164  auto det = getHLS(alignable);
165  // check if the modules associated to the alignable are active
166  const bool active = isAlignableActive(alignable, quality_);
167  int detIndex = static_cast<int>(det);
168  auto alignableIndex = alignableLabel % 10 - 1;
170 
171  if (!active) {
172  edm::LogPrint("MillePedeFileReader") << "Alignable :" << detLabel << " is inactive";
173  }
174 
175  if (tokens.size() > 4 /*3*/) {
176  countsTotal_[detLabel][alignableIndex]++; //Count aligned modules/ladders per structure
177  const auto paramNum = pedeLabeler_->paramNumFromLabel(alignableLabel);
178  align::StructureType type = alignable->alignableObjectId();
179  align::ID id = alignable->id();
180 
181  double ObsMove = std::stof(tokens[3]) * multiplier_[alignableIndex];
182  double ObsErr = std::stof(tokens[4]) * multiplier_[alignableIndex];
183 
184  auto coord = static_cast<AlignPCLThresholdsHG::coordType>(alignableIndex);
185 
186  if (det != PclHLS::NotInPCL) {
187  if (type != align::TPBLadder && type != align::TPEPanel) {
188  switch (coord) {
190  Xobs_[detIndex] = ObsMove;
191  XobsErr_[detIndex] = ObsErr;
192  break;
194  Yobs_[detIndex] = ObsMove;
195  YobsErr_[detIndex] = ObsErr;
196  break;
198  Zobs_[detIndex] = ObsMove;
199  ZobsErr_[detIndex] = ObsErr;
200  break;
202  tXobs_[detIndex] = ObsMove;
203  tXobsErr_[detIndex] = ObsErr;
204  break;
206  tYobs_[detIndex] = ObsMove;
207  tYobsErr_[detIndex] = ObsErr;
208  break;
210  tZobs_[detIndex] = ObsMove;
211  tZobsErr_[detIndex] = ObsErr;
212  break;
213  default:
214  edm::LogError("MillePedeFileReader") << "Currently not able to handle DOF " << coord << std::endl;
215  break;
216  }
217  } else {
218  auto hgIndex = getIndexForHG(id, det);
219  switch (coord) {
221  Xobs_HG_[hgIndex - 1] = ObsMove;
222  XobsErr_HG_[hgIndex - 1] = ObsErr;
223  break;
225  Yobs_HG_[hgIndex - 1] = ObsMove;
226  YobsErr_HG_[hgIndex - 1] = ObsErr;
227  break;
229  Zobs_HG_[hgIndex - 1] = ObsMove;
230  ZobsErr_HG_[hgIndex - 1] = ObsErr;
231  break;
233  tXobs_HG_[hgIndex - 1] = ObsMove;
234  tXobsErr_HG_[hgIndex - 1] = ObsErr;
235  break;
237  tYobs_HG_[hgIndex - 1] = ObsMove;
238  tYobsErr_HG_[hgIndex - 1] = ObsErr;
239  break;
241  tZobs_HG_[hgIndex - 1] = ObsMove;
242  tZobsErr_HG_[hgIndex - 1] = ObsErr;
243  break;
244  default:
245  edm::LogError("MillePedeFileReader") << "Currently not able to handle DOF " << coord << std::endl;
246  break;
247  }
248  }
249 
250  } else {
251  edm::LogError("MillePedeFileReader")
252  << "Currently not able to handle coordinate: " << coord << " (" << paramNum << ") "
253  << Form(" %s with ID %d (subdet %d)", alignableObjectId.idToString(type), id, DetId(id).subdetId())
254  << std::endl;
255  continue;
256  }
257 
258  edm::LogVerbatim("MillePedeFileReader")
259  << " alignableLabel: " << alignableLabel << " with alignableIndex " << alignableIndex << " detIndex "
260  << detIndex << "\n"
261  << " i.e. detLabel: " << detLabel << " (" << coord << ")\n"
262  << " has movement: " << ObsMove << " +/- " << ObsErr << "\n"
263  << " cutoff (cutoffs_[" << detLabel << "][" << coord << "]): " << cutoffs_[detLabel][alignableIndex] << "\n"
264  << " significance (significances_[" << detLabel << "][" << coord
265  << "]): " << significances_[detLabel][alignableIndex] << "\n"
266  << " error thresolds (errors_[" << detLabel << "][" << coord << "]): " << errors_[detLabel][alignableIndex]
267  << "\n"
268  << " max movement (thresholds_[" << detLabel << "][" << coord
269  << "]): " << thresholds_[detLabel][alignableIndex] << "\n"
270  << " fraction (fractions_[" << detLabel << "][" << coord << "]): " << fractions_[detLabel][alignableIndex]
271  << "\n"
272  << "=============" << std::endl;
273 
274  if (std::abs(ObsMove) > thresholds_[detLabel][alignableIndex]) {
275  if (active || ignoreInactiveAlignables_) {
276  edm::LogWarning("MillePedeFileReader")
277  << "Aborting payload creation."
278  << " Exceeding maximum thresholds for movement: " << std::abs(ObsMove) << " for " << detLabel << " ("
279  << coord << ")";
280  updateBits_.set(0);
281  vetoUpdateDB_ = true;
282  continue;
283  } else {
284  edm::LogInfo("MillePedeFileReader")
285  << " Exceeding maximum thresholds for movement: " << std::abs(ObsMove) << " for " << detLabel << " ("
286  << coord << ") but continuing as the alignable is inactive!";
287  }
288 
289  } else if (std::abs(ObsMove) > cutoffs_[detLabel][alignableIndex]) {
290  updateBits_.set(1);
291 
292  if (std::abs(ObsErr) > errors_[detLabel][alignableIndex]) {
293  edm::LogWarning("MillePedeFileReader") << "Aborting payload creation."
294  << " Exceeding maximum thresholds for error: " << std::abs(ObsErr)
295  << " for" << detLabel << "(" << coord << ")";
296  updateBits_.set(2);
297  vetoUpdateDB_ = true;
298  continue;
299  } else {
300  if (std::abs(ObsMove / ObsErr) < significances_[detLabel][alignableIndex]) {
301  updateBits_.set(3);
302  continue;
303  }
304  }
305  updateDB_ = true;
306  if (!isHG_) {
307  edm::LogInfo("MillePedeFileReader")
308  << "This correction: " << ObsMove << "+/-" << ObsErr << " for " << detLabel << "(" << coord
309  << ") will trigger a new Tracker Alignment payload!";
310  }
311  countsAbove_[detLabel][alignableIndex]++;
312  }
313  }
314  }
315  } else {
316  edm::LogError("MillePedeFileReader") << "Could not read millepede result-file.";
317 
318  updateDB_ = false;
319  Nrec_ = 0;
320  }
321 
322  if (isHG_) { // check fractionCut
323  updateDB_ = false; // reset booleans since fractionCut is considered for HG
324  std::stringstream ss;
325  for (auto& ali : alignables_) {
326  ss << ali << std::endl;
327  for (long unsigned int i = 0; i < countsTotal_[ali].size(); i++) {
328  if (countsTotal_[ali][i] != 0 && fractions_[ali][i] != -1) {
329  float fraction_ = countsAbove_[ali][i] / (1.0 * countsTotal_[ali][i]);
330  ss << static_cast<AlignPCLThresholdsHG::coordType>(i) << ": Fraction = " << fraction_
331  << " Fraction Threshold = " << fractions_[ali][i];
332  if (fraction_ >= fractions_[ali][i]) {
333  updateDB_ = true;
334  ss << " above fraction threshold" << std::endl;
335  fractionExceeded_[ali][i] = true;
336  } else {
337  ss << std::endl;
338  fractionExceeded_[ali][i] = false;
339  }
340  } else
341  ss << "No entries available or no fraction thresholds defined" << std::endl;
342  }
343  ss << "===================" << std::endl;
344  }
345  if (updateDB_ && !vetoUpdateDB_) {
346  ss << "Alignment will be updated" << std::endl;
347  } else {
348  ss << "Alignment will NOT be updated" << std::endl;
349  }
350  edm::LogWarning("MillePedeFileReader") << ss.str();
351  }
352 }
std::array< double, SIZE_LG_STRUCTS > Zobs_
Log< level::Info, true > LogVerbatim
std::array< double, SIZE_HG_STRUCTS > tXobs_HG_
std::array< double, SIZE_LG_STRUCTS > tYobs_
std::array< double, SIZE_LG_STRUCTS > tZobsErr_
std::array< double, SIZE_LG_STRUCTS > Yobs_
const std::shared_ptr< const AlignPCLThresholdsHG > theThresholds_
std::array< double, SIZE_HG_STRUCTS > XobsErr_HG_
uint32_t ID
Definition: Definitions.h:24
std::bitset< 4 > updateBits_
std::array< double, SIZE_LG_STRUCTS > YobsErr_
std::array< double, SIZE_HG_STRUCTS > YobsErr_HG_
const std::shared_ptr< const SiPixelQuality > quality_
PclHLS getHLS(const Alignable *)
Log< level::Error, false > LogError
std::array< double, SIZE_HG_STRUCTS > Zobs_HG_
std::array< double, SIZE_LG_STRUCTS > Xobs_
static constexpr std::array< double, 6 > multiplier_
std::array< double, SIZE_HG_STRUCTS > Xobs_HG_
std::array< double, SIZE_HG_STRUCTS > tYobs_HG_
std::array< double, SIZE_LG_STRUCTS > tXobs_
std::array< double, SIZE_LG_STRUCTS > tYobsErr_
std::array< double, SIZE_HG_STRUCTS > ZobsErr_HG_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::array< double, SIZE_HG_STRUCTS > tZobs_HG_
Allows conversion between type and name, and vice-versa.
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
Log< level::Warning, true > LogPrint
std::string getStringFromHLS(PclHLS HLS)
Log< level::Info, false > LogInfo
Definition: DetId.h:17
const std::string millePedeResFile_
std::array< double, SIZE_LG_STRUCTS > tXobsErr_
const bool ignoreInactiveAlignables_
std::array< double, SIZE_HG_STRUCTS > tZobsErr_HG_
std::array< double, SIZE_LG_STRUCTS > XobsErr_
int getIndexForHG(align::ID id, PclHLS HLS)
const std::shared_ptr< const PedeLabelerBase > pedeLabeler_
std::array< double, SIZE_HG_STRUCTS > tXobsErr_HG_
std::array< double, SIZE_HG_STRUCTS > Yobs_HG_
std::array< double, SIZE_LG_STRUCTS > tZobs_
bool isAlignableActive(const Alignable *alignable, const std::shared_ptr< const SiPixelQuality > &pixelQual)
std::map< std::string, std::array< bool, 6 > > fractionExceeded_
Log< level::Warning, false > LogWarning
std::array< double, SIZE_LG_STRUCTS > ZobsErr_
std::array< double, SIZE_HG_STRUCTS > tYobsErr_HG_

◆ storeAlignments()

bool MillePedeFileReader::storeAlignments ( )

Member Data Documentation

◆ binariesAmount_

int MillePedeFileReader::binariesAmount_ {0}
private

Definition at line 206 of file MillePedeFileReader.h.

Referenced by binariesAmount(), and readMillePedeLogFile().

◆ dirName_

std::string MillePedeFileReader::dirName_
private

◆ exitCode_

int MillePedeFileReader::exitCode_ {-1}
private

Definition at line 212 of file MillePedeFileReader.h.

Referenced by getResults(), and readMillePedeEndFile().

◆ exitMessage_

std::string MillePedeFileReader::exitMessage_ {""}
private

Definition at line 213 of file MillePedeFileReader.h.

Referenced by getResults(), and readMillePedeEndFile().

◆ fractionExceeded_

std::map<std::string, std::array<bool, 6> > MillePedeFileReader::fractionExceeded_
private

Definition at line 209 of file MillePedeFileReader.h.

Referenced by getResultsHG(), and readMillePedeResultFile().

◆ ignoreInactiveAlignables_

const bool MillePedeFileReader::ignoreInactiveAlignables_
private

Definition at line 173 of file MillePedeFileReader.h.

Referenced by readMillePedeResultFile().

◆ indexHelper

std::unordered_map<PclHLS, std::pair<int, int> > MillePedeFileReader::indexHelper
private

Definition at line 245 of file MillePedeFileReader.h.

Referenced by getIndexForHG(), and initializeIndexHelper().

◆ isHG_

const bool MillePedeFileReader::isHG_
private

Definition at line 196 of file MillePedeFileReader.h.

Referenced by getResults(), read(), and readMillePedeResultFile().

◆ millePedeEndFile_

const std::string MillePedeFileReader::millePedeEndFile_
private

Definition at line 182 of file MillePedeFileReader.h.

Referenced by readMillePedeEndFile().

◆ millePedeLogFile_

const std::string MillePedeFileReader::millePedeLogFile_
private

Definition at line 183 of file MillePedeFileReader.h.

Referenced by readMillePedeLogFile().

◆ millePedeResFile_

const std::string MillePedeFileReader::millePedeResFile_
private

Definition at line 184 of file MillePedeFileReader.h.

Referenced by readMillePedeResultFile().

◆ multiplier_

constexpr std::array< double, 6 > MillePedeFileReader::multiplier_
staticprivate
Initial value:
= {{10000.,
10000.,
10000.,
1000000.,
1000000.,
1000000.}}

Definition at line 187 of file MillePedeFileReader.h.

Referenced by readMillePedeResultFile().

◆ Nrec_

int MillePedeFileReader::Nrec_ {0}
private

◆ pedeLabeler_

const std::shared_ptr<const PedeLabelerBase> MillePedeFileReader::pedeLabeler_
private

Definition at line 164 of file MillePedeFileReader.h.

Referenced by getHLS(), getIndexForHG(), and readMillePedeResultFile().

◆ pixelTopologyMap_

const std::shared_ptr<const PixelTopologyMap> MillePedeFileReader::pixelTopologyMap_
private

Definition at line 170 of file MillePedeFileReader.h.

Referenced by initializeIndexHelper().

◆ quality_

const std::shared_ptr<const SiPixelQuality> MillePedeFileReader::quality_
private

Definition at line 176 of file MillePedeFileReader.h.

Referenced by readMillePedeResultFile().

◆ theThresholds_

const std::shared_ptr<const AlignPCLThresholdsHG> MillePedeFileReader::theThresholds_
private

◆ tXobs_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::tXobs_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 217 of file MillePedeFileReader.h.

Referenced by getTXobs(), and readMillePedeResultFile().

◆ tXobs_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::tXobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 232 of file MillePedeFileReader.h.

Referenced by getTXobs_HG(), and readMillePedeResultFile().

◆ tXobsErr_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::tXobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 218 of file MillePedeFileReader.h.

Referenced by getTXobsErr(), and readMillePedeResultFile().

◆ tXobsErr_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::tXobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 233 of file MillePedeFileReader.h.

Referenced by getTXobsErr_HG(), and readMillePedeResultFile().

◆ tYobs_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::tYobs_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 222 of file MillePedeFileReader.h.

Referenced by getTYobs(), and readMillePedeResultFile().

◆ tYobs_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::tYobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 237 of file MillePedeFileReader.h.

Referenced by getTYobs_HG(), and readMillePedeResultFile().

◆ tYobsErr_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::tYobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 223 of file MillePedeFileReader.h.

Referenced by getTYobsErr(), and readMillePedeResultFile().

◆ tYobsErr_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::tYobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 238 of file MillePedeFileReader.h.

Referenced by getTYobsErr_HG(), and readMillePedeResultFile().

◆ tZobs_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::tZobs_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 227 of file MillePedeFileReader.h.

Referenced by getTZobs(), and readMillePedeResultFile().

◆ tZobs_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::tZobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 242 of file MillePedeFileReader.h.

Referenced by getTZobs_HG(), and readMillePedeResultFile().

◆ tZobsErr_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::tZobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 228 of file MillePedeFileReader.h.

Referenced by getTZobsErr(), and readMillePedeResultFile().

◆ tZobsErr_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::tZobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 243 of file MillePedeFileReader.h.

Referenced by getTZobsErr_HG(), and readMillePedeResultFile().

◆ updateBits_

std::bitset<4> MillePedeFileReader::updateBits_
private

Definition at line 203 of file MillePedeFileReader.h.

Referenced by getResults(), and readMillePedeResultFile().

◆ updateDB_

bool MillePedeFileReader::updateDB_ {false}
private

◆ vetoUpdateDB_

bool MillePedeFileReader::vetoUpdateDB_ {false}
private

Definition at line 195 of file MillePedeFileReader.h.

Referenced by getResults(), readMillePedeResultFile(), and storeAlignments().

◆ Xobs_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::Xobs_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 215 of file MillePedeFileReader.h.

Referenced by getXobs(), and readMillePedeResultFile().

◆ Xobs_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::Xobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 230 of file MillePedeFileReader.h.

Referenced by getXobs_HG(), and readMillePedeResultFile().

◆ XobsErr_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::XobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 216 of file MillePedeFileReader.h.

Referenced by getXobsErr(), and readMillePedeResultFile().

◆ XobsErr_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::XobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 231 of file MillePedeFileReader.h.

Referenced by getXobsErr_HG(), and readMillePedeResultFile().

◆ Yobs_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::Yobs_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 220 of file MillePedeFileReader.h.

Referenced by getYobs(), and readMillePedeResultFile().

◆ Yobs_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::Yobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 235 of file MillePedeFileReader.h.

Referenced by getYobs_HG(), and readMillePedeResultFile().

◆ YobsErr_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::YobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 221 of file MillePedeFileReader.h.

Referenced by getYobsErr(), and readMillePedeResultFile().

◆ YobsErr_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::YobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 236 of file MillePedeFileReader.h.

Referenced by getYobsErr_HG(), and readMillePedeResultFile().

◆ Zobs_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::Zobs_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 225 of file MillePedeFileReader.h.

Referenced by getZobs(), and readMillePedeResultFile().

◆ Zobs_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::Zobs_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 240 of file MillePedeFileReader.h.

Referenced by getZobs_HG(), and readMillePedeResultFile().

◆ ZobsErr_

std::array<double, SIZE_LG_STRUCTS> MillePedeFileReader::ZobsErr_ = std::array<double, SIZE_LG_STRUCTS>()
private

Definition at line 226 of file MillePedeFileReader.h.

Referenced by getZobsErr(), and readMillePedeResultFile().

◆ ZobsErr_HG_

std::array<double, SIZE_HG_STRUCTS> MillePedeFileReader::ZobsErr_HG_ = std::array<double, SIZE_HG_STRUCTS>()
private

Definition at line 241 of file MillePedeFileReader.h.

Referenced by getZobsErr_HG(), and readMillePedeResultFile().