CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
CtfSpecialSeedGenerator Class Reference

#include <CtfSpecialSeedGenerator.h>

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

Public Types

typedef TrajectoryStateOnSurface TSOS
 
- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T...>
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T...>
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Public Member Functions

void beginRun (edm::Run const &, edm::EventSetup const &) override
 
 CtfSpecialSeedGenerator (const edm::ParameterSet &conf)
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void produce (edm::Event &e, const edm::EventSetup &c) override
 
 ~CtfSpecialSeedGenerator () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 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
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Member Functions

bool buildSeeds (const edm::EventSetup &iSetup, const edm::Event &e, const OrderedSeedingHits &osh, const NavigationDirection &navdir, const PropagationDirection &dir, TrajectorySeedCollection &output)
 
bool postCheck (const TrajectorySeed &seed)
 
bool preliminaryCheck (const SeedingHitSet &shs, const edm::EventSetup &es)
 
bool run (const edm::EventSetup &c, const edm::Event &e, TrajectorySeedCollection &output)
 

Private Attributes

ClusterChecker check
 
edm::ParameterSet conf_
 
BoundPlane::BoundPlanePointer lowerScintillator
 
bool requireBOFF
 
edm::ESHandle
< TransientTrackingRecHitBuilder
theBuilder
 
const edm::ESGetToken
< TransientTrackingRecHitBuilder,
TransientRecHitRecord
theBuilderToken
 
std::vector< std::unique_ptr
< OrderedHitsGenerator > > 
theGenerators
 
edm::ESHandle< MagneticFieldtheMagfield
 
int32_t theMaxSeeds
 
const edm::ESGetToken
< MagneticField,
IdealMagneticFieldRecord
theMFToken
 
std::vector< NavigationDirectiontheNavDirs
 
const edm::ESGetToken
< Propagator,
TrackingComponentsRecord
thePropAlongToken
 
std::vector< PropagationDirectionthePropDirs
 
const edm::ESGetToken
< Propagator,
TrackingComponentsRecord
thePropOppositeToken
 
std::unique_ptr
< TrackingRegionProducer
theRegionProducer
 
std::unique_ptr
< SeedFromGenericPairOrTriplet
theSeedBuilder
 
const edm::ESGetToken
< TrackerTopology,
TrackerTopologyRcd
theTopoToken
 
edm::ESHandle< TrackerGeometrytheTracker
 
const edm::ESGetToken
< TrackerGeometry,
TrackerDigiGeometryRecord
theTrackerToken
 
BoundPlane::BoundPlanePointer upperScintillator
 
bool useScintillatorsConstraint
 

Detailed Description

Definition at line 40 of file CtfSpecialSeedGenerator.h.

Member Typedef Documentation

Definition at line 42 of file CtfSpecialSeedGenerator.h.

Constructor & Destructor Documentation

CtfSpecialSeedGenerator::CtfSpecialSeedGenerator ( const edm::ParameterSet conf)

Definition at line 18 of file CtfSpecialSeedGenerator.cc.

References conf_, beamerCreator::create(), get, edm::ParameterSet::getParameter(), AlCaHLTBitMon_QueryRunRegistry::string, theGenerators, theRegionProducer, and useScintillatorsConstraint.

