CMS 3D CMS Logo

TransientTrackingRecHit.h

Go to the documentation of this file.
00001 #ifndef TransientTrackingRecHit_H
00002 #define TransientTrackingRecHit_H
00003 
00004 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
00005 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
00006 #include <TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h>
00007 #include "DataFormats/GeometrySurface/interface/Surface.h" 
00008 //RC #include "DataFormats/Common/interface/OwnVector.h"
00009 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
00010 
00011 class GeomDetUnit;
00012 
00013 class TransientTrackingRecHit : public TrackingRecHit, 
00014                                 public ReferenceCounted {
00015 public:
00016 
00017   //RC typedef edm::OwnVector<const TransientTrackingRecHit>        RecHitContainer;
00018 
00019   typedef ReferenceCountingPointer< TransientTrackingRecHit>        RecHitPointer;
00020   typedef ConstReferenceCountingPointer< TransientTrackingRecHit>   ConstRecHitPointer;
00021   typedef std::vector<ConstRecHitPointer>                           RecHitContainer;
00022   typedef std::vector<ConstRecHitPointer>                           ConstRecHitContainer;
00023 
00024   explicit TransientTrackingRecHit(const GeomDet * geom=0, float weight=1., float annealing=1.) : 
00025     TrackingRecHit(geom ? geom->geographicalId().rawId() : 0), 
00026     geom_(geom), weight_(weight), annealing_(annealing),
00027     globalPosition_(0,0,0),hasGlobalPosition_(false),
00028     globalError_(GlobalError::NullMatrix()),errorR_(0),errorZ_(0),errorRPhi_(0),hasGlobalError_(false){}
00029 
00030   explicit TransientTrackingRecHit(const GeomDet * geom, DetId id, Type type=valid, float weight=1., float annealing=1. ) : 
00031     TrackingRecHit(id, type), 
00032     geom_(geom), weight_(weight), annealing_(annealing),
00033     globalPosition_(0,0,0),hasGlobalPosition_(false),
00034     globalError_(GlobalError::NullMatrix()),errorR_(0),errorZ_(0),errorRPhi_(0),hasGlobalError_(false){}
00035 
00036   explicit TransientTrackingRecHit(const GeomDet * geom, TrackingRecHit::id_type id, Type type=valid, float weight=1., float annealing=1. ) : 
00037     TrackingRecHit(id, type),
00038     geom_(geom),  weight_(weight), annealing_(annealing),
00039     globalPosition_(0,0,0),hasGlobalPosition_(false),
00040     globalError_(GlobalError::NullMatrix()),errorR_(0),errorZ_(0),errorRPhi_(0),hasGlobalError_(false){}
00041   
00042   explicit TransientTrackingRecHit(const GeomDet * geom, TrackingRecHit const & rh, float weight=1., float annealing=1. ) : 
00043     TrackingRecHit(rh.geographicalId(), rh.type()),
00044     geom_(geom), weight_(weight), annealing_(annealing),
00045     globalPosition_(0,0,0),hasGlobalPosition_(false),
00046     globalError_(GlobalError::NullMatrix()),errorR_(0),errorZ_(0),errorRPhi_(0),hasGlobalError_(false){}
00047 
00048 
00049 
00050   // Extension of the TrackingRecHit interface
00051 
00053   const GeomDet * det() const {return geom_;}
00054   virtual const Surface * surface() const {return &(geom_->surface());}
00055 
00059   virtual const GeomDetUnit * detUnit() const;
00060 
00061   virtual GlobalPoint globalPosition() const ;
00062   virtual GlobalError globalPositionError() const ;
00063 
00064   float errorGlobalR() const;
00065   float errorGlobalZ() const;
00066   float errorGlobalRPhi() const;
00067 
00072   virtual RecHitPointer clone (const TrajectoryStateOnSurface& ts) const;
00073 
00078   virtual bool canImproveWithTrack() const {return false;}
00079 
00080   virtual const TrackingRecHit * hit() const = 0;
00081   
00083   virtual ConstRecHitContainer transientHits() const;
00084 
00086   void setWeight(float weight){weight_ = weight;}
00087 
00088   float weight() const {return weight_;}
00089   
00092 
00093   void setAnnealingFactor(float annealing) {annealing_ = annealing;} 
00094 
00095   float getAnnealingFactor() const {return annealing_;} 
00096 
00097 private:
00098   void setPositionErrors() const;
00099   
00100   const GeomDet * geom_ ;
00101 
00102   float weight_;
00103   float annealing_;
00104 
00105   // caching of some variable for fast access
00106   mutable GlobalPoint globalPosition_;  
00107   mutable bool hasGlobalPosition_;
00108   mutable GlobalError globalError_;
00109   mutable float errorR_,errorZ_,errorRPhi_;
00110   mutable bool hasGlobalError_;
00111   
00112   // hide the clone method for ReferenceCounted. Warning: this method is still 
00113   // accessible via the bas class TrackingRecHit interface!
00114   virtual TransientTrackingRecHit * clone() const = 0;
00115 
00116 };
00117 
00118 #endif
00119 

Generated on Tue Jun 9 17:48:40 2009 for CMSSW by  doxygen 1.5.4