CMS 3D CMS Logo

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

#include <TracktoRPC.h>

Public Member Functions

std::unique_ptr< RPCRecHitCollection > && thePoints ()
 
 TracktoRPC (reco::TrackCollection const *alltracks, edm::EventSetup const &iSetup, bool debug, const edm::ParameterSet &iConfig, const edm::InputTag &tracklabel)
 
 ~TracktoRPC ()
 

Private Member Functions

bool ValidRPCSurface (RPCDetId rpcid, LocalPoint LocalP, const edm::EventSetup &iSetup)
 

Private Attributes

std::unique_ptr< RPCRecHitCollection_ThePoints
 
double MaxD
 
edm::OwnVector< RPCRecHitRPCPointVector
 
edm::ESHandle< PropagatorthePropagator
 
TrackTransformerBasetheTrackTransformer
 

Detailed Description

Definition at line 58 of file TracktoRPC.h.

Constructor & Destructor Documentation

◆ TracktoRPC()

TracktoRPC::TracktoRPC ( reco::TrackCollection const *  alltracks,
edm::EventSetup const &  iSetup,
bool  debug,
const edm::ParameterSet iConfig,
const edm::InputTag tracklabel 
)

Definition at line 57 of file TracktoRPC.cc.

61  {
62  _ThePoints = std::make_unique<RPCRecHitCollection>();
63  // if(alltracks->empty()) return;
64 
65  if (tracklabel.label().find("cosmic") == 0)
67  else if (tracklabel.label().find("globalCosmic") == 0)
69  else
72 
78 
79  iSetup.get<TrackingComponentsRecord>().get("SteppingHelixPropagatorAny", thePropagator);
80  iSetup.get<MuonGeometryRecord>().get(rpcGeo);
81  iSetup.get<MuonGeometryRecord>().get(dtGeo);
82  iSetup.get<MuonGeometryRecord>().get(dtMap);
83  iSetup.get<MuonGeometryRecord>().get(cscGeo);
84  iSetup.get<MuonGeometryRecord>().get(cscMap);
85 
86  std::vector<uint32_t> rpcput;
87  double MaxD = 999.;
88 
89  for (TrackCollection::const_iterator track = alltracks->begin(); track != alltracks->end(); track++) {
91  if (debug)
92  std::cout << "Building Trajectory from Track. " << std::endl;
93 
94  std::vector<uint32_t> rpcrolls;
95  std::vector<uint32_t> rpcrolls2;
96  std::map<uint32_t, int> rpcNdtcsc;
97  std::map<uint32_t, int> rpcrollCounter;
98 
99  float tInX = track->innerPosition().X(), tInY = track->innerPosition().Y(), tInZ = track->innerPosition().Z();
100  float tOuX = track->outerPosition().X(), tOuY = track->outerPosition().Y(), tOuZ = track->outerPosition().Z();
101  if (tInX > tOuX) {
102  float temp = tOuX;
103  tOuX = tInX;
104  tInX = temp;
105  }
106  if (tInY > tOuY) {
107  float temp = tOuY;
108  tOuY = tInY;
109  tInY = temp;
110  }
111  if (tInZ > tOuZ) {
112  float temp = tOuZ;
113  tOuZ = tInZ;
114  tInZ = temp;
115  }
116 
117  if (debug)
118  std::cout << "in (x,y,z): (" << tInX << ", " << tInY << ", " << tInZ << ")" << std::endl;
119  if (debug)
120  std::cout << "out (x,y,z): (" << tOuX << ", " << tOuY << ", " << tOuZ << ")" << std::endl;
121 
122  if (debug)
123  std::cout << "1. Search expeted RPC roll detid !!" << std::endl;
124  for (trackingRecHit_iterator hit = track->recHitsBegin(); hit != track->recHitsEnd(); hit++) {
125  if ((*hit)->isValid()) {
126  DetId id = (*hit)->geographicalId();
127 
128  if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::DT) {
129  const GeomDet *geomDet = dtGeo->idToDet((*hit)->geographicalId());
130  const DTLayer *dtlayer = dynamic_cast<const DTLayer *>(geomDet);
131  if (dtlayer)
132  for (Trajectories::const_iterator trajectory = trajectories.begin(); trajectory != trajectories.end();
133  ++trajectory) {
134  const BoundPlane &DTSurface = dtlayer->surface();
135  const GlobalPoint dcPoint = DTSurface.toGlobal(LocalPoint(0., 0., 0.));
136 
137  TrajectoryMeasurement tMt = trajectory->closestMeasurement(dcPoint);
138  const TrajectoryStateOnSurface &upd2 = (tMt).updatedState();
139  if (upd2.isValid()) {
140  LocalPoint trajLP = upd2.localPosition();
141  LocalPoint trackLP = (*hit)->localPosition();
142  float dx = trajLP.x() - trackLP.x(), dy = trajLP.y() - trackLP.y(); //, dz=trajLP.z()-trackLP.z();
143  if (dx > 10. && dy > 10.)
144  continue;
145 
146  DTChamberId dtid(geomDet->geographicalId().rawId());
147  int dtW = dtid.wheel(), dtS = dtid.sector(), dtT = dtid.station();
148  if (dtS == 13)
149  dtS = 4;
150  if (dtS == 14)
151  dtS = 10;
152  DTStationIndex theindex(0, dtW, dtS, dtT);
153  std::set<RPCDetId> rollsForThisDT = dtMap->getRolls(theindex);
154  for (std::set<RPCDetId>::iterator iteraRoll = rollsForThisDT.begin(); iteraRoll != rollsForThisDT.end();
155  iteraRoll++) {
156  const RPCRoll *rollasociated = rpcGeo->roll(*iteraRoll);
157 
159  thePropagator->propagate(upd2, rpcGeo->idToDet(rollasociated->id())->surface());
160  if (ptss.isValid())
161  if (ValidRPCSurface(rollasociated->id().rawId(), ptss.localPosition(), iSetup)) {
162  rpcrollCounter[rollasociated->id().rawId()]++;
163  bool check = true;
164  std::vector<uint32_t>::iterator rpcroll;
165  for (rpcroll = rpcrolls.begin(); rpcroll < rpcrolls.end(); rpcroll++)
166  if (rollasociated->id().rawId() == *rpcroll)
167  check = false;
168  if (check == true) {
169  rpcrolls.push_back(rollasociated->id().rawId());
170  RPCGeomServ servId(rollasociated->id().rawId());
171  if (debug)
172  std::cout << "1\t Barrel RPC roll" << rollasociated->id().rawId() << " "
173  << servId.name().c_str() << std::endl;
174  }
175  }
176  }
177  }
178  }
179  } else if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::CSC) {
180  const GeomDet *geomDet = cscGeo->idToDet((*hit)->geographicalId());
181  const CSCLayer *csclayer = dynamic_cast<const CSCLayer *>(geomDet);
182 
183  CSCDetId cscid(geomDet->geographicalId().rawId());
184  if (csclayer)
185  for (Trajectories::const_iterator trajectory = trajectories.begin(); trajectory != trajectories.end();
186  ++trajectory) {
187  const BoundPlane &CSCSurface = csclayer->surface();
188  const GlobalPoint dcPoint = CSCSurface.toGlobal(LocalPoint(0., 0., 0.));
189 
190  TrajectoryMeasurement tMt = trajectory->closestMeasurement(dcPoint);
191  const TrajectoryStateOnSurface &upd2 = (tMt).updatedState();
192 
193  if (upd2.isValid() && cscid.station() != 4 && cscid.ring() != 1) {
194  LocalPoint trajLP = upd2.localPosition();
195  LocalPoint trackLP = (*hit)->localPosition();
196  float dx = trajLP.x() - trackLP.x(), dy = trajLP.y() - trackLP.y(); //, dz=trajLP.z()-trackLP.z();
197  if (dx > 10. && dy > 10.)
198  continue;
199 
200  int En = cscid.endcap(), St = cscid.station(), Ri = cscid.ring();
201  int rpcSegment = cscid.chamber();
202  if (En == 2)
203  En = -1;
204  if (Ri == 4)
205  Ri = 1;
206 
207  CSCStationIndex theindex(En, St, Ri, rpcSegment);
208  std::set<RPCDetId> rollsForThisCSC = cscMap->getRolls(theindex);
209  for (std::set<RPCDetId>::iterator iteraRoll = rollsForThisCSC.begin();
210  iteraRoll != rollsForThisCSC.end();
211  iteraRoll++) {
212  const RPCRoll *rollasociated = rpcGeo->roll(*iteraRoll);
213 
215  thePropagator->propagate(upd2, rpcGeo->idToDet(rollasociated->id())->surface());
216  if (ptss.isValid())
217  if (ValidRPCSurface(rollasociated->id().rawId(), ptss.localPosition(), iSetup)) {
218  rpcrollCounter[rollasociated->id().rawId()]++;
219  bool check = true;
220  std::vector<uint32_t>::iterator rpcroll;
221  for (rpcroll = rpcrolls.begin(); rpcroll < rpcrolls.end(); rpcroll++)
222  if (rollasociated->id().rawId() == *rpcroll)
223  check = false;
224  if (check == true) {
225  rpcrolls.push_back(rollasociated->id().rawId());
226  RPCGeomServ servId(rollasociated->id().rawId());
227  if (debug)
228  std::cout << "1\t Forward RPC roll" << rollasociated->id().rawId() << " "
229  << servId.name().c_str() << std::endl;
230  }
231  }
232  }
233  }
234  }
235  } else {
236  if (debug)
237  std::cout << "1\t The hit is not DT/CSC's. " << std::endl;
238  }
239  }
240  }
241  if (debug)
242  std::cout << "First step OK!!\n2. Search nearest DT/CSC sufrace!!" << std::endl;
243  std::vector<uint32_t>::iterator rpcroll;
244  for (rpcroll = rpcrolls.begin(); rpcroll < rpcrolls.end(); rpcroll++) {
245  RPCDetId rpcid(*rpcroll);
246  const GlobalPoint &rGP = rpcGeo->idToDet(*rpcroll)->surface().toGlobal(LocalPoint(0, 0, 0));
247  RPCGeomServ servId(rpcid);
248  int rEn = rpcid.region(), rSe = rpcid.sector(), rWr = rpcid.ring(), rSt = rpcid.station(), rCh = servId.segment();
249 
250  if (rpcrollCounter[*rpcroll] < 3)
251  continue;
252 
253  uint32_t dtcscid = 0;
254  double distance = MaxD;
255 
256  // if(rSt ==2 && rEn==0) MaxD=100;
257  // else if(rSt ==3 && rEn==0) MaxD=100;
258  // else if(rSt ==4 && rEn==0) MaxD =150;
259  for (trackingRecHit_iterator hit = track->recHitsBegin(); hit != track->recHitsEnd(); hit++) {
260  if ((*hit)->isValid()) {
261  DetId id = (*hit)->geographicalId();
262  if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::DT) {
263  const GeomDet *geomDet = dtGeo->idToDet((*hit)->geographicalId());
264  //const DTLayer *dtlayer = dynamic_cast<const DTLayer *>(geomDet);
265  const GlobalPoint &dtGP = dtGeo->idToDet((*hit)->geographicalId())->surface().toGlobal(LocalPoint(0, 0, 0));
266  double dx = rGP.x() - dtGP.x(), dy = rGP.y() - dtGP.y(), dz = rGP.z() - dtGP.z();
267  double distanceN = sqrt(dx * dx + dy * dy + dz * dz);
268 
269  DTChamberId dtid(geomDet->geographicalId().rawId());
270  int Se = dtid.sector(), Wh = dtid.wheel(), St = dtid.station();
271  if (Se == 13)
272  Se = 4;
273  if (Se == 14)
274  Se = 10;
275 
276  if (rEn == 0 && (rSe - Se) == 0 && (rWr - Wh) == 0 && (rSt - St) == 0 && distanceN < distance) {
277  dtcscid = geomDet->geographicalId().rawId();
278  distance = distanceN;
279  if (debug)
280  std::cout << "2\t DT " << dtcscid << " Wheel : " << Wh << " station : " << St << " sector : " << Se
281  << std::endl;
282  }
283  } else if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::CSC) {
284  const GeomDet *geomDet = cscGeo->idToDet((*hit)->geographicalId());
285  //const CSCLayer *csclayer = dynamic_cast<const CSCLayer *>(geomDet);
286  const GlobalPoint &cscGP =
287  cscGeo->idToDet((*hit)->geographicalId())->surface().toGlobal(LocalPoint(0, 0, 0));
288  double dx = rGP.x() - cscGP.x(), dy = rGP.y() - cscGP.y(), dz = rGP.z() - cscGP.z();
289  double distanceN = sqrt(dx * dx + dy * dy + dz * dz);
290 
291  CSCDetId cscid(geomDet->geographicalId().rawId());
292  int En = cscid.endcap(), Ri = cscid.ring(), St = cscid.station(), Ch = cscid.chamber();
293  if (En == 2)
294  En = -1;
295  if (Ri == 4)
296  Ri = 1;
297 
298  if ((rEn - En) == 0 && (rSt - St) == 0 && (Ch - rCh) == 0 && rWr != 1 && rSt != 4 && distanceN < distance) {
299  dtcscid = geomDet->geographicalId().rawId();
300  distance = distanceN;
301  if (debug)
302  std::cout << "2\t CSC " << dtcscid << " region : " << En << " station : " << St << " Ring : " << Ri
303  << " chamber : " << Ch << std::endl;
304  }
305  }
306  }
307  }
308  if (dtcscid != 0 && distance < MaxD) {
309  rpcrolls2.push_back(*rpcroll);
310  rpcNdtcsc[*rpcroll] = dtcscid;
311  }
312  }
313  if (debug)
314  std::cout << "Second step OK!! \n3. Propagate to RPC from DT/CSC!!" << std::endl;
315  //std::map<uint32_t, int> rpcput;
316  std::vector<uint32_t>::iterator rpcroll2;
317  for (rpcroll2 = rpcrolls2.begin(); rpcroll2 < rpcrolls2.end(); rpcroll2++) {
318  bool check = true;
319  std::vector<uint32_t>::iterator rpcput_;
320  for (rpcput_ = rpcput.begin(); rpcput_ < rpcput.end(); rpcput_++)
321  if (*rpcroll2 == *rpcput_)
322  check = false;
323 
324  if (check == true) {
325  uint32_t dtcscid = rpcNdtcsc[*rpcroll2];
326  DetId id(dtcscid);
327  if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::DT) {
328  const GeomDet *geomDet = dtGeo->idToDet(dtcscid);
329  const DTLayer *dtlayer = dynamic_cast<const DTLayer *>(geomDet);
330 
331  if (dtlayer)
332  for (Trajectories::const_iterator trajectory = trajectories.begin(); trajectory != trajectories.end();
333  ++trajectory) {
334  const BoundPlane &DTSurface = dtlayer->surface();
335  const GlobalPoint dcPoint = DTSurface.toGlobal(LocalPoint(0., 0., 0.));
336 
337  TrajectoryMeasurement tMt = trajectory->closestMeasurement(dcPoint);
338  const TrajectoryStateOnSurface &upd2 = (tMt).updatedState();
339  if (upd2.isValid()) {
340  TrajectoryStateOnSurface ptss = thePropagator->propagate(upd2, rpcGeo->idToDet(*rpcroll2)->surface());
341  if (ptss.isValid())
342  if (ValidRPCSurface(*rpcroll2, ptss.localPosition(), iSetup)) {
343  float rpcGPX = ptss.globalPosition().x();
344  float rpcGPY = ptss.globalPosition().y();
345  float rpcGPZ = ptss.globalPosition().z();
346 
347  if (tInX > rpcGPX || tOuX < rpcGPX)
348  continue;
349  if (tInY > rpcGPY || tOuY < rpcGPY)
350  continue;
351  if (tInZ > rpcGPZ || tOuZ < rpcGPZ)
352  continue;
353 
354  const GeomDet *geomDet2 = rpcGeo->idToDet(*rpcroll2);
355  const RPCRoll *aroll = dynamic_cast<const RPCRoll *>(geomDet2);
356  const RectangularStripTopology *top_ =
357  dynamic_cast<const RectangularStripTopology *>(&(aroll->topology()));
358  LocalPoint xmin = top_->localPosition(0.);
359  LocalPoint xmax = top_->localPosition((float)aroll->nstrips());
360  float rsize = fabs(xmax.x() - xmin.x());
361  float stripl = top_->stripLength();
362  //float stripw = top_->pitch();
363  float eyr = 1;
364 
365  float locx = ptss.localPosition().x(), locy = ptss.localPosition().y(),
366  locz = ptss.localPosition().z();
367  if (locx < rsize * eyr && locy < stripl * eyr && locz < 1.) {
368  RPCRecHit RPCPoint(*rpcroll2, 0, LocalPoint(locx, locy, locz));
369 
370  RPCGeomServ servId(*rpcroll2);
371  if (debug)
372  std::cout << "3\t Barrel Expected RPC " << servId.name().c_str()
373  << " \tLocalposition X: " << locx << ", Y: " << locy << " GlobalPosition(x,y,z) ("
374  << rpcGPX << ", " << rpcGPY << ", " << rpcGPZ << ")" << std::endl;
376  RPCPointVector.push_back(RPCPoint);
377  _ThePoints->put(*rpcroll2, RPCPointVector.begin(), RPCPointVector.end());
378  rpcput.push_back(*rpcroll2);
379  }
380  }
381  }
382  }
383  } else if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::CSC) {
384  const GeomDet *geomDet4 = cscGeo->idToDet(dtcscid);
385  const CSCLayer *csclayer = dynamic_cast<const CSCLayer *>(geomDet4);
386 
387  if (csclayer)
388  for (Trajectories::const_iterator trajectory = trajectories.begin(); trajectory != trajectories.end();
389  ++trajectory) {
390  const BoundPlane &CSCSurface = csclayer->surface();
391  const GlobalPoint dcPoint = CSCSurface.toGlobal(LocalPoint(0., 0., 0.));
392 
393  TrajectoryMeasurement tMt = trajectory->closestMeasurement(dcPoint);
394  const TrajectoryStateOnSurface &upd2 = (tMt).updatedState();
395  if (upd2.isValid()) {
396  TrajectoryStateOnSurface ptss = thePropagator->propagate(upd2, rpcGeo->idToDet(*rpcroll2)->surface());
397  if (ptss.isValid())
398  if (ValidRPCSurface(*rpcroll2, ptss.localPosition(), iSetup)) {
399  float rpcGPX = ptss.globalPosition().x();
400  float rpcGPY = ptss.globalPosition().y();
401  float rpcGPZ = ptss.globalPosition().z();
402 
403  if (tInX > rpcGPX || tOuX < rpcGPX)
404  continue;
405  if (tInY > rpcGPY || tOuY < rpcGPY)
406  continue;
407  if (tInZ > rpcGPZ || tOuZ < rpcGPZ)
408  continue;
409 
410  RPCDetId rpcid(*rpcroll2);
411  const GeomDet *geomDet3 = rpcGeo->idToDet(*rpcroll2);
412  const RPCRoll *aroll = dynamic_cast<const RPCRoll *>(geomDet3);
413  const TrapezoidalStripTopology *top_ =
414  dynamic_cast<const TrapezoidalStripTopology *>(&(aroll->topology()));
415  LocalPoint xmin = top_->localPosition(0.);
416  LocalPoint xmax = top_->localPosition((float)aroll->nstrips());
417  float rsize = fabs(xmax.x() - xmin.x());
418  float stripl = top_->stripLength();
419  //float stripw = top_->pitch();
420 
421  float eyr = 1;
423  float locx = ptss.localPosition().x(), locy = ptss.localPosition().y(),
424  locz = ptss.localPosition().z();
425  if (locx < rsize * eyr && locy < stripl * eyr && locz < 1.) {
426  RPCRecHit RPCPoint(*rpcroll2, 0, LocalPoint(locx, locy, locz));
427  RPCGeomServ servId(*rpcroll2);
428  if (debug)
429  std::cout << "3\t Forward Expected RPC " << servId.name().c_str()
430  << " \tLocalposition X: " << locx << ", Y: " << locy << " GlobalPosition(x,y,z) ("
431  << rpcGPX << ", " << rpcGPY << ", " << rpcGPZ << ")" << std::endl;
433  RPCPointVector.push_back(RPCPoint);
434  _ThePoints->put(*rpcroll2, RPCPointVector.begin(), RPCPointVector.end());
435  rpcput.push_back(*rpcroll2);
436  }
437  }
438  }
439  }
440  }
441  }
442  }
443  if (debug)
444  std::cout << "last steps OK!! " << std::endl;
445  }
446 }

