CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
ShallowClustersProducer Class Reference

#include <ShallowClustersProducer.h>

Inheritance diagram for ShallowClustersProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

struct  moduleVars
 
struct  NearDigis
 

Public Member Functions

 ShallowClustersProducer (const edm::ParameterSet &)
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
SerialTaskQueueglobalLuminosityBlocksQueue ()
 
SerialTaskQueueglobalRunsQueue ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducer () 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
 
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)
 
 ~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 const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (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::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

std::string Prefix
 
edm::InputTag theClustersLabel
 
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > theClustersToken_
 
edm::EDGetTokenT< edm::DetSetVector< SiStripProcessedRawDigi > > theDigisToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer 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
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
static bool wantsGlobalLuminosityBlocks ()
 
static bool wantsGlobalRuns ()
 
static bool wantsStreamLuminosityBlocks ()
 
static bool wantsStreamRuns ()
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<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)
 

Detailed Description

Definition at line 17 of file ShallowClustersProducer.h.

Constructor & Destructor Documentation

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

Definition at line 13 of file ShallowClustersProducer.cc.

References edm::ParameterSet::getParameter(), HLT_2018_cff::InputTag, Prefix, theClustersToken_, and theDigisToken_.

14  : Prefix(iConfig.getParameter<std::string>("Prefix")) {
15  produces<std::vector<unsigned>>(Prefix + "number");
16  produces<std::vector<unsigned>>(Prefix + "width");
17  produces<std::vector<float>>(Prefix + "variance");
18  produces<std::vector<float>>(Prefix + "barystrip");
19  produces<std::vector<float>>(Prefix + "middlestrip");
20  produces<std::vector<unsigned>>(Prefix + "charge");
21  produces<std::vector<float>>(Prefix + "noise");
22  produces<std::vector<float>>(Prefix + "ston");
23  produces<std::vector<unsigned>>(Prefix + "seedstrip");
24  produces<std::vector<unsigned>>(Prefix + "seedindex");
25  produces<std::vector<unsigned>>(Prefix + "seedcharge");
26  produces<std::vector<float>>(Prefix + "seednoise");
27  produces<std::vector<float>>(Prefix + "seedgain");
28  produces<std::vector<unsigned>>(Prefix + "qualityisbad");
29 
30  produces<std::vector<float>>(Prefix + "rawchargeC");
31  produces<std::vector<float>>(Prefix + "rawchargeL");
32  produces<std::vector<float>>(Prefix + "rawchargeR");
33  produces<std::vector<float>>(Prefix + "rawchargeLL");
34  produces<std::vector<float>>(Prefix + "rawchargeRR");
35  produces<std::vector<float>>(Prefix + "eta");
36  produces<std::vector<float>>(Prefix + "foldedeta");
37  produces<std::vector<float>>(Prefix + "etaX");
38  produces<std::vector<float>>(Prefix + "etaasymm");
39  produces<std::vector<float>>(Prefix + "outsideasymm");
40  produces<std::vector<float>>(Prefix + "neweta");
41  produces<std::vector<float>>(Prefix + "newetaerr");
42 
43  produces<std::vector<unsigned>>(Prefix + "detid");
44  produces<std::vector<int>>(Prefix + "subdetid");
45  produces<std::vector<int>>(Prefix + "module");
46  produces<std::vector<int>>(Prefix + "side");
47  produces<std::vector<int>>(Prefix + "layerwheel");
48  produces<std::vector<int>>(Prefix + "stringringrod");
49  produces<std::vector<int>>(Prefix + "petal");
50  produces<std::vector<int>>(Prefix + "stereo");
51 
52  theClustersToken_ = consumes<edmNew::DetSetVector<SiStripCluster>>(iConfig.getParameter<edm::InputTag>("Clusters"));
53  theDigisToken_ = consumes<edm::DetSetVector<SiStripProcessedRawDigi>>(edm::InputTag("siStripProcessedRawDigis", ""));
54 }
T getParameter(std::string const &) const
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > theClustersToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripProcessedRawDigi > > theDigisToken_

