![]() |
![]() |
#include <CosmicParametersDefinerForTP.h>
Public Member Functions | |
CosmicParametersDefinerForTP () | |
void | initEvent (edm::Handle< SimHitTPAssociationProducer::SimHitTPAssociationList > simHitsTPAssocToSet) const |
virtual TrackingParticle::Vector | momentum (const edm::Event &iEvent, const edm::EventSetup &iSetup, const Charge ch, const Point &vertex, const LorentzVector &lv) const |
virtual TrackingParticle::Vector | momentum (const edm::Event &iEvent, const edm::EventSetup &iSetup, const TrackingParticleRef tpr) const |
virtual TrackingParticle::Point | vertex (const edm::Event &iEvent, const edm::EventSetup &iSetup, const Charge ch, const Point &vertex, const LorentzVector &lv) const |
virtual TrackingParticle::Point | vertex (const edm::Event &iEvent, const edm::EventSetup &iSetup, const TrackingParticleRef tpr) const |
virtual | ~CosmicParametersDefinerForTP () |
Private Attributes | |
edm::Handle < SimHitTPAssociationProducer::SimHitTPAssociationList > | simHitsTPAssoc |
Definition at line 13 of file CosmicParametersDefinerForTP.h.
CosmicParametersDefinerForTP::CosmicParametersDefinerForTP | ( | ) | [inline] |
Definition at line 16 of file CosmicParametersDefinerForTP.h.
{};
virtual CosmicParametersDefinerForTP::~CosmicParametersDefinerForTP | ( | ) | [inline, virtual] |
Definition at line 17 of file CosmicParametersDefinerForTP.h.
{};
void CosmicParametersDefinerForTP::initEvent | ( | edm::Handle< SimHitTPAssociationProducer::SimHitTPAssociationList > | simHitsTPAssocToSet | ) | const [inline, virtual] |
Reimplemented from ParametersDefinerForTP.
Definition at line 32 of file CosmicParametersDefinerForTP.h.
References simHitsTPAssoc.
{ simHitsTPAssoc = simHitsTPAssocToSet; }
TrackingParticle::Vector CosmicParametersDefinerForTP::momentum | ( | const edm::Event & | iEvent, |
const edm::EventSetup & | iSetup, | ||
const TrackingParticleRef | tpr | ||
) | const [virtual] |
Reimplemented from ParametersDefinerForTP.
Definition at line 23 of file CosmicParametersDefinerForTP.cc.
References newFWLiteAna::found, edm::EventSetup::get(), edm::Event::getByLabel(), edm::HandleBase::isValid(), TrajectoryStateClosestToBeamLine::isValid(), FreeTrajectoryState::momentum(), AlCaHLTBitMon_ParallelJobs::p, PV3DBase< T, PVType, FrameType >::perp(), CosmicsPD_Skims::radius, L1Trigger_dataformats::reco, simHitsTPAssoc, SimHitTPAssociationProducer::simHitTPAssociationListGreater(), GeomDet::surface(), Surface::toGlobal(), patCandidatesForDimuonsSequences_cff::tracker, TrajectoryStateClosestToBeamLine::trackStateAtPCA(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
{ // to add a new implementation for cosmic. For the moment, it is just as for the base class: using namespace edm; using namespace std; using namespace reco; ESHandle<TrackerGeometry> tracker; iSetup.get<TrackerDigiGeometryRecord>().get(tracker); edm::ESHandle<MagneticField> theMF; iSetup.get<IdealMagneticFieldRecord>().get(theMF); edm::Handle<reco::BeamSpot> bs; iEvent.getByLabel(InputTag("offlineBeamSpot"),bs); // cout<<"TrackingParticle pdgId = "<<tpr->pdgId()<<endl; // cout<<"with tpr->vertex(): ("<<tpr->vertex().x()<<", "<<tpr->vertex().y()<<", "<<tpr->vertex().z()<<")"<<endl; // cout<<"with tpr->momentum(): ("<<tpr->momentum().x()<<", "<<tpr->momentum().y()<<", "<<tpr->momentum().z()<<")"<<endl; GlobalVector finalGV; GlobalPoint finalGP; double radius(9999); bool found(0); TrackingParticle::Vector momentum(0,0,0); if (simHitsTPAssoc.isValid()==0) { LogError("TrackAssociation") << "Invalid handle!"; return momentum; } std::pair<TrackingParticleRef, TrackPSimHitRef> clusterTPpairWithDummyTP(tpr,TrackPSimHitRef());//SimHit is dummy: for simHitTPAssociationListGreater // sorting only the cluster is needed auto range = std::equal_range(simHitsTPAssoc->begin(), simHitsTPAssoc->end(), clusterTPpairWithDummyTP, SimHitTPAssociationProducer::simHitTPAssociationListGreater); for(auto ip = range.first; ip != range.second; ++ip) { TrackPSimHitRef it = ip->second; const GeomDet* tmpDet = tracker->idToDet( DetId(it->detUnitId()) ) ; LocalVector lv = it->momentumAtEntry(); Local3DPoint lp = it->localPosition (); GlobalVector gv = tmpDet->surface().toGlobal( lv ); GlobalPoint gp = tmpDet->surface().toGlobal( lp ); if(gp.perp()<radius){ found=true; radius = gp.perp(); finalGV = gv; finalGP = gp; } } //cout<<"found = "<<found<<endl; // cout<<"Closest Hit Position: ("<<finalGP.x()<<", "<<finalGP.y()<<", "<<finalGP.z()<<")"<<endl; //cout<<"Momentum at Closest Hit to BL: ("<<finalGV.x()<<", "<<finalGV.y()<<", "<<finalGV.z()<<")"<<endl; if(found) { FreeTrajectoryState ftsAtProduction(finalGP,finalGV,TrackCharge(tpr->charge()),theMF.product()); TSCBLBuilderNoMaterial tscblBuilder; TrajectoryStateClosestToBeamLine tsAtClosestApproach = tscblBuilder(ftsAtProduction,*bs);//as in TrackProducerAlgorithm if(tsAtClosestApproach.isValid()){ GlobalVector p = tsAtClosestApproach.trackStateAtPCA().momentum(); momentum = TrackingParticle::Vector(p.x(), p.y(), p.z()); } return momentum; } return momentum; }
virtual TrackingParticle::Vector CosmicParametersDefinerForTP::momentum | ( | const edm::Event & | iEvent, |
const edm::EventSetup & | iSetup, | ||
const Charge | ch, | ||
const Point & | vertex, | ||
const LorentzVector & | lv | ||
) | const [inline, virtual] |
Reimplemented from ParametersDefinerForTP.
Definition at line 22 of file CosmicParametersDefinerForTP.h.
{ return TrackingParticle::Vector(); }
virtual TrackingParticle::Point CosmicParametersDefinerForTP::vertex | ( | const edm::Event & | iEvent, |
const edm::EventSetup & | iSetup, | ||
const Charge | ch, | ||
const Point & | vertex, | ||
const LorentzVector & | lv | ||
) | const [inline, virtual] |
Reimplemented from ParametersDefinerForTP.
Definition at line 27 of file CosmicParametersDefinerForTP.h.
{ return TrackingParticle::Point(); }
TrackingParticle::Point CosmicParametersDefinerForTP::vertex | ( | const edm::Event & | iEvent, |
const edm::EventSetup & | iSetup, | ||
const TrackingParticleRef | tpr | ||
) | const [virtual] |
Definition at line 89 of file CosmicParametersDefinerForTP.cc.
References newFWLiteAna::found, edm::EventSetup::get(), edm::Event::getByLabel(), edm::HandleBase::isValid(), TrajectoryStateClosestToBeamLine::isValid(), PV3DBase< T, PVType, FrameType >::perp(), FreeTrajectoryState::position(), CosmicsPD_Skims::radius, L1Trigger_dataformats::reco, simHitsTPAssoc, SimHitTPAssociationProducer::simHitTPAssociationListGreater(), GeomDet::surface(), Surface::toGlobal(), patCandidatesForDimuonsSequences_cff::tracker, TrajectoryStateClosestToBeamLine::trackStateAtPCA(), findQualityFiles::v, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
{ using namespace edm; using namespace std; using namespace reco; ESHandle<TrackerGeometry> tracker; iSetup.get<TrackerDigiGeometryRecord>().get(tracker); edm::ESHandle<MagneticField> theMF; iSetup.get<IdealMagneticFieldRecord>().get(theMF); edm::Handle<reco::BeamSpot> bs; iEvent.getByLabel(InputTag("offlineBeamSpot"),bs); GlobalVector finalGV; GlobalPoint finalGP; double radius(9999); bool found(0); TrackingParticle::Point vertex(0,0,0); if (simHitsTPAssoc.isValid()==0) { LogError("TrackAssociation") << "Invalid handle!"; return vertex; } std::pair<TrackingParticleRef, TrackPSimHitRef> clusterTPpairWithDummyTP(tpr,TrackPSimHitRef());//SimHit is dummy: for simHitTPAssociationListGreater // sorting only the cluster is needed auto range = std::equal_range(simHitsTPAssoc->begin(), simHitsTPAssoc->end(), clusterTPpairWithDummyTP, SimHitTPAssociationProducer::simHitTPAssociationListGreater); for(auto ip = range.first; ip != range.second; ++ip) { TrackPSimHitRef it = ip->second; const GeomDet* tmpDet = tracker->idToDet( DetId(it->detUnitId()) ) ; LocalVector lv = it->momentumAtEntry(); Local3DPoint lp = it->localPosition (); GlobalVector gv = tmpDet->surface().toGlobal( lv ); GlobalPoint gp = tmpDet->surface().toGlobal( lp ); if(gp.perp()<radius){ found=true; radius = gp.perp(); finalGV = gv; finalGP = gp; } } if(found) { FreeTrajectoryState ftsAtProduction(finalGP,finalGV,TrackCharge(tpr->charge()),theMF.product()); TSCBLBuilderNoMaterial tscblBuilder; TrajectoryStateClosestToBeamLine tsAtClosestApproach = tscblBuilder(ftsAtProduction,*bs);//as in TrackProducerAlgorithm if(tsAtClosestApproach.isValid()){ GlobalPoint v = tsAtClosestApproach.trackStateAtPCA().position(); vertex = TrackingParticle::Point(v.x()-bs->x0(),v.y()-bs->y0(),v.z()-bs->z0()); } return vertex; } return vertex; }
edm::Handle<SimHitTPAssociationProducer::SimHitTPAssociationList> CosmicParametersDefinerForTP::simHitsTPAssoc [mutable, private] |
Definition at line 37 of file CosmicParametersDefinerForTP.h.
Referenced by initEvent(), momentum(), and vertex().