Return to h_fpp_statistics.f CVS log | Up to [HallC] / Analyzer / HTRACKING |
File: [HallC] / Analyzer / HTRACKING / Attic / h_fpp_statistics.f
(download)
Revision: 1.1.2.3, Wed Oct 24 23:06:54 2007 UTC (16 years, 10 months ago) by cdaq Branch: gep_online Changes since 1.1.2.2: +0 -3 lines *** empty log message *** |
SUBROUTINE h_fpp_statistics(ABORT,err) *-------------------------------------------------------- * Hall C HMS Focal Plane Polarimeter Code * * Purpose: statistical studies of FPP portion of HMS event * * Created by Frank R. Wesselmann, February 2004 * *-------------------------------------------------------- IMPLICIT NONE INCLUDE 'hms_data_structures.cmn' INCLUDE 'hms_geometry.cmn' INCLUDE 'hms_statistics.cmn' include 'gen_detectorids.par' include 'gen_decode_common.cmn' INCLUDE 'hms_fpp_event.cmn' INCLUDE 'hms_fpp_params.cmn' character*16 here parameter (here= 'h_fpp_statistics') logical ABORT character*(*) err real*4 uTrack, uWire real*4 mindist, rdist, rtime, residual, drift integer*4 iPlane, iSet, iCham, iLay, iClust, iTrk, iHit, iRaw, iWire, ii ABORT= .FALSE. err= ' ' ** basic efficiency determinations * * in each layer, find which wire a track went through do iSet=1,H_FPP_N_DCSETS if (HFPP_N_tracks(iSet).gt.0) then do iTrk=1,HFPP_N_tracks(iSet) do iCham=1,H_FPP_N_DCINSET do iLay=1,H_FPP_N_DCLAYERS call h_fpp_uTrack(iSet,iCham,iLay,iTrk,uTrack) HFPP_stat_shouldhit(iSet,iCham,iLay,iTrk) = > int(0.5 + (uTrack - HFPP_layeroffset(iSet,iCham,iLay)) > / HFPP_spacing(iSet,iCham,iLay)) * * now lets see if ANY wire within acceptable range WAS hit * * and find the closest one, record the distance mindist = H_FPP_BAD_COORD HFPP_stat_diddhit(iSet,iCham,iLay,iTrk) = .false. if (HFPP_nClusters(iSet,iCham,iLay).gt.0) then do iClust=1,HFPP_nClusters(iSet,iCham,iLay) do iHit=1,HFPP_nHitsinCluster(iSet,iCham,iLay,iClust) iRaw = HFPP_Clusters(iSet,iCham,iLay,iClust,iHit) iWire = HFPP_raw_wire(iRaw) rdist = uTrack - iWire * HFPP_spacing(iSet,iCham,iLay) > - HFPP_layeroffset(iSet,iCham,iLay) if (abs(rdist).lt.abs(mindist)) then mindist = rdist endif if (abs(iWire-HFPP_stat_shouldhit(iSet,iCham,iLay,iTrk)) > .le. HFPP_effic_dist) then HFPP_stat_diddhit(iSet,iCham,iLay,iTrk) = .true. endif enddo !iHit enddo !iClust endif HFPP_stat_dist2closest(iSet,iCham,iLay,iTrk) = mindist * * convert to plane #s for CTP iPlane = H_FPP_N_DCLAYERS * H_FPP_N_DCINSET * (iSet-1) > + H_FPP_N_DCLAYERS * (iCham-1) > + iLay HFPP_stat_planeshould(iPlane,iTrk) > = HFPP_stat_shouldhit(iSet,iCham,iLay,iTrk) HFPP_stat_planedidd(iPlane,iTrk) > = HFPP_stat_diddhit(iSet,iCham,iLay,iTrk) enddo !iLay enddo !iCham enddo !iTrk endif enddo !iSet * * for external analysis, we need the wire number of hits, not the cluster * * reduce clusters to just one hit (wire) -- pick shortest drift time do iSet=1,H_FPP_N_DCSETS if (HFPP_N_tracks(iSet).ge.1) then do iTrk=1,HFPP_N_tracks(iSet) do iCham=1,H_FPP_N_DCINSET do iLay=1,H_FPP_N_DCLAYERS iClust = HFPP_TrackCluster(iSet,iCham,iLay,iTrk) ii = 0 residual = H_FPP_BAD_DRIFT if (iClust.gt.0) then rtime = H_FPP_BAD_TIME if (HFPP_nHitsinCluster(iSet,iCham,iLay,iClust).gt.0) then do iHit = 1,HFPP_nHitsinCluster(iSet,iCham,iLay,iClust) iRaw = HFPP_Clusters(iSet,iCham,iLay,iClust,iHit) if (HFPP_HitTime(iRaw).lt.rtime) then ii = iRaw rtime = HFPP_HitTime(iRaw) endif enddo !iHit endif * * now also figure the residual of this hit iWire = HFPP_raw_wire(ii) uWire = HFPP_layeroffset(iSet,iCham,iLay) > + HFPP_spacing(iSet,iCham,iLay)*iWire drift = HFPP_drift_dist(iSet,iCham,iLay,iWire) call h_fpp_uTrack(iSet,iCham,iLay,iTrk,uTrack) residual = uTrack - (uWire + drift) endif !iClust HFPP_TrackHit(iSet,iCham,iLay,iTrk) = ii HFPP_track_residual(iSet,iCham,iLay,iTrk) = residual enddo !iLay enddo !iCham enddo !iTrk endif enddo !iSet RETURN END
Analyzer/Replay: Mark Jones, Documents: Stephen Wood |
Powered by ViewCVS 0.9.2-cvsgraph-1.4.0 |