References _ThePoints, edm::OwnVector< T, P >::begin(), RPCNoise_example::check, edm::OwnVector< T, P >::clear(), gather_cfg::cout, MuonSubdetId::CSC, debug, HLT_2018_cff::distance, MuonSubdetId::DT, PVValHelper::dx, PVValHelper::dy, PVValHelper::dz, edm::OwnVector< T, P >::end(), CSCDetId::endcap(), GeomDet::geographicalId(), edm::EventSetup::get(), get, CSCObjectMap::getRolls(), DTObjectMap::getRolls(), TrajectoryStateOnSurface::globalPosition(), RPCRoll::id(), triggerObjects_cff::id, RPCGeometry::idToDet(), DTGeometry::idToDet(), CSCGeometry::idToDet(), TrajectoryStateOnSurface::isValid(), edm::InputTag::label(), RectangularStripTopology::localPosition(), TrapezoidalStripTopology::localPosition(), TrajectoryStateOnSurface::localPosition(), MaxD, DetId::Muon, RPCGeomServ::name(), RPCRoll::nstrips(), Propagator::propagate(), edm::OwnVector< T, P >::push_back(), DetId::rawId(), RPCDetId::region(), RPCDetId::ring(), RPCGeometry::roll(), RPCPointVector, DTChamberId::sector(), RPCDetId::sector(), RPCGeomServ::segment(), TrackTransformerBase::setServices(), mathSSE::sqrt(), RPCDetId::station(), RectangularStripTopology::stripLength(), TrapezoidalStripTopology::stripLength(), GeomDet::surface(), groupFilesInBlocks::temp, thePropagator, theTrackTransformer, GeomDet::toGlobal(), Surface::toGlobal(), RPCRoll::topology(), HLT_2018_cff::track, HLT_2018_cff::TrackTransformer, FastTrackerRecHitMaskProducer_cfi::trajectories, TrackTransformerBase::transform(), TrackInfoProducer_cfi::updatedState, ValidRPCSurface(), DTChamberId::wheel(), PV3DBase< T, PVType, FrameType >::x(), TrackerOfflineValidation_Dqm_cff::xmax, TrackerOfflineValidation_Dqm_cff::xmin, PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