19  : conf_(conf),
20  theMFToken(esConsumes<edm::Transition::BeginRun>()),
22  esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", conf_.getParameter<std::string>("TTRHBuilder")))),
23  theTrackerToken(esConsumes<edm::Transition::BeginRun>()),
24  thePropAlongToken(esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", "PropagatorWithMaterial"))),
26  esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", "PropagatorWithMaterialOpposite"))),
28  requireBOFF(conf.getParameter<bool>("requireBOFF")),
29  theMaxSeeds(conf.getParameter<int32_t>("maxSeeds")),
30  check(conf, consumesCollector())
31 
32 {
33  useScintillatorsConstraint = conf_.getParameter<bool>("UseScintillatorsConstraint");
34  edm::LogVerbatim("CtfSpecialSeedGenerator") << "Constructing CtfSpecialSeedGenerator";
35  produces<TrajectorySeedCollection>();
36 
37  edm::ParameterSet regfactoryPSet = conf_.getParameter<edm::ParameterSet>("RegionFactoryPSet");
38  std::string regfactoryName = regfactoryPSet.getParameter<std::string>("ComponentName");
39  theRegionProducer = std::unique_ptr<TrackingRegionProducer>{
40  TrackingRegionProducerFactory::get()->create(regfactoryName, regfactoryPSet, consumesCollector())};
41 
42  std::vector<edm::ParameterSet> pSets = conf_.getParameter<std::vector<edm::ParameterSet>>("OrderedHitsFactoryPSets");
43  std::vector<edm::ParameterSet>::const_iterator iPSet;
44  edm::ConsumesCollector iC = consumesCollector();
45  for (iPSet = pSets.begin(); iPSet != pSets.end(); iPSet++) {
46  std::string hitsfactoryName = iPSet->getParameter<std::string>("ComponentName");
47  theGenerators.emplace_back(OrderedHitsGeneratorFactory::get()->create(hitsfactoryName, *iPSet, iC));
48  }
49 }
Log< level::Info, true > LogVerbatim
std::unique_ptr< TrackingRegionProducer > theRegionProducer
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > theBuilderToken
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropOppositeToken
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropAlongToken
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > theTrackerToken
#define get
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > theTopoToken
std::vector< std::unique_ptr< OrderedHitsGenerator > > theGenerators
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > theMFToken
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
CtfSpecialSeedGenerator::~CtfSpecialSeedGenerator ( )
overridedefault

Member Function Documentation

void CtfSpecialSeedGenerator::beginRun ( edm::Run const &  ,
edm::EventSetup const &  iSetup 
)
override

Definition at line 55 of file CtfSpecialSeedGenerator.cc.

References alongMomentum, newFWLiteAna::build, conf_, edm::EventSetup::getHandle(), edm::ParameterSet::getParameter(), insideOut, lowerScintillator, oppositeToMomentum, outsideIn, AlCaHLTBitMon_ParallelJobs::p, edm::ESHandle< class >::product(), makeMuonMisalignmentScenario::rot, AlCaHLTBitMon_QueryRunRegistry::string, theBuilder, theBuilderToken, theMagfield, theMFToken, theNavDirs, thePropAlongToken, thePropDirs, thePropOppositeToken, theSeedBuilder, theTracker, theTrackerToken, upperScintillator, useScintillatorsConstraint, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

55  {
56  theMagfield = iSetup.getHandle(theMFToken);
57  theBuilder = iSetup.getHandle(theBuilderToken);
58  theTracker = iSetup.getHandle(theTrackerToken);
59 
60  edm::LogVerbatim("CtfSpecialSeedGenerator") << "Initializing...";
62  edm::ParameterSet upperScintPar = conf_.getParameter<edm::ParameterSet>("UpperScintillatorParameters");
63  edm::ParameterSet lowerScintPar = conf_.getParameter<edm::ParameterSet>("LowerScintillatorParameters");
64  RectangularPlaneBounds upperBounds(
65  upperScintPar.getParameter<double>("WidthInX"), upperScintPar.getParameter<double>("LenghtInZ"), 1);
66  GlobalPoint upperPosition(upperScintPar.getParameter<double>("GlobalX"),
67  upperScintPar.getParameter<double>("GlobalY"),
68  upperScintPar.getParameter<double>("GlobalZ"));
69  edm::LogVerbatim("CtfSpecialSeedGenerator") << "Upper Scintillator position x, y, z " << upperPosition.x() << ", "
70  << upperPosition.y() << ", " << upperPosition.z();
71  RectangularPlaneBounds lowerBounds(
72  lowerScintPar.getParameter<double>("WidthInX"), lowerScintPar.getParameter<double>("LenghtInZ"), 1);
73  GlobalPoint lowerPosition(lowerScintPar.getParameter<double>("GlobalX"),
74  lowerScintPar.getParameter<double>("GlobalY"),
75  lowerScintPar.getParameter<double>("GlobalZ"));
76  edm::LogVerbatim("CtfSpecialSeedGenerator") << "Lower Scintillator position x, y, z " << lowerPosition.x() << ", "
77  << lowerPosition.y() << ", " << lowerPosition.z();
78  TkRotation<float> rot(1, 0, 0, 0, 0, 1, 0, 1, 0);
79  upperScintillator = BoundPlane::build(upperPosition, rot, &upperBounds);
80  lowerScintillator = BoundPlane::build(lowerPosition, rot, &lowerBounds);
81  }
82 
83  edm::ESHandle<Propagator> propagatorAlongHandle = iSetup.getHandle(thePropAlongToken);
84  edm::ESHandle<Propagator> propagatorOppositeHandle = iSetup.getHandle(thePropOppositeToken);
85 
86  std::vector<edm::ParameterSet> pSets = conf_.getParameter<std::vector<edm::ParameterSet>>("OrderedHitsFactoryPSets");
87  std::vector<edm::ParameterSet>::const_iterator iPSet;
88  for (iPSet = pSets.begin(); iPSet != pSets.end(); iPSet++) {
89  std::string propagationDirection = iPSet->getParameter<std::string>("PropagationDirection");
90  if (propagationDirection == "alongMomentum")
91  thePropDirs.push_back(alongMomentum);
92  else
94  std::string navigationDirection = iPSet->getParameter<std::string>("NavigationDirection");
95  if (navigationDirection == "insideOut")
96  theNavDirs.push_back(insideOut);
97  else
98  theNavDirs.push_back(outsideIn);
99  edm::LogVerbatim("CtfSpecialSeedGenerator") << "hitsGenerator done";
100  }
101  bool setMomentum = conf_.getParameter<bool>("SetMomentum");
102  std::vector<int> charges;
103  if (setMomentum) {
104  charges = conf_.getParameter<std::vector<int>>("Charges");
105  }
106  theSeedBuilder = std::make_unique<SeedFromGenericPairOrTriplet>(theMagfield.product(),
109  propagatorAlongHandle.product(),
110  propagatorOppositeHandle.product(),
111  charges,
112  setMomentum,
113  conf_.getParameter<double>("ErrorRescaling"));
114  double p = 1;
115  if (setMomentum) {
116  p = conf_.getParameter<double>("SeedMomentum");
117  theSeedBuilder->setMomentumTo(p);
118  }
119 }
Log< level::Info, true > LogVerbatim
std::unique_ptr< SeedFromGenericPairOrTriplet > theSeedBuilder
BoundPlane::BoundPlanePointer lowerScintillator
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > theBuilderToken
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropOppositeToken
BoundPlane::BoundPlanePointer upperScintillator
T const * product() const
Definition: ESHandle.h:86
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropAlongToken
edm::ESHandle< MagneticField > theMagfield
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > theTrackerToken
edm::ESHandle< TrackerGeometry > theTracker
edm::ESHandle< TransientTrackingRecHitBuilder > theBuilder
std::vector< NavigationDirection > theNavDirs
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > theMFToken
std::vector< PropagationDirection > thePropDirs
bool CtfSpecialSeedGenerator::buildSeeds ( const edm::EventSetup iSetup,
const edm::Event e,
const OrderedSeedingHits osh,
const NavigationDirection navdir,
const PropagationDirection dir,
TrajectorySeedCollection output 
)
private