Member Function Documentation

void ShallowClustersProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 56 of file ShallowClustersProducer.cc.

References edmNew::DetSetVector< T >::begin(), SiStripClusterInfo::charge(), ALCARECOTkAlJpsiMuMu_cff::charge, bsc_activity_cfg::clusters, edmNew::DetSetVector< T >::end(), ShallowClustersProducer::NearDigis::eta(), PVValHelper::eta, ShallowClustersProducer::NearDigis::etaasymm(), ShallowClustersProducer::NearDigis::etaX(), ShallowClustersProducer::NearDigis::first, SiStripClusterInfo::firstStrip(), edm::EventSetup::get(), edm::Event::getByToken(), edmNew::DetSetVector< T >::id(), info(), SiStripClusterInfo::IsAnythingBad(), edm::HandleBase::isValid(), ShallowClustersProducer::NearDigis::last, ShallowClustersProducer::moduleVars::layerwheel, ShallowClustersProducer::NearDigis::left, ShallowClustersProducer::NearDigis::Lleft, ShallowClustersProducer::NearDigis::max, SiStripClusterInfo::maxCharge(), SiStripClusterInfo::maxIndex(), SiStripClusterInfo::maxStrip(), ShallowClustersProducer::moduleVars::module, eostools::move(), hgcalDigitizer_cfi::noise, SiStripClusterInfo::noiseRescaledByGain(), contentValuesFiles::number, ShallowClustersProducer::NearDigis::outsideasymm(), ShallowClustersProducer::moduleVars::petal, funct::pow(), Prefix, edm::ESHandle< T >::product(), edm::Event::put(), ShallowClustersProducer::NearDigis::right, ShallowClustersProducer::NearDigis::Rright, ShallowClustersProducer::moduleVars::side, SiStripClusterInfo::signalOverNoise(), mathSSE::sqrt(), ShallowClustersProducer::moduleVars::stereo, ShallowClustersProducer::moduleVars::stringringrod, SiStripClusterInfo::stripGains(), SiStripClusterInfo::stripNoisesRescaledByGain(), ShallowClustersProducer::moduleVars::subdetid, theClustersToken_, theDigisToken_, SiStripClusterInfo::variance(), SiStripClusterInfo::width(), and ApeEstimator_cff::width.

Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().

