|
bool | compute (const DTLayer *layer, const DTDigi &digi, LocalPoint &leftPoint, LocalPoint &rightPoint, LocalError &error) const override |
|
bool | compute (const DTLayer *layer, const DTRecHit1D &recHit1D, const float &angle, DTRecHit1D &newHit1D) const override |
|
bool | compute (const DTLayer *layer, const DTRecHit1D &recHit1D, const float &angle, const GlobalPoint &globPos, DTRecHit1D &newHit1D) const override |
|
| DTParametrizedDriftAlgo (const edm::ParameterSet &config, edm::ConsumesCollector) |
| Constructor. More...
|
|
void | setES (const edm::EventSetup &setup) override |
| Pass the Event Setup to the algo at each event. More...
|
|
| ~DTParametrizedDriftAlgo () override |
| Destructor. More...
|
|
| DTRecHitBaseAlgo (const edm::ParameterSet &config, edm::ConsumesCollector) |
| Constructor. More...
|
|
virtual edm::OwnVector< DTRecHit1DPair > | reconstruct (const DTLayer *layer, const DTLayerId &layerId, const DTDigiCollection::Range &digiRange) |
| Build all hits in the range associated to the layerId, at the 1st step. More...
|
|
virtual | ~DTRecHitBaseAlgo () |
| Destructor. More...
|
|
Concrete implementation of DTRecHitBaseAlgo. Compute drift distance using the CIEMAT (by P.Garcia Abia and J. Puerta) parametrization of the cell behavior obtained with GARFIELD
- Author
- G. Cerminara - INFN Torino
Definition at line 18 of file DTParametrizedDriftAlgo.h.
Definition at line 101 of file DTParametrizedDriftAlgo.cc.
References funct::abs(), angle(), DTTime2DriftParametrization::computeDriftDistance_mean(), gather_cfg::cout, debug, shallow::drift(), relativeConstraints::error, alignBH_cfg::fixed, HiCaloJetParameters_cff::interpolate, phase1PixelTopology::layer, M_PI, HLT_2022v12_cff::maxTime, mathSSE::sqrt(), DTSuperLayerId::superlayer(), DTTime2DriftParametrization::drift_distance::v_drift, DTChamberId::wheel(), makeMuonMisalignmentScenario::wheel, DTWireId::wire(), PV3DBase< T, PVType, FrameType >::x(), DTTime2DriftParametrization::drift_distance::x_drift, DTTime2DriftParametrization::drift_distance::x_width_m, DTTime2DriftParametrization::drift_distance::x_width_p, PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
112 float driftTime = digiTime -
theSync->offset(
layer, wireId, globPos);
115 if (
step == 1 && (driftTime < minTime || driftTime >
maxTime)) {
117 cout <<
"*** Drift time out of window for in-time hits " << driftTime << endl;
147 cout <<
"[DTParametrizedDriftAlgo]*** WARNING: call to parametrization failed" << endl;
157 bool variableSigma =
false;
175 reso = (sigma_l + sigma_r) / 2.;
181 }
else if (
wheel == 1) {
183 }
else if (
wheel == 2) {
187 }
else if (
step == 2) {
188 reso = (sigma_l + sigma_r) / 2.;
194 }
else if (
wheel == 1) {
196 }
else if (
wheel == 2) {
200 }
else if (
step == 3) {
201 reso = (sigma_l + sigma_r) / 2.;
207 }
else if (
wheel == 1) {
209 }
else if (
wheel == 2) {
214 float sXDelays = sTDelays * DX.
v_drift / 10.;
215 reso =
sqrt(reso * reso + sXDelays * sXDelays);
221 }
else if (
wheel == 1) {
223 }
else if (
wheel == 2) {
229 }
else if (
step == 2) {
233 }
else if (
wheel == 1) {
235 }
else if (
wheel == 2) {
241 }
else if (
step == 3) {
245 }
else if (
wheel == 1) {
247 }
else if (
wheel == 2) {
260 if (!
layer->specificTopology().isWireValid(wireId.
wire()))
265 leftPoint =
LocalPoint(locWirePos.x() -
drift, locWirePos.
y(), locWirePos.z());
266 rightPoint =
LocalPoint(locWirePos.x() +
drift, locWirePos.
y(), locWirePos.z());
269 int prevW =
cout.width();
270 cout << setiosflags(ios::showpoint |
ios::fixed) << setw(3) <<
"[DTParametrizedDriftAlgo]: step " <<
step << endl
271 <<
" Global Position " << globPos << endl
272 <<
" Local Position " <<
layer->toLocal(globPos)
275 <<
" Digi time " << digiTime
279 <<
" >Drif time " << driftTime << endl
280 <<
" >Angle " <<
angle * 180. /
M_PI << endl
281 <<
" <Drift distance " <<
drift << endl
282 <<
" <sigma_l " << sigma_l << endl
283 <<
" <sigma_r " << sigma_r << endl
284 <<
" reso " << reso << endl
285 <<
" leftPoint " << leftPoint << endl
286 <<
" rightPoint " << rightPoint << endl
287 <<
" error " <<
error << resetiosflags(ios::showpoint |
ios::fixed) << setw(prevW) << endl
Point3DBase< Scalar, LocalTag > LocalPoint
int wire() const
Return the wire number.
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
LocalVector drift(const StripGeomDetUnit *, const MagneticField &, const SiStripLorentzAngle &)
constexpr std::array< uint8_t, layerIndexSize > layer
const MagneticField * magField
bool computeDriftDistance_mean(double time, double alpha, double by, double bz, short interpolate, drift_distance *dx) const
Abs< T >::type abs(const T &t)
int superlayer() const
Return the superlayer number (deprecated method name)
std::unique_ptr< DTTTrigBaseSync > theSync
int wheel() const
Return the wheel number.
Structure used to return output values.
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
bool DTParametrizedDriftAlgo::compute |
( |
const DTLayer * |
layer, |
|
|
const DTWireId & |
wireId, |
|
|
const float |
digiTime, |
|
|
const float & |
angle, |
|
|
const GlobalPoint & |
globPos, |
|
|
DTRecHit1D & |
newHit1D, |
|
|
int |
step |
|
) |
| const |
|
privatevirtual |
Definition at line 295 of file DTParametrizedDriftAlgo.cc.
References angle(), bookConverter::compute(), relativeConstraints::error, Exception, phase1PixelTopology::layer, DTEnums::Left, DTRecHit1D::localPosition(), DTRecHit1D::lrSide(), DTEnums::Right, DTRecHit1D::setPositionAndError(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
308 switch (newHit1D.
lrSide()) {
325 throw cms::Exception(
"InvalidDTCellSide") <<
"[DTParametrizedDriftAlgo] Compute at Step " <<
step 326 <<
", Hit side " << newHit1D.
lrSide() <<
" is invalid!" << endl;
bool compute(const DTLayer *layer, const DTDigi &digi, LocalPoint &leftPoint, LocalPoint &rightPoint, LocalError &error) const override
constexpr std::array< uint8_t, layerIndexSize > layer
DTEnums::DTCellSide lrSide() const
The side of the cell.
void setPositionAndError(LocalPoint pos, LocalError err)
Set the local position and its error.
LocalPoint localPosition() const override
Return the 3-dimensional local position.
T angle(T x1, T y1, T z1, T x2, T y2, T z2)