Hi Guys,
We discussed this a little once - I can't remember exactly when, but we
do need more than 1 step to get energy from calorimeter clusters. The
first step is to determine the calibration for a particle using all the
information in the cal - i.e. all of the hits. Ron's method does this.
Next, if you apply a cluster algorithm and use it to define a particle,
then you need a correction to the calibration - I think its good to think
of it that way. Each cluster algorithm requires its own correction. In
my code, for photons in the SiD ECAL, I use a sampling fraction of 0.0120
(same as Ron). Currently I use the NN clusterer (I forgot all the
parameters) for the photons and I determined the correction factor to be
1.04 for the parameters I used.
The sampling fraction is the detector dependent part and could be
included with the subdetector description. The correction for clustering
is algorithm-dependent, and so probably should be done in the users
analysis code since it depends on exactly which clusterer and which
parameters for that clusterer are used.
I'm not sure how this should be done with PFAs, since our goal is to
get all the hits for each particle, so we really shouldn't need the
correction if we collect all hits. Practically, however, we can get good
reconstruction using clustering by correcting the central value and
sacrificing a little resolution, maybe.
I don't know if this helps at all with the implementation problem.
Steve
On Tue, 14 Feb 2006, Matthew John Charles wrote:
> Hi Tony,
>
> On Tue, Feb 14, 2006 at 05:06:51PM -0800, Johnson, Tony S. wrote:
> > HI, maybe I had to leave before we discussed this, but what is
> >
> > > which would look like:
> > >
> > > public interface ParticleEnergyCalibration {
> > > public double energy(ReconstructedParticle part);
> > > }
> > >
> > > public interface ClusterEnergyCalibration {
> > > public double energy(Cluster clus);
> > > }
> >
> > going to do that, part.getEnergy() doesn't (or can't)?
>
> Well, you could use part.getEnergy(), but then earlier in the code you
> would have to figure out what the actual energy of the particle is and
> set it. This is a complex problem which depends on the type of particle,
> which detector you're using, and your reconstruction algorithm; we don't
> yet have a general solution. So for now what people do is use one of a
> small number of calibration methods (Ron's, Lei's, ...), generally with
> constants hard-coded for a particular detector or set of detectors. But
> that's rather ugly -- you have to change your reconstruction code if you
> want to try a different detector or calibration, and it's kind of hard
> to put code like that in CVS (c.f. today's discussion). So it would be
> good if we could abstract that part out, defining a common interface so
> that I could change between calibrations just by passing my particle
> reconstructor a different calibration object...
>
> That's the thinking.
>
>
> Cheers,
>
> Mat.
>
|