CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
ConversionSeedFinder Class Referenceabstract

#include <ConversionSeedFinder.h>

Inheritance diagram for ConversionSeedFinder:
InOutConversionSeedFinder OutInConversionSeedFinder

Public Member Functions

void clear ()
 
 ConversionSeedFinder ()
 
 ConversionSeedFinder (const edm::ParameterSet &config)
 
const MeasurementTrackergetMeasurementTracker () const
 
std::vector< const DetLayer * >
const & 
layerList () const
 
virtual void makeSeeds (const edm::Handle< edm::View< reco::CaloCluster > > &allBc) const =0
 
TrajectorySeedCollectionseeds ()
 
virtual void setCandidate (float e, GlobalPoint pos) const
 
void setEvent (const edm::Event &e)
 
void setEventSetup (const edm::EventSetup &es)
 Initialize EventSetup objects at each event. More...
 
void setMeasurementTracker (const MeasurementTracker *tracker) const
 
virtual ~ConversionSeedFinder ()
 

Protected Member Functions

void findLayers () const
 
void findLayers (const FreeTrajectoryState &fts) const
 
void printLayer (int i) const
 
FreeTrajectoryState trackStateFromClusters (int aCharge, const GlobalPoint &gpOrigine, PropagationDirection dir, float scaleFactor) const
 

Protected Attributes

edm::ParameterSet conf_
 
PropagationDirection dir_
 
float theBCEnergy_
 
GlobalPoint theBCPosition_
 
reco::BeamSpot theBeamSpot_
 
edm::ESHandle
< GeometricSearchTracker
theGeomSearchTracker_
 
std::vector< const DetLayer * > theLayerList_
 
const MeasurementTrackertheMeasurementTracker_
 
edm::ESHandle< MagneticFieldtheMF_
 
const PropagatorthePropagatorAlongMomentum_
 
const PropagatorthePropagatorOppositeToMomentum_
 
reco::CaloClustertheSC_
 
float theSCenergy_
 
GlobalPoint theSCPosition_
 
TrajectorySeedCollection theSeeds_
 
const TrackingGeometrytheTrackerGeom_
 
KFUpdator theUpdator_
 

Detailed Description

Id:
ConversionSeedFinder.h,v 1.11 2008/11/19 16:47:44 nancy Exp
Date:
2008/11/19 16:47:44
Revision:
1.11
Author
Nancy Marinelli, U. of Notre Dame, US

Definition at line 50 of file ConversionSeedFinder.h.

Constructor & Destructor Documentation

ConversionSeedFinder::ConversionSeedFinder ( )
ConversionSeedFinder::ConversionSeedFinder ( const edm::ParameterSet config)

Definition at line 18 of file ConversionSeedFinder.cc.

References LogDebug.

18  :
19  conf_(config),
20  theUpdator_()
21 {
22 
23  LogDebug("ConversionSeedFinder") << " CTOR " << "\n";
24 
25 
26 }
#define LogDebug(id)
edm::ParameterSet conf_
virtual ConversionSeedFinder::~ConversionSeedFinder ( )
inlinevirtual

Definition at line 58 of file ConversionSeedFinder.h.

58 {}

Member Function Documentation

void ConversionSeedFinder::clear ( void  )
inline
void ConversionSeedFinder::findLayers ( ) const
protected

Definition at line 68 of file ConversionSeedFinder.cc.

References alongMomentum, DeDxDiscriminatorTools::charge(), reco::BeamSpot::position(), theBeamSpot_, and trackStateFromClusters().

Referenced by OutInConversionSeedFinder::makeSeeds(), and InOutConversionSeedFinder::makeSeeds().

68  {
69 
70 
71  int charge;
72  //List the DetLayers crossed by a straight line from the centre of the
73  //detector to the supercluster position
74  // GlobalPoint vertex(0.,0.,0.);
76  charge=-1;
77  FreeTrajectoryState theStraightLineFTS = trackStateFromClusters(charge, vertex, alongMomentum, 1.);
78 
79  findLayers( theStraightLineFTS );
80 
81 
82 }
double charge(const std::vector< uint8_t > &Ampls)
FreeTrajectoryState trackStateFromClusters(int aCharge, const GlobalPoint &gpOrigine, PropagationDirection dir, float scaleFactor) const
const Point & position() const
position
Definition: BeamSpot.h:63
void ConversionSeedFinder::findLayers ( const FreeTrajectoryState fts) const
protected

Definition at line 127 of file ConversionSeedFinder.cc.

References LayerCollector::allLayers(), alongMomentum, getMeasurementTracker(), i, printLayer(), theLayerList_, and theMF_.

