|
||||
File indexing completed on 2024-04-06 12:26:07
0001 #ifndef RecoLocalMuon_DTParametrizedDriftAlgo_H 0002 #define RecoLocalMuon_DTParametrizedDriftAlgo_H 0003 0004 /** \class DTParametrizedDriftAlgo 0005 * Concrete implementation of DTRecHitBaseAlgo. 0006 * Compute drift distance using the CIEMAT (by P.Garcia Abia and J. Puerta) 0007 * parametrization of the cell behavior obtained with GARFIELD 0008 * 0009 * \author G. Cerminara - INFN Torino 0010 */ 0011 0012 #include "RecoLocalMuon/DTRecHit/interface/DTRecHitBaseAlgo.h" 0013 #include "FWCore/Utilities/interface/ESGetToken.h" 0014 0015 class MagneticField; 0016 class IdealMagneticFieldRecord; 0017 0018 class DTParametrizedDriftAlgo : public DTRecHitBaseAlgo { 0019 public: 0020 /// Constructor 0021 DTParametrizedDriftAlgo(const edm::ParameterSet& config, edm::ConsumesCollector); 0022 0023 /// Destructor 0024 ~DTParametrizedDriftAlgo() override; 0025 0026 // Operations 0027 0028 /// Pass the Event Setup to the algo at each event 0029 void setES(const edm::EventSetup& setup) override; 0030 0031 /// First step in computation of Left/Right hits from a Digi. 0032 /// The results are the local position (in DTLayer frame) of the 0033 /// Left and Right hit, and the error (which is common). 0034 /// The center of the wire is assumed as hit coordinate along y. 0035 /// Returns false on failure. 0036 bool compute(const DTLayer* layer, 0037 const DTDigi& digi, 0038 LocalPoint& leftPoint, 0039 LocalPoint& rightPoint, 0040 LocalError& error) const override; 0041 0042 /// Second step. 0043 /// The impact angle is given as input, and it's used to improve the hit 0044 /// position (and relative error). The angle is defined in radians, with 0045 /// respect to the perpendicular to the layer plane. Given the local direction, 0046 /// angle=atan(dir.x()/-dir.z()) . This can be used when a SL segment is 0047 /// built, so the impact angle is known but the position along wire is not. 0048 /// NOTE: Only position and error of the new hit are modified 0049 bool compute(const DTLayer* layer, 0050 const DTRecHit1D& recHit1D, 0051 const float& angle, 0052 DTRecHit1D& newHit1D) const override; 0053 0054 /// Third (and final) step in hits position computation. 0055 /// In addition the the angle, also the global position of the hit is given 0056 /// as input. This allows to get the magnetic field at the hit position (and 0057 /// not only that at the center of the wire). Also the position along the 0058 /// wire is available and can be used to correct the drift time for particle 0059 /// TOF and propagation of signal along the wire. 0060 /// NOTE: Only position and error of the new hit are modified 0061 bool compute(const DTLayer* layer, 0062 const DTRecHit1D& recHit1D, 0063 const float& angle, 0064 const GlobalPoint& globPos, 0065 DTRecHit1D& newHit1D) const override; 0066 0067 private: 0068 // Interpolate parametrization function 0069 const bool interpolate; 0070 0071 // Times below MinTime (ns) are considered as coming from previous BXs. 0072 const float minTime; 0073 0074 // Times above MaxTime (ns) are considered as coming from following BXs 0075 const float maxTime; 0076 0077 // Do the actual work. 0078 virtual bool compute(const DTLayer* layer, 0079 const DTWireId& wireId, 0080 const float digiTime, 0081 const float& angle, 0082 const GlobalPoint& globPos, 0083 LocalPoint& leftPoint, 0084 LocalPoint& rightPoint, 0085 LocalError& error, 0086 int step) const; 0087 0088 // Interface to the method which does the actual work suited for 2nd and 3rd steps 0089 virtual bool compute(const DTLayer* layer, 0090 const DTWireId& wireId, 0091 const float digiTime, 0092 const float& angle, 0093 const GlobalPoint& globPos, 0094 DTRecHit1D& newHit1D, 0095 int step) const; 0096 0097 // Switch on/off the verbosity 0098 const bool debug; 0099 0100 // Pointer to the magnetic field (read from ES once per event) 0101 const MagneticField* magField; 0102 const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magFieldToken_; 0103 }; 0104 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |