20 std::vector<spr::propagatedTrackID> vdets;
33 reco::TrackCollection::const_iterator trkItr;
34 for (trkItr = trkCollection->begin(),indx=0; trkItr != trkCollection->end(); ++trkItr,indx++) {
38 vdet.
ok = (pTrack->
quality(trackQuality_));
42 if (debug)
std::cout <<
"Propagate track " << indx <<
" p " << trkItr->p() <<
" eta " << trkItr->eta() <<
" phi " << trkItr->phi() <<
" Flag " << vdet.
ok << std::endl;
66 vdets.push_back(vdet);
70 std::cout <<
"propagateCALO:: for " << vdets.size() <<
" tracks" << std::endl;
71 for (
unsigned int i=0;
i<vdets.size(); ++
i) {
72 std::cout <<
"Track [" <<
i <<
"] Flag: " << vdets[
i].ok <<
" ECAL (" << vdets[
i].okECAL <<
") ";
91 reco::TrackCollection::const_iterator trkItr;
92 for (trkItr = trkCollection->begin(),indx=0; trkItr != trkCollection->end(); ++trkItr,indx++) {
96 trkD.
ok = (pTrack->
quality(trackQuality_));
100 if (debug)
std::cout <<
"Propagate track " << indx <<
" p " << trkItr->p() <<
" eta " << trkItr->eta() <<
" phi " << trkItr->phi() <<
" Flag " << trkD.
ok << std::endl;
123 trkDir.push_back(trkD);
127 std::cout <<
"propagateCALO:: for " << trkDir.size() <<
" tracks" << std::endl;
128 for (
unsigned int i=0;
i<trkDir.size(); ++
i) {
129 std::cout <<
"Track [" <<
i <<
"] Flag: " << trkDir[
i].ok <<
" ECAL (" << trkDir[
i].okECAL <<
")";
130 if (trkDir[
i].okECAL) {
131 std::cout <<
" point " << trkDir[
i].pointECAL <<
" direction "
132 << trkDir[
i].directionECAL <<
" ";
133 if (trkDir[
i].detIdECAL.subdetId() ==
EcalBarrel) {
139 std::cout <<
" HCAL (" << trkDir[
i].okHCAL <<
")";
140 if (trkDir[
i].okHCAL) {
141 std::cout <<
" point " << trkDir[
i].pointHCAL <<
" direction "
142 << trkDir[
i].directionHCAL <<
" "
166 return std::pair<math::XYZPoint,bool>(track.
point,track.
ok);
185 return std::pair<math::XYZPoint,bool>(track.
point,track.
ok);
193 return std::pair<math::XYZPoint,bool>(track1.point,track1.ok);
203 if (debug)
std::cout <<
"propagateTrackerEnd:: Vertex " << vertex <<
" Momentum " << momentum <<
" Charge " <<
charge <<
" Radius " << radius <<
" Z " << zdist << std::endl;
229 math::XYZPoint vDiff(point.x()-vertex.x(), point.y()-vertex.y(), point.z()-vertex.z());
230 double dphi = direction.
phi()-momentum.phi();
231 double rdist =
std::sqrt(vDiff.x()*vDiff.x()+vDiff.y()*vDiff.y());
232 double rat = 0.5*dphi/
std::sin(0.5*dphi);
233 double dZ = vDiff.z();
234 double dS = rdist*rat;
237 std::cout <<
"propagateTracker:: Barrel " << tsosb.
isValid() <<
" Endcap " << tsose.
isValid() <<
" OverAll " << ok <<
" Point " << point <<
" RDist " << rdist <<
" dS " << dS <<
" dS/pt " << rdist*rat/momentum.perp() <<
" zdist " << dZ <<
" dz/pz " << dZ/momentum.z() <<
" Length " << length << std::endl;
240 return std::pair<math::XYZPoint,double>(
point,length);
246 if (debug)
std::cout <<
"propagateCalo:: Vertex " << tpVertex <<
" Momentum " << tpMomentum <<
" Charge " << tpCharge <<
" Radius " << radius <<
" Z " << zdist <<
" Corner " << corner << std::endl;
257 if (tpMomentum.
eta() < 0) {
268 if (absEta < corner) {
282 track.
point.SetXYZ(-999., -999., -999.);
287 std::cout <<
"propagateCalo:: Barrel " << tsosb.
isValid() <<
" Endcap " << tsose.
isValid() <<
" OverAll " << track.
ok <<
" Point " << track.
point <<
" Direction " << track.
direction << std::endl;
291 double rdist =
std::sqrt(vDiff.x()*vDiff.x()+vDiff.y()*vDiff.y());
292 double pt = tpMomentum.
perp();
293 double rat = 0.5*dphi/
std::sin(0.5*dphi);
294 std::cout <<
"RDist " << rdist <<
" pt " << pt <<
" r/pt " << rdist*rat/pt <<
" zdist " << vDiff.z() <<
" pz " << tpMomentum.
z() <<
" z/pz " << vDiff.z()/tpMomentum.
z() << std::endl;
virtual DetId getClosestCell(const GlobalPoint &r) const
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, std::string &theTrackQuality, bool debug=false)
TrajectoryStateOnSurface propagate(const FreeTrajectoryState &fts, const Plane &plane) const
propagation to plane
virtual DetId getClosestCell(const GlobalPoint &r) const
TrackQuality
track quality
std::pair< math::XYZPoint, bool > propagateHCAL(const reco::Track *, const MagneticField *, bool debug=false)
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
GlobalPoint globalPosition() const
static PlanePointer build(const PositionType &pos, const RotationType &rot, MediumProperties *mp=0)
propagatedTrack propagateCalo(const GlobalPoint &vertex, const GlobalVector &momentum, int charge, const MagneticField *, float zdist, float radius, float corner, bool debug=false)
double px() const
x coordinate of momentum vector
const math::XYZPoint & outerPosition() const
position of the outermost hit
reco::TrackCollection::const_iterator trkItr
std::pair< math::XYZPoint, bool > propagateTracker(const reco::Track *, const MagneticField *, bool debug=false)
std::pair< math::XYZPoint, bool > propagateECAL(const reco::Track *, const MagneticField *, bool debug=false)
propagatedTrack propagateTrackToECAL(const reco::Track *, const MagneticField *, bool debug=false)
double pz() const
z coordinate of momentum vector
virtual DetId getClosestCell(const GlobalPoint &r) const
double vz() const
z coordinate of the reference point on track
static TrackQuality qualityByName(const std::string &name)
GlobalVector directionHCAL
XYZPointD XYZPoint
point in space with cartesian internal representation
static CylinderPointer build(const PositionType &pos, const RotationType &rot, Scalar radius, MediumProperties *mp=0)
bool quality(const TrackQuality) const
Track quality.
double vy() const
y coordinate of the reference point on track
GlobalVector directionECAL
std::pair< math::XYZPoint, double > propagateTrackerEnd(const reco::Track *, const MagneticField *, bool debug=false)
reco::TrackCollection::const_iterator trkItr
int charge() const
track electric charge
propagatedTrack propagateTrackToHCAL(const reco::Track *, const MagneticField *, bool debug=false)
*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
double py() const
y coordinate of momentum vector
double vx() const
x coordinate of the reference point on track
Global3DVector GlobalVector
GlobalVector globalDirection() const