CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes
HGCalTestGuardRing Class Reference
Inheritance diagram for HGCalTestGuardRing:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 HGCalTestGuardRing (const edm::ParameterSet &ps)
 
 ~HGCalTestGuardRing () 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 noexcept final
 
bool wantsGlobalRuns () const noexcept final
 
bool wantsInputProcessBlocks () const noexcept final
 
bool wantsProcessBlocks () const noexcept 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 noexcept
 
bool wantsStreamRuns () const noexcept
 
 ~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
 
ESResolverIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESResolverIndex > 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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProductResolverIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

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

Protected Member Functions

void analyze (edm::Event const &, edm::EventSetup const &) override
 
void beginJob () override
 
void endJob () override
 
- 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 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)
 

Private Attributes

const edm::ESGetToken< HGCalGeometry, IdealGeometryRecordgeomToken_
 
const double guardRingOffset_
 
const std::string nameSense_
 
const std::string waferFile_
 
std::map< HGCSiliconDetId, int > waferID_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Detailed Description

Definition at line 37 of file HGCalTestGuardRing.cc.

Constructor & Destructor Documentation

◆ HGCalTestGuardRing()

HGCalTestGuardRing::HGCalTestGuardRing ( const edm::ParameterSet ps)

Definition at line 55 of file HGCalTestGuardRing.cc.

References nameSense_.

