#ifndef TAGGINGSTRUCT_HH #define TAGGINGSTRUCT_HH //Blocks: tagging,tagging2,tagging3 ////////////////////////////////////////////////////////////////////////// // // Block for studies of b-tagging with the SecVtx algorithm // // Authors: // Peter Onyisi: peonyisi@midway.uchicago.edu // Lester Miller: lmiller@fnal.gov // Joao Guimaraes da Costa: guima@huhepl.harvard.edu // ////////////////////////////////////////////////////////////////////////// // // pattern=il5*10000+il4*1000+il3*100+il2*10+il1; // iopatt=il1*10000+il2*1000+il3*100+il4*10+il5; // errlay=errlay5*10000+errlay4*1000+errlay3*100+errlay2*10+errlay1; // intlay=intlay5*10000+intlay4*1000+intlay3*100+intlay2*10+intlay1; const Int_t MAXSECVTX = 20; const Int_t MAXSECVTXTRK = 200; struct mytagging_t { // We have three separate tagging blocks corresponsing to the // three jet blocks -- tagging1, tagging2, tagging3 // should correspond to jet1, jet2, jet3. // but these parameters are set in the talk-to for the ucntuple // with the variables tagCollJetBlock, tagCollJet2Block, tagCollJet3Block Int_t nsecvtx; // Number of SecVtx jets. If we have more than equal one good // track(s), this is called "secvtx jet" // (Note: This doesn't care b-tagged or not) Int_t nsvtrk; // number of tracks (stored in a separate object) Int_t ntaggable; // Don't use this, this is wrong information. // Originally, it shows how many taggable jets in this event. // ("taggable jet" means that the jet contains at least 2 // SecVtx good hits.: SecVtx good track definition is wrong) Int_t ntagged; // Number of b-tagged jets in this events. (This is OK to use) Float_t pvxyz[6]; // Primary vertex information. 0:X pos, 1:Y, 2:Z. // 3:X err, 4:Y err, 5:Z err. // Variables for secvtx about jets Int_t jetmatch[MAXSECVTX]; //[nsecvtx] //matched index to the corresponding jet block within a cone of 0.1 // i.e., the secvtx jet and the jet block jet are within 0.1 in R. Int_t tagged[MAXSECVTX]; //[nsecvtx] // The tag on the jet. +1 (positive tag),-1 (negative tag), or // 0 (not tagged). Positive tag is so called "b-tagged". Int_t pass[MAXSECVTX]; //[nsecvtx] // Which pass of the SecVtx algorithm was used. // Can be pass 1, pass 2, or, 0 if no vertex formed. Int_t ntrktag[MAXSECVTX]; //[nsecvtx] // Number of tracks used in the secondary vertex fit. Int_t ntrkgood[MAXSECVTX]; //[nsecvtx] // Number of SexVtx good tracks. (Definition of SecVtx good track // is quite complicated so that we cannot describe here, small // space. For more details, please see CDF note 6242) // Thus, (tagging.ntrkgood>=2) == taggable jet, in principle. Int_t ntrkp1[MAXSECVTX]; //[nsecvtx] // Number of displaced tracks (pass 1 criteria) in the jet. Int_t ntrkp2[MAXSECVTX]; //[nsecvtx] // Number of displaced tracks (pass 2 criteria) in the jet. Float_t lxy[MAXSECVTX]; //[nsecvtx] // Lxy for the jet: in the r-phi plane, the displacement of the // fitted vertex from the primary vertex, // "component along the jet momentum" (Caution). Float_t dlxy[MAXSECVTX]; //[nsecvtx] Lxy uncertainty Float_t lz[MAXSECVTX]; //[nsecvtx] // z decay length for the jet: the z displacement of the fitted // vertex from the primary vertex, "component along the jet momentum. Float_t dlz[MAXSECVTX]; //[nsecvtx] // Uncertainty in the z-decay length Float_t lxyz[MAXSECVTX]; //[nsecvtx] // 3D decay length for the jet. the displacement of the fitted // vertex from the primary vertex, "component along the jet momentum. Float_t dlxyz[MAXSECVTX]; //[nsecvtx] // Uncertainty in the 3D decay length Float_t ctau[MAXSECVTX]; //[nsecvtx] // always 0 (redundunt parameter) Float_t mass[MAXSECVTX]; //[nsecvtx] // Jet mass, from sum of 4-vectors of all tracks used in the fit. Int_t charge[MAXSECVTX]; //[nsecvtx] // Jet charge: sum of charges if tracks used in the fit. Float_t tagchisq[MAXSECVTX]; //[nsecvtx] // Overall Chi-Square of the vertex fit. Float_t tagchisqr[MAXSECVTX]; //[nsecvtx] // Chi-Square of the vertex fit in r-phi. Float_t tagchisqz[MAXSECVTX]; //[nsecvtx] // Chi-Square of the vertex fit in z. Int_t taggable[MAXSECVTX]; //[nsecvtx] // Don't use this variable. // As mentioned above, we define the jet has at least 2 good secvtx // tracks as "taggable jet". But, good secvtx track definition was // wrong here. (please count "tagging.ntrkgood") Float_t xyzsv[MAXSECVTX][3]; //[nsecvtx][3] // 0: The x coodinate of any fitted secondary vertex. // 1: The y coodinate of any fitted secondary vertex. // 2: The z coodinate of any fitted secondary vertex. Float_t dxyzsv[MAXSECVTX][3]; //[nsecvtx][3] //Uncertainty in Secondary Vertex Position in XYZ. (0=X, 1=Y, 2=Z) // Variables about secvtx tracks Int_t isgdtrk[MAXSECVTXTRK]; //[nsvtrk] flag good track Int_t isgdp1trk[MAXSECVTXTRK]; //[nsvtrk] flag good pass 1 track Int_t isgdp2trk[MAXSECVTXTRK]; //[nsvtrk] flag good pass 2 track Int_t nhshared[MAXSECVTXTRK]; //[nsvtrk] // Number of shared hits on the track (all hits). Int_t clusl[MAXSECVTXTRK]; //[nsvtrk] // Num of strips in longest axial or SAS cluster of track Int_t cluslphi[MAXSECVTXTRK]; //[nsvtrk] // Num of strips in longest axial cluster of trk Int_t cluslz[MAXSECVTXTRK]; //[nsvtrk] // Num of strips in longest 90 degree cluster of trk Int_t cluslsas[MAXSECVTXTRK]; //[nsvtrk] // Num of strips in longest SAS cluster of trk Int_t svxNInter[MAXSECVTXTRK]; //[nsvtrk] // # of intersections with silicon ladders (SVX phi only) Int_t svxNGoodInter[MAXSECVTXTRK]; //[nsvtrk] // # of intersections with integrated and error-free ladders // (SVX phi only) Int_t svxNrderror[MAXSECVTXTRK]; //[nsvtrk] // # of intersections with ladders that have readout errors // (SVX phi only) Int_t ngdhx[MAXSECVTXTRK]; //[nsvtrk] // # of good axial hits (SVX only) Int_t ngdhsz[MAXSECVTXTRK]; //[nsvtrk] // # of good SAS hits. (all layers). Int_t ngdhz[MAXSECVTXTRK]; //[nsvtrk] // # of good 90 degree hit. Int_t hitpattern[MAXSECVTXTRK]; //[nsvtrk] // Number of hits in each silicon layers (SVX phi only). // The 10^(n-1) place has the # of hits in layer n. Int_t errorlayers[MAXSECVTXTRK]; //[nsvtrk] // Number of readout errors encountered by this track in each Si // layers (SVX phi only). The 10^(n-1) place has the #readout errors // in layer n. Int_t integlayers[MAXSECVTXTRK]; //[nsvtrk] // Number of integrated ladders encountered by this track in each // silicon layer (SVX phi only). // The 10^(n-1) place has the # of integrated ladders in layer n. // // Variables from tracks refit in SecVtxTrack // Float_t svxpt[MAXSECVTXTRK]; //[nsvtrk] // Signed Pt for the Track. Float_t svxd0[MAXSECVTXTRK]; //[nsvtrk] // Corrected impact parameter, d0, for the track. Float_t svxd0s[MAXSECVTXTRK]; //[nsvtrk] // sigma_d0 for the track, corrected for the beam position used by // SecVtxModule. Float_t svxz0[MAXSECVTXTRK]; //[nsvtrk] // Corrected z0 for the track. Float_t svxz0s[MAXSECVTXTRK]; //[nsvtrk] // Sigma_{z0} for the track. Float_t svxchi[MAXSECVTXTRK]; //[nsvtrk] // Chi-Square of the track helix fit, devided # of silicon hits. Int_t svxnhx[MAXSECVTXTRK]; //[nsvtrk] // # of SVX hits axial hits for the track +(plus) // 20*bitmap (by layer) of axial hit locations. Int_t svxnhsz[MAXSECVTXTRK]; //[nsvtrk] // Total # of small angle hits for the track +(plus) // 20*bitmap (by layer) of SAS hit locations. Int_t svxnhz[MAXSECVTXTRK]; //[nsvtrk] Int_t svxityp[MAXSECVTXTRK]; //[nsvtrk] // Track Type: -1 has no COT hits, 0 has COT hits but does not pass // the cuts, 1 passes quality cuts for # of COT hits/SLs(SuperLayeys). //Float_t svxeta[MAXSECVTXTRK]; //[nsvtrk] //Float_t svxphi[MAXSECVTXTRK]; //[nsvtrk] //Float_t svxphie[MAXSECVTXTRK]; //[nsvtrk] //Float_t svxcte[MAXSECVTXTRK]; //[nsvtrk] //Float_t svxcue[MAXSECVTXTRK]; //[nsvtrk] Int_t svtrkmatch[MAXSECVTXTRK]; //[nsvtrk] // Corresponding track index for this secvtx track. Int_t svtxtag[MAXSECVTXTRK]; //[nsvtrk] // Corresponding track index for this track used in the secondary // vertex fit. Int_t svtxp1[MAXSECVTXTRK]; //[nsvtrk] // Corresponding track index for this pass 1 passed secvtx track. Int_t svtxp2[MAXSECVTXTRK]; //[nsvtrk] // Corresponding track index for this pass 2 passed secvtx track. Int_t svtxgood[MAXSECVTXTRK]; //[nsvtrk] // Corresponding track index for this good secvtx track. }; #endif