CMS 3D CMS Logo

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

user includes More...

#include <SiStripGainsPCLWorker.h>

Inheritance diagram for SiStripGainsPCLWorker:
DQMGlobalEDAnalyzer< APVGain::APVGainHistograms > DQMGlobalEDAnalyzerBase< APVGain::APVGainHistograms, Args... > edm::global::EDProducer< edm::RunCache< APVGain::APVGainHistograms >, edm::EndRunProducer, edm::Accumulator, Args... > edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &, APVGain::APVGainHistograms &) const override
 
void dqmAnalyze (edm::Event const &, edm::EventSetup const &, APVGain::APVGainHistograms const &) const override
 
 SiStripGainsPCLWorker (const edm::ParameterSet &)
 
- Public Member Functions inherited from DQMGlobalEDAnalyzer< APVGain::APVGainHistograms >
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &, APVGain::APVGainHistograms const &) const
 
void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup) const final
 
- Public Member Functions inherited from DQMGlobalEDAnalyzerBase< APVGain::APVGainHistograms, Args... >
void accumulate (edm::StreamID id, edm::Event const &event, edm::EventSetup const &setup) const final
 
 DQMGlobalEDAnalyzerBase ()
 
std::shared_ptr< APVGain::APVGainHistogramsglobalBeginRun (edm::Run const &run, edm::EventSetup const &setup) const final
 
void globalEndRun (edm::Run const &, edm::EventSetup const &) const final
 
- Public Member Functions inherited from edm::global::EDProducer< edm::RunCache< APVGain::APVGainHistograms >, edm::EndRunProducer, edm::Accumulator, Args... >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) 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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
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
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
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 &descriptions)
 
- Static Public Member Functions inherited from edm::global::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void beginJob () override
 
void checkBookAPVColls (const TrackerGeometry *bareTkGeomPtr, APVGain::APVGainHistograms &histograms) const
 
void dqmBeginRun (edm::Run const &, edm::EventSetup const &, APVGain::APVGainHistograms &) const override
 
int statCollectionFromMode (const char *tag) const
 

Private Attributes

bool AllowSaturation
 
bool doChargeMonitorPerPlane
 
std::vector< std::string > dqm_tag_
 
bool FirstSetOfConstants
 
edm::ESGetToken< SiStripGain, SiStripGainRcdgainToken_
 
edm::EDGetTokenT< TrajTrackAssociationCollectionm_association_token
 
std::string m_calibrationMode
 
std::string m_DQMdir
 
edm::EDGetTokenT< edm::View< reco::Track > > m_tracks_token
 
unsigned int MaxNrStrips
 
double MaxTrackChiOverNdf
 
double MaxTrackEta
 
int MaxTrackingIteration
 
double MaxTrackMomentum
 
double MinTrackEta
 
unsigned int MinTrackHits
 
double MinTrackMomentum
 
bool OldGainRemoving
 
edm::ESGetToken< SiStripQuality, SiStripQualityRcdqualityToken_
 
std::map< unsigned int, APVloctheTopologyMap
 
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordtkGeomToken_
 
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordtkGeomTokenBR_
 
edm::ESGetToken< TrackerTopology, TrackerTopologyRcdtTopoToken_
 
bool useCalibration
 
bool Validation
 
std::vector< std::string > VChargeHisto
 

Additional Inherited Members

- Public Types inherited from DQMGlobalEDAnalyzerBase< APVGain::APVGainHistograms, Args... >
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from DQMGlobalEDAnalyzerBase< APVGain::APVGainHistograms, Args... >
uint64_t meId (edm::Run const &run) const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMGlobalEDAnalyzerBase< APVGain::APVGainHistograms, Args... >
DQMStoredqmstore_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

user includes

Description: Fill DQM histograms with SiStrip Charge normalized to path length

Definition at line 75 of file SiStripGainsPCLWorker.h.

Constructor & Destructor Documentation

◆ SiStripGainsPCLWorker()

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

Definition at line 9 of file SiStripGainsPCLWorker.cc.

9  {
10  MinTrackMomentum = iConfig.getUntrackedParameter<double>("minTrackMomentum", 3.0);
11  MaxTrackMomentum = iConfig.getUntrackedParameter<double>("maxTrackMomentum", 99999.0);
12  MinTrackEta = iConfig.getUntrackedParameter<double>("minTrackEta", -5.0);
13  MaxTrackEta = iConfig.getUntrackedParameter<double>("maxTrackEta", 5.0);
14  MaxNrStrips = iConfig.getUntrackedParameter<unsigned>("maxNrStrips", 2);
15  MinTrackHits = iConfig.getUntrackedParameter<unsigned>("MinTrackHits", 8);
16  MaxTrackChiOverNdf = iConfig.getUntrackedParameter<double>("MaxTrackChiOverNdf", 3);
17  MaxTrackingIteration = iConfig.getUntrackedParameter<int>("MaxTrackingIteration", 7);
18  AllowSaturation = iConfig.getUntrackedParameter<bool>("AllowSaturation", false);
19  FirstSetOfConstants = iConfig.getUntrackedParameter<bool>("FirstSetOfConstants", true);
20  Validation = iConfig.getUntrackedParameter<bool>("Validation", false);
21  OldGainRemoving = iConfig.getUntrackedParameter<bool>("OldGainRemoving", false);
22  useCalibration = iConfig.getUntrackedParameter<bool>("UseCalibration", false);
23  doChargeMonitorPerPlane = iConfig.getUntrackedParameter<bool>("doChargeMonitorPerPlane", false);
24  m_DQMdir = iConfig.getUntrackedParameter<std::string>("DQMdir", "AlCaReco/SiStripGains");
25  m_calibrationMode = iConfig.getUntrackedParameter<std::string>("calibrationMode", "StdBunch");
26  VChargeHisto = iConfig.getUntrackedParameter<std::vector<std::string>>("ChargeHisto");
27 
28  // fill in the mapping between the histogram indices and the (id,side,plane) tuple
29  std::vector<std::pair<std::string, std::string>> hnames =
31  for (unsigned int i = 0; i < hnames.size(); i++) {
32  int id = APVGain::subdetectorId((hnames[i]).first);
33  int side = APVGain::subdetectorSide((hnames[i]).first);
34  int plane = APVGain::subdetectorPlane((hnames[i]).first);
35  int thick = APVGain::thickness((hnames[i]).first);
36  std::string s = hnames[i].first;
37 
38  auto loc = APVloc(thick, id, side, plane, s);
39  theTopologyMap.insert(std::make_pair(i, loc));
40  }
41 
42  //Set the monitoring element tag and store
43  dqm_tag_.reserve(7);
44  dqm_tag_.clear();
45  dqm_tag_.push_back("StdBunch"); // statistic collection from Standard Collision Bunch @ 3.8 T
46  dqm_tag_.push_back("StdBunch0T"); // statistic collection from Standard Collision Bunch @ 0 T
47  dqm_tag_.push_back("AagBunch"); // statistic collection from First Collision After Abort Gap @ 3.8 T
48  dqm_tag_.push_back("AagBunch0T"); // statistic collection from First Collision After Abort Gap @ 0 T
49  dqm_tag_.push_back("IsoMuon"); // statistic collection from Isolated Muon @ 3.8 T
50  dqm_tag_.push_back("IsoMuon0T"); // statistic collection from Isolated Muon @ 0 T
51  dqm_tag_.push_back("Harvest"); // statistic collection: Harvest
52 
53  m_tracks_token = consumes<edm::View<reco::Track>>(iConfig.getParameter<edm::InputTag>("tracks"));
54  m_association_token = consumes<TrajTrackAssociationCollection>(iConfig.getParameter<edm::InputTag>("tracks"));
55 
57  tkGeomTokenBR_ = esConsumes<edm::Transition::BeginRun>();
58  tkGeomToken_ = esConsumes<>();
59  gainToken_ = esConsumes<edm::Transition::BeginRun>();
60  qualityToken_ = esConsumes<edm::Transition::BeginRun>();
61 }

