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 // $Id: DetIdAssociator.h,v 1.20 2011/04/07 08:17:31 innocent Exp $
29 //
30 //
31 
44 #include <set>
45 #include <vector>
46 
48  public:
50  struct MapRange {
51  float dThetaPlus;
52  float dThetaMinus;
53  float dPhiPlus;
54  float dPhiMinus;
55  };
56  typedef std::vector<GlobalPoint>::const_iterator const_iterator;
57 
58  DetIdAssociator(const int nPhi, const int nEta, const double etaBinSize);
59  virtual ~DetIdAssociator(){}
60 
63  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint&,
64  const int iN = 0) const;
65  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint& direction,
66  const unsigned int iNEtaPlus,
67  const unsigned int iNEtaMinus,
68  const unsigned int iNPhiPlus,
69  const unsigned int iNPhiMinus) const;
70  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint& direction,
71  const MapRange& mapRange) const;
76  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint& point,
77  const double d = 0) const;
80  virtual std::set<DetId> getDetIdsCloseToAPoint(const GlobalPoint& point,
81  const double dThetaPlus,
82  const double dThetaMinus,
83  const double dPhiPlus,
84  const double dPhiMinus) const;
87  virtual std::set<DetId> getDetIdsInACone(const std::set<DetId>&,
88  const std::vector<GlobalPoint>& trajectory,
89  const double dR) const;
96  virtual std::vector<DetId> getCrossedDetIds(const std::set<DetId>&,
97  const std::vector<GlobalPoint>& trajectory) const;
98  virtual std::vector<DetId> getCrossedDetIds(const std::set<DetId>&,
99  const std::vector<SteppingHelixStateInfo>& trajectory,
100  const double toleranceInSigmas = -1) const;
102  virtual int iEta (const GlobalPoint&) const;
104  virtual int iPhi (const GlobalPoint&) const;
106  virtual void setPropagator(Propagator* ptr){ ivProp_ = ptr; };
108  int nPhiBins() const { return nPhi_;}
110  int nEtaBins() const { return nEta_;}
112  double etaBinSize() const { return etaBinSize_;};
114  virtual void buildMap();
116  const FiducialVolume& volume() const;
117 
118  virtual void setGeometry(const DetIdAssociatorRecord&) = 0;
119  virtual const GeomDet* getGeomDet(const DetId&) const = 0;
120 
121  virtual void setConditions(const DetIdAssociatorRecord&) {};
122 
123  virtual const char* name() const = 0;
124 
125  protected:
126  virtual void check_setup() const;
127 
128  virtual void dumpMapContent( int, int ) const;
129  virtual void dumpMapContent( int, int, int, int ) const;
130 
131  virtual GlobalPoint getPosition(const DetId&) const = 0;
132  virtual const unsigned int getNumberOfSubdetectors() const { return 1;}
133  virtual const std::vector<DetId>& getValidDetIds(unsigned int subDetectorIndex) const = 0;
134  virtual std::pair<const_iterator, const_iterator> getDetIdPoints(const DetId&) const = 0;
135 
136  virtual bool insideElement(const GlobalPoint&, const DetId&) const = 0;
137  virtual bool crossedElement(const GlobalPoint&,
138  const GlobalPoint&,
139  const DetId&,
140  const double toleranceInSigmas = -1,
141  const SteppingHelixStateInfo* = 0 ) const { return false; }
142  virtual bool nearElement(const GlobalPoint& point,
143  const DetId& id,
144  const double distance) const;
145 
146  unsigned int index(unsigned int iEta, unsigned int iPhi) const {
147  return iEta*nPhi_+iPhi;
148  }
149  void fillSet( std::set<DetId>& set, unsigned int iEta, unsigned int iPhi) const;
150 
151  // map parameters
152  const int nPhi_;
153  const int nEta_;
154  // The first number in the pair points to the begging
155  // of the DetId list for a given bin
156  // The second number is the number of elements in a bin
157  std::vector<std::pair<unsigned int,unsigned int> > lookupMap_;
158  std::vector<DetId> container_;
160  const double etaBinSize_;
161  double maxEta_;
162  double minTheta_;
163 
165 
166  // Detector fiducial volume
167  // approximated as a closed cylinder with non-zero width.
168  // Parameters are extracted from the active detector elements.
170 };
171 #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
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
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
virtual void setPropagator(Propagator *ptr)
set a specific track propagator to be used
Propagator * ivProp_
std::vector< GlobalPoint >::const_iterator const_iterator
Definition: DetId.h:20
virtual ~DetIdAssociator()
virtual const std::vector< DetId > & getValidDetIds(unsigned int subDetectorIndex) const =0
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
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 std::pair< const_iterator, const_iterator > getDetIdPoints(const DetId &) const =0
void set(const std::string &name, int value)
set the flag, with a run-time name