CMS 3D CMS Logo

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

#include <RPCRecHitProducer.h>

Inheritance diagram for RPCRecHitProducer:
edm::stream::EDProducer<>

Public Member Functions

void beginRun (const edm::Run &, const edm::EventSetup &) override
 
void produce (edm::Event &event, const edm::EventSetup &setup) override
 The method which produces the rechits. More...
 
 RPCRecHitProducer (const edm::ParameterSet &config)
 Constructor. More...
 
 ~RPCRecHitProducer () override
 Destructor. More...
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 

Private Types

enum  MaskSource { MaskSource::File, MaskSource::EventSetup }
 

Private Attributes

enum RPCRecHitProducer::MaskSource deadSource_
 
std::vector< RPCDeadStrips::DeadItemDeadVec
 
enum RPCRecHitProducer::MaskSource maskSource_
 
std::vector< RPCMaskedStrips::MaskItemMaskVec
 
std::unique_ptr< RPCRecHitBaseAlgotheAlgo
 
std::unique_ptr< RPCDeadStripstheRPCDeadStripsObj
 
const edm::EDGetTokenT< RPCDigiCollectiontheRPCDigiLabel
 
std::unique_ptr< RPCMaskedStripstheRPCMaskedStripsObj
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Module for RPCRecHit production.

Author
M. Maggim – INFN Bari

Definition at line 19 of file RPCRecHitProducer.h.

Member Enumeration Documentation

enum RPCRecHitProducer::MaskSource
strongprivate
Enumerator
File 
EventSetup 

Definition at line 48 of file RPCRecHitProducer.h.

enum RPCRecHitProducer::MaskSource deadSource_
enum RPCRecHitProducer::MaskSource maskSource_
Definition: File.h:11

Constructor & Destructor Documentation

RPCRecHitProducer::RPCRecHitProducer ( const edm::ParameterSet config)

Constructor.

Definition at line 29 of file RPCRecHitProducer.cc.

References MessageLogger_cfi::cerr, rpcRecHits_cfi::deadSource, deadSource_, DeadVec, EventSetup, cmsRelvalreport::exit, File, edm::FileInPath::fullPath(), reco::get(), edm::ParameterSet::getParameter(), recoMuon::in, analyzePatCleaning_cfg::inputFile, rpcRecHits_cfi::maskSource, maskSource_, MaskVec, RPCDeadStrips::DeadItem::rawId, RPCMaskedStrips::MaskItem::rawId, AlCaHLTBitMon_QueryRunRegistry::string, RPCDeadStrips::DeadItem::strip, RPCMaskedStrips::MaskItem::strip, theRPCDeadStripsObj, and theRPCMaskedStripsObj.

29  :
30  theRPCDigiLabel(consumes<RPCDigiCollection>(config.getParameter<InputTag>("rpcDigiLabel"))),
31  // Get the concrete reconstruction algo from the factory
32  theAlgo{RPCRecHitAlgoFactory::get()->create(config.getParameter<string>("recAlgo"),
33  config.getParameter<ParameterSet>("recAlgoConfig"))},
35 {
36  // Set verbose output
37  produces<RPCRecHitCollection>();
38 
39  // Get masked- and dead-strip information
40  theRPCMaskedStripsObj = std::make_unique<RPCMaskedStrips>();
41  theRPCDeadStripsObj = std::make_unique<RPCDeadStrips>();
42 
43  const string maskSource = config.getParameter<std::string>("maskSource");
44  if (maskSource == "File") {
46  edm::FileInPath fp = config.getParameter<edm::FileInPath>("maskvecfile");
47  std::ifstream inputFile(fp.fullPath().c_str(), std::ios::in);
48  if ( !inputFile ) {
49  std::cerr << "Masked Strips File cannot not be opened" << std::endl;
50  exit(1);
51  }
52  while ( inputFile.good() ) {
54  inputFile >> Item.rawId >> Item.strip;
55  if ( inputFile.good() ) MaskVec.push_back(Item);
56  }
57  inputFile.close();
58  }
59 
60  const string deadSource = config.getParameter<std::string>("deadSource");
61  if (deadSource == "File") {
63  edm::FileInPath fp = config.getParameter<edm::FileInPath>("deadvecfile");
64  std::ifstream inputFile(fp.fullPath().c_str(), std::ios::in);
65  if ( !inputFile ) {
66  std::cerr << "Dead Strips File cannot not be opened" << std::endl;
67  exit(1);
68  }
69  while ( inputFile.good() ) {
71  inputFile >> Item.rawId >> Item.strip;
72  if ( inputFile.good() ) DeadVec.push_back(Item);
73  }
74  inputFile.close();
75  }
76 }
T getParameter(std::string const &) const
std::unique_ptr< RPCRecHitBaseAlgo > theAlgo
enum RPCRecHitProducer::MaskSource deadSource_
const edm::EDGetTokenT< RPCDigiCollection > theRPCDigiLabel
std::unique_ptr< RPCMaskedStrips > theRPCMaskedStripsObj
std::vector< RPCDeadStrips::DeadItem > DeadVec
enum RPCRecHitProducer::MaskSource maskSource_
std::string fullPath() const
Definition: FileInPath.cc:163
std::vector< RPCMaskedStrips::MaskItem > MaskVec
T get(const Candidate &c)
Definition: component.h:55
std::unique_ptr< RPCDeadStrips > theRPCDeadStripsObj
RPCRecHitProducer::~RPCRecHitProducer ( )
inlineoverride