References AllowSaturation, doChargeMonitorPerPlane, dqm_tag_, edm::EDConsumerBase::esConsumes(), first, FirstSetOfConstants, gainToken_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), mps_fire::i, m_association_token, m_calibrationMode, m_DQMdir, m_tracks_token, MaxNrStrips, MaxTrackChiOverNdf, MaxTrackEta, MaxTrackingIteration, MaxTrackMomentum, MinTrackEta, MinTrackHits, MinTrackMomentum, APVGain::monHnames(), OldGainRemoving, qualityToken_, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, APVGain::subdetectorId(), APVGain::subdetectorPlane(), APVGain::subdetectorSide(), theTopologyMap, APVGain::thickness(), tkGeomToken_, tkGeomTokenBR_, tTopoToken_, useCalibration, Validation, and VChargeHisto.

Member Function Documentation

◆ beginJob()

void SiStripGainsPCLWorker::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::global::EDProducerBase.

Definition at line 390 of file SiStripGainsPCLWorker.cc.

390 {}

◆ bookHistograms()

void SiStripGainsPCLWorker::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  run,
edm::EventSetup const &  setup,
APVGain::APVGainHistograms histograms 
) const
overridevirtual

Implements DQMGlobalEDAnalyzerBase< APVGain::APVGainHistograms, Args... >.

Definition at line 509 of file SiStripGainsPCLWorker.cc.