Definition at line 161 of file CtfSpecialSeedGenerator.cc.

References mps_fire::i, postCheck(), preliminaryCheck(), DetachedQuadStep_cff::seeds, OrderedSeedingHits::size(), theMaxSeeds, and theSeedBuilder.

Referenced by run().

166  {
167  //SeedFromGenericPairOrTriplet seedBuilder(conf_, magfield.product(), tracker.product(), theBuilder.product());
168  edm::LogInfo("CtfSpecialSeedGenerator") << "osh.size() " << osh.size();
169  for (unsigned int i = 0; i < osh.size(); i++) {
170  SeedingHitSet shs = osh[i];
171  if (preliminaryCheck(shs, iSetup)) {
172  std::vector<TrajectorySeed*> seeds = theSeedBuilder->seed(shs, dir, navdir, iSetup);
173  for (std::vector<TrajectorySeed*>::const_iterator iSeed = seeds.begin(); iSeed != seeds.end(); iSeed++) {
174  if (!*iSeed) {
175  edm::LogError("CtfSpecialSeedGenerator") << "a seed pointer is null. skipping.";
176  continue;
177  }
178  if (postCheck(**iSeed)) {
179  output.push_back(**iSeed);
180  }
181  delete *iSeed;
182  edm::LogVerbatim("CtfSpecialSeedGenerator") << "Seed built";
183  }
184  }
185  }
186  if ((theMaxSeeds > 0) && (output.size() > size_t(theMaxSeeds))) {
187  edm::LogWarning("TooManySeeds") << "Too many seeds (" << output.size() << "), bailing out.\n";
188  output.clear();
189  return false;
190  }
191  return true;
192 }
Log< level::Info, true > LogVerbatim
std::unique_ptr< SeedFromGenericPairOrTriplet > theSeedBuilder
virtual unsigned int size() const =0
Log< level::Error, false > LogError
Log< level::Info, false > LogInfo
bool preliminaryCheck(const SeedingHitSet &shs, const edm::EventSetup &es)
bool postCheck(const TrajectorySeed &seed)
Log< level::Warning, false > LogWarning
void CtfSpecialSeedGenerator::endRun ( edm::Run const &  ,
edm::EventSetup const &   
)
override