Destructor.

Definition at line 26 of file RPCRecHitProducer.h.

References beginRun(), produce(), and GeneralSetup::setup().

26 {};

Member Function Documentation

void RPCRecHitProducer::beginRun ( const edm::Run r,
const edm::EventSetup setup 
)
override

Definition at line 79 of file RPCRecHitProducer.cc.

References deadSource_, RPCDeadStrips::DeadVec, DeadVec, EventSetup, File, edm::EventSetup::get(), maskSource_, RPCMaskedStrips::MaskVec, MaskVec, edm::ESHandle< T >::product(), RPCMaskedStrips::MaskItem::rawId, RPCDeadStrips::DeadItem::rawId, RPCDeadStrips::DeadItem::strip, RPCMaskedStrips::MaskItem::strip, theRPCDeadStripsObj, and theRPCMaskedStripsObj.

Referenced by ~RPCRecHitProducer().

79  {
80  // Getting the masked-strip information
82  edm::ESHandle<RPCMaskedStrips> readoutMaskedStrips;
83  setup.get<RPCMaskedStripsRcd>().get(readoutMaskedStrips);
84  const RPCMaskedStrips* tmp_obj = readoutMaskedStrips.product();
85  theRPCMaskedStripsObj->MaskVec = tmp_obj->MaskVec;
86  delete tmp_obj;
87  }
88  else if ( maskSource_ == MaskSource::File ) {
89  std::vector<RPCMaskedStrips::MaskItem>::iterator posVec;
90  for ( posVec = MaskVec.begin(); posVec != MaskVec.end(); ++posVec ) {
92  Item.rawId = (*posVec).rawId;
93  Item.strip = (*posVec).strip;
94  theRPCMaskedStripsObj->MaskVec.push_back(Item);
95  }
96  }
97 
98  // Getting the dead-strip information
100  edm::ESHandle<RPCDeadStrips> readoutDeadStrips;
101  setup.get<RPCDeadStripsRcd>().get(readoutDeadStrips);
102  const RPCDeadStrips* tmp_obj = readoutDeadStrips.product();
103  theRPCDeadStripsObj->DeadVec = tmp_obj->DeadVec;
104  delete tmp_obj;
105  }
106  else if ( deadSource_ == MaskSource::File ) {
107  std::vector<RPCDeadStrips::DeadItem>::iterator posVec;
108  for ( posVec = DeadVec.begin(); posVec != DeadVec.end(); ++posVec ) {
110  Item.rawId = (*posVec).rawId;
111  Item.strip = (*posVec).strip;
112  theRPCDeadStripsObj->DeadVec.push_back(Item);
113  }
114  }
115 
116 }
std::vector< MaskItem > MaskVec
enum RPCRecHitProducer::MaskSource deadSource_
std::unique_ptr< RPCMaskedStrips > theRPCMaskedStripsObj
std::vector< RPCDeadStrips::DeadItem > DeadVec
enum RPCRecHitProducer::MaskSource maskSource_
T get() const
Definition: EventSetup.h:71
std::vector< DeadItem > DeadVec
Definition: RPCDeadStrips.h:28
std::vector< RPCMaskedStrips::MaskItem > MaskVec
T const * product() const
Definition: ESHandle.h:86
std::unique_ptr< RPCDeadStrips > theRPCDeadStripsObj
void RPCRecHitProducer::produce ( edm::Event event,
const edm::EventSetup setup 
)
override

The method which produces the rechits.

Definition at line 118 of file RPCRecHitProducer.cc.

References edm::OwnVector< T, P >::begin(), edm::OwnVector< T, P >::empty(), edm::OwnVector< T, P >::end(), edm::EventSetup::get(), RecoTauDiscriminantConfiguration::mask, eostools::move(), DetId::rawId(), RPCGeometry::roll(), theAlgo, theRPCDeadStripsObj, theRPCDigiLabel, and theRPCMaskedStripsObj.

Referenced by ~RPCRecHitProducer().

