CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Attributes
TrackInfoProducerAlgorithm Class Reference

#include <TrackInfoProducerAlgorithm.h>

Public Types

typedef
TransientTrackingRecHit::ConstRecHitPointer 
ConstRecHitPointer
 

Public Member Functions

LocalPoint project (const GeomDet *det, const GeomDet *projdet, LocalPoint position, LocalVector trackdirection) const
 
void run (const edm::Ref< std::vector< Trajectory > > traj_iterator, reco::TrackRef track, reco::TrackInfo &output, const TrackerGeometry *tracker)
 
 TrackInfoProducerAlgorithm (const edm::ParameterSet &conf)
 
 ~TrackInfoProducerAlgorithm ()
 

Private Attributes

std::string backwardPredictedStateTag_
 
std::string combinedStateTag_
 
edm::ParameterSet conf_
 
std::string forwardPredictedStateTag_
 
std::string updatedStateTag_
 

Detailed Description

Definition at line 20 of file TrackInfoProducerAlgorithm.h.

Member Typedef Documentation

Definition at line 23 of file TrackInfoProducerAlgorithm.h.

Constructor & Destructor Documentation

TrackInfoProducerAlgorithm::TrackInfoProducerAlgorithm ( const edm::ParameterSet conf)
inline

Definition at line 25 of file TrackInfoProducerAlgorithm.h.

25  :
26  conf_(conf),
27  forwardPredictedStateTag_(conf.getParameter<std::string>( "forwardPredictedState" )),
28  backwardPredictedStateTag_(conf.getParameter<std::string>( "backwardPredictedState" )),
29  updatedStateTag_(conf.getParameter<std::string>( "updatedState" )),
30  combinedStateTag_(conf.getParameter<std::string>( "combinedState" )) { }
T getParameter(std::string const &) const
TrackInfoProducerAlgorithm::~TrackInfoProducerAlgorithm ( )
inline

Definition at line 32 of file TrackInfoProducerAlgorithm.h.

32 {}

Member Function Documentation

LocalPoint TrackInfoProducerAlgorithm::project ( const GeomDet det,
const GeomDet projdet,
LocalPoint  position,
LocalVector  trackdirection 
) const

Definition at line 171 of file TrackInfoProducerAlgorithm.cc.

References GeomDet::surface(), toLocal(), and PV3DBase< T, PVType, FrameType >::z().

172 {
173 
174  GlobalPoint globalpoint=(det->surface()).toGlobal(position);
175 
176  // position of the initial and final point of the strip in glued local coordinates
177  LocalPoint projposition=(projdet->surface()).toLocal(globalpoint);
178 
179  //correct the position with the track direction
180 
181  float scale=-projposition.z()/trackdirection.z();
182 
183  projposition+= scale*trackdirection;
184 
185  return projposition;
186 }
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
T z() const
Definition: PV3DBase.h:58
virtual const BoundPlane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
void TrackInfoProducerAlgorithm::run ( const edm::Ref< std::vector< Trajectory > >  traj_iterator,
reco::TrackRef  track,
reco::TrackInfo output,
const TrackerGeometry tracker 
)

Definition at line 19 of file TrackInfoProducerAlgorithm.cc.

References reco::BwPredicted, TrajectoryStateCombiner::combine(), reco::Combined, cond::rpcobgas::detid, reco::FwPredicted, TrackingRecHit::geographicalId(), i, TrackerGeometry::idToDet(), j, mag(), reco::Matched, LocalTrajectoryParameters::momentum(), GluedGeomDet::monoDet(), ProjectedSiStripRecHit2D::originalHit(), PTrajectoryStateOnDet::parameters(), TrajectoryStateTransform::persistentState(), pos, LocalTrajectoryParameters::position(), CrabWatch::project, reco::Projected, DetId::rawId(), reco::Single, GluedGeomDet::stereoDet(), GeomDet::toGlobal(), GeomDet::toLocal(), and reco::Updated.

Referenced by Types.LuminosityBlockID::cppID(), and TrackInfoProducer::produce().