Definition at line 53 of file CtfSpecialSeedGenerator.cc.

References theSeedBuilder.

53 { theSeedBuilder.reset(); }
std::unique_ptr< SeedFromGenericPairOrTriplet > theSeedBuilder
bool CtfSpecialSeedGenerator::postCheck ( const TrajectorySeed seed)
private

Definition at line 245 of file CtfSpecialSeedGenerator.cc.

References alongMomentum, PTrajectoryStateOnDet::detId(), TrajectoryStateOnSurface::freeState(), lowerScintillator, oppositeToMomentum, StraightLinePlaneCrossing::position(), TrajectorySeed::startingState(), theMagfield, theTracker, trajectoryStateTransform::transientState(), upperScintillator, and useScintillatorsConstraint.

Referenced by buildSeeds().

245  {
247  return true;
248 
249  PTrajectoryStateOnDet pstate = seed.startingState();
251  pstate, &(theTracker->idToDet(DetId(pstate.detId()))->surface()), &(*theMagfield));
252  const FreeTrajectoryState* state = theTSOS.freeState();
253  StraightLinePlaneCrossing planeCrossingLower(
254  Basic3DVector<float>(state->position()), Basic3DVector<float>(state->momentum()), alongMomentum);
255  StraightLinePlaneCrossing planeCrossingUpper(
256  Basic3DVector<float>(state->position()), Basic3DVector<float>(state->momentum()), oppositeToMomentum);
257  std::pair<bool, StraightLinePlaneCrossing::PositionType> positionUpper =
258  planeCrossingUpper.position(*upperScintillator);
259  std::pair<bool, StraightLinePlaneCrossing::PositionType> positionLower =
260  planeCrossingLower.position(*lowerScintillator);
261  if (!(positionUpper.first && positionLower.first)) {
262  edm::LogVerbatim("CtfSpecialSeedGenerator::checkDirection") << "Scintillator plane not crossed";
263  return false;
264  }
265  LocalPoint positionUpperLocal = upperScintillator->toLocal((GlobalPoint)(positionUpper.second));
266  LocalPoint positionLowerLocal = lowerScintillator->toLocal((GlobalPoint)(positionLower.second));
267  if (upperScintillator->bounds().inside(positionUpperLocal) &&
268  lowerScintillator->bounds().inside(positionLowerLocal)) {
269  edm::LogVerbatim("CtfSpecialSeedGenerator::checkDirection")
270  << "position on Upper scintillator " << positionUpper.second;
271  edm::LogVerbatim("CtfSpecialSeedGenerator::checkDirection")
272  << "position on Lower scintillator " << positionLower.second;
273 
274  return true;
275  }
276  edm::LogVerbatim("CtfSpecialSeedGenerator::checkDirection")
277  << "scintillator not crossed in bounds: position on Upper scintillator " << positionUpper.second
278  << " position on Lower scintillator " << positionLower.second;
279  return false;
280 }
Log< level::Info, true > LogVerbatim
BoundPlane::BoundPlanePointer lowerScintillator
BoundPlane::BoundPlanePointer upperScintillator
FreeTrajectoryState const * freeState(bool withErrors=true) const
unsigned int detId() const
Definition: DetId.h:17
PTrajectoryStateOnDet const & startingState() const
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
edm::ESHandle< MagneticField > theMagfield
edm::ESHandle< TrackerGeometry > theTracker
bool CtfSpecialSeedGenerator::preliminaryCheck ( const SeedingHitSet shs,
const edm::EventSetup es 
)
private

Definition at line 194 of file CtfSpecialSeedGenerator.cc.

References conf_, edm::EventSetup::getHandle(), edm::ParameterSet::getParameter(), phase1PixelTopology::layer, nHits, SeedingHitSet::size(), theTopoToken, and PV3DBase< T, PVType, FrameType >::y().

Referenced by buildSeeds().

