CMS 3D CMS Logo

CaloPropagateTrack.h
Go to the documentation of this file.
1 #ifndef CalibrationIsolatedParticlesCaloPropagateTrack_h
2 #define CalibrationIsolatedParticlesCaloPropagateTrack_h
3 
4 #include <cmath>
5 #include <vector>
6 #include <string>
7 
16 
17 //sim track
24 
28 
29 namespace spr {
30 
31  struct propagatedTrack {
32  propagatedTrack() { ok = false; }
33  bool ok;
36  };
37 
40  ok = false;
41  okECAL = false;
42  okHCAL = false;
43  }
44  bool ok, okECAL, okHCAL;
46  double etaECAL, etaHCAL;
47  double phiECAL, phiHCAL;
48  reco::TrackCollection::const_iterator trkItr;
49  };
50 
53  ok = false;
54  okECAL = false;
55  okHCAL = false;
56  }
57  bool ok, okECAL, okHCAL;
61  reco::TrackCollection::const_iterator trkItr;
62  };
63 
66  ok = okECAL = okHCAL = false;
67  charge = pdgId = 0;
68  }
69  bool ok, okECAL, okHCAL;
73  int charge, pdgId;
74  HepMC::GenEvent::particle_const_iterator trkItr;
75  };
76 
79  ok = okECAL = okHCAL = false;
80  charge = pdgId = 0;
81  }
82  bool ok, okECAL, okHCAL;
86  int charge, pdgId;
87  reco::GenParticleCollection::const_iterator trkItr;
88  };
89 
90  struct trackAtOrigin {
91  trackAtOrigin() { ok = false; }
92  bool ok;
93  int charge;
96  };
97 
98  // Returns a vector of DetID's of closest cell on the ECAL/HCAL surface of
99  // all the tracks in the collection. Also saves a boolean if extrapolation
100  // is satisfactory
101  std::vector<spr::propagatedTrackID> propagateCosmicCALO(edm::Handle<reco::TrackCollection>& trkCollection,
102  const CaloGeometry* geo,
103  const MagneticField* bField,
104  const std::string& theTrackQuality,
105  bool debug = false);
106  std::vector<spr::propagatedTrackID> propagateCALO(edm::Handle<reco::TrackCollection>& trkCollection,
107  const CaloGeometry* geo,
108  const MagneticField* bField,
109  const std::string& theTrackQuality,
110  bool debug = false);
112  const CaloGeometry* geo,
113  const MagneticField* bField,
114  const std::string& theTrackQuality,
115  std::vector<spr::propagatedTrackID>& vdets,
116  bool debug = false);
118  const CaloGeometry* geo,
119  const MagneticField* bField,
120  const std::string& theTrackQuality,
121  std::vector<spr::propagatedTrackDirection>& trkDir,
122  bool debug = false);
124  const CaloGeometry* geo,
125  const MagneticField* bField,
126  bool debug = false);
127  std::vector<spr::propagatedGenTrackID> propagateCALO(const HepMC::GenEvent* genEvent,
128  const ParticleDataTable* pdt,
129  const CaloGeometry* geo,
130  const MagneticField* bField,
131  double etaMax = 3.0,
132  bool debug = false);
133  std::vector<spr::propagatedGenParticleID> propagateCALO(edm::Handle<reco::GenParticleCollection>& genParticles,
134  const ParticleDataTable* pdt,
135  const CaloGeometry* geo,
136  const MagneticField* bField,
137  double etaMax = 3.0,
138  bool debug = false);
139  spr::propagatedTrackDirection propagateCALO(unsigned int thisTrk,
142  const CaloGeometry* geo,
143  const MagneticField* bField,
144  bool debug = false);
148  const CaloGeometry* geo,
149  const MagneticField* bField,
150  bool debug = false);
151  std::pair<bool, HcalDetId> propagateHCALBack(const reco::Track*,
152  const CaloGeometry* geo,
153  const MagneticField* bField,
154  bool debug = false);
155 
156  // Propagate tracks to the ECAL surface and optionally returns the
157  // extrapolated point (and the track direction at point of extrapolation)
159  spr::propagatedTrack propagateTrackToECAL(unsigned int thisTrk,
162  const MagneticField*,
163  bool debug = false);
164  std::pair<math::XYZPoint, bool> propagateECAL(const reco::Track*, const MagneticField*, bool debug = false);
165  std::pair<DetId, bool> propagateIdECAL(const HcalDetId& id,
166  const CaloGeometry* geo,
167  const MagneticField*,
168  bool debug = false);
169  std::pair<math::XYZPoint, bool> propagateECAL(
170  const GlobalPoint& vertex, const GlobalVector& momentum, int charge, const MagneticField*, bool debug = false);
171 
172  // Propagate tracks to the HCAL surface and optionally returns the
173  // extrapolated point (and the track direction at point of extrapolation)
175  spr::propagatedTrack propagateTrackToHCAL(unsigned int thisTrk,
178  const MagneticField*,
179  bool debug = false);
180  std::pair<math::XYZPoint, bool> propagateHCAL(const reco::Track*, const MagneticField*, bool debug = false);
181  std::pair<math::XYZPoint, bool> propagateHCAL(
182  const GlobalPoint& vertex, const GlobalVector& momentum, int charge, const MagneticField*, bool debug = false);
183 
184  // Propagate the track to the end of the tracker and returns the extrapolated
185  // point and optionally the length of the track upto the end
186  std::pair<math::XYZPoint, bool> propagateTracker(const reco::Track*, const MagneticField*, bool debug = false);
187  std::pair<math::XYZPoint, double> propagateTrackerEnd(const reco::Track*, const MagneticField*, bool debug = false);
188 
190  const GlobalVector& momentum,
191  int charge,
192  const MagneticField*,
193  float zdist,
194  float radius,
195  float corner,
196  bool debug = false);
197 
198  // Gives the vertex and momentum of a SimTrack
199  spr::trackAtOrigin simTrackAtOrigin(unsigned int thisTrk,
202  bool debug = false);
203 
204  //Get HcalDetID's for two values of r/z
205  bool propagateHCAL(const reco::Track* track,
206  const CaloGeometry* geo,
207  const MagneticField* bField,
208  bool typeRZ,
209  const std::pair<double, double> rz,
210  bool debug);
211  bool propagateHCAL(unsigned int thisTrk,
214  const CaloGeometry* geo,
215  const MagneticField* bField,
216  bool typeRZ,
217  const std::pair<double, double> rz,
218  bool debug);
219  std::pair<HcalDetId, HcalDetId> propagateHCAL(const CaloGeometry* geo,
220  const MagneticField* bField,
221  const GlobalPoint& vertex,
222  const GlobalVector& momentum,
223  int charge,
224  bool typeRZ,
225  const std::pair<double, double> rz,
226  bool debug);
227 
228 } // namespace spr
229 #endif
Vector3DBase
Definition: Vector3DBase.h:8
spr::propagatedTrackID::phiECAL
double phiECAL
Definition: CaloPropagateTrack.h:47
spr::propagatedGenParticleID::pdgId
int pdgId
Definition: CaloPropagateTrack.h:86
Handle.h
spr::propagatedTrackID::propagatedTrackID
propagatedTrackID()
Definition: CaloPropagateTrack.h:39
spr::propagatedGenTrackID::charge
int charge
Definition: CaloPropagateTrack.h:73
spr
Definition: CaloConstants.h:6
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
genParticles2HepMC_cfi.genParticles
genParticles
Definition: genParticles2HepMC_cfi.py:4
spr::propagatedTrack::direction
GlobalVector direction
Definition: CaloPropagateTrack.h:35
spr::propagatedTrack
Definition: CaloPropagateTrack.h:31
spr::propagatedTrackID::detIdEHCAL
DetId detIdEHCAL
Definition: CaloPropagateTrack.h:45
spr::propagateIdECAL
std::pair< DetId, bool > propagateIdECAL(const HcalDetId &id, const CaloGeometry *geo, const MagneticField *, bool debug=false)
Definition: CaloPropagateTrack.cc:706
spr::propagatedGenTrackID::directionHCAL
GlobalVector directionHCAL
Definition: CaloPropagateTrack.h:72
spr::propagateCosmicCALO
std::vector< spr::propagatedTrackID > propagateCosmicCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
Definition: CaloPropagateTrack.cc:20
spr::propagatedGenParticleID::pointECAL
GlobalPoint pointECAL
Definition: CaloPropagateTrack.h:84
spr::propagateTracker
std::pair< math::XYZPoint, bool > propagateTracker(const reco::Track *, const MagneticField *, bool debug=false)
Definition: CaloPropagateTrack.cc:773
spr::propagatedGenTrackID::propagatedGenTrackID
propagatedGenTrackID()
Definition: CaloPropagateTrack.h:65
spr::propagateTrackToECAL
spr::propagatedTrack propagateTrackToECAL(const reco::Track *, const MagneticField *, bool debug=false)
Definition: CaloPropagateTrack.cc:679
spr::propagatedGenTrackID::pdgId
int pdgId
Definition: CaloPropagateTrack.h:73
spr::propagatedGenParticleID::trkItr
reco::GenParticleCollection::const_iterator trkItr
Definition: CaloPropagateTrack.h:87
edm::Handle< reco::TrackCollection >
HepMC::GenEvent
Definition: hepmc_rootio.cc:9
GenParticle.h
spr::propagateCalo
spr::propagatedTrack propagateCalo(const GlobalPoint &vertex, const GlobalVector &momentum, int charge, const MagneticField *, float zdist, float radius, float corner, bool debug=false)
Definition: CaloPropagateTrack.cc:844
DetId
Definition: DetId.h:17
spr::propagatedTrackID::ok
bool ok
Definition: CaloPropagateTrack.h:44
CaloGeometry
Definition: CaloGeometry.h:21
debug
#define debug
Definition: HDRShower.cc:19
spr::propagatedGenTrackID::detIdEHCAL
DetId detIdEHCAL
Definition: CaloPropagateTrack.h:70
Track.h
TrackFwd.h
spr::propagatedGenParticleID::directionECAL
GlobalVector directionECAL
Definition: CaloPropagateTrack.h:85
spr::propagatedGenParticleID::okECAL
bool okECAL
Definition: CaloPropagateTrack.h:82
spr::propagatedTrackDirection::okECAL
bool okECAL
Definition: CaloPropagateTrack.h:57
spr::propagatedTrackID::okECAL
bool okECAL
Definition: CaloPropagateTrack.h:44
spr::propagatedGenTrackID
Definition: CaloPropagateTrack.h:64
TCMET_cfi.zdist
zdist
Definition: TCMET_cfi.py:33
SimVertex.h
GenParticleFwd.h
reco::Track
Definition: Track.h:27
spr::trackAtOrigin::trackAtOrigin
trackAtOrigin()
Definition: CaloPropagateTrack.h:91
spr::trackAtOrigin
Definition: CaloPropagateTrack.h:90
spr::propagatedGenParticleID::directionHCAL
GlobalVector directionHCAL
Definition: CaloPropagateTrack.h:85
spr::propagatedTrackID::etaECAL
double etaECAL
Definition: CaloPropagateTrack.h:46
Point3DBase< float, GlobalTag >
spr::propagatedTrackDirection::propagatedTrackDirection
propagatedTrackDirection()
Definition: CaloPropagateTrack.h:52
spr::propagateECAL
std::pair< math::XYZPoint, bool > propagateECAL(const reco::Track *, const MagneticField *, bool debug=false)
Definition: CaloPropagateTrack.cc:699
spr::propagatedGenParticleID::charge
int charge
Definition: CaloPropagateTrack.h:86
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
spr::propagatedTrack::point
math::XYZPoint point
Definition: CaloPropagateTrack.h:34
spr::propagatedTrack::ok
bool ok
Definition: CaloPropagateTrack.h:33
CaloSubdetectorGeometry.h
bphysicsOniaDQM_cfi.vertex
vertex
Definition: bphysicsOniaDQM_cfi.py:7
spr::propagatedTrackID::detIdHCAL
DetId detIdHCAL
Definition: CaloPropagateTrack.h:45
spr::propagatedTrackDirection::pointHCAL
GlobalPoint pointHCAL
Definition: CaloPropagateTrack.h:59
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
spr::propagatedTrackID::detIdECAL
DetId detIdECAL
Definition: CaloPropagateTrack.h:45
ParticleDataTable.h
spr::propagatedTrackDirection::detIdHCAL
DetId detIdHCAL
Definition: CaloPropagateTrack.h:58
spr::trackAtOrigin::ok
bool ok
Definition: CaloPropagateTrack.h:92
spr::propagatedGenParticleID::detIdHCAL
DetId detIdHCAL
Definition: CaloPropagateTrack.h:83
HcalDetId.h
spr::propagatedTrackID::etaHCAL
double etaHCAL
Definition: CaloPropagateTrack.h:46
spr::propagatedTrackID::trkItr
reco::TrackCollection::const_iterator trkItr
Definition: CaloPropagateTrack.h:48
HcalDetId
Definition: HcalDetId.h:12
MagneticField.h
spr::propagatedGenParticleID::ok
bool ok
Definition: CaloPropagateTrack.h:82
spr::simTrackAtOrigin
spr::trackAtOrigin simTrackAtOrigin(unsigned int thisTrk, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, bool debug=false)
Definition: CaloPropagateTrack.cc:922
spr::propagatedTrackDirection::directionECAL
GlobalVector directionECAL
Definition: CaloPropagateTrack.h:60
spr::propagatedTrackID::okHCAL
bool okHCAL
Definition: CaloPropagateTrack.h:44
spr::propagatedGenTrackID::okECAL
bool okECAL
Definition: CaloPropagateTrack.h:69
spr::propagatedTrackDirection::directionHCAL
GlobalVector directionHCAL
Definition: CaloPropagateTrack.h:60
spr::propagatedGenParticleID::okHCAL
bool okHCAL
Definition: CaloPropagateTrack.h:82
spr::propagatedGenTrackID::detIdECAL
DetId detIdECAL
Definition: CaloPropagateTrack.h:70
spr::propagateCALO
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
Definition: CaloPropagateTrack.cc:141
spr::propagatedTrackDirection::ok
bool ok
Definition: CaloPropagateTrack.h:57
spr::trackAtOrigin::position
GlobalPoint position
Definition: CaloPropagateTrack.h:94
spr::propagatedGenTrackID::okHCAL
bool okHCAL
Definition: CaloPropagateTrack.h:69
spr::propagatedGenParticleID
Definition: CaloPropagateTrack.h:77
spr::propagatedTrackDirection::pointECAL
GlobalPoint pointECAL
Definition: CaloPropagateTrack.h:59
spr::propagateHCALBack
spr::propagatedTrackDirection propagateHCALBack(unsigned int thisTrk, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, const CaloGeometry *geo, const MagneticField *bField, bool debug=false)
Definition: CaloPropagateTrack.cc:619
Calorimetry_cff.bField
bField
Definition: Calorimetry_cff.py:284
spr::propagateTrackerEnd
std::pair< math::XYZPoint, double > propagateTrackerEnd(const reco::Track *, const MagneticField *, bool debug=false)
Definition: CaloPropagateTrack.cc:782
DetId.h
genWeightsTable_cfi.genEvent
genEvent
Definition: genWeightsTable_cfi.py:4
spr::trackAtOrigin::charge
int charge
Definition: CaloPropagateTrack.h:93
CaloGeometry.h
spr::trackAtOrigin::momentum
GlobalVector momentum
Definition: CaloPropagateTrack.h:95
spr::propagatedTrackID
Definition: CaloPropagateTrack.h:38
spr::propagatedTrackDirection::detIdECAL
DetId detIdECAL
Definition: CaloPropagateTrack.h:58
CosmicsPD_Skims.radius
radius
Definition: CosmicsPD_Skims.py:135
spr::propagatedTrackDirection::detIdEHCAL
DetId detIdEHCAL
Definition: CaloPropagateTrack.h:58
ALCARECOTkAlBeamHalo_cff.etaMax
etaMax
Definition: ALCARECOTkAlBeamHalo_cff.py:33
spr::propagateHCAL
std::pair< math::XYZPoint, bool > propagateHCAL(const reco::Track *, const MagneticField *, bool debug=false)
Definition: CaloPropagateTrack.cc:759
TCMET_cfi.corner
corner
Definition: TCMET_cfi.py:34
spr::propagatedGenTrackID::pointHCAL
GlobalPoint pointHCAL
Definition: CaloPropagateTrack.h:71
spr::propagatedTrackID::phiHCAL
double phiHCAL
Definition: CaloPropagateTrack.h:47
SimTrack.h
spr::propagatedTrack::propagatedTrack
propagatedTrack()
Definition: CaloPropagateTrack.h:32
spr::propagatedGenParticleID::detIdEHCAL
DetId detIdEHCAL
Definition: CaloPropagateTrack.h:83
HepMCProduct.h
spr::propagatedGenTrackID::trkItr
HepMC::GenEvent::particle_const_iterator trkItr
Definition: CaloPropagateTrack.h:74
MagneticField
Definition: MagneticField.h:19
spr::propagatedGenParticleID::propagatedGenParticleID
propagatedGenParticleID()
Definition: CaloPropagateTrack.h:78
spr::propagatedGenParticleID::pointHCAL
GlobalPoint pointHCAL
Definition: CaloPropagateTrack.h:84
GlobalPoint.h
spr::propagatedTrackDirection::okHCAL
bool okHCAL
Definition: CaloPropagateTrack.h:57
SimTrackContainer.h
ParticleDataTable
HepPDT::ParticleDataTable ParticleDataTable
Definition: ParticleDataTable.h:8
spr::propagatedGenTrackID::detIdHCAL
DetId detIdHCAL
Definition: CaloPropagateTrack.h:70
spr::propagatedTrackDirection
Definition: CaloPropagateTrack.h:51
spr::propagatedGenTrackID::pointECAL
GlobalPoint pointECAL
Definition: CaloPropagateTrack.h:71
SimVertexContainer.h
spr::propagatedTrackDirection::trkItr
reco::TrackCollection::const_iterator trkItr
Definition: CaloPropagateTrack.h:61
spr::propagatedGenTrackID::ok
bool ok
Definition: CaloPropagateTrack.h:69
spr::propagatedGenTrackID::directionECAL
GlobalVector directionECAL
Definition: CaloPropagateTrack.h:72
spr::propagateTrackToHCAL
spr::propagatedTrack propagateTrackToHCAL(const reco::Track *, const MagneticField *, bool debug=false)
Definition: CaloPropagateTrack.cc:739
spr::propagatedGenParticleID::detIdECAL
DetId detIdECAL
Definition: CaloPropagateTrack.h:83