Received: from d0sgi0.fnal.gov (d0sgi0.fnal.gov [131.225.221.44]) by d0sgim.fnal.gov (980427.SGI.8.8.8/970903.SGI.AUTOCF) via SMTP id MAA08128 for <\meena@d0sgim.fnal.gov>; Mon, 21 Dec 1998 12:32:24 -0600 (CST)
Received: from FNAL.FNAL.Gov (fnal.fnal.gov [131.225.9.8]) by d0sgi0.fnal.gov (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA15027 for <meena@d0sgi0.fnal.gov>; Mon, 21 Dec 1998 12:32:29 -0600
Received: from d02ka.fnal.gov ("port 9472"@d02ka.fnal.gov)
 by FNAL.FNAL.GOV (PMDF V5.1-12 #3998)
 with SMTP id <01J5LLLTVQ5K0004IJ@FNAL.FNAL.GOV> for meena@d0sgi0.fnal.gov;
 Mon, 21 Dec 1998 12:33:03 -0600 CDT
Date: Mon, 21 Dec 1998 12:33:02 -0600 (CST)
From: Guilherme Lima <lima@fnal.gov>
Subject: VertexMC and VertexAnalysis
To: Meenakshi Narain <meena@fnal.gov>
Cc: Frederic Stichelbaut <stichel@fnal.gov>, Guilherme Lima <lima@fnal.gov>
Message-id: <Pine.SGI.3.95.981221120229.2063704C-100000@d02ka.fnal.gov>
MIME-version: 1.0
Content-type: TEXT/PLAIN; charset=US-ASCII

Dear Meena,

You can find the first presentable version of
VertexMC class in d02ka:

~lima/d0/vtx/vertexutil/

As usual, the header is in vertexutil/VertexMC.hpp,
and the methods are in src/VertexMC.cpp, starting
from the directory above.  There is some documentation
on these files.

As of now, VertexMC is just a class.  Its main
attribute is _allvtx, of type list<MCvtx>.  It stores
all distinct vertices from mcpp.  Distinct here means
that two or more vertices at the same spatial point
get merged into a single vertex, with all particles
decaying at that point stored as parents, and all
*charged stable* daughters stored as daughters.

I showed it to Frederic today, and discussed with
him.  His suggestions are mainly twofold:
1) to move the _allvtx filling out from the constructor
   into a method, and
2) to get _allvtx stored as a chunk.

I will work on these points next.  But I would
like to have some input from you too, concerning the
current way _allvtx is declared (as a list<MCvtx>),
and also whether _allvtx is the only think to be saved 
on a chunk, or whether something else would also be
useful.  So please take a look at the above files, 
VertexMC.hpp and VertexMC.cpp.

The other issue is vertex_analyze package, where
you asked me to add an Ntuple for MC information.
You can find my version of VertexAnalysis (.hpp and
.cpp files) on ~lima/d0/vtx/vertex_analyze directory.
It creates an Ntuple (_ptuple[4]) for MC info, and
fills it from information retrieved using VertexMC.
The ntuple filling is handled in a new method, 
fill_mcvtx_ntuple, on VertexAnalysis.cpp.

The only lines needed to fill the Ntuple are:

    VertexMC* _pvtxmc = new VertexMC(event);
    list<MCvtx> lista = _pvtxmc->getMC_distinct_vertices();
    fill_mcvtx_ntuple(lista, 4);

All other lines after these three are just for demonstration
on how to use VertexMC's methods.  They are not needed to
get the Ntuple.  But lots of comments are there, so I left
these lines for now.

Also, noticed that I included some calls after every column
definition at the VERTEX block of your ntuples, like:
    _ptuple[i]->dimension(_maxvertex);
    _ptuple[i]->index("nvertex");
Without these calls, you get the whole 100 elements for all
arrays stored on the ntuple, for each call to ntuple_fill, 
because the arrays have not been indexed to nvertex variable.

Please send your comments in when available.  But please
note that I'm leaving today for vacations, taking advantage
of FNAL's shutdown.  I'll be back on January 6th, so don't
expect any response until then.

Happy holidays, and have a wonderful New Year!

Cheers,
Guilherme

===========================================================================
| Guilherme Lima | Phone (630)840-2454    | Fermilab, P.O.Box 500, MS 352 |
| UERJ @ D0 Exp  | FAX:  (630)840-8886    | Batavia, IL 60510-0500        |
| Office 17 @ D0 Trailler City (East PKP) | E-mail: lima@fnal.gov         |
===========================================================================