◆ ~TracktoRPC()

TracktoRPC::~TracktoRPC ( )

Definition at line 448 of file TracktoRPC.cc.

448 {}

Member Function Documentation

◆ thePoints()

std::unique_ptr<RPCRecHitCollection>&& TracktoRPC::thePoints ( )
inline

Definition at line 66 of file TracktoRPC.h.

66 { return std::move(_ThePoints); }

References _ThePoints, and eostools::move().

◆ ValidRPCSurface()

bool TracktoRPC::ValidRPCSurface ( RPCDetId  rpcid,
LocalPoint  LocalP,
const edm::EventSetup iSetup 
)
private

Definition at line 21 of file TracktoRPC.cc.

21  {
23  iSetup.get<MuonGeometryRecord>().get(rpcGeo);
24 
25  const GeomDet *whichdet3 = rpcGeo->idToDet(rpcid.rawId());
26  const RPCRoll *aroll = dynamic_cast<const RPCRoll *>(whichdet3);
27  float locx = LocalP.x(), locy = LocalP.y(); //, locz=LocalP.z();
28  if (aroll->isBarrel()) {
29  const Bounds &rollbound = rpcGeo->idToDet((rpcid))->surface().bounds();
30  float boundlength = rollbound.length();
31  float boundwidth = rollbound.width();
32 
33  if (fabs(locx) < boundwidth / 2 && fabs(locy) < boundlength / 2 && locy > -boundlength / 2)
34  return true;
35  else
36  return false;
37 
38  } else if (aroll->isForward()) {
39  const Bounds &rollbound = rpcGeo->idToDet((rpcid))->surface().bounds();
40  float boundlength = rollbound.length();
41  float boundwidth = rollbound.width();
42 
43  float nminx = TMath::Pi() * (18 * boundwidth / TMath::Pi() - boundlength) / 18;
44  float ylimit = ((boundlength) / (boundwidth / 2 - nminx / 2)) * fabs(locx) + boundlength / 2 -
45  ((boundlength) / (boundwidth / 2 - nminx / 2)) * (boundwidth / 2);
46  if (ylimit < -boundlength / 2)
47  ylimit = -boundlength / 2;
48 
49  if (fabs(locx) < boundwidth / 2 && fabs(locy) < boundlength / 2 && locy > ylimit)
50  return true;
51  else
52  return false;
53  } else
54  return false;
55 }