56  {
57  //Retrieve tracker topology from geometry
59  iSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
60  const TrackerTopology* const tTopo = tTopoHandle.product();
61 
62  auto number = std::make_unique<std::vector<unsigned>>(7, 0);
63  auto width = std::make_unique<std::vector<unsigned>>();
64  auto variance = std::make_unique<std::vector<float>>();
65  auto barystrip = std::make_unique<std::vector<float>>();
66  auto middlestrip = std::make_unique<std::vector<float>>();
67  auto charge = std::make_unique<std::vector<unsigned>>();
68  auto noise = std::make_unique<std::vector<float>>();
69  auto ston = std::make_unique<std::vector<float>>();
70  auto seedstrip = std::make_unique<std::vector<unsigned>>();
71  auto seedindex = std::make_unique<std::vector<unsigned>>();
72  auto seedcharge = std::make_unique<std::vector<unsigned>>();
73  auto seednoise = std::make_unique<std::vector<float>>();
74  auto seedgain = std::make_unique<std::vector<float>>();
75  auto qualityisbad = std::make_unique<std::vector<unsigned>>();
76 
77  auto rawchargeC = std::make_unique<std::vector<float>>();
78  auto rawchargeL = std::make_unique<std::vector<float>>();
79  auto rawchargeR = std::make_unique<std::vector<float>>();
80  auto rawchargeLL = std::make_unique<std::vector<float>>();
81  auto rawchargeRR = std::make_unique<std::vector<float>>();
82  auto etaX = std::make_unique<std::vector<float>>();
83  auto eta = std::make_unique<std::vector<float>>();
84  auto foldedeta = std::make_unique<std::vector<float>>();
85  auto etaasymm = std::make_unique<std::vector<float>>();
86  auto outsideasymm = std::make_unique<std::vector<float>>();
87  auto neweta = std::make_unique<std::vector<float>>();
88  auto newetaerr = std::make_unique<std::vector<float>>();
89 
90  auto detid = std::make_unique<std::vector<unsigned>>();
91  auto subdetid = std::make_unique<std::vector<int>>();
92  auto side = std::make_unique<std::vector<int>>();
93  auto module = std::make_unique<std::vector<int>>();
94  auto layerwheel = std::make_unique<std::vector<int>>();
95  auto stringringrod = std::make_unique<std::vector<int>>();
96  auto petal = std::make_unique<std::vector<int>>();
97  auto stereo = std::make_unique<std::vector<int>>();
98 
100  // iEvent.getByLabel(theClustersLabel, clusters);
101  iEvent.getByToken(theClustersToken_, clusters);
102 
104  // iEvent.getByLabel("siStripProcessedRawDigis", "", rawProcessedDigis);
105  iEvent.getByToken(theDigisToken_, rawProcessedDigis);
106 
107  edmNew::DetSetVector<SiStripCluster>::const_iterator itClusters = clusters->begin();
108  for (; itClusters != clusters->end(); ++itClusters) {
109  uint32_t id = itClusters->id();
110  const moduleVars moduleV(id, tTopo);
111  for (edmNew::DetSet<SiStripCluster>::const_iterator cluster = itClusters->begin(); cluster != itClusters->end();
112  ++cluster) {
113  const SiStripClusterInfo info(*cluster, iSetup, id);
114  const NearDigis digis = rawProcessedDigis.isValid() ? NearDigis(info, *rawProcessedDigis) : NearDigis(info);
115 
116  (number->at(0))++;
117  (number->at(moduleV.subdetid))++;
118  width->push_back(cluster->amplitudes().size());
119  barystrip->push_back(cluster->barycenter());
120  variance->push_back(info.variance());
121  middlestrip->push_back(info.firstStrip() + info.width() / 2.0);
122  charge->push_back(info.charge());
123  noise->push_back(info.noiseRescaledByGain());
124  ston->push_back(info.signalOverNoise());
125  seedstrip->push_back(info.maxStrip());
126  seedindex->push_back(info.maxIndex());
127  seedcharge->push_back(info.maxCharge());
128  seednoise->push_back(info.stripNoisesRescaledByGain().at(info.maxIndex()));
129  seedgain->push_back(info.stripGains().at(info.maxIndex()));
130  qualityisbad->push_back(info.IsAnythingBad());
131 
132  rawchargeC->push_back(digis.max);
133  rawchargeL->push_back(digis.left);
134  rawchargeR->push_back(digis.right);
135  rawchargeLL->push_back(digis.Lleft);
136  rawchargeRR->push_back(digis.Rright);
137  etaX->push_back(digis.etaX());
138  eta->push_back(digis.eta());
139  etaasymm->push_back(digis.etaasymm());
140  outsideasymm->push_back(digis.outsideasymm());
141  neweta->push_back((digis.last - digis.first) / info.charge());
142  newetaerr->push_back((sqrt(digis.last + digis.first)) / pow(info.charge(), 1.5));
143 
144  detid->push_back(id);
145  subdetid->push_back(moduleV.subdetid);
146  side->push_back(moduleV.side);
147  module->push_back(moduleV.module);
148  layerwheel->push_back(moduleV.layerwheel);
149  stringringrod->push_back(moduleV.stringringrod);
150  petal->push_back(moduleV.petal);
151  stereo->push_back(moduleV.stereo);
152  }
153  }
154 
155  iEvent.put(std::move(number), Prefix + "number");
156  iEvent.put(std::move(width), Prefix + "width");
157  iEvent.put(std::move(variance), Prefix + "variance");
158  iEvent.put(std::move(barystrip), Prefix + "barystrip");
159  iEvent.put(std::move(middlestrip), Prefix + "middlestrip");
160  iEvent.put(std::move(charge), Prefix + "charge");
161  iEvent.put(std::move(noise), Prefix + "noise");
162  iEvent.put(std::move(ston), Prefix + "ston");
163  iEvent.put(std::move(seedstrip), Prefix + "seedstrip");
164  iEvent.put(std::move(seedindex), Prefix + "seedindex");
165  iEvent.put(std::move(seedcharge), Prefix + "seedcharge");
166  iEvent.put(std::move(seednoise), Prefix + "seednoise");
167  iEvent.put(std::move(seedgain), Prefix + "seedgain");
168  iEvent.put(std::move(qualityisbad), Prefix + "qualityisbad");
169 
170  iEvent.put(std::move(rawchargeC), Prefix + "rawchargeC");
171  iEvent.put(std::move(rawchargeL), Prefix + "rawchargeL");
172  iEvent.put(std::move(rawchargeR), Prefix + "rawchargeR");
173  iEvent.put(std::move(rawchargeLL), Prefix + "rawchargeLL");
174  iEvent.put(std::move(rawchargeRR), Prefix + "rawchargeRR");
175  iEvent.put(std::move(etaX), Prefix + "etaX");
176  iEvent.put(std::move(eta), Prefix + "eta");
177  iEvent.put(std::move(foldedeta), Prefix + "foldedeta");
178  iEvent.put(std::move(etaasymm), Prefix + "etaasymm");
179  iEvent.put(std::move(outsideasymm), Prefix + "outsideasymm");
180  iEvent.put(std::move(neweta), Prefix + "neweta");
181  iEvent.put(std::move(newetaerr), Prefix + "newetaerr");
182 
183  iEvent.put(std::move(detid), Prefix + "detid");
184  iEvent.put(std::move(subdetid), Prefix + "subdetid");
185  iEvent.put(std::move(module), Prefix + "module");
186  iEvent.put(std::move(side), Prefix + "side");
187  iEvent.put(std::move(layerwheel), Prefix + "layerwheel");
188  iEvent.put(std::move(stringringrod), Prefix + "stringringrod");
189  iEvent.put(std::move(petal), Prefix + "petal");
190  iEvent.put(std::move(stereo), Prefix + "stereo");
191 }
const_iterator end(bool update=false) const
static const TGPicture * info(bool iBackgroundIsBlack)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
data_type const * const_iterator
Definition: DetSetNew.h:31
id_type id(size_t cell) const
T sqrt(T t)
Definition: SSEVec.h:19
bool isValid() const
Definition: HandleBase.h:70
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > theClustersToken_
edm::EDGetTokenT< edm::DetSetVector< SiStripProcessedRawDigi > > theDigisToken_
T get() const
Definition: EventSetup.h:73
T const * product() const
Definition: ESHandle.h:86
Definition: vlib.h:198
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
def move(src, dest)
Definition: eostools.py:511
const_iterator begin(bool update=false) const

Member Data Documentation

std::string ShallowClustersProducer::Prefix
private

Definition at line 23 of file ShallowClustersProducer.h.

Referenced by produce(), and ShallowClustersProducer().

edm::InputTag ShallowClustersProducer::theClustersLabel
private

Definition at line 22 of file ShallowClustersProducer.h.

edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > ShallowClustersProducer::theClustersToken_
private

Definition at line 42 of file ShallowClustersProducer.h.

Referenced by produce(), and ShallowClustersProducer().

edm::EDGetTokenT<edm::DetSetVector<SiStripProcessedRawDigi> > ShallowClustersProducer::theDigisToken_
private

Definition at line 43 of file ShallowClustersProducer.h.

Referenced by produce(), and ShallowClustersProducer().