21 {
22 
23  std::vector<TrajectoryMeasurement> measurements =traj_iterator->measurements();
24 
25  std::vector<TrajectoryMeasurement>::iterator traj_mes_iterator;
26  //edm::LogInfo("TrackInfoProducer") << "Number of Measurements: "<<measurements.size();
28  int nhit=0;
29  for(traj_mes_iterator=measurements.begin();traj_mes_iterator!=measurements.end();traj_mes_iterator++){//loop on measurements
30 
31  TrajectoryStateOnSurface fwdtsos=traj_mes_iterator->forwardPredictedState();
32  TrajectoryStateOnSurface bwdtsos=traj_mes_iterator->backwardPredictedState();
33  TrajectoryStateOnSurface updatedtsos=traj_mes_iterator->updatedState();
34  TrajectoryStateCombiner statecombiner;
35  TrajectoryStateOnSurface combinedtsos=statecombiner.combine(fwdtsos, bwdtsos);
36 
37  ConstRecHitPointer ttrh=traj_mes_iterator->recHit();
39  if (ttrh->isValid())pos=ttrh->hit()->localPosition() ;
40  nhit++;
41  unsigned int detid=ttrh->hit()->geographicalId().rawId();
42 
44  TrackingRecHitRef thehitref;
45  int i=0,j=0;
46 
47  for (thehit=track->recHitsBegin();thehit!=track->recHitsEnd();thehit++){
48  i++;
49  LocalPoint hitpos;
50  if ((*thehit)->isValid())hitpos=(*thehit)->localPosition();
51  if((*thehit)->geographicalId().rawId()==detid&&
52  (hitpos - pos).mag() < 1e-4)
53  {
54  thehitref=(*thehit);
55  j++;
56  break;
57  }
58  }
59  TrajectoryStateTransform tsostransform;
60  PTrajectoryStateOnDet* fwdptsod=tsostransform.persistentState( fwdtsos,detid);
61  PTrajectoryStateOnDet* bwdptsod=tsostransform.persistentState( bwdtsos,detid);
62  PTrajectoryStateOnDet* updatedptsod=tsostransform.persistentState( updatedtsos,detid);
63  PTrajectoryStateOnDet* combinedptsod=tsostransform.persistentState( combinedtsos,detid);
64 
65 
66  const ProjectedSiStripRecHit2D* phit=dynamic_cast<const ProjectedSiStripRecHit2D*>( &*(thehitref));
67  const SiStripMatchedRecHit2D* matchedhit=dynamic_cast<const SiStripMatchedRecHit2D*>( &*(thehitref));
68 
70  LocalVector monofwd, stereofwd;
71  LocalVector monobwd, stereobwd;
72  LocalVector monoco, stereoco;
73  LocalVector monoup, stereoup;
74 
75  LocalPoint pmonofwd, pstereofwd;
76  LocalPoint pmonobwd, pstereobwd;
77  LocalPoint pmonoco, pstereoco;
78  LocalPoint pmonoup, pstereoup;
79  if(matchedhit){
80  type=Matched;
81  GluedGeomDet * gdet=(GluedGeomDet *)tracker->idToDet(matchedhit->geographicalId());
82 
83  GlobalVector gtrkdirfwd=gdet->toGlobal(fwdptsod->parameters().momentum());
84  GlobalVector gtrkdirbwd=gdet->toGlobal(bwdptsod->parameters().momentum());
85  GlobalVector gtrkdirup=gdet->toGlobal(updatedptsod->parameters().momentum());
86  GlobalVector gtrkdirco=gdet->toGlobal(combinedptsod->parameters().momentum());
87 
88 
89 
90  const GeomDetUnit * monodet=gdet->monoDet();
91 
92  monofwd=monodet->toLocal(gtrkdirfwd);
93  monobwd=monodet->toLocal(gtrkdirbwd);
94  monoup=monodet->toLocal(gtrkdirup);
95  monoco=monodet->toLocal(gtrkdirco);
96 
97  pmonofwd=project(gdet,monodet,fwdptsod->parameters().position(),monofwd);
98  pmonobwd=project(gdet,monodet,bwdptsod->parameters().position(),monobwd);
99  pmonoup=project(gdet,monodet,updatedptsod->parameters().position(),monoup);
100  pmonoco=project(gdet,monodet,combinedptsod->parameters().position(),monoco);
101 
102 
103  const GeomDetUnit * stereodet=gdet->stereoDet();
104 
105  stereofwd=stereodet->toLocal(gtrkdirfwd);
106  stereobwd=stereodet->toLocal(gtrkdirbwd);
107  stereoup=stereodet->toLocal(gtrkdirup);
108  stereoco=stereodet->toLocal(gtrkdirco);
109 
110  pstereofwd=project(gdet,stereodet,fwdptsod->parameters().position(),stereofwd);
111  pstereobwd=project(gdet,stereodet,bwdptsod->parameters().position(),stereobwd);
112  pstereoup=project(gdet,stereodet,updatedptsod->parameters().position(),stereoup);
113  pstereoco=project(gdet,stereodet,combinedptsod->parameters().position(),stereoco);
114 
115 
116  }
117  else if(phit){
118  type=Projected;
119  GluedGeomDet * gdet=(GluedGeomDet *)tracker->idToDet(phit->geographicalId());
120 
121  GlobalVector gtrkdirfwd=gdet->toGlobal(fwdptsod->parameters().momentum());
122  GlobalVector gtrkdirbwd=gdet->toGlobal(bwdptsod->parameters().momentum());
123  GlobalVector gtrkdirup=gdet->toGlobal(updatedptsod->parameters().momentum());
124  GlobalVector gtrkdirco=gdet->toGlobal(combinedptsod->parameters().momentum());
125  const SiStripRecHit2D& originalhit=phit->originalHit();
126  const GeomDetUnit * det;
127  if(!StripSubdetector(originalhit.geographicalId().rawId()).stereo()){
128  det=gdet->monoDet();
129  monofwd= det->toLocal(gtrkdirfwd);
130  monobwd= det->toLocal(gtrkdirbwd);
131  monoup= det->toLocal(gtrkdirup);
132  monoco= det->toLocal(gtrkdirco);
133  pmonofwd=project(gdet,det,fwdptsod->parameters().position(),monofwd);
134  pmonobwd=project(gdet,det,bwdptsod->parameters().position(),monobwd);
135  pmonoup=project(gdet,det,updatedptsod->parameters().position(),monoup);
136  pmonoco=project(gdet,det,combinedptsod->parameters().position(),monoco);
137  }
138  else{
139  det=gdet->stereoDet();
140  stereofwd= det->toLocal(gtrkdirfwd);
141  stereobwd= det->toLocal(gtrkdirbwd);
142  stereoup= det->toLocal(gtrkdirup);
143  stereoco= det->toLocal(gtrkdirco);
144  pstereofwd=project(gdet,det,fwdptsod->parameters().position(),stereofwd);
145  pstereobwd=project(gdet,det,bwdptsod->parameters().position(),stereobwd);
146  pstereoup=project(gdet,det,updatedptsod->parameters().position(),stereoup);
147  pstereoco=project(gdet,det,combinedptsod->parameters().position(),stereoco);
148  }
149  }
151  if(forwardPredictedStateTag_!="") states.insert(std::make_pair(FwPredicted, TrackingStateInfo(std::make_pair(monofwd,stereofwd), std::make_pair(pmonofwd,pstereofwd), *fwdptsod)));
152  if(backwardPredictedStateTag_!="")states.insert(std::make_pair(BwPredicted, TrackingStateInfo(std::make_pair(monobwd,stereobwd), std::make_pair(pmonobwd,pstereobwd), *bwdptsod)));
153  if(updatedStateTag_!="")states.insert(std::make_pair(Updated, TrackingStateInfo(std::make_pair(monoup,stereoup), std::make_pair(pmonoup,pstereoup), *updatedptsod)));
154  if(combinedStateTag_!="")states.insert(std::make_pair(Combined, TrackingStateInfo(std::make_pair(monoco,stereoco), std::make_pair(pmonoco,pstereoco), *combinedptsod)));
155 
156  TrackingRecHitInfo tkRecHitInfo(type, states);
157 
158 
159 
160  if(j!=0){
161  trajinfo.insert(std::make_pair(thehitref,tkRecHitInfo));
162  }
163  // else edm::LogInfo("TrackInfoProducer") << "RecHit not associated ";
164  }
165  //edm::LogInfo("TrackInfoProducer") << "Found "<<nhit<< " hits";
166  //if(fwdtrajinfo.size()!=nhit) edm::LogInfo("TrackInfoProducer") << "Number of trackinfos "<<fwdtrajinfo.size()<< " doesn't match!";
167  output=TrackInfo((traj_iterator->seed()),trajinfo);
168 
169 }
type
Definition: HCALResponse.h:22
int i
Definition: DBlmapReader.cc:9
const GeomDetUnit * monoDet() const
Definition: GluedGeomDet.h:20
TSOS combine(const TSOS &pTsos1, const TSOS &pTsos2) const
LocalPoint position() const
Local x and y position coordinates.
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:64
uint32_t rawId() const
get the raw id
Definition: DetId.h:45
std::map< StateType, TrackingStateInfo > TrackingStates
int j
Definition: DBlmapReader.cc:9
PTrajectoryStateOnDet * persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid) const
LocalVector momentum() const
Momentum vector in the local frame.
virtual const GeomDet * idToDet(DetId) const
DetId geographicalId() const
LocalPoint project(const GeomDet *det, const GeomDet *projdet, LocalPoint position, LocalVector trackdirection) const
const SiStripRecHit2D & originalHit() const
const GeomDetUnit * stereoDet() const
Definition: GluedGeomDet.h:21
const LocalTrajectoryParameters & parameters() const
std::map< TrackingRecHitRef, TrackingRecHitInfo > TrajectoryInfo
default constructor
Definition: TrackInfo.h:27

Member Data Documentation

std::string TrackInfoProducerAlgorithm::backwardPredictedStateTag_
private

Definition at line 40 of file TrackInfoProducerAlgorithm.h.

std::string TrackInfoProducerAlgorithm::combinedStateTag_
private

Definition at line 40 of file TrackInfoProducerAlgorithm.h.

edm::ParameterSet TrackInfoProducerAlgorithm::conf_
private

Definition at line 39 of file TrackInfoProducerAlgorithm.h.

std::string TrackInfoProducerAlgorithm::forwardPredictedStateTag_
private

Definition at line 40 of file TrackInfoProducerAlgorithm.h.

std::string TrackInfoProducerAlgorithm::updatedStateTag_
private

Definition at line 40 of file TrackInfoProducerAlgorithm.h.