#ifndef VERTEXSTRUCT_HH #define VERTEXSTRUCT_HH //Blocks: vertex const Int_t MAXPVERT = 20; // Documented by Collin 2/10/04 // The vertex collection used in the default tcl file is // ZVertexColl (Beate) enum vertexstrategy { Sumpt = 0, ClosestToLepton = 1 }; // Sumpt means choose the highest sumpt primary vertex, // regardless of class. //ClosestToLepton is Steve's algorithm: // Step 1: The vertex chosen is the class 12 vertex with the // smallest pull under 5 sigma to the highest pt tight lepton. // Step 2: If no vertices are close or there are no class 12 // vertices, then the lepton z0 is used. // Step 3: If there is no high pt tight lepton, it uses the // highest sumpt class 12 vertex. // Step 4: If there are no class 12 vertices, // then the highest sumpt primary vertex is used. // Step 5: If there are no vertices, then the origin is used. enum TypePrimaryVertexFound { UNKNOWN=-1, LEPTONZ0=0, LEPTONZ0_DIFF_ZVERT=1, ZVERTEXNEARLEP=2, ZVERTEXNOLEP=3, ORIGIN=4, SUMPT=5 }; // LEPTONZ0 means lepton z0 (step 2 -- no class 12 vert.) // ZVERTEXNEARLEP means (step 1) // LEPTONZ0_DIFF_ZVERT means lepton z0 (step 2 -- no vert. close) // ZVERTEXNOLEP means highest sumpt (step 4) // ORIGIN means origin (step 5) // SUMPT means sumpt vertex strategy is used. struct myvertex_t { Int_t npvert; // number of primary vertices Float_t vzev; // "event z vertex" -- z from which photon pt, jet et, etc. // is calculated Float_t x[MAXPVERT]; //[npvert] Float_t y[MAXPVERT]; //[npvert] Float_t z[MAXPVERT]; //[npvert] Float_t zerr[MAXPVERT]; //[npvert] Float_t px[MAXPVERT]; //[npvert] Float_t py[MAXPVERT]; //[npvert] Float_t pz[MAXPVERT]; //[npvert] Float_t sumpt[MAXPVERT]; //[npvert] Int_t ntracks[MAXPVERT]; //[npvert] Int_t charge[MAXPVERT]; //[npvert] Int_t vclass[MAXPVERT]; //[npvert] Float_t chi2[MAXPVERT]; //[npvert] Int_t vzevstrategy; Int_t vzevfoundtype; Int_t nclass12; // Number of class 12 ZVertices, if available Float_t vzeverr; }; #endif