512  {
513  ibooker.cd();
514  std::string dqm_dir = m_DQMdir;
515  const char* tag = dqm_tag_[statCollectionFromMode(m_calibrationMode.c_str())].c_str();
516 
517  edm::LogInfo("SiStripGainsPCLWorker") << "Setting " << dqm_dir << " in DQM and booking histograms for tag " << tag
518  << std::endl;
519 
520  ibooker.setCurrentFolder(dqm_dir);
521 
522  // this MonitorElement is created to log the number of events / tracks and clusters used
523  // by the calibration algorithm
524 
525  histograms.EventStats = ibooker.book2S("EventStats", "Statistics", 3, -0.5, 2.5, 1, 0, 1);
526  histograms.EventStats->setBinLabel(1, "events count", 1);
527  histograms.EventStats->setBinLabel(2, "tracks count", 1);
528  histograms.EventStats->setBinLabel(3, "clusters count", 1);
529 
530  std::string stag(tag);
531  if (!stag.empty() && stag[0] != '_')
532  stag.insert(0, 1, '_');
533 
534  std::string cvi = std::string("Charge_Vs_Index") + stag;
535  std::string cvpTIB = std::string("Charge_Vs_PathlengthTIB") + stag;
536  std::string cvpTOB = std::string("Charge_Vs_PathlengthTOB") + stag;
537  std::string cvpTIDP = std::string("Charge_Vs_PathlengthTIDP") + stag;
538  std::string cvpTIDM = std::string("Charge_Vs_PathlengthTIDM") + stag;
539  std::string cvpTECP1 = std::string("Charge_Vs_PathlengthTECP1") + stag;
540  std::string cvpTECP2 = std::string("Charge_Vs_PathlengthTECP2") + stag;
541  std::string cvpTECM1 = std::string("Charge_Vs_PathlengthTECM1") + stag;
542  std::string cvpTECM2 = std::string("Charge_Vs_PathlengthTECM2") + stag;
543 
544  int elepos = statCollectionFromMode(tag);
545 
546  histograms.Charge_Vs_Index.reserve(dqm_tag_.size());
547  histograms.Charge_Vs_PathlengthTIB.reserve(dqm_tag_.size());
548  histograms.Charge_Vs_PathlengthTOB.reserve(dqm_tag_.size());
549  histograms.Charge_Vs_PathlengthTIDP.reserve(dqm_tag_.size());
550  histograms.Charge_Vs_PathlengthTIDM.reserve(dqm_tag_.size());
551  histograms.Charge_Vs_PathlengthTECP1.reserve(dqm_tag_.size());
552  histograms.Charge_Vs_PathlengthTECP2.reserve(dqm_tag_.size());
553  histograms.Charge_Vs_PathlengthTECM1.reserve(dqm_tag_.size());
554  histograms.Charge_Vs_PathlengthTECM2.reserve(dqm_tag_.size());
555 
556  // The cluster charge is stored by exploiting a non uniform binning in order
557  // reduce the histogram memory size. The bin width is relaxed with a falling
558  // exponential function and the bin boundaries are stored in the binYarray.
559  // The binXarray is used to provide as many bins as the APVs.
560  //
561  // More details about this implementations are here:
562  // https://indico.cern.ch/event/649344/contributions/2672267/attachments/1498323/2332518/OptimizeChHisto.pdf
563 
564  std::vector<float> binXarray;
565  binXarray.reserve(histograms.NStripAPVs + 1);
566  for (unsigned int a = 0; a <= histograms.NStripAPVs; a++) {
567  binXarray.push_back((float)a);
568  }
569 
570  std::array<float, 688> binYarray;
571  double p0 = 5.445;
572  double p1 = 0.002113;
573  double p2 = 69.01576;
574  double y = 0.;
575  for (int b = 0; b < 687; b++) {
576  binYarray[b] = y;
577  if (y <= 902.)
578  y = y + 2.;
579  else
580  y = (p0 - log(exp(p0 - p1 * y) - p2 * p1)) / p1;
581  }
582  binYarray[687] = 4000.;
583 
584  histograms.Charge_1[elepos].clear();
585  histograms.Charge_2[elepos].clear();
586  histograms.Charge_3[elepos].clear();
587  histograms.Charge_4[elepos].clear();
588 
589  auto it = histograms.Charge_Vs_Index.begin();
590  histograms.Charge_Vs_Index.insert(
591  it + elepos,
592  ibooker.book2S(cvi.c_str(), cvi.c_str(), histograms.NStripAPVs, &binXarray[0], 687, binYarray.data()));
593 
594  it = histograms.Charge_Vs_PathlengthTIB.begin();
595  histograms.Charge_Vs_PathlengthTIB.insert(it + elepos,
596  ibooker.book2S(cvpTIB.c_str(), cvpTIB.c_str(), 20, 0.3, 1.3, 250, 0, 2000));
597 
598  it = histograms.Charge_Vs_PathlengthTOB.begin();
599  histograms.Charge_Vs_PathlengthTOB.insert(it + elepos,
600  ibooker.book2S(cvpTOB.c_str(), cvpTOB.c_str(), 20, 0.3, 1.3, 250, 0, 2000));
601 
602  it = histograms.Charge_Vs_PathlengthTIDP.begin();
603  histograms.Charge_Vs_PathlengthTIDP.insert(
604  it + elepos, ibooker.book2S(cvpTIDP.c_str(), cvpTIDP.c_str(), 20, 0.3, 1.3, 250, 0, 2000));
605 
606  it = histograms.Charge_Vs_PathlengthTIDM.begin();
607  histograms.Charge_Vs_PathlengthTIDM.insert(
608  it + elepos, ibooker.book2S(cvpTIDM.c_str(), cvpTIDM.c_str(), 20, 0.3, 1.3, 250, 0, 2000));
609 
610  it = histograms.Charge_Vs_PathlengthTECP1.begin();
611  histograms.Charge_Vs_PathlengthTECP1.insert(
612  it + elepos, ibooker.book2S(cvpTECP1.c_str(), cvpTECP1.c_str(), 20, 0.3, 1.3, 250, 0, 2000));
613 
614  it = histograms.Charge_Vs_PathlengthTECP2.begin();
615  histograms.Charge_Vs_PathlengthTECP2.insert(
616  it + elepos, ibooker.book2S(cvpTECP2.c_str(), cvpTECP2.c_str(), 20, 0.3, 1.3, 250, 0, 2000));
617 
618  it = histograms.Charge_Vs_PathlengthTECM1.begin();
619  histograms.Charge_Vs_PathlengthTECM1.insert(
620  it + elepos, ibooker.book2S(cvpTECM1.c_str(), cvpTECM1.c_str(), 20, 0.3, 1.3, 250, 0, 2000));
621 
622  it = histograms.Charge_Vs_PathlengthTECM2.begin();
623  histograms.Charge_Vs_PathlengthTECM2.insert(
624  it + elepos, ibooker.book2S(cvpTECM2.c_str(), cvpTECM2.c_str(), 20, 0.3, 1.3, 250, 0, 2000));
625 
626  std::vector<std::pair<std::string, std::string>> hnames =
628  for (unsigned int i = 0; i < hnames.size(); i++) {
629  std::string htag = (hnames[i]).first + stag;
630  histograms.Charge_1[elepos].push_back(ibooker.book1DD(htag.c_str(), (hnames[i]).second.c_str(), 100, 0., 1000.));
631  }
632 
634  for (unsigned int i = 0; i < hnames.size(); i++) {
635  std::string htag = (hnames[i]).first + stag;
636  histograms.Charge_2[elepos].push_back(ibooker.book1DD(htag.c_str(), (hnames[i]).second.c_str(), 100, 0., 1000.));
637  }
638 
640  for (unsigned int i = 0; i < hnames.size(); i++) {
641  std::string htag = (hnames[i]).first + stag;
642  histograms.Charge_3[elepos].push_back(ibooker.book1DD(htag.c_str(), (hnames[i]).second.c_str(), 100, 0., 1000.));
643  }
644 
646  for (unsigned int i = 0; i < hnames.size(); i++) {
647  std::string htag = (hnames[i]).first + stag;
648  histograms.Charge_4[elepos].push_back(ibooker.book1DD(htag.c_str(), (hnames[i]).second.c_str(), 100, 0., 1000.));
649  }
650 }

References a, b, dqm::implementation::IBooker::book1DD(), dqm::implementation::IBooker::book2S(), dqm::implementation::NavigatorBase::cd(), doChargeMonitorPerPlane, dqm_tag_, JetChargeProducer_cfi::exp, first, postprocess-scan-build::htag, mps_fire::i, dqm-mbProfile::log, m_calibrationMode, m_DQMdir, APVGain::monHnames(), p1, p2, edm::second(), dqm::implementation::NavigatorBase::setCurrentFolder(), statCollectionFromMode(), AlCaHLTBitMon_QueryRunRegistry::string, makeGlobalPositionRcd_cfg::tag, VChargeHisto, and y.

◆ checkBookAPVColls()

void SiStripGainsPCLWorker::checkBookAPVColls ( const TrackerGeometry bareTkGeomPtr,
APVGain::APVGainHistograms histograms 
) const
private

Definition at line 394 of file SiStripGainsPCLWorker.cc.

