27 std::vector<spr::propagatedTrackID> vdets;
30 reco::TrackCollection::const_iterator trkItr;
31 for (trkItr = trkCollection->begin(),indx=0; trkItr != trkCollection->end(); ++trkItr,indx++) {
35 vdet.
ok = (pTrack->
quality(trackQuality_));
40 if (debug)
std::cout <<
"Propagate track " << indx <<
" p " << trkItr->p() <<
" eta " << trkItr->eta() <<
" phi " << trkItr->phi() <<
" Flag " << vdet.
ok << std::endl;
62 if (debug)
std::cout <<
"Track charge " <<
charge <<
" p " << momentum <<
" position " << vertex << std::endl;
64 std::pair<math::XYZPoint,bool>
info =
89 std::cout <<
"Track [" << indx <<
"] Flag: " << vdet.
ok <<
" ECAL (" 98 vdets.push_back(vdet);
103 std::cout <<
"propagateCALO:: for " << vdets.size() <<
" tracks" << std::endl;
104 for (
unsigned int i=0;
i<vdets.size(); ++
i) {
105 std::cout <<
"Track [" <<
i <<
"] Flag: " << vdets[
i].ok <<
" ECAL (" << vdets[
i].okECAL <<
") ";
120 std::vector<spr::propagatedTrackID> vdets;
133 reco::TrackCollection::const_iterator trkItr;
134 for (trkItr = trkCollection->begin(),indx=0; trkItr != trkCollection->end(); ++trkItr,indx++) {
138 vdet.
ok = (pTrack->
quality(trackQuality_));
143 if (debug)
std::cout <<
"Propagate track " << indx <<
" p " << trkItr->p() <<
" eta " << trkItr->eta() <<
" phi " << trkItr->phi() <<
" Flag " << vdet.
ok << std::endl;
146 vdet.
okECAL = info.second;
159 vdet.
okHCAL = info.second;
168 std::cout <<
"Track [" << indx <<
"] Flag: " << vdet.
ok <<
" ECAL (" 177 vdets.push_back(vdet);
181 std::cout <<
"propagateCALO:: for " << vdets.size() <<
" tracks" << std::endl;
182 for (
unsigned int i=0;
i<vdets.size(); ++
i) {
183 std::cout <<
"Track [" <<
i <<
"] Flag: " << vdets[
i].ok <<
" ECAL (" << vdets[
i].okECAL <<
") ";
203 reco::TrackCollection::const_iterator trkItr;
204 for (trkItr = trkCollection->begin(),indx=0; trkItr != trkCollection->end(); ++trkItr,indx++) {
208 trkD.
ok = (pTrack->
quality(trackQuality_));
213 if (debug)
std::cout <<
"Propagate track " << indx <<
" p " << trkItr->p() <<
" eta " << trkItr->eta() <<
" phi " << trkItr->phi() <<
" Flag " << trkD.
ok << std::endl;
236 trkDir.push_back(trkD);
240 std::cout <<
"propagateCALO:: for " << trkDir.size() <<
" tracks" << std::endl;
241 for (
unsigned int i=0;
i<trkDir.size(); ++
i) {
242 std::cout <<
"Track [" <<
i <<
"] Flag: " << trkDir[
i].ok <<
" ECAL (" << trkDir[
i].okECAL <<
")";
243 if (trkDir[
i].okECAL) {
244 std::cout <<
" point " << trkDir[
i].pointECAL <<
" direction " 245 << trkDir[
i].directionECAL <<
" ";
246 if (trkDir[
i].detIdECAL.subdetId() ==
EcalBarrel) {
252 std::cout <<
" HCAL (" << trkDir[
i].okHCAL <<
")";
253 if (trkDir[
i].okHCAL) {
254 std::cout <<
" point " << trkDir[
i].pointHCAL <<
" direction " 255 << trkDir[
i].directionHCAL <<
" " 276 if (debug)
std::cout <<
"Propagate track: p " << pTrack->
p() <<
" eta " << pTrack->
eta() <<
" phi " << pTrack->
phi() <<
" Flag " << vdet.
ok << std::endl;
279 vdet.
okECAL = info.second;
292 vdet.
okHCAL = info.second;
301 std::cout <<
"propagateCALO:: for 1 track" << std::endl;
320 std::vector<spr::propagatedGenTrackID> trkDir;
322 HepMC::GenEvent::particle_const_iterator
p;
323 for (p=genEvent->particles_begin(),indx=0; p != genEvent->particles_end(); ++
p,++indx) {
329 trkD.
pdgId = ((*p)->pdg_id());
330 trkD.
charge = ((pdt->particle(trkD.
pdgId))->
ID().threeCharge())/3;
333 if (debug)
std::cout <<
"Propagate track " << indx <<
" pdg " << trkD.
pdgId <<
" charge " << trkD.
charge <<
" p " << momentum << std::endl;
336 if ( (*p)->status()==1 &&
std::abs((*p)->momentum().eta()) < etaMax ) {
338 0.1*(*p)->production_vertex()->position().y(),
339 0.1*(*p)->production_vertex()->position().z());
364 trkDir.push_back(trkD);
368 std::cout <<
"propagateCALO:: for " << trkDir.size() <<
" tracks" << std::endl;
369 for (
unsigned int i=0;
i<trkDir.size(); ++
i) {
370 if (trkDir[
i].okECAL)
std::cout <<
"Track [" <<
i <<
"] Flag: " << trkDir[
i].ok <<
" ECAL (" << trkDir[
i].okECAL <<
")";
371 if (trkDir[
i].okECAL) {
372 std::cout <<
" point " << trkDir[
i].pointECAL <<
" direction " 373 << trkDir[
i].directionECAL <<
" ";
374 if (trkDir[
i].detIdECAL.subdetId() ==
EcalBarrel) {
380 if (trkDir[
i].okECAL)
std::cout <<
" HCAL (" << trkDir[
i].okHCAL <<
")";
381 if (trkDir[
i].okHCAL) {
382 std::cout <<
" point " << trkDir[
i].pointHCAL <<
" direction " 383 << trkDir[
i].directionHCAL <<
" " 399 std::vector<spr::propagatedGenParticleID> trkDir;
401 reco::GenParticleCollection::const_iterator
p;
402 for (p=genParticles->begin(),indx=0; p != genParticles->end(); ++
p,++indx) {
408 trkD.
pdgId = (p->pdgId());
409 trkD.
charge = p->charge();
412 if (debug)
std::cout <<
"Propagate track " << indx <<
" pdg " << trkD.
pdgId <<
" charge " << trkD.
charge <<
" p " << momentum << std::endl;
415 if ( p->status()==1 &&
std::abs(momentum.
eta()) < etaMax ) {
441 trkDir.push_back(trkD);
445 std::cout <<
"propagateCALO:: for " << trkDir.size() <<
" tracks" << std::endl;
446 for (
unsigned int i=0;
i<trkDir.size(); ++
i) {
447 if (trkDir[
i].okECAL)
std::cout <<
"Track [" <<
i <<
"] Flag: " << trkDir[
i].ok <<
" ECAL (" << trkDir[
i].okECAL <<
")";
448 if (trkDir[
i].okECAL) {
449 std::cout <<
" point " << trkDir[
i].pointECAL <<
" direction " 450 << trkDir[
i].directionECAL <<
" ";
451 if (trkDir[
i].detIdECAL.subdetId() ==
EcalBarrel) {
457 if (trkDir[
i].okECAL)
std::cout <<
" HCAL (" << trkDir[
i].okHCAL <<
")";
458 if (trkDir[
i].okHCAL) {
459 std::cout <<
" point " << trkDir[
i].pointHCAL <<
" direction " 460 << trkDir[
i].directionHCAL <<
" " 483 if (debug)
std::cout <<
"Propagate track " << thisTrk <<
" charge " << trk.
charge <<
" position " << trk.
position <<
" p " << trk.
momentum <<
" Flag " << trkD.
ok << std::endl;
511 std::cout <<
"propagateCALO:: for track [" << thisTrk <<
"] Flag: " << trkD.
ok <<
" ECAL (" << trkD.
okECAL <<
") HCAL (" << trkD.
okHCAL <<
")" << std::endl;
542 if (debug)
std::cout <<
"Propagate track " << thisTrk <<
" charge " << trk.
charge <<
" position " << trk.
position <<
" p " << trk.
momentum <<
" Flag " << trkD.
ok << std::endl;
556 std::cout <<
"propagateCALO:: for track [" << thisTrk <<
"] Flag: " << trkD.
ok <<
" ECAL (" << trkD.
okECAL <<
") HCAL (" << trkD.
okHCAL <<
")" << std::endl;
577 return std::pair<bool,HcalDetId>(
false,
HcalDetId());
606 return std::pair<math::XYZPoint,bool>(track.
point,track.
ok);
633 return std::pair<math::XYZPoint,bool>(track.
point,track.
ok);
641 return std::pair<math::XYZPoint,bool>(track1.point,track1.ok);
657 if (
debug)
std::cout <<
"propagateTrackerEnd:: Vertex " << vertex <<
" Momentum " << momentum <<
" Charge " <<
charge <<
" Radius " << radius <<
" Z " << zdist << std::endl;
683 math::XYZPoint vDiff(point.x()-vertex.x(), point.y()-vertex.y(), point.z()-vertex.z());
684 double dphi = direction.
phi()-momentum.
phi();
685 double rdist =
std::sqrt(vDiff.x()*vDiff.x()+vDiff.y()*vDiff.y());
686 double rat = 0.5*dphi/
std::sin(0.5*dphi);
687 double dZ = vDiff.z();
688 double dS = rdist*rat;
692 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;
696 return std::pair<math::XYZPoint,double>(
point,length);
710 if (
debug)
std::cout <<
"propagateCalo:: Vertex " << tpVertex <<
" Momentum " << tpMomentum <<
" Charge " << tpCharge <<
" Radius " << radius <<
" Z " << zdist <<
" Corner " << corner << std::endl;
722 if (tpMomentum.
eta() < 0) {
733 if (absEta < corner) {
747 track.
point.SetXYZ(-999., -999., -999.);
753 std::cout <<
"propagateCalo:: Barrel " << tsosb.
isValid() <<
" Endcap " << tsose.
isValid() <<
" OverAll " << track.
ok <<
" Point " << track.
point <<
" Direction " << track.
direction << std::endl;
757 double rdist =
std::sqrt(vDiff.x()*vDiff.x()+vDiff.y()*vDiff.y());
758 double pt = tpMomentum.
perp();
759 double rat = 0.5*dphi/
std::sin(0.5*dphi);
760 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;
777 edm::SimTrackContainer::const_iterator itr = SimTk->end();
778 for (edm::SimTrackContainer::const_iterator simTrkItr = SimTk->begin(); simTrkItr!= SimTk->end(); simTrkItr++) {
779 if ( simTrkItr->trackId() == thisTrk ) {
781 if (
debug)
std::cout <<
"matched trackId (maximum occurance) " << thisTrk <<
" type " << simTrkItr->type() << std::endl;
788 if (itr != SimTk->end()) {
789 int vertIndex = itr->vertIndex();
790 if (vertIndex != -1 && vertIndex < (
int)SimVtx->size()) {
791 edm::SimVertexContainer::const_iterator simVtxItr= SimVtx->begin();
792 for (
int iv=0; iv<vertIndex; iv++) simVtxItr++;
double p() const
momentum vector magnitude
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
static const double etaBEEcal
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, std::string &theTrackQuality, bool debug=false)
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
DetId getClosestCell(const GlobalPoint &r) const override
static const double zBackTE
static const double etaBEHcal
reco::GenParticleCollection::const_iterator trkItr
TrackQuality
track quality
std::pair< math::XYZPoint, bool > propagateHCAL(const reco::Track *, const MagneticField *, bool debug=false)
static const double zFrontHE
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
GlobalPoint globalPosition() const
double phi() const
azimuthal angle of momentum vector
spr::trackAtOrigin simTrackAtOrigin(unsigned int thisTrk, edm::Handle< edm::SimTrackContainer > &SimTk, edm::Handle< edm::SimVertexContainer > &SimVtx, bool debug=false)
static const double zBackHE
GlobalVector directionECAL
spr::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
static const double rFrontHB
HepMC::GenEvent::particle_const_iterator trkItr
const math::XYZPoint & innerPosition() const
position of the innermost hit
static const double rBackHB
static CylinderPointer build(const PositionType &pos, const RotationType &rot, Scalar radius, Bounds *bounds=0)
reco::TrackCollection::const_iterator trkItr
static const double zFrontEE
double eta() const
pseudorapidity of momentum vector
static const double rBackTB
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)
static PlanePointer build(Args &&...args)
static const double rFrontEB
Abs< T >::type abs(const T &t)
GlobalVector directionECAL
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)
spr::propagatedTrack propagateTrackToECAL(const reco::Track *, const MagneticField *, bool debug=false)
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
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
const math::XYZVector & outerMomentum() const
momentum vector at the outermost hit position
GlobalVector directionHCAL
static const double zFrontTE
XYZPointD XYZPoint
point in space with cartesian internal representation
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
GlobalVector directionHCAL
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)
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
std::vector< spr::propagatedTrackID > propagateCosmicCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, std::string &theTrackQuality, bool debug=false)
reco::TrackCollection::const_iterator trkItr
int charge() const
track electric charge
DetId getClosestCell(const GlobalPoint &r) const override
spr::propagatedTrack propagateTrackToHCAL(const reco::Track *, const MagneticField *, bool debug=false)
static const double etaBETrak
*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