363 vetoHits = {10:[],11:[]}
364 for aHit
in event.Digi_MuFilterHits:
365 if not aHit.isValid():
continue
366 detID = aHit.GetDetectorID()//1000
367 if not detID<20:
continue
368 vetoHits[detID].append(aHit)
369 if not(len(vetoHits[10])==1)
and not(len(vetoHits[11])==1):
return
372 for nHit
in range(event.Digi_ScifiHits.GetEntries()):
373 DetID2Key[event.Digi_ScifiHits[nHit].GetDetectorID()] = nHit
375 Z0 = self.
zPos[
'Scifi'][10]
377 for aTrack
in event.Reco_MuonTracks:
378 if not aTrack.GetUniqueID()==1:
continue
380 S = aTrack.getFitStatus()
381 if not S.isFitConverged():
continue
382 mom = aTrack.getFittedState().getMom()
383 pos = aTrack.getFittedState().getPos()
384 slopeX = mom.X()/mom.Z()
385 slopeY = mom.Y()/mom.Z()
387 for nM
in range(aTrack.getNumPointsWithMeasurement()):
388 state = aTrack.getFittedState(nM)
389 Meas = aTrack.getPointWithMeasurement(nM)
390 W = Meas.getRawMeasurement()
392 aCl = event.Cluster_Scifi[clkey]
393 aHit = event.Digi_ScifiHits[DetID2Key[aCl.GetFirst()]]
394 s = aCl.GetFirst()//1000000
396 mat = (aCl.GetFirst()//10000)%10
397 if aHit.isVertical():
399 L = B[1]-state.getPos()[1]
402 L = A[0]-state.getPos()[0]
408 dZ = (A[2]+B[2])/2. - Z0
409 dL = dZ * ROOT.TMath.Sqrt( slopeX**2+slopeY**2+1 )
410 if slopeY>0.1: dL = -dL
415 sTime = statistics.mean(times)
416 rms = statistics.stdev(times)
417 rc = h[
'trms'].Fill(rms)
420 zEx = self.
M.zPos[
'MuFilter'][1*10+l]
421 lam = (zEx-pos.z())/mom.z()
422 yEx = pos.y()+lam*mom.y()
423 xEx = pos.x()+lam*mom.x()
424 for aHit
in vetoHits[10+l]:
425 detID = aHit.GetDetectorID()
427 D = (A[1]+B[1])/2. - yEx
430 tdc[10+l][bar] = {
'L':{},
'R':{}}
432 qdc = aHit.GetSignal(k)
441 T = aHit.GetTime(k) * self.
M.TDC2ns
442 T-= abs(L)/self.
Vveto
444 dZ = (A[2]+B[2])/2. - Z0
445 dL = dZ * ROOT.TMath.Sqrt( slopeX**2+slopeY**2+1 )
446 if slopeY>0.1: dL = -dL
448 key = self.
M.sdict[s]+str(s*10+l)+
'_'+str(bar)+side+str(kx)
450 h[
'tvsQDC_'+key].Fill(qdc,T-sTime)