194  {
196 
197  std::vector<std::pair<unsigned int, unsigned int>> vSubdetLayer;
198  //std::vector<std::string> vSeedLayerNames;
199  bool checkHitsAtPositiveY = conf_.getParameter<bool>("SeedsFromPositiveY");
200  //***top-bottom
201  bool checkHitsAtNegativeY = conf_.getParameter<bool>("SeedsFromNegativeY");
202  //***
203  bool checkHitsOnDifferentLayers = conf_.getParameter<bool>("CheckHitsAreOnDifferentLayers");
204  unsigned int nHits = shs.size();
205  for (unsigned int iHit = 0; iHit < nHits; ++iHit) {
206  //hits for the seeds must be at positive y
207  auto trh = shs[iHit];
208  auto recHit = trh;
209  GlobalPoint hitPos = recHit->globalPosition();
210  //GlobalPoint point =
211  // theTracker->idToDet(iHits->geographicalId() )->surface().toGlobal(iHits->localPosition());
212  if (checkHitsAtPositiveY) {
213  if (hitPos.y() < 0)
214  return false;
215  }
216  //***top-bottom
217  if (checkHitsAtNegativeY) {
218  if (hitPos.y() > 0)
219  return false;
220  }
221  //***
222  //std::string name = iHits->seedinglayer().name();
223  //hits for the seeds must be in different layers
224  unsigned int subid = (*trh).geographicalId().subdetId();
225  unsigned int layer = tTopo->layer((*trh).geographicalId());
226  std::vector<std::pair<unsigned int, unsigned int>>::const_iterator iter;
227  //std::vector<std::string>::const_iterator iNames;
228  if (checkHitsOnDifferentLayers) {
229  for (iter = vSubdetLayer.begin(); iter != vSubdetLayer.end(); iter++) {
230  if (iter->first == subid && iter->second == layer)
231  return false;
232  }
233  /*
234  for (iNames = vSeedLayerNames.begin(); iNames != vSeedLayerNames.end(); iNames++){
235  if (*iNames == name) return false;
236  }
237  */
238  }
239  //vSeedLayerNames.push_back(iHits->seedinglayer().name());
240  vSubdetLayer.push_back(std::make_pair(subid, layer));
241  }
242  return true;
243 }
T y() const
Definition: PV3DBase.h:60
constexpr std::array< uint8_t, layerIndexSize > layer
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t nHits
unsigned int size() const
Definition: SeedingHitSet.h:41
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:157
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > theTopoToken
void CtfSpecialSeedGenerator::produce ( edm::Event e,
const edm::EventSetup c 
)
override

Definition at line 121 of file CtfSpecialSeedGenerator.cc.

References check, eostools::move(), convertSQLiteXML::ok, convertSQLitetoXML_cfg::output, edm::Event::put(), requireBOFF, run(), theMagfield, and ClusterChecker::tooManyClusters().

121  {
122  // get Inputs
123  auto output = std::make_unique<TrajectorySeedCollection>();
124 
125  //check on the number of clusters
126  if (!requireBOFF || (theMagfield->inTesla(GlobalPoint(0, 0, 0)).mag() == 0.00)) {
127  size_t clustsOrZero = check.tooManyClusters(e);
128  if (!clustsOrZero) {
129  bool ok = run(iSetup, e, *output);
130  if (!ok) {
131  } // nothing to do
132  } else
133  edm::LogError("TooManyClusters") << "Found too many clusters (" << clustsOrZero << "), bailing out.\n";
134  }
135 
136  edm::LogVerbatim("CtfSpecialSeedGenerator") << " number of seeds = " << output->size();
137  e.put(std::move(output));
138 }
Log< level::Info, true > LogVerbatim
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
bool run(const edm::EventSetup &c, const edm::Event &e, TrajectorySeedCollection &output)
Log< level::Error, false > LogError
def move
Definition: eostools.py:511
size_t tooManyClusters(const edm::Event &e) const
edm::ESHandle< MagneticField > theMagfield
bool CtfSpecialSeedGenerator::run ( const edm::EventSetup c,
const edm::Event e,
TrajectorySeedCollection output 
)
private

Definition at line 140 of file CtfSpecialSeedGenerator.cc.

References buildSeeds(), mps_fire::i, convertSQLiteXML::ok, convertSQLitetoXML_cfg::output, edm::Event::run(), theGenerators, theNavDirs, thePropDirs, theRegionProducer, and theSeedBuilder.

Referenced by produce().

