20 fixedDrift(config.getParameter<double>(
"fixedDrift")),
22 minTime(config.getParameter<double>(
"minTime")),
23 maxTime(config.getParameter<double>(
"maxTime")),
24 debug(config.getUntrackedParameter<
bool>(
"debug"))
48 digi != digiRange.second;
51 DTWireId wireId(layerId, (*digi).wire());
53 bool isDouble =
false;
55 doubleWireCheck != result.
end();
57 if( wireId == (*doubleWireCheck).wireId()) {
64 if (isDouble)
continue;
69 bool OK =
compute(layer, *digi, lpoint, rpoint, tmpErr);
104 return compute(layer, wireId, digi.
time(), globWirePos, leftPoint, rightPoint,
error, 1);
134 const float digiTime,
147 if (digiTime < minTime || digiTime >
maxTime) {
148 if (
debug)
cout <<
"[DTNoDriftAlgo]*** Drift time out of window for in-time hits " 176 cout <<
"[DTNoDriftAlgo] Compute drift distance, for digi at wire: " << wireId << endl
177 <<
" Step: " << step << endl
178 <<
" Digi time: " << digiTime << endl
180 <<
" Fixed Drift distance: " << drift << endl
181 <<
" Hit Resolution: " << hitResolution << endl
182 <<
" Left point: " << leftPoint << endl
183 <<
" Right point: " << rightPoint << endl
184 <<
" Error: " << error << endl;
197 const float digiTime,
205 if(
compute(layer, wireId, digiTime, globPos, leftPoint, rightPoint, error, step)) {
207 switch(newHit1D.
lrSide()) {
218 throw cms::Exception(
"InvalidDTCellSide") <<
"[DTNoDriftAlgo] Compute at Step " 219 << step <<
", Hit side " 221 <<
" is invalid!" << endl;
void setES(const edm::EventSetup &setup) override
Pass the Event Setup to the algo at each event.
LocalPoint localPosition() const override
Return the 3-dimensional local position.
float wirePosition(int wireNumber) const
Returns the x position in the layer of a given wire number.
Point3DBase< Scalar, LocalTag > LocalPoint
const float hitResolution
edm::OwnVector< DTRecHit1DPair > reconstruct(const DTLayer *layer, const DTLayerId &layerId, const DTDigiCollection::Range &digiRange) override
LocalError localPositionError() const override
Return the 3-dimensional error on the local position.
DTLayerId id() const
Return the DetId of this SL.
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
LocalVector drift(const StripGeomDetUnit *, const MagneticField &, const SiStripLorentzAngle &)
def setup(process, global_tag, zero_tesla=False)
bool compute(const DTLayer *layer, const DTDigi &digi, LocalPoint &leftPoint, LocalPoint &rightPoint, LocalError &error) const override
int wire() const
Return wire number.
const DTTopology & specificTopology() const
double time() const
Get time in ns.
void setPositionAndError(DTEnums::DTCellSide lrside, const LocalPoint &point, const LocalError &err)
float digiTime() const
Return the time (ns) of the digi used to build the rechit.
~DTNoDriftAlgo() override
Destructor.
int wire() const
Return the wire number.
std::pair< int, edm::FunctionWithDict > OK
std::vector< DTDigi >::const_iterator const_iterator
bool isWireValid(const int wireNumber) const
std::pair< const_iterator, const_iterator > Range
void setPositionAndError(LocalPoint pos, LocalError err)
Set the local position and its error.
DTNoDriftAlgo(const edm::ParameterSet &config)
Constructor.
DTEnums::DTCellSide lrSide() const
The side of the cell.
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
DTWireId wireId() const
Return the wireId.