#include #include #include ClassImp(TStnVertexBlock) //______________________________________________________________________________ void TStnVertexBlock::Streamer(TBuffer &R__b) { // Stream an object of class TStnVertexBlock. if (R__b.IsReading()) { Version_t R__v = R__b.ReadVersion(); if (R__v) { } R__b >> fNVertices; R__b >> fPtnov; R__b >> fVzev; R__b >> fVclassev; fVxprim.Streamer(R__b); fVertexList->Streamer(R__b); } else { R__b.WriteVersion(TStnVertexBlock::IsA()); R__b << fNVertices; R__b << fPtnov; R__b << fVzev; R__b << fVclassev; fVxprim.Streamer(R__b); fVertexList->Streamer(R__b); } } //_____________________________________________________________________________ TStnVertexBlock::TStnVertexBlock() { fNVertices = 0; fVertexList = new TClonesArray("TStnVertex",10); fVertexList->BypassStreamer(kFALSE); } //_____________________________________________________________________________ TStnVertexBlock::~TStnVertexBlock() { fVertexList->Delete(); delete fVertexList; } //_____________________________________________________________________________ void TStnVertexBlock::Clear(const char* opt) { fNVertices = 0; fVertexList->Clear(); } //_____________________________________________________________________________ int TStnVertexBlock::NVertices(int vclass) { // returns number of primary vertices with class >= `vclass' int nv = 0; for (int i=0; iVClass() >= vclass) nv++; } return nv; } //_____________________________________________________________________________ TStnVertex* TStnVertexBlock::GetBestVertex(int VClass, int Mode) { // returns number of primary vertices with class >= `vclass' // mode = 1: highest Pt vertex, the rest - not yet defined TStnVertex *best_vertex(0), *v; double max_sum_pt(-1.0); for (int i=0; iVClass() >= VClass) && (v->SumPt() > max_sum_pt)) { best_vertex = v; max_sum_pt = v->SumPt(); } } return best_vertex; } //_____________________________________________________________________________ void TStnVertexBlock::Print(const char* opt) const { int banner_printed = 0; for (int i=0; iVertex(i); if (! banner_printed) { v->Print("banner+data"); banner_printed = 1; } else { v->Print("data"); } } }