56  : nameSense_(ps.getParameter<std::string>("nameSense")),
57  waferFile_(ps.getParameter<std::string>("waferFile")),
58  guardRingOffset_(ps.getParameter<double>("guardRingOffset")),
59  geomToken_(esConsumes<HGCalGeometry, IdealGeometryRecord>(edm::ESInputTag{"", nameSense_})) {
60  DetId::Detector det = (nameSense_ != "HGCalHESiliconSensitive") ? DetId::HGCalEE : DetId::HGCalHSi;
61  edm::LogVerbatim("HGCalSim") << "Test Guard Ring Offset " << guardRingOffset_ << " for " << nameSense_ << ":" << det
62  << " for wafers read from file " << waferFile_;
63  if (!waferFile_.empty()) {
64  std::string thick[4] = {"h120", "l200", "l300", "h200"};
66  const int partTypeH[6] = {HGCalTypes::WaferFull,
72  const int partTypeL[7] = {HGCalTypes::WaferFull,
79  edm::FileInPath filetmp("SimG4CMS/Calo/data/" + waferFile_);
80  std::string fileName = filetmp.fullPath();
81  std::ifstream fInput(fileName.c_str());
82  if (!fInput.good()) {
83  edm::LogVerbatim("HGCalSim") << "Cannot open file " << fileName;
84  } else {
85  char buffer[80];
86  while (fInput.getline(buffer, 80)) {
87  std::vector<std::string> items = CaloSimUtils::splitString(std::string(buffer));
88  if (items.size() > 6) {
89  int layer = std::atoi(items[0].c_str());
90  int waferU = std::atoi(items[4].c_str());
91  int waferV = std::atoi(items[5].c_str());
92  int thck = static_cast<int>(std::find(thick, thick + 4, items[2]) - thick);
93  int type = (thck < 4) ? addType[thck] : 0;
94  HGCSiliconDetId id(det, -1, type, layer, waferU, waferV, 0, 0);
95  int orient = std::atoi(items[5].c_str());
96  int part = std::atoi(items[1].c_str());
97  if (part >= 0) {
99  part = partTypeH[part];
100  else
101  part = partTypeL[part];
102  }
103  waferID_[id] = orient * 100 + part;
104 #ifdef EDM_ML_DEBUG
105  edm::LogVerbatim("HGCalSim") << "HGCalTestGuardRing::Reads " << id << " Orientation:Partial " << orient << ":"
106  << part;
107 #endif
108  }
109  }
110  edm::LogVerbatim("HGCalSim") << "HGCalTestGuardRing::Reads in " << waferID_.size() << " wafer information from "
111  << fileName;
112  fInput.close();
113  }
114  }
115 }
Log< level::Info, true > LogVerbatim
static constexpr int32_t WaferHalf2
Definition: HGCalTypes.h:43
static constexpr int32_t WaferFive2
Definition: HGCalTypes.h:44
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
static constexpr int32_t WaferHD200
Definition: HGCalTypes.h:33
int32_t waferU(const int32_t index)
std::map< HGCSiliconDetId, int > waferID_
const double guardRingOffset_
static constexpr int32_t WaferThree
Definition: HGCalTypes.h:42
static constexpr int32_t WaferLD300
Definition: HGCalTypes.h:32
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
static constexpr int32_t WaferSemi2
Definition: HGCalTypes.h:41
const edm::ESGetToken< HGCalGeometry, IdealGeometryRecord > geomToken_
static constexpr int32_t WaferFull
Definition: HGCalTypes.h:35
static constexpr int32_t WaferHalf
Definition: HGCalTypes.h:39
std::vector< std::string > splitString(const std::string &)
Definition: CaloSimUtils.cc:3
static constexpr int32_t WaferHD120
Definition: HGCalTypes.h:30
const std::string nameSense_
const std::string waferFile_
static constexpr int32_t WaferChopTwoM
Definition: HGCalTypes.h:38
part
Definition: HCALResponse.h:20
Detector
Definition: DetId.h:24
int32_t waferV(const int32_t index)
static constexpr int32_t WaferFive
Definition: HGCalTypes.h:36
static constexpr int32_t WaferSemi
Definition: HGCalTypes.h:40
static constexpr int32_t WaferLD200
Definition: HGCalTypes.h:31

◆ ~HGCalTestGuardRing()

HGCalTestGuardRing::~HGCalTestGuardRing ( )
overridedefault

Member Function Documentation

◆ analyze()

void HGCalTestGuardRing::analyze ( edm::Event const &  e,
edm::EventSetup const &  iS 
)
overrideprotectedvirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 125 of file HGCalTestGuardRing.cc.

References python.cmstools::all(), dqmdumpme::first, relativeConstraints::geom, geomToken_, edm::EventSetup::getData(), caHitNtupletGeneratorKernels::good, guardRingOffset_, DetId::HGCalEE, DetId::HGCalHSi, HGCGuardRing::insidePolygon(), nano_mu_digi_cff::layer, nameSense_, ALPAKA_ACCELERATOR_NAMESPACE::caPixelDoublets::nCells, hgcalPerformanceValidation::orient, edm::second(), findQualityFiles::v, validateGeometry_cfg::valid, HGCalTypes::waferFrontBack(), waferID_, HGCalWaferIndex::waferU(), HGCalWaferIndex::waferV(), HGCalWaferMask::waferXY(), geometryCSVtoXML::xy, and ecaldqm::zside().

125  {
126  // get HGCalGeometry
127  const HGCalGeometry* geom = &iS.getData(geomToken_);
128  const HGCalDDDConstants& hgc = geom->topology().dddConstants();
129  double waferSize = hgc.waferSize(false);
130  HGCalCell wafer(waferSize, hgc.getUVMax(0), hgc.getUVMax(1));
131  const bool v17OrLess = hgc.v17OrLess();
132 
133  // get the hit collection
134  edm::LogVerbatim("HGCalSim") << "HGCalTestGuardRing: Wafer Szie " << waferSize << " v17OrLess " << v17OrLess;
135 
136  // Loop over all IDs
137  int all(0), allSi(0), good(0);
138  for (std::map<HGCSiliconDetId, int>::const_iterator itr = waferID_.begin(); itr != waferID_.end(); ++itr) {
139  HGCSiliconDetId id = itr->first;
140  ++all;
141  if ((id.det() == DetId::HGCalEE) || (id.det() == DetId::HGCalHSi)) {
142  ++allSi;
143  if (((id.det() == DetId::HGCalEE) && (nameSense_ == "HGCalEESensitive")) ||
144  ((id.det() == DetId::HGCalHSi) && (nameSense_ == "HGCalHESiliconSensitive"))) {
145  int partial = ((itr->second) % 100);
146  int orient = (((itr->second) / 100) % 100);
147  int type = id.type();
148  int nCells = hgc.getUVMax(type);
149  for (int u = 0; u < 2 * nCells; ++u) {
150  for (int v = 0; v < 2 * nCells; ++v) {
151  if (((v - u) < nCells) && ((u - v) <= nCells)) {
152  HGCSiliconDetId hid(id.det(), id.zside(), id.type(), id.layer(), id.waferU(), id.waferV(), u, v);
153  bool valid = (geom->topology()).valid(static_cast<DetId>(hid));
154  if (valid) {
155  ++good;
156  int placeIndex = wafer.cellPlacementIndex(1, HGCalTypes::waferFrontBack(0), orient);
157  std::pair<double, double> xy = wafer.cellUV2XY1(u, v, placeIndex, type);
158  std::vector<std::pair<double, double> > wxy1 =
159  HGCalWaferMask::waferXY(partial, orient, -1, waferSize, 0.0, 0.0, 0.0, v17OrLess);
160  bool check1 = HGCGuardRing::insidePolygon(xy.first, xy.second, wxy1);
161  std::ostringstream st1;
162  for (unsigned int k1 = 0; k1 < wxy1.size(); ++k1)
163  st1 << " (" << wxy1[k1].first << ", " << wxy1[k1].second << ")";
164  edm::LogVerbatim("HGCSim")
165  << "First " << hid << " Type:Partial:Orient:Place " << type << ":" << partial << ":" << orient
166  << ":" << placeIndex << " Boundary with " << wxy1.size() << " points: " << st1.str() << " check "
167  << check1 << " for (" << xy.first << ", " << xy.second << ")";
168 
169  std::vector<std::pair<double, double> > wxy2 =
170  HGCalWaferMask::waferXY(partial, orient, -1, waferSize, guardRingOffset_, 0.0, 0.0, v17OrLess);
171  bool check2 = HGCGuardRing::insidePolygon(xy.first, xy.second, wxy2);
172  std::ostringstream st2;
173  for (unsigned int k1 = 0; k1 < wxy2.size(); ++k1)
174  st2 << " (" << wxy2[k1].first << ", " << wxy2[k1].second << ")";
175  edm::LogVerbatim("HGCSim") << "Second Offset " << guardRingOffset_ << " Boundary with " << wxy2.size()
176  << " points: " << st2.str() << " check " << check2 << " for (" << xy.first
177  << ", " << xy.second << ")";
178  }
179  }
180  }
181  }
182  }
183  }
184  }
185  edm::LogVerbatim("HGCalSim") << "Total hits = " << all << " Good Silicon DetIds = " << allSi << ":" << good;
186 }
Log< level::Info, true > LogVerbatim
def all(container)
workaround iterator generators for ROOT classes
Definition: cmstools.py:25
static constexpr int32_t waferFrontBack(int32_t index)
Definition: HGCalTypes.h:138
int32_t waferU(const int32_t index)
std::map< HGCSiliconDetId, int > waferID_
const double guardRingOffset_
int zside(DetId const &)
const edm::ESGetToken< HGCalGeometry, IdealGeometryRecord > geomToken_
static std::vector< std::pair< double, double > > waferXY(const int &part, const int &orient, const int &zside, const double &waferSize, const double &offset, const double &xpos, const double &ypos, const bool &v17)
U second(std::pair< T, U > const &p)
const std::string nameSense_
static bool insidePolygon(double x, double y, const std::vector< std::pair< double, double > > &xyv)
Definition: HGCGuardRing.cc:90
ALPAKA_FN_ACC ALPAKA_FN_INLINE void uint32_t const uint32_t CACellT< TrackerTraits > uint32_t * nCells
int32_t waferV(const int32_t index)

◆ beginJob()

void HGCalTestGuardRing::beginJob ( void  )
inlineoverrideprotectedvirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 45 of file HGCalTestGuardRing.cc.

45 {}

◆ endJob()

void HGCalTestGuardRing::endJob ( void  )
inlineoverrideprotectedvirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 46 of file HGCalTestGuardRing.cc.

46 {}

◆ fillDescriptions()

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

Definition at line 117 of file HGCalTestGuardRing.cc.

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

117  {
119  desc.add<std::string>("nameSense", "HGCalEESensitive");
120  desc.add<std::string>("waferFile", "testWafersEE.txt");
121  desc.add<double>("guardRingOffset", 1.0);
122  descriptions.add("hgcalTestGuardRingEE", desc);
123 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

◆ geomToken_

const edm::ESGetToken<HGCalGeometry, IdealGeometryRecord> HGCalTestGuardRing::geomToken_
private

Definition at line 51 of file HGCalTestGuardRing.cc.

Referenced by analyze().

◆ guardRingOffset_

const double HGCalTestGuardRing::guardRingOffset_
private

Definition at line 50 of file HGCalTestGuardRing.cc.

Referenced by analyze().

◆ nameSense_

const std::string HGCalTestGuardRing::nameSense_
private

Definition at line 49 of file HGCalTestGuardRing.cc.

Referenced by analyze(), and HGCalTestGuardRing().

◆ waferFile_

const std::string HGCalTestGuardRing::waferFile_
private

Definition at line 49 of file HGCalTestGuardRing.cc.

◆ waferID_

std::map<HGCSiliconDetId, int> HGCalTestGuardRing::waferID_
private

Definition at line 52 of file HGCalTestGuardRing.cc.

Referenced by analyze().