395  {
396  if (bareTkGeomPtr) { // pointer not yet set: called the first time => fill the APVColls
397  auto const& Det = bareTkGeomPtr->dets();
398 
399  edm::LogInfo("SiStripGainsPCLWorker") << " Resetting APV struct" << std::endl;
400 
401  unsigned int Index = 0;
402 
403  for (unsigned int i = 0; i < Det.size(); i++) {
404  DetId Detid = Det[i]->geographicalId();
405  int SubDet = Detid.subdetId();
406 
409  auto DetUnit = dynamic_cast<const StripGeomDetUnit*>(Det[i]);
410  if (!DetUnit)
411  continue;
412 
413  const StripTopology& Topo = DetUnit->specificTopology();
414  unsigned int NAPV = Topo.nstrips() / 128;
415 
416  for (unsigned int j = 0; j < NAPV; j++) {
417  auto APV = std::make_shared<stAPVGain>();
418  APV->Index = Index;
419  APV->Bin = -1;
420  APV->DetId = Detid.rawId();
421  APV->APVId = j;
422  APV->SubDet = SubDet;
423  APV->FitMPV = -1;
424  APV->FitMPVErr = -1;
425  APV->FitWidth = -1;
426  APV->FitWidthErr = -1;
427  APV->FitChi2 = -1;
428  APV->FitNorm = -1;
429  APV->Gain = -1;
430  APV->PreviousGain = 1;
431  APV->PreviousGainTick = 1;
432  APV->x = DetUnit->position().basicVector().x();
433  APV->y = DetUnit->position().basicVector().y();
434  APV->z = DetUnit->position().basicVector().z();
435  APV->Eta = DetUnit->position().basicVector().eta();
436  APV->Phi = DetUnit->position().basicVector().phi();
437  APV->R = DetUnit->position().basicVector().transverse();
438  APV->Thickness = DetUnit->surface().bounds().thickness();
439  APV->NEntries = 0;
440  APV->isMasked = false;
441 
442  histograms.APVsCollOrdered.push_back(APV);
443  histograms.APVsColl[(APV->DetId << 4) | APV->APVId] = APV;
444  Index++;
445  histograms.NStripAPVs++;
446  } // loop on APVs
447  } // if is Strips
448  } // loop on dets
449 
450  for (unsigned int i = 0; i < Det.size();
451  i++) { //Make two loop such that the Pixel information is added at the end --> make transition simpler
452  DetId Detid = Det[i]->geographicalId();
453  int SubDet = Detid.subdetId();
455  auto DetUnit = dynamic_cast<const PixelGeomDetUnit*>(Det[i]);
456  if (!DetUnit)
457  continue;
458 
459  const PixelTopology& Topo = DetUnit->specificTopology();
460  unsigned int NROCRow = Topo.nrows() / (80.);
461  unsigned int NROCCol = Topo.ncolumns() / (52.);
462 
463  for (unsigned int j = 0; j < NROCRow; j++) {
464  for (unsigned int i = 0; i < NROCCol; i++) {
465  auto APV = std::make_shared<stAPVGain>();
466  APV->Index = Index;
467  APV->Bin = -1;
468  APV->DetId = Detid.rawId();
469  APV->APVId = (j << 3 | i);
470  APV->SubDet = SubDet;
471  APV->FitMPV = -1;
472  APV->FitMPVErr = -1;
473  APV->FitWidth = -1;
474  APV->FitWidthErr = -1;
475  APV->FitChi2 = -1;
476  APV->Gain = -1;
477  APV->PreviousGain = 1;
478  APV->PreviousGainTick = 1;
479  APV->x = DetUnit->position().basicVector().x();
480  APV->y = DetUnit->position().basicVector().y();
481  APV->z = DetUnit->position().basicVector().z();
482  APV->Eta = DetUnit->position().basicVector().eta();
483  APV->Phi = DetUnit->position().basicVector().phi();
484  APV->R = DetUnit->position().basicVector().transverse();
485  APV->Thickness = DetUnit->surface().bounds().thickness();
486  APV->isMasked = false; //SiPixelQuality_->IsModuleBad(Detid.rawId());
487  APV->NEntries = 0;
488 
489  histograms.APVsCollOrdered.push_back(APV);
490  histograms.APVsColl[(APV->DetId << 4) | APV->APVId] = APV;
491  Index++;
492  histograms.NPixelDets++;
493 
494  } // loop on ROC cols
495  } // loop on ROC rows
496  } // if Pixel
497  } // loop on Dets
498  } //if (!bareTkGeomPtr_) ...
499 }

