CMS 3D CMS Logo

SiStripElectronSeedGenerator.h
Go to the documentation of this file.
1 #ifndef SiStripElectronSeedGenerator_H
2 #define SiStripElectronSeedGenerator_H
3 
19 
24 
30 
33 
39 
43 
47 
52 
55 
57 class KFUpdator;
58 class MeasurementTracker;
60 class NavigationSchool;
62 
64 {
65 public:
66 
67  struct Tokens {
70  };
71 
76 
78  const Tokens&);
79 
81 
82  void setupES(const edm::EventSetup& setup);
83  void run(edm::Event&, const edm::EventSetup& setup,
86 
87 private:
88  double normalPhi(double phi) const {
89  while (phi > 2.* M_PI) { phi -= 2.*M_PI; }
90  while (phi < 0) { phi += 2.*M_PI; }
91  return phi;
92  }
93 
94  double phiDiff(double phi1, double phi2){
95  double result = normalPhi(phi1) - normalPhi(phi2);
96  if(result > M_PI) result -= 2*M_PI;
97  if(result < -M_PI) result += 2*M_PI;
98  return result;
99  }
100 
101  double unwrapPhi(double phi) const {
102  while (phi > M_PI) { phi -= 2.*M_PI; }
103  while (phi < -M_PI) { phi += 2.*M_PI; }
104  return phi;
105  }
106 
108  const MeasurementTrackerEvent &trackerData,
110 
111  int whichSubdetector(std::vector<const SiStripMatchedRecHit2D*>::const_iterator hit);
112 
113  bool preselection(GlobalPoint position,GlobalPoint superCluster,double phiVsRSlope, int hitLayer);
114  //hitLayer: 1 = TIB, 2 = TID, 3 = TEC, 4 = Mono
115 
116  bool checkHitsAndTSOS(std::vector<const SiStripMatchedRecHit2D*>::const_iterator hit1,
117  std::vector<const SiStripMatchedRecHit2D*>::const_iterator hit2,
118  double scr,double scz,double pT,double scEta);
119 
120  bool altCheckHitsAndTSOS(std::vector<const SiStripMatchedRecHit2D*>::const_iterator hit1,
121  std::vector<const SiStripRecHit2D*>::const_iterator hit2,
122  double scr,double scz,double pT,double scEta);
123 
124  const SiStripMatchedRecHit2D* matchedHitConverter(ConstRecHitPointer crhp);
125  const SiStripRecHit2D* backupHitConverter(ConstRecHitPointer crhp);
126 
127  std::vector<bool> useDetLayer(double scEta);
128 
134 
138 
143 
144  PRecHitContainer recHits_;
146 
147  // member vectors to hold the good hits found between hit selection and combinatorics
148  std::vector<const SiStripMatchedRecHit2D*> layer1Hits_;
149  std::vector<const SiStripMatchedRecHit2D*> layer2Hits_;
150  std::vector<const SiStripRecHit2D*> backupLayer2Hits_;
151 
153 
154  unsigned long long cacheIDMagField_;
155  unsigned long long cacheIDCkfComp_;
156  unsigned long long cacheIDTrkGeom_;
157 
173  double tidEtaUsage_;
178 
179 };
180 
181 #endif // SiStripElectronSeedGenerator_H
182 
183 
bool checkHitsAndTSOS(std::vector< const SiStripMatchedRecHit2D * >::const_iterator hit1, std::vector< const SiStripMatchedRecHit2D * >::const_iterator hit2, double scr, double scz, double pT, double scEta)
std::vector< bool > useDetLayer(double scEta)
const MeasurementTracker * theMeasurementTracker
edm::ESHandle< MagneticField > theMagField
TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer
Chi2MeasurementEstimator * theEstimator
std::vector< ConstRecHitPointer > RecHitContainer
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
const SiStripMatchedRecHit2D * matchedHitConverter(ConstRecHitPointer crhp)
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag_
edm::EDGetTokenT< MeasurementTrackerEvent > theMeasurementTrackerEventTag
edm::EDGetTokenT< MeasurementTrackerEvent > token_mte
TransientTrackingRecHit::RecHitPointer RecHitPointer
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
edm::OwnVector< TrackingRecHit > PRecHitContainer
SiStripElectronSeedGenerator(const edm::ParameterSet &, const Tokens &)
std::vector< ElectronSeed > ElectronSeedCollection
collection of ElectronSeed objects
edm::ESHandle< TrackerGeometry > trackerGeometryHandle
edm::Handle< reco::BeamSpot > theBeamSpot
std::shared_ptr< TrackingRecHit const > RecHitPointer
#define M_PI
int whichSubdetector(std::vector< const SiStripMatchedRecHit2D * >::const_iterator hit)
void findSeedsFromCluster(edm::Ref< reco::SuperClusterCollection >, edm::Handle< reco::BeamSpot >, const MeasurementTrackerEvent &trackerData, reco::ElectronSeedCollection &)
bool preselection(GlobalPoint position, GlobalPoint superCluster, double phiVsRSlope, int hitLayer)
const SiStripRecHit2D * backupHitConverter(ConstRecHitPointer crhp)
bool altCheckHitsAndTSOS(std::vector< const SiStripMatchedRecHit2D * >::const_iterator hit1, std::vector< const SiStripRecHit2D * >::const_iterator hit2, double scr, double scz, double pT, double scEta)
void setupES(const edm::EventSetup &setup)
const SiStripRecHitMatcher * theMatcher_
std::vector< const SiStripMatchedRecHit2D * > layer2Hits_
double phiDiff(double phi1, double phi2)
static int position[264][3]
Definition: ReadPGInfo.cc:509
edm::ESHandle< MeasurementTracker > measurementTrackerHandle
std::vector< const SiStripRecHit2D * > backupLayer2Hits_
void run(edm::Event &, const edm::EventSetup &setup, const edm::Handle< reco::SuperClusterCollection > &, reco::ElectronSeedCollection &)
std::vector< const SiStripMatchedRecHit2D * > layer1Hits_
TransientTrackingRecHit::RecHitContainer RecHitContainer
edm::EDGetTokenT< reco::BeamSpot > token_bs