Title: The Cleo III Tracking Infrastructure
1The Cleo III Tracking Infrastructure
- Adam Lyon (University of Rochester)
- For the CLEO Collaboration
- CHEP98
- August 31, 1998
2Cast of Characters
- The CLEO III Tracking Group
- Professors Paul Avery, Karl Berkelman, Lawrence
Gibbons, Inga Karliner, Jon Thaler, Alan
Weinstein - Post-docs Peter Gaidarev, Chris Jones, Martin
Lohner, Adam Lyon, Ken McLean,John ONeil, Alex
Undrus, Andreas Warburton - Graduate Students Pablo Hopman, Mike Marsh,
Merlin Mitchell-Meyer, Werner Sun - Undergrads Jason Grollman, Dawn Isabel (98 REU)
3Outline
- What is Cleo III?
- Design goals of the tracking infrastructure (TI)
- Suez, the TIs home
- Details
- Raw data
- Converted data
- Bunch finding
- Track finding (pattern recognition)
- Track fitting
- Tracks
- Connections between data (Lattice)
- Running
- Summary
4The Cleo III Detector
- Upgraded detector at CESR phase 3 (ee-)
1033/cm2/s - 10 fb-1/yr on the ?(4S) resonance
- All new IR
- 4 layer silicon detector
- New drift chamber
- Particle ID with new RICH detector
5New Software for Cleo III
- Current software
- Fortran based
- Statically linked
- Different frameworks for reconstruction and
analysis (data storage file type dependent) - Data access via Fortran common blocks
- Cleo III software
- C based with some Fortran legacy modules
- Dynamically linked
- Data delivery system is the only offline
framework (Suez) - Modularized, type-safe, write-safe access to data
6The Tracking Infrastructure (TI)
- Requirements
- Perform pattern recognition and track fitting
- Generic as possible
- Plug in different trackers, fitters, cluster
algorithms, drift functions - Data should not care who made it
- Algorithms should not care where data comes from
- General goals
- Enforce proper interaction with the data delivery
system - Common interface for data (independent as
possible of specific algorithm) - Common interface to algorithms (easy to insert
new ones)
7The Data Delivery System Suez
- The One Framework
- C underneath extended TCL
- Processors
- Triggered by data stops (new event, new run)
- Mainly for analysis code
- Producers/proxies
- Triggered by request for data
- On the fly processing / reconstruction
- See talk (CLEO III Data Access Framework,
Tuesday, 1st Parallel Session E, Martin Lohner)
8Possible path of reconstruction
Read Raw Data RawData
Convert Raw Datato Usable Hit Data ConvertedHit
Bunch Finding BunchDecision, ConvertedDRHit
Find Tracks (pattern recog) SeedTrack
Attach Silicon Hits SeedTrack
Fit Tracks Hypothesis
9Raw Data
- Designed for speed and efficiency
- Internal lists of DAQ words (32 bit integers)
- Raw Data classes give
- iterators for traversing list
- methods for converting DAQ words to id/tdc/adc
values (bit masking)
BaseRawData begin() const_iterator end()
const_iterator - m_ptrToRawWords UInt32
T
RawHits rawDigi(rawWord int)
TDigiType daqId( rawWord int ) TDaqIdType
RawSVHits typedef SVDatumDigiType DigiType
10Raw DR Wire Hits
- In addition CollatedRawDRHit
- Raw data words expanded into CollatedDRHit
objects for easy access - RawDRHits converted by CollatedDRHitProxy
(returns a list)
CollatedRawDRHit identifier()
identifier daqId() DRDatumDaqIdType isChar
ge() DABoolean digiCharge()
DRDatumDigiType digiTimes()
vector
11Converted Hits
- Hits usable for pattern recognition
- Drift Chamber (DR) Wire hits
- TDC and ADC converted to time and pulse height
- Time converted to drift distance (only hit level
corrections) - DR Cathode hits
- clustered raw hits
- Silicon Hits
- Also clustered raw hits
- r-f and r-z hits
ConvertedHit id() identifier device()
kDevice
ConvertedDRHit layer() int wire()
int distance() Meters
ConvertedCathodeHit peakPad()
int totalCharge() PicoCoul z() Meters
ConvertedSVHit layer() int wafer()
int coord() HepPoint3D
12Wire hits and Bunch Finding
- e, e- reside in bunches within trains
- Bunches are very close (14 ns)
- Trigger timed on train crossings
- Use drift chamber wire hits to determine correct
bunch for TDC t0
- BunchFinder is generic
- TrackletBunchFinder (wrapped Fortran) counts
tracklets in stereo layers - BunchDecision is generic
- BunchDecision - basic information for normal
users - TrackletBunchDecision - detailed information,
accessed with a smart pointer
13Bunch Finding
14Bunch Finding Classes
- Bunch Finder is generic
- must give BunchDecision as result
BunchFinder event(theRecord Record)
BunchDecision filterDRHits( theRecord
Record) ConvertedDRHits testBunches(bunchStr
ucture, drHits) BunchDecision 0
BunchDecision bestBunchTime() double
0 bestBunchNumber() int 0 numberOfTestedBu
nches() int 0
TrackletBunchDecision bestBunchTime() double
bestBunchNumber() int numberOfTestedBunches
() int bestBunchInfo() TrackletTestedBunchIn
fo bunchInfo(numint) TrackletTestedBunchInfo
...
TrackletBunchFinder testBunches(bunchStructure,
drHits) BunchDecision
OtherBunchFinder testBunches(bunchStructure,
drHits) BunchDecision
15Converting DR Hits
16ConvertedDRHit Classes
- THE ConvertedDRHit Class
- Class structure is
- Independent of producer
- Independent of drift function
ConvertedHit id() identifier device()
kDevice
ConvertedDRHit layer() int wire()
int wireInLayer() int time()
PicoSec distance() Meters extrapolatedDistan
ce(timeOffset PicoSec) Meters charge()
PicoCoul quality() QualHit weight() double
...
17Clustering Cathode Hits
- ConvertedCathodeHits
- Cluster algorithm is generic
- Centroid calculator is generic (for
ClusterCathodeCentroid)
ClusterCathodeBase findCluster( rawCathodeHits
) vector 0
...
ClusterCathodeCentroid findCluster(
rawCathodeHits ) vector
Hit - m_minThreshold ADCCounts - m_peakThresh
old ADCCounts
CentroidBase calcCentroid(iteratorToFirstRawChar
ge, lastPad int, ConvertedCathodeHit)
void 0
CentroidCoG calcCentroid(iteratorToFirstRawCharg
e, lastPad int, ConvertedCathodeHit)
void
18ConvertedCathodeHit Classes
- Class structure is independent of clustering
algorithm
ConvertedHit id() identifier device()
kDevice
...
ConvertedCathodeHit peakPad()
int numberOfPads() int totalCharge()
PicoCoul peakCharge() PicoCoul z()
Meters phi() double width()
double quality() QualHit weight() double
19ConvertedSVHit Classes
- ConvertedSVHit
- Raw hits clustered into Converted hit
- Z hits are repeated for wafer ganging (z
ambiguity - determined by tracking) - Independent of clustering algorithm
ConvertedHit id() identifier device()
kDevice
ConvertedSVHit wafer int charge
PicoCoul coord HepPoint3D quality QualHit
...
ConvertedSVZHit
ConvertedSVRPhiHit
20Lattice - Data connections
Lattice
ConvertedDRHit
CollatedRawDRHit
- Lattice
- Generic data connector
- One-one, one-many, many-many connections link
data - LatticeLinkData
21Pattern Recognition (Track Finding)
- Find tracks from hits
- Need to support
- Legacy Fortran tracker
- New C tracker
- Standalone silicon tracker
- Tracker does not care who produced the hits
- Results
- SeedTracks (prelim. helix parameters) GENERIC
- Connections between SeedTracks and hits
- Data distinguished by use and producer labels
22Track Finding
TrackFinder event filterDRHits
filterSeedTracks findTracks insertTracks
DoitTrackFinder findTracks insertTracks fil
lFortranCommonBlocks
C3trTrackFinder findTracks insertTracks
23Connecting Tracks to Hits - Lattice
KTHelix curvature() double phi0()
double d0() double ...
SeedTrack
SeedTrack
L
L
L
L
L
L
L
L
L
L
Hit
Hit
Hit
Hit
Hit
Hit
Hit
Hit
Hit
Hit
TRSeedTrack identifier() identifier quality
() Quality
- One-to-many lattice
- Can get list of hits from SeedTrack
- Can get the SeedTrack from the Hit
- Link data contains information due to the match
(natural place)
SeedToHitLinkData residual() double ...
24Track Fitting
- Fit SeedTracks
- Does not care who produced them
- Produce hypothesis track representations
- One per mass hypothesis (pion, kaon, electron,
muon, proton, outward pion) - Produce connections to hits
- Correct hits per each hypothesis (entrance angle)
- Currently
- Legacy Fortran Kalman Fitter
- New C Kalman Fitter
25Track Fitter Classes
- Class structure independent of fitter
- Resulting hypothesis structure independent of
fitter
TrackFitter event filterSeeds fitTracks
0 hypothesis 0 hitLattice 0
KalmanTrackFitter fitTracks hypothesis hitL
attice
FortranKalmanTrackFitter fitTracks hypothesis
hitLattice
...
26Fitter Results Hypotheses
KTKinematicData momentum() ThreeVector fourM
omentum() FourVector charge()
double pmag() double
TDKinematicFit identfier() identifier
DBCandidateHypo H
TDKinematicCandidateFit
TDKinematicPionFit.h
typedef TDKinematicCandidateFitDBCandidatekChargedPion TDKinematicPionFit
27Track Delivery
Hypotheses lists cache
TDTrack pionFit() TDKinematicPionFit kaonFi
t() TDKinematicKaonFit kinematicFit(DBCandidate
Hypo H) TDKinematicFit pionHelix()
TRHelixPionFit kaonHelix() TRHelixKaonFit he
lixFit(DBCandidateHypo H) TRHelixFit
TDKinematicFit
TRHelix
TDTrackMaster holds lists of proxies for
retrieving hypotheses
DBCandidateHypo H
NavTrack dEdx() dEdx showers()
showers TrackQuality() quality
TDKinematicCandidateFitProxy Proxy for obtaining
particular TDKinematicCandidateFit
28Delivering Tracks
29Fit - Hit Lattice
PionFit
PionFit
L
L
L
L
L
L
L
L
L
L
Hit
Hit
Hit
Hit
Hit
Hit
Hit
Hit
Hit
Hit
FitHitLinkData residual() double residualEr
ror() double correctedPosition()
ThreeVector disposition() code entranceAngle
() double
- Hits are corrected for each mass hypothesis
- Link data natural place for information
- Uncorrected information still available
FitDRHitLinkData correctedDriftDistance()
double
...
30A more complicated lattice
PiOutFit
PiOutFit
L
L
L
Shw
Shw
Shw
Shw
Shw
Shw
Shw
TrackShowerLinkData eOverP()
double centroidPosition() ThreeVector
31Running jobs
- Analysis (no rereco)
- prod sel AnalysisExplorer
- proc sel DiscoverNewCPViolation
- file in myData.data
- go
- Analysis (with rereco)
- prod sel DoitTracker
- prod sel myCoolSVTracker
- prod sel KalmanFitter
- prod sel AnalysisExplorer
- proc sel DiscoverNewCPViolation
- file in myData.data
- go
- Reconstruction
- prod sel RawData
- prod sel CDOffCalStandard
- prod sel ConvertedData
- prod sel C3trTrackFinder
- prod sel SiliconTracker
- prod sel KalmanFitter
- prod sel AnalysisExplorer
- proc sel Reconstruction
- file in rawData.data
- go
32An Event
33Summary
- Cleo III Tracking Infrastructure coding is
underway - Achieved Goals
- Accommodate different algorithms into a coherent
and consistent framework - Standardized retrieval of data
- Data are as independent of production algorithm
as possible - Algorithms independent of data origin
- Related data are linked to each other with a
generic matching system
34Other CLEO III Offline Talks at CHEP98
- Spectator (CLEO3D) 208, Tuesday, 1st Parallel
Session A, Chris Jones - CLEO III Data Access Framework 194, Tuesday,
1st Parallel Session E, Martin Lohner - Suez Job Control 209, Tuesday, 2nd Parallel
Session E, Martin Lohner
- General Purpose Data Base System for Constants
Management 217, Wednesday, 1st ParallelSession
C, Rich Baker - CLEO III Detector Geometry 195, Wednesday,1st
Parallel Session E, Chris Jones
35Suez Data Model