References sistrip::APV, TrackerGeometry::dets(), mps_fire::i, dqmiolumiharvest::j, PixelTopology::ncolumns(), PixelTopology::nrows(), StripTopology::nstrips(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, DetId::rawId(), ntupleEnum::SubDet, DetId::subdetId(), StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, and StripSubdetector::TOB.

Referenced by dqmBeginRun().

◆ dqmAnalyze()

void SiStripGainsPCLWorker::dqmAnalyze ( edm::Event const &  iEvent,
edm::EventSetup const &  iSetup,
APVGain::APVGainHistograms const &  histograms 
) const
overridevirtual

Implements DQMGlobalEDAnalyzerBase< APVGain::APVGainHistograms, Args... >.

Definition at line 173 of file SiStripGainsPCLWorker.cc.

175  {
176  using namespace edm;
177 
178  unsigned int eventnumber = iEvent.id().event();
179  unsigned int runnumber = iEvent.id().run();
180 
181  edm::LogInfo("SiStripGainsPCLWorker") << "Processing run " << runnumber << " and event " << eventnumber << std::endl;
182 
183  const TrackerTopology* topo = &iSetup.getData(tTopoToken_);
184  const TrackerGeometry* tGeom = &iSetup.getData(tkGeomToken_);
185 
186  // Event data handles
188  iEvent.getByToken(m_tracks_token, tracks);
189  edm::Handle<TrajTrackAssociationCollection> trajTrackAssociations;
190  iEvent.getByToken(m_association_token, trajTrackAssociations);
191 
192  for (const auto& elem : theTopologyMap) {
193  LogDebug("SiStripGainsPCLWorker") << elem.first << " - " << elem.second.m_string << " "
194  << elem.second.m_subdetectorId << " " << elem.second.m_subdetectorSide << " "
195  << elem.second.m_subdetectorPlane << std::endl;
196  }
197 
198  LogDebug("SiStripGainsPCLWorker") << "for mode" << m_calibrationMode << std::endl;
199 
200  int elepos = statCollectionFromMode(m_calibrationMode.c_str());
201 
202  std::size_t nStoredClusters{0};
203  for (const auto& assoc : *trajTrackAssociations) {
204  const auto traj = assoc.key.get();
205  const auto track = assoc.val.get();
206 
207  if ((track->eta() < MinTrackEta) || (track->eta() > MaxTrackEta) || (track->p() < MinTrackMomentum) ||
208  (track->p() > MaxTrackMomentum) || (track->numberOfValidHits() < MinTrackHits) ||
209  ((track->chi2() / track->ndof()) > MaxTrackChiOverNdf) || (track->algo() > MaxTrackingIteration))
210  continue;
211 
212  int iCluster{-1};
213  for (const auto& meas : traj->measurements()) {
214  const auto& trajState = meas.updatedState();
215  if (!trajState.isValid())
216  continue;
217 
218  // there can be 2 (stereo module), 1 (no stereo module), or 0 (no pixel or strip hit) clusters
219  auto clusters = getClusters(meas.recHit()->hit());
220  for (const auto hitCluster : clusters) {
221  ++iCluster;
222  bool saturation = false;
223  bool overlapping = false;
224  unsigned int charge = 0;
225  int firstStrip = 0;
226  unsigned int nStrips = 0;
227  if (hitCluster.strip) {
228  const auto& ampls = hitCluster.strip->amplitudes();
229  firstStrip = hitCluster.strip->firstStrip();
230  nStrips = ampls.size();
231  charge = hitCluster.strip->charge();
232  saturation = std::any_of(ampls.begin(), ampls.end(), [](uint8_t amp) { return amp >= 254; });
233 
234  overlapping = (((firstStrip % 128) == 0) || ((firstStrip / 128) != ((firstStrip + int(nStrips)) / 128)));
235  } else if (hitCluster.pixel) {
236  const auto& ampls = hitCluster.pixel->pixelADC();
237  const int firstRow = hitCluster.pixel->minPixelRow();
238  const int firstCol = hitCluster.pixel->minPixelCol();
239  firstStrip = ((firstRow / 80) << 3 | (firstCol / 52)) * 128; //Hack to save the APVId
240  nStrips = 0;
241  for (const auto amp : ampls) {
242  charge += amp;
243  if (amp >= 254)
244  saturation = true;
245  }
246  }
247  // works for both strip and pixel thanks to firstStrip encoding for pixel above, as in the calibTree
248  std::shared_ptr<stAPVGain> APV = histograms.APVsColl.at((hitCluster.det << 4) | (firstStrip / 128));
249 
250  const auto farFromEdge = (hitCluster.strip ? isFarFromBorder(trajState, hitCluster.det, tGeom) : true);
251  if ((APV->SubDet > 2) &&
252  ((!farFromEdge) || overlapping || (saturation && !AllowSaturation) || (nStrips > MaxNrStrips)))
253  continue;
254 
255  int clusterCharge = 0;
256  if (APV->SubDet > 2) { // strip
258  saturation = false;
259  for (const auto origCharge : hitCluster.strip->amplitudes()) {
260  int stripCharge;
261  if (useCalibration) {
262  if (FirstSetOfConstants) {
263  stripCharge = int(origCharge / APV->CalibGain);
264  } else {
265  stripCharge = int(origCharge * (APV->PreviousGain / APV->CalibGain));
266  }
267  } else {
268  if (FirstSetOfConstants) {
269  stripCharge = origCharge;
270  } else {
271  stripCharge = int(origCharge * APV->PreviousGain);
272  }
273  }
274  if (stripCharge > 1024) {
275  stripCharge = 255;
276  saturation = true;
277  } else if (stripCharge > 254) {
278  stripCharge = 254;
279  saturation = true;
280  }
281  clusterCharge += stripCharge;
282  }
283  if (saturation && !AllowSaturation)
284  continue;
285  } else {
286  clusterCharge = charge;
287  }
288  } else { // pixel
289  clusterCharge = charge / 265.0; //expected scale factor between pixel and strip charge
290  }
291 
292  const auto trackDir = trajState.localDirection();
293  const auto path = (10. * APV->Thickness) / std::abs(trackDir.z() / trackDir.mag());
294  double ClusterChargeOverPath = ((double)clusterCharge) / path;
295  if (APV->SubDet > 2) {
296  if (Validation) {
297  ClusterChargeOverPath /= APV->PreviousGain;
298  }
299  if (OldGainRemoving) {
300  ClusterChargeOverPath *= APV->PreviousGain;
301  }
302  } else {
303  // keep processing of pixel cluster charge until here
304  continue;
305  }
306  ++nStoredClusters;
307 
308  // real histogram for calibration
309  histograms.Charge_Vs_Index[elepos]->Fill(APV->Index, ClusterChargeOverPath);
310  LogDebug("SiStripGainsPCLWorker")
311  << " for mode " << m_calibrationMode << "\n"
312  << " i " << iCluster << " useCalibration " << useCalibration << " FirstSetOfConstants "
313  << FirstSetOfConstants << " APV->PreviousGain " << APV->PreviousGain << " APV->CalibGain " << APV->CalibGain
314  << " APV->DetId " << APV->DetId << " APV->Index " << APV->Index << " Charge " << clusterCharge << " Path "
315  << path << " ClusterChargeOverPath " << ClusterChargeOverPath << std::endl;
316 
317  // Fill monitoring histograms
318  int mCharge1 = 0;
319  for (const auto sCharge : hitCluster.strip->amplitudes()) {
320  if (sCharge > 254) {
321  mCharge1 += 254;
322  } else {
323  mCharge1 += sCharge;
324  }
325  }
326  // Revome gains for monitoring
327  int mCharge2 = mCharge1 * APV->PreviousGain; // remove G2
328  int mCharge3 = mCharge1 * APV->PreviousGainTick; // remove G1
329  int mCharge4 = mCharge1 * APV->PreviousGain * APV->PreviousGainTick; // remove G1 and G2
330 
331  LogDebug("SiStripGainsPCLWorker") << " full charge " << mCharge1 << " remove G2 " << mCharge2 << " remove G1 "
332  << mCharge3 << " remove G1*G2 " << mCharge4 << std::endl;
333 
334  auto indices = APVGain::FetchIndices(theTopologyMap, hitCluster.det, topo);
335 
336  for (auto m : indices)
337  histograms.Charge_1[elepos][m]->Fill(((double)mCharge1) / path);
338  for (auto m : indices)
339  histograms.Charge_2[elepos][m]->Fill(((double)mCharge2) / path);
340  for (auto m : indices)
341  histograms.Charge_3[elepos][m]->Fill(((double)mCharge3) / path);
342  for (auto m : indices)
343  histograms.Charge_4[elepos][m]->Fill(((double)mCharge4) / path);
344 
345  if (APV->SubDet == StripSubdetector::TIB) {
346  histograms.Charge_Vs_PathlengthTIB[elepos]->Fill(path, clusterCharge); // TIB
347 
348  } else if (APV->SubDet == StripSubdetector::TOB) {
349  histograms.Charge_Vs_PathlengthTOB[elepos]->Fill(path, clusterCharge); // TOB
350 
351  } else if (APV->SubDet == StripSubdetector::TID) {
352  if (APV->Eta < 0) {
353  histograms.Charge_Vs_PathlengthTIDM[elepos]->Fill(path, clusterCharge);
354  } // TID minus
355  else if (APV->Eta > 0) {
356  histograms.Charge_Vs_PathlengthTIDP[elepos]->Fill(path, clusterCharge);
357  } // TID plus
358 
359  } else if (APV->SubDet == StripSubdetector::TEC) {
360  if (APV->Eta < 0) {
361  if (APV->Thickness < 0.04) {
362  histograms.Charge_Vs_PathlengthTECM1[elepos]->Fill(path, clusterCharge);
363  } // TEC minus, type 1
364  else if (APV->Thickness > 0.04) {
365  histograms.Charge_Vs_PathlengthTECM2[elepos]->Fill(path, clusterCharge);
366  } // TEC minus, type 2
367  } else if (APV->Eta > 0) {
368  if (APV->Thickness < 0.04) {
369  histograms.Charge_Vs_PathlengthTECP1[elepos]->Fill(path, clusterCharge);
370  } // TEC plus, type 1
371  else if (APV->Thickness > 0.04) {
372  histograms.Charge_Vs_PathlengthTECP2[elepos]->Fill(path, clusterCharge);
373  } // TEC plus, type 2
374  }
375  }
376  }
377  }
378  }
379 
380  histograms.EventStats->Fill(0., 0., 1);
381  histograms.EventStats->Fill(1., 0., tracks->size());
382  histograms.EventStats->Fill(2., 0., nStoredClusters);
383 
384  //LogDebug("SiStripGainsPCLWorker")<<" for mode"<< m_calibrationMode
385  // <<" entries in histogram:"<< histograms.Charge_Vs_Index[elepos].getEntries()
386  // <<std::endl;
387 }

