TRIGGER SIMULATOR FOR L2STT STATUS 29-OCTOBER-1999 - STR * Problem with releases ( CVS ) fixed. the code compiles, links and RUNs in CVS 64.00 ** TSIM _l2stt strategy: DECIDED TO KEEP UP WITH MOST RECENT RELEASES ( or 'group' of releases ) - not easy but unavoidable....- ** TRIGGER SIMULATOR INTEGRATION PROJECT: ( THAT USES THE STANDARD TRIGSIM NTUPLE MAKER ) It requires the STT output chunk. At present the STT output chunk contains: all data from CFT L1 and PS includes Clusters with calculated values includes Roads with fake values includes Tracks with fake values - STT OUTPUT CHUNK CODE RELEASED in CVS ( V64.00) - OUTPUT CHUNK MODIFIED TO BE COMPATIBLE WITH NEW UNPDATACHUNK * problems had arised due to bugs in the most recent releases * work is in progress *** SEE D0NOTE 3681 VSN 1.1 FOR MOST RECENT UPDATES OF CONTENT OF L2STT OUTPUT CHUNK **** ROADS ( Sailesh ) code in debugging phase. Running in CVS 57.00. Found bugs in SMT new UnpDataChunk. Still to be fixed. ***** TRACKS ( John ) Work started to integrate existent code ( in C and FORTRAN) into tsim_L2STT. A NEW STRUCTURE for the Tsim package will be needed, Besides the present only one package, [tsim_l2stt] two more packages will be created [tsim_l2stt_fitters and tsim_l2stt_util ]. The three packages scheme is to avoid circular dependencies among two packages. ----------------------------------------------------------------------------- L2STT Diagram of Classes and Methods for Trigger Simulation STR/11-May-99/vsn1.4 ____________________ | tsim_l2stt | |___________________| | processEvent(Event) | getSMT_FE(event,channelVector) | getFT_L1 (event,trackVector) |___________________| | | | | ___________________________V__ | | _V_________________________ | L2STTCluster | | | | L2STTHitsInRoad | |_____________________(*)____| V | |__________________________| | | | | | | | makeClusterfromStrips( | | V | getTranslationTable(FTTrack,Hit) | channelVector,Clusters) | | | | makeRoad(FTTrack) | |_______________________(**)_| | | | getClusters(Clusters,Hits) | vector | | | | findHitsInRoad(Hits,HitsInRoad) | vector | | | |__________________________| | | | | | | |_____________________(***)__| | | | vector | V | |__________________________| _____________ | V __________________|____________ | ________________________ | L2STTFit | | __| L2STTFitters | |_____________________________| | | |_______________________| | | | | | | | L2STTRoad(CTTIndex,HitsInRoad) | ^ | linfit_road3 | | getCTTIndex | | | | linfit_orgroad3 | | getSTTTrack(FitType) | | | | linfit_circle3 | | if FitType not present, get default | | OR | | getHitsInRoad | | | | linfit_road | | Hard2Phys | | | | linfit_orgroad | | doFitting |___|_____>____| | linfit_circle | |_____________________________| | | | | | V | OR | | listHitsInRoad | | other fit algorithm | | list Tracks | | |_______________________| |_____________________________| | | | _________________V____________ | ________________________ | L2STTTrack | |____>__________| L2STTVertex | |_____________________________| |________________________| | | | | | L2STTTrack(pt,chi**2,Phi0,b,UsedHits,FitType) | getClusters | | | | getClustersZ | | getHitsInRoad | | . | | getRoad | | . | | getPt | | . | | getChi2 | |________________________| | getPhi0 | | . | | getb | | . | | buffer2L2 | | | |_____________________________| |________________________| | Pt Track | | CHI**2 Track | | Phi0 Track | legenda: (*) name of Class | b Track | (**) Methods of Class | list UsedHits (***) attributes of Class | FitType | |_____________________________| ------------------------------------------------------------------------------- TABLE 2 - L2STT Trigger Simulation main STT Class and Clustering Class (more detail) STR/11-May-1999/vsn1.4 ____________________ | tsim_l2stt | |_______________(*)_| | processEvent (event) | getSMT_FE (event, channelVector) | getFT_L1 (event, trackVector) | doClustering () | | doRoads() | | doTracking () | | doVertexing () | | fill_L2STTChunk(IN,OUT) | fill_Ntuples (L2STT) |_____________(**)__| | V _______________________________ | L2STTCluster | |________________________(*)___| | | | makeClusterFromStrips (channelVector,Clusters) | ClusterAlgo1 ( ) | | ClusterAlgo2 ( ) | |________________________(**)__| | | | MCH_address(channel) | | Hardw_address(channel) | | Phys_address(channel) | | ClusterNumber | | ClusterSize | | ClusterPulseHeight | | ClusterAddress | | vector < Clusters> | | vector < ClustersZ> | |_________________________(***)| (*) name of Class (**) Methods of Class (***) attributes of Class ------------------------------------------------------------------------------ CLASSES in tsim_L2STT_fitters: HitsInRoad - in this class all the information of one road is contained plus the clusters associated to this road. L2STTTrack - output from a fit for a single road L2STTMcTrack - augmented L2STTTrack when running on MC absSTTFitter - defines the interface and booking for every algorithm. Is the bas class that the main STT package,tsim_L2STT, will see. The following classes are the ones that encapsulate the C code into C++ and create the needed hooks : STTFitterLinFit - encapsulates the pre-existing code common to each fitter STTFitterLinFit_StaticRoad4 STTFitterLinFit_StaticRoad3 ------------ the default one STTFitterLinFit_DynamicRoad4 STTFitterLinFit_DinamicRoad3 STTFitterLinFit_AllCombos4 STTFitterLinFit_AllCombor3 STTFitterLinFit_TruncAll STTFitter_PAC - Implements the PAC version of the fitter ( enca psulation from FORTRAN ) STTFitterLUT - Base class for look up table fitting STTFitter_3X3 - C++ implementation of 3X3 matric format STTFitter_3XN - C++ implementation of 3XNX matrix format L2STT OUTPUT CHUNK : - D0Note 3681 - ------------------------------------------------------------------------------ Information for CLUSTERS: modid bits 0-4 = slot# (cluster=3-31) bits 5-7 = crate # ( 0 -5 by sector ) chid bits 0-7 = channel # on the chip bits 9-11 = chip # bits 12-14 = HDI # --> from class Cluster: data[0] = offset (1/4 strip position) data[1] = size data[2] = pulse_height data[3] = channel data[4] = chip data[5] = HDI data[6] = Sequencer data[7] = crate data[8] = Address data[9] = Barrel data[10] = Layer data[11] = Ladder data[12] = View data[13] = x data[14] = y data[15] = z -------------------------------------------------------------------------- Information for ROADS : modid bits 0-4 = slot# (road=2) - 1 or 2 if CPS axial or stereo chid road = road# evid event# --> from class HitsInRoad: data[0] = track flag (0 or 1) data[1] = track number data[2] = H layer hit ot Pt bin data[3] = A layer hit data[4] = r coord. of H layer hit data[5] = r coord. of A layer hit data[6] = phi coord. of H layer hit data[7] = phi coord. of A layer hit data[8] = number of clusters associated to road then loop over clusters: data[10] = 1/4 strip position (offset) data[11] = clusters centroid strip number data[12] = ... data[..] = end loop over clusters ------------------------------------------------------------------------- Information for TRACKING modid bits 0-4 = slot# (tracker=0) chid tracker = track ID # (0-31 from CFT L1) ---32 or 46? broadcaster # (0-5) # track broadcaster ----> 7 bits data[0] = phi0 data[1] = impact parameter data[2] = pt data[3] = chi2 data[4] = de/dx data[5] = STT info not in header --------------------------------------------------------------------------- Information for Vertex: modid bits 0-4 = slot# (vertex=1) chid vertex = vertex # data[0] = vertex_z data[1] = number of tracks on vertex ----------------------------------------------------------------------------- Class HEADER of L2STT OUTPUT CHUNK : sysid : STT_L2 header[0]= processing_bits header[1]= status_bits header[2]= cluster_algo_version header[3]= track_fit_version header[4]= parity modid = 99 chanid = 0 status_bits content : bit 0 = STT info ( 0=OK; 1=error or missing ) bit 1 = STT cluster `` `` bit 2 = STT road `` `` bit 3 = STT track `` `` bit 4 = STT vertex `` `` bit 5 = L1CFT tracks `` `` bit 6 = PS `` `` ------------------------------------------------------------------------------- Information from CFT and PS of L2STT readout : data[0] = track phi data[1] = track bin data[2] = track pt data[3] = track PS isolation data[4] = track PS Match data[5] = track error data[6] = track isolation data[7] = STT Track duplicate data[8] = PS location info modid = 0 chid = track number (CFT numbering) -------------------------------------------------------------------------------