Classes and utilities for Charged Particles ============================================== S. Protopopescu August 31,1999 The chpart_evt library at present consists of 2 classes: ChargedParticle:inherits D0PhysObj. It is used to store momentum of a track at a "most likely" vertex and a list of primary and secondary vertices this track could belong to. For every possible vertex the chisq of the track distance of closest approach is also stored. ChargedParticleChunk: inherits D0PhysObjChunk. A chunk for storing ChargedParticles. Description of the chunk content ================================ By Mike Eads, October 2, 2002 ChargedParticleChunk is used to store the momentum of a track at the "most likely" vertex and a list of primary and secondary vertices this track could belong to. The track distance of closest approach is also stored for each vertex. Tracks are stored as a ChargedParticle (chpart_evt/ChargedParticle). ChargedParticleChunk contains a vector of one or more ChargedParticle classes. The class structure and accessors are shown below. ************************************************************************** ChargedParticle accessors (all these methods are declared const) float px(); // return x component of 4-momentum float py(); // return y component of 4-momentum float pz(); // return z component of 4-momentum float E(); // return energy component of 4-momentum float pT(); // return transverse momentum float phi(); // return phi coordinate float eta(); // return eta coordinate float theta(); // return theta coordinate float p(); // return magnitude of 4-momentum void p4vec(float p4v[4]); // return 4-momentum as an array LorentzVector l4vec; // return Lorentz 4-vector SpaceVector s3vec(); // return space component of Lorentz 4-vector float charge(); //return charge float getChi2Ndf(); // return chi2 over number of degress of freedom float getSmtPlsHeight(); // return SMT pulse height float getCftPlsHeight(); // return CFT pulse height ChPartIndex index(); // return index of ChargedParticle int typeID(); // return type information const Vertex* getVtxPtr(); // return pointer corresponding to vtxindex VtxIndex vtxindex(float& chisq); // return also corresponding chisq const VtxIndexList& pvtxIndices(); //return primary vertex indices const VtxIndexList& pvtxIndices(std::vector& pchisqs); //return primary vertex indices const VtxIndexList& svtxIndices(); //return secondary vertex indices const VtxIndexList& svtxIndices(std::vector& schisqs); // return secondary vertex indices float getChisq(VtxIndex &vtxindx); // return chi2 for a vertex GtrIndex gtrackindex(); // return the index of the global track CpsIndex cpsindex(); // return index for central preshower FpsIndex fpsindex(); // return index for forward preshower const CPS3DCkuster* getPtrCps(); //return pointer to CPS cluster const FPSRecoCluster* getPtrFps(); //return pointer to FPS cluster bool IsIsolated(); //return true if energy flow is filled const std::vector& ETFlow(); //return sumET of other tracks in cones around track const std::vector& EtFlowN(); // return number of tracks for each _trk_eflow void getXYZ(float xyz[3]); // return single track vertex position float getPSphi(); //return track phi at PS float getPSR(); //return track R at PS float getPSz(); //return track z at PS void getMTC(float e[14], int i[14], float e33[3], float e55[3]); //return MTC information float getMTC_E(); //return summed energy const trf::ETrack& get_etrack(); //return ETrack at DCA float get_smtdedx(); // return SMT dE/dx float get_cftdedx(); // return CFT dE/dx float getrms_smtdedx(); //return rms of SMT dE/dx float getrms_cftdedx(); //return rms of CFT dE/dx TrackDCA get_trackDCA(); //return track DCA at best vertex TrackDCA get_trackDCA(const Vertex& vtx); //return track DCA at vertex vtx ChTmbObj getThumbNail(); //return ThumbNail information ChIsoTmbObj getChIsoTmbObj(); // return ThumbNial information for isolated charged particles void unpThumbNail(const ChTmbObj* tmbptr); // unpack thumbnail void unpThumbNail(const ChIsoTmbObj* tmbptr); // unpack thumbnail d0track::D0HitMask getHitMask(); //return D0HitMask void errMatrix(MatrixD &m); //return error matrix for px, py, pz // at present returns error matrix for phi, tan(lambda), and q/pT kinem::Quality quality(); //return quality information CpsLinks cpslinks(); //return central preshower links FpsLinks(); //return forward preshower links VtxIndex vtsindex(); //return vertex corresponding to 4-vector ************************************************************************** Class vertex::ChargedParticleChunk _base1 = Class kinem::D0PhysObjChunk ************************************************************************** The kinem::D0PhysObjChunk class contains the following _id = Class edm::ChunkID // identifier for this chunk rcpID = Class edm::RCPID // contains a unique identifier for the RCP values used to generate the chunk envID = Class edm::EnvID // contains information about the running conditions (e.g. calibration and survey information) parentIDs = vector // vector of identifiers for the parent chunk(s) pvector = d0om_Unknown_List // list of ChargedParticle's identified in the event *************************************************************************** The vertex::ChargedParticle class contains the following information: float pxyz[3] = 3-momentum px, py, and pz float E = energy float XYZ[3] = x, y, z coordinates near vertex float PSphi = phi at preshower float PSz = z at preshower float PSR = r at preshower float chi2_o_ndf = track chi2/degrees of freedom float smt_pls = SMT pulse height float cft_pls = CFT pulse height int hit_mask[3] = map of hits on track float errPxyz[20] = array for ETrack elements [0] = significance of phi [1] = correlation of phi and tan(lambda) [2] = correlation of phi and charge over pT [3] = significance of tan(lambda) [4] = correlation of tan(lambda) and charge over pT [5] = significance of charge over pT [6] = significance of r [7] = correlation of r and z [8] = correlation of r and phi [9] = correlation of r and tan(lambda) [10] = correlation of r and charge over pT [11] = significance of z [12] = correlation of z and phi [13] = correlation of z and tan(lambda) [14] = correlation of z and charge over pT [15] = r [16] = z [17] = phi [18] = tan(lambda) [19] = charge over pT int partid = +120 or -120 (sign gives charge) gtrackindex = Class edm::LinkIndex // Identifier of the parent GTrack chunk cpsindex = Class edm::LinkIndex // Identifier of the parent CPS cluster fpsindex = Class edm::LinkIndex // Identifier of the parent FPS cluster pvtxs = list> // Identifier of primary vertices svtxs = list> // Identifier of secondary vertices pchisqs = list // Chi2 values for primary vertices schisqs = list // Chi2 values for secondary vertices quality = Class kinem::Quality // information on the quality of the ChargedParticle // Has the following members list etflow = sumET of other tracks in cones around track list etfloaw_ntrk = number of tracks for each _trk_eflow // The two preceding entries are only present for isolated tracks int is_isolated = true if energy flow is filled float E_MTC_total = total track energy found in the calorimeter float E_MTC[14] = energy of cells in calorimeter layers [0] = EM1 [1] = EM2 [2] = EM3 [3] = EM4 [4] = MG CC [5] = ICD [6] = MG EC [7] = FH1 [8] = FH2 [9] = FH3 [10] = FH4 [11] = CH1 [12] = CH2 [13] = CH3 int MTC[14] = tells which layers are hit; 1 if hit, 0 if not. Numbering is identical to E_MTC[14] above. float e33[3] = energy in a 3x3 tower around the charged particle [0] = total [1] = EM [2] = CH float e55[3] = energy in a 5x5 tower around the charged particle [0] = total [1] = EM [2] = CH