References funct::abs(), AllowSaturation, sistrip::APV, trackingPlots::assoc, ALCARECOTkAlJpsiMuMu_cff::charge, bsc_activity_cfg::clusters, APVGain::FetchIndices(), FirstSetOfConstants, edm::EventSetup::getData(), iEvent, dqmdumpme::indices, createfilelist::int, TrajectoryStateOnSurface::isValid(), TrajectoryStateOnSurface::localDirection(), LogDebug, visualization-live-secondInstance_cfg::m, m_association_token, m_calibrationMode, m_tracks_token, MaxNrStrips, MaxTrackChiOverNdf, MaxTrackEta, MaxTrackingIteration, MaxTrackMomentum, MinTrackEta, MinTrackHits, MinTrackMomentum, me0TriggerPseudoDigis_cff::nStrips, OldGainRemoving, castor_dqm_sourceclient_file_cfg::path, cond::runnumber, EcalSCDynamicDPhiParametersESProducer_cfi::saturation, statCollectionFromMode(), StripSubdetector::TEC, theTopologyMap, StripSubdetector::TIB, StripSubdetector::TID, tkGeomToken_, StripSubdetector::TOB, HLT_FULL_cff::track, tracks, tTopoToken_, useCalibration, and Validation.

◆ dqmBeginRun()

void SiStripGainsPCLWorker::dqmBeginRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup,
APVGain::APVGainHistograms histograms 
) const
overrideprivatevirtual

Reimplemented from DQMGlobalEDAnalyzerBase< APVGain::APVGainHistograms, Args... >.

Definition at line 64 of file SiStripGainsPCLWorker.cc.

66  {
67  using namespace edm;
68  static constexpr float defaultGainTick = 690. / 640.;
69 
70  // fills the APV collections at each begin run
71  const TrackerGeometry* bareTkGeomPtr = &iSetup.getData(tkGeomTokenBR_);
72  checkBookAPVColls(bareTkGeomPtr, histograms);
73 
74  const auto gainHandle = iSetup.getHandle(gainToken_);
75  if (!gainHandle.isValid()) {
76  edm::LogError("SiStripGainPCLWorker") << "gainHandle is not valid\n";
77  exit(0);
78  }
79 
80  const auto& siStripQuality = iSetup.getData(qualityToken_);
81 
82  for (unsigned int a = 0; a < histograms.APVsCollOrdered.size(); a++) {
83  std::shared_ptr<stAPVGain> APV = histograms.APVsCollOrdered[a];
84 
86  continue;
87 
88  APV->isMasked = siStripQuality.IsApvBad(APV->DetId, APV->APVId);
89 
90  if (gainHandle->getNumberOfTags() != 2) {
91  edm::LogError("SiStripGainPCLWorker") << "NUMBER OF GAIN TAG IS EXPECTED TO BE 2\n";
92  fflush(stdout);
93  exit(0);
94  };
95  float newPreviousGain = gainHandle->getApvGain(APV->APVId, gainHandle->getRange(APV->DetId, 1), 1);
96  if (APV->PreviousGain != 1 and newPreviousGain != APV->PreviousGain)
97  edm::LogWarning("SiStripGainPCLWorker") << "WARNING: ParticleGain in the global tag changed\n";
98  APV->PreviousGain = newPreviousGain;
99 
100  float newPreviousGainTick =
101  APV->isMasked ? defaultGainTick : gainHandle->getApvGain(APV->APVId, gainHandle->getRange(APV->DetId, 0), 0);
102  if (APV->PreviousGainTick != 1 and newPreviousGainTick != APV->PreviousGainTick) {
103  edm::LogWarning("SiStripGainPCLWorker")
104  << "WARNING: TickMarkGain in the global tag changed\n"
105  << std::endl
106  << " APV->SubDet: " << APV->SubDet << " APV->APVId:" << APV->APVId << std::endl
107  << " APV->PreviousGainTick: " << APV->PreviousGainTick << " newPreviousGainTick: " << newPreviousGainTick
108  << std::endl;
109  }
110  APV->PreviousGainTick = newPreviousGainTick;
111  }
112 }

