CMS 3D CMS Logo

HGCDoublet.h
Go to the documentation of this file.
1 // Author: Felice Pantaleo,Marco Rovere - felice.pantaleo@cern.ch, marco.rovere@cern.ch
2 // Date: 11/2018
3 
4 #ifndef __RecoHGCal_TICL_HGCDoublet_H__
5 #define __RecoHGCal_TICL_HGCDoublet_H__
6 
7 #include <cmath>
8 #include <vector>
9 
13 
14 class HGCDoublet {
15 public:
16  using HGCntuplet = std::vector<unsigned int>;
17 
19  const int outerClusterId,
20  const int doubletId,
21  const std::vector<reco::CaloCluster> *layerClusters,
22  const int seedIndex)
24  theDoubletId_(doubletId),
37 
38  double innerX() const { return innerX_; }
39 
40  double outerX() const { return outerX_; }
41 
42  double innerY() const { return innerY_; }
43 
44  double outerY() const { return outerY_; }
45 
46  double innerZ() const { return innerZ_; }
47 
48  double outerZ() const { return outerZ_; }
49 
50  double innerR() const { return innerR_; }
51 
52  double outerR() const { return outerZ_; }
53 
54  int seedIndex() const { return seedIndex_; }
55 
56  int innerClusterId() const { return innerClusterId_; }
57 
58  int outerClusterId() const { return outerClusterId_; }
59 
60  void tagAsOuterNeighbor(unsigned int otherDoublet) { outerNeighbors_.push_back(otherDoublet); }
61 
62  void tagAsInnerNeighbor(unsigned int otherDoublet) { innerNeighbors_.push_back(otherDoublet); }
63 
64  bool checkCompatibilityAndTag(std::vector<HGCDoublet> &allDoublets,
65  const std::vector<int> &innerDoublets,
66  const GlobalVector &refDir,
67  float minCosTheta,
68  float minCosPointing = 1.,
69  bool debug = false);
70 
71  int areAligned(double xi,
72  double yi,
73  double zi,
74  double xo,
75  double yo,
76  double zo,
77  float minCosTheta,
78  float minCosPointing,
79  const GlobalVector &refDir,
80  bool debug = false) const;
81 
82  void findNtuplets(std::vector<HGCDoublet> &allDoublets,
83  HGCntuplet &tmpNtuplet,
84  int seedIndex,
85  const bool outInDFS,
86  const unsigned int outInHops,
87  const unsigned int maxOutInHops,
88  std::vector<std::pair<unsigned int, unsigned int> > &outInToVisit);
89 
91 
92 private:
93  const std::vector<reco::CaloCluster> *layerClusters_;
94  std::vector<int> outerNeighbors_;
95  std::vector<int> innerNeighbors_;
96 
97  const int theDoubletId_;
98  const int innerClusterId_;
99  const int outerClusterId_;
100 
101  const double innerR_;
102  const double outerR_;
103  const double innerX_;
104  const double outerX_;
105  const double innerY_;
106  const double outerY_;
107  const double innerZ_;
108  const double outerZ_;
111 };
112 
113 #endif /*HGCDoublet_H_ */
Vector3DBase
Definition: Vector3DBase.h:8
HGCDoublet::findNtuplets
void findNtuplets(std::vector< HGCDoublet > &allDoublets, HGCntuplet &tmpNtuplet, int seedIndex, const bool outInDFS, const unsigned int outInHops, const unsigned int maxOutInHops, std::vector< std::pair< unsigned int, unsigned int > > &outInToVisit)
Definition: HGCDoublet.cc:123
DDAxes::y
HGCDoublet::innerX
double innerX() const
Definition: HGCDoublet.h:38
MessageLogger.h
funct::false
false
Definition: Factorize.h:29
HGCDoublet::theDoubletId_
const int theDoubletId_
Definition: HGCDoublet.h:97
HGCDoublet::checkCompatibilityAndTag
bool checkCompatibilityAndTag(std::vector< HGCDoublet > &allDoublets, const std::vector< int > &innerDoublets, const GlobalVector &refDir, float minCosTheta, float minCosPointing=1., bool debug=false)
Definition: HGCDoublet.cc:3
HGCDoublet::outerClusterId
int outerClusterId() const
Definition: HGCDoublet.h:58
HGCDoublet::outerX_
const double outerX_
Definition: HGCDoublet.h:104
DDAxes::x
HGCDoublet::innerClusterId_
const int innerClusterId_
Definition: HGCDoublet.h:98
HGCDoublet::setVisited
void setVisited(bool visited)
Definition: HGCDoublet.h:90
HGCDoublet::innerR
double innerR() const
Definition: HGCDoublet.h:50
HGCDoublet::outerClusterId_
const int outerClusterId_
Definition: HGCDoublet.h:99
HGCDoublet::outerZ
double outerZ() const
Definition: HGCDoublet.h:48
HGCDoublet::outerR
double outerR() const
Definition: HGCDoublet.h:52
debug
#define debug
Definition: HDRShower.cc:19
HGCDoublet::tagAsOuterNeighbor
void tagAsOuterNeighbor(unsigned int otherDoublet)
Definition: HGCDoublet.h:60
HGCDoublet::HGCntuplet
std::vector< unsigned int > HGCntuplet
Definition: HGCDoublet.h:16
HGCDoublet::innerX_
const double innerX_
Definition: HGCDoublet.h:103
HGCDoublet::seedIndex
int seedIndex() const
Definition: HGCDoublet.h:54
DDAxes::z
HGCDoublet::tagAsInnerNeighbor
void tagAsInnerNeighbor(unsigned int otherDoublet)
Definition: HGCDoublet.h:62
HGCDoublet::innerY_
const double innerY_
Definition: HGCDoublet.h:105
HGCDoublet::alreadyVisited_
bool alreadyVisited_
Definition: HGCDoublet.h:110
class-composition.visited
visited
Definition: class-composition.py:74
HLTEgPhaseIITestSequence_cff.layerClusters
layerClusters
Definition: HLTEgPhaseIITestSequence_cff.py:2506
HGCDoublet::outerX
double outerX() const
Definition: HGCDoublet.h:40
HGCDoublet::outerY
double outerY() const
Definition: HGCDoublet.h:44
HGCDoublet::innerClusterId
int innerClusterId() const
Definition: HGCDoublet.h:56
HGCDoublet::layerClusters_
const std::vector< reco::CaloCluster > * layerClusters_
Definition: HGCDoublet.h:93
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
HGCDoublet::outerR_
const double outerR_
Definition: HGCDoublet.h:102
HGCDoublet::innerZ_
const double innerZ_
Definition: HGCDoublet.h:107
HGCDoublet::innerY
double innerY() const
Definition: HGCDoublet.h:42
HGCDoublet::outerNeighbors_
std::vector< int > outerNeighbors_
Definition: HGCDoublet.h:94
alignCSCRings.r
r
Definition: alignCSCRings.py:93
HGCDoublet::outerY_
const double outerY_
Definition: HGCDoublet.h:106
HGCDoublet::areAligned
int areAligned(double xi, double yi, double zi, double xo, double yo, double zo, float minCosTheta, float minCosPointing, const GlobalVector &refDir, bool debug=false) const
Definition: HGCDoublet.cc:64
HGCDoublet::seedIndex_
int seedIndex_
Definition: HGCDoublet.h:109
protons_cff.xi
xi
Definition: protons_cff.py:35
TICLSeedingRegion.h
HGCDoublet::innerR_
const double innerR_
Definition: HGCDoublet.h:101
HGCDoublet::innerNeighbors_
std::vector< int > innerNeighbors_
Definition: HGCDoublet.h:95
HGCDoublet::HGCDoublet
HGCDoublet(const int innerClusterId, const int outerClusterId, const int doubletId, const std::vector< reco::CaloCluster > *layerClusters, const int seedIndex)
Definition: HGCDoublet.h:18
HGCDoublet::outerZ_
const double outerZ_
Definition: HGCDoublet.h:108
HGCDoublet::innerZ
double innerZ() const
Definition: HGCDoublet.h:46
HGCDoublet
Definition: HGCDoublet.h:14
CaloCluster.h