142  {
143  std::vector<std::unique_ptr<TrackingRegion>> regions = theRegionProducer->regions(e, iSetup);
144  bool ok = true;
145  for (auto iReg = regions.begin(); iReg != regions.end(); iReg++) {
146  if (!theSeedBuilder->momentumFromPSet())
147  theSeedBuilder->setMomentumTo((*iReg)->ptMin());
148  int i = 0;
149  for (auto iGen = theGenerators.begin(); iGen != theGenerators.end(); iGen++) {
150  ok = buildSeeds(iSetup, e, (*iGen)->run(**iReg, e, iSetup), theNavDirs[i], thePropDirs[i], output);
151  i++;
152  if (!ok)
153  break;
154  }
155  if (!ok)
156  break;
157  }
158  return ok;
159 }
std::unique_ptr< SeedFromGenericPairOrTriplet > theSeedBuilder
std::unique_ptr< TrackingRegionProducer > theRegionProducer
bool buildSeeds(const edm::EventSetup &iSetup, const edm::Event &e, const OrderedSeedingHits &osh, const NavigationDirection &navdir, const PropagationDirection &dir, TrajectorySeedCollection &output)
RunNumber_t run() const
Definition: Event.h:109
std::vector< NavigationDirection > theNavDirs
std::vector< std::unique_ptr< OrderedHitsGenerator > > theGenerators
std::vector< PropagationDirection > thePropDirs

Member Data Documentation

ClusterChecker CtfSpecialSeedGenerator::check
private

Definition at line 99 of file CtfSpecialSeedGenerator.h.

Referenced by produce().

edm::ParameterSet CtfSpecialSeedGenerator::conf_
private

Definition at line 69 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun(), CtfSpecialSeedGenerator(), and preliminaryCheck().

BoundPlane::BoundPlanePointer CtfSpecialSeedGenerator::lowerScintillator
private

Definition at line 96 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun(), and postCheck().

bool CtfSpecialSeedGenerator::requireBOFF
private

Definition at line 97 of file CtfSpecialSeedGenerator.h.

Referenced by produce().

edm::ESHandle<TransientTrackingRecHitBuilder> CtfSpecialSeedGenerator::theBuilder
private

Definition at line 80 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun().

const edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> CtfSpecialSeedGenerator::theBuilderToken
private

Definition at line 72 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun().

std::vector<std::unique_ptr<OrderedHitsGenerator> > CtfSpecialSeedGenerator::theGenerators
private

Definition at line 88 of file CtfSpecialSeedGenerator.h.

Referenced by CtfSpecialSeedGenerator(), and run().

edm::ESHandle<MagneticField> CtfSpecialSeedGenerator::theMagfield
private

Definition at line 78 of file CtfSpecialSeedGenerator.h.

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

int32_t CtfSpecialSeedGenerator::theMaxSeeds
private

Definition at line 98 of file CtfSpecialSeedGenerator.h.

Referenced by buildSeeds().

const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> CtfSpecialSeedGenerator::theMFToken
private

Definition at line 71 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun().

std::vector<NavigationDirection> CtfSpecialSeedGenerator::theNavDirs
private

Definition at line 90 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun(), and run().

const edm::ESGetToken<Propagator, TrackingComponentsRecord> CtfSpecialSeedGenerator::thePropAlongToken
private

Definition at line 74 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun().

std::vector<PropagationDirection> CtfSpecialSeedGenerator::thePropDirs
private

Definition at line 89 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun(), and run().

const edm::ESGetToken<Propagator, TrackingComponentsRecord> CtfSpecialSeedGenerator::thePropOppositeToken
private

Definition at line 75 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun().

std::unique_ptr<TrackingRegionProducer> CtfSpecialSeedGenerator::theRegionProducer
private

Definition at line 91 of file CtfSpecialSeedGenerator.h.

Referenced by CtfSpecialSeedGenerator(), and run().

std::unique_ptr<SeedFromGenericPairOrTriplet> CtfSpecialSeedGenerator::theSeedBuilder
private

Definition at line 93 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun(), buildSeeds(), endRun(), and run().

const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> CtfSpecialSeedGenerator::theTopoToken
private

Definition at line 76 of file CtfSpecialSeedGenerator.h.

Referenced by preliminaryCheck().

edm::ESHandle<TrackerGeometry> CtfSpecialSeedGenerator::theTracker
private

Definition at line 79 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun(), and postCheck().

const edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> CtfSpecialSeedGenerator::theTrackerToken
private

Definition at line 73 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun().

BoundPlane::BoundPlanePointer CtfSpecialSeedGenerator::upperScintillator
private

Definition at line 95 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun(), and postCheck().

bool CtfSpecialSeedGenerator::useScintillatorsConstraint
private

Definition at line 94 of file CtfSpecialSeedGenerator.h.

Referenced by beginRun(), CtfSpecialSeedGenerator(), and postCheck().