References a, sistrip::APV, checkBookAPVColls(), beamvalidation::exit(), gainToken_, edm::EventSetup::getData(), edm::EventSetup::getHandle(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, qualityToken_, mps_setup::stdout, and tkGeomTokenBR_.

◆ fillDescriptions()

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

Definition at line 502 of file SiStripGainsPCLWorker.cc.

502  {
504  desc.setUnknown();
505  descriptions.addDefault(desc);
506 }

References edm::ConfigurationDescriptions::addDefault(), and submitPVResolutionJobs::desc.

◆ statCollectionFromMode()

int SiStripGainsPCLWorker::statCollectionFromMode ( const char *  tag) const
inlineprivate

Definition at line 127 of file SiStripGainsPCLWorker.h.

127  {
128  std::vector<std::string>::const_iterator it = dqm_tag_.begin();
129  while (it != dqm_tag_.end()) {
130  if (*it == std::string(tag))
131  return it - dqm_tag_.begin();
132  it++;
133  }
134 
135  if (std::string(tag).empty())
136  return 0; // return StdBunch calibration mode for backward compatibility
137 
138  return None;
139 }

References dqm_tag_, relativeConstraints::empty, None, AlCaHLTBitMon_QueryRunRegistry::string, and makeGlobalPositionRcd_cfg::tag.

Referenced by bookHistograms(), and dqmAnalyze().

Member Data Documentation

◆ AllowSaturation

bool SiStripGainsPCLWorker::AllowSaturation
private

Definition at line 104 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ doChargeMonitorPerPlane

bool SiStripGainsPCLWorker::doChargeMonitorPerPlane
private

Charge monitor per detector plane

Definition at line 109 of file SiStripGainsPCLWorker.h.

Referenced by bookHistograms(), and SiStripGainsPCLWorker().

◆ dqm_tag_

std::vector<std::string> SiStripGainsPCLWorker::dqm_tag_
private

◆ FirstSetOfConstants

bool SiStripGainsPCLWorker::FirstSetOfConstants
private

Definition at line 105 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ gainToken_

edm::ESGetToken<SiStripGain, SiStripGainRcd> SiStripGainsPCLWorker::gainToken_
private

Definition at line 120 of file SiStripGainsPCLWorker.h.

Referenced by dqmBeginRun(), and SiStripGainsPCLWorker().

◆ m_association_token

edm::EDGetTokenT<TrajTrackAssociationCollection> SiStripGainsPCLWorker::m_association_token
private

Definition at line 116 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ m_calibrationMode

std::string SiStripGainsPCLWorker::m_calibrationMode
private

Type of statistics for the calibration

Definition at line 112 of file SiStripGainsPCLWorker.h.

Referenced by bookHistograms(), dqmAnalyze(), and SiStripGainsPCLWorker().

◆ m_DQMdir

std::string SiStripGainsPCLWorker::m_DQMdir
private

DQM folder hosting the charge statistics and the monitor plots

Definition at line 111 of file SiStripGainsPCLWorker.h.

Referenced by bookHistograms(), and SiStripGainsPCLWorker().

◆ m_tracks_token

edm::EDGetTokenT<edm::View<reco::Track> > SiStripGainsPCLWorker::m_tracks_token
private

Definition at line 115 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ MaxNrStrips

unsigned int SiStripGainsPCLWorker::MaxNrStrips
private

Definition at line 100 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ MaxTrackChiOverNdf

double SiStripGainsPCLWorker::MaxTrackChiOverNdf
private

Definition at line 102 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ MaxTrackEta

double SiStripGainsPCLWorker::MaxTrackEta
private

Definition at line 99 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ MaxTrackingIteration

int SiStripGainsPCLWorker::MaxTrackingIteration
private

Definition at line 103 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ MaxTrackMomentum

double SiStripGainsPCLWorker::MaxTrackMomentum
private

Definition at line 97 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ MinTrackEta

double SiStripGainsPCLWorker::MinTrackEta
private

Definition at line 98 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ MinTrackHits

unsigned int SiStripGainsPCLWorker::MinTrackHits
private

Definition at line 101 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ MinTrackMomentum

double SiStripGainsPCLWorker::MinTrackMomentum
private

Definition at line 96 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ OldGainRemoving

bool SiStripGainsPCLWorker::OldGainRemoving
private

Definition at line 107 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ qualityToken_

edm::ESGetToken<SiStripQuality, SiStripQualityRcd> SiStripGainsPCLWorker::qualityToken_
private

Definition at line 121 of file SiStripGainsPCLWorker.h.

Referenced by dqmBeginRun(), and SiStripGainsPCLWorker().

◆ theTopologyMap

std::map<unsigned int, APVloc> SiStripGainsPCLWorker::theTopologyMap
private

Definition at line 124 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ tkGeomToken_

edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> SiStripGainsPCLWorker::tkGeomToken_
private

Definition at line 119 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ tkGeomTokenBR_

edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> SiStripGainsPCLWorker::tkGeomTokenBR_
private

Definition at line 119 of file SiStripGainsPCLWorker.h.

Referenced by dqmBeginRun(), and SiStripGainsPCLWorker().

◆ tTopoToken_

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> SiStripGainsPCLWorker::tTopoToken_
private

Definition at line 118 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ useCalibration

bool SiStripGainsPCLWorker::useCalibration
private

Definition at line 108 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ Validation

bool SiStripGainsPCLWorker::Validation
private

Definition at line 106 of file SiStripGainsPCLWorker.h.

Referenced by dqmAnalyze(), and SiStripGainsPCLWorker().

◆ VChargeHisto

std::vector<std::string> SiStripGainsPCLWorker::VChargeHisto
private

Charge monitor plots to be output

Definition at line 113 of file SiStripGainsPCLWorker.h.

Referenced by bookHistograms(), and SiStripGainsPCLWorker().

EcalSCDynamicDPhiParametersESProducer_cfi.saturation
saturation
Definition: EcalSCDynamicDPhiParametersESProducer_cfi.py:14
SiStripGainsPCLWorker::MinTrackHits
unsigned int MinTrackHits
Definition: SiStripGainsPCLWorker.h:101
DDAxes::y
SiStripGainsPCLWorker::tkGeomToken_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > tkGeomToken_
Definition: SiStripGainsPCLWorker.h:119
SiStripGainsPCLWorker::VChargeHisto
std::vector< std::string > VChargeHisto
Definition: SiStripGainsPCLWorker.h:113
mps_fire.i
i
Definition: mps_fire.py:428
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
SiStripGainsPCLWorker::m_DQMdir
std::string m_DQMdir
Definition: SiStripGainsPCLWorker.h:111
PixelSubdetector::PixelEndcap
Definition: PixelSubdetector.h:11
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
dqm::implementation::IBooker::book2S
MonitorElement * book2S(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:219
APVGain::FetchIndices
std::vector< unsigned int > FetchIndices(std::map< unsigned int, APVloc >, uint32_t, const TrackerTopology *topo=nullptr)
Definition: APVGainHelpers.cc:187
SiStripGainsPCLWorker::MinTrackMomentum
double MinTrackMomentum
Definition: SiStripGainsPCLWorker.h:96
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackerTopology
Definition: TrackerTopology.h:16
postprocess-scan-build.htag
htag
Definition: postprocess-scan-build.py:15
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:222
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
SiStripGainsPCLWorker::MaxTrackMomentum
double MaxTrackMomentum
Definition: SiStripGainsPCLWorker.h:97
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
APVGain::subdetectorPlane
int subdetectorPlane(uint32_t, const TrackerTopology *)
Definition: APVGainHelpers.cc:119
edm::Handle
Definition: AssociativeIterator.h:50
SiStripGainsPCLWorker::AllowSaturation
bool AllowSaturation
Definition: SiStripGainsPCLWorker.h:104
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
trackingPlots.assoc
assoc
Definition: trackingPlots.py:183
SiStripGainsPCLWorker::FirstSetOfConstants
bool FirstSetOfConstants
Definition: SiStripGainsPCLWorker.h:105
DetId
Definition: DetId.h:17
alignCSCRings.s
s
Definition: alignCSCRings.py:92
SiStripGainsPCLWorker::MinTrackEta
double MinTrackEta
Definition: SiStripGainsPCLWorker.h:98
None
Definition: APVGainStruct.h:53
ntupleEnum.SubDet
SubDet
Definition: ntupleEnum.py:14
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:78
p2
double p2[4]
Definition: TauolaWrapper.h:90
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
PixelTopology::ncolumns
virtual int ncolumns() const =0
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
SiStripGainsPCLWorker::Validation
bool Validation
Definition: SiStripGainsPCLWorker.h:106
PixelTopology
Definition: PixelTopology.h:10
b
double b
Definition: hdecay.h:118
SiStripGainsPCLWorker::doChargeMonitorPerPlane
bool doChargeMonitorPerPlane
Definition: SiStripGainsPCLWorker.h:109
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:125
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
dqm::implementation::IBooker::book1DD
MonitorElement * book1DD(TString const &name, TString const &title, int nchX, double lowX, double highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:155
bsc_activity_cfg.clusters
clusters
Definition: bsc_activity_cfg.py:36
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
SiStripGainsPCLWorker::MaxNrStrips
unsigned int MaxNrStrips
Definition: SiStripGainsPCLWorker.h:100
funct::true
true
Definition: Factorize.h:173
SiStripGainsPCLWorker::tTopoToken_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
Definition: SiStripGainsPCLWorker.h:118
SiStripGainsPCLWorker::m_tracks_token
edm::EDGetTokenT< edm::View< reco::Track > > m_tracks_token
Definition: SiStripGainsPCLWorker.h:115
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
a
double a
Definition: hdecay.h:119
APVGain::subdetectorSide
int subdetectorSide(uint32_t, const TrackerTopology *)
Definition: APVGainHelpers.cc:49
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:176
makeGlobalPositionRcd_cfg.tag
tag
Definition: makeGlobalPositionRcd_cfg.py:6
mps_setup.stdout
stdout
Definition: mps_setup.py:250
cond::runnumber
Definition: Time.h:19
sistrip::APV
Definition: ConstantsForGranularity.h:79
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
SiStripGainsPCLWorker::dqm_tag_
std::vector< std::string > dqm_tag_
Definition: SiStripGainsPCLWorker.h:92
p1
double p1[4]
Definition: TauolaWrapper.h:89
APVGain::thickness
int thickness(uint32_t)
Definition: APVGainHelpers.cc:76
histograms
Definition: histograms.py:1
TrackerGeometry::dets
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
Definition: TrackerGeometry.h:62
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
SiStripGainsPCLWorker::OldGainRemoving
bool OldGainRemoving
Definition: SiStripGainsPCLWorker.h:107
SiStripGainsPCLWorker::theTopologyMap
std::map< unsigned int, APVloc > theTopologyMap
Definition: SiStripGainsPCLWorker.h:124
APVloc
Definition: APVGainStruct.h:36
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
StripTopology::nstrips
virtual int nstrips() const =0
me0TriggerPseudoDigis_cff.nStrips
nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
Definition: me0TriggerPseudoDigis_cff.py:26
SiStripGainsPCLWorker::statCollectionFromMode
int statCollectionFromMode(const char *tag) const
Definition: SiStripGainsPCLWorker.h:127
SiStripGainsPCLWorker::MaxTrackingIteration
int MaxTrackingIteration
Definition: SiStripGainsPCLWorker.h:103
SiStripGainsPCLWorker::tkGeomTokenBR_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > tkGeomTokenBR_
Definition: SiStripGainsPCLWorker.h:119
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
SiStripGainsPCLWorker::m_association_token
edm::EDGetTokenT< TrajTrackAssociationCollection > m_association_token
Definition: SiStripGainsPCLWorker.h:116
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
SiStripGainsPCLWorker::MaxTrackEta
double MaxTrackEta
Definition: SiStripGainsPCLWorker.h:99
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
SiStripGainsPCLWorker::qualityToken_
edm::ESGetToken< SiStripQuality, SiStripQualityRcd > qualityToken_
Definition: SiStripGainsPCLWorker.h:121
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
APVGain::monHnames
std::vector< std::pair< std::string, std::string > > monHnames(std::vector< std::string >, bool, const char *tag)
Definition: APVGainHelpers.cc:215
edm::EDConsumerBase::esConsumes
auto esConsumes()
Definition: EDConsumerBase.h:206
SiStripGainsPCLWorker::MaxTrackChiOverNdf
double MaxTrackChiOverNdf
Definition: SiStripGainsPCLWorker.h:102
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
SiStripGainsPCLWorker::useCalibration
bool useCalibration
Definition: SiStripGainsPCLWorker.h:108
beamvalidation.exit
def exit(msg="")
Definition: beamvalidation.py:52
GeometricSearchDet
Definition: GeometricSearchDet.h:17
dqmdumpme.indices
indices
Definition: dqmdumpme.py:50
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
JetChargeProducer_cfi.exp
exp
Definition: JetChargeProducer_cfi.py:6
PixelTopology::nrows
virtual int nrows() const =0
edm::ConfigurationDescriptions::addDefault
void addDefault(ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:99
SiStripGainsPCLWorker::checkBookAPVColls
void checkBookAPVColls(const TrackerGeometry *bareTkGeomPtr, APVGain::APVGainHistograms &histograms) const
Definition: SiStripGainsPCLWorker.cc:394
StripTopology
Definition: StripTopology.h:11
edm::InputTag
Definition: InputTag.h:15
SiStripGainsPCLWorker::gainToken_
edm::ESGetToken< SiStripGain, SiStripGainRcd > gainToken_
Definition: SiStripGainsPCLWorker.h:120
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
APVGain::subdetectorId
int subdetectorId(uint32_t)
Definition: APVGainHelpers.cc:16
SiStripGainsPCLWorker::m_calibrationMode
std::string m_calibrationMode
Definition: SiStripGainsPCLWorker.h:112
TrackerGeometry
Definition: TrackerGeometry.h:14