File indexing completed on 2024-04-06 12:04:52
0001 #include "DataFormats/ParticleFlowReco/interface/PFBlockElementTrack.h"
0002 #include "DataFormats/ParticleFlowReco/interface/PFRecTrack.h"
0003 #include "DataFormats/Common/interface/Ref.h"
0004 #include "DataFormats/TrackReco/interface/Track.h"
0005 #include "DataFormats/ParticleFlowReco/interface/PFTrajectoryPoint.h"
0006
0007 #include <iomanip>
0008
0009 using namespace reco;
0010 using namespace std;
0011
0012 PFBlockElementTrack::PFBlockElementTrack(const PFRecTrackRef& ref)
0013 : PFBlockElement(TRACK), trackRefPF_(ref), trackRef_(ref->trackRef()), trackType_(0) {
0014 if (ref.isNull())
0015 throw cms::Exception("NullRef") << " PFBlockElementTrack constructed from a null reference to PFRecTrack.";
0016
0017 const reco::PFTrajectoryPoint& atECAL = ref->extrapolatedPoint(reco::PFTrajectoryPoint::ECALEntrance);
0018
0019 if (atECAL.isValid())
0020 positionAtECALEntrance_.SetCoordinates(atECAL.position().x(), atECAL.position().y(), atECAL.position().z());
0021
0022
0023
0024 setTrackType(DEFAULT, true);
0025 }
0026
0027 void PFBlockElementTrack::Dump(ostream& out, const char* tab) const {
0028 if (!out)
0029 return;
0030
0031 if (!trackRef_.isNull()) {
0032 double charge = trackRef_->charge();
0033 double pt = trackRef_->pt();
0034 double p = trackRef_->p();
0035 string s = " at vertex";
0036 double tracketa = trackRef_->eta();
0037 double trackphi = trackRef_->phi();
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053 out << setprecision(0);
0054 out << tab << setw(7) << "charge=" << setw(3) << charge;
0055 out << setprecision(3);
0056 out << setiosflags(ios::right);
0057 out << setiosflags(ios::fixed);
0058 out << ", pT =" << setw(7) << pt;
0059 out << ", p =" << setw(7) << p;
0060 out << " (eta,phi)= (";
0061 out << tracketa << ",";
0062 out << trackphi << ")" << s;
0063
0064 out << resetiosflags(ios::right | ios::fixed);
0065 }
0066 }