CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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;
86  virtual std::set<DetId> getDetIdsInACone(const std::set<DetId>&,
87  const std::vector<GlobalPoint>& trajectory,
88  const double dR) const;
95  virtual std::vector<DetId> getCrossedDetIds(const std::set<DetId>&,
96  const std::vector<GlobalPoint>& trajectory) const;
97  virtual std::vector<DetId> getCrossedDetIds(const std::set<DetId>&,
98  const std::vector<SteppingHelixStateInfo>& trajectory,
99  const double toleranceInSigmas = -1) const;
101  virtual int iEta (const GlobalPoint&) const;
103  virtual int iPhi (const GlobalPoint&) const;
105  int nPhiBins() const { return nPhi_;}
107  int nEtaBins() const { return nEta_;}
109  double etaBinSize() const { return etaBinSize_;};
111  virtual void buildMap();
113  const FiducialVolume& volume() const;
114 
115  virtual void setGeometry(const DetIdAssociatorRecord&) = 0;
116  virtual const GeomDet* getGeomDet(const DetId&) const = 0;
117 
118  virtual void setConditions(const DetIdAssociatorRecord&) {};
119 
120  virtual const char* name() const = 0;
121 
122  protected:
123  virtual void check_setup() const;
124 
125  virtual void dumpMapContent( int, int ) const;
126  virtual void dumpMapContent( int, int, int, int ) const;
127 
128  virtual GlobalPoint getPosition(const DetId&) const = 0;
129  virtual const unsigned int getNumberOfSubdetectors() const { return 1;}
130  virtual void getValidDetIds(unsigned int subDetectorIndex, std::vector<DetId>&) const = 0;
131  virtual std::pair<const_iterator, const_iterator> getDetIdPoints(const DetId&, std::vector<GlobalPoint>&) const = 0;
132 
133  virtual bool insideElement(const GlobalPoint&, const DetId&) const = 0;
134  virtual bool crossedElement(const GlobalPoint&,
135  const GlobalPoint&,
136  const DetId&,
137  const double toleranceInSigmas = -1,
138  const SteppingHelixStateInfo* = 0 ) const { return false; }
139  virtual bool nearElement(const GlobalPoint& point,
140  const DetId& id,
141  const double distance) const;
142 
143  unsigned int index(unsigned int iEta, unsigned int iPhi) const {
144  return iEta*nPhi_+iPhi;
145  }
146  void fillSet( std::set<DetId>& set, unsigned int iEta, unsigned int iPhi) const;
147 
148  // map parameters
149  const int nPhi_;
150  const int nEta_;
151  // The first number in the pair points to the begging
152  // of the DetId list for a given bin
153  // The second number is the number of elements in a bin
154  std::vector<std::pair<unsigned int,unsigned int> > lookupMap_;
155  std::vector<DetId> container_;
157  const double etaBinSize_;
158  double maxEta_;
159  double minTheta_;
160 
161  // Detector fiducial volume
162  // approximated as a closed cylinder with non-zero width.
163  // Parameters are extracted from the active detector elements.
165 };
166 #endif
virtual std::set< DetId > getDetIdsInACone(const std::set< DetId > &, const std::vector< GlobalPoint > &trajectory, const double dR) const
virtual bool crossedElement(const GlobalPoint &, const GlobalPoint &, const DetId &, const double toleranceInSigmas=-1, const SteppingHelixStateInfo *=0) const
virtual void getValidDetIds(unsigned int subDetectorIndex, std::vector< DetId > &) const =0
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_
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
const double etaBinSize_
virtual int iPhi(const GlobalPoint &) const
look-up map phi index
tuple d
Definition: ztail.py:151
void fillSet(std::set< DetId > &set, unsigned int iEta, unsigned int iPhi) const
virtual const unsigned int getNumberOfSubdetectors() const
virtual const char * name() const =0
virtual void check_setup() const
virtual void setConditions(const DetIdAssociatorRecord &)
int nPhiBins() const
number of bins of the look-up map in phi dimension
virtual const GeomDet * getGeomDet(const DetId &) const =0
std::vector< GlobalPoint >::const_iterator const_iterator
Definition: DetId.h:18
virtual ~DetIdAssociator()
virtual bool insideElement(const GlobalPoint &, const DetId &) const =0
DetIdAssociator(const int nPhi, const int nEta, const double etaBinSize)
virtual void buildMap()
make the look-up map
virtual GlobalPoint getPosition(const DetId &) const =0
const FiducialVolume & volume() const
get active detector volume
virtual std::set< DetId > getDetIdsCloseToAPoint(const GlobalPoint &, const int iN=0) const
virtual std::pair< const_iterator, const_iterator > getDetIdPoints(const DetId &, std::vector< GlobalPoint > &) const =0
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