24 mSmearingModel(smearingModel)
33 mHitImportMode = mDigiRun && mDigiRun->
HitImportMode() ?
true :
false;
36 printf(
"-W- EicTrackingDigiHitProducer::EicTrackingDigiHitProducer() "
37 "-> effective smearing mode changed to 'NoAction'!\n");
97 double sigma[3], *sigmaPtr = mForceRealHitSmearing ? 0 : sigma;
105 if (mDigiRun->GetDetectorHits(
mDetName->
NAME().Data(), group, accu,
106 kftmpl->
GetMdim(), localCoord, sigma))
109 kftmpl->PackDigiHit(
mDigiHitArray, mOriginalSmearingModel, mEffectiveSmearingModel,
119 double midarr[3] = {middle [0], middle [1], middle [2]};
136 TVector3 local(localCoord);
160 TVector3 local = fGeoH->MasterToLocalPath(middle, point->fVolumePath);
167 memset(
cov, 0x00,
sizeof(
cov));
170 switch (_smearingModel) {
173 for(
int iq=0; iq<3; iq++)
174 if (_fResolution[iq])
175 local[iq] += gRandom->Gaus(0.0, _fResolution[iq]);
180 for(
int iq=0; iq<3; iq++)
183 local[iq] = _fPitch[iq] * (int) floor (local[iq]/_fPitch[iq]);
189 EicGeoMap *fmap = gptr->getMapPtrViaHitMultiIndex(point->fMultiIndex);
191 UGeo_t iz = (gptr->remapMultiIndex(point->fMultiIndex) & 0xFFFFFFFF) >> 16;
199 double resolution = 0.002;
202 for(
int iq=0; iq<2; iq++)
203 local[iq] += gRandom->Gaus(0.0, resolution);
206 cov[0] =
cov[3] = resolution * resolution;
218 double x = local[0],
y = local[1], r = sqrt(x*x + y*y);
226 double dr = 0.010, dt = 0.002;
228 TVector2 xq = TVector2(gRandom->Gaus(r, dr), gRandom->Gaus(0.0, dt)).Rotate(phi);
230 local[
ip] =
ip ? xq.Y() : xq.X();
237 cov[0] = dr*dr;
cov[3] = dt*dt;
246 TVector3 global = fGeoH->LocalToMasterPath(local, point->fVolumePath);
249 new((*fDigiHitArray)[fDigiHitArray->GetEntriesFast()])
251 _smearingModel == _SMEAR_ ? _fResolution : _fPitchSqrt12,
252 phi, _smearingModel == _CALCULATE_ ?
cov : 0);
303 V.
KFM(0,1) = V.
KFM(1,0) = 0.0;
304 for(
unsigned iq=0; iq<2; iq++)
317 for(
unsigned ip=0;
ip<3;
ip++)
318 for(
unsigned iq=0; iq<3; iq++)
332 V.
KFM(0,1) = V.
KFM(1,0) = 0.0;
333 for(
unsigned iq=0; iq<2; iq++)
359 for(
unsigned ipp=0; ipp<
GetMdim(); ipp++) {
364 double xx = (wrapper->
GetOrigin() + hit->GetCoord(ipp) *
367 double rsqr = hit->GetSigma(ipp) * hit->GetSigma(ipp);
370 for(
int iq=0; iq<
_DIM_; iq++)
371 A->
KFM(
ip,iq) += R[
ip]*R[iq]/rsqr;