118  {
119  // Get the RPC Geometry
120  ESHandle<RPCGeometry> rpcGeom;
121  setup.get<MuonGeometryRecord>().get(rpcGeom);
122 
123  // Get the digis from the event
125  event.getByToken(theRPCDigiLabel,digis);
126 
127  // Pass the EventSetup to the algo
128  theAlgo->setES(setup);
129 
130  // Create the pointer to the collection which will store the rechits
131  auto recHitCollection = std::make_unique<RPCRecHitCollection>();
132 
133  // Iterate through all digi collections ordered by LayerId
134 
135  for ( auto rpcdgIt = digis->begin(); rpcdgIt != digis->end(); ++rpcdgIt ) {
136  // The layerId
137  const RPCDetId& rpcId = (*rpcdgIt).first;
138 
139  // Get the GeomDet from the setup
140  const RPCRoll* roll = rpcGeom->roll(rpcId);
141  if (roll == nullptr){
142  edm::LogError("BadDigiInput")<<"Failed to find RPCRoll for ID "<<rpcId;
143  continue;
144  }
145 
146  // Get the iterators over the digis associated with this LayerId
147  const RPCDigiCollection::Range& range = (*rpcdgIt).second;
148 
149  // Getting the roll mask, that includes dead strips, for the given RPCDet
150  RollMask mask;
151  const int rawId = rpcId.rawId();
152  for ( const auto& tomask : theRPCMaskedStripsObj->MaskVec ) {
153  if ( tomask.rawId == rawId ) {
154  const int bit = tomask.strip;
155  mask.set(bit-1);
156  }
157  }
158 
159  for ( const auto& tomask : theRPCDeadStripsObj->DeadVec ) {
160  if ( tomask.rawId == rawId ) {
161  const int bit = tomask.strip;
162  mask.set(bit-1);
163  }
164  }
165 
166  // Call the reconstruction algorithm
167  OwnVector<RPCRecHit> recHits = theAlgo->reconstruct(*roll, rpcId, range, mask);
168 
169  if(!recHits.empty()) //FIXME: is it really needed?
170  recHitCollection->put(rpcId, recHits.begin(), recHits.end());
171  }
172 
173  event.put(std::move(recHitCollection));
174 
175 }
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:50
std::unique_ptr< RPCRecHitBaseAlgo > theAlgo
iterator begin()
Definition: OwnVector.h:244
bool empty() const
Definition: OwnVector.h:269
const edm::EDGetTokenT< RPCDigiCollection > theRPCDigiLabel
std::bitset< maskSIZE > RollMask
Definition: RPCRollMask.h:7
std::unique_ptr< RPCMaskedStrips > theRPCMaskedStripsObj
iterator end()
Definition: OwnVector.h:249
T get() const
Definition: EventSetup.h:71
std::pair< const_iterator, const_iterator > Range
def move(src, dest)
Definition: eostools.py:511
std::unique_ptr< RPCDeadStrips > theRPCDeadStripsObj
const RPCRoll * roll(RPCDetId id) const
Return a roll given its id.
Definition: RPCGeometry.cc:75

Member Data Documentation

enum RPCRecHitProducer::MaskSource RPCRecHitProducer::deadSource_
private

Referenced by beginRun(), and RPCRecHitProducer().

std::vector<RPCDeadStrips::DeadItem> RPCRecHitProducer::DeadVec
private

Definition at line 51 of file RPCRecHitProducer.h.

Referenced by beginRun(), and RPCRecHitProducer().

enum RPCRecHitProducer::MaskSource RPCRecHitProducer::maskSource_
private

Referenced by beginRun(), and RPCRecHitProducer().

std::vector<RPCMaskedStrips::MaskItem> RPCRecHitProducer::MaskVec
private

Definition at line 50 of file RPCRecHitProducer.h.

Referenced by beginRun(), and RPCRecHitProducer().

std::unique_ptr<RPCRecHitBaseAlgo> RPCRecHitProducer::theAlgo
private

Definition at line 40 of file RPCRecHitProducer.h.

Referenced by produce().

std::unique_ptr<RPCDeadStrips> RPCRecHitProducer::theRPCDeadStripsObj
private

Definition at line 45 of file RPCRecHitProducer.h.

Referenced by beginRun(), produce(), and RPCRecHitProducer().

const edm::EDGetTokenT<RPCDigiCollection> RPCRecHitProducer::theRPCDigiLabel
private

Definition at line 36 of file RPCRecHitProducer.h.

Referenced by produce().

std::unique_ptr<RPCMaskedStrips> RPCRecHitProducer::theRPCMaskedStripsObj
private

Definition at line 42 of file RPCRecHitProducer.h.

Referenced by beginRun(), produce(), and RPCRecHitProducer().