CMS 3D CMS Logo

SeedingLayerSetsBuilder.h
Go to the documentation of this file.
1 #ifndef TkSeedingLayers_SeedingLayerSetsBuilder_H
2 #define TkSeedingLayers_SeedingLayerSetsBuilder_H
3 
6 
11 
14 
15 #include <string>
16 #include <vector>
17 namespace edm { class Event; class EventSetup; class ConsumesCollector;}
18 namespace ctfseeding {class HitExtractor; }
22 class DetLayer;
23 
25 
26 public:
27  using SeedingLayerId = std::tuple<GeomDetEnumerators::SubDetector, TrackerDetSide, int>;
28 
29  SeedingLayerSetsBuilder() = default;
33 
34  static void fillDescriptions(edm::ParameterSetDescription& desc);
35 
36  unsigned short numberOfLayers() const { return theLayers.size(); }
37  unsigned short numberOfLayerSets() const { return theNumberOfLayersInSet > 0 ? theLayerSetIndices.size()/theNumberOfLayersInSet : 0; }
38  std::vector<SeedingLayerId> layers() const; // please call at most once per job per client
39  SeedingLayerSetsLooper seedingLayerSetsLooper() const { return SeedingLayerSetsLooper(theNumberOfLayersInSet, &theLayerSetIndices); }
40 
41  const std::vector<SeedingLayerSetsHits::LayerSetIndex>& layerSetIndices() const { return theLayerSetIndices; }
42 
43  std::unique_ptr<SeedingLayerSetsHits> hits(const edm::Event& ev, const edm::EventSetup& es);
44 
45  static SeedingLayerId nameToEnumId(const std::string& name);
46  static std::vector<std::vector<std::string> > layerNamesInSets(const std::vector<std::string> & namesPSet) ;
47 
48 private:
49  edm::ParameterSet layerConfig(const std::string & nameLayer,const edm::ParameterSet& cfg) const;
50  void updateEventSetup(const edm::EventSetup& es);
51 
54 
55  struct LayerSpec {
56  LayerSpec(unsigned short index, const std::string& layerName, const edm::ParameterSet& cfgLayer, edm::ConsumesCollector& iC);
57  ~LayerSpec() = default;
58  LayerSpec(const LayerSpec&) = delete;
59  LayerSpec& operator=(const LayerSpec&) = delete;
60  LayerSpec(LayerSpec &&) = default;
61  LayerSpec& operator=(LayerSpec &&) = default;
62  const unsigned short nameIndex;
66 
69  int idLayer;
70  std::unique_ptr<ctfseeding::HitExtractor> extractor;
71 
72  std::string print(const std::vector<std::string>& names) const;
73  };
74  unsigned short theNumberOfLayersInSet;
75  std::vector<SeedingLayerSetsHits::LayerSetIndex> theLayerSetIndices; // indices to theLayers to form the layer sets
76  std::vector<std::string> theLayerNames;
77  std::vector<const DetLayer *> theLayerDets;
78  std::vector<const TransientTrackingRecHitBuilder *> theTTRHBuilders;
79  std::vector<LayerSpec> theLayers;
80 };
81 
82 #endif
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
Definition: LayerTriplets.cc:4
static const HistoName names[]
std::vector< LayerSpec > theLayers
edm::ESWatcher< TrackerRecoGeometryRecord > geometryWatcher_
std::vector< std::string > theLayerNames
TrackerDetSide
Definition: TrackerDetSide.h:4
std::unique_ptr< ctfseeding::HitExtractor > extractor
bool ev
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:65
std::vector< const TransientTrackingRecHitBuilder * > theTTRHBuilders
GeomDetEnumerators::SubDetector subdet
std::tuple< GeomDetEnumerators::SubDetector, TrackerDetSide, int > SeedingLayerId
std::vector< SeedingLayerSetsHits::LayerSetIndex > theLayerSetIndices
unsigned short numberOfLayerSets() const
edm::ESWatcher< TransientRecHitRecord > trhWatcher_
const std::vector< SeedingLayerSetsHits::LayerSetIndex > & layerSetIndices() const
unsigned short numberOfLayers() const
HLT enums.
SeedingLayerSetsLooper seedingLayerSetsLooper() const
std::vector< const DetLayer * > theLayerDets