References Surface::bounds(), edm::EventSetup::get(), get, RPCGeometry::idToDet(), RPCRoll::isBarrel(), RPCRoll::isForward(), Bounds::length(), Pi, DetId::rawId(), GeomDet::surface(), Bounds::width(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

Referenced by TracktoRPC().

Member Data Documentation

◆ _ThePoints

std::unique_ptr<RPCRecHitCollection> TracktoRPC::_ThePoints
private

Definition at line 71 of file TracktoRPC.h.

Referenced by thePoints(), and TracktoRPC().

◆ MaxD

double TracktoRPC::MaxD
private

Definition at line 73 of file TracktoRPC.h.

Referenced by TracktoRPC().

◆ RPCPointVector

edm::OwnVector<RPCRecHit> TracktoRPC::RPCPointVector
private

Definition at line 72 of file TracktoRPC.h.

Referenced by TracktoRPC().

◆ thePropagator

edm::ESHandle<Propagator> TracktoRPC::thePropagator
private

Definition at line 76 of file TracktoRPC.h.

Referenced by TracktoRPC().

◆ theTrackTransformer

TrackTransformerBase* TracktoRPC::theTrackTransformer
private

Definition at line 75 of file TracktoRPC.h.

Referenced by TracktoRPC().

RPCRoll
Definition: RPCRoll.h:12
MuonSubdetId::CSC
static constexpr int CSC
Definition: MuonSubdetId.h:12
TrapezoidalStripTopology::stripLength
float stripLength() const override
det heigth (strip length in the middle)
Definition: TrapezoidalStripTopology.h:63
RPCGeomServ
Definition: RPCGeomServ.h:8
Bounds::width
virtual float width() const =0
GeomDet
Definition: GeomDet.h:27
edm::OwnVector::end
iterator end()
Definition: OwnVector.h:285
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
CSCGeometry::idToDet
const GeomDet * idToDet(DetId) const override
Definition: CSCGeometry.cc:91
RPCDetId
Definition: RPCDetId.h:16
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
gather_cfg.cout
cout
Definition: gather_cfg.py:144
TracktoRPC::ValidRPCSurface
bool ValidRPCSurface(RPCDetId rpcid, LocalPoint LocalP, const edm::EventSetup &iSetup)
Definition: TracktoRPC.cc:21
HLT_2018_cff.TrackTransformer
TrackTransformer
Definition: HLT_2018_cff.py:8374
Bounds
Definition: Bounds.h:18
HLT_2018_cff.distance
distance
Definition: HLT_2018_cff.py:6417
RPCGeometry::roll
const RPCRoll * roll(RPCDetId id) const
Return a roll given its id.
Definition: RPCGeometry.cc:50
CSCLayer
Definition: CSCLayer.h:24
FastTrackerRecHitMaskProducer_cfi.trajectories
trajectories
Definition: FastTrackerRecHitMaskProducer_cfi.py:7
TracktoRPC::MaxD
double MaxD
Definition: TracktoRPC.h:73
align::LocalPoint
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
RPCRoll::isForward
bool isForward() const
Definition: RPCRoll.cc:43
DTStationIndex
Definition: DTStationIndex.h:4
TrackTransformerBase::setServices
virtual void setServices(const edm::EventSetup &)=0
set the services needed by the TrackTransformers
Bounds::length
virtual float length() const =0
RectangularStripTopology::localPosition
LocalPoint localPosition(float strip) const override
Definition: RectangularStripTopology.cc:17
RPCRoll::topology
const Topology & topology() const override
Definition: RPCRoll.cc:18
RPCRoll::isBarrel
bool isBarrel() const
Definition: RPCRoll.cc:41
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
TrackTransformerBase::transform
virtual std::vector< Trajectory > transform(const reco::Track &) const =0
Convert a reco::Track into Trajectory.
edm::InputTag::label
std::string const & label() const
Definition: InputTag.h:36
RPCRoll::id
RPCDetId id() const
Definition: RPCRoll.cc:16
DetId
Definition: DetId.h:17
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
RPCNoise_example.check
check
Definition: RPCNoise_example.py:71
debug
#define debug
Definition: HDRShower.cc:19
DTObjectMap::getRolls
std::set< RPCDetId > const & getRolls(DTStationIndex index) const
Definition: DTObjectMap.cc:36
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
RectangularStripTopology
Definition: RectangularStripTopology.h:11
TrapezoidalStripTopology
Definition: TrapezoidalStripTopology.h:21
RPCRecHit
Definition: RPCRecHit.h:14
CSCObjectMap::getRolls
std::set< RPCDetId > const & getRolls(CSCStationIndex index) const
Definition: CSCObjectMap.cc:42
Trajectories
std::vector< Trajectory > Trajectories
Definition: RPCRecHitFilter.h:59
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
edm::ESHandle< RPCGeometry >
MuonSubdetId::DT
static constexpr int DT
Definition: MuonSubdetId.h:11
Point3DBase< float, GlobalTag >
edm::OwnVector::const_iterator
Definition: OwnVector.h:41
RectangularStripTopology::stripLength
float stripLength() const override
Definition: RectangularStripTopology.h:44
GeomDet::geographicalId
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:64
TrajectoryStateOnSurface::localPosition
LocalPoint localPosition() const
Definition: TrajectoryStateOnSurface.h:74
GeomDet::toGlobal
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
TracktoRPC::thePropagator
edm::ESHandle< Propagator > thePropagator
Definition: TracktoRPC.h:76
CSCDetId
Definition: CSCDetId.h:26
TracktoRPC::RPCPointVector
edm::OwnVector< RPCRecHit > RPCPointVector
Definition: TracktoRPC.h:72
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
RPCRoll::nstrips
int nstrips() const
Definition: RPCRoll.cc:24
TracktoRPC::_ThePoints
std::unique_ptr< RPCRecHitCollection > _ThePoints
Definition: TracktoRPC.h:71
PVValHelper::dy
Definition: PVValidationHelpers.h:49
Propagator::propagate
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
get
#define get
DTLayer
Definition: DTLayer.h:25
TracktoRPC::theTrackTransformer
TrackTransformerBase * theTrackTransformer
Definition: TracktoRPC.h:75
DTChamberId::sector
int sector() const
Definition: DTChamberId.h:49
eostools.move
def move(src, dest)
Definition: eostools.py:511
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
TrackInfoProducer_cfi.updatedState
updatedState
Definition: TrackInfoProducer_cfi.py:6
PVValHelper::dz
Definition: PVValidationHelpers.h:50
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
CSCDetId::endcap
int endcap() const
Definition: CSCDetId.h:85
TrackerOfflineValidation_Dqm_cff.xmax
xmax
Definition: TrackerOfflineValidation_Dqm_cff.py:11
BoundPlane
edm::OwnVector::push_back
void push_back(D *&d)
Definition: OwnVector.h:326
Pi
const double Pi
Definition: CosmicMuonParameters.h:18
TrapezoidalStripTopology::localPosition
LocalPoint localPosition(float strip) const override
Definition: TrapezoidalStripTopology.cc:27
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
RPCGeometry::idToDet
const GeomDet * idToDet(DetId) const override
Definition: RPCGeometry.cc:32
DetId::Muon
Definition: DetId.h:26
DTChamberId
Definition: DTChamberId.h:14
TrackerOfflineValidation_Dqm_cff.xmin
xmin
Definition: TrackerOfflineValidation_Dqm_cff.py:10
edm::OwnVector::begin
iterator begin()
Definition: OwnVector.h:280
TrackTransformerForCosmicMuons
Definition: TrackTransformerForCosmicMuons.h:52
CSCStationIndex
Definition: GEMCSCSegmentBuilder.h:32
TrajectoryMeasurement
Definition: TrajectoryMeasurement.h:25
DTGeometry::idToDet
const GeomDet * idToDet(DetId) const override
Definition: DTGeometry.cc:77
edm::OwnVector::clear
void clear()
Definition: OwnVector.h:481
MuonGeometryRecord
Definition: MuonGeometryRecord.h:34
DTChamberId::wheel
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:39
PVValHelper::dx
Definition: PVValidationHelpers.h:48
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
hit
Definition: SiStripHitEffFromCalibTree.cc:88
TrackingComponentsRecord
Definition: TrackingComponentsRecord.h:12