127  {
128 
129 
130 
131  theLayerList_.clear();
132 
133 
135 
136  StartingLayerFinder starter(&prop, this->getMeasurementTracker() );
137 
138  LayerCollector collector(&prop, &starter, 5., 5.);
139 
140  theLayerList_ = collector.allLayers(traj);
141 
142 
143  for(unsigned int i = 0; i < theLayerList_.size(); ++i) {
144  printLayer(i);
145  }
146 
147 
148 }
int i
Definition: DBlmapReader.cc:9
const MeasurementTracker * getMeasurementTracker() const
void printLayer(int i) const
std::vector< const DetLayer * > theLayerList_
edm::ESHandle< MagneticField > theMF_
const MeasurementTracker* ConversionSeedFinder::getMeasurementTracker ( ) const
inline
std::vector<const DetLayer*> const& ConversionSeedFinder::layerList ( ) const
inline
virtual void ConversionSeedFinder::makeSeeds ( const edm::Handle< edm::View< reco::CaloCluster > > &  allBc) const
pure virtual
void ConversionSeedFinder::printLayer ( int  i) const
protected

Definition at line 151 of file ConversionSeedFinder.cc.

References GeomDetEnumerators::barrel, i, DetLayer::location(), and theLayerList_.

Referenced by InOutConversionSeedFinder::completeSeed(), InOutConversionSeedFinder::fillClusterSeeds(), and findLayers().

151  {
152  const DetLayer * layer = theLayerList_[i];
153  if (layer->location() == GeomDetEnumerators::barrel ) {
154  // const BarrelDetLayer * barrelLayer = dynamic_cast<const BarrelDetLayer*>(layer);
155  //float r = barrelLayer->specificSurface().radius();
156  // std::cout << " barrel layer radius " << r << " " << barrelLayer->specificSurface().bounds().length()/2. << "\n";
157 
158  } else {
159  // const ForwardDetLayer * forwardLayer = dynamic_cast<const ForwardDetLayer*>(layer);
160  // float z = fabs(forwardLayer->surface().position().z());
161  // std::cout << " forward layer position " << z << " " << forwardLayer->specificSurface().innerRadius() << " " << forwardLayer->specificSurface().outerRadius() << "\n";
162  }
163 }
int i
Definition: DBlmapReader.cc:9
virtual Location location() const =0
Which part of the detector (barrel, endcap)
std::vector< const DetLayer * > theLayerList_
TrajectorySeedCollection& ConversionSeedFinder::seeds ( )
inline

Definition at line 65 of file ConversionSeedFinder.h.

References theSeeds_.

Referenced by ConversionTrackCandidateProducer::buildCollections().

65 { return theSeeds_;}
TrajectorySeedCollection theSeeds_
virtual void ConversionSeedFinder::setCandidate ( float  e,
GlobalPoint  pos 
) const
inlinevirtual
void ConversionSeedFinder::setEvent ( const edm::Event e)

Definition at line 30 of file ConversionSeedFinder.cc.

References MeasurementTracker::geomTracker(), edm::Event::getByLabel(), getMeasurementTracker(), theBeamSpot_, theMeasurementTracker_, theTrackerGeom_, and MeasurementTracker::update().

Referenced by ConversionTrackCandidateProducer::produce().

30  {
31 
34 
35  //get the BeamSpot
36  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
37  evt.getByLabel("offlineBeamSpot",recoBeamSpotHandle);
38  theBeamSpot_ = *recoBeamSpotHandle;
39 
40 
41 
42 }
const MeasurementTracker * getMeasurementTracker() const
const MeasurementTracker * theMeasurementTracker_
virtual void update(const edm::Event &) const
const TrackingGeometry * geomTracker() const
const TrackingGeometry * theTrackerGeom_
void ConversionSeedFinder::setEventSetup ( const edm::EventSetup es)

Initialize EventSetup objects at each event.

Definition at line 44 of file ConversionSeedFinder.cc.

References edm::EventSetup::get(), edm::ESHandle< class >::product(), theGeomSearchTracker_, theMeasurementTracker_, theMF_, thePropagatorAlongMomentum_, and thePropagatorOppositeToMomentum_.

Referenced by ConversionTrackCandidateProducer::setEventSetup().

44  {
46  es.get<IdealMagneticFieldRecord>().get( theMF_ );
47 
48 
49  edm::ESHandle<MeasurementTracker> measurementTrackerHandle;
50  es.get<CkfComponentsRecord>().get(measurementTrackerHandle);
51  theMeasurementTracker_ = measurementTrackerHandle.product();
52 
53  edm::ESHandle<Propagator> propagatorAlongMomHandle;
54  es.get<TrackingComponentsRecord>().get("alongMomElePropagator",propagatorAlongMomHandle);
55  thePropagatorAlongMomentum_ = &(*propagatorAlongMomHandle);
56 
57 
58  edm::ESHandle<Propagator> propagatorOppoToMomHandle;
59  es.get<TrackingComponentsRecord>().get("oppositeToMomElePropagator",propagatorOppoToMomHandle);
60  thePropagatorOppositeToMomentum_ = &(*propagatorOppoToMomHandle);
61 
62 
63 
64 
65 }
const Propagator * thePropagatorAlongMomentum_
const MeasurementTracker * theMeasurementTracker_
const Propagator * thePropagatorOppositeToMomentum_
edm::ESHandle< GeometricSearchTracker > theGeomSearchTracker_
edm::ESHandle< MagneticField > theMF_
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
void ConversionSeedFinder::setMeasurementTracker ( const MeasurementTracker tracker) const
inline

