31 minTime(config.getParameter<double>(
"minTime")),
32 maxTime(config.getParameter<double>(
"maxTime")),
33 doVdriftCorr(config.getParameter<bool>(
"doVdriftCorr")),
35 stepTwoFromDigi(config.getParameter<bool>(
"stepTwoFromDigi")),
36 useUncertDB(config.getParameter<bool>(
"useUncertDB")),
38 debug(config.getUntrackedParameter<bool>(
"debug")){}
48 cout<<
"[DTLinearDriftFromDBAlgo] setES called"<<endl;
91 return compute(layer, wireId, digi.
time(), globWirePos, leftPoint, rightPoint,
error, 1);
114 return compute(layer, wireId, recHit1D.
digiTime(), globWirePos, newHit1D, 2);
134 const float digiTime,
141 float driftTime = digiTime -
theSync->
offset(layer, wireId, globPos);
144 if (driftTime < minTime || driftTime >
maxTime) {
145 if (
debug)
cout <<
"[DTLinearDriftFromDBAlgo]*** Drift time out of window for in-time hits "
146 << driftTime << endl;
156 if (driftTime<0.) driftTime=0;
160 float hitResolution = 0;
169 double args[1] = {double(step-1)};
181 const float k_param = 1.2e-04;
183 vDrift = vDrift*(1. - k_param*local_pos.
y());
188 float drift = driftTime * vDrift;
200 error =
LocalError(hitResolution*hitResolution,0.,0.);
204 cout <<
"[DTLinearDriftFromDBAlgo] Compute drift distance, for digi at wire: " << wireId << endl
205 <<
" Step: " << step << endl
206 <<
" Digi time: " << digiTime << endl
207 <<
" Drift time: " << driftTime << endl
208 <<
" Drift distance: " << drift << endl
209 <<
" Hit Resolution: " << hitResolution << endl
210 <<
" Left point: " << leftPoint << endl
211 <<
" Right point: " << rightPoint << endl
212 <<
" Error: " << error << endl;
223 const float digiTime,
231 if(
compute(layer, wireId, digiTime, globPos, leftPoint, rightPoint, error, step)) {
233 switch(newHit1D.
lrSide()) {
253 throw cms::Exception(
"InvalidDTCellSide") <<
"[DTLinearDriftFromDBAlgo] Compute at Step "
254 << step <<
", Hit side "
256 <<
" is invalid!" << endl;
float wirePosition(int wireNumber) const
Returns the x position in the layer of a given wire number.
int version() const
Version numer specifying the structure of the payload. See .cc file for details.
int nominalValue() const
The nominal field value for this map in kGauss.
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.
double offset(const DTLayer *layer, const DTWireId &wireId, const GlobalPoint &globalPos)
virtual bool compute(const DTLayer *layer, const DTDigi &digi, LocalPoint &leftPoint, LocalPoint &rightPoint, LocalError &error) const
LocalVector drift(const StripGeomDetUnit *, const MagneticField &, const SiStripLorentzAngle &)
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
int wire() const
Return wire number.
DTSuperLayerId superlayerId() const
Return the corresponding SuperLayerId.
float get(const DTWireId &wireid, double *x=0) const
Get the value correspoding to the given WireId, / using x[] as parameters of the parametrization wh...
virtual void setES(const edm::EventSetup &setup)=0
Pass the Event Setup to the synchronization module at each event.
const DTTopology & specificTopology() const
double time() const
Get time in ns.
int superLayer() const
Return the superlayer number.
Abs< T >::type abs(const T &t)
virtual ~DTLinearDriftFromDBAlgo()
Destructor.
float digiTime() const
Return the time (ns) of the digi used to build the rechit.
const DTRecoConditions * uncertMap
virtual void setES(const edm::EventSetup &setup)
Pass the Event Setup to the algo at each event.
const MagneticField * field
virtual LocalError localPositionError() const
Return the 3-dimensional error on the local position.
DTTTrigBaseSync * theSync
virtual LocalPoint localPosition() const
Return the 3-dimensional local position.
int wire() const
Return the wire number.
DTLinearDriftFromDBAlgo(const edm::ParameterSet &config)
Constructor.
const bool stepTwoFromDigi
const std::string & version() const
access version
int get(int wheelId, int stationId, int sectorId, int slId, float &mTime, float &mTrms, DTTimeUnits::type unit) const
bool isWireValid(const int wireNumber) const
void setPositionAndError(LocalPoint pos, LocalError err)
Set the local position and its error.
int station() const
Return the station number.
int wheel() const
Return the wheel number.
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.