#ifndef TRACKSTRUCT_HH #define TRACKSTRUCT_HH //Blocks: track const Int_t MAXTRACKS=600; // for cosmic ray variables const Int_t TRACK_ORIG_REFIT_FAILED = -3; const Int_t TRACK_DIR_UNCHECKED = -2; const Int_t TRACK_DIR_UNDETERMINED = -1; const Int_t TRACK_OUTGOING = 0; const Int_t TRACK_INCOMING = 1; const Int_t DICOSMIC_FIT_FAILED = -1; const Int_t DICOSMIC_BOTH_OUTGOING = 0; const Int_t DICOSMIC_IS_INCOMING = 1; const Int_t DICOSMIC_IS_OUTGOING = 2; const Int_t DICOSMIC_BOTH_INCOMING = 3; struct mytrack_t { // Long description of variables added // Collin Wolfe // Oct. 3, 2003 Int_t ntrack; // Number of tracks in event Int_t naxialsl[MAXTRACKS]; //[ntrack] // Number of axial superlayers with hits associated to track // We require >= 7 hits // There are 8 total Super layers -- 4 Axial and 4 stereo... Int_t naxialhits[MAXTRACKS]; //[ntrack] // Number of hits in axial superlayers Int_t nstereosl[MAXTRACKS]; //[ntrack] // Number of stereo superlayers with hits associated to track // We require >= 7 hits Int_t nstereohits[MAXTRACKS]; //[ntrack] // Number of hits in stereo superlayers Int_t svxhits[MAXTRACKS]; //[ntrack] // Number of hits in SVX Int_t svxphihitsbylyr[MAXTRACKS][8]; //[ntrack][8] // Hit mask for axial silicon (layers 0,7). Bit for each layer is // either 0=>no hit; 1=>one or more hits. Int_t svxzedhitsbylyr[MAXTRACKS][8]; //[ntrack][8] // Hit mask for stereo silicon (layers 0,7). Bit for each layer is // either 0=>no hit; 1=>one or more hits. Int_t vertex[MAXTRACKS]; //[ntrack] // Index of associated vertex in vertex block (not filled yet) Float_t px[MAXTRACKS]; //[ntrack] Float_t py[MAXTRACKS]; //[ntrack] Float_t pz[MAXTRACKS]; //[ntrack] Float_t pt[MAXTRACKS]; //[ntrack] Float_t p[MAXTRACKS]; //[ntrack] // Track four-momentum // Gotten from the track's Hep3Vector as filled by: /* 277 Hep3Vector SimpleReconstructedTrack::momentum() const 278 { 279 double Pt=pt(); 280 Helix track = getTrajectory(); 281 Angle phi0 = track.getPhi0(); 282 return Hep3Vector(Pt*cos(phi0), Pt*sin(phi0), Pt*track.getCotTheta()); 283 } 284 */ Float_t curv[MAXTRACKS]; //[ntrack] // Track Curvature (1/2r) in cm. (+ for CounterClockwise Track; - for Clockwise Track) Float_t phi0[MAXTRACKS]; //[ntrack] // track direction at point of closest approach to the Z-axis (z0) Float_t cottheta[MAXTRACKS]; //[ntrack] // track Lamda = Cot(Theta) where Theta is the Polar Angle of the track Float_t eta0[MAXTRACKS]; //[ntrack] // eta of track at track z0 Float_t charge[MAXTRACKS]; //[ntrack] // Charge of track Float_t d0[MAXTRACKS]; //[ntrack] // track d0 (impact parameter) in cm // (+ sign for negative Lz, - sign for positive Lz) Float_t x0[MAXTRACKS]; //[ntrack] // x0 = -d0*sin(phi0) Float_t y0[MAXTRACKS]; //[ntrack] // y0 = d0*cos(phi0) Float_t z0[MAXTRACKS]; //[ntrack] // Track z0 (point of closest approach to the Z-axis) Float_t chi2[MAXTRACKS]; //[ntrack] // Chi sq from the Helix Fit Float_t chi2CT[MAXTRACKS]; //[ntrack] // Chi sq from COT portion of the Helix Fit Float_t chi2SI[MAXTRACKS]; //[ntrack] // Chi sq from silicon portion of the Helix Fit Float_t trkiso[MAXTRACKS]; //[ntrack] // track isolation // sum Pt of tracks in a cone of 0.4 around the current track // require the track z0's to be within 5cm of track. Float_t t0[MAXTRACKS]; //[ntrack] // t0 of track (not filled yet) // For the following two variables, we extract the track to the CES/PES. // if track will not reach requested radius or impact paramater is greater // than radius the x,y,z position are -999999. // If z0 > TLZPESL0 = 184.8cm (plug shower-max layer 0), we set the values // to extreta = -10, extrphi = -5. // If z0 < TLZPESL0, we try to extract the track to the radius of the CES: // TLYCES = 184.15cm. If the z from the extraction != -999999 and it is // less than TLZPESL0 = 184.8cm (plug shower-max layer 0), we set the // eta and phi to the values returned from the extraction. // Otherwise we're in the plug, so we create a plane // at z = +/-(TLZPESL0+TLZPESL1)/2 // (TLZPESL1 = 186.0 = plug shower-max layer 1) // if track eta > 0, z we take the minus sign, otherwise the plus sign. // Then we interesect the trajectory of the track with this plane and get a // HepPoint3D position. If this is non-zero, we set the eta and phi to this // point. otherwise, we set the eta and phi to -10 and -5 specifically. Float_t extreta[MAXTRACKS]; //[ntrack] // eta from extrapolation to CES/PES Float_t extrphi[MAXTRACKS]; //[ntrack] // phi from extrapolation to CES/PES // For the following Time of Flight (tof) information, we find the info // from a track in any TofTrackView in the data which matches the track Float_t tof[MAXTRACKS]; //[ntrack] // time of flight Float_t tofsig[MAXTRACKS]; //[ntrack] // uncertainty in tof time Float_t toft0[MAXTRACKS]; //[ntrack] // t0 from tof system Float_t toft0sig[MAXTRACKS]; //[ntrack] // uncertainty in t0 Float_t tofchisq[MAXTRACKS][5]; //[ntrack][5] // chi sq // The following are the output of Ashutosh Kotwal's cosmic finding module // for each track. See cdf note 6089 for more info. // Essentially, for a track, it // uses TOF info to determine if the track is incoming or outgoing. It then // looks for a track on the opposite side of the COT Int_t cosdir[MAXTRACKS]; //[ntrack] // Is the track incoming or outgoing? Float_t cost0[MAXTRACKS]; //[ntrack] // best fit t0 for best fit hypothesis (in or out) Float_t cosinchi2[MAXTRACKS]; //[ntrack] // chisq for incoming hypothesis Float_t cosoutchi2[MAXTRACKS]; //[ntrack] // chisq for outgoing hypothesis Int_t cosopp[MAXTRACKS]; //[ntrack] // if opposite track found, status code as above Float_t cosoppt0[MAXTRACKS]; //[ntrack] // if opposite track found, best fit t0 for pair Float_t cosoppd0[MAXTRACKS]; //[ntrack] // if opposite track found, best fit d0 for pair Float_t cosopp0chi2[MAXTRACKS]; //[ntrack] // chisq for hypothesis that both tracks are // outgoing Float_t cosopp1chi2[MAXTRACKS]; //[ntrack] // chisq for hypothesis that this is outgoing // and the other track is incoming Float_t cosopp2chi2[MAXTRACKS]; //[ntrack] // chisq for hypothesis that this is incoming // and the other track is outgoing Float_t cosopp3chi2[MAXTRACKS]; //[ntrack] // chisq for hypothesis that both tracks are // incoming // The following variables are beam constrained versions of variables above. // Beam constraining is done using the cot beam line. Float_t bccottheta[MAXTRACKS]; //[ntrack] Float_t bccurv[MAXTRACKS]; //[ntrack] Float_t bcz0[MAXTRACKS]; //[ntrack] Float_t bcphi0[MAXTRACKS]; //[ntrack] Float_t bcd0[MAXTRACKS]; //[ntrack] Float_t bcpt[MAXTRACKS]; //[ntrack] Float_t cord0[MAXTRACKS]; //[ntrack] // corrected d0. If the svx beamline is set, it is set. Otherwise, // the cot beamline is used. If neither are set, cord0 is set to -999 Int_t dof[MAXTRACKS]; //[ntrack] // degrees of freedom for the track fit Int_t slhitcount[MAXTRACKS]; //[ntrack] // packed count of hits per COT superlayer // These variables are from the cot only track before beam constraining Float_t cotpt[MAXTRACKS]; //[ntrack] // COT-only pt Float_t cotx0[MAXTRACKS]; //[ntrack] // COT-only x0 Float_t coty0[MAXTRACKS]; //[ntrack] // COT-only y0 Float_t cotz0[MAXTRACKS]; //[ntrack] // COT-only z0 Int_t id[MAXTRACKS]; //[ntrack] // Track ID # // These should be the silicon hit patterns and errors. // but currently they are set to 0. Int_t hitpattern[MAXTRACKS]; //[ntrack] Int_t errorlayers[MAXTRACKS]; //[ntrack] Int_t integlayers[MAXTRACKS]; //[ntrack] Int_t jetlink[MAXTRACKS][2]; //[ntrack][2] // Link to a jet in the jet and jet2 blocks. Int_t alg[MAXTRACKS]; //[ntrack] // tracking algorithm used... Float_t errMtx[MAXTRACKS][15]; //[ntrack][15] // Covariance Matrix. Float_t extrz[MAXTRACKS]; //[ntrack] // Extrapolated z (see extreta and extrphi above for better description) Int_t convpartner[MAXTRACKS][2]; //[ntrack][2] // Links to track block indices for conversion partners. // Comes from the conversion filter module in SoftElectronMods. // Default tcl file sets Delta(cot theta) < 0.04 // and DeltaXY < 0.2 cm (See CDF Note 6250). Float_t t0err[MAXTRACKS]; //[ntrack] Float_t maxit0[MAXTRACKS]; //[ntrack] Float_t maxit0err[MAXTRACKS]; //[ntrack] Float_t constrainedt0[MAXTRACKS]; //[ntrack] //From Sasha P.: Int_t max_seq[MAXTRACKS]; //[ntrack] // the longest raw of hits on the same side of a track Int_t n_trans[MAXTRACKS]; //[ntrack] // number of transitions (sign of hit residuals changes) }; #endif