CMS 3D CMS Logo

DetIdAssociator.h
Go to the documentation of this file.
1 #ifndef TrackingTools_TrackAssociator_DetIdAssociator_h
2 #define TrackingTools_TrackAssociator_DetIdAssociator_h 1
3 
4 // -*- C++ -*-
5 //
6 // Package: TrackingTools/TrackAssociator
7 // Class: DetIdAssociator
8 //
25 //
26 // Original Author: Dmytro Kovalskyi
27 // Created: Fri Apr 21 10:59:41 PDT 2006
28 //
29 //
30 
43 #include <set>
44 #include <vector>
45 
47  public:
49  struct MapRange {
50  float dThetaPlus;
51  float dThetaMinus;
52  float dPhiPlus;
53  float dPhiMinus;
54  };
55  typedef std::vector<GlobalPoint>::const_iterator const_iterator;
56 
57  DetIdAssociator(const int nPhi, const int nEta, const double etaBinSize);
58  virtual ~DetIdAssociator(){}
59 
62  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint&,
63  const int iN = 0) const;
64  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint& direction,
65  const unsigned int iNEtaPlus,
66  const unsigned int iNEtaMinus,
67  const unsigned int iNPhiPlus,
68  const unsigned int iNPhiMinus) const;
69  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint& direction,
70  const MapRange& mapRange) const;
75  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint& point,
76  const double d = 0) const;
79  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint& point,
80  const double dThetaPlus,
81  const double dThetaMinus,
82  const double dPhiPlus,
83  const double dPhiMinus) const;
84 
86  virtual bool selectAllInACone(const double dR) const {return dR > 2*M_PI && dR > maxEta_;}
87 
90  virtual std::set<DetId> getDetIdsInACone(const std::set<DetId>&,
91  const std::vector<GlobalPoint>& trajectory,
92  const double dR) const;
99  virtual std::vector<DetId> getCrossedDetIds(const std::set<DetId>&,
100  const std::vector<GlobalPoint>& trajectory) const;
101  virtual std::vector<DetId> getCrossedDetIds(const std::set<DetId>&,
102  const std::vector<SteppingHelixStateInfo>& trajectory,
103  const double toleranceInSigmas = -1) const;
105  virtual int iEta (const GlobalPoint&) const;
107  virtual int iPhi (const GlobalPoint&) const;
109  int nPhiBins() const { return nPhi_;}
111  int nEtaBins() const { return nEta_;}
113  double etaBinSize() const { return etaBinSize_;};
115  virtual void buildMap();
117  const FiducialVolume& volume() const;
118 
119  virtual void setGeometry(const DetIdAssociatorRecord&) = 0;
120  virtual const GeomDet* getGeomDet(const DetId&) const = 0;
121 
122  virtual void setConditions(const DetIdAssociatorRecord&) {};
123 
124  virtual const char* name() const = 0;
125 
126  protected:
127  virtual void check_setup() const;
128 
129  virtual void dumpMapContent( int, int ) const;
130  virtual void dumpMapContent( int, int, int, int ) const;
131 
132  virtual GlobalPoint getPosition(const DetId&) const = 0;
133  virtual const unsigned int getNumberOfSubdetectors() const { return 1;}
134  virtual void getValidDetIds(unsigned int subDetectorIndex, std::vector<DetId>&) const = 0;
135  virtual std::pair<const_iterator, const_iterator> getDetIdPoints(const DetId&, std::vector<GlobalPoint>&) const = 0;
136 
137  virtual bool insideElement(const GlobalPoint&, const DetId&) const = 0;
138  virtual bool crossedElement(const GlobalPoint&,
139  const GlobalPoint&,
140  const DetId&,
141  const double toleranceInSigmas = -1,
142  const SteppingHelixStateInfo* = nullptr ) const { return false; }
143  virtual bool nearElement(const GlobalPoint& point,
144  const DetId& id,
145  const double distance) const;
146 
147  unsigned int index(unsigned int iEta, unsigned int iPhi) const {
148  return iEta*nPhi_+iPhi;
149  }
150  void fillSet( std::set<DetId>& set, unsigned int iEta, unsigned int iPhi) const;
151 
152  // map parameters
153  const int nPhi_;
154  const int nEta_;
155  // The first number in the pair points to the begging
156  // of the DetId list for a given bin
157  // The second number is the number of elements in a bin
158  std::vector<std::pair<unsigned int,unsigned int> > lookupMap_;
159  std::vector<DetId> container_;
161  const double etaBinSize_;
162  double maxEta_;
163  double minTheta_;
164 
165  // Detector fiducial volume
166  // approximated as a closed cylinder with non-zero width.
167  // Parameters are extracted from the active detector elements.
169 };
170 #endif
virtual std::set< DetId > getDetIdsInACone(const std::set< DetId > &, const std::vector< GlobalPoint > &trajectory, const double dR) const
virtual void getValidDetIds(unsigned int subDetectorIndex, std::vector< DetId > &) const =0
virtual bool crossedElement(const GlobalPoint &, const GlobalPoint &, const DetId &, const double toleranceInSigmas=-1, const SteppingHelixStateInfo *=0) const
virtual bool selectAllInACone(const double dR) const
helper to see if getDetIdsInACone is useful
FiducialVolume volume_
virtual bool nearElement(const GlobalPoint &point, const DetId &id, const double distance) const
unsigned int index(unsigned int iEta, unsigned int iPhi) const
virtual int iEta(const GlobalPoint &) const
look-up map eta index
virtual std::vector< DetId > getCrossedDetIds(const std::set< DetId > &, const std::vector< GlobalPoint > &trajectory) const
std::vector< std::pair< unsigned int, unsigned int > > lookupMap_
virtual std::pair< const_iterator, const_iterator > getDetIdPoints(const DetId &, std::vector< GlobalPoint > &) const =0
std::vector< DetId > container_
virtual void dumpMapContent(int, int) const
virtual void setGeometry(const DetIdAssociatorRecord &)=0
double etaBinSize() const
look-up map bin size in eta dimension
virtual const char * name() const =0
const double etaBinSize_
virtual int iPhi(const GlobalPoint &) const
look-up map phi index
void fillSet(std::set< DetId > &set, unsigned int iEta, unsigned int iPhi) const
virtual const unsigned int getNumberOfSubdetectors() const
virtual void check_setup() const
virtual void setConditions(const DetIdAssociatorRecord &)
int nPhiBins() const
number of bins of the look-up map in phi dimension
#define M_PI
virtual const GeomDet * getGeomDet(const DetId &) const =0
std::vector< GlobalPoint >::const_iterator const_iterator
Definition: DetId.h:18
virtual ~DetIdAssociator()
DetIdAssociator(const int nPhi, const int nEta, const double etaBinSize)
virtual void buildMap()
make the look-up map
const FiducialVolume & volume() const
get active detector volume
virtual GlobalPoint getPosition(const DetId &) const =0
virtual std::set< DetId > getDetIdsCloseToAPoint(const GlobalPoint &, const int iN=0) const
int nEtaBins() const
number of bins of the look-up map in eta dimension
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
virtual bool insideElement(const GlobalPoint &, const DetId &) const =0