Definition at line 70 of file ConversionSeedFinder.h.

70 { ; }
FreeTrajectoryState ConversionSeedFinder::trackStateFromClusters ( int  aCharge,
const GlobalPoint gpOrigine,
PropagationDirection  dir,
float  scaleFactor 
) const
protected

Definition at line 84 of file ConversionSeedFinder.cc.

References alongMomentum, m, PV3DBase< T, PVType, FrameType >::perp(), mathSSE::sqrt(), theMF_, theSCenergy_, theSCPosition_, PV3DBase< T, PVType, FrameType >::theta(), Vector3DBase< T, FrameTag >::unit(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by findLayers(), and OutInConversionSeedFinder::startSeed().

85  {
86 
87 
88 
89  double caloEnergy = theSCenergy_ * scaleFactor ;
90 
91  GlobalVector radiusCalo = theSCPosition_ - theOrigin ;
92 
93  GlobalVector momentumWithoutCurvature = radiusCalo.unit() * caloEnergy;
94 
95 
97  if(dir == alongMomentum) {
98  gtp = GlobalTrajectoryParameters(theOrigin, momentumWithoutCurvature, charge, &(*theMF_) ) ;
99  } else {
100  gtp = GlobalTrajectoryParameters(theSCPosition_, momentumWithoutCurvature, charge, &(*theMF_) ) ;
101  }
102 
103 
104 
105 
106  // now create error matrix
107  // dpos = 4mm/sqrt(E), dtheta = move vertex by 1sigma
108  float dpos = 0.4/sqrt(theSCenergy_);
109  dpos *= 2.;
110  float dphi = dpos/theSCPosition_.perp();
111  // float dp = 0.03 * sqrt(theCaloEnergy);
112  // float dp = theCaloEnergy / sqrt(12.); // for fun
113  float theta1 = theSCPosition_.theta();
114  float theta2 = atan2(double(theSCPosition_.perp()), theSCPosition_.z()-5.5);
115  float dtheta = theta1 - theta2;
116  AlgebraicSymMatrix m(5,1) ;
117  m[0][0] = 1.; m[1][1] = dpos*dpos ; m[2][2] = dpos*dpos ;
118  m[3][3] = dphi*dphi ; m[4][4] = dtheta * dtheta ;
119 
121 
122  return fts ;
123 
124 
125 }
T perp() const
Definition: PV3DBase.h:66
double charge(const std::vector< uint8_t > &Ampls)
Geom::Theta< T > theta() const
Definition: PV3DBase.h:69
T sqrt(T t)
Definition: SSEVec.h:28
T z() const
Definition: PV3DBase.h:58
Vector3DBase unit() const
Definition: Vector3DBase.h:57
edm::ESHandle< MagneticField > theMF_
CLHEP::HepSymMatrix AlgebraicSymMatrix
dbl *** dir
Definition: mlp_gen.cc:35

Member Data Documentation

edm::ParameterSet ConversionSeedFinder::conf_
protected

Definition at line 84 of file ConversionSeedFinder.h.

PropagationDirection ConversionSeedFinder::dir_
protected

Definition at line 110 of file ConversionSeedFinder.h.

float ConversionSeedFinder::theBCEnergy_
mutableprotected
GlobalPoint ConversionSeedFinder::theBCPosition_
mutableprotected
reco::BeamSpot ConversionSeedFinder::theBeamSpot_
protected
edm::ESHandle<GeometricSearchTracker> ConversionSeedFinder::theGeomSearchTracker_
protected

Definition at line 106 of file ConversionSeedFinder.h.

Referenced by setEventSetup().

std::vector<const DetLayer *> ConversionSeedFinder::theLayerList_
mutableprotected
const MeasurementTracker* ConversionSeedFinder::theMeasurementTracker_
protected

Definition at line 101 of file ConversionSeedFinder.h.

Referenced by getMeasurementTracker(), setEvent(), and setEventSetup().

edm::ESHandle<MagneticField> ConversionSeedFinder::theMF_
protected
const Propagator* ConversionSeedFinder::thePropagatorAlongMomentum_
protected
const Propagator* ConversionSeedFinder::thePropagatorOppositeToMomentum_
protected
reco::CaloCluster* ConversionSeedFinder::theSC_
mutableprotected

Definition at line 111 of file ConversionSeedFinder.h.

float ConversionSeedFinder::theSCenergy_
mutableprotected
GlobalPoint ConversionSeedFinder::theSCPosition_
mutableprotected
TrajectorySeedCollection ConversionSeedFinder::theSeeds_
mutableprotected
const TrackingGeometry* ConversionSeedFinder::theTrackerGeom_
protected
KFUpdator ConversionSeedFinder::theUpdator_
protected