Hello, in order to better motivate a discussion on SMC issues, I'll
summarize here what I already discussed with Stefano.


GENERAL CONSIDERATION

Up to now, SMC's (Shower Monte Carlo's) has been a very specialized
field, in the sense that:

1) Only very few phenomenologists have worked or work on them
2) Those who do not work on them know nothing about them

In the cathegory (2) there are those that
a) Are proud of not knowing
b) Are not ashamed of not knowing
c) Are ashamed of not knowing

(I have belonged to cathegory (c) for a long time.)

A typical SMC's phenomenologist works on a given SMC package.
A young SMC's phenomenologist (mr. X from now on)
working on SMC's will find that only a small
community of SMC experts can appreciate his work. When making
decisions about hiring X, the argument of theorists in 2a, 2b and 2c
is that "it is good for the experimentalists". What is known about
X is that "he is an expert on z", for z in PYTHIA HERWIG ARIADNE SHERPA
etc. X will most likely keep working on z although he will also work
occasionally on other phenomenology problems.

Unlike X, the typical QCD phenomenologist Y is known (and eventually
hired) because he has done some/many important calculation/s. Most
phenomenologists can appreciate and judge what he has done. He is not
tied to anything as specific as an SMC code, and he will decide on his
own what to do next.

Up to now there has been a gap between X like and Y like activities.
Up to recent time NLO QCD calculations where at most compared to SMC's
results, to appreciate the advantages/disadvantages
of either approach. When asked wether a NLO calculation could be
implemented in a SMC the answer was "impossible" or " too difficult".
This has made it possible for Y not understanding SMC's at all.

In recent years things have begun to change. More and more
phenomenologists are getting interested into SMC's, for several reasons:
1) LHC is coming
2) NLO calculations have become routine now; to overcome boredom,
go to NNLO, or resum logs, or implement NLO's in SMC's.
3) SMC's have become routine now; to improve go to NLL, or add
NLO.

The answer to the question of implementing NLO in SMC
is no longer "impossible", thank to the work of Frixione and Webber.
Several theorists are now trying to improve along this direction (i.e.
combining NLO and LL showers), but also along other lines, like
SMC's at NLL (meaning going to subleading logs in the shower).

Until now, however, practical developements are confined within a
package (one of the z's).
So, if one has ideas with regard to an improvement in SMC's,
one has to commit himself to a package. The overhead of the committment
(i.e. learning the package) is considerable, and it requires close
interaction with the maintainers. The choice of which package is also
extremely difficult. At the end, Y has to become an X in order to do it
(at he end, he will be known as being one that has done some
improvements on z).

I believe that this is bad, because it impairs the growth of a larger
community in SMC physics. Furthermore, it tends to maintain the sharp
separation between SMC experts and non-experts
(meaning (1) and (2)), because of the high overhead needed to contribute
to the field.

NEW LANGUAGES

The ongoing transition from Fortran to C++ gives us the opportunity
to rethink the SMC's in a way that may ease the problems mentioned
above.
It is possible that C++ itself is better suited to solve these problems,
but this is not the issue. We have to go to a new language, and C++
is the most reasonable candidate. It is widely used, useful libraries
are developed for it, the whole HEP community is turning to it.
So, it is the CHANGE of language that gives us the opportunity to deal
with the problem. I believe it is also possible that C++ will
MAKE THIS PROBLEM WORSE, adding to the overhead for working in this
field the need of learning the most subtle aspects of C++.

Now my (beginner's) experience in this area. I would have like to
implement modifications in the generation of the hard event and in the
shower mechanism.
It was not difficult to do this from scratch in C++.

1) It is not difficult to learn a minimal c++ and use it for
useful problems.
After all we have always used Fortran, and it is possible to write
a fortran program in c++. So, if one only uses what one needs, it
is not difficult, and some things are easier.
2) There are wonderful, fully documented library in c++ that are
easily usable, like the standard library, especially for lists
and container (what used to be the STL).
The gsl (gnu's scientific library) is written in c, it is
object oriented, and can be easily interfaced to c++.
Maybe some day an official c++ support will come. Things
like VEGAS, Histogram packages, random number generators,
special functions and more are in there.
It is quite complete and well documented.
3) The CLHEP provides HEP specific things, like lorentz vectors
etc., that are not found in the gsl.

I could deal with 1) and 2) 3) without external assistance, and write
in a short time the components for an SMC+NLO (in the sense of O(as))
in e^+e^-. I could not instead work on modifications of existing c++
SMC's. I tried Herwig++, but got stuck in ThePEG. I assume one cannot
use it without the assistance of an expert.

GOALS

Given that the split of the non-SMC and SMC people is a problem, and
that c++ may make it worse (i.e. Y that works on z and knows c++), the
goal is how to prevent the problem, meaning how to make it easier for
non-experts to enter the field.

It seems to me that trying to wite a well documented SMC, that everybody
can understand and modify, is pure utopia (well, if you don't agree
please react).

There are however simpler goals that can be achieved with modest
effort. For example, providing clearly documented interfaces that
perform specific tasks. The interfaces should be simple, come with
default settings (modifiable by more experienced users). Typically
there should be a header, a library and an example of usage.

Where interfaces may be useful (this is only a suggestion):

in e+e-
1) beam profile
2) ISR
3) hard event
4) shower
5) Hadronization
6) decays

in hadron hadron we may add

7) underlying event

Even more ambitiously, agreeing upon standards (as Torbjorn mentioned)
would be a good thing,
especially because if you set a standard you also have to document it.

So, if one wants to work on NLO+SMC for some process
he may need to work only on the hard event, and use the shower
+hadronization+decays (and maybe also ISR or the underlying event) of
the SMC. More likely he may need to modify the shower, so that he has to
write the ME+Shower, but can use the rest from SMC's. Or, one may have
great ideas for the underlying event, or for hadronization.

Even more ambitiously, agreeing upon standards (as Torbjorn mentioned)
would be a good thing, in the sense that it reduces the overhead for
working in this field (less things to learn and better documented).

Let me point out that the problems and goals I mentioned
are quite different (I believe) from what SMC users (i.e.
experimentalist) may like; Typically an experimentalist may like to
switch from one shower implementation to another, or from a
hadronization model to another just changing a flag. An experimentalist
may care about trying out different components of PYTHIA, HERWIG,
ARIADNE, SHERPA, etc. without much effort (if I understand well, ThePEG
tries to address these problems).



I hope this can serve as starting point for